### 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