/*=============================================================================# # Copyright (c) 2000-2016 IBM Corporation and others. # 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: # IBM Corporation - initial API and implementation #=============================================================================*/ package de.walware.ecommons.text.ui; import org.eclipse.jface.action.Action; import org.eclipse.jface.text.ITextOperationTarget; import org.eclipse.jface.text.ITextViewer; import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.texteditor.IUpdate; import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds; import de.walware.ecommons.ui.SharedMessages; /** * Common function for actions that operate on a text viewer. * <p> * Clients may subclass this class.</p> * * TODO replace with handler implementation */ public class TextViewerAction extends Action implements IUpdate { private final ITextOperationTarget fOperationTarget; private final int fOperationCode; /** * Constructs a new action in the given text viewer with * the specified operation code. * * @param viewer * @param operationCode */ public TextViewerAction(final ITextViewer viewer, final int operationCode) { assert (viewer != null); assert (operationCode != -1); fOperationCode = operationCode; fOperationTarget = viewer.getTextOperationTarget(); update(); } @Override public void update() { setEnabled(fOperationTarget.canDoOperation(fOperationCode)); } @Override public void run() { if (fOperationTarget.canDoOperation(fOperationCode)) { fOperationTarget.doOperation(fOperationCode); } } public static TextViewerAction createDeleteAction(final ITextViewer viewer) { final TextViewerAction action = new TextViewerAction(viewer, ITextOperationTarget.DELETE); action.setId(ActionFactory.DELETE.getId()); action.setActionDefinitionId(IWorkbenchActionDefinitionIds.DELETE); action.setText(SharedMessages.DeleteAction_name); action.setToolTipText(SharedMessages.DeleteAction_tooltip); return action; } public static TextViewerAction createCutAction(final ITextViewer viewer) { final TextViewerAction action = new TextViewerAction(viewer, ITextOperationTarget.CUT); action.setId(ActionFactory.CUT.getId()); action.setActionDefinitionId(IWorkbenchActionDefinitionIds.CUT); action.setText(SharedMessages.CutAction_name); action.setToolTipText(SharedMessages.CutAction_tooltip); return action; } public static TextViewerAction createCopyAction(final ITextViewer viewer) { final TextViewerAction action = new TextViewerAction(viewer, ITextOperationTarget.COPY); action.setId(ActionFactory.COPY.getId()); action.setActionDefinitionId(IWorkbenchActionDefinitionIds.COPY); action.setText(SharedMessages.CopyAction_name); action.setToolTipText(SharedMessages.CopyAction_tooltip); return action; } public static TextViewerAction createPasteAction(final ITextViewer viewer) { final TextViewerAction action = new TextViewerAction(viewer, ITextOperationTarget.PASTE); action.setId(ActionFactory.PASTE.getId()); action.setActionDefinitionId(IWorkbenchActionDefinitionIds.PASTE); action.setText(SharedMessages.PasteAction_name); action.setToolTipText(SharedMessages.PasteAction_tooltip); return action; } public static TextViewerAction createSelectAllAction(final ITextViewer viewer) { final TextViewerAction action = new TextViewerAction(viewer, ITextOperationTarget.SELECT_ALL); action.setId(ActionFactory.SELECT_ALL.getId()); action.setActionDefinitionId(IWorkbenchActionDefinitionIds.SELECT_ALL); action.setText(SharedMessages.SelectAllAction_name); action.setToolTipText(SharedMessages.SelectAllAction_tooltip); return action; } public static TextViewerAction createUndoAction(final ITextViewer viewer) { final TextViewerAction action = new TextViewerAction(viewer, ITextOperationTarget.UNDO); action.setId(ActionFactory.UNDO.getId()); action.setActionDefinitionId(IWorkbenchActionDefinitionIds.UNDO); action.setText(SharedMessages.UndoAction_name); action.setToolTipText(SharedMessages.UndoAction_tooltip); return action; } public static TextViewerAction createRedoAction(final ITextViewer viewer) { final TextViewerAction action = new TextViewerAction(viewer, ITextOperationTarget.REDO); action.setId(ActionFactory.REDO.getId()); action.setActionDefinitionId(IWorkbenchActionDefinitionIds.REDO); action.setText(SharedMessages.RedoAction_name); action.setToolTipText(SharedMessages.RedoAction_tooltip); return action; } }