X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPActionContributor.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPActionContributor.java index 5a35c88..f97f1dd 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPActionContributor.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPActionContributor.java @@ -17,6 +17,7 @@ import java.util.Iterator; import java.util.List; import java.util.ResourceBundle; +import net.sourceforge.phpdt.ui.IContextMenuConstants; import net.sourceforge.phpdt.ui.actions.GotoMatchingBracketAction; import net.sourceforge.phpdt.ui.actions.PHPdtActionConstants; import net.sourceforge.phpeclipse.PHPeclipsePlugin; @@ -24,6 +25,7 @@ import net.sourceforge.phpeclipse.PHPeclipsePlugin; import org.eclipse.core.resources.IFile; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.preference.IPreferenceStore; @@ -33,29 +35,31 @@ import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.IWorkbenchActionConstants; -import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.actions.RetargetAction; +import org.eclipse.ui.editors.text.EncodingActionGroup; import org.eclipse.ui.texteditor.AbstractTextEditor; import org.eclipse.ui.texteditor.BasicTextEditorActionContributor; import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.RetargetTextEditorAction; - /** * Contributes interesting PHP actions to the desktop's Edit menu and the toolbar. */ public class PHPActionContributor extends BasicTextEditorActionContributor { - // protected RetargetTextEditorAction fContentAssistTip; + protected RetargetTextEditorAction fContentAssistTip; // protected TextEditorAction fTogglePresentation; protected RetargetAction fRetargetContentAssist; protected RetargetTextEditorAction fContentAssist; private RetargetTextEditorAction fGotoMatchingBracket; private List fRetargetToolbarActions = new ArrayList(); + private List fPartListeners = new ArrayList(); protected PHPParserAction fParserAction; protected ShowExternalPreviewAction fShowExternalPreviewAction; + private EncodingActionGroup fEncodingActionGroup; /** * Default constructor. */ @@ -66,6 +70,7 @@ public class PHPActionContributor extends BasicTextEditorActionContributor { fRetargetContentAssist = new RetargetAction(PHPdtActionConstants.CONTENT_ASSIST, PHPEditorMessages.getString("ContentAssistProposal.label")); //$NON-NLS-1$ fRetargetContentAssist.setActionDefinitionId(PHPEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS); + markAsPartListener(fRetargetContentAssist); fContentAssist = new RetargetTextEditorAction(b, "ContentAssistProposal."); //$NON-NLS-1$ fContentAssist.setActionDefinitionId(PHPEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS); @@ -77,16 +82,24 @@ public class PHPActionContributor extends BasicTextEditorActionContributor { // fContentAssist.setDisabledImageDescriptor(JavaPluginImages.DESC_DLCL_CODE_ASSIST); // fContentAssist = new RetargetTextEditorAction(PHPEditorMessages.getResourceBundle(), "ContentAssistProposal."); //$NON-NLS-1$ - // fContentAssistTip = new RetargetTextEditorAction(PHPEditorMessages.getResourceBundle(), "ContentAssistTip."); //$NON-NLS-1$ + fContentAssistTip = new RetargetTextEditorAction(PHPEditorMessages.getResourceBundle(), "ContentAssistTip."); //$NON-NLS-1$ // fTogglePresentation = new PresentationAction(); + // character encoding + fEncodingActionGroup = new EncodingActionGroup(); + fParserAction = PHPParserAction.getInstance(); if (SWT.getPlatform().equals("win32")) { + // ExternalPreview only available as ActiveX on win32 (Eclipse2.1) fShowExternalPreviewAction = ShowExternalPreviewAction.getInstance(); } } + protected final void markAsPartListener(RetargetAction action) { + fPartListeners.add(action); + } + /* * @see EditorActionBarContributor#contributeToMenu(IMenuManager) */ @@ -124,6 +137,46 @@ public class PHPActionContributor extends BasicTextEditorActionContributor { // } /* + * @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)); + + // editMenu.appendToGroup( + // IContextMenuConstants.GROUP_GENERATE, + // fRetargetContentAssist); + + // MenuManager structureSelection= new MenuManager(JavaEditorMessages.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); + // } + + 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#contributeToToolBar(IToolBarManager) */ public void contributeToToolBar(IToolBarManager tbm) { @@ -134,6 +187,17 @@ public class PHPActionContributor extends BasicTextEditorActionContributor { } /* + * @see IEditorActionBarContributor#init(IActionBars, IWorkbenchPage) + */ + public void init(IActionBars bars, IWorkbenchPage page) { + Iterator e = fPartListeners.iterator(); + while (e.hasNext()) + page.addPartListener((RetargetAction) e.next()); + // character encoding + fEncodingActionGroup.fillActionBars(bars); + super.init(bars, page); + } + /* * @see IEditorActionBarContributor#init(IActionBars) */ public void init(IActionBars bars) { @@ -144,8 +208,7 @@ public class PHPActionContributor extends BasicTextEditorActionContributor { if (editMenu != null) { editMenu.add(new Separator()); editMenu.add(fContentAssist); - editMenu.add(fGotoMatchingBracket); - + // editMenu.add(fGotoMatchingBracket); // editMenu.add(fContentAssistTip); } @@ -157,65 +220,82 @@ public class PHPActionContributor extends BasicTextEditorActionContributor { // } } - private void doSetActiveEditor(IEditorPart part) { + /* + * @see IEditorActionBarContributor#setActiveEditor(IEditorPart) + */ + public void setActiveEditor(IEditorPart part) { super.setActiveEditor(part); + IActionBars bars = getActionBars(); + IStatusLineManager manager = bars.getStatusLineManager(); + manager.setMessage(null); + manager.setErrorMessage(null); + ITextEditor textEditor = null; if (part instanceof ITextEditor) textEditor = (ITextEditor) part; fContentAssist.setAction(getAction(textEditor, "ContentAssistProposal")); //$NON-NLS-1$ - // fContentAssistTip.setAction(getAction(editor, "ContentAssistTip")); //$NON-NLS-1$ + fContentAssistTip.setAction(getAction(textEditor, "ContentAssistTip")); //$NON-NLS-1$ fGotoMatchingBracket.setAction(getAction(textEditor, GotoMatchingBracketAction.GOTO_MATCHING_BRACKET)); - IActionBars bars = getActionBars(); + bars.setGlobalActionHandler(PHPdtActionConstants.SHIFT_RIGHT, getAction(textEditor, "ShiftRight")); //$NON-NLS-1$ + bars.setGlobalActionHandler(PHPdtActionConstants.SHIFT_LEFT, getAction(textEditor, "ShiftLeft")); //$NON-NLS-1$ + // character encoding + fEncodingActionGroup.retarget(textEditor); + bars.setGlobalActionHandler(PHPdtActionConstants.COMMENT, getAction(textEditor, "Comment")); bars.setGlobalActionHandler(PHPdtActionConstants.UNCOMMENT, getAction(textEditor, "Uncomment")); bars.setGlobalActionHandler(PHPdtActionConstants.FORMAT, getAction(textEditor, "Format")); if (part instanceof PHPEditor) { - PHPEditor cuEditor = (PHPEditor) part; - ActionGroup group = cuEditor.getActionGroup(); - if (group != null) - group.fillActionBars(bars); - } + PHPEditor phpEditor = (PHPEditor) part; + phpEditor.getActionGroup().fillActionBars(getActionBars()); + } + // if (part instanceof PHPEditor) { + // PHPEditor cuEditor = (PHPEditor) part; + // ActionGroup group = cuEditor.getActionGroup(); + // if (group != null) + // group.fillActionBars(bars); + // } // fTogglePresentation.setEditor(editor); // fTogglePresentation.update(); - IFile file = null; - IEditorInput editorInput = textEditor.getEditorInput(); + if (textEditor != null) { - if (editorInput instanceof IFileEditorInput) { - file = ((IFileEditorInput) editorInput).getFile(); - } + IFile file = null; + IEditorInput editorInput = textEditor.getEditorInput(); - PHPeclipsePlugin.getDefault().setLastEditorFile(file); - fParserAction.setEditor(textEditor); - fParserAction.update(); - if (SWT.getPlatform().equals("win32") && textEditor instanceof AbstractTextEditor) { - fShowExternalPreviewAction.setEditor(textEditor); - fShowExternalPreviewAction.update(); - IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore(); - if (store.getBoolean(PHPeclipsePlugin.SHOW_EXTERNAL_PREVIEW_PREF)) { - IAction a = ShowExternalPreviewAction.getInstance(); - if (a != null) - a.run(); + if (editorInput instanceof IFileEditorInput) { + file = ((IFileEditorInput) editorInput).getFile(); } - } - } - /* - * @see IEditorActionBarContributor#setActiveEditor(IEditorPart) - */ - public void setActiveEditor(IEditorPart part) { - doSetActiveEditor(part); + PHPeclipsePlugin.getDefault().setLastEditorFile(file); + fParserAction.setEditor(textEditor); + fParserAction.update(); + if (SWT.getPlatform().equals("win32") && textEditor instanceof AbstractTextEditor) { + fShowExternalPreviewAction.setEditor(textEditor); + fShowExternalPreviewAction.update(); + IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore(); + if (store.getBoolean(PHPeclipsePlugin.SHOW_EXTERNAL_PREVIEW_PREF)) { + IAction a = ShowExternalPreviewAction.getInstance(); + if (a != null) + a.run(); + } + } + } } /* * @see IEditorActionBarContributor#dispose() */ public void dispose() { - doSetActiveEditor(null); + Iterator e = fPartListeners.iterator(); + while (e.hasNext()) + getPage().removePartListener((RetargetAction) e.next()); + fPartListeners.clear(); + + setActiveEditor(null); super.dispose(); } }