blob: d94636e0620976b3c29ef807a55fae68bed0221f [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2000, 2020 IBM Corporation and others.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0.
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# IBM Corporation - org.eclipse.jdt: initial API and implementation
# Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
#=============================================================================*/
package org.eclipse.statet.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 org.eclipse.statet.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);
this.fOperationCode= operationCode;
this.fOperationTarget= viewer.getTextOperationTarget();
update();
}
@Override
public void update() {
setEnabled(this.fOperationTarget.canDoOperation(this.fOperationCode));
}
@Override
public void run() {
if (this.fOperationTarget.canDoOperation(this.fOperationCode)) {
this.fOperationTarget.doOperation(this.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;
}
}