34 35 import java.awt.Toolkit; 36 import java.awt.datatransfer.DataFlavor; 37 import java.awt.datatransfer.Transferable; 38 import java.awt.datatransfer.UnsupportedFlavorException; 39 import java.awt.im.InputContext; 40 import java.io.File; 41 import java.io.IOException; 42 import java.lang.reflect.Method; 43 import java.util.ArrayList; 44 import java.util.HashMap; 45 import java.util.List; 46 import java.util.Map; 47 48 import org.eclipse.core.runtime.jobs.Job; 49 import org.eclipse.swt.SWTException; 50 import org.eclipse.swt.custom.CTabFolder; 51 import org.eclipse.swt.widgets.Composite; 52 import org.eclipse.swt.widgets.Control; 53 import org.eclipse.swt.widgets.Display; 54 import org.eclipse.swt.widgets.Shell; 55 import org.eclipse.swt.widgets.Table; 56 import org.eclipse.swt.widgets.Widget; 57 import org.jemmy.action.AbstractExecutor; 58 import org.jemmy.control.Wrap; 59 import org.jemmy.env.Environment; 60 import org.jemmy.env.TestOut; 61 import org.jemmy.image.AWTImage; 62 import org.jemmy.image.AWTRobotCapturer; 63 import org.jemmy.image.AverageDistanceImageComparator; 64 import org.jemmy.image.FilesystemImageLoader; 65 import org.jemmy.image.Image; 66 import org.jemmy.image.ImageComparator; 67 import org.jemmy.image.StrictImageComparator; 68 import org.jemmy.input.AWTRobotInputFactory; 69 import org.jemmy.input.DefaultCharBindingMap; 70 import org.jemmy.interfaces.Focusable; 71 import org.jemmy.interfaces.Keyboard.KeyboardButton; 72 import org.jemmy.interfaces.Keyboard.KeyboardButtons; 73 import org.jemmy.interfaces.Keyboard.KeyboardModifiers; 74 import org.jemmy.interfaces.Parent; 75 import org.jemmy.lookup.AbstractLookup; 76 import org.jemmy.lookup.Lookup; 77 import org.jemmy.operators.Screen; 78 import org.jemmy.resources.StringComparePolicy; 79 import org.jemmy.swt.SWTMenu; 80 import org.jemmy.swt.Shells; 81 import org.jemmy.swt.lookup.ByItemLookup; 82 import org.jemmy.swt.lookup.ByName; 83 import org.jemmy.swt.lookup.ByTextControlLookup; 84 import org.jemmy.swt.lookup.ByTextShell; 85 import org.junit.Assert; 86 87 import org.openjdk.jmc.test.jemmy.misc.fetchers.Fetcher; 88 import org.openjdk.jmc.test.jemmy.misc.fetchers.FetcherWithInput; 89 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCProgressIndicator; 90 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCTabFolder; 91 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCTable; 92 93 /** 510 * @return {@code true} if disposed (or disposing), otherwise {@code false} 511 */ 512 public boolean isDisposed() { 513 return isDisposed(control); 514 } 515 516 /** 517 * Convenience method to find out if this control is enabled 518 * 519 * @return {@code true} if enabled, otherwise {@code false} 520 */ 521 public boolean isEnabled() { 522 Fetcher<Boolean> fetcher = new Fetcher<Boolean>() { 523 @Override 524 public void run() { 525 setOutput(control.getControl().isEnabled()); 526 } 527 }; 528 Display.getDefault().syncExec(fetcher); 529 return fetcher.getOutput(); 530 } 531 532 /** 533 * Convenience method to find out if a control is visible 534 * 535 * @param controlWrap 536 * the control to check 537 * @return {@code true} if visible, otherwise {@code false} 538 */ 539 protected static boolean isVisible(final Wrap<? extends Control> controlWrap) { 540 Fetcher<Boolean> fetcher = new Fetcher<Boolean>() { 541 @Override 542 public void run() { 543 try { 544 setOutput(controlWrap.getControl().isVisible()); 545 } catch (SWTException e) { 546 suppressWidgetDisposedException(e); 547 } 548 } 549 }; | 34 35 import java.awt.Toolkit; 36 import java.awt.datatransfer.DataFlavor; 37 import java.awt.datatransfer.Transferable; 38 import java.awt.datatransfer.UnsupportedFlavorException; 39 import java.awt.im.InputContext; 40 import java.io.File; 41 import java.io.IOException; 42 import java.lang.reflect.Method; 43 import java.util.ArrayList; 44 import java.util.HashMap; 45 import java.util.List; 46 import java.util.Map; 47 48 import org.eclipse.core.runtime.jobs.Job; 49 import org.eclipse.swt.SWTException; 50 import org.eclipse.swt.custom.CTabFolder; 51 import org.eclipse.swt.widgets.Composite; 52 import org.eclipse.swt.widgets.Control; 53 import org.eclipse.swt.widgets.Display; 54 import org.eclipse.swt.widgets.Menu; 55 import org.eclipse.swt.widgets.MenuItem; 56 import org.eclipse.swt.widgets.Shell; 57 import org.eclipse.swt.widgets.Table; 58 import org.eclipse.swt.widgets.Widget; 59 import org.jemmy.Point; 60 import org.jemmy.action.AbstractExecutor; 61 import org.jemmy.control.Wrap; 62 import org.jemmy.env.Environment; 63 import org.jemmy.env.TestOut; 64 import org.jemmy.image.AWTImage; 65 import org.jemmy.image.AWTRobotCapturer; 66 import org.jemmy.image.AverageDistanceImageComparator; 67 import org.jemmy.image.FilesystemImageLoader; 68 import org.jemmy.image.Image; 69 import org.jemmy.image.ImageComparator; 70 import org.jemmy.image.StrictImageComparator; 71 import org.jemmy.input.AWTRobotInputFactory; 72 import org.jemmy.input.DefaultCharBindingMap; 73 import org.jemmy.interfaces.Focusable; 74 import org.jemmy.interfaces.Keyboard.KeyboardButton; 75 import org.jemmy.interfaces.Keyboard.KeyboardButtons; 76 import org.jemmy.interfaces.Keyboard.KeyboardModifiers; 77 import org.jemmy.interfaces.Mouse.MouseButtons; 78 import org.jemmy.interfaces.Parent; 79 import org.jemmy.lookup.AbstractLookup; 80 import org.jemmy.lookup.Lookup; 81 import org.jemmy.operators.Screen; 82 import org.jemmy.resources.StringComparePolicy; 83 import org.jemmy.swt.SWTMenu; 84 import org.jemmy.swt.Shells; 85 import org.jemmy.swt.lookup.ByItemLookup; 86 import org.jemmy.swt.lookup.ByName; 87 import org.jemmy.swt.lookup.ByTextControlLookup; 88 import org.jemmy.swt.lookup.ByTextShell; 89 import org.junit.Assert; 90 91 import org.openjdk.jmc.test.jemmy.misc.fetchers.Fetcher; 92 import org.openjdk.jmc.test.jemmy.misc.fetchers.FetcherWithInput; 93 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCProgressIndicator; 94 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCTabFolder; 95 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCTable; 96 97 /** 514 * @return {@code true} if disposed (or disposing), otherwise {@code false} 515 */ 516 public boolean isDisposed() { 517 return isDisposed(control); 518 } 519 520 /** 521 * Convenience method to find out if this control is enabled 522 * 523 * @return {@code true} if enabled, otherwise {@code false} 524 */ 525 public boolean isEnabled() { 526 Fetcher<Boolean> fetcher = new Fetcher<Boolean>() { 527 @Override 528 public void run() { 529 setOutput(control.getControl().isEnabled()); 530 } 531 }; 532 Display.getDefault().syncExec(fetcher); 533 return fetcher.getOutput(); 534 } 535 536 /** 537 * Opens the context menu by right-clicking at a provided point 538 * 539 * @param p 540 * origin point of context (right-click) 541 */ 542 private void openContextMenuAtPoint(Point p) { 543 Display.getDefault().syncExec(() -> { 544 control.mouse().click(1, p, MouseButtons.BUTTON3); 545 }); 546 } 547 548 /** 549 * Checks the isEnabled value for a menu item 550 * 551 * @param p 552 * the point on the screen at which to open the context menu 553 * @param menuItemText 554 * the menu item of interest 555 * @return the isEnabled value for the menu item of interest 556 */ 557 public boolean isContextMenuItemEnabled(Point p, String menuItemText) { 558 openContextMenuAtPoint(p); 559 Fetcher<Boolean> fetcher = new Fetcher<Boolean>() { 560 @Override 561 public void run() { 562 Menu menu = control.getControl().getMenu(); 563 for (MenuItem item : menu.getItems()) { 564 if(menuItemText.equals(item.getText())) { 565 setOutput(item.isEnabled()); 566 break; 567 } 568 } 569 } 570 }; 571 Display.getDefault().syncExec(fetcher); 572 return (fetcher.getOutput() == null) ? false : fetcher.getOutput(); 573 } 574 575 /** 576 * Convenience method to find out if a control is visible 577 * 578 * @param controlWrap 579 * the control to check 580 * @return {@code true} if visible, otherwise {@code false} 581 */ 582 protected static boolean isVisible(final Wrap<? extends Control> controlWrap) { 583 Fetcher<Boolean> fetcher = new Fetcher<Boolean>() { 584 @Override 585 public void run() { 586 try { 587 setOutput(controlWrap.getControl().isVisible()); 588 } catch (SWTException e) { 589 suppressWidgetDisposedException(e); 590 } 591 } 592 }; |