01: /*******************************************************************************
02: * Copyright (c) 2000, 2005 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.ui.console.actions;
11:
12: import org.eclipse.jface.action.Action;
13: import org.eclipse.jface.text.ITextOperationTarget;
14: import org.eclipse.jface.text.ITextViewer;
15: import org.eclipse.ui.texteditor.IUpdate;
16:
17: /**
18: * Common function for actions that operate on a text viewer.
19: * <p>
20: * Clients may subclass this class.
21: * </p>
22: * @since 3.0
23: */
24: public class TextViewerAction extends Action implements IUpdate {
25:
26: private int fOperationCode = -1;
27: private ITextOperationTarget fOperationTarget;
28:
29: /**
30: * Constructs a new action in the given text viewer with
31: * the specified operation code.
32: *
33: * @param viewer
34: * @param operationCode
35: */
36: public TextViewerAction(ITextViewer viewer, int operationCode) {
37: fOperationCode = operationCode;
38: fOperationTarget = viewer.getTextOperationTarget();
39: update();
40: }
41:
42: /* (non-Javadoc)
43: * @see org.eclipse.ui.texteditor.IUpdate#update()
44: *
45: * Updates the enabled state of the action.
46: * Fires a property change if the enabled state changes.
47: *
48: * @see org.eclipse.jface.action.Action#firePropertyChange(String, Object, Object)
49: */
50: public void update() {
51:
52: boolean wasEnabled = isEnabled();
53: boolean isEnabled = (fOperationTarget != null && fOperationTarget
54: .canDoOperation(fOperationCode));
55: setEnabled(isEnabled);
56:
57: if (wasEnabled != isEnabled) {
58: firePropertyChange(ENABLED, wasEnabled ? Boolean.TRUE
59: : Boolean.FALSE, isEnabled ? Boolean.TRUE
60: : Boolean.FALSE);
61: }
62: }
63:
64: /* (non-Javadoc)
65: * @see org.eclipse.jface.action.IAction#run()
66: */
67: public void run() {
68: if (fOperationCode != -1 && fOperationTarget != null) {
69: fOperationTarget.doOperation(fOperationCode);
70: }
71: }
72:
73: /**
74: * Configures this action with a label, tool tip, and description.
75: *
76: * @param text action label
77: * @param toolTipText action tool tip
78: * @param description action description
79: */
80: public void configureAction(String text, String toolTipText,
81: String description) {
82: setText(text);
83: setToolTipText(toolTipText);
84: setDescription(description);
85: }
86: }
|