1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / BasicJavaEditorActionContributor.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/BasicJavaEditorActionContributor.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/BasicJavaEditorActionContributor.java
new file mode 100644 (file)
index 0000000..ebbc553
--- /dev/null
@@ -0,0 +1,287 @@
+/*******************************************************************************
+ * 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();
+       }
+}