20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 package org.netbeans.jemmy.operators; 26 27 import java.awt.Component; 28 import java.awt.Window; 29 import java.util.ArrayList; 30 import java.util.Arrays; 31 import java.util.Hashtable; 32 import java.util.List; 33 34 import javax.swing.JComponent; 35 import javax.swing.JToolTip; 36 import javax.swing.plaf.ToolTipUI; 37 38 import org.netbeans.jemmy.ComponentChooser; 39 import org.netbeans.jemmy.ComponentSearcher; 40 import org.netbeans.jemmy.TimeoutExpiredException; 41 import org.netbeans.jemmy.Waitable; 42 43 /** 44 * <BR> 45 * <BR> 46 * Timeouts used: <BR> 47 * {@code ComponentOperator.WaitComponentTimeout} - time to wait component 48 * displayed.<BR> 49 * {@code ComponentOperator.WaitStateTimeout} - time to wait for tip text. <BR> 50 * 51 * @see org.netbeans.jemmy.Timeouts 52 */ 53 public class JToolTipOperator extends JComponentOperator { 54 55 /** 56 * Identifier for a "tip text" property. 57 * 58 * @see #getDump() 59 */ 60 public static final String TIP_TEXT_DPROP = "TipText"; 61 62 /** 63 * Constructs a JToolTipOperator object, waiting for a shown 64 * JToolTip. 65 */ 66 public JToolTipOperator() { 67 this(TRUE_CHOOSER); 68 } 69 70 /** 71 * Constructs a JToolTipOperator object for a given JToolTip component. 72 * 73 * @param toolTip 74 * a component 75 */ 76 public JToolTipOperator(JToolTip toolTip) { 77 super(toolTip); 78 } 79 80 /** 81 * Constructs a JToolTipOperator object waiting for the JToolTip having a 269 * @return JToolTip instance. 270 * @see TimeoutExpiredException 271 */ 272 public static JToolTip waitJToolTip(ComponentChooser chooser) { 273 return waitJToolTip(null, chooser); 274 } 275 276 /** 277 * Waits for the JToolTip associated with the given component and 278 * conforming to the specified component chooser. 279 * 280 * @param comp 281 * component on which tool tip associated 282 * @param chooser 283 * a component chooser specifying searching criteria. 284 * @return JToolTip instance. 285 * @see TimeoutExpiredException 286 */ 287 public static JToolTip waitJToolTip(ComponentOperator comp, 288 ComponentChooser chooser) { 289 return Operator.getEnvironmentOperator(). 290 waitState(new Waitable<JToolTip, Void>() { 291 @Override 292 public JToolTip actionProduced(Void obj) { 293 return findJToolTip(comp, chooser); 294 } 295 296 @Override 297 public String getDescription() { 298 return "Wait for JTooltip to be displayed for Component = " 299 + comp + ", " + "chooser = " + chooser; 300 } 301 302 @Override 303 public String toString() { 304 return "JToolTipOperator.waitJToolTip.Waitable{description = " 305 + getDescription() + '}'; 306 } 307 }); 308 } 309 310 /** 311 * Waits for the JToolTip associated with the given component and having 312 * the given tip text compared using given string comparator options. 313 * 314 * @param comp 315 * component on which tool tip associated 316 * @param tipText 317 * Tip text. 318 * @param ce 319 * Compare text exactly. 320 * @param ccs 321 * Compare text case sensitively. 322 * @return JToolTip instance. 323 * @see TimeoutExpiredException 324 */ 325 public static JToolTip waitJToolTip(ComponentOperator comp, String tipText, 326 boolean ce, boolean ccs) { 327 return waitJToolTip(comp, new JToolTipByTipTextFinder(tipText, | 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 package org.netbeans.jemmy.operators; 26 27 import java.awt.Component; 28 import java.awt.Window; 29 import java.util.ArrayList; 30 import java.util.Arrays; 31 import java.util.Hashtable; 32 import java.util.List; 33 34 import javax.swing.JComponent; 35 import javax.swing.JToolTip; 36 import javax.swing.plaf.ToolTipUI; 37 38 import org.netbeans.jemmy.ComponentChooser; 39 import org.netbeans.jemmy.ComponentSearcher; 40 import org.netbeans.jemmy.JemmyException; 41 import org.netbeans.jemmy.TimeoutExpiredException; 42 import org.netbeans.jemmy.Timeouts; 43 import org.netbeans.jemmy.Waitable; 44 import org.netbeans.jemmy.Waiter; 45 46 /** 47 * <BR> 48 * <BR> 49 * Timeouts used: <BR> 50 * {@code ComponentOperator.WaitComponentTimeout} - time to wait component 51 * displayed.<BR> 52 * {@code ComponentOperator.WaitStateTimeout} - time to wait for tip text. <BR> 53 * 54 * @see org.netbeans.jemmy.Timeouts 55 */ 56 public class JToolTipOperator extends JComponentOperator { 57 58 private static long WAIT_TOOLTIP_TIMEOUT = 60000; 59 60 /** 61 * Identifier for a "tip text" property. 62 * 63 * @see #getDump() 64 */ 65 public static final String TIP_TEXT_DPROP = "TipText"; 66 67 static { 68 Timeouts.initDefault("JToolTipOperator.WaitToolTipTimeout", WAIT_TOOLTIP_TIMEOUT); 69 } 70 /** 71 * Constructs a JToolTipOperator object, waiting for a shown 72 * JToolTip. 73 */ 74 public JToolTipOperator() { 75 this(TRUE_CHOOSER); 76 } 77 78 /** 79 * Constructs a JToolTipOperator object for a given JToolTip component. 80 * 81 * @param toolTip 82 * a component 83 */ 84 public JToolTipOperator(JToolTip toolTip) { 85 super(toolTip); 86 } 87 88 /** 89 * Constructs a JToolTipOperator object waiting for the JToolTip having a 277 * @return JToolTip instance. 278 * @see TimeoutExpiredException 279 */ 280 public static JToolTip waitJToolTip(ComponentChooser chooser) { 281 return waitJToolTip(null, chooser); 282 } 283 284 /** 285 * Waits for the JToolTip associated with the given component and 286 * conforming to the specified component chooser. 287 * 288 * @param comp 289 * component on which tool tip associated 290 * @param chooser 291 * a component chooser specifying searching criteria. 292 * @return JToolTip instance. 293 * @see TimeoutExpiredException 294 */ 295 public static JToolTip waitJToolTip(ComponentOperator comp, 296 ComponentChooser chooser) { 297 Waitable<JToolTip, Void> waitable = new Waitable<JToolTip, Void>() { 298 @Override 299 public JToolTip actionProduced(Void obj) { 300 return findJToolTip(comp, chooser); 301 } 302 303 @Override 304 public String getDescription() { 305 return "Wait for JTooltip to be displayed for Component = " 306 + comp + ", " + "chooser = " + chooser; 307 } 308 309 @Override 310 public String toString() { 311 return "JToolTipOperator.waitJToolTip.Waitable{description = " 312 + getDescription() + '}'; 313 } 314 }; 315 Waiter<JToolTip, Void> stateWaiter = new Waiter<>(waitable); 316 stateWaiter.setTimeoutsToCloneOf(Operator.getEnvironmentOperator(). 317 getTimeouts(), "JToolTipOperator.WaitToolTipTimeout"); 318 stateWaiter.setOutput(Operator.getEnvironmentOperator(). 319 getOutput().createErrorOutput()); 320 try { 321 return stateWaiter.waitAction(null); 322 } catch (InterruptedException e) { 323 Thread.currentThread().interrupt(); 324 throw (new JemmyException("Waiting of " + waitable.getDescription() 325 + " state has been interrupted!")); 326 } 327 } 328 329 /** 330 * Waits for the JToolTip associated with the given component and having 331 * the given tip text compared using given string comparator options. 332 * 333 * @param comp 334 * component on which tool tip associated 335 * @param tipText 336 * Tip text. 337 * @param ce 338 * Compare text exactly. 339 * @param ccs 340 * Compare text case sensitively. 341 * @return JToolTip instance. 342 * @see TimeoutExpiredException 343 */ 344 public static JToolTip waitJToolTip(ComponentOperator comp, String tipText, 345 boolean ce, boolean ccs) { 346 return waitJToolTip(comp, new JToolTipByTipTextFinder(tipText, |