### Eclipse Workspace Patch 1.0 #P org.eclipse.jface Index: src/org/eclipse/jface/messages.properties =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jface/src/org/eclipse/jface/messages.properties,v retrieving revision 1.21 diff -u -r1.21 messages.properties --- src/org/eclipse/jface/messages.properties 7 Jul 2006 01:18:01 -0000 1.21 +++ src/org/eclipse/jface/messages.properties 8 Feb 2007 17:39:44 -0000 @@ -118,6 +118,7 @@ PopupDialog.move = &Move PopupDialog.persistBounds = R&emember Size and Location PopupDialog.menuTooltip = Menu +Dialog.restoreDialogSize = &Restore preferred dialog size ############################################################ Index: src/org/eclipse/jface/dialogs/Dialog.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jface/src/org/eclipse/jface/dialogs/Dialog.java,v retrieving revision 1.59 diff -u -r1.59 Dialog.java --- src/org/eclipse/jface/dialogs/Dialog.java 8 Sep 2006 19:23:36 -0000 1.59 +++ src/org/eclipse/jface/dialogs/Dialog.java 8 Feb 2007 17:39:45 -0000 @@ -16,15 +16,14 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.util.Policy; import org.eclipse.jface.window.IShellProvider; import org.eclipse.jface.window.SameShellProvider; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; -import org.eclipse.swt.events.MouseAdapter; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Font; @@ -41,6 +40,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Shell; /** @@ -206,18 +206,6 @@ public Control buttonBar; /** - * A mouse listener that can be used to restore the default size - * of a dialog. - * - * @since 3.2 - */ - private MouseListener restoreSizeMouseListener = new MouseAdapter() { - public void mouseDoubleClick(MouseEvent event) { - restoreDialogToComputedSize(); - } - }; - - /** * Collection of buttons created by the createButton method. */ private HashMap buttons = new HashMap(); @@ -996,8 +984,6 @@ saveDialogBounds(getShell()); } - removeRestoreSizeMouseListeners(); - boolean returnValue = super.close(); if (returnValue) { buttons = new HashMap(); @@ -1111,10 +1097,9 @@ super.create(); applyDialogFont(buttonBar); - // Register a mouse listener so that the user can restore this - // size with a double-click. + // Register a context menu so that the user can restore the dialog size. // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=116906 - addRestoreSizeMouseListeners(); + addRestoreSizeMenus(); } /** @@ -1306,14 +1291,14 @@ } /** - * Add mouse listeners as needed to provide dialog size restore - * behavior. Double-clicking in unused areas will restore + * Add context menus as needed to provide dialog size restore + * behavior. The context menu in unused areas will allow to restore * the dialog size. * - * @since 3.2 + * @since 3.3 */ - private void addRestoreSizeMouseListeners() { - // Hook a double click event for restoring the dialog's computed + private void addRestoreSizeMenus() { + // Hook context menus for restoring the dialog's computed // size. We hook onto the button bar and the contents, and any // nested composites in between, in order to accomodate different // layout and construction styles. @@ -1322,78 +1307,55 @@ // Hook onto the button bar composite and // any nested composites within the button bar. // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=137315 - addRestoreSizeMouseListenerToComposites(buttonBar); + addRestoreSizeMenuToComposites(buttonBar); // Hook onto any nested composites between the button bar // and the contents. Control control = buttonBar.getParent(); while (control != dialogContents && control != null) { if (control.getClass() == Composite.class) { - control.addMouseListener(restoreSizeMouseListener); + hookRestoreSizeContextMenu(control); } control = control.getParent(); } } if (dialogContents != null) { - dialogContents.addMouseListener(restoreSizeMouseListener); - } - } - - /** - * Add mouse listeners to the specified control if it is a composite, - * and any child composites. Called recursively. - * - * @since 3.2 - */ - private void addRestoreSizeMouseListenerToComposites(Control control) { - // Check explicitly for instances of Composite, not instances of - // subclasses of composite. - // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=140306 - if (control.getClass() == Composite.class) { - control.addMouseListener(restoreSizeMouseListener); - Control [] children = ((Composite)control).getChildren(); - for (int i=0; i