/*******************************************************************************
* Copyright (c) 2007 IBM Corporation.
* 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:
* Robert Fuhrer (rfuhrer@watson.ibm.com) - initial API and implementation
*******************************************************************************/
package org.eclipse.imp.editor;
import java.util.ResourceBundle;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.texteditor.BasicTextEditorActionContributor;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
import org.eclipse.ui.texteditor.RetargetTextEditorAction;
public class TextEditorActionContributor extends BasicTextEditorActionContributor {
private GotoAnnotationAction fNextAnnotation;
private GotoAnnotationAction fPreviousAnnotation;
private RetargetTextEditorAction fShowOutline;
private GotoNextTargetAction fNextTarget;
private GotoPreviousTargetAction fPreviousTarget;
private SelectEnclosingAction fSelectEnclosing;
public TextEditorActionContributor() {
super();
fPreviousAnnotation= new GotoAnnotationAction("PreviousAnnotation.", false); //$NON-NLS-1$
fNextAnnotation= new GotoAnnotationAction("NextAnnotation.", true); //$NON-NLS-1$
fShowOutline= new RetargetTextEditorAction(ResourceBundle.getBundle(UniversalEditor.MESSAGE_BUNDLE), "ShowOutline."); //$NON-NLS-1$
fShowOutline.setActionDefinitionId(IEditorActionDefinitionIds.SHOW_OUTLINE);
fNextTarget= new GotoNextTargetAction();
fPreviousTarget= new GotoPreviousTargetAction();
fSelectEnclosing= new SelectEnclosingAction();
}
public void init(IActionBars bars, IWorkbenchPage page) {
super.init(bars, page);
bars.setGlobalActionHandler(ITextEditorActionDefinitionIds.GOTO_NEXT_ANNOTATION, fNextAnnotation);
bars.setGlobalActionHandler(ITextEditorActionDefinitionIds.GOTO_PREVIOUS_ANNOTATION, fPreviousAnnotation);
bars.setGlobalActionHandler(ActionFactory.NEXT.getId(), fNextAnnotation);
bars.setGlobalActionHandler(ActionFactory.PREVIOUS.getId(), fPreviousAnnotation);
bars.setGlobalActionHandler(IEditorActionDefinitionIds.GOTO_NEXT_TARGET, fNextTarget);
bars.setGlobalActionHandler(IEditorActionDefinitionIds.GOTO_PREVIOUS_TARGET, fPreviousTarget);
bars.setGlobalActionHandler(IEditorActionDefinitionIds.SELECT_ENCLOSING, fSelectEnclosing);
}
/*
* @see org.eclipse.ui.part.EditorActionBarContributor#contributeToMenu(org.eclipse.jface.action.IMenuManager)
*/
public void contributeToMenu(IMenuManager menu) {
super.contributeToMenu(menu);
IMenuManager navigateMenu= menu.findMenuUsingPath(IWorkbenchActionConstants.M_NAVIGATE);
if (navigateMenu != null) {
navigateMenu.appendToGroup(IWorkbenchActionConstants.SHOW_EXT, fShowOutline);
navigateMenu.add(fNextTarget);
navigateMenu.add(fPreviousTarget);
}
IMenuManager editMenu= menu.findMenuUsingPath(IWorkbenchActionConstants.M_EDIT);
if (editMenu != null) {
// editMenu.appendToGroup(IWorkbenchActionConstants.EDIT_END, fToggleComment);
// editMenu.appendToGroup(IWorkbenchActionConstants.EDIT_END, fCorrectIndentation);
editMenu.appendToGroup(IWorkbenchActionConstants.EDIT_END, fSelectEnclosing);
}
}
public void setActiveEditor(IEditorPart part) {
super.setActiveEditor(part);
ITextEditor textEditor= null;
if (part instanceof ITextEditor)
textEditor= (ITextEditor) part;
fPreviousAnnotation.setEditor(textEditor);
fNextAnnotation.setEditor(textEditor);
fNextTarget.setEditor(textEditor);
fPreviousTarget.setEditor(textEditor);
fSelectEnclosing.setEditor(textEditor);
fShowOutline.setAction(getAction(textEditor, IEditorActionDefinitionIds.SHOW_OUTLINE));
IActionBars bars= getActionBars();
bars.setGlobalActionHandler(IMPActionConstants.FORMAT, getAction(textEditor, "Format")); //$NON-NLS-1$
bars.setGlobalActionHandler(IMPActionConstants.SHIFT_LEFT, getAction(textEditor, "ShiftLeft")); //$NON-NLS-1$
bars.setGlobalActionHandler(IMPActionConstants.SHIFT_RIGHT, getAction(textEditor, "ShiftRight")); //$NON-NLS-1$
bars.setGlobalActionHandler(IMPActionConstants.TOGGLE_COMMENT, getAction(textEditor, IEditorActionDefinitionIds.TOGGLE_COMMENT));
bars.setGlobalActionHandler(IMPActionConstants.CORRECT_INDENTATION, getAction(textEditor, IEditorActionDefinitionIds.CORRECT_INDENTATION));
bars.setGlobalActionHandler(IMPActionConstants.OPEN, getAction(textEditor, IEditorActionDefinitionIds.OPEN_EDITOR));
}
}