JComboMouseDriver.java revision 13978:1993af50385d
198944Sobrien/*
2130803Smarcel * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
398944Sobrien * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
498944Sobrien *
598944Sobrien * This code is free software; you can redistribute it and/or modify it
698944Sobrien * under the terms of the GNU General Public License version 2 only, as
798944Sobrien * published by the Free Software Foundation.
898944Sobrien *
998944Sobrien * This code is distributed in the hope that it will be useful, but WITHOUT
1098944Sobrien * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1198944Sobrien * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1298944Sobrien * version 2 for more details (a copy is included in the LICENSE file that
1398944Sobrien * accompanied this code).
1498944Sobrien *
1598944Sobrien * You should have received a copy of the GNU General Public License version
1698944Sobrien * 2 along with this work; if not, write to the Free Software Foundation,
1798944Sobrien * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1898944Sobrien *
1998944Sobrien * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2098944Sobrien * or visit www.oracle.com if you need additional information or have any
2198944Sobrien * questions.
2298944Sobrien */
2398944Sobrienpackage org.netbeans.jemmy.drivers.lists;
24130803Smarcel
2598944Sobrienimport javax.swing.UIManager;
2698944Sobrien
27130803Smarcelimport org.netbeans.jemmy.QueueTool;
28130803Smarcelimport org.netbeans.jemmy.drivers.DriverManager;
29130803Smarcelimport org.netbeans.jemmy.drivers.LightSupportiveDriver;
30130803Smarcelimport org.netbeans.jemmy.drivers.ListDriver;
3198944Sobrienimport org.netbeans.jemmy.operators.ComponentOperator;
3298944Sobrienimport org.netbeans.jemmy.operators.JComboBoxOperator;
3398944Sobrienimport org.netbeans.jemmy.operators.JListOperator;
3498944Sobrienimport org.netbeans.jemmy.util.EmptyVisualizer;
3598944Sobrien
3698944Sobrien/**
3798944Sobrien * List driver for javax.swing.JCompoBox component type.
3898944Sobrien *
3998944Sobrien * @author Alexandre Iline(alexandre.iline@oracle.com)
4098944Sobrien */
41130803Smarcelpublic class JComboMouseDriver extends LightSupportiveDriver implements ListDriver {
4298944Sobrien
43130803Smarcel    /**
44130803Smarcel     * Constructs a JComboMouseDriver.
4598944Sobrien     */
4698944Sobrien    QueueTool queueTool;
4798944Sobrien
4898944Sobrien    public JComboMouseDriver() {
4998944Sobrien        super(new String[]{"org.netbeans.jemmy.operators.JComboBoxOperator"});
5098944Sobrien        queueTool = new QueueTool();
5198944Sobrien    }
5298944Sobrien
5398944Sobrien    @Override
5498944Sobrien    public void selectItem(ComponentOperator oper, int index) {
5598944Sobrien        JComboBoxOperator coper = (JComboBoxOperator) oper;
5698944Sobrien        //1.5 workaround
5798944Sobrien        if (System.getProperty("java.specification.version").compareTo("1.4") > 0) {
5898944Sobrien            queueTool.setOutput(oper.getOutput().createErrorOutput());
5998944Sobrien            queueTool.waitEmpty(10);
6098944Sobrien            queueTool.waitEmpty(10);
6198944Sobrien            queueTool.waitEmpty(10);
6298944Sobrien        }
6398944Sobrien        //end of 1.5 workaround
6498944Sobrien        if (!coper.isPopupVisible()) {
6598944Sobrien            if (UIManager.getLookAndFeel().getClass().getName().equals("com.sun.java.swing.plaf.motif.MotifLookAndFeel")) {
6698944Sobrien                oper.clickMouse(oper.getWidth() - 2, oper.getHeight() / 2, 1);
6798944Sobrien            } else {
6898944Sobrien                DriverManager.getButtonDriver(coper.getButton()).
6998944Sobrien                        push(coper.getButton());
7098944Sobrien            }
7198944Sobrien        }
7298944Sobrien        JListOperator list = new JListOperator(coper.waitList());
7398944Sobrien        list.copyEnvironment(coper);
7498944Sobrien        list.setVisualizer(new EmptyVisualizer());
7598944Sobrien        coper.getTimeouts().sleep("JComboBoxOperator.BeforeSelectingTimeout");
7698944Sobrien        DriverManager.getListDriver(list).
7798944Sobrien                selectItem(list, index);
7898944Sobrien    }
7998944Sobrien}
8098944Sobrien