Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 90592 Details for
Bug 193318
Implement ToolItem.setMenu
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
jface and ui.workbench patch to take advantage of setMenu
swt setmenu eclipse usage unified patch for 3.4 head.txt (text/plain), 16.28 KB, created by
Nikolay Botev
on 2008-02-24 21:23:40 EST
(
hide
)
Description:
jface and ui.workbench patch to take advantage of setMenu
Filename:
MIME Type:
Creator:
Nikolay Botev
Created:
2008-02-24 21:23:40 EST
Size:
16.28 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jface >Index: src/org/eclipse/jface/action/ActionContributionItem.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jface/src/org/eclipse/jface/action/ActionContributionItem.java,v >retrieving revision 1.93 >diff -u -r1.93 ActionContributionItem.java >--- src/org/eclipse/jface/action/ActionContributionItem.java 3 Dec 2007 14:49:30 -0000 1.93 >+++ src/org/eclipse/jface/action/ActionContributionItem.java 24 Feb 2008 22:12:25 -0000 >@@ -27,7 +27,7 @@ > import org.eclipse.jface.util.PropertyChangeEvent; > import org.eclipse.swt.SWT; > import org.eclipse.swt.graphics.GC; >-import org.eclipse.swt.graphics.Point; >+ > import org.eclipse.swt.widgets.Button; > import org.eclipse.swt.widgets.Composite; > import org.eclipse.swt.widgets.Display; >@@ -333,6 +333,7 @@ > } > ti.setData(this); > ti.addListener(SWT.Selection, getToolItemListener()); >+ ti.addListener(SWT.MenuDetect, getToolItemListener()); > ti.addListener(SWT.Dispose, getToolItemListener()); > > widget = ti; >@@ -451,6 +452,12 @@ > .getSelection()); > } > break; >+ case SWT.MenuDetect: >+ if (event.detail == SWT.ARROW) { >+ ToolItem ti = (ToolItem) event.widget; >+ handleWidgetSelection(event, ti.getSelection()); >+ } >+ break; > } > } > }; >@@ -526,14 +533,15 @@ > // dummy.dispose(); > if (mc != null) { > Menu m = mc.getMenu(ti.getParent()); >+ ti.setMenu(m); > if (m != null) { > // position the menu below the drop down item >- Point point = ti.getParent().toDisplay( >- new Point(e.x, e.y)); >- m.setLocation(point.x, point.y); // waiting >+ //Point point = ti.getParent().toDisplay( >+ // new Point(e.x, e.y)); >+ //m.setLocation(point.x, point.y); // waiting > // for SWT > // 0.42 >- m.setVisible(true); >+ //m.setVisible(true); > return; // we don't fire the action > } > } >#P org.eclipse.ui.workbench >Index: Eclipse UI/org/eclipse/ui/internal/PartPane.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PartPane.java,v >retrieving revision 1.89 >diff -u -r1.89 PartPane.java >--- Eclipse UI/org/eclipse/ui/internal/PartPane.java 27 Aug 2007 19:32:06 -0000 1.89 >+++ Eclipse UI/org/eclipse/ui/internal/PartPane.java 24 Feb 2008 22:12:27 -0000 >@@ -536,6 +536,10 @@ > > } > >+ public Menu getViewMenu() { >+ return null; >+ } >+ > public boolean isBusy() { > return busy; > } >Index: Eclipse UI/org/eclipse/ui/internal/PerspectiveBarNewContributionItem.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarNewContributionItem.java,v >retrieving revision 1.9 >diff -u -r1.9 PerspectiveBarNewContributionItem.java >--- Eclipse UI/org/eclipse/ui/internal/PerspectiveBarNewContributionItem.java 25 Feb 2005 20:52:16 -0000 1.9 >+++ Eclipse UI/org/eclipse/ui/internal/PerspectiveBarNewContributionItem.java 24 Feb 2008 22:12:27 -0000 >@@ -15,12 +15,9 @@ > import org.eclipse.swt.SWT; > import org.eclipse.swt.events.DisposeEvent; > import org.eclipse.swt.events.DisposeListener; >-import org.eclipse.swt.events.SelectionAdapter; >-import org.eclipse.swt.events.SelectionEvent; >+import org.eclipse.swt.events.MenuDetectEvent; >+import org.eclipse.swt.events.MenuDetectListener; > import org.eclipse.swt.graphics.Image; >-import org.eclipse.swt.graphics.Point; >-import org.eclipse.swt.graphics.Rectangle; >-import org.eclipse.swt.widgets.Menu; > import org.eclipse.swt.widgets.ToolBar; > import org.eclipse.swt.widgets.ToolItem; > import org.eclipse.ui.IWorkbenchWindow; >@@ -72,23 +69,31 @@ > > toolItem.setText(""); //$NON-NLS-1$ > toolItem.setToolTipText(WorkbenchMessages.PerspectiveBarNewContributionItem_toolTip); >- toolItem.addSelectionListener(new SelectionAdapter() { >- >- public void widgetSelected(SelectionEvent event) { >+ toolItem.addMenuDetectListener(new MenuDetectListener() { >+ >+ public void menuDetected(MenuDetectEvent event) { > menuManager.update(true); >- Point point = new Point(event.x, event.y); >- if (event.widget instanceof ToolItem) { >- ToolItem toolItem = (ToolItem) event.widget; >- Rectangle rectangle = toolItem.getBounds(); >- point = new Point(rectangle.x, rectangle.y >- + rectangle.height); >- } >- Menu menu = menuManager.createContextMenu(parent); >- point = parent.toDisplay(point); >- menu.setLocation(point.x, point.y); >- menu.setVisible(true); >- } >- }); >+ toolItem.setMenu(menuManager.createContextMenu(parent)); >+ } >+ >+ }); >+// toolItem.addSelectionListener(new SelectionAdapter() { >+// >+// public void widgetSelected(SelectionEvent event) { >+// menuManager.update(true); >+// Point point = new Point(event.x, event.y); >+// if (event.widget instanceof ToolItem) { >+// ToolItem toolItem = (ToolItem) event.widget; >+// Rectangle rectangle = toolItem.getBounds(); >+// point = new Point(rectangle.x, rectangle.y >+// + rectangle.height); >+// } >+// Menu menu = menuManager.createContextMenu(parent); >+// point = parent.toDisplay(point); >+// menu.setLocation(point.x, point.y); >+// menu.setVisible(true); >+// } >+// }); > } > } > } >Index: Eclipse UI/org/eclipse/ui/internal/ViewPane.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ViewPane.java,v >retrieving revision 1.108 >diff -u -r1.108 ViewPane.java >--- Eclipse UI/org/eclipse/ui/internal/ViewPane.java 10 Sep 2007 18:04:05 -0000 1.108 >+++ Eclipse UI/org/eclipse/ui/internal/ViewPane.java 24 Feb 2008 22:12:28 -0000 >@@ -433,6 +433,20 @@ > aMenu.setVisible(true); > } > >+ public Menu getViewMenu() { >+ if (!hasViewMenu()) { >+ return null; >+ } >+ >+ // If this is a fast view, it may have been minimized. Do nothing in this case. >+ if (isFastView() && (page.getActiveFastView() != getViewReference())) { >+ return null; >+ } >+ >+ Menu aMenu = isvMenuMgr.createContextMenu(getControl().getParent()); >+ return aMenu; >+ } >+ > public String toString() { > > return getClass().getName() + "@" + Integer.toHexString(hashCode()); //$NON-NLS-1$ >Index: Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java,v >retrieving revision 1.61 >diff -u -r1.61 PerspectiveSwitcher.java >--- Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java 10 Jan 2008 19:16:15 -0000 1.61 >+++ Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java 24 Feb 2008 22:12:28 -0000 >@@ -33,6 +33,8 @@ > import org.eclipse.swt.events.ControlEvent; > import org.eclipse.swt.events.DisposeEvent; > import org.eclipse.swt.events.DisposeListener; >+import org.eclipse.swt.events.MenuDetectEvent; >+import org.eclipse.swt.events.MenuDetectListener; > import org.eclipse.swt.events.SelectionAdapter; > import org.eclipse.swt.events.SelectionEvent; > import org.eclipse.swt.events.SelectionListener; >@@ -771,13 +773,11 @@ > } > }); > >- coolItem.addSelectionListener(new SelectionAdapter() { >- public void widgetSelected(SelectionEvent e) { >- if (e.detail == SWT.ARROW) { >- if (perspectiveBar != null) { >- perspectiveBar.handleChevron(e); >- } >- } >+ coolItem.addMenuDetectListener(new MenuDetectListener() { >+ public void menuDetected(MenuDetectEvent e) { >+ if (perspectiveBar != null) { >+ coolItem.setMenu(perspectiveBar.handleChevron(e)); >+ } > } > }); > coolItem.setMinimumSize(0, 0); >Index: Eclipse UI/org/eclipse/ui/internal/PerspectiveBarManager.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveBarManager.java,v >retrieving revision 1.26 >diff -u -r1.26 PerspectiveBarManager.java >--- Eclipse UI/org/eclipse/ui/internal/PerspectiveBarManager.java 15 Feb 2008 19:01:07 -0000 1.26 >+++ Eclipse UI/org/eclipse/ui/internal/PerspectiveBarManager.java 24 Feb 2008 22:12:27 -0000 >@@ -13,6 +13,7 @@ > import org.eclipse.jface.action.IContributionItem; > import org.eclipse.jface.action.ToolBarManager; > import org.eclipse.swt.SWT; >+import org.eclipse.swt.events.MenuDetectEvent; > import org.eclipse.swt.events.SelectionAdapter; > import org.eclipse.swt.events.SelectionEvent; > import org.eclipse.swt.graphics.Point; >@@ -44,12 +45,12 @@ > private CoolBar coolBar; > private Menu chevronMenu = null; > >- public void handleChevron(SelectionEvent event) { >+ public Menu handleChevron(MenuDetectEvent event) { > CoolItem item = (CoolItem) event.widget; > //ToolBar toolbar = (ToolBar)getControl(); > Control control = getControl(); > if (!(control instanceof ToolBar)) { >- return; // currently we only deal with toolbar items >+ return null; // currently we only deal with toolbar items > } > /* Retrieve the current bounding rectangle for the selected cool item. */ > Rectangle itemBounds = item.getBounds(); >@@ -134,9 +135,10 @@ > * coordinates in order to pass them to Menu.setLocation (i.e. was > * relative to CoolBar). > */ >- pt = coolBar.toDisplay(new Point(event.x, event.y)); >- chevronMenu.setLocation(pt.x, pt.y); >- chevronMenu.setVisible(true); >+ return chevronMenu; >+// pt = coolBar.toDisplay(new Point(event.x, event.y)); >+// chevronMenu.setLocation(pt.x, pt.y); >+// chevronMenu.setVisible(true); > } > > /* (non-Javadoc) >Index: Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolder.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolder.java,v >retrieving revision 1.22 >diff -u -r1.22 DefaultTabFolder.java >--- Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolder.java 20 Dec 2006 20:52:07 -0000 1.22 >+++ Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolder.java 24 Feb 2008 22:12:28 -0000 >@@ -16,8 +16,8 @@ > import org.eclipse.swt.custom.CTabFolder; > import org.eclipse.swt.custom.CTabFolderEvent; > import org.eclipse.swt.custom.CTabItem; >-import org.eclipse.swt.events.MouseAdapter; >-import org.eclipse.swt.events.MouseEvent; >+import org.eclipse.swt.events.MenuDetectEvent; >+import org.eclipse.swt.events.MenuDetectListener; > import org.eclipse.swt.events.SelectionAdapter; > import org.eclipse.swt.events.SelectionEvent; > import org.eclipse.swt.graphics.Font; >@@ -30,6 +30,7 @@ > import org.eclipse.swt.widgets.Event; > import org.eclipse.swt.widgets.Label; > import org.eclipse.swt.widgets.Listener; >+import org.eclipse.swt.widgets.Menu; > import org.eclipse.swt.widgets.ToolBar; > import org.eclipse.swt.widgets.ToolItem; > import org.eclipse.ui.internal.IWorkbenchGraphicConstants; >@@ -38,6 +39,7 @@ > import org.eclipse.ui.internal.dnd.DragUtil; > import org.eclipse.ui.internal.presentations.PaneFolder; > import org.eclipse.ui.internal.presentations.PaneFolderButtonListener; >+import org.eclipse.ui.internal.presentations.PresentablePart; > import org.eclipse.ui.internal.presentations.util.AbstractTabFolder; > import org.eclipse.ui.internal.presentations.util.AbstractTabItem; > import org.eclipse.ui.internal.presentations.util.PartInfo; >@@ -113,17 +115,31 @@ > ToolBar actualToolBar = new ToolBar(paneFolder.getControl(), SWT.FLAT | SWT.NO_BACKGROUND); > viewToolBar = actualToolBar; > >- ToolItem pullDownButton = new ToolItem(actualToolBar, SWT.PUSH); >+ final ToolItem pullDownButton = new ToolItem(actualToolBar, SWT.PUSH); > Image hoverImage = WorkbenchImages > .getImage(IWorkbenchGraphicConstants.IMG_LCL_RENDERED_VIEW_MENU); > pullDownButton.setDisabledImage(hoverImage); > pullDownButton.setImage(hoverImage); > pullDownButton.setToolTipText(WorkbenchMessages.Menu); >- actualToolBar.addMouseListener(new MouseAdapter() { >- public void mouseDown(MouseEvent e) { >- fireEvent(TabFolderEvent.EVENT_PANE_MENU, getSelection(), getPaneMenuLocation()); >- } >- }); >+// actualToolBar.addMouseListener(new MouseAdapter() { >+// public void mouseDown(MouseEvent e) { >+// fireEvent(TabFolderEvent.EVENT_PANE_MENU, getSelection(), getPaneMenuLocation()); >+// } >+// }); >+ pullDownButton.addMenuDetectListener(new MenuDetectListener() { >+ public void menuDetected(MenuDetectEvent e) { >+ Menu menu = null; >+ Object data = getSelection().getData(); >+ if (data instanceof PresentablePart) { >+ PresentablePart part = (PresentablePart) data; >+ part.setFocus(); >+ if (part.getMenu() != null) { >+ menu = part.getMenu().getMenu(); >+ } >+ } >+ pullDownButton.setMenu(menu); >+ } >+ }); > pullDownButton.addSelectionListener(new SelectionAdapter() { > public void widgetSelected(SelectionEvent e) { > fireEvent(TabFolderEvent.EVENT_PANE_MENU, getSelection(), getPaneMenuLocation()); >Index: Eclipse UI/org/eclipse/ui/presentations/IPartMenu.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/presentations/IPartMenu.java,v >retrieving revision 1.6 >diff -u -r1.6 IPartMenu.java >--- Eclipse UI/org/eclipse/ui/presentations/IPartMenu.java 16 Mar 2007 18:00:37 -0000 1.6 >+++ Eclipse UI/org/eclipse/ui/presentations/IPartMenu.java 24 Feb 2008 22:12:28 -0000 >@@ -11,6 +11,7 @@ > package org.eclipse.ui.presentations; > > import org.eclipse.swt.graphics.Point; >+import org.eclipse.swt.widgets.Menu; > > /** > * Interface to a menu created by a part that will be displayed in a presentation. >@@ -27,4 +28,7 @@ > * @since 3.0 > */ > public void showMenu(Point location); >+ >+ public Menu getMenu(); >+ > } >Index: Eclipse UI/org/eclipse/ui/internal/presentations/PresentablePart.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/presentations/PresentablePart.java,v >retrieving revision 1.13 >diff -u -r1.13 PresentablePart.java >--- Eclipse UI/org/eclipse/ui/internal/presentations/PresentablePart.java 27 Aug 2007 19:32:06 -0000 1.13 >+++ Eclipse UI/org/eclipse/ui/internal/presentations/PresentablePart.java 24 Feb 2008 22:12:28 -0000 >@@ -22,6 +22,7 @@ > import org.eclipse.swt.graphics.Rectangle; > import org.eclipse.swt.widgets.Composite; > import org.eclipse.swt.widgets.Control; >+import org.eclipse.swt.widgets.Menu; > import org.eclipse.ui.IPropertyListener; > import org.eclipse.ui.ISharedImages; > import org.eclipse.ui.PlatformUI; >@@ -312,6 +313,9 @@ > public void showMenu(Point location) { > part.showViewMenu(location); > } >+ public Menu getMenu() { >+ return part.getViewMenu(); >+ } > }; > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 193318
:
71745
|
71746
|
71747
|
71748
|
71749
|
72862
|
72863
|
72930
|
72931
|
90591
| 90592 |
91606
|
91607