JInternalFrameOperator.java revision 13978:1993af50385d
1218065Sadrian/* 2218065Sadrian * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. 3240592Sadrian * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4218065Sadrian * 5218065Sadrian * This code is free software; you can redistribute it and/or modify it 6218065Sadrian * under the terms of the GNU General Public License version 2 only, as 7218065Sadrian * published by the Free Software Foundation. 8218065Sadrian * 9218065Sadrian * This code is distributed in the hope that it will be useful, but WITHOUT 10218065Sadrian * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11218065Sadrian * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12218065Sadrian * version 2 for more details (a copy is included in the LICENSE file that 13218065Sadrian * accompanied this code). 14218065Sadrian * 15218065Sadrian * You should have received a copy of the GNU General Public License version 16218065Sadrian * 2 along with this work; if not, write to the Free Software Foundation, 17218065Sadrian * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18218065Sadrian * 19218065Sadrian * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20218065Sadrian * or visit www.oracle.com if you need additional information or have any 21218065Sadrian * questions. 22218065Sadrian */ 23218065Sadrianpackage org.netbeans.jemmy.operators; 24218065Sadrian 25218065Sadrianimport java.awt.Component; 26218065Sadrianimport java.awt.Container; 27218065Sadrianimport java.awt.Rectangle; 28218065Sadrianimport java.beans.PropertyVetoException; 29218065Sadrianimport java.util.Hashtable; 30218065Sadrian 31218065Sadrianimport javax.swing.Icon; 32218065Sadrianimport javax.swing.JDesktopPane; 33218065Sadrianimport javax.swing.JInternalFrame; 34218065Sadrianimport javax.swing.JLayeredPane; 35218065Sadrianimport javax.swing.JMenuBar; 36218065Sadrianimport javax.swing.JScrollPane; 37218065Sadrianimport javax.swing.JInternalFrame.JDesktopIcon; 38218065Sadrianimport javax.swing.event.InternalFrameListener; 39218065Sadrianimport javax.swing.plaf.InternalFrameUI; 40218065Sadrian 41218065Sadrianimport org.netbeans.jemmy.ComponentChooser; 42218065Sadrianimport org.netbeans.jemmy.ComponentSearcher; 43218065Sadrianimport org.netbeans.jemmy.JemmyInputException; 44218065Sadrianimport org.netbeans.jemmy.JemmyProperties; 45218065Sadrianimport org.netbeans.jemmy.Outputable; 46218065Sadrianimport org.netbeans.jemmy.TestOut; 47218065Sadrianimport org.netbeans.jemmy.TimeoutExpiredException; 48218065Sadrianimport org.netbeans.jemmy.Timeoutable; 49218065Sadrianimport org.netbeans.jemmy.Timeouts; 50218065Sadrianimport org.netbeans.jemmy.drivers.DriverManager; 51218065Sadrianimport org.netbeans.jemmy.drivers.FrameDriver; 52218065Sadrianimport org.netbeans.jemmy.drivers.InternalFrameDriver; 53218065Sadrianimport org.netbeans.jemmy.drivers.WindowDriver; 54218065Sadrianimport org.netbeans.jemmy.util.EmptyVisualizer; 55218065Sadrian 56218065Sadrian/** 57218065Sadrian * Class provides necessary functionality to operate with 58218065Sadrian * javax.swing.JInternalFrame component. 59218065Sadrian * 60218065Sadrian * Some methods can throw WrongInternalFrameStateException exception. 61218065Sadrian * 62218065Sadrian * <BR><BR>Timeouts used: <BR> 63218065Sadrian * ComponentOperator.WaitComponentTimeout - time to wait component displayed 64218065Sadrian * <BR> 65218065Sadrian * ComponentOperator.MouseClickTimeout - time between mouse pressing and 66218065Sadrian * releasing <BR> 67218065Sadrian * AbstractButtonOperator.PushButtonTimeout - time between button pressing and 68218065Sadrian * releasing<BR> 69218065Sadrian * JScrollBarOperator.WholeScrollTimeout - time for the whole scrolling <BR>. 70218065Sadrian * 71218065Sadrian * @see org.netbeans.jemmy.Timeouts 72218065Sadrian * @see WrongInternalFrameStateException 73218065Sadrian * @author Alexandre Iline (alexandre.iline@oracle.com) 74218065Sadrian */ 75218065Sadrianpublic class JInternalFrameOperator extends JComponentOperator 76218065Sadrian implements Outputable, Timeoutable { 77218065Sadrian 78218065Sadrian /** 79218065Sadrian * Identifier for a "title" property. 80218065Sadrian * 81227364Sadrian * @see #getDump 82218065Sadrian */ 83218065Sadrian public static final String TITLE_DPROP = "Title"; 84218065Sadrian 85218065Sadrian /** 86218065Sadrian * Identifier for a "state" property. 87218065Sadrian * 88218065Sadrian * @see #getDump 89218065Sadrian */ 90218065Sadrian public static final String STATE_DPROP = "State"; 91218065Sadrian 92218065Sadrian /** 93218065Sadrian * Identifier for a "normal" value of "state" property. 94218065Sadrian * 95218065Sadrian * @see #getDump 96218065Sadrian */ 97218065Sadrian public static final String STATE_NORMAL_DPROP_VALUE = "NORMAL"; 98218065Sadrian 99218065Sadrian /** 100218065Sadrian * Identifier for a "closed" value of "state" property. 101218065Sadrian * 102218240Sadrian * @see #getDump 103218065Sadrian */ 104242782Sadrian public static final String STATE_CLOSED_DPROP_VALUE = "CLOSED"; 105242782Sadrian 106242782Sadrian /** 107242782Sadrian * Identifier for a "iconified" value of "state" property. 108218154Sadrian * 109227364Sadrian * @see #getDump 110227364Sadrian */ 111227364Sadrian public static final String STATE_ICONIFIED_DPROP_VALUE = "ICONIFIED"; 112227364Sadrian 113240946Sadrian /** 114240946Sadrian * Identifier for a "maximized" value of "state" property. 115240946Sadrian * 116240946Sadrian * @see #getDump 117240946Sadrian */ 118241170Sadrian public static final String STATE_MAXIMAZED_DPROP_VALUE = "MAXIMIZED"; 119241170Sadrian 120241170Sadrian /** 121227364Sadrian * Identifier for a "resizable" property. 122227364Sadrian * 123227364Sadrian * @see #getDump 124227364Sadrian */ 125236872Sadrian public static final String IS_RESIZABLE_DPROP = "Resizable"; 126236872Sadrian 127227364Sadrian /** 128227364Sadrian * Identifier for a "selected" property. 129240639Sadrian * 130240639Sadrian * @see #getDump 131240639Sadrian */ 132227364Sadrian public static final String IS_SELECTED_DPROP = "Selected"; 133243162Sadrian 134243162Sadrian /** 135243162Sadrian * A minimizing button. 136243162Sadrian */ 137243162Sadrian protected JButtonOperator minOper = null; 138243162Sadrian 139243162Sadrian /** 140243162Sadrian * A maximizing button. 141243162Sadrian */ 142243162Sadrian protected JButtonOperator maxOper = null; 143243162Sadrian 144243162Sadrian /** 145243162Sadrian * A close button. 146243162Sadrian */ 147243162Sadrian protected JButtonOperator closeOper = null; 148243162Sadrian 149243162Sadrian /** 150243162Sadrian * A title operator. 151243162Sadrian */ 152243162Sadrian protected ContainerOperator<?> titleOperator = null; 153243162Sadrian private TestOut output; 154243162Sadrian private Timeouts timeouts; 155243162Sadrian private JDesktopIconOperator iconOperator; 156243162Sadrian 157243162Sadrian WindowDriver wDriver; 158243162Sadrian FrameDriver fDriver; 159243162Sadrian InternalFrameDriver iDriver; 160243162Sadrian 161243162Sadrian /** 162227364Sadrian * Constructor. 163218154Sadrian * 164218154Sadrian * @param b a component 165218154Sadrian */ 166218154Sadrian public JInternalFrameOperator(JInternalFrame b) { 167218154Sadrian super(b); 168239198Sadrian wDriver = DriverManager.getWindowDriver(getClass()); 169239198Sadrian fDriver = DriverManager.getFrameDriver(getClass()); 170218154Sadrian iDriver = DriverManager.getInternalFrameDriver(getClass()); 171218154Sadrian } 172227364Sadrian 173227364Sadrian /** 174227364Sadrian * Constructs a JInternalFrameOperator object. 175227364Sadrian * 176227364Sadrian * @param cont a container 177227364Sadrian * @param chooser a component chooser specifying searching criteria. 178227364Sadrian * @param index an index between appropriate ones. 179227364Sadrian */ 180227364Sadrian public JInternalFrameOperator(ContainerOperator<?> cont, ComponentChooser chooser, int index) { 181227364Sadrian this((JInternalFrame) cont. 182227364Sadrian waitSubComponent(new JInternalFrameFinder(chooser), 183227364Sadrian index)); 184227364Sadrian copyEnvironment(cont); 185227364Sadrian } 186227364Sadrian 187227364Sadrian /** 188227364Sadrian * Constructs a JInternalFrameOperator object. 189227364Sadrian * 190227364Sadrian * @param cont a container 191227364Sadrian * @param chooser a component chooser specifying searching criteria. 192240639Sadrian */ 193240639Sadrian public JInternalFrameOperator(ContainerOperator<?> cont, ComponentChooser chooser) { 194240639Sadrian this(cont, chooser, 0); 195240639Sadrian } 196240639Sadrian 197240639Sadrian /** 198240639Sadrian * Constructor. Waits component in container first. Uses cont's timeout and 199240639Sadrian * output for waiting and to init operator. 200240639Sadrian * 201240639Sadrian * @param cont a container 202240639Sadrian * @param text Button text. 203240639Sadrian * @param index Ordinal component index. 204240639Sadrian * @see ComponentOperator#isCaptionEqual(String, String, boolean, boolean) 205240639Sadrian * 206240639Sadrian */ 207240639Sadrian public JInternalFrameOperator(ContainerOperator<?> cont, String text, int index) { 208227364Sadrian this(findOne(cont, text, index)); 209227364Sadrian copyEnvironment(cont); 210227364Sadrian } 211227364Sadrian 212227364Sadrian /** 213227364Sadrian * Constructor. Waits component in container first. Uses cont's timeout and 214227364Sadrian * output for waiting and to init operator. 215227364Sadrian * 216227364Sadrian * @param cont a container 217227364Sadrian * @param text Button text. 218227364Sadrian * @see ComponentOperator#isCaptionEqual(String, String, boolean, boolean) 219227364Sadrian * 220227364Sadrian */ 221227364Sadrian public JInternalFrameOperator(ContainerOperator<?> cont, String text) { 222227364Sadrian this(cont, text, 0); 223227364Sadrian } 224227364Sadrian 225227364Sadrian /** 226227364Sadrian * Constructor. Waits component in container first. Uses cont's timeout and 227227364Sadrian * output for waiting and to init operator. 228227364Sadrian * 229227364Sadrian * @param cont a container 230227364Sadrian * @param index Ordinal component index. 231227364Sadrian * 232227364Sadrian */ 233227364Sadrian public JInternalFrameOperator(ContainerOperator<?> cont, int index) { 234227364Sadrian this((JInternalFrame) waitComponent(cont, 235240946Sadrian new JInternalFrameFinder(), 236227364Sadrian index)); 237227364Sadrian copyEnvironment(cont); 238218065Sadrian } 239218065Sadrian 240218065Sadrian /** 241218065Sadrian * Constructor. Waits component in container first. Uses cont's timeout and 242218065Sadrian * output for waiting and to init operator. 243218065Sadrian * 244218065Sadrian * @param cont a container 245218065Sadrian * 246227344Sadrian */ 247218065Sadrian public JInternalFrameOperator(ContainerOperator<?> cont) { 248227344Sadrian this(cont, 0); 249236993Sadrian } 250218065Sadrian 251218065Sadrian /** 252218065Sadrian * Searches JInternalframe in container. 253218065Sadrian * 254218065Sadrian * @param cont Container to search component in. 255218065Sadrian * @param chooser a component chooser specifying searching criteria. 256218065Sadrian * @param index Ordinal component index. 257218065Sadrian * @return JInternalframe instance or null if component was not found. 258218065Sadrian */ 259218065Sadrian public static JInternalFrame findJInternalFrame(Container cont, ComponentChooser chooser, int index) { 260218065Sadrian Component res = findComponent(cont, new JInternalFrameFinder(chooser), index); 261218065Sadrian if (res instanceof JInternalFrame) { 262218065Sadrian return (JInternalFrame) res; 263218065Sadrian } else if (res instanceof JInternalFrame.JDesktopIcon) { 264218065Sadrian return ((JInternalFrame.JDesktopIcon) res).getInternalFrame(); 265218065Sadrian } else { 266218065Sadrian return null; 267218065Sadrian } 268237000Sadrian } 269237000Sadrian 270218065Sadrian /** 271234009Sadrian * Searches JInternalframe in container. 272234009Sadrian * 273218065Sadrian * @param cont Container to search component in. 274218065Sadrian * @param chooser a component chooser specifying searching criteria. 275218065Sadrian * @return JInternalframe instance or null if component was not found. 276218065Sadrian */ 277227344Sadrian public static JInternalFrame findJInternalFrame(Container cont, ComponentChooser chooser) { 278218065Sadrian return findJInternalFrame(cont, chooser, 0); 279218065Sadrian } 280218065Sadrian 281227344Sadrian /** 282218065Sadrian * Searches JInternalframe by title. 283218065Sadrian * 284218065Sadrian * @param cont Container to search component in. 285218065Sadrian * @param text Component text. 286218065Sadrian * @param ce Compare text exactly. 287218065Sadrian * @param ccs Compare text case sensitively. 288218065Sadrian * @param index Ordinal component index. 289218065Sadrian * @return JInternalframe instance or null if component was not found. 290218065Sadrian * @see ComponentOperator#isCaptionEqual(String, String, boolean, boolean) 291218065Sadrian */ 292218065Sadrian public static JInternalFrame findJInternalFrame(Container cont, String text, boolean ce, boolean ccs, int index) { 293218065Sadrian return (findJInternalFrame(cont, 294218065Sadrian new JInternalFrameByTitleFinder(text, 295218065Sadrian new DefaultStringComparator(ce, ccs)), 296218065Sadrian index)); 297218065Sadrian } 298218065Sadrian 299218065Sadrian /** 300218065Sadrian * Searches JInternalframe by title. 301218065Sadrian * 302218065Sadrian * @param cont Container to search component in. 303218065Sadrian * @param text Component text. 304218065Sadrian * @param ce Compare text exactly. 305218065Sadrian * @param ccs Compare text case sensitively. 306218065Sadrian * @return JInternalframe instance or null if component was not found. 307218065Sadrian * @see ComponentOperator#isCaptionEqual(String, String, boolean, boolean) 308218065Sadrian */ 309218065Sadrian public static JInternalFrame findJInternalFrame(Container cont, String text, boolean ce, boolean ccs) { 310218065Sadrian return findJInternalFrame(cont, text, ce, ccs, 0); 311218065Sadrian } 312218065Sadrian 313218065Sadrian /** 314218065Sadrian * Searches JInternalFrame object which component lies on. 315248985Sadrian * 316218065Sadrian * @param comp Component to find JInternalFrame under. 317218065Sadrian * @param chooser org.netbeans.jemmy.ComponentChooser implementation. 318218065Sadrian * @return JInternalFrame instance or null if component was not found. 319218065Sadrian */ 320218065Sadrian public static JInternalFrame findJInternalFrameUnder(Component comp, ComponentChooser chooser) { 321218065Sadrian return (JInternalFrame) findContainerUnder(comp, new JInternalFrameFinder(chooser)); 322218065Sadrian } 323218065Sadrian 324218065Sadrian /** 325218065Sadrian * Searches JInternalFrame object which component lies on. 326248985Sadrian * 327218065Sadrian * @param comp Component to find JInternalFrame under. 328248985Sadrian * @return JInternalFrame instance or null if component was not found. 329218065Sadrian */ 330218065Sadrian public static JInternalFrame findJInternalFrameUnder(Component comp) { 331218065Sadrian return findJInternalFrameUnder(comp, new JInternalFrameFinder()); 332218065Sadrian } 333218065Sadrian 334218065Sadrian /** 335218065Sadrian * Waits JInternalframe in container. 336218065Sadrian * 337218065Sadrian * @param cont Container to search component in. 338218065Sadrian * @param chooser a component chooser specifying searching criteria. 339218065Sadrian * @param index Ordinal component index. 340218065Sadrian * @return JInternalframe instance. 341218065Sadrian * 342218065Sadrian */ 343248985Sadrian public static JInternalFrame waitJInternalFrame(final Container cont, final ComponentChooser chooser, final int index) { 344218065Sadrian Component res = waitComponent(cont, new JInternalFrameFinder(chooser), index); 345218065Sadrian if (res instanceof JInternalFrame) { 346218065Sadrian return (JInternalFrame) res; 347218065Sadrian } else if (res instanceof JInternalFrame.JDesktopIcon) { 348218065Sadrian return ((JInternalFrame.JDesktopIcon) res).getInternalFrame(); 349218065Sadrian } else { 350218065Sadrian throw (new TimeoutExpiredException(chooser.getDescription())); 351218065Sadrian } 352218065Sadrian } 353218065Sadrian 354218065Sadrian /** 355218065Sadrian * Waits JInternalframe in container. 356218065Sadrian * 357218065Sadrian * @param cont Container to search component in. 358227360Sadrian * @param chooser a component chooser specifying searching criteria. 359242656Sadrian * @return JInternalframe instance. 360242656Sadrian * 361242656Sadrian */ 362227360Sadrian public static JInternalFrame waitJInternalFrame(Container cont, ComponentChooser chooser) { 363218065Sadrian return waitJInternalFrame(cont, chooser, 0); 364242656Sadrian } 365242656Sadrian 366242656Sadrian /** 367218065Sadrian * Waits JInternalframe by title. 368218065Sadrian * 369242656Sadrian * @param cont Container to search component in. 370239290Sadrian * @param text Component text. 371239051Sadrian * @param ce Compare text exactly. 372239051Sadrian * @param ccs Compare text case sensitively. 373239290Sadrian * @param index Ordinal component index. 374239380Sadrian * @return JInternalframe instance. 375239051Sadrian * @see ComponentOperator#isCaptionEqual(String, String, boolean, boolean) 376238708Sadrian * 377238708Sadrian */ 378238708Sadrian public static JInternalFrame waitJInternalFrame(Container cont, String text, boolean ce, boolean ccs, int index) { 379238708Sadrian return (waitJInternalFrame(cont, 380238708Sadrian new JInternalFrameByTitleFinder(text, 381218065Sadrian new DefaultStringComparator(ce, ccs)), 382218065Sadrian index)); 383218065Sadrian } 384218065Sadrian 385239290Sadrian /** 386239290Sadrian * Waits JInternalframe by title. 387248527Sadrian * 388248527Sadrian * @param cont Container to search component in. 389248527Sadrian * @param text Component text. 390239290Sadrian * @param ce Compare text exactly. 391248527Sadrian * @param ccs Compare text case sensitively. 392239290Sadrian * @return JInternalframe instance. 393239290Sadrian * @see ComponentOperator#isCaptionEqual(String, String, boolean, boolean) 394239290Sadrian * 395239290Sadrian */ 396239290Sadrian public static JInternalFrame waitJInternalFrame(Container cont, String text, boolean ce, boolean ccs) { 397242656Sadrian return waitJInternalFrame(cont, text, ce, ccs, 0); 398239290Sadrian } 399239290Sadrian 400239290Sadrian @Override 401239290Sadrian public void setOutput(TestOut out) { 402239290Sadrian output = out; 403239290Sadrian super.setOutput(output.createErrorOutput()); 404239290Sadrian } 405239051Sadrian 406239290Sadrian @Override 407239290Sadrian public TestOut getOutput() { 408239290Sadrian return output; 409239290Sadrian } 410239290Sadrian 411239290Sadrian @Override 412239051Sadrian public void setTimeouts(Timeouts times) { 413239290Sadrian timeouts = times; 414239290Sadrian super.setTimeouts(timeouts); 415239290Sadrian } 416239290Sadrian 417239290Sadrian @Override 418218065Sadrian public Timeouts getTimeouts() { 419239409Sadrian return timeouts; 420218065Sadrian } 421239409Sadrian 422239290Sadrian /** 423239051Sadrian * Iconifies frame. Note: frame should not be iconified and should be 424239051Sadrian * iconifiable. 425244109Sadrian * 426244109Sadrian * @throws WrongInternalFrameStateException 427244109Sadrian * 428244109Sadrian */ 429239051Sadrian public void iconify() { 430239409Sadrian output.printLine("Iconify JInternalFrame\n : " + toStringSource()); 431239051Sadrian output.printGolden("Iconify JInternalFrame \"" + getTitle() + "\""); 432239051Sadrian checkIconified(false); 433239290Sadrian makeComponentVisible(); 434244109Sadrian fDriver.iconify(this); 435239380Sadrian if (getVerification()) { 436218065Sadrian waitIcon(true); 437239409Sadrian } 438218065Sadrian } 439240255Sadrian 440242656Sadrian /** 441242656Sadrian * Deiconifies frame. Note: frame should be iconified. 442242656Sadrian * 443242656Sadrian * @throws WrongInternalFrameStateException 444242656Sadrian * 445242656Sadrian */ 446242656Sadrian public void deiconify() { 447242656Sadrian output.printLine("Deiconify JInternalFrame\n : " + toStringSource()); 448242656Sadrian output.printGolden("Deiconify JInternalFrame \"" + getTitle() + "\""); 449240255Sadrian checkIconified(true); 450240333Sadrian fDriver.deiconify(this); 451240255Sadrian if (getVerification()) { 452242656Sadrian waitIcon(false); 453242656Sadrian } 454242656Sadrian } 455242656Sadrian 456242656Sadrian /** 457242656Sadrian * Maximizes frame. Note: frame should not be iconified. 458242656Sadrian * 459242656Sadrian * @throws WrongInternalFrameStateException 460242656Sadrian */ 461242656Sadrian public void maximize() { 462242656Sadrian output.printLine("Maximize JInternalFrame\n : " + toStringSource()); 463242656Sadrian output.printGolden("Maximize JInternalFrame \"" + getTitle() + "\""); 464242656Sadrian checkIconified(false); 465242656Sadrian makeComponentVisible(); 466242656Sadrian fDriver.maximize(this); 467242656Sadrian if (getVerification()) { 468242656Sadrian waitMaximum(true); 469242656Sadrian } 470242656Sadrian } 471242656Sadrian 472239380Sadrian /** 473239409Sadrian * Demaximizes frame. Note: frame should not be iconified. 474239290Sadrian * 475239290Sadrian * @throws WrongInternalFrameStateException 476239290Sadrian */ 477239290Sadrian public void demaximize() { 478239409Sadrian output.printLine("Demaximize JInternalFrame\n : " + toStringSource()); 479239290Sadrian output.printGolden("Demaximize JInternalFrame \"" + getTitle() + "\""); 480239290Sadrian checkIconified(false); 481239290Sadrian makeComponentVisible(); 482239290Sadrian fDriver.demaximize(this); 483239290Sadrian if (getVerification()) { 484239290Sadrian waitMaximum(false); 485239290Sadrian } 486218065Sadrian } 487233990Sadrian 488218154Sadrian /** 489218154Sadrian * Moves frame to new location. Note: frame should not be iconified. 490227364Sadrian * 491238947Sadrian * @param x X coordinate of a new frame location. 492238947Sadrian * @param y Y coordinate of a new frame location. 493238947Sadrian * @throws WrongInternalFrameStateException 494238947Sadrian */ 495238947Sadrian public void move(int x, int y) { 496238947Sadrian checkIconified(false); 497238947Sadrian output.printLine("Move JInternalFrame to (" 498238947Sadrian + Integer.toString(x) + "," 499238947Sadrian + Integer.toString(y) + ")" 500238947Sadrian + " position\n : " + toStringSource()); 501238947Sadrian output.printGolden("Move " + getTitle() 502238947Sadrian + " JInternalFrame to (" 503238947Sadrian + Integer.toString(x) + "," 504238947Sadrian + Integer.toString(y) + ")" 505238947Sadrian + " position"); 506238947Sadrian checkIconified(false); 507238947Sadrian wDriver.move(this, x, y); 508238947Sadrian } 509238947Sadrian 510238947Sadrian /** 511238947Sadrian * Resizes frame. Note: frame should not be iconified. 512238947Sadrian * 513238947Sadrian * @param width New frame width. 514238947Sadrian * @param height New frame height. 515243647Sadrian * @throws WrongInternalFrameStateException 516238947Sadrian */ 517243647Sadrian public void resize(int width, int height) { 518243647Sadrian output.printLine("Resize JInternalFrame to (" 519243647Sadrian + Integer.toString(width) + "," 520243647Sadrian + Integer.toString(height) + ")" 521243647Sadrian + " size\n : " + toStringSource()); 522243647Sadrian output.printGolden("Resize " + getTitle() 523243647Sadrian + " JInternalFrame to (" 524243647Sadrian + Integer.toString(width) + "," 525243647Sadrian + Integer.toString(height) + ")" 526238947Sadrian + " size"); 527238947Sadrian checkIconified(false); 528238947Sadrian wDriver.resize(this, width, height); 529238947Sadrian } 530238947Sadrian 531238947Sadrian /** 532238947Sadrian * Activates frame. Note: frame should not be iconified. 533238947Sadrian * 534238947Sadrian * @throws WrongInternalFrameStateException 535238947Sadrian */ 536238947Sadrian public void activate() { 537238947Sadrian checkIconified(false); 538238947Sadrian wDriver.activate(this); 539238947Sadrian } 540238947Sadrian 541238947Sadrian /** 542238947Sadrian * Closes the frame. 543238947Sadrian */ 544238947Sadrian public void close() { 545227364Sadrian checkIconified(false); 546227364Sadrian wDriver.requestClose(this); 547227364Sadrian } 548227364Sadrian 549227364Sadrian /** 550227364Sadrian * Scrolls to internal frame's rectangle. 551227364Sadrian * 552227364Sadrian * @param x Horizontal rectangle coordinate 553227364Sadrian * @param y Vertical rectangle coordinate 554242656Sadrian * @param width rectangle width 555227364Sadrian * @param height rectangle height 556227364Sadrian * 557227364Sadrian */ 558227364Sadrian public void scrollToRectangle(int x, int y, int width, int height) { 559227364Sadrian output.printTrace("Scroll desktop pane to make \"" + getTitle() + "\" internal frame visible"); 560242951Sadrian output.printGolden("Scroll desktop pane to make \"" + getTitle() + "\" internal frame visible"); 561242951Sadrian makeComponentVisible(); 562242951Sadrian //try to find JScrollPane under. 563242951Sadrian JScrollPane scroll; 564242951Sadrian if (isIcon()) { 565242951Sadrian scroll 566242951Sadrian = (JScrollPane) iconOperator.getContainer(new JScrollPaneOperator.JScrollPaneFinder(ComponentSearcher. 567242951Sadrian getTrueChooser("JScrollPane"))); 568242951Sadrian } else { 569227364Sadrian scroll 570242656Sadrian = (JScrollPane) getContainer(new JScrollPaneOperator.JScrollPaneFinder(ComponentSearcher. 571242656Sadrian getTrueChooser("JScrollPane"))); 572227364Sadrian } 573227364Sadrian if (scroll == null) { 574227364Sadrian return; 575227364Sadrian } 576227364Sadrian JScrollPaneOperator scroller = new JScrollPaneOperator(scroll); 577227364Sadrian scroller.copyEnvironment(this); 578227364Sadrian scroller.setVisualizer(new EmptyVisualizer()); 579242656Sadrian scroller.scrollToComponentRectangle(isIcon() ? iconOperator.getSource() : getSource(), 580242656Sadrian x, y, width, height); 581242656Sadrian } 582242656Sadrian 583242656Sadrian /** 584242656Sadrian * Scrolls to internal frame's rectangle. 585242656Sadrian * 586242656Sadrian * @param rect a rectangle to scroll to. 587242656Sadrian */ 588242656Sadrian public void scrollToRectangle(Rectangle rect) { 589242656Sadrian scrollToRectangle(rect.x, rect.y, rect.width, rect.height); 590242656Sadrian } 591242656Sadrian 592242656Sadrian /** 593242656Sadrian * Scrolls to internal frame. 594242656Sadrian * 595242656Sadrian */ 596227364Sadrian public void scrollToFrame() { 597227364Sadrian if (isIcon()) { 598242656Sadrian scrollToRectangle(0, 0, iconOperator.getWidth(), iconOperator.getHeight()); 599242656Sadrian } else { 600242656Sadrian scrollToRectangle(0, 0, getWidth(), getHeight()); 601242656Sadrian } 602242656Sadrian } 603242656Sadrian 604242656Sadrian /** 605242656Sadrian * Waits for a minimize button inside the title pane. 606242656Sadrian * 607242656Sadrian * @return a button operator 608242656Sadrian */ 609242656Sadrian public JButtonOperator getMinimizeButton() { 610242656Sadrian initOperators(); 611242656Sadrian return minOper; 612242656Sadrian } 613242656Sadrian 614242656Sadrian /** 615242656Sadrian * Waits for a maximize button inside the title pane. 616242656Sadrian * 617242656Sadrian * @return a button operator 618242656Sadrian */ 619242656Sadrian public JButtonOperator getMaximizeButton() { 620242656Sadrian initOperators(); 621242656Sadrian return maxOper; 622242656Sadrian } 623242656Sadrian 624242656Sadrian /** 625242656Sadrian * Waits for a close button inside the title pane. 626242656Sadrian * 627242656Sadrian * @return a button operator 628242656Sadrian */ 629242656Sadrian public JButtonOperator getCloseButton() { 630227364Sadrian initOperators(); 631227364Sadrian return closeOper; 632227364Sadrian } 633227364Sadrian 634238609Sadrian /** 635238609Sadrian * Waits for the title pane. 636227364Sadrian * 637227364Sadrian * @return a button operator 638227364Sadrian */ 639227364Sadrian public ContainerOperator<?> getTitleOperator() { 640227364Sadrian initOperators(); 641227364Sadrian return titleOperator; 642227364Sadrian } 643227364Sadrian 644227364Sadrian /** 645227364Sadrian * Creates an operator for an desktop icon. 646227364Sadrian * 647227364Sadrian * @return an icon operator. 648227364Sadrian */ 649227364Sadrian public JDesktopIconOperator getIconOperator() { 650227364Sadrian initOperators(); 651227364Sadrian return iconOperator; 652227364Sadrian } 653227364Sadrian 654227364Sadrian /** 655243047Sadrian * Waits for the frame to be iconified or deiconified. 656243047Sadrian * 657243047Sadrian * @param icon whether the frame needs to be iconified. 658243047Sadrian */ 659243047Sadrian public void waitIcon(final boolean icon) { 660243047Sadrian waitState(new ComponentChooser() { 661243047Sadrian @Override 662243047Sadrian public boolean checkComponent(Component comp) { 663243047Sadrian return ((JInternalFrame) comp).isIcon() == icon; 664243047Sadrian } 665243047Sadrian 666243047Sadrian @Override 667243047Sadrian public String getDescription() { 668243047Sadrian return "Iconified JInternalFrame"; 669243047Sadrian } 670243047Sadrian 671243047Sadrian @Override 672243047Sadrian public String toString() { 673243047Sadrian return "JInternalFrameOperator.waitIcon.ComponentChooser{description = " + getDescription() + '}'; 674243047Sadrian } 675243047Sadrian }); 676243047Sadrian } 677243047Sadrian 678243047Sadrian /** 679243047Sadrian * Waits for the frame to be maximized or demaximized. 680227364Sadrian * 681227364Sadrian * @param maximum whether the frame needs to be maximized. 682227364Sadrian */ 683239051Sadrian public void waitMaximum(final boolean maximum) { 684239051Sadrian waitState(new ComponentChooser() { 685239051Sadrian @Override 686239051Sadrian public boolean checkComponent(Component comp) { 687239051Sadrian return ((JInternalFrame) comp).isMaximum() == maximum; 688239051Sadrian } 689239051Sadrian 690244109Sadrian @Override 691239051Sadrian public String getDescription() { 692239051Sadrian return "Maximizied JInternalFrame"; 693239051Sadrian } 694244109Sadrian 695239051Sadrian @Override 696239051Sadrian public String toString() { 697227364Sadrian return "JInternalFrameOperator.waitMaximum.ComponentChooser{description = " + getDescription() + '}'; 698227364Sadrian } 699227364Sadrian }); 700227364Sadrian } 701243786Sadrian 702243786Sadrian /** 703227364Sadrian * Returns information about component. 704227364Sadrian */ 705248676Sadrian @Override 706250735Sadrian public Hashtable<String, Object> getDump() { 707250735Sadrian Hashtable<String, Object> result = super.getDump(); 708250735Sadrian result.put(TITLE_DPROP, ((JInternalFrame) getSource()).getTitle()); 709250735Sadrian String state = STATE_NORMAL_DPROP_VALUE; 710250735Sadrian if (((JInternalFrame) getSource()).isClosed()) { 711250735Sadrian state = STATE_CLOSED_DPROP_VALUE; 712250735Sadrian } else if (((JInternalFrame) getSource()).isIcon()) { 713250735Sadrian state = STATE_ICONIFIED_DPROP_VALUE; 714250735Sadrian } else if (((JInternalFrame) getSource()).isMaximum()) { 715250735Sadrian state = STATE_MAXIMAZED_DPROP_VALUE; 716250735Sadrian } 717250735Sadrian result.put(STATE_DPROP, state); 718250735Sadrian result.put(IS_RESIZABLE_DPROP, ((JInternalFrame) getSource()).isResizable() ? "true" : "false"); 719248676Sadrian result.put(IS_SELECTED_DPROP, ((JInternalFrame) getSource()).isSelected() ? "true" : "false"); 720248713Sadrian return result; 721248713Sadrian } 722227364Sadrian 723227364Sadrian //////////////////////////////////////////////////////// 724227364Sadrian //Mapping // 725248713Sadrian /** 726227364Sadrian * Maps 727248713Sadrian * {@code JInternalFrame.addInternalFrameListener(InternalFrameListener)} 728227364Sadrian * through queue 729227364Sadrian */ 730227364Sadrian public void addInternalFrameListener(final InternalFrameListener internalFrameListener) { 731248713Sadrian runMapping(new MapVoidAction("addInternalFrameListener") { 732248713Sadrian @Override 733248713Sadrian public void map() { 734227364Sadrian ((JInternalFrame) getSource()).addInternalFrameListener(internalFrameListener); 735227364Sadrian } 736248671Sadrian }); 737227364Sadrian } 738227364Sadrian 739227364Sadrian /** 740227364Sadrian * Maps {@code JInternalFrame.dispose()} through queue 741227364Sadrian */ 742227364Sadrian public void dispose() { 743229949Sadrian runMapping(new MapVoidAction("dispose") { 744229949Sadrian @Override 745227364Sadrian public void map() { 746227364Sadrian ((JInternalFrame) getSource()).dispose(); 747250783Sadrian } 748227364Sadrian }); 749227364Sadrian } 750218065Sadrian 751218065Sadrian /** 752218065Sadrian * Maps {@code JInternalFrame.getContentPane()} through queue 753218065Sadrian */ 754218065Sadrian public Container getContentPane() { 755218065Sadrian return (runMapping(new MapAction<Container>("getContentPane") { 756218065Sadrian @Override 757243786Sadrian public Container map() { 758218065Sadrian return ((JInternalFrame) getSource()).getContentPane(); 759227364Sadrian } 760227364Sadrian })); 761227364Sadrian } 762227364Sadrian 763250783Sadrian /** 764250783Sadrian * Maps {@code JInternalFrame.getDefaultCloseOperation()} through queue 765250783Sadrian */ 766250783Sadrian public int getDefaultCloseOperation() { 767250783Sadrian return (runMapping(new MapIntegerAction("getDefaultCloseOperation") { 768250783Sadrian @Override 769250783Sadrian public int map() { 770227651Sadrian return ((JInternalFrame) getSource()).getDefaultCloseOperation(); 771227651Sadrian } 772227651Sadrian })); 773227651Sadrian } 774227651Sadrian 775227651Sadrian /** 776227651Sadrian * Maps {@code JInternalFrame.getDesktopIcon()} through queue 777227651Sadrian */ 778227651Sadrian public JDesktopIcon getDesktopIcon() { 779227651Sadrian return (runMapping(new MapAction<JDesktopIcon>("getDesktopIcon") { 780227651Sadrian @Override 781227651Sadrian public JDesktopIcon map() { 782227651Sadrian return ((JInternalFrame) getSource()).getDesktopIcon(); 783227651Sadrian } 784227651Sadrian })); 785227651Sadrian } 786227651Sadrian 787250783Sadrian /** 788227651Sadrian * Maps {@code JInternalFrame.getDesktopPane()} through queue 789227651Sadrian */ 790227651Sadrian public JDesktopPane getDesktopPane() { 791227651Sadrian return (runMapping(new MapAction<JDesktopPane>("getDesktopPane") { 792227651Sadrian @Override 793227651Sadrian public JDesktopPane map() { 794227651Sadrian return ((JInternalFrame) getSource()).getDesktopPane(); 795227651Sadrian } 796250783Sadrian })); 797218065Sadrian } 798250783Sadrian 799250783Sadrian /** 800250783Sadrian * Maps {@code JInternalFrame.getFrameIcon()} through queue 801250783Sadrian */ 802250783Sadrian public Icon getFrameIcon() { 803250783Sadrian return (runMapping(new MapAction<Icon>("getFrameIcon") { 804250783Sadrian @Override 805250783Sadrian public Icon map() { 806250783Sadrian return ((JInternalFrame) getSource()).getFrameIcon(); 807250783Sadrian } 808250783Sadrian })); 809250783Sadrian } 810250783Sadrian 811250783Sadrian /** 812250783Sadrian * Maps {@code JInternalFrame.getGlassPane()} through queue 813250783Sadrian */ 814250783Sadrian public Component getGlassPane() { 815250783Sadrian return (runMapping(new MapAction<Component>("getGlassPane") { 816250783Sadrian @Override 817240899Sadrian public Component map() { 818250783Sadrian return ((JInternalFrame) getSource()).getGlassPane(); 819250783Sadrian } 820250783Sadrian })); 821250783Sadrian } 822250783Sadrian 823250783Sadrian /** 824250783Sadrian * Maps {@code JInternalFrame.getJMenuBar()} through queue 825250783Sadrian */ 826250783Sadrian public JMenuBar getJMenuBar() { 827250783Sadrian return (runMapping(new MapAction<JMenuBar>("getJMenuBar") { 828240899Sadrian @Override 829250783Sadrian public JMenuBar map() { 830250783Sadrian return ((JInternalFrame) getSource()).getJMenuBar(); 831250783Sadrian } 832250783Sadrian })); 833250783Sadrian } 834250783Sadrian 835250783Sadrian /** 836250783Sadrian * Maps {@code JInternalFrame.getLayer()} through queue 837250783Sadrian */ 838250783Sadrian public int getLayer() { 839250783Sadrian return (runMapping(new MapIntegerAction("getLayer") { 840250783Sadrian @Override 841250783Sadrian public int map() { 842250783Sadrian return ((JInternalFrame) getSource()).getLayer(); 843250783Sadrian } 844250783Sadrian })); 845250783Sadrian } 846250783Sadrian 847250783Sadrian /** 848250783Sadrian * Maps {@code JInternalFrame.getLayeredPane()} through queue 849250783Sadrian */ 850250783Sadrian public JLayeredPane getLayeredPane() { 851250783Sadrian return (runMapping(new MapAction<JLayeredPane>("getLayeredPane") { 852250783Sadrian @Override 853250783Sadrian public JLayeredPane map() { 854250783Sadrian return ((JInternalFrame) getSource()).getLayeredPane(); 855250783Sadrian } 856250783Sadrian })); 857250783Sadrian } 858250783Sadrian 859250783Sadrian /** 860250783Sadrian * Maps {@code JInternalFrame.getTitle()} through queue 861250783Sadrian */ 862250783Sadrian public String getTitle() { 863250783Sadrian return (runMapping(new MapAction<String>("getTitle") { 864250783Sadrian @Override 865250783Sadrian public String map() { 866250783Sadrian return ((JInternalFrame) getSource()).getTitle(); 867250783Sadrian } 868250783Sadrian })); 869250783Sadrian } 870250783Sadrian 871250783Sadrian /** 872250783Sadrian * Maps {@code JInternalFrame.getUI()} through queue 873240899Sadrian */ 874250783Sadrian public InternalFrameUI getUI() { 875250783Sadrian return (runMapping(new MapAction<InternalFrameUI>("getUI") { 876240899Sadrian @Override 877250783Sadrian public InternalFrameUI map() { 878240899Sadrian return ((JInternalFrame) getSource()).getUI(); 879250783Sadrian } 880250783Sadrian })); 881250783Sadrian } 882250783Sadrian 883250783Sadrian /** 884250783Sadrian * Maps {@code JInternalFrame.getWarningString()} through queue 885250783Sadrian */ 886250783Sadrian public String getWarningString() { 887250783Sadrian return (runMapping(new MapAction<String>("getWarningString") { 888250783Sadrian @Override 889250783Sadrian public String map() { 890250783Sadrian return ((JInternalFrame) getSource()).getWarningString(); 891240899Sadrian } 892250783Sadrian })); 893250783Sadrian } 894250783Sadrian 895250783Sadrian /** 896250783Sadrian * Maps {@code JInternalFrame.isClosable()} through queue 897250735Sadrian */ 898250783Sadrian public boolean isClosable() { 899250783Sadrian return (runMapping(new MapBooleanAction("isClosable") { 900250783Sadrian @Override 901250783Sadrian public boolean map() { 902250735Sadrian return ((JInternalFrame) getSource()).isClosable(); 903250783Sadrian } 904250783Sadrian })); 905250783Sadrian } 906250783Sadrian 907250783Sadrian /** 908250783Sadrian * Maps {@code JInternalFrame.isClosed()} through queue 909250783Sadrian */ 910250783Sadrian public boolean isClosed() { 911250783Sadrian return (runMapping(new MapBooleanAction("isClosed") { 912250783Sadrian @Override 913250783Sadrian public boolean map() { 914250783Sadrian return ((JInternalFrame) getSource()).isClosed(); 915250783Sadrian } 916250783Sadrian })); 917250783Sadrian } 918250783Sadrian 919250783Sadrian /** 920250783Sadrian * Maps {@code JInternalFrame.isIcon()} through queue 921250783Sadrian */ 922227364Sadrian public boolean isIcon() { 923218065Sadrian return (runMapping(new MapBooleanAction("isIcon") { 924227364Sadrian @Override 925227364Sadrian public boolean map() { 926227364Sadrian return ((JInternalFrame) getSource()).isIcon(); 927227364Sadrian } 928227364Sadrian })); 929238930Sadrian } 930238930Sadrian 931227364Sadrian /** 932227364Sadrian * Maps {@code JInternalFrame.isIconifiable()} through queue 933232707Sadrian */ 934218065Sadrian public boolean isIconifiable() { 935248671Sadrian return (runMapping(new MapBooleanAction("isIconifiable") { 936227364Sadrian @Override 937232707Sadrian public boolean map() { 938227364Sadrian return ((JInternalFrame) getSource()).isIconifiable(); 939232707Sadrian } 940232707Sadrian })); 941227364Sadrian } 942227364Sadrian 943227364Sadrian /** 944250783Sadrian * Maps {@code JInternalFrame.isMaximizable()} through queue 945250783Sadrian */ 946250783Sadrian public boolean isMaximizable() { 947250783Sadrian return (runMapping(new MapBooleanAction("isMaximizable") { 948250783Sadrian @Override 949250783Sadrian public boolean map() { 950250783Sadrian return ((JInternalFrame) getSource()).isMaximizable(); 951250783Sadrian } 952250783Sadrian })); 953250783Sadrian } 954250783Sadrian 955250783Sadrian /** 956250783Sadrian * Maps {@code JInternalFrame.isMaximum()} through queue 957250783Sadrian */ 958250783Sadrian public boolean isMaximum() { 959250783Sadrian return (runMapping(new MapBooleanAction("isMaximum") { 960250783Sadrian @Override 961250783Sadrian public boolean map() { 962250783Sadrian return ((JInternalFrame) getSource()).isMaximum(); 963250783Sadrian } 964250783Sadrian })); 965250783Sadrian } 966250783Sadrian 967239120Sadrian /** 968227364Sadrian * Maps {@code JInternalFrame.isResizable()} through queue 969218065Sadrian */ 970218065Sadrian public boolean isResizable() { 971227364Sadrian return (runMapping(new MapBooleanAction("isResizable") { 972227364Sadrian @Override 973227364Sadrian public boolean map() { 974227364Sadrian return ((JInternalFrame) getSource()).isResizable(); 975227364Sadrian } 976227364Sadrian })); 977238930Sadrian } 978238930Sadrian 979227364Sadrian /** 980243786Sadrian * Maps {@code JInternalFrame.isSelected()} through queue 981227364Sadrian */ 982243162Sadrian public boolean isSelected() { 983243162Sadrian return (runMapping(new MapBooleanAction("isSelected") { 984243162Sadrian @Override 985243162Sadrian public boolean map() { 986243162Sadrian return ((JInternalFrame) getSource()).isSelected(); 987227364Sadrian } 988227364Sadrian })); 989227364Sadrian } 990227364Sadrian 991227364Sadrian /** 992227364Sadrian * Maps {@code JInternalFrame.moveToBack()} through queue 993218154Sadrian */ 994218154Sadrian public void moveToBack() { 995229949Sadrian runMapping(new MapVoidAction("moveToBack") { 996229949Sadrian @Override 997218154Sadrian public void map() { 998233330Sadrian ((JInternalFrame) getSource()).moveToBack(); 999233330Sadrian } 1000233330Sadrian }); 1001233330Sadrian } 1002233330Sadrian 1003233330Sadrian /** 1004233330Sadrian * Maps {@code JInternalFrame.moveToFront()} through queue 1005233330Sadrian */ 1006233330Sadrian public void moveToFront() { 1007218154Sadrian runMapping(new MapVoidAction("moveToFront") { 1008218154Sadrian @Override 1009218154Sadrian public void map() { 1010218154Sadrian ((JInternalFrame) getSource()).moveToFront(); 1011218154Sadrian } 1012218154Sadrian }); 1013218154Sadrian } 1014218154Sadrian 1015218154Sadrian /** 1016218154Sadrian * Maps {@code JInternalFrame.pack()} through queue 1017218154Sadrian */ 1018218154Sadrian public void pack() { 1019218154Sadrian runMapping(new MapVoidAction("pack") { 1020218154Sadrian @Override 1021218154Sadrian public void map() { 1022218154Sadrian ((JInternalFrame) getSource()).pack(); 1023218154Sadrian } 1024229949Sadrian }); 1025218154Sadrian } 1026218154Sadrian 1027218154Sadrian /** 1028218154Sadrian * Maps 1029218154Sadrian * {@code JInternalFrame.removeInternalFrameListener(InternalFrameListener)} 1030218154Sadrian * through queue 1031218154Sadrian */ 1032218154Sadrian public void removeInternalFrameListener(final InternalFrameListener internalFrameListener) { 1033218154Sadrian runMapping(new MapVoidAction("removeInternalFrameListener") { 1034218154Sadrian @Override 1035218154Sadrian public void map() { 1036218154Sadrian ((JInternalFrame) getSource()).removeInternalFrameListener(internalFrameListener); 1037218154Sadrian } 1038218154Sadrian }); 1039218154Sadrian } 1040218154Sadrian 1041218154Sadrian /** 1042218154Sadrian * Maps {@code JInternalFrame.setClosable(boolean)} through queue 1043218154Sadrian */ 1044218154Sadrian public void setClosable(final boolean b) { 1045218154Sadrian runMapping(new MapVoidAction("setClosable") { 1046218154Sadrian @Override 1047218154Sadrian public void map() { 1048218154Sadrian ((JInternalFrame) getSource()).setClosable(b); 1049218154Sadrian } 1050218154Sadrian }); 1051229949Sadrian } 1052218154Sadrian 1053218154Sadrian /** 1054233989Sadrian * Maps {@code JInternalFrame.setClosed(boolean)} through queue 1055233989Sadrian */ 1056233989Sadrian public void setClosed(final boolean b) { 1057233989Sadrian runMapping(new MapVoidAction("setClosed") { 1058233989Sadrian @Override 1059233989Sadrian public void map() throws PropertyVetoException { 1060233989Sadrian ((JInternalFrame) getSource()).setClosed(b); 1061233989Sadrian } 1062233989Sadrian }); 1063233989Sadrian } 1064233989Sadrian 1065233989Sadrian /** 1066233989Sadrian * Maps {@code JInternalFrame.setContentPane(Container)} through queue 1067233989Sadrian */ 1068233989Sadrian public void setContentPane(final Container container) { 1069233989Sadrian runMapping(new MapVoidAction("setContentPane") { 1070233989Sadrian @Override 1071233989Sadrian public void map() { 1072233989Sadrian ((JInternalFrame) getSource()).setContentPane(container); 1073233989Sadrian } 1074233989Sadrian }); 1075233989Sadrian } 1076233989Sadrian 1077233989Sadrian /** 1078233989Sadrian * Maps {@code JInternalFrame.setDefaultCloseOperation(int)} through queue 1079233989Sadrian */ 1080233989Sadrian public void setDefaultCloseOperation(final int i) { 1081233989Sadrian runMapping(new MapVoidAction("setDefaultCloseOperation") { 1082233989Sadrian @Override 1083233989Sadrian public void map() { 1084233989Sadrian ((JInternalFrame) getSource()).setDefaultCloseOperation(i); 1085233989Sadrian } 1086233989Sadrian }); 1087233989Sadrian } 1088233989Sadrian 1089233989Sadrian /** 1090233989Sadrian * Maps {@code JInternalFrame.setDesktopIcon(JDesktopIcon)} through queue 1091233989Sadrian */ 1092233989Sadrian public void setDesktopIcon(final JDesktopIcon jDesktopIcon) { 1093233989Sadrian runMapping(new MapVoidAction("setDesktopIcon") { 1094233989Sadrian @Override 1095233989Sadrian public void map() { 1096233989Sadrian ((JInternalFrame) getSource()).setDesktopIcon(jDesktopIcon); 1097233989Sadrian } 1098233989Sadrian }); 1099233989Sadrian } 1100233989Sadrian 1101233989Sadrian /** 1102233989Sadrian * Maps {@code JInternalFrame.setFrameIcon(Icon)} through queue 1103233989Sadrian */ 1104233989Sadrian public void setFrameIcon(final Icon icon) { 1105233989Sadrian runMapping(new MapVoidAction("setFrameIcon") { 1106233989Sadrian @Override 1107233989Sadrian public void map() { 1108233989Sadrian ((JInternalFrame) getSource()).setFrameIcon(icon); 1109233989Sadrian } 1110233989Sadrian }); 1111233989Sadrian } 1112233989Sadrian 1113233989Sadrian /** 1114233989Sadrian * Maps {@code JInternalFrame.setGlassPane(Component)} through queue 1115233989Sadrian */ 1116233989Sadrian public void setGlassPane(final Component component) { 1117233989Sadrian runMapping(new MapVoidAction("setGlassPane") { 1118233989Sadrian @Override 1119233989Sadrian public void map() { 1120233989Sadrian ((JInternalFrame) getSource()).setGlassPane(component); 1121233989Sadrian } 1122233989Sadrian }); 1123233989Sadrian } 1124233989Sadrian 1125233989Sadrian /** 1126233989Sadrian * Maps {@code JInternalFrame.setIcon(boolean)} through queue 1127233989Sadrian */ 1128233989Sadrian public void setIcon(final boolean b) { 1129233989Sadrian runMapping(new MapVoidAction("setIcon") { 1130233989Sadrian @Override 1131233989Sadrian public void map() throws PropertyVetoException { 1132233989Sadrian ((JInternalFrame) getSource()).setIcon(b); 1133233989Sadrian } 1134233989Sadrian }); 1135233989Sadrian } 1136233989Sadrian 1137233989Sadrian /** 1138233989Sadrian * Maps {@code JInternalFrame.setIconifiable(boolean)} through queue 1139233989Sadrian */ 1140233989Sadrian public void setIconifiable(final boolean b) { 1141233989Sadrian runMapping(new MapVoidAction("setIconifiable") { 1142233989Sadrian @Override 1143233989Sadrian public void map() { 1144233989Sadrian ((JInternalFrame) getSource()).setIconifiable(b); 1145233989Sadrian } 1146233989Sadrian }); 1147233989Sadrian } 1148233989Sadrian 1149233989Sadrian /** 1150233989Sadrian * Maps {@code JInternalFrame.setJMenuBar(JMenuBar)} through queue 1151233989Sadrian */ 1152233989Sadrian public void setJMenuBar(final JMenuBar jMenuBar) { 1153233989Sadrian runMapping(new MapVoidAction("setJMenuBar") { 1154233989Sadrian @Override 1155246745Sadrian public void map() { 1156233989Sadrian ((JInternalFrame) getSource()).setJMenuBar(jMenuBar); 1157233989Sadrian } 1158233989Sadrian }); 1159233989Sadrian } 1160242144Sadrian 1161242144Sadrian /** 1162242144Sadrian * Maps {@code JInternalFrame.setLayer(Integer)} through queue 1163242144Sadrian */ 1164233989Sadrian public void setLayer(final Integer integer) { 1165233989Sadrian runMapping(new MapVoidAction("setLayer") { 1166246745Sadrian @Override 1167233989Sadrian public void map() { 1168233989Sadrian ((JInternalFrame) getSource()).setLayer(integer); 1169233989Sadrian } 1170233989Sadrian }); 1171233989Sadrian } 1172233989Sadrian 1173233989Sadrian /** 1174233989Sadrian * Maps {@code JInternalFrame.setLayeredPane(JLayeredPane)} through queue 1175233989Sadrian */ 1176233989Sadrian public void setLayeredPane(final JLayeredPane jLayeredPane) { 1177233989Sadrian runMapping(new MapVoidAction("setLayeredPane") { 1178233989Sadrian @Override 1179233989Sadrian public void map() { 1180233989Sadrian ((JInternalFrame) getSource()).setLayeredPane(jLayeredPane); 1181233989Sadrian } 1182233989Sadrian }); 1183233989Sadrian } 1184233989Sadrian 1185218932Sadrian /** 1186218932Sadrian * Maps {@code JInternalFrame.setMaximizable(boolean)} through queue 1187227364Sadrian */ 1188218157Sadrian public void setMaximizable(final boolean b) { 1189218932Sadrian runMapping(new MapVoidAction("setMaximizable") { 1190218932Sadrian @Override 1191218157Sadrian public void map() { 1192218157Sadrian ((JInternalFrame) getSource()).setMaximizable(b); 1193218157Sadrian } 1194218157Sadrian }); 1195218157Sadrian } 1196218157Sadrian 1197218157Sadrian /** 1198218932Sadrian * Maps {@code JInternalFrame.setMaximum(boolean)} through queue 1199218932Sadrian */ 1200218932Sadrian public void setMaximum(final boolean b) { 1201218932Sadrian runMapping(new MapVoidAction("setMaximum") { 1202218932Sadrian @Override 1203218932Sadrian public void map() throws PropertyVetoException { 1204229949Sadrian ((JInternalFrame) getSource()).setMaximum(b); 1205218932Sadrian } 1206218932Sadrian }); 1207218932Sadrian } 1208218932Sadrian 1209218932Sadrian /** 1210218932Sadrian * Maps {@code JInternalFrame.setResizable(boolean)} through queue 1211218932Sadrian */ 1212218932Sadrian public void setResizable(final boolean b) { 1213218932Sadrian runMapping(new MapVoidAction("setResizable") { 1214218932Sadrian @Override 1215218932Sadrian public void map() { 1216218932Sadrian ((JInternalFrame) getSource()).setResizable(b); 1217218932Sadrian } 1218218932Sadrian }); 1219218932Sadrian } 1220218932Sadrian 1221229949Sadrian /** 1222218932Sadrian * Maps {@code JInternalFrame.setSelected(boolean)} through queue 1223218932Sadrian */ 1224218157Sadrian public void setSelected(final boolean b) { 1225218157Sadrian runMapping(new MapVoidAction("setSelected") { 1226218157Sadrian @Override 1227218157Sadrian public void map() throws PropertyVetoException { 1228218157Sadrian ((JInternalFrame) getSource()).setSelected(b); 1229218157Sadrian } 1230218157Sadrian }); 1231218157Sadrian } 1232218157Sadrian 1233218157Sadrian /** 1234218157Sadrian * Maps {@code JInternalFrame.setTitle(String)} through queue 1235218932Sadrian */ 1236218932Sadrian public void setTitle(final String string) { 1237218157Sadrian runMapping(new MapVoidAction("setTitle") { 1238218157Sadrian @Override 1239218932Sadrian public void map() { 1240218157Sadrian ((JInternalFrame) getSource()).setTitle(string); 1241218157Sadrian } 1242218932Sadrian }); 1243218932Sadrian } 1244218157Sadrian 1245218157Sadrian /** 1246218932Sadrian * Maps {@code JInternalFrame.setUI(InternalFrameUI)} through queue 1247218157Sadrian */ 1248218932Sadrian public void setUI(final InternalFrameUI internalFrameUI) { 1249229949Sadrian runMapping(new MapVoidAction("setUI") { 1250218157Sadrian @Override 1251218157Sadrian public void map() { 1252227364Sadrian ((JInternalFrame) getSource()).setUI(internalFrameUI); 1253227364Sadrian } 1254227364Sadrian }); 1255227364Sadrian } 1256227364Sadrian 1257227364Sadrian /** 1258227364Sadrian * Maps {@code JInternalFrame.toBack()} through queue 1259227364Sadrian */ 1260227364Sadrian public void toBack() { 1261227364Sadrian runMapping(new MapVoidAction("toBack") { 1262227364Sadrian @Override 1263227364Sadrian public void map() { 1264227364Sadrian ((JInternalFrame) getSource()).toBack(); 1265227364Sadrian } 1266227364Sadrian }); 1267218065Sadrian } 1268227364Sadrian 1269227364Sadrian /** 1270227364Sadrian * Maps {@code JInternalFrame.toFront()} through queue 1271227364Sadrian */ 1272227364Sadrian public void toFront() { 1273227364Sadrian runMapping(new MapVoidAction("toFront") { 1274227364Sadrian @Override 1275227364Sadrian public void map() { 1276227364Sadrian ((JInternalFrame) getSource()).toFront(); 1277233966Sadrian } 1278227364Sadrian }); 1279227364Sadrian } 1280227364Sadrian 1281227364Sadrian //End of mapping // 1282227364Sadrian //////////////////////////////////////////////////////// 1283227364Sadrian /** 1284227364Sadrian * Uses InternalframeDriver to get a title pane. 1285227364Sadrian * 1286227364Sadrian * @return a title pane. 1287227364Sadrian */ 1288227364Sadrian protected Container findTitlePane() { 1289227364Sadrian return (Container) iDriver.getTitlePane(this); 1290227364Sadrian } 1291227364Sadrian 1292227364Sadrian /** 1293227364Sadrian * Initiaites suboperators. 1294227364Sadrian */ 1295227364Sadrian protected void initOperators() { 1296227364Sadrian iconOperator = new JDesktopIconOperator(((JInternalFrame) getSource()).getDesktopIcon()); 1297227364Sadrian iconOperator.copyEnvironment(this); 1298227364Sadrian Container titlePane = findTitlePane(); 1299227364Sadrian if (!isIcon() && titlePane != null) { 1300227364Sadrian if (titleOperator == null) { 1301227364Sadrian titleOperator = new ContainerOperator<>(titlePane); 1302227364Sadrian int bttCount = 0; 1303227364Sadrian if (getContainer(new ComponentChooser() { 1304227364Sadrian @Override 1305227364Sadrian public boolean checkComponent(Component comp) { 1306227364Sadrian return comp instanceof JDesktopPane; 1307227364Sadrian } 1308227364Sadrian 1309227364Sadrian @Override 1310227364Sadrian public String getDescription() { 1311227364Sadrian return "Desctop pane"; 1312233966Sadrian } 1313227364Sadrian 1314227364Sadrian @Override 1315227364Sadrian public String toString() { 1316227364Sadrian return "JInternalFrameOperator.initOperators.ComponentChooser{description = " + getDescription() + '}'; 1317227364Sadrian } 1318227364Sadrian }) != null) { 1319227364Sadrian minOper = new JButtonOperator(titleOperator, bttCount); 1320227364Sadrian bttCount++; 1321238961Sadrian if (((JInternalFrame) getSource()).isMaximizable()) { 1322238961Sadrian maxOper = new JButtonOperator(titleOperator, bttCount); 1323238961Sadrian bttCount++; 1324238961Sadrian } else { 1325238961Sadrian maxOper = null; 1326227364Sadrian } 1327227364Sadrian } else { 1328227364Sadrian minOper = null; 1329227364Sadrian maxOper = null; 1330227364Sadrian } 1331239051Sadrian if (isClosable()) { 1332239051Sadrian closeOper = new JButtonOperator(titleOperator, bttCount); 1333239051Sadrian } else { 1334239051Sadrian closeOper = null; 1335239051Sadrian } 1336227364Sadrian } 1337227364Sadrian } else { 1338227364Sadrian titleOperator = null; 1339227364Sadrian minOper = null; 1340227364Sadrian maxOper = null; 1341227364Sadrian closeOper = null; 1342227364Sadrian } 1343242951Sadrian } 1344242951Sadrian 1345242951Sadrian //throw exception if state is wrong 1346242951Sadrian private void checkIconified(boolean shouldBeIconified) { 1347227364Sadrian if (shouldBeIconified && !isIcon() 1348227364Sadrian || !shouldBeIconified && isIcon()) { 1349227364Sadrian throw (new WrongInternalFrameStateException("JInternal frame should " 1350227364Sadrian + (shouldBeIconified ? "" : "not") 1351227364Sadrian + " be iconified to produce this operation", 1352227364Sadrian getSource())); 1353227364Sadrian } 1354227364Sadrian } 1355227364Sadrian 1356233966Sadrian private static JInternalFrame findOne(ContainerOperator<?> cont, String text, int index) { 1357227364Sadrian Component source = waitComponent(cont, 1358227364Sadrian new JInternalFrameByTitleFinder(text, 1359227364Sadrian cont.getComparator()), 1360227364Sadrian index); 1361227364Sadrian if (source instanceof JInternalFrame) { 1362227364Sadrian return (JInternalFrame) source; 1363227364Sadrian } else if (source instanceof JInternalFrame.JDesktopIcon) { 1364227364Sadrian return ((JInternalFrame.JDesktopIcon) source).getInternalFrame(); 1365227364Sadrian } else { 1366227364Sadrian throw (new TimeoutExpiredException("No internal frame was found")); 1367238947Sadrian } 1368238947Sadrian } 1369242656Sadrian 1370227364Sadrian /** 1371227364Sadrian * Exception can be throwht if as a result of an attempt to produce 1372227364Sadrian * operation for the frame in incorrect state. Like activate iconified 1373227364Sadrian * frame, for example. 1374227364Sadrian */ 1375227364Sadrian public static class WrongInternalFrameStateException extends JemmyInputException { 1376227364Sadrian 1377227364Sadrian private static final long serialVersionUID = 42L; 1378227364Sadrian 1379227364Sadrian /** 1380227364Sadrian * Constructs a JInternalFrameOperator$WrongInternalFrameStateException 1381227364Sadrian * object. 1382227364Sadrian * 1383227364Sadrian * @param message an exception message. 1384227364Sadrian * @param comp an internal frame. 1385227364Sadrian */ 1386227364Sadrian public WrongInternalFrameStateException(String message, Component comp) { 1387227364Sadrian super(message, comp); 1388227364Sadrian } 1389227364Sadrian } 1390227364Sadrian 1391227364Sadrian /** 1392227364Sadrian * Allows to find component by title. 1393227364Sadrian */ 1394227364Sadrian public static class JInternalFrameByTitleFinder implements ComponentChooser { 1395227364Sadrian 1396227364Sadrian String label; 1397227364Sadrian StringComparator comparator; 1398227364Sadrian 1399227364Sadrian /** 1400227364Sadrian * Constructs JInternalFrameByTitleFinder. 1401227364Sadrian * 1402227364Sadrian * @param lb a text pattern 1403227364Sadrian * @param comparator specifies string comparision algorithm. 1404227364Sadrian */ 1405227364Sadrian public JInternalFrameByTitleFinder(String lb, StringComparator comparator) { 1406227364Sadrian label = lb; 1407227364Sadrian this.comparator = comparator; 1408227364Sadrian } 1409227364Sadrian 1410227364Sadrian /** 1411227364Sadrian * Constructs JInternalFrameByTitleFinder. 1412227364Sadrian * 1413227364Sadrian * @param lb a text pattern 1414227364Sadrian */ 1415227364Sadrian public JInternalFrameByTitleFinder(String lb) { 1416227364Sadrian this(lb, Operator.getDefaultStringComparator()); 1417227364Sadrian } 1418240883Sadrian 1419240883Sadrian @Override 1420240883Sadrian public boolean checkComponent(Component comp) { 1421240883Sadrian if (comp instanceof JInternalFrame || comp instanceof JInternalFrame.JDesktopIcon) { 1422240883Sadrian JInternalFrame frame = null; 1423240883Sadrian if (comp instanceof JInternalFrame) { 1424245708Sadrian frame = (JInternalFrame) comp; 1425240883Sadrian } else { 1426243786Sadrian JDesktopIconOperator io = new JDesktopIconOperator((JInternalFrame.JDesktopIcon) comp); 1427240883Sadrian frame = io.getInternalFrame(); 1428245708Sadrian } 1429240883Sadrian if (frame.getTitle() != null) { 1430245708Sadrian return (comparator.equals(frame.getTitle(), 1431240883Sadrian label)); 1432240883Sadrian } 1433240883Sadrian } 1434240883Sadrian return false; 1435250665Sadrian } 1436250665Sadrian 1437250665Sadrian @Override 1438250665Sadrian public String getDescription() { 1439250665Sadrian return "JInternalFrame with title \"" + label + "\""; 1440250665Sadrian } 1441250665Sadrian 1442250665Sadrian @Override 1443250665Sadrian public String toString() { 1444250665Sadrian return "JInternalFrameByTitleFinder{" + "label=" + label + ", comparator=" + comparator + '}'; 1445250665Sadrian } 1446250665Sadrian } 1447250665Sadrian 1448250665Sadrian /** 1449250665Sadrian * Class to operate with javax.swing.JInternalFrame.JDesktopIconOperator 1450250665Sadrian * component. 1451250665Sadrian */ 1452250665Sadrian public static class JDesktopIconOperator extends JComponentOperator 1453250665Sadrian implements Outputable, Timeoutable { 1454250665Sadrian 1455250665Sadrian private TestOut output; 1456250665Sadrian private Timeouts timeouts; 1457250665Sadrian 1458250665Sadrian /** 1459250665Sadrian * Constructs JDesktopIconOperator. 1460250665Sadrian * 1461250665Sadrian * @param b a component 1462250665Sadrian */ 1463250665Sadrian public JDesktopIconOperator(JInternalFrame.JDesktopIcon b) { 1464250665Sadrian super(b); 1465250665Sadrian setOutput(JemmyProperties.getCurrentOutput()); 1466250665Sadrian setTimeouts(JemmyProperties.getCurrentTimeouts()); 1467250665Sadrian } 1468250665Sadrian 1469250665Sadrian @Override 1470250665Sadrian public void setOutput(TestOut out) { 1471250665Sadrian output = out; 1472250665Sadrian super.setOutput(output.createErrorOutput()); 1473250665Sadrian } 1474250665Sadrian 1475250665Sadrian @Override 1476250665Sadrian public TestOut getOutput() { 1477250665Sadrian return output; 1478250665Sadrian } 1479250665Sadrian 1480250665Sadrian @Override 1481250665Sadrian public void setTimeouts(Timeouts times) { 1482250665Sadrian timeouts = times; 1483250665Sadrian super.setTimeouts(timeouts); 1484250665Sadrian } 1485250665Sadrian 1486250665Sadrian @Override 1487250665Sadrian public Timeouts getTimeouts() { 1488250665Sadrian return timeouts; 1489250665Sadrian } 1490250665Sadrian 1491250665Sadrian /** 1492250665Sadrian * Creates an operator for the correspondent intenal frame. 1493250665Sadrian * 1494250665Sadrian * @return an operator. 1495250665Sadrian */ 1496250665Sadrian public JInternalFrame getInternalFrame() { 1497250665Sadrian return ((JInternalFrame) getEventDispatcher(). 1498227364Sadrian invokeExistingMethod("getInternalFrame", 1499227364Sadrian null, 1500227364Sadrian null, 1501227364Sadrian output)); 1502227364Sadrian } 1503227364Sadrian 1504227364Sadrian /** 1505227364Sadrian * Pushs the deiconifying button. 1506227364Sadrian */ 1507250665Sadrian public void pushButton() { 1508250665Sadrian new JButtonOperator(this).push(); 1509250665Sadrian } 1510250665Sadrian } 1511227364Sadrian 1512227364Sadrian /** 1513227364Sadrian * Checks component type. 1514227364Sadrian */ 1515227364Sadrian public static class JInternalFrameFinder implements ComponentChooser { 1516240883Sadrian 1517240883Sadrian ComponentChooser sf = null; 1518227364Sadrian 1519243786Sadrian /** 1520227364Sadrian * Constructs JInternalFrameFinder. 1521240883Sadrian * 1522240883Sadrian * @param sf other searching criteria. 1523240883Sadrian */ 1524240883Sadrian public JInternalFrameFinder(ComponentChooser sf) { 1525240883Sadrian this.sf = sf; 1526240883Sadrian } 1527240883Sadrian 1528240883Sadrian /** 1529240883Sadrian * Constructs JInternalFrameFinder. 1530240883Sadrian */ 1531240883Sadrian public JInternalFrameFinder() { 1532227364Sadrian this(ComponentSearcher.getTrueChooser("JInternalFrame or JInternalFrame.JDesktopIcon")); 1533227364Sadrian } 1534233989Sadrian 1535233989Sadrian @Override 1536233989Sadrian public boolean checkComponent(Component comp) { 1537227364Sadrian return ((comp instanceof JInternalFrame || comp instanceof JInternalFrame.JDesktopIcon) 1538227364Sadrian && sf.checkComponent(comp)); 1539227364Sadrian } 1540240883Sadrian 1541240883Sadrian @Override 1542240724Sadrian public String getDescription() { 1543240883Sadrian return sf.getDescription(); 1544240883Sadrian } 1545240883Sadrian 1546227364Sadrian @Override 1547227364Sadrian public String toString() { 1548227364Sadrian return "JInternalFrameFinder{" + "sf=" + sf + '}'; 1549227364Sadrian } 1550240722Sadrian } 1551240722Sadrian 1552240722Sadrian} 1553240722Sadrian