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 7c6d220..733ba53 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPActionContributor.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPActionContributor.java @@ -1,144 +1,256 @@ package net.sourceforge.phpeclipse.phpeditor; +/******************************************************************************* + * Copyright (c) 2000, 2002 IBM Corp. 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 implementation Klaus Hartlage - + * www.eclipseproject.de + ******************************************************************************/ +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.ResourceBundle; -/********************************************************************** -Copyright (c) 2000, 2002 IBM Corp. 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 implementation - Klaus Hartlage - www.eclipseproject.de -**********************************************************************/ - +import net.sourceforge.phpdt.internal.ui.PHPUiImages; import net.sourceforge.phpdt.ui.IContextMenuConstants; import net.sourceforge.phpdt.ui.actions.PHPdtActionConstants; +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.ui.IActionBars; +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.ide.IDEActionFactory; +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. + * Contributes interesting PHP actions to the desktop's Edit menu and the + * toolbar. */ -public class PHPActionContributor extends BasicTextEditorActionContributor { - - // protected RetargetTextEditorAction fContentAssistTip; +public class PHPActionContributor extends BasicJavaEditorActionContributor { +// protected RetargetTextEditorAction fContentAssistTip; // protected TextEditorAction fTogglePresentation; protected RetargetAction fRetargetContentAssist; - protected RetargetTextEditorAction fContentAssist; - - protected PHPParserAction parserAction; - + protected RetargetTextEditorAction fContextInformation; + private RetargetTextEditorAction fGotoMatchingBracket; + private List fRetargetToolbarActions = new ArrayList(); +// private List fPartListeners = new ArrayList(); + protected PHPParserAction fParserAction; + protected ShowExternalPreviewAction fShowExternalPreviewAction; + private EncodingActionGroup fEncodingActionGroup; /** * Default constructor. */ public PHPActionContributor() { super(); + ResourceBundle b = PHPEditorMessages.getResourceBundle(); + +// fRetargetContentAssist = new RetargetAction( +// PHPdtActionConstants.CONTENT_ASSIST, PHPEditorMessages +// .getString("ContentAssistProposal.label")); //$NON-NLS-1$ +// fRetargetContentAssist +// .setActionDefinitionId(ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS); +// markAsPartListener(fRetargetContentAssist); +// +// fContentAssist = new RetargetTextEditorAction(b, "ContentAssistProposal."); //$NON-NLS-1$ +// fContentAssist +// .setActionDefinitionId(ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS); - fRetargetContentAssist= new RetargetAction(PHPdtActionConstants.CONTENT_ASSIST, PHPEditorMessages.getString("ContentAssistProposal.label")); //$NON-NLS-1$ + fRetargetContentAssist= new RetargetAction(PHPdtActionConstants.CONTENT_ASSIST, PHPEditorMessages.getString("ContentAssistProposal.label")); //$NON-NLS-1$ fRetargetContentAssist.setActionDefinitionId(PHPEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS); - + markAsPartListener(fRetargetContentAssist); + fContentAssist= new RetargetTextEditorAction(PHPEditorMessages.getResourceBundle(), "ContentAssistProposal."); //$NON-NLS-1$ fContentAssist.setActionDefinitionId(PHPEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS); -// fContentAssist.setImageDescriptor(JavaPluginImages.DESC_CLCL_CODE_ASSIST); -// 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$ - // fTogglePresentation = new PresentationAction(); - + fContentAssist.setImageDescriptor(PHPUiImages.DESC_CLCL_CODE_ASSIST); + fContentAssist.setDisabledImageDescriptor(PHPUiImages.DESC_DLCL_CODE_ASSIST); - parserAction = PHPParserAction.getInstance(); - } + fContextInformation= new RetargetTextEditorAction(PHPEditorMessages.getResourceBundle(), "ContentAssistContextInformation."); //$NON-NLS-1$ + fContextInformation.setActionDefinitionId(PHPEditorActionDefinitionIds.CONTENT_ASSIST_CONTEXT_INFORMATION); + +// fCorrectionAssist= new RetargetTextEditorAction(PHPEditorMessages.getResourceBundle(), "CorrectionAssistProposal."); //$NON-NLS-1$ +// fCorrectionAssist.setActionDefinitionId(PHPEditorActionDefinitionIds.CORRECTION_ASSIST_PROPOSALS); + + // character encoding + fEncodingActionGroup= new EncodingActionGroup(); + fParserAction = PHPParserAction.getInstance(); + fShowExternalPreviewAction = ShowExternalPreviewAction.getInstance(); + } + /* * @see EditorActionBarContributor#contributeToMenu(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.appendToGroup(IContextMenuConstants.GROUP_GENERATE, fRetargetContentAssist); -// } + // public void contributeToMenu(IMenuManager menu) { + // super.contributeToMenu(menu); + // IMenuManager editMenu= + // menu.findMenuUsingPath(IWorkbenchActionConstants.M_EDIT); + // if (editMenu != null) { + // MenuManager structureSelection= new + // MenuManager(JavaEditorMessages.getString("ExpandSelectionMenu.label")); + // //$NON-NLS-1$ + // structureSelection.add(fStructureSelectEnclosingAction); + // structureSelection.add(fStructureSelectNextAction); + // structureSelection.add(fStructureSelectPreviousAction); + // structureSelection.add(fStructureSelectHistoryAction); + // editMenu.appendToGroup(IContextMenuConstants.GROUP_OPEN, + // structureSelection); + // editMenu.appendToGroup(IContextMenuConstants.GROUP_OPEN, + // fGotoPreviousMemberAction); + // editMenu.appendToGroup(IContextMenuConstants.GROUP_OPEN, + // fGotoNextMemberAction); + // editMenu.appendToGroup(IContextMenuConstants.GROUP_OPEN, + // fGotoMatchingBracket); + // editMenu.appendToGroup(IContextMenuConstants.GROUP_GENERATE, + // fShowOutline); + // } + // } + /* + * @see EditorActionBarContributor#contributeToMenu(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.appendToGroup(IContextMenuConstants.GROUP_GENERATE, + // fRetargetContentAssist); + // } + // } + /* + * @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.appendToGroup(IContextMenuConstants.GROUP_GENERATE, fRetargetContentAssist); +// editMenu.appendToGroup(IContextMenuConstants.GROUP_GENERATE, fCorrectionAssist); + editMenu.appendToGroup(IContextMenuConstants.GROUP_GENERATE, fContextInformation); + } + } +// /* +// * @see EditorActionBarContributor#contributeToToolBar(IToolBarManager) +// */ +// public void contributeToToolBar(IToolBarManager tbm) { +// tbm.add(new Separator()); +// Iterator e = fRetargetToolbarActions.iterator(); +// while (e.hasNext()) +// tbm.add((IAction) e.next()); // } - /* - * @see IEditorActionBarContributor#init(IActionBars) + * @see IEditorActionBarContributor#init(IActionBars, IWorkbenchPage) */ - public void init(IActionBars bars) { - super.init(bars); - - IMenuManager menuManager = bars.getMenuManager(); - IMenuManager editMenu = menuManager.findMenuUsingPath(IWorkbenchActionConstants.M_EDIT); - if (editMenu != null) { - editMenu.add(new Separator()); - editMenu.add(fContentAssist); - // editMenu.add(fContentAssistTip); - } +// 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); +// } - bars.setGlobalActionHandler(PHPdtActionConstants.CONTENT_ASSIST, fContentAssist); - // IToolBarManager toolBarManager = bars.getToolBarManager(); - // if (toolBarManager != null) { - // toolBarManager.add(new Separator()); - // toolBarManager.add(fTogglePresentation); - // } - } + /* + * @see IEditorActionBarContributor#init(IActionBars, IWorkbenchPage) + */ + public void init(IActionBars bars, IWorkbenchPage page) { + super.init(bars, page); + + // register actions that have a dynamic editor. + bars.setGlobalActionHandler(PHPdtActionConstants.CONTENT_ASSIST, fContentAssist); + // character encoding + fEncodingActionGroup.fillActionBars(bars); + } + // /* +// * @see IEditorActionBarContributor#init(IActionBars) +// */ +// public void init(IActionBars bars) { +// super.init(bars); +// IMenuManager menuManager = bars.getMenuManager(); +// IMenuManager editMenu = menuManager +// .findMenuUsingPath(IWorkbenchActionConstants.M_EDIT); +// if (editMenu != null) { +// editMenu.add(new Separator()); +// editMenu.add(fContentAssist); +// // editMenu.add(fGotoMatchingBracket); +// // editMenu.add(fContentAssistTip); +// } +// bars.setGlobalActionHandler(PHPdtActionConstants.CONTENT_ASSIST, +// fContentAssist); +// // IToolBarManager toolBarManager = bars.getToolBarManager(); +// // if (toolBarManager != null) { +// // toolBarManager.add(new Separator()); +// // toolBarManager.add(fTogglePresentation); +// // } +// } + - private void doSetActiveEditor(IEditorPart part) { + /* + * @see IEditorActionBarContributor#setActiveEditor(IEditorPart) + */ + public void setActiveEditor(IEditorPart part) { super.setActiveEditor(part); - - ITextEditor textEditor = null; + 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$ + fContextInformation.setAction(getAction(textEditor, "ContentAssistContextInformation")); //$NON-NLS-1$ +// fCorrectionAssist.setAction(getAction(textEditor, "CorrectionAssistProposal")); //$NON-NLS-1$ + + IActionBars actionBars= getActionBars(); + actionBars.setGlobalActionHandler(PHPdtActionConstants.SHIFT_RIGHT, getAction(textEditor, "ShiftRight")); //$NON-NLS-1$ + actionBars.setGlobalActionHandler(PHPdtActionConstants.SHIFT_LEFT, getAction(textEditor, "ShiftLeft")); //$NON-NLS-1$ - fContentAssist.setAction(getAction(textEditor, "ContentAssistProposal")); //$NON-NLS-1$ - // fContentAssistTip.setAction(getAction(editor, "ContentAssistTip")); //$NON-NLS-1$ + actionBars.setGlobalActionHandler(IDEActionFactory.ADD_TASK.getId(), getAction(textEditor, IDEActionFactory.ADD_TASK.getId())); //$NON-NLS-1$ + actionBars.setGlobalActionHandler(IDEActionFactory.BOOKMARK.getId(), getAction(textEditor, IDEActionFactory.BOOKMARK.getId())); //$NON-NLS-1$ + + // character encoding + fEncodingActionGroup.retarget(textEditor); - IActionBars bars = getActionBars(); - bars.setGlobalActionHandler(PHPdtActionConstants.COMMENT, getAction(textEditor, "Comment")); - bars.setGlobalActionHandler(PHPdtActionConstants.UNCOMMENT, getAction(textEditor, "Uncomment")); - - if (part instanceof PHPEditor) { - PHPEditor cuEditor= (PHPEditor)part; - ActionGroup group= cuEditor.getActionGroup(); - if (group != null) - group.fillActionBars(bars); + if (textEditor != null) { + IFile file = null; + IEditorInput editorInput = textEditor.getEditorInput(); + if (editorInput instanceof IFileEditorInput) { + file = ((IFileEditorInput) editorInput).getFile(); + } + PHPeclipsePlugin.getDefault().setLastEditorFile(file); + fParserAction.setEditor(textEditor); + fParserAction.update(); + if (textEditor instanceof AbstractTextEditor) { + fShowExternalPreviewAction.setEditor(textEditor); + fShowExternalPreviewAction.update(); + IAction a = ShowExternalPreviewAction.getInstance(); + if (a != null) + a.run(); + } } - // fTogglePresentation.setEditor(editor); - // fTogglePresentation.update(); - - parserAction.setEditor(textEditor); - parserAction.update(); - } - - /* - * @see IEditorActionBarContributor#setActiveEditor(IEditorPart) - */ - public void setActiveEditor(IEditorPart part) { - doSetActiveEditor(part); - } - - /* - * @see IEditorActionBarContributor#dispose() - */ - public void dispose() { - doSetActiveEditor(null); - super.dispose(); } + }