jdk/test/sanity/client/lib/jemmy/src/org/netbeans/jemmy/operators/JDialogOperator.java
changeset 36744 a00905527ec2
equal deleted inserted replaced
36743:bdc3f1b79fb7 36744:a00905527ec2
       
     1 /*
       
     2  * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.
       
     8  *
       
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    12  * version 2 for more details (a copy is included in the LICENSE file that
       
    13  * accompanied this code).
       
    14  *
       
    15  * You should have received a copy of the GNU General Public License version
       
    16  * 2 along with this work; if not, write to the Free Software Foundation,
       
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    18  *
       
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    20  * or visit www.oracle.com if you need additional information or have any
       
    21  * questions.
       
    22  */
       
    23 package org.netbeans.jemmy.operators;
       
    24 
       
    25 import java.awt.Component;
       
    26 import java.awt.Container;
       
    27 import java.awt.Dialog;
       
    28 import java.awt.Window;
       
    29 
       
    30 import javax.accessibility.AccessibleContext;
       
    31 import javax.swing.JDialog;
       
    32 import javax.swing.JLayeredPane;
       
    33 import javax.swing.JMenuBar;
       
    34 import javax.swing.JRootPane;
       
    35 
       
    36 import org.netbeans.jemmy.ComponentChooser;
       
    37 import org.netbeans.jemmy.DialogWaiter;
       
    38 import org.netbeans.jemmy.JemmyProperties;
       
    39 import org.netbeans.jemmy.TestOut;
       
    40 import org.netbeans.jemmy.TimeoutExpiredException;
       
    41 import org.netbeans.jemmy.Timeouts;
       
    42 
       
    43 /**
       
    44  * <BR><BR>Timeouts used: <BR>
       
    45  * DialogWaiter.WaitDialogTimeout - time to wait dialog displayed <BR>
       
    46  * DialogWaiter.AfterDialogTimeout - time to sleep after dialog has been
       
    47  * dispayed <BR>.
       
    48  *
       
    49  * @see org.netbeans.jemmy.Timeouts
       
    50  *
       
    51  * @author Alexandre Iline (alexandre.iline@oracle.com)
       
    52  *
       
    53  */
       
    54 public class JDialogOperator extends DialogOperator {
       
    55 
       
    56     /**
       
    57      * Constructor.
       
    58      *
       
    59      * @param w a component
       
    60      */
       
    61     public JDialogOperator(JDialog w) {
       
    62         super(w);
       
    63     }
       
    64 
       
    65     /**
       
    66      * Constructs a JDialogOperator object.
       
    67      *
       
    68      * @param chooser a component chooser specifying searching criteria.
       
    69      * @param index an index between appropriate ones.
       
    70      * @param env an operator to copy environment from.
       
    71      */
       
    72     public JDialogOperator(ComponentChooser chooser, int index, Operator env) {
       
    73         this(waitJDialog(new JDialogFinder(chooser),
       
    74                 index,
       
    75                 env.getTimeouts(),
       
    76                 env.getOutput()));
       
    77         copyEnvironment(env);
       
    78     }
       
    79 
       
    80     /**
       
    81      * Constructs a JDialogOperator object.
       
    82      *
       
    83      * @param chooser a component chooser specifying searching criteria.
       
    84      * @param index an index between appropriate ones.
       
    85      */
       
    86     public JDialogOperator(ComponentChooser chooser, int index) {
       
    87         this(chooser, index, Operator.getEnvironmentOperator());
       
    88     }
       
    89 
       
    90     /**
       
    91      * Constructs a JDialogOperator object.
       
    92      *
       
    93      * @param chooser a component chooser specifying searching criteria.
       
    94      */
       
    95     public JDialogOperator(ComponentChooser chooser) {
       
    96         this(chooser, 0);
       
    97     }
       
    98 
       
    99     /**
       
   100      * Constructs a JDialogOperator object.
       
   101      *
       
   102      * @param owner window - owner
       
   103      * @param chooser a component chooser specifying searching criteria.
       
   104      * @param index an index between appropriate ones.
       
   105      */
       
   106     public JDialogOperator(WindowOperator owner, ComponentChooser chooser, int index) {
       
   107         this((JDialog) owner.
       
   108                 waitSubWindow(new JDialogFinder(chooser),
       
   109                         index));
       
   110         copyEnvironment(owner);
       
   111     }
       
   112 
       
   113     /**
       
   114      * Constructs a JDialogOperator object.
       
   115      *
       
   116      * @param owner window - owner
       
   117      * @param chooser a component chooser specifying searching criteria.
       
   118      */
       
   119     public JDialogOperator(WindowOperator owner, ComponentChooser chooser) {
       
   120         this(owner, chooser, 0);
       
   121     }
       
   122 
       
   123     /**
       
   124      * Constructor. Waits for the dialog with "title" subtitle. Uses owner's
       
   125      * timeout and output for waiting and to init operator.
       
   126      *
       
   127      * @param owner Operator pointing to a window owner.
       
   128      * @param title The desired title.
       
   129      * @param index Ordinal index. The first dialog has {@code index} 0.
       
   130      * @see ComponentOperator#isCaptionEqual(String, String, boolean, boolean)
       
   131      *
       
   132      */
       
   133     public JDialogOperator(WindowOperator owner, String title, int index) {
       
   134         this(waitJDialog(owner,
       
   135                 new JDialogFinder(new DialogByTitleFinder(title,
       
   136                         owner.getComparator())),
       
   137                 index));
       
   138         copyEnvironment(owner);
       
   139     }
       
   140 
       
   141     /**
       
   142      * Constructor. Waits for the dialog with "title" subtitle. Uses owner's
       
   143      * timeout and output for waiting and to init operator.
       
   144      *
       
   145      * @param owner Operator pointing to a window owner.
       
   146      * @param title The desired title.
       
   147      * @see ComponentOperator#isCaptionEqual(String, String, boolean, boolean)
       
   148      *
       
   149      */
       
   150     public JDialogOperator(WindowOperator owner, String title) {
       
   151         this(owner, title, 0);
       
   152     }
       
   153 
       
   154     /**
       
   155      * Constructor. Waits for the index'th dialog between owner's children. Uses
       
   156      * owner'th timeout and output for waiting and to init operator.
       
   157      *
       
   158      * @param owner Operator pointing to a window owner.
       
   159      * @param index Ordinal component index.
       
   160      *
       
   161      */
       
   162     public JDialogOperator(WindowOperator owner, int index) {
       
   163         this(waitJDialog(owner,
       
   164                 new JDialogFinder(),
       
   165                 index));
       
   166         copyEnvironment(owner);
       
   167     }
       
   168 
       
   169     /**
       
   170      * Constructor. Waits for the first dialog between owner's children. Uses
       
   171      * owner'th timeout and output for waiting and to init operator.
       
   172      *
       
   173      * @param owner Operator pointing to a window owner.
       
   174      *
       
   175      */
       
   176     public JDialogOperator(WindowOperator owner) {
       
   177         this(owner, 0);
       
   178     }
       
   179 
       
   180     /**
       
   181      * Constructor. Waits for the dialog with "title" subtitle. Constructor can
       
   182      * be used in complicated cases when output or timeouts should differ from
       
   183      * default.
       
   184      *
       
   185      * @param title a window title
       
   186      * @param index Ordinal component index.
       
   187      * @param env an operator to copy environment from.
       
   188      * @see ComponentOperator#isCaptionEqual(String, String, boolean, boolean)
       
   189      *
       
   190      */
       
   191     public JDialogOperator(String title, int index, Operator env) {
       
   192         this(new JDialogFinder(new DialogByTitleFinder(title,
       
   193                 env.getComparator())),
       
   194                 index, env);
       
   195     }
       
   196 
       
   197     /**
       
   198      * Constructor. Waits for the dialog with "title" subtitle. Uses current
       
   199      * timeouts and output values.
       
   200      *
       
   201      * @param title a window title
       
   202      * @param index Ordinal component index.
       
   203      * @see ComponentOperator#isCaptionEqual(String, String, boolean, boolean)
       
   204      * @see JemmyProperties#getCurrentTimeouts()
       
   205      * @see JemmyProperties#getCurrentOutput()
       
   206      *
       
   207      */
       
   208     public JDialogOperator(String title, int index) {
       
   209         this(title, index,
       
   210                 ComponentOperator.getEnvironmentOperator());
       
   211     }
       
   212 
       
   213     /**
       
   214      * Constructor. Waits for the dialog with "title" subtitle. Uses current
       
   215      * timeouts and output values.
       
   216      *
       
   217      * @param title a window title
       
   218      * @see ComponentOperator#isCaptionEqual(String, String, boolean, boolean)
       
   219      * @see JemmyProperties#getCurrentTimeouts()
       
   220      * @see JemmyProperties#getCurrentOutput()
       
   221      *
       
   222      */
       
   223     public JDialogOperator(String title) {
       
   224         this(title, 0);
       
   225     }
       
   226 
       
   227     /**
       
   228      * Constructor. Waits for the index'th dialog. Uses current timeout and
       
   229      * output for waiting and to init operator.
       
   230      *
       
   231      * @param index Ordinal component index.
       
   232      *
       
   233      */
       
   234     public JDialogOperator(int index) {
       
   235         this(waitJDialog(new JDialogFinder(),
       
   236                 index,
       
   237                 ComponentOperator.getEnvironmentOperator().getTimeouts(),
       
   238                 ComponentOperator.getEnvironmentOperator().getOutput()));
       
   239         copyEnvironment(ComponentOperator.getEnvironmentOperator());
       
   240     }
       
   241 
       
   242     /**
       
   243      * Constructor. Waits for the first dialog. Uses current timeout and output
       
   244      * for waiting and to init operator.
       
   245      *
       
   246      */
       
   247     public JDialogOperator() {
       
   248         this(0);
       
   249     }
       
   250 
       
   251     /**
       
   252      * Searches an index'th dialog.
       
   253      *
       
   254      * @param chooser a component chooser specifying searching criteria.
       
   255      * @param index an index between appropriate ones.
       
   256      * @return JDialog instance or null if component was not found.
       
   257      */
       
   258     public static JDialog findJDialog(ComponentChooser chooser, int index) {
       
   259         return (JDialog) DialogWaiter.getDialog(new JDialogFinder(chooser), index);
       
   260     }
       
   261 
       
   262     /**
       
   263      * Searches a dialog.
       
   264      *
       
   265      * @param chooser a component chooser specifying searching criteria.
       
   266      * @return JDialog instance or null if component was not found.
       
   267      */
       
   268     public static JDialog findJDialog(ComponentChooser chooser) {
       
   269         return findJDialog(chooser, 0);
       
   270     }
       
   271 
       
   272     /**
       
   273      * Searches an index'th dialog by title.
       
   274      *
       
   275      * @param title Dialog title
       
   276      * @param ce Compare exactly. If true, text can be a substring of caption.
       
   277      * @param cc Compare case sensitively. If true, both text and caption are
       
   278      * @param index an index between appropriate ones.
       
   279      * @return JDialog instance or null if component was not found.
       
   280      */
       
   281     public static JDialog findJDialog(String title, boolean ce, boolean cc, int index) {
       
   282         return ((JDialog) DialogWaiter.
       
   283                 getDialog(new JDialogFinder(new DialogByTitleFinder(title,
       
   284                         new DefaultStringComparator(ce, cc))),
       
   285                         index));
       
   286     }
       
   287 
       
   288     /**
       
   289      * Searches a dialog by title.
       
   290      *
       
   291      * @param title Dialog title
       
   292      * @param ce Compare exactly. If true, text can be a substring of caption.
       
   293      * @param cc Compare case sensitively. If true, both text and caption are
       
   294      * @return JDialog instance or null if component was not found.
       
   295      */
       
   296     public static JDialog findJDialog(String title, boolean ce, boolean cc) {
       
   297         return findJDialog(title, ce, cc, 0);
       
   298     }
       
   299 
       
   300     /**
       
   301      * Searches an index'th dialog between owner's owned windows.
       
   302      *
       
   303      * @param owner Window - dialog owner.
       
   304      * @param chooser a component chooser specifying searching criteria.
       
   305      * @param index an index between appropriate ones.
       
   306      * @return JDialog instance or null if component was not found.
       
   307      */
       
   308     public static JDialog findJDialog(Window owner, ComponentChooser chooser, int index) {
       
   309         return (JDialog) DialogWaiter.getDialog(owner, new JDialogFinder(chooser), index);
       
   310     }
       
   311 
       
   312     /**
       
   313      * Searches a dialog between owner's owned windows.
       
   314      *
       
   315      * @param owner Window - dialog owner.
       
   316      * @param chooser a component chooser specifying searching criteria.
       
   317      * @return JDialog instance or null if component was not found.
       
   318      */
       
   319     public static JDialog findJDialog(Window owner, ComponentChooser chooser) {
       
   320         return findJDialog(owner, chooser, 0);
       
   321     }
       
   322 
       
   323     /**
       
   324      * Searches an index'th dialog by title between owner's owned windows.
       
   325      *
       
   326      * @param owner Window - dialog owner.
       
   327      * @param title Dialog title
       
   328      * @param ce Compare exactly. If true, text can be a substring of caption.
       
   329      * @param cc Compare case sensitively. If true, both text and caption are
       
   330      * @param index an index between appropriate ones.
       
   331      * @return JDialog instance or null if component was not found.
       
   332      */
       
   333     public static JDialog findJDialog(Window owner, String title, boolean ce, boolean cc, int index) {
       
   334         return ((JDialog) DialogWaiter.
       
   335                 getDialog(owner,
       
   336                         new JDialogFinder(new DialogByTitleFinder(title,
       
   337                                 new DefaultStringComparator(ce, cc))),
       
   338                         index));
       
   339     }
       
   340 
       
   341     /**
       
   342      * Searches a dialog by title between owner's owned windows.
       
   343      *
       
   344      * @param owner Window - dialog owner.
       
   345      * @param title Dialog title
       
   346      * @param ce Compare exactly. If true, text can be a substring of caption.
       
   347      * @param cc Compare case sensitively. If true, both text and caption are
       
   348      * @return JDialog instance or null if component was not found.
       
   349      */
       
   350     public static JDialog findJDialog(Window owner, String title, boolean ce, boolean cc) {
       
   351         return findJDialog(owner, title, ce, cc, 0);
       
   352     }
       
   353 
       
   354     /**
       
   355      * Waits an index'th dialog.
       
   356      *
       
   357      * @param chooser a component chooser specifying searching criteria.
       
   358      * @param index an index between appropriate ones.
       
   359      * @return JDialog instance or null if component was not found.
       
   360      *
       
   361      */
       
   362     public static JDialog waitJDialog(ComponentChooser chooser, int index) {
       
   363         return (waitJDialog(chooser, index,
       
   364                 JemmyProperties.getCurrentTimeouts(),
       
   365                 JemmyProperties.getCurrentOutput()));
       
   366     }
       
   367 
       
   368     /**
       
   369      * Waits a dialog.
       
   370      *
       
   371      * @param chooser a component chooser specifying searching criteria.
       
   372      * @return JDialog instance or null if component was not found.
       
   373      *
       
   374      */
       
   375     public static JDialog waitJDialog(ComponentChooser chooser) {
       
   376         return waitJDialog(chooser, 0);
       
   377     }
       
   378 
       
   379     /**
       
   380      * Waits an index'th dialog by title.
       
   381      *
       
   382      * @param title Dialog title
       
   383      * @param ce Compare exactly. If true, text can be a substring of caption.
       
   384      * @param cc Compare case sensitively. If true, both text and caption are
       
   385      * @param index an index between appropriate ones.
       
   386      * @return JDialog instance or null if component was not found.
       
   387      *
       
   388      */
       
   389     public static JDialog waitJDialog(String title, boolean ce, boolean cc, int index) {
       
   390         return (waitJDialog(new JDialogFinder(new DialogByTitleFinder(title,
       
   391                 new DefaultStringComparator(ce, cc))),
       
   392                 index));
       
   393     }
       
   394 
       
   395     /**
       
   396      * Waits a dialog by title.
       
   397      *
       
   398      * @param title Dialog title
       
   399      * @param ce Compare exactly. If true, text can be a substring of caption.
       
   400      * @param cc Compare case sensitively. If true, both text and caption are
       
   401      * @return JDialog instance or null if component was not found.
       
   402      *
       
   403      */
       
   404     public static JDialog waitJDialog(String title, boolean ce, boolean cc) {
       
   405         return waitJDialog(title, ce, cc, 0);
       
   406     }
       
   407 
       
   408     /**
       
   409      * Waits an index'th dialog between owner's owned windows.
       
   410      *
       
   411      * @param owner Window - dialog owner.
       
   412      * @param chooser a component chooser specifying searching criteria.
       
   413      * @param index an index between appropriate ones.
       
   414      * @return JDialog instance or null if component was not found.
       
   415      *
       
   416      */
       
   417     public static JDialog waitJDialog(Window owner, ComponentChooser chooser, int index) {
       
   418         return (waitJDialog(owner, chooser, index,
       
   419                 JemmyProperties.getCurrentTimeouts(),
       
   420                 JemmyProperties.getCurrentOutput()));
       
   421     }
       
   422 
       
   423     /**
       
   424      * Waits a dialog between owner's owned windows.
       
   425      *
       
   426      * @param owner Window - dialog owner.
       
   427      * @param chooser a component chooser specifying searching criteria.
       
   428      * @return JDialog instance or null if component was not found.
       
   429      *
       
   430      */
       
   431     public static JDialog waitJDialog(Window owner, ComponentChooser chooser) {
       
   432         return waitJDialog(owner, chooser, 0);
       
   433     }
       
   434 
       
   435     /**
       
   436      * Waits an index'th dialog by title between owner's owned windows.
       
   437      *
       
   438      * @param owner Window - dialog owner.
       
   439      * @param title Dialog title
       
   440      * @param ce Compare exactly. If true, text can be a substring of caption.
       
   441      * @param cc Compare case sensitively. If true, both text and caption are
       
   442      * @param index an index between appropriate ones.
       
   443      * @return JDialog instance or null if component was not found.
       
   444      *
       
   445      */
       
   446     public static JDialog waitJDialog(Window owner, String title, boolean ce, boolean cc, int index) {
       
   447         return (waitJDialog(owner, new JDialogFinder(new DialogByTitleFinder(title,
       
   448                 new DefaultStringComparator(ce, cc))),
       
   449                 index));
       
   450     }
       
   451 
       
   452     /**
       
   453      * Waits a dialog by title between owner's owned windows.
       
   454      *
       
   455      * @param owner Window - dialog owner.
       
   456      * @param title Dialog title
       
   457      * @param ce Compare exactly. If true, text can be a substring of caption.
       
   458      * @param cc Compare case sensitively. If true, both text and caption are
       
   459      * @return JDialog instance or null if component was not found.
       
   460      *
       
   461      */
       
   462     public static JDialog waitJDialog(Window owner, String title, boolean ce, boolean cc) {
       
   463         return waitJDialog(owner, title, ce, cc, 0);
       
   464     }
       
   465 
       
   466     /**
       
   467      * Searhs for modal dialog currently staying on top.
       
   468      *
       
   469      * @return dialog or null if no modal dialog is currently displayed.
       
   470      */
       
   471     public static Dialog getTopModalDialog() {
       
   472         return (DialogWaiter.getDialog(new ComponentChooser() {
       
   473             @Override
       
   474             public boolean checkComponent(Component comp) {
       
   475                 if (comp instanceof Dialog) {
       
   476                     Dialog dialog = (Dialog) comp;
       
   477                     if (dialog.isModal()) {
       
   478                         Window[] ow = dialog.getOwnedWindows();
       
   479                         for (Window anOw : ow) {
       
   480                             if (anOw.isVisible()) {
       
   481                                 return false;
       
   482                             }
       
   483                         }
       
   484                         return true;
       
   485                     }
       
   486                 }
       
   487                 return false;
       
   488             }
       
   489 
       
   490             @Override
       
   491             public String getDescription() {
       
   492                 return "Upper modal dialog";
       
   493             }
       
   494 
       
   495             @Override
       
   496             public String toString() {
       
   497                 return "JDialogOperator.getTopModalDialog.ComponentChooser{description = " + getDescription() + '}';
       
   498             }
       
   499         }));
       
   500     }
       
   501 
       
   502     ////////////////////////////////////////////////////////
       
   503     //Mapping                                             //
       
   504     /**
       
   505      * Maps {@code JDialog.getAccessibleContext()} through queue
       
   506      */
       
   507     public AccessibleContext getAccessibleContext() {
       
   508         return (runMapping(new MapAction<AccessibleContext>("getAccessibleContext") {
       
   509             @Override
       
   510             public AccessibleContext map() {
       
   511                 return getSource().getAccessibleContext();
       
   512             }
       
   513         }));
       
   514     }
       
   515 
       
   516     /**
       
   517      * Maps {@code JDialog.getContentPane()} through queue
       
   518      */
       
   519     public Container getContentPane() {
       
   520         return (runMapping(new MapAction<Container>("getContentPane") {
       
   521             @Override
       
   522             public Container map() {
       
   523                 return ((JDialog) getSource()).getContentPane();
       
   524             }
       
   525         }));
       
   526     }
       
   527 
       
   528     /**
       
   529      * Maps {@code JDialog.getDefaultCloseOperation()} through queue
       
   530      */
       
   531     public int getDefaultCloseOperation() {
       
   532         return (runMapping(new MapIntegerAction("getDefaultCloseOperation") {
       
   533             @Override
       
   534             public int map() {
       
   535                 return ((JDialog) getSource()).getDefaultCloseOperation();
       
   536             }
       
   537         }));
       
   538     }
       
   539 
       
   540     /**
       
   541      * Maps {@code JDialog.getGlassPane()} through queue
       
   542      */
       
   543     public Component getGlassPane() {
       
   544         return (runMapping(new MapAction<Component>("getGlassPane") {
       
   545             @Override
       
   546             public Component map() {
       
   547                 return ((JDialog) getSource()).getGlassPane();
       
   548             }
       
   549         }));
       
   550     }
       
   551 
       
   552     /**
       
   553      * Maps {@code JDialog.getJMenuBar()} through queue
       
   554      */
       
   555     public JMenuBar getJMenuBar() {
       
   556         return (runMapping(new MapAction<JMenuBar>("getJMenuBar") {
       
   557             @Override
       
   558             public JMenuBar map() {
       
   559                 return ((JDialog) getSource()).getJMenuBar();
       
   560             }
       
   561         }));
       
   562     }
       
   563 
       
   564     /**
       
   565      * Maps {@code JDialog.getLayeredPane()} through queue
       
   566      */
       
   567     public JLayeredPane getLayeredPane() {
       
   568         return (runMapping(new MapAction<JLayeredPane>("getLayeredPane") {
       
   569             @Override
       
   570             public JLayeredPane map() {
       
   571                 return ((JDialog) getSource()).getLayeredPane();
       
   572             }
       
   573         }));
       
   574     }
       
   575 
       
   576     /**
       
   577      * Maps {@code JDialog.getRootPane()} through queue
       
   578      */
       
   579     public JRootPane getRootPane() {
       
   580         return (runMapping(new MapAction<JRootPane>("getRootPane") {
       
   581             @Override
       
   582             public JRootPane map() {
       
   583                 return ((JDialog) getSource()).getRootPane();
       
   584             }
       
   585         }));
       
   586     }
       
   587 
       
   588     /**
       
   589      * Maps {@code JDialog.setContentPane(Container)} through queue
       
   590      */
       
   591     public void setContentPane(final Container container) {
       
   592         runMapping(new MapVoidAction("setContentPane") {
       
   593             @Override
       
   594             public void map() {
       
   595                 ((JDialog) getSource()).setContentPane(container);
       
   596             }
       
   597         });
       
   598     }
       
   599 
       
   600     /**
       
   601      * Maps {@code JDialog.setDefaultCloseOperation(int)} through queue
       
   602      */
       
   603     public void setDefaultCloseOperation(final int i) {
       
   604         runMapping(new MapVoidAction("setDefaultCloseOperation") {
       
   605             @Override
       
   606             public void map() {
       
   607                 ((JDialog) getSource()).setDefaultCloseOperation(i);
       
   608             }
       
   609         });
       
   610     }
       
   611 
       
   612     /**
       
   613      * Maps {@code JDialog.setGlassPane(Component)} through queue
       
   614      */
       
   615     public void setGlassPane(final Component component) {
       
   616         runMapping(new MapVoidAction("setGlassPane") {
       
   617             @Override
       
   618             public void map() {
       
   619                 ((JDialog) getSource()).setGlassPane(component);
       
   620             }
       
   621         });
       
   622     }
       
   623 
       
   624     /**
       
   625      * Maps {@code JDialog.setJMenuBar(JMenuBar)} through queue
       
   626      */
       
   627     public void setJMenuBar(final JMenuBar jMenuBar) {
       
   628         runMapping(new MapVoidAction("setJMenuBar") {
       
   629             @Override
       
   630             public void map() {
       
   631                 ((JDialog) getSource()).setJMenuBar(jMenuBar);
       
   632             }
       
   633         });
       
   634     }
       
   635 
       
   636     /**
       
   637      * Maps {@code JDialog.setLayeredPane(JLayeredPane)} through queue
       
   638      */
       
   639     public void setLayeredPane(final JLayeredPane jLayeredPane) {
       
   640         runMapping(new MapVoidAction("setLayeredPane") {
       
   641             @Override
       
   642             public void map() {
       
   643                 ((JDialog) getSource()).setLayeredPane(jLayeredPane);
       
   644             }
       
   645         });
       
   646     }
       
   647 
       
   648     /**
       
   649      * Maps {@code JDialog.setLocationRelativeTo(Component)} through queue
       
   650      */
       
   651     public void setLocationRelativeTo(final Component component) {
       
   652         runMapping(new MapVoidAction("setLocationRelativeTo") {
       
   653             @Override
       
   654             public void map() {
       
   655                 ((JDialog) getSource()).setLocationRelativeTo(component);
       
   656             }
       
   657         });
       
   658     }
       
   659 
       
   660     //End of mapping                                      //
       
   661     ////////////////////////////////////////////////////////
       
   662     /**
       
   663      * A method to be used from subclasses. Uses timeouts and output passed as
       
   664      * parameters during the waiting.
       
   665      *
       
   666      * @param chooser org.netbeans.jemmy.ComponentChooser implementation.
       
   667      * @param index Ordinal component index.
       
   668      * @param timeouts timeouts to be used during the waiting.
       
   669      * @param output an output to be used during the waiting.
       
   670      * @return Component instance or null if component was not found.
       
   671      */
       
   672     protected static JDialog waitJDialog(ComponentChooser chooser, int index,
       
   673             Timeouts timeouts, TestOut output) {
       
   674         try {
       
   675             DialogWaiter waiter = new DialogWaiter();
       
   676             waiter.setTimeouts(timeouts);
       
   677             waiter.setOutput(output);
       
   678             return ((JDialog) waiter.
       
   679                     waitDialog(new JDialogFinder(chooser), index));
       
   680         } catch (InterruptedException e) {
       
   681             output.printStackTrace(e);
       
   682             return null;
       
   683         }
       
   684     }
       
   685 
       
   686     /**
       
   687      * A method to be used from subclasses. Uses {@code owner}'s timeouts
       
   688      * and output during the waiting.
       
   689      *
       
   690      * @param owner a window - dialog owner.
       
   691      * @param chooser org.netbeans.jemmy.ComponentChooser implementation.
       
   692      * @param index Ordinal component index.
       
   693      * @return Component instance or null if component was not found.
       
   694      * @throws TimeoutExpiredException
       
   695      */
       
   696     protected static JDialog waitJDialog(WindowOperator owner, ComponentChooser chooser, int index) {
       
   697         return (waitJDialog((Window) owner.getSource(),
       
   698                 chooser, index,
       
   699                 owner.getTimeouts(), owner.getOutput()));
       
   700     }
       
   701 
       
   702     /**
       
   703      * A method to be used from subclasses. Uses timeouts and output passed as
       
   704      * parameters during the waiting.
       
   705      *
       
   706      * @param owner a window - dialog owner.
       
   707      * @param chooser org.netbeans.jemmy.ComponentChooser implementation.
       
   708      * @param index Ordinal component index.
       
   709      * @param timeouts timeouts to be used during the waiting.
       
   710      * @param output an output to be used during the waiting.
       
   711      * @return Component instance or null if component was not found.
       
   712      */
       
   713     protected static JDialog waitJDialog(Window owner, ComponentChooser chooser, int index,
       
   714             Timeouts timeouts, TestOut output) {
       
   715         try {
       
   716             DialogWaiter waiter = new DialogWaiter();
       
   717             waiter.setTimeouts(timeouts);
       
   718             waiter.setOutput(output);
       
   719             return ((JDialog) waiter.
       
   720                     waitDialog(owner, new JDialogFinder(chooser), index));
       
   721         } catch (InterruptedException e) {
       
   722             JemmyProperties.getCurrentOutput().printStackTrace(e);
       
   723             return null;
       
   724         }
       
   725     }
       
   726 
       
   727     /**
       
   728      * Checks component type.
       
   729      */
       
   730     public static class JDialogFinder extends Finder {
       
   731 
       
   732         /**
       
   733          * Constructs JDialogFinder.
       
   734          *
       
   735          * @param sf other searching criteria.
       
   736          */
       
   737         public JDialogFinder(ComponentChooser sf) {
       
   738             super(JDialog.class, sf);
       
   739         }
       
   740 
       
   741         /**
       
   742          * Constructs JDialogFinder.
       
   743          */
       
   744         public JDialogFinder() {
       
   745             super(JDialog.class);
       
   746         }
       
   747     }
       
   748 }