/******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package net.sourceforge.phpeclipse.phpeditor; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ResourceBundle; import net.sourceforge.phpdt.internal.ui.actions.FoldingActionGroup; import net.sourceforge.phpdt.ui.IContextMenuConstants; import net.sourceforge.phpdt.ui.actions.GotoMatchingBracketAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.action.Separator; 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.RetargetAction; import org.eclipse.ui.texteditor.BasicTextEditorActionContributor; import org.eclipse.ui.texteditor.GotoAnnotationAction; import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.ITextEditorActionConstants; import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; import org.eclipse.ui.texteditor.RetargetTextEditorAction; /** * Common base class for action contributors for Java editors. */ public class BasicJavaEditorActionContributor extends BasicTextEditorActionContributor { private List fPartListeners = new ArrayList(); private TogglePresentationAction fTogglePresentation; private GotoAnnotationAction fPreviousAnnotation; private GotoAnnotationAction fNextAnnotation; private RetargetTextEditorAction fGotoMatchingBracket; // private RetargetTextEditorAction fShowOutline; // private RetargetTextEditorAction fOpenStructure; // private RetargetTextEditorAction fOpenHierarchy; // private RetargetAction fRetargetShowJavaDoc; // private RetargetTextEditorAction fShowJavaDoc; // private RetargetTextEditorAction fStructureSelectEnclosingAction; // private RetargetTextEditorAction fStructureSelectNextAction; // private RetargetTextEditorAction fStructureSelectPreviousAction; // private RetargetTextEditorAction fStructureSelectHistoryAction; private RetargetTextEditorAction fGotoNextMemberAction; private RetargetTextEditorAction fGotoPreviousMemberAction; // // private RetargetTextEditorAction fRemoveOccurrenceAnnotationsAction; public BasicJavaEditorActionContributor() { super(); ResourceBundle b = PHPEditorMessages.getResourceBundle(); // fRetargetShowJavaDoc= new // RetargetAction(PHPdtActionConstants.SHOW_JAVA_DOC, // PHPEditorMessages.getString("ShowJavaDoc.label")); //$NON-NLS-1$ // fRetargetShowJavaDoc.setActionDefinitionId(net.sourceforge.phpdt.ui.actions.PHPEditorActionDefinitionIds.SHOW_JAVADOC); // markAsPartListener(fRetargetShowJavaDoc); // actions that are "contributed" to editors, they are considered // belonging to the active editor fTogglePresentation = new TogglePresentationAction(); fPreviousAnnotation = new GotoAnnotationAction(b, "PreviousAnnotation.", null, false); //$NON-NLS-1$ fNextAnnotation = new GotoAnnotationAction(b, "NextAnnotation.", null, true); //$NON-NLS-1$ fGotoMatchingBracket = new RetargetTextEditorAction(b, "GotoMatchingBracket."); //$NON-NLS-1$ fGotoMatchingBracket .setActionDefinitionId(PHPEditorActionDefinitionIds.GOTO_MATCHING_BRACKET); // fShowJavaDoc= new RetargetTextEditorAction(b, "ShowJavaDoc."); // //$NON-NLS-1$ // fShowJavaDoc.setActionDefinitionId(net.sourceforge.phpdt.ui.actions.PHPEditorActionDefinitionIds.SHOW_JAVADOC); // fShowOutline= new // RetargetTextEditorAction(PHPEditorMessages.getResourceBundle(), // "ShowOutline."); //$NON-NLS-1$ // fShowOutline.setActionDefinitionId(PHPEditorActionDefinitionIds.SHOW_OUTLINE); // // fOpenHierarchy= new // RetargetTextEditorAction(PHPEditorMessages.getResourceBundle(), // "OpenHierarchy."); //$NON-NLS-1$ // fOpenHierarchy.setActionDefinitionId(PHPEditorActionDefinitionIds.OPEN_HIERARCHY); // // fOpenStructure= new // RetargetTextEditorAction(PHPEditorMessages.getResourceBundle(), // "OpenStructure."); //$NON-NLS-1$ // fOpenStructure.setActionDefinitionId(PHPEditorActionDefinitionIds.OPEN_STRUCTURE); // fStructureSelectEnclosingAction= new RetargetTextEditorAction(b, // "StructureSelectEnclosing."); //$NON-NLS-1$ // fStructureSelectEnclosingAction.setActionDefinitionId(PHPEditorActionDefinitionIds.SELECT_ENCLOSING); // fStructureSelectNextAction= new RetargetTextEditorAction(b, // "StructureSelectNext."); //$NON-NLS-1$ // fStructureSelectNextAction.setActionDefinitionId(PHPEditorActionDefinitionIds.SELECT_NEXT); // fStructureSelectPreviousAction= new RetargetTextEditorAction(b, // "StructureSelectPrevious."); //$NON-NLS-1$ // fStructureSelectPreviousAction.setActionDefinitionId(PHPEditorActionDefinitionIds.SELECT_PREVIOUS); // fStructureSelectHistoryAction= new RetargetTextEditorAction(b, // "StructureSelectHistory."); //$NON-NLS-1$ // fStructureSelectHistoryAction.setActionDefinitionId(PHPEditorActionDefinitionIds.SELECT_LAST); // fGotoNextMemberAction = new RetargetTextEditorAction(b, "GotoNextMember."); //$NON-NLS-1$ fGotoNextMemberAction .setActionDefinitionId(PHPEditorActionDefinitionIds.GOTO_NEXT_MEMBER); fGotoPreviousMemberAction = new RetargetTextEditorAction(b, "GotoPreviousMember."); //$NON-NLS-1$ fGotoPreviousMemberAction .setActionDefinitionId(PHPEditorActionDefinitionIds.GOTO_PREVIOUS_MEMBER); // // fRemoveOccurrenceAnnotationsAction= new RetargetTextEditorAction(b, // "RemoveOccurrenceAnnotations."); //$NON-NLS-1$ // fRemoveOccurrenceAnnotationsAction.setActionDefinitionId(PHPEditorActionDefinitionIds.REMOVE_OCCURRENCE_ANNOTATIONS); } protected final void markAsPartListener(RetargetAction action) { fPartListeners.add(action); } /* * @see IEditorActionBarContributor#init(IActionBars, IWorkbenchPage) */ public void init(IActionBars bars, IWorkbenchPage page) { Iterator e = fPartListeners.iterator(); while (e.hasNext()) page.addPartListener((RetargetAction) e.next()); super.init(bars, page); // register actions that have a dynamic editor. bars.setGlobalActionHandler(ITextEditorActionDefinitionIds.GOTO_NEXT_ANNOTATION, fNextAnnotation); bars.setGlobalActionHandler(ITextEditorActionDefinitionIds.GOTO_PREVIOUS_ANNOTATION, fPreviousAnnotation); bars.setGlobalActionHandler(ITextEditorActionConstants.NEXT, fNextAnnotation); bars.setGlobalActionHandler(ITextEditorActionConstants.PREVIOUS, fPreviousAnnotation); bars .setGlobalActionHandler( ITextEditorActionDefinitionIds.TOGGLE_SHOW_SELECTED_ELEMENT_ONLY, fTogglePresentation); // bars.setGlobalActionHandler(PHPdtActionConstants.SHOW_JAVA_DOC, // fShowJavaDoc); } /* * @see org.eclipse.ui.part.EditorActionBarContributor#contributeToMenu(org.eclipse.jface.action.IMenuManager) */ public void contributeToMenu(IMenuManager menu) { super.contributeToMenu(menu); IMenuManager editMenu = menu .findMenuUsingPath(IWorkbenchActionConstants.M_EDIT); if (editMenu != null) { editMenu.add(new Separator(IContextMenuConstants.GROUP_OPEN)); editMenu.add(new Separator(IContextMenuConstants.GROUP_GENERATE)); editMenu.add(new Separator(IContextMenuConstants.GROUP_ADDITIONS)); // MenuManager structureSelection= new // MenuManager(PHPEditorMessages.getString("ExpandSelectionMenu.label"), // "expandSelection"); //$NON-NLS-1$ //$NON-NLS-2$ // structureSelection.add(fStructureSelectEnclosingAction); // structureSelection.add(fStructureSelectNextAction); // structureSelection.add(fStructureSelectPreviousAction); // structureSelection.add(fStructureSelectHistoryAction); // editMenu.appendToGroup(IContextMenuConstants.GROUP_OPEN, // structureSelection); // editMenu.appendToGroup(IContextMenuConstants.GROUP_GENERATE, // fRetargetShowJavaDoc); } // IMenuManager navigateMenu= // menu.findMenuUsingPath(IWorkbenchActionConstants.M_NAVIGATE); // if (navigateMenu != null) { // navigateMenu.appendToGroup(IWorkbenchActionConstants.SHOW_EXT, // fShowOutline); // navigateMenu.appendToGroup(IWorkbenchActionConstants.SHOW_EXT, // fOpenHierarchy); // } IMenuManager gotoMenu = menu.findMenuUsingPath("navigate/goTo"); //$NON-NLS-1$ if (gotoMenu != null) { gotoMenu.add(new Separator("additions2")); //$NON-NLS-1$ gotoMenu.appendToGroup("additions2", fGotoPreviousMemberAction); //$NON-NLS-1$ gotoMenu.appendToGroup("additions2", fGotoNextMemberAction); //$NON-NLS-1$ gotoMenu.appendToGroup("additions2", fGotoMatchingBracket); //$NON-NLS-1$ } } /* * @see EditorActionBarContributor#setActiveEditor(IEditorPart) */ public void setActiveEditor(IEditorPart part) { super.setActiveEditor(part); IActionBars actionBars = getActionBars(); IStatusLineManager manager = actionBars.getStatusLineManager(); manager.setMessage(null); manager.setErrorMessage(null); ITextEditor textEditor = null; if (part instanceof ITextEditor) textEditor = (ITextEditor) part; fTogglePresentation.setEditor(textEditor); fPreviousAnnotation.setEditor(textEditor); fNextAnnotation.setEditor(textEditor); fGotoMatchingBracket.setAction(getAction(textEditor, GotoMatchingBracketAction.GOTO_MATCHING_BRACKET)); // fShowJavaDoc.setAction(getAction(textEditor, "ShowJavaDoc")); // //$NON-NLS-1$ // fShowOutline.setAction(getAction(textEditor, // IJavaEditorActionDefinitionIds.SHOW_OUTLINE)); // fOpenHierarchy.setAction(getAction(textEditor, // IJavaEditorActionDefinitionIds.OPEN_HIERARCHY)); // fOpenStructure.setAction(getAction(textEditor, // IJavaEditorActionDefinitionIds.OPEN_STRUCTURE)); // fStructureSelectEnclosingAction.setAction(getAction(textEditor, // StructureSelectionAction.ENCLOSING)); // fStructureSelectNextAction.setAction(getAction(textEditor, // StructureSelectionAction.NEXT)); // fStructureSelectPreviousAction.setAction(getAction(textEditor, // StructureSelectionAction.PREVIOUS)); // fStructureSelectHistoryAction.setAction(getAction(textEditor, // StructureSelectionAction.HISTORY)); // fGotoNextMemberAction.setAction(getAction(textEditor, // GoToNextPreviousMemberAction.NEXT_MEMBER)); // fGotoPreviousMemberAction.setAction(getAction(textEditor, // GoToNextPreviousMemberAction.PREVIOUS_MEMBER)); // fRemoveOccurrenceAnnotationsAction.setAction(getAction(textEditor, // "RemoveOccurrenceAnnotations")); //$NON-NLS-1$ if (part instanceof PHPEditor) { PHPEditor javaEditor = (PHPEditor) part; javaEditor.getActionGroup().fillActionBars(getActionBars()); FoldingActionGroup foldingActions = javaEditor .getFoldingActionGroup(); if (foldingActions != null) foldingActions.updateActionBars(); } } /* * @see IEditorActionBarContributor#dispose() */ public void dispose() { Iterator e = fPartListeners.iterator(); while (e.hasNext()) getPage().removePartListener((RetargetAction) e.next()); fPartListeners.clear(); setActiveEditor(null); super.dispose(); } }