[259250] reduce dependency on swt.internal
diff --git a/plugins/org.eclipse.actf.visualization.gui/src/org/eclipse/actf/visualization/gui/ui/actions/WindowListAction.java b/plugins/org.eclipse.actf.visualization.gui/src/org/eclipse/actf/visualization/gui/ui/actions/WindowListAction.java
index acb2aa2..417ea57 100644
--- a/plugins/org.eclipse.actf.visualization.gui/src/org/eclipse/actf/visualization/gui/ui/actions/WindowListAction.java
+++ b/plugins/org.eclipse.actf.visualization.gui/src/org/eclipse/actf/visualization/gui/ui/actions/WindowListAction.java
@@ -32,7 +32,6 @@
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.internal.win32.OS;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
@@ -40,164 +39,185 @@
import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;
import org.eclipse.ui.PlatformUI;
-
public class WindowListAction implements IWorkbenchWindowPulldownDelegate2 {
private boolean switchPerspective = true;
-
- private IWorkbenchWindow window;
-
- public void run(IAction action) {}
- public void selectionChanged(IAction action, ISelection selection) {}
+ private IWorkbenchWindow window;
- public void dispose() {}
+ public void run(IAction action) {
+ }
- public void init(IWorkbenchWindow window) {
- this.window = window;
- }
-
- public Menu getMenu(Control parent) {
- return null;
- }
-
- public Menu getMenu(Menu parent) {
- Menu menu = new Menu(parent);
- menu.addMenuListener(menuListener);
- return menu;
- }
-
- private MenuListener menuListener = new MenuAdapter() {
- public void menuShown(MenuEvent e) {
- Menu menu = (Menu)e.getSource();
- MenuItem[] items = menu.getItems();
- for( int i=0; i<items.length; i++ ) {
- items[i].dispose();
- }
- String defaultID = TargetWindow.getID();
- boolean hasEmbedBrowser = false;
- TargetWindowDataCollector collector = new TargetWindowDataCollector();
- String[] categories = collector.getCategories(new CategoryComparator());
- for( int c=0; c<categories.length; c++ ) {
- String category = categories[c];
- Menu submenu = menu;
- if( null != category ) {
- MenuItem item = new MenuItem(menu,SWT.CASCADE);
- item.setText(category);
- submenu = new Menu(item);
- item.setMenu(submenu);
- }
- Object[] elements = collector.getElements(category);
- for( int i=0; i<elements.length; i++ ) {
- Object element = elements[i];
- String title = TargetWindow.getTitle(element);
- if( null != title ) {
- hasEmbedBrowser |= TargetWindow.isEmbeddedBrowser(element);
- MenuItem item = new MenuItem(submenu,SWT.RADIO);
- item.setText(title);
- item.setData(element);
- if( TargetWindow.getID(element).equals(defaultID) ) {
- item.setSelection(true);
- }
- item.addArmListener(armListener);
- item.addSelectionListener(selectionListener);
- }
- }
- }
- if( categories.length > 0 ) {
- new MenuItem(menu,SWT.SEPARATOR);
- }
- final MenuItem bringTopItem = new MenuItem(menu,SWT.CHECK);
- bringTopItem.setText(Messages.getString("msaa.bringToTop")); //$NON-NLS-1$
- bringTopItem.setSelection(GuiPreferenceManager.getPreferenceBoolean(GuiPreferenceConstants.AlwaysOnTop));
- if( TargetWindow.isEmbeddedBrowser() ) {
- bringTopItem.setEnabled(false);
- }
- bringTopItem.addSelectionListener(new SelectionAdapter(){
- public void widgetSelected(SelectionEvent e) {
- GuiPreferenceManager.setPreference(GuiPreferenceConstants.AlwaysOnTop,bringTopItem.getSelection());
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+ public void dispose() {
+ }
+
+ public void init(IWorkbenchWindow window) {
+ this.window = window;
+ }
+
+ public Menu getMenu(Control parent) {
+ return null;
+ }
+
+ public Menu getMenu(Menu parent) {
+ Menu menu = new Menu(parent);
+ menu.addMenuListener(menuListener);
+ return menu;
+ }
+
+ private MenuListener menuListener = new MenuAdapter() {
+ public void menuShown(MenuEvent e) {
+ Menu menu = (Menu) e.getSource();
+ MenuItem[] items = menu.getItems();
+ for (int i = 0; i < items.length; i++) {
+ items[i].dispose();
+ }
+ String defaultID = TargetWindow.getID();
+ boolean hasEmbedBrowser = false;
+ TargetWindowDataCollector collector = new TargetWindowDataCollector();
+ String[] categories = collector
+ .getCategories(new CategoryComparator());
+ for (int c = 0; c < categories.length; c++) {
+ String category = categories[c];
+ Menu submenu = menu;
+ if (null != category) {
+ MenuItem item = new MenuItem(menu, SWT.CASCADE);
+ item.setText(category);
+ submenu = new Menu(item);
+ item.setMenu(submenu);
}
- });
- if( hasEmbedBrowser ) {
- final MenuItem switchItem = new MenuItem(menu,SWT.CHECK);
- switchItem.setText(Messages.getString("msaa.switchPerspective")); //$NON-NLS-1$
- switchItem.setSelection(switchPerspective);
- switchItem.addSelectionListener(new SelectionAdapter(){
- public void widgetSelected(SelectionEvent e) {
- switchPerspective = switchItem.getSelection();
- if( !switchPerspective ) {
- showInternalViewer(true);
- }
- }
- });
- }
- }
- };
-
- private ArmListener armListener = new ArmListener() {
- public void widgetArmed(ArmEvent e) {
- Object element = ((MenuItem)e.getSource()).getData();
- if( null != element ) {
- int hwnd = TargetWindow.getRootWindow(element);
- HighlightComposite.flashRectangle(WindowUtil.GetWindowRectangle(hwnd));
- }
- }
- };
-
- private SelectionListener selectionListener = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent event) {
- TargetWindow.setCurrentElement(((MenuItem)event.getSource()).getData());
- int hwnd = TargetWindow.getWindowHandle();
- boolean isEmbedded = TargetWindow.isEmbeddedBrowser();
- try {
- if( setWindowOrder(GuiPreferenceManager.getPreferenceBoolean(GuiPreferenceConstants.AlwaysOnTop)) ) {
- WindowUtil.BringWindowToTop(hwnd);
- WindowUtil.BringWindowToTop(hwnd);
- }
- if( switchPerspective ) {
- showInternalViewer(isEmbedded);
- }
- }
- catch( Exception e) {
- e.printStackTrace();
- }
- MSAAViewRegistory.refreshRootObject();
- }
- };
-
- private void showInternalViewer(boolean bShow) {
- try {
- window.getActivePage().setEditorAreaVisible(bShow);
- }
- catch( Exception e ) {
- }
- }
-
- public static boolean setWindowOrder(boolean topMost) {
- if( topMost && TargetWindow.isEmbeddedBrowser() ) {
- topMost = false;
- }
- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- OS.SetWindowPos( window.getShell().handle,
- topMost ? OS.HWND_TOPMOST : OS.HWND_NOTOPMOST,
- 0, 0, 0, 0, OS.SWP_NOSIZE | OS.SWP_NOMOVE );
- return topMost;
- }
-
- private static final String CATEGORY_BROWSER = Messages.getString("msaa.external_browsers"); //$NON-NLS-1$
- private static final String CATEGORY_WINDOW = Messages.getString("msaa.external_windows"); //$NON-NLS-1$
- private class CategoryComparator implements Comparator {
- private Collator collator = Collator.getInstance();
- public int compare(Object o1, Object o2) {
- int w = getWeight(o1);
- int rc = w-getWeight(o2);
- return (0==rc && 0==w) ? collator.compare(o1,o2) : rc;
- }
- public int getWeight(Object o) {
- if( null == o ) {return -1;}
- if( CATEGORY_BROWSER.equals(o) ) {return 1;}
- if( CATEGORY_WINDOW.equals(o) ) {return 2;}
- return 0;
- }
- }
+ Object[] elements = collector.getElements(category);
+ for (int i = 0; i < elements.length; i++) {
+ Object element = elements[i];
+ String title = TargetWindow.getTitle(element);
+ if (null != title) {
+ hasEmbedBrowser |= TargetWindow
+ .isEmbeddedBrowser(element);
+ MenuItem item = new MenuItem(submenu, SWT.RADIO);
+ item.setText(title);
+ item.setData(element);
+ if (TargetWindow.getID(element).equals(defaultID)) {
+ item.setSelection(true);
+ }
+ item.addArmListener(armListener);
+ item.addSelectionListener(selectionListener);
+ }
+ }
+ }
+ if (categories.length > 0) {
+ new MenuItem(menu, SWT.SEPARATOR);
+ }
+ final MenuItem bringTopItem = new MenuItem(menu, SWT.CHECK);
+ bringTopItem.setText(Messages.getString("msaa.bringToTop")); //$NON-NLS-1$
+ bringTopItem.setSelection(GuiPreferenceManager
+ .getPreferenceBoolean(GuiPreferenceConstants.AlwaysOnTop));
+ if (TargetWindow.isEmbeddedBrowser()) {
+ bringTopItem.setEnabled(false);
+ }
+ bringTopItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ GuiPreferenceManager.setPreference(
+ GuiPreferenceConstants.AlwaysOnTop, bringTopItem
+ .getSelection());
+ }
+ });
+ if (hasEmbedBrowser) {
+ final MenuItem switchItem = new MenuItem(menu, SWT.CHECK);
+ switchItem
+ .setText(Messages.getString("msaa.switchPerspective")); //$NON-NLS-1$
+ switchItem.setSelection(switchPerspective);
+ switchItem.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ switchPerspective = switchItem.getSelection();
+ if (!switchPerspective) {
+ showInternalViewer(true);
+ }
+ }
+ });
+ }
+ }
+ };
+
+ private ArmListener armListener = new ArmListener() {
+ public void widgetArmed(ArmEvent e) {
+ Object element = ((MenuItem) e.getSource()).getData();
+ if (null != element) {
+ int hwnd = TargetWindow.getRootWindow(element);
+ HighlightComposite.flashRectangle(WindowUtil
+ .GetWindowRectangle(hwnd));
+ }
+ }
+ };
+
+ private SelectionListener selectionListener = new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ TargetWindow.setCurrentElement(((MenuItem) event.getSource())
+ .getData());
+ int hwnd = TargetWindow.getWindowHandle();
+ boolean isEmbedded = TargetWindow.isEmbeddedBrowser();
+ try {
+ if (setWindowOrder(GuiPreferenceManager
+ .getPreferenceBoolean(GuiPreferenceConstants.AlwaysOnTop))) {
+ WindowUtil.BringWindowToTop(hwnd);
+ WindowUtil.BringWindowToTop(hwnd);
+ }
+ if (switchPerspective) {
+ showInternalViewer(isEmbedded);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ MSAAViewRegistory.refreshRootObject();
+ }
+ };
+
+ private void showInternalViewer(boolean bShow) {
+ try {
+ window.getActivePage().setEditorAreaVisible(bShow);
+ } catch (Exception e) {
+ }
+ }
+
+ public static boolean setWindowOrder(boolean topMost) {
+ if (topMost && TargetWindow.isEmbeddedBrowser()) {
+ topMost = false;
+ }
+ IWorkbenchWindow window = PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow();
+ WindowUtil.SetWindowPos(window.getShell().handle,
+ topMost ? WindowUtil.HWND_TOPMOST : WindowUtil.HWND_NOTOPMOST,
+ 0, 0, 0, 0, WindowUtil.SWP_NOSIZE | WindowUtil.SWP_NOMOVE);
+ return topMost;
+ }
+
+ private static final String CATEGORY_BROWSER = Messages
+ .getString("msaa.external_browsers"); //$NON-NLS-1$
+ private static final String CATEGORY_WINDOW = Messages
+ .getString("msaa.external_windows"); //$NON-NLS-1$
+
+ private class CategoryComparator implements Comparator {
+ private Collator collator = Collator.getInstance();
+
+ public int compare(Object o1, Object o2) {
+ int w = getWeight(o1);
+ int rc = w - getWeight(o2);
+ return (0 == rc && 0 == w) ? collator.compare(o1, o2) : rc;
+ }
+
+ public int getWeight(Object o) {
+ if (null == o) {
+ return -1;
+ }
+ if (CATEGORY_BROWSER.equals(o)) {
+ return 1;
+ }
+ if (CATEGORY_WINDOW.equals(o)) {
+ return 2;
+ }
+ return 0;
+ }
+ }
}