View | Details | Raw Unified | Return to bug 193318 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/jface/action/ActionContributionItem.java (-5 / +13 lines)
Lines 27-33 Link Here
27
import org.eclipse.jface.util.PropertyChangeEvent;
27
import org.eclipse.jface.util.PropertyChangeEvent;
28
import org.eclipse.swt.SWT;
28
import org.eclipse.swt.SWT;
29
import org.eclipse.swt.graphics.GC;
29
import org.eclipse.swt.graphics.GC;
30
import org.eclipse.swt.graphics.Point;
30
31
import org.eclipse.swt.widgets.Button;
31
import org.eclipse.swt.widgets.Button;
32
import org.eclipse.swt.widgets.Composite;
32
import org.eclipse.swt.widgets.Composite;
33
import org.eclipse.swt.widgets.Display;
33
import org.eclipse.swt.widgets.Display;
Lines 333-338 Link Here
333
			}
333
			}
334
			ti.setData(this);
334
			ti.setData(this);
335
			ti.addListener(SWT.Selection, getToolItemListener());
335
			ti.addListener(SWT.Selection, getToolItemListener());
336
			ti.addListener(SWT.MenuDetect, getToolItemListener());
336
			ti.addListener(SWT.Dispose, getToolItemListener());
337
			ti.addListener(SWT.Dispose, getToolItemListener());
337
338
338
			widget = ti;
339
			widget = ti;
Lines 451-456 Link Here
451
									.getSelection());
452
									.getSelection());
452
						}
453
						}
453
						break;
454
						break;
455
					case SWT.MenuDetect:
456
						if (event.detail == SWT.ARROW) {
457
							ToolItem ti = (ToolItem) event.widget;
458
							handleWidgetSelection(event, ti.getSelection());
459
						}
460
						break;
454
					}
461
					}
455
				}
462
				}
456
			};
463
			};
Lines 526-539 Link Here
526
						// dummy.dispose();
533
						// dummy.dispose();
527
						if (mc != null) {
534
						if (mc != null) {
528
							Menu m = mc.getMenu(ti.getParent());
535
							Menu m = mc.getMenu(ti.getParent());
536
							ti.setMenu(m);
529
							if (m != null) {
537
							if (m != null) {
530
								// position the menu below the drop down item
538
								// position the menu below the drop down item
531
								Point point = ti.getParent().toDisplay(
539
								//Point point = ti.getParent().toDisplay(
532
										new Point(e.x, e.y));
540
								//		new Point(e.x, e.y));
533
								m.setLocation(point.x, point.y); // waiting
541
								//m.setLocation(point.x, point.y); // waiting
534
																	// for SWT
542
																	// for SWT
535
								// 0.42
543
								// 0.42
536
								m.setVisible(true);
544
								//m.setVisible(true);
537
								return; // we don't fire the action
545
								return; // we don't fire the action
538
							}
546
							}
539
						}
547
						}
(-)Eclipse UI/org/eclipse/ui/internal/PartPane.java (+4 lines)
Lines 536-541 Link Here
536
536
537
    }
537
    }
538
    
538
    
539
    public Menu getViewMenu() {
540
    	return null;
541
    }
542
539
    public boolean isBusy() {
543
    public boolean isBusy() {
540
        return busy;
544
        return busy;
541
    }
545
    }
(-)Eclipse UI/org/eclipse/ui/internal/PerspectiveBarNewContributionItem.java (-21 / +26 lines)
Lines 15-26 Link Here
15
import org.eclipse.swt.SWT;
15
import org.eclipse.swt.SWT;
16
import org.eclipse.swt.events.DisposeEvent;
16
import org.eclipse.swt.events.DisposeEvent;
17
import org.eclipse.swt.events.DisposeListener;
17
import org.eclipse.swt.events.DisposeListener;
18
import org.eclipse.swt.events.SelectionAdapter;
18
import org.eclipse.swt.events.MenuDetectEvent;
19
import org.eclipse.swt.events.SelectionEvent;
19
import org.eclipse.swt.events.MenuDetectListener;
20
import org.eclipse.swt.graphics.Image;
20
import org.eclipse.swt.graphics.Image;
21
import org.eclipse.swt.graphics.Point;
22
import org.eclipse.swt.graphics.Rectangle;
23
import org.eclipse.swt.widgets.Menu;
24
import org.eclipse.swt.widgets.ToolBar;
21
import org.eclipse.swt.widgets.ToolBar;
25
import org.eclipse.swt.widgets.ToolItem;
22
import org.eclipse.swt.widgets.ToolItem;
26
import org.eclipse.ui.IWorkbenchWindow;
23
import org.eclipse.ui.IWorkbenchWindow;
Lines 72-94 Link Here
72
69
73
            toolItem.setText(""); //$NON-NLS-1$
70
            toolItem.setText(""); //$NON-NLS-1$
74
            toolItem.setToolTipText(WorkbenchMessages.PerspectiveBarNewContributionItem_toolTip); 
71
            toolItem.setToolTipText(WorkbenchMessages.PerspectiveBarNewContributionItem_toolTip); 
75
            toolItem.addSelectionListener(new SelectionAdapter() {
72
            toolItem.addMenuDetectListener(new MenuDetectListener() {
76
73
			
77
                public void widgetSelected(SelectionEvent event) {
74
				public void menuDetected(MenuDetectEvent event) {
78
                    menuManager.update(true);
75
                    menuManager.update(true);
79
                    Point point = new Point(event.x, event.y);
76
                    toolItem.setMenu(menuManager.createContextMenu(parent));
80
                    if (event.widget instanceof ToolItem) {
77
				}
81
                        ToolItem toolItem = (ToolItem) event.widget;
78
			
82
                        Rectangle rectangle = toolItem.getBounds();
79
			});
83
                        point = new Point(rectangle.x, rectangle.y
80
//            toolItem.addSelectionListener(new SelectionAdapter() {
84
                                + rectangle.height);
81
//
85
                    }
82
//                public void widgetSelected(SelectionEvent event) {
86
                    Menu menu = menuManager.createContextMenu(parent);
83
//                    menuManager.update(true);
87
                    point = parent.toDisplay(point);
84
//                    Point point = new Point(event.x, event.y);
88
                    menu.setLocation(point.x, point.y);
85
//                    if (event.widget instanceof ToolItem) {
89
                    menu.setVisible(true);
86
//                        ToolItem toolItem = (ToolItem) event.widget;
90
                }
87
//                        Rectangle rectangle = toolItem.getBounds();
91
            });
88
//                        point = new Point(rectangle.x, rectangle.y
89
//                                + rectangle.height);
90
//                    }
91
//                    Menu menu = menuManager.createContextMenu(parent);
92
//                    point = parent.toDisplay(point);
93
//                    menu.setLocation(point.x, point.y);
94
//                    menu.setVisible(true);
95
//                }
96
//            });
92
        }
97
        }
93
    }
98
    }
94
}
99
}
(-)Eclipse UI/org/eclipse/ui/internal/ViewPane.java (+14 lines)
Lines 433-438 Link Here
433
        aMenu.setVisible(true);
433
        aMenu.setVisible(true);
434
    }
434
    }
435
435
436
    public Menu getViewMenu() {
437
        if (!hasViewMenu()) {
438
			return null;
439
		}
440
441
        // If this is a fast view, it may have been minimized. Do nothing in this case.
442
        if (isFastView() && (page.getActiveFastView() != getViewReference())) {
443
			return null;
444
		}
445
446
        Menu aMenu = isvMenuMgr.createContextMenu(getControl().getParent());
447
    	return aMenu;
448
    }
449
436
    public String toString() {
450
    public String toString() {
437
451
438
        return getClass().getName() + "@" + Integer.toHexString(hashCode()); //$NON-NLS-1$
452
        return getClass().getName() + "@" + Integer.toHexString(hashCode()); //$NON-NLS-1$
(-)Eclipse UI/org/eclipse/ui/internal/PerspectiveSwitcher.java (-7 / +7 lines)
Lines 33-38 Link Here
33
import org.eclipse.swt.events.ControlEvent;
33
import org.eclipse.swt.events.ControlEvent;
34
import org.eclipse.swt.events.DisposeEvent;
34
import org.eclipse.swt.events.DisposeEvent;
35
import org.eclipse.swt.events.DisposeListener;
35
import org.eclipse.swt.events.DisposeListener;
36
import org.eclipse.swt.events.MenuDetectEvent;
37
import org.eclipse.swt.events.MenuDetectListener;
36
import org.eclipse.swt.events.SelectionAdapter;
38
import org.eclipse.swt.events.SelectionAdapter;
37
import org.eclipse.swt.events.SelectionEvent;
39
import org.eclipse.swt.events.SelectionEvent;
38
import org.eclipse.swt.events.SelectionListener;
40
import org.eclipse.swt.events.SelectionListener;
Lines 771-783 Link Here
771
            }
773
            }
772
        });
774
        });
773
775
774
        coolItem.addSelectionListener(new SelectionAdapter() {
776
        coolItem.addMenuDetectListener(new MenuDetectListener() {
775
            public void widgetSelected(SelectionEvent e) {
777
        	public void menuDetected(MenuDetectEvent e) {
776
                if (e.detail == SWT.ARROW) {
778
        		if (perspectiveBar != null) {
777
                    if (perspectiveBar != null) {
779
        			coolItem.setMenu(perspectiveBar.handleChevron(e));
778
                        perspectiveBar.handleChevron(e);
780
        		}
779
                    }
780
                }
781
            }
781
            }
782
        });
782
        });
783
        coolItem.setMinimumSize(0, 0);
783
        coolItem.setMinimumSize(0, 0);
(-)Eclipse UI/org/eclipse/ui/internal/PerspectiveBarManager.java (-5 / +7 lines)
Lines 13-18 Link Here
13
import org.eclipse.jface.action.IContributionItem;
13
import org.eclipse.jface.action.IContributionItem;
14
import org.eclipse.jface.action.ToolBarManager;
14
import org.eclipse.jface.action.ToolBarManager;
15
import org.eclipse.swt.SWT;
15
import org.eclipse.swt.SWT;
16
import org.eclipse.swt.events.MenuDetectEvent;
16
import org.eclipse.swt.events.SelectionAdapter;
17
import org.eclipse.swt.events.SelectionAdapter;
17
import org.eclipse.swt.events.SelectionEvent;
18
import org.eclipse.swt.events.SelectionEvent;
18
import org.eclipse.swt.graphics.Point;
19
import org.eclipse.swt.graphics.Point;
Lines 44-55 Link Here
44
    private CoolBar coolBar;
45
    private CoolBar coolBar;
45
    private Menu chevronMenu = null;
46
    private Menu chevronMenu = null;
46
    
47
    
47
    public void handleChevron(SelectionEvent event) {
48
    public Menu handleChevron(MenuDetectEvent event) {
48
        CoolItem item = (CoolItem) event.widget;
49
        CoolItem item = (CoolItem) event.widget;
49
        //ToolBar toolbar = (ToolBar)getControl();
50
        //ToolBar toolbar = (ToolBar)getControl();
50
        Control control = getControl();
51
        Control control = getControl();
51
        if (!(control instanceof ToolBar)) {
52
        if (!(control instanceof ToolBar)) {
52
			return; // currently we only deal with toolbar items
53
			return null; // currently we only deal with toolbar items
53
		}
54
		}
54
        /* Retrieve the current bounding rectangle for the selected cool item. */
55
        /* Retrieve the current bounding rectangle for the selected cool item. */
55
        Rectangle itemBounds = item.getBounds();
56
        Rectangle itemBounds = item.getBounds();
Lines 134-142 Link Here
134
         * coordinates in order to pass them to Menu.setLocation (i.e. was
135
         * coordinates in order to pass them to Menu.setLocation (i.e. was
135
         * relative to CoolBar).
136
         * relative to CoolBar).
136
         */
137
         */
137
        pt = coolBar.toDisplay(new Point(event.x, event.y));
138
        return chevronMenu;
138
        chevronMenu.setLocation(pt.x, pt.y);
139
//        pt = coolBar.toDisplay(new Point(event.x, event.y));
139
        chevronMenu.setVisible(true);
140
//        chevronMenu.setLocation(pt.x, pt.y);
141
//        chevronMenu.setVisible(true);
140
    }
142
    }
141
143
142
    /* (non-Javadoc)
144
    /* (non-Javadoc)
(-)Eclipse UI/org/eclipse/ui/internal/presentations/defaultpresentation/DefaultTabFolder.java (-8 / +24 lines)
Lines 16-23 Link Here
16
import org.eclipse.swt.custom.CTabFolder;
16
import org.eclipse.swt.custom.CTabFolder;
17
import org.eclipse.swt.custom.CTabFolderEvent;
17
import org.eclipse.swt.custom.CTabFolderEvent;
18
import org.eclipse.swt.custom.CTabItem;
18
import org.eclipse.swt.custom.CTabItem;
19
import org.eclipse.swt.events.MouseAdapter;
19
import org.eclipse.swt.events.MenuDetectEvent;
20
import org.eclipse.swt.events.MouseEvent;
20
import org.eclipse.swt.events.MenuDetectListener;
21
import org.eclipse.swt.events.SelectionAdapter;
21
import org.eclipse.swt.events.SelectionAdapter;
22
import org.eclipse.swt.events.SelectionEvent;
22
import org.eclipse.swt.events.SelectionEvent;
23
import org.eclipse.swt.graphics.Font;
23
import org.eclipse.swt.graphics.Font;
Lines 30-35 Link Here
30
import org.eclipse.swt.widgets.Event;
30
import org.eclipse.swt.widgets.Event;
31
import org.eclipse.swt.widgets.Label;
31
import org.eclipse.swt.widgets.Label;
32
import org.eclipse.swt.widgets.Listener;
32
import org.eclipse.swt.widgets.Listener;
33
import org.eclipse.swt.widgets.Menu;
33
import org.eclipse.swt.widgets.ToolBar;
34
import org.eclipse.swt.widgets.ToolBar;
34
import org.eclipse.swt.widgets.ToolItem;
35
import org.eclipse.swt.widgets.ToolItem;
35
import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
36
import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
Lines 38-43 Link Here
38
import org.eclipse.ui.internal.dnd.DragUtil;
39
import org.eclipse.ui.internal.dnd.DragUtil;
39
import org.eclipse.ui.internal.presentations.PaneFolder;
40
import org.eclipse.ui.internal.presentations.PaneFolder;
40
import org.eclipse.ui.internal.presentations.PaneFolderButtonListener;
41
import org.eclipse.ui.internal.presentations.PaneFolderButtonListener;
42
import org.eclipse.ui.internal.presentations.PresentablePart;
41
import org.eclipse.ui.internal.presentations.util.AbstractTabFolder;
43
import org.eclipse.ui.internal.presentations.util.AbstractTabFolder;
42
import org.eclipse.ui.internal.presentations.util.AbstractTabItem;
44
import org.eclipse.ui.internal.presentations.util.AbstractTabItem;
43
import org.eclipse.ui.internal.presentations.util.PartInfo;
45
import org.eclipse.ui.internal.presentations.util.PartInfo;
Lines 113-129 Link Here
113
            ToolBar actualToolBar = new ToolBar(paneFolder.getControl(), SWT.FLAT | SWT.NO_BACKGROUND);
115
            ToolBar actualToolBar = new ToolBar(paneFolder.getControl(), SWT.FLAT | SWT.NO_BACKGROUND);
114
            viewToolBar = actualToolBar;
116
            viewToolBar = actualToolBar;
115
            
117
            
116
	        ToolItem pullDownButton = new ToolItem(actualToolBar, SWT.PUSH);
118
	        final ToolItem pullDownButton = new ToolItem(actualToolBar, SWT.PUSH);
117
	        Image hoverImage = WorkbenchImages
119
	        Image hoverImage = WorkbenchImages
118
	                .getImage(IWorkbenchGraphicConstants.IMG_LCL_RENDERED_VIEW_MENU);
120
	                .getImage(IWorkbenchGraphicConstants.IMG_LCL_RENDERED_VIEW_MENU);
119
	        pullDownButton.setDisabledImage(hoverImage);
121
	        pullDownButton.setDisabledImage(hoverImage);
120
	        pullDownButton.setImage(hoverImage);
122
	        pullDownButton.setImage(hoverImage);
121
	        pullDownButton.setToolTipText(WorkbenchMessages.Menu); 
123
	        pullDownButton.setToolTipText(WorkbenchMessages.Menu); 
122
            actualToolBar.addMouseListener(new MouseAdapter() {
124
//            actualToolBar.addMouseListener(new MouseAdapter() {
123
                public void mouseDown(MouseEvent e) {
125
//                public void mouseDown(MouseEvent e) {
124
                    fireEvent(TabFolderEvent.EVENT_PANE_MENU, getSelection(), getPaneMenuLocation());
126
//                    fireEvent(TabFolderEvent.EVENT_PANE_MENU, getSelection(), getPaneMenuLocation());
125
                }
127
//                }
126
            });
128
//            });
129
			pullDownButton.addMenuDetectListener(new MenuDetectListener() {
130
				public void menuDetected(MenuDetectEvent e) {
131
					Menu menu = null;
132
					Object data = getSelection().getData();
133
					if (data instanceof PresentablePart) {
134
						PresentablePart part = (PresentablePart) data;
135
						part.setFocus();
136
						if (part.getMenu() != null) {
137
							menu = part.getMenu().getMenu();
138
						}
139
					}
140
					pullDownButton.setMenu(menu);
141
				}
142
			});
127
            pullDownButton.addSelectionListener(new SelectionAdapter() {
143
            pullDownButton.addSelectionListener(new SelectionAdapter() {
128
            	public void widgetSelected(SelectionEvent e) {
144
            	public void widgetSelected(SelectionEvent e) {
129
                    fireEvent(TabFolderEvent.EVENT_PANE_MENU, getSelection(), getPaneMenuLocation());
145
                    fireEvent(TabFolderEvent.EVENT_PANE_MENU, getSelection(), getPaneMenuLocation());
(-)Eclipse UI/org/eclipse/ui/presentations/IPartMenu.java (+4 lines)
Lines 11-16 Link Here
11
package org.eclipse.ui.presentations;
11
package org.eclipse.ui.presentations;
12
12
13
import org.eclipse.swt.graphics.Point;
13
import org.eclipse.swt.graphics.Point;
14
import org.eclipse.swt.widgets.Menu;
14
15
15
/**
16
/**
16
 * Interface to a menu created by a part that will be displayed in a presentation.
17
 * Interface to a menu created by a part that will be displayed in a presentation.
Lines 27-30 Link Here
27
     * @since 3.0
28
     * @since 3.0
28
     */
29
     */
29
    public void showMenu(Point location);
30
    public void showMenu(Point location);
31
32
    public Menu getMenu();
33
30
}
34
}
(-)Eclipse UI/org/eclipse/ui/internal/presentations/PresentablePart.java (+4 lines)
Lines 22-27 Link Here
22
import org.eclipse.swt.graphics.Rectangle;
22
import org.eclipse.swt.graphics.Rectangle;
23
import org.eclipse.swt.widgets.Composite;
23
import org.eclipse.swt.widgets.Composite;
24
import org.eclipse.swt.widgets.Control;
24
import org.eclipse.swt.widgets.Control;
25
import org.eclipse.swt.widgets.Menu;
25
import org.eclipse.ui.IPropertyListener;
26
import org.eclipse.ui.IPropertyListener;
26
import org.eclipse.ui.ISharedImages;
27
import org.eclipse.ui.ISharedImages;
27
import org.eclipse.ui.PlatformUI;
28
import org.eclipse.ui.PlatformUI;
Lines 312-317 Link Here
312
                public void showMenu(Point location) {
313
                public void showMenu(Point location) {
313
                    part.showViewMenu(location);
314
                    part.showViewMenu(location);
314
                }
315
                }
316
                public Menu getMenu() {
317
                	return part.getViewMenu();
318
                }
315
            };
319
            };
316
        }
320
        }
317
321

Return to bug 193318