blob: 58c466a39a12c5e68cb61787661f326ec3a62829 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2005 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 org.eclipse.ui.examples.readmetool;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.LabelRetargetAction;
import org.eclipse.ui.actions.RetargetAction;
import org.eclipse.ui.texteditor.BasicTextEditorActionContributor;
/**
* This class demonstrates action contribution for the readme editor.
* A number of menu, toolbar, and status line contributions are defined
* in the workbench window. These actions are shared among all
* readme editors, and are only visible when a readme editor is
* active. Otherwise, they are invisible.
*/
public class ReadmeEditorActionBarContributor extends
BasicTextEditorActionContributor {
private EditorAction action1;
private RetargetAction action2;
private LabelRetargetAction action3;
private EditorAction handler2;
private EditorAction handler3;
private EditorAction handler4;
private EditorAction handler5;
private DirtyStateContribution dirtyStateContribution;
class EditorAction extends Action {
private Shell shell;
private IEditorPart activeEditor;
public EditorAction(String label) {
super(label);
}
public void setShell(Shell shell) {
this.shell = shell;
}
public void run() {
String editorName = MessageUtil.getString("Empty_Editor_Name"); //$NON-NLS-1$
if (activeEditor != null)
editorName = activeEditor.getTitle();
MessageDialog
.openInformation(
shell,
MessageUtil.getString("Readme_Editor"), //$NON-NLS-1$
MessageUtil
.format(
"ReadmeEditorActionExecuted", new Object[] { getText(), editorName })); //$NON-NLS-1$
}
public void setActiveEditor(IEditorPart part) {
activeEditor = part;
}
}
/**
* Creates a new ReadmeEditorActionBarContributor.
*/
public ReadmeEditorActionBarContributor() {
action1 = new EditorAction(MessageUtil.getString("Editor_Action1")); //$NON-NLS-1$
action1.setToolTipText(MessageUtil.getString("Readme_Editor_Action1")); //$NON-NLS-1$
action1
.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE_DISABLE);
action1.setImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE_ENABLE);
action1.setHoverImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE);
PlatformUI.getWorkbench().getHelpSystem().setHelp(action1, IReadmeConstants.EDITOR_ACTION1_CONTEXT);
action2 = new RetargetAction(IReadmeConstants.RETARGET2, MessageUtil
.getString("Editor_Action2")); //$NON-NLS-1$
action2.setToolTipText(MessageUtil.getString("Readme_Editor_Action2")); //$NON-NLS-1$
action2
.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE_DISABLE);
action2.setImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE_ENABLE);
action2.setHoverImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE);
action3 = new LabelRetargetAction(IReadmeConstants.LABELRETARGET3,
MessageUtil.getString("Editor_Action3")); //$NON-NLS-1$
action3
.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE_DISABLE);
action3.setImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE_ENABLE);
action3.setHoverImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE);
handler2 = new EditorAction(MessageUtil.getString("Editor_Action2")); //$NON-NLS-1$
PlatformUI.getWorkbench().getHelpSystem().setHelp(action2, IReadmeConstants.EDITOR_ACTION2_CONTEXT);
handler3 = new EditorAction(MessageUtil.getString("Editor_Action3")); //$NON-NLS-1$
handler3.setToolTipText(MessageUtil.getString("Readme_Editor_Action3")); //$NON-NLS-1$
PlatformUI.getWorkbench().getHelpSystem().setHelp(action3, IReadmeConstants.EDITOR_ACTION3_CONTEXT);
handler4 = new EditorAction(MessageUtil.getString("Editor_Action4")); //$NON-NLS-1$
handler5 = new EditorAction(MessageUtil.getString("Editor_Action5")); //$NON-NLS-1$
handler5.setToolTipText(MessageUtil.getString("Readme_Editor_Action5")); //$NON-NLS-1$
dirtyStateContribution = new DirtyStateContribution();
}
/** (non-Javadoc)
* Method declared on EditorActionBarContributor
*/
public void contributeToMenu(IMenuManager menuManager) {
// Run super.
super.contributeToMenu(menuManager);
// Editor-specitic menu
MenuManager readmeMenu = new MenuManager(MessageUtil
.getString("Readme_Menu")); //$NON-NLS-1$
// It is important to append the menu to the
// group "additions". This group is created
// between "Project" and "Tools" menus
// for this purpose.
menuManager.insertAfter("additions", readmeMenu); //$NON-NLS-1$
readmeMenu.add(action1);
readmeMenu.add(action2);
readmeMenu.add(action3);
}
/** (non-Javadoc)
* Method declared on EditorActionBarContributor
*/
public void contributeToStatusLine(IStatusLineManager statusLineManager) {
// Run super.
super.contributeToStatusLine(statusLineManager);
// Test status line.
statusLineManager.setMessage(MessageUtil.getString("Editor_is_active")); //$NON-NLS-1$
statusLineManager.add(dirtyStateContribution);
}
/** (non-Javadoc)
* Method declared on EditorActionBarContributor
*/
public void contributeToToolBar(IToolBarManager toolBarManager) {
// Run super.
super.contributeToToolBar(toolBarManager);
// Add toolbar stuff.
toolBarManager.add(new Separator("ReadmeEditor")); //$NON-NLS-1$
toolBarManager.add(action1);
toolBarManager.add(action2);
toolBarManager.add(action3);
}
/** (non-Javadoc)
* Method declared on IEditorActionBarContributor
*/
public void dispose() {
// Remove retarget actions as page listeners
getPage().removePartListener(action2);
getPage().removePartListener(action3);
}
/** (non-Javadoc)
* Method declared on IEditorActionBarContributor
*/
public void init(IActionBars bars, IWorkbenchPage page) {
super.init(bars, page);
bars.setGlobalActionHandler(IReadmeConstants.RETARGET2, handler2);
bars.setGlobalActionHandler(IReadmeConstants.LABELRETARGET3, handler3);
bars.setGlobalActionHandler(IReadmeConstants.ACTION_SET_RETARGET4,
handler4);
bars.setGlobalActionHandler(IReadmeConstants.ACTION_SET_LABELRETARGET5,
handler5);
// Hook retarget actions as page listeners
page.addPartListener(action2);
page.addPartListener(action3);
IWorkbenchPart activePart = page.getActivePart();
if (activePart != null) {
action2.partActivated(activePart);
action3.partActivated(activePart);
}
}
/** (non-Javadoc)
* Method declared on IEditorActionBarContributor
*/
public void setActiveEditor(IEditorPart editor) {
// Run super.
super.setActiveEditor(editor);
// Target shared actions to new editor
action1.setActiveEditor(editor);
handler2.setActiveEditor(editor);
handler3.setActiveEditor(editor);
handler4.setActiveEditor(editor);
handler5.setActiveEditor(editor);
dirtyStateContribution.editorChanged(editor);
}
}