summaryrefslogtreecommitdiff
path: root/propertysheet/src/org/eclipse/wb/internal/core/utils/binding/editors/controls/AbstractControlActionsManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'propertysheet/src/org/eclipse/wb/internal/core/utils/binding/editors/controls/AbstractControlActionsManager.java')
-rw-r--r--propertysheet/src/org/eclipse/wb/internal/core/utils/binding/editors/controls/AbstractControlActionsManager.java174
1 files changed, 0 insertions, 174 deletions
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/utils/binding/editors/controls/AbstractControlActionsManager.java b/propertysheet/src/org/eclipse/wb/internal/core/utils/binding/editors/controls/AbstractControlActionsManager.java
deleted file mode 100644
index 155b55c..0000000
--- a/propertysheet/src/org/eclipse/wb/internal/core/utils/binding/editors/controls/AbstractControlActionsManager.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Google, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Google, Inc. - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wb.internal.core.utils.binding.editors.controls;
-
-import com.google.common.collect.Lists;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IHandler;
-import org.eclipse.core.expressions.EvaluationResult;
-import org.eclipse.core.expressions.Expression;
-import org.eclipse.core.expressions.ExpressionInfo;
-import org.eclipse.core.expressions.IEvaluationContext;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.ISources;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.IHandlerActivation;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
-
-import java.util.List;
-
-/**
- * Manager for installing/unistalling global handlers for {@link Control} actions commands.
- *
- * @author sablin_aa
- * @author mitin_aa
- */
-public abstract class AbstractControlActionsManager {
- @SuppressWarnings("deprecation")
- protected final Object[] COMMAND_HANDLER_IDS = new Object[]{
- IWorkbenchActionDefinitionIds.COPY,
- IWorkbenchActionDefinitionIds.CUT,
- IWorkbenchActionDefinitionIds.PASTE,
- IWorkbenchActionDefinitionIds.DELETE,
- IWorkbenchActionDefinitionIds.SELECT_ALL,
- IWorkbenchActionDefinitionIds.UNDO,
- IWorkbenchActionDefinitionIds.REDO};
- ////////////////////////////////////////////////////////////////////////////
- //
- // Constructor
- //
- ////////////////////////////////////////////////////////////////////////////
- protected final Control m_control;
- private boolean m_active = false;
-
- public AbstractControlActionsManager(final Control control) {
- m_control = control;
- m_control.addFocusListener(new FocusListener() {
- @Override
- public void focusGained(FocusEvent e) {
- activateHandlers();
- m_active = true;
- }
-
- @Override
- public void focusLost(FocusEvent e) {
- deactivateHandlers();
- m_active = false;
- }
- });
- m_control.addDisposeListener(new DisposeListener() {
- @Override
- public void widgetDisposed(DisposeEvent e) {
- if (m_active) {
- // deactivate on dispose
- deactivateHandlers();
- }
- }
- });
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Handlers
- //
- ////////////////////////////////////////////////////////////////////////////
- protected static final IHandler EMPTY_HANDLER = new AbstractHandler() {
- @Override
- public Object execute(ExecutionEvent event) throws ExecutionException {
- // do nothing
- return null;
- }
-
- @Override
- public boolean isEnabled() {
- // of course, it is enabled ;)
- return true;
- }
-
- @Override
- public boolean isHandled() {
- // we do not handle the actions; since action not handled, its' underlying SWT event
- // would not be filtered by workbench, so it get a chance to be handled by SWT code
- // or to be passed to the OS; see WorkbenchKeyboard.press() method.
- return false;
- }
- };
-
- /**
- * @returns the global handler service.
- */
- public static IHandlerService getHandlerService() {
- return (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);
- }
-
- /**
- * Activates the handlers for list of commands (see COMMAND_HANDLERS) with:<br>
- * 1. The empty handler (except 'selectAll'), so underlying SWT event wouldn't be filtered by the
- * workbench;<br>
- * 2. Highest priority {@link Expression}, so this handler has a chance to be set.
- */
- protected void activateHandlers() {
- IHandlerService service = getHandlerService();
- for (int i = 0; i < COMMAND_HANDLER_IDS.length; ++i) {
- String actionName = (String) COMMAND_HANDLER_IDS[i];
- IHandler handler = getHandlerFor(actionName);
- activateHandler(actionName, service, handler, new Expression() {
- @Override
- public EvaluationResult evaluate(IEvaluationContext context) throws CoreException {
- return EvaluationResult.TRUE;
- }
-
- @Override
- public void collectExpressionInfo(ExpressionInfo info) {
- // get the highest priority
- // note, if someone else has such priority, there will be key-binding conflicts logged.
- info.markSystemPropertyAccessed();
- info.markDefaultVariableAccessed();
- info.addVariableNameAccess(ISources.ACTIVE_MENU_NAME);
- }
- });
- }
- }
-
- protected IHandler getHandlerFor(String actionName) {
- return EMPTY_HANDLER;
- }
-
- /**
- * Activates handler and stores it into a collection for further deactivation.
- */
- private final List<IHandlerActivation> m_activations = Lists.newLinkedList();
-
- private void activateHandler(String actionName,
- IHandlerService service,
- IHandler handler,
- Expression highPriorityExpression) {
- // activate handler and store it into a collection for further deactivation
- m_activations.add(service.activateHandler(actionName, handler, highPriorityExpression));
- }
-
- /**
- * Deactivates all handlers and clears handlers collection.
- */
- protected void deactivateHandlers() {
- getHandlerService().deactivateHandlers(m_activations);
- m_activations.clear();
- }
-}