Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java58
1 files changed, 33 insertions, 25 deletions
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java
index 6c6a2c1ba80..6d4cd6d57f7 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessHandler.java
@@ -7,14 +7,17 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * René Brandstetter - Bug 431707 - [QuickAccess] Quick Access should open a dialog if hidden
*******************************************************************************/
package org.eclipse.ui.internal.quickaccess;
import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
import org.eclipse.e4.ui.model.application.ui.menu.MToolControl;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.jface.dialogs.PopupDialog;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.handlers.HandlerUtil;
@@ -27,18 +30,9 @@ import org.eclipse.ui.internal.WorkbenchWindow;
*/
public class QuickAccessHandler extends AbstractHandler {
- private IWorkbenchWindow window;
-
- /**
- * The constructor.
- */
- public QuickAccessHandler() {
- }
-
@Override
public Object execute(ExecutionEvent executionEvent) {
-
- window = HandlerUtil.getActiveWorkbenchWindow(executionEvent);
+ final IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(executionEvent);
if (window == null) {
return null;
}
@@ -46,23 +40,37 @@ public class QuickAccessHandler extends AbstractHandler {
MWindow mWindow = ((WorkbenchWindow) window).getModel();
EModelService modelService = mWindow.getContext().get(EModelService.class);
MToolControl searchField = (MToolControl) modelService.find("SearchField", mWindow); //$NON-NLS-1$
- if (searchField == null) {
- return null;
- }
- Control control = (Control) searchField.getWidget();
- if (!((WorkbenchWindow) window).isToolbarVisible()) {
- ((WorkbenchWindow) window).toggleToolbarVisibility();
- control = (Control) searchField.getWidget();
- }
- // the workbench configurer may override visibility; if so, focus should
- // not change
- if (((WorkbenchWindow) window).isToolbarVisible() && control != null) {
- Control previousFocusControl = control.getDisplay().getFocusControl();
- control.setFocus();
- SearchField field = (SearchField) searchField.getObject();
- field.activate(previousFocusControl);
+ if (searchField != null && searchField.isVisible()) {
+ Control control = (Control) searchField.getWidget();
+ // the workbench configurer may override visibility; if so,
+ // focus should not change
+ if (control != null && control.isVisible()) {
+ Control previousFocusControl = control.getDisplay().getFocusControl();
+ control.setFocus();
+ SearchField field = (SearchField) searchField.getObject();
+ field.activate(previousFocusControl);
+ return null;
+ }
}
+
+ // open the original/legacy QuickAccess Dialog if the toolbars are
+ // hidden or if the search field isn't available (maybe because the
+ // dialog is explicitly wanted)
+ displayQuickAccessDialog(window, executionEvent.getCommand());
return null;
}
+ /**
+ * Utility method to displays the original/legacy QuickAccess dialog.
+ *
+ * @param window
+ * the active workbench window
+ * @param command
+ * the command which invokes the open of the dialog
+ */
+ private static void displayQuickAccessDialog(IWorkbenchWindow window, Command command) {
+ PopupDialog popupDialog = new QuickAccessDialog(window, command);
+ popupDialog.open();
+ }
+
} \ No newline at end of file

Back to the top