|
From: <caw...@us...> - 2007-07-23 20:47:28
|
Revision: 2823
http://svn.sourceforge.net/rubyeclipse/?rev=2823&view=rev
Author: cawilliams
Date: 2007-07-23 13:47:23 -0700 (Mon, 23 Jul 2007)
Log Message:
-----------
fix up context menu for ruby editor - add back source entries (format/toggle comment, etc)
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/plugin.xml
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyEditor.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/RubyActionGroup.java
Modified: trunk/org.rubypeople.rdt.ui/plugin.xml
===================================================================
--- trunk/org.rubypeople.rdt.ui/plugin.xml 2007-07-23 19:30:39 UTC (rev 2822)
+++ trunk/org.rubypeople.rdt.ui/plugin.xml 2007-07-23 20:47:23 UTC (rev 2823)
@@ -708,21 +708,106 @@
</command>
</extension>
+
<extension
point="org.eclipse.ui.actionSets">
<actionSet
- label="%RubyActionSet.label"
+ label="%CodingActionSet.label"
+ description="%CodingActionSet.description"
visible="false"
- id="org.rubypeople.rdt.ui.rubyActionSet">
+ id="org.rubypeople.rdt.ui.CodingActionSet">
+<!-- =========================================================================== -->
+<!-- Source Menu -->
+<!-- =========================================================================== -->
<menu
- label="%Ruby.menu.label"
+ label="%SourceMenu.label"
path="edit"
- id="org.rubypeople.rdt.ui.ruby.menu">
+ id="org.rubypeople.rdt.ui.source.menu">
+ <separator
+ name="commentGroup">
+ </separator>
<separator
name="editGroup">
</separator>
+ <separator
+ name="generateGroup">
+ </separator>
+ <separator
+ name="codeGroup">
+ </separator>
+ <separator
+ name="convertGroup">
+ </separator>
</menu>
+
+<!-- edit group -->
+ <action
+ definitionId="org.rubypeople.rdt.ui.edit.text.ruby.uncomment"
+ label="%UncommentAction.label"
+ menubarPath="org.rubypeople.rdt.ui.source.menu/editGroup"
+ retarget="true"
+ id="org.rubypeople.rdt.ui.actions.Uncomment">
+ </action>
<action
+ definitionId="org.rubypeople.rdt.ui.edit.text.ruby.comment"
+ label="%CommentAction.label"
+ menubarPath="org.rubypeople.rdt.ui.source.menu/editGroup"
+ retarget="true"
+ id="org.rubypeople.rdt.ui.actions.Comment">
+ </action>
+ <action
+ definitionId="org.rubypeople.rdt.ui.edit.text.ruby.toggle.comment"
+ label="%ToggleCommentAction.label"
+ retarget="true"
+ menubarPath="org.rubypeople.rdt.ui.source.menu/editGroup"
+ id="org.rubypeople.rdt.ui.actions.ToggleComment">
+ </action>
+ <action
+ definitionId="org.rubypeople.rdt.ui.edit.text.ruby.format"
+ label="%FormatAction.label"
+ retarget="true"
+ menubarPath="org.rubypeople.rdt.ui.source.menu/editGroup"
+ id="org.rubypeople.rdt.ui.actions.Format">
+ </action>
+ <action
+ definitionId="org.rubypeople.rdt.ui.edit.text.ruby.surround.with.begin.rescue"
+ label="%SurroundWithBeginRescueAction.label"
+ retarget="true"
+ menubarPath="org.rubypeople.rdt.ui.source.menu/editGroup"
+ id="org.rubypeople.rdt.ui.actions.SurroundWithBeginRescue">
+ </action>
+<!-- Comment Group -->
+ </actionSet>
+ </extension>
+ <extension
+ point="org.eclipse.ui.actionSetPartAssociations">
+ <actionSetPartAssociation
+ targetID="org.rubypeople.rdt.ui.CodingActionSet">
+ <part
+ id="org.rubypeople.rdt.ui.TypeHierarchy">
+ </part>
+ <part
+ id="org.rubypeople.rdt.ui.EditorRubyFile">
+ </part>
+ <part
+ id="org.rubypeople.rdt.ui.ProjectsView">
+ </part>
+ <part
+ id="org.rubypeople.rdt.ui.TypesView">
+ </part>
+ <part
+ id="org.rubypeople.rdt.ui.MembersView">
+ </part>
+ </actionSetPartAssociation>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.actionSets">
+ <actionSet
+ label="%RubyActionSet.label"
+ visible="false"
+ id="org.rubypeople.rdt.ui.rubyActionSet">
+ <action
class="org.rubypeople.rdt.ui.actions.OpenTypeAction"
definitionId="org.rubypeople.rdt.ui.edit.text.ruby.open.type"
id="org.rubypeople.rdt.ui.actions.OpenType"
@@ -756,41 +841,6 @@
menubarPath="project/additions"
id="addRubyNature">
</action>
- <action
- definitionId="org.rubypeople.rdt.ui.edit.text.ruby.uncomment"
- label="%UncommentAction.label"
- menubarPath="org.rubypeople.rdt.ui.ruby.menu/editGroup"
- retarget="true"
- id="org.rubypeople.rdt.ui.actions.Uncomment">
- </action>
- <action
- definitionId="org.rubypeople.rdt.ui.edit.text.ruby.comment"
- label="%CommentAction.label"
- menubarPath="org.rubypeople.rdt.ui.ruby.menu/editGroup"
- retarget="true"
- id="org.rubypeople.rdt.ui.actions.Comment">
- </action>
- <action
- definitionId="org.rubypeople.rdt.ui.edit.text.ruby.toggle.comment"
- label="%ToggleCommentAction.label"
- retarget="true"
- menubarPath="org.rubypeople.rdt.ui.ruby.menu/editGroup"
- id="org.rubypeople.rdt.ui.actions.ToggleComment">
- </action>
- <action
- definitionId="org.rubypeople.rdt.ui.edit.text.ruby.format"
- label="%FormatAction.label"
- retarget="true"
- menubarPath="org.rubypeople.rdt.ui.ruby.menu/editGroup"
- id="org.rubypeople.rdt.ui.actions.Format">
- </action>
- <action
- definitionId="org.rubypeople.rdt.ui.edit.text.ruby.surround.with.begin.rescue"
- label="%SurroundWithBeginRescueAction.label"
- retarget="true"
- menubarPath="org.rubypeople.rdt.ui.ruby.menu/editGroup"
- id="org.rubypeople.rdt.ui.actions.SurroundWithBeginRescue">
- </action>
</actionSet>
<actionSet
label="%RubyElementCreationActionSet.label"
@@ -868,6 +918,9 @@
id="org.rubypeople.rdt.ui.ViewRubyResources">
</part>
<part
+ id="org.rubypeople.rdt.ui.TypeHierarchy">
+ </part>
+ <part
id="org.rubypeople.rdt.ui.EditorRubyFile">
</part>
<part
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyEditor.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyEditor.java 2007-07-23 19:30:39 UTC (rev 2822)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/rubyeditor/RubyEditor.java 2007-07-23 20:47:23 UTC (rev 2823)
@@ -131,6 +131,7 @@
import org.rubypeople.rdt.ui.actions.FormatAction;
import org.rubypeople.rdt.ui.actions.IRubyEditorActionDefinitionIds;
import org.rubypeople.rdt.ui.actions.OpenEditorActionGroup;
+import org.rubypeople.rdt.ui.actions.RubyActionGroup;
import org.rubypeople.rdt.ui.actions.RubySearchActionGroup;
import org.rubypeople.rdt.ui.actions.SurroundWithBeginRescueAction;
import org.rubypeople.rdt.ui.text.folding.IRubyFoldingStructureProvider;
@@ -200,10 +201,10 @@
private BracketInserter fBracketInserter = new BracketInserter();
private CompositeActionGroup fActionGroups;
private CompositeActionGroup fContextMenuGroup;
-
+ private RubyActionGroup fGenerateActionGroup;
+
private InformationPresenter fInformationPresenter;
-
public RubyEditor() {
super();
setDocumentProvider(RubyPlugin.getDefault().getRubyDocumentProvider());
@@ -226,6 +227,32 @@
protected void createActions() {
super.createActions();
+ ActionGroup oeg, rsg;
+ fActionGroups= new CompositeActionGroup(new ActionGroup[] {
+ oeg= new OpenEditorActionGroup(this),
+ rsg= new RubySearchActionGroup(this)
+ });
+
+ fGenerateActionGroup= new RubyActionGroup(this, ITextEditorActionConstants.GROUP_EDIT);
+ fContextMenuGroup= new CompositeActionGroup(new ActionGroup[] {oeg, rsg, fGenerateActionGroup});
+
+ fFoldingGroup= new FoldingActionGroup(this, getViewer());
+
+ ISelectionProvider provider= getSite().getSelectionProvider();
+ ISelection selection= provider.getSelection();
+
+ ResourceAction resAction= new TextOperationAction(RubyEditorMessages.getBundleForConstructedKeys(), "ShowRDoc.", this, ISourceViewer.INFORMATION, true); //$NON-NLS-1$
+ resAction= new InformationDispatchAction(RubyEditorMessages.getBundleForConstructedKeys(), "ShowRDoc.", (TextOperationAction) resAction); //$NON-NLS-1$
+ resAction.setActionDefinitionId(IRubyEditorActionDefinitionIds.SHOW_RDOC);
+ setAction("ShowRDoc", resAction); //$NON-NLS-1$
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(resAction, IRubyHelpContextIds.SHOW_JAVADOC_ACTION);
+
+ SurroundWithBeginRescueAction beginRescueAction = new SurroundWithBeginRescueAction(this);
+ beginRescueAction.setActionDefinitionId(IRubyEditorActionDefinitionIds.SURROUND_WITH_BEGIN_RESCUE);
+ beginRescueAction.update(selection);
+ provider.addSelectionChangedListener(beginRescueAction);
+ setAction(SurroundWithBeginRescueAction.SURROUND_WTH_BEGIN_RESCUE, beginRescueAction);
+
Action action = new ContentAssistAction(RubyPlugin.getDefault().getPluginProperties(),
"ContentAssistProposal.", this);
action.setActionDefinitionId(IRubyEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS);
@@ -262,34 +289,15 @@
action.setActionDefinitionId(IRubyEditorActionDefinitionIds.OPEN_STRUCTURE);
setAction(IRubyEditorActionDefinitionIds.OPEN_STRUCTURE, action);
PlatformUI.getWorkbench().getHelpSystem().setHelp(action, IRubyHelpContextIds.OPEN_STRUCTURE_ACTION);
+
+ action= new TextOperationAction(RubyEditorMessages.getBundleForConstructedKeys(),"OpenHierarchy.", this, RubySourceViewer.SHOW_HIERARCHY, true); //$NON-NLS-1$
+ action.setActionDefinitionId(IRubyEditorActionDefinitionIds.OPEN_HIERARCHY);
+ setAction(IRubyEditorActionDefinitionIds.OPEN_HIERARCHY, action);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(action, IRubyHelpContextIds.OPEN_HIERARCHY_ACTION);
action = new FormatAction(RubyPlugin.getDefault().getPluginProperties(), "FormatAction.", this);
action.setActionDefinitionId(IRubyEditorActionDefinitionIds.FORMAT);
setAction("Format", action);
-
- ActionGroup oeg, rsg;
- fActionGroups= new CompositeActionGroup(new ActionGroup[] {
- oeg= new OpenEditorActionGroup(this),
- rsg= new RubySearchActionGroup(this)
- });
- fContextMenuGroup= new CompositeActionGroup(new ActionGroup[] {oeg, rsg});
-
- fFoldingGroup= new FoldingActionGroup(this, getViewer());
-
- ISelectionProvider provider= getSite().getSelectionProvider();
- ISelection selection= provider.getSelection();
-
- ResourceAction resAction= new TextOperationAction(RubyEditorMessages.getBundleForConstructedKeys(), "ShowRDoc.", this, ISourceViewer.INFORMATION, true); //$NON-NLS-1$
- resAction= new InformationDispatchAction(RubyEditorMessages.getBundleForConstructedKeys(), "ShowRDoc.", (TextOperationAction) resAction); //$NON-NLS-1$
- resAction.setActionDefinitionId(IRubyEditorActionDefinitionIds.SHOW_RDOC);
- setAction("ShowRDoc", resAction); //$NON-NLS-1$
- PlatformUI.getWorkbench().getHelpSystem().setHelp(resAction, IRubyHelpContextIds.SHOW_JAVADOC_ACTION);
-
- SurroundWithBeginRescueAction beginRescueAction = new SurroundWithBeginRescueAction(this);
- beginRescueAction.setActionDefinitionId(IRubyEditorActionDefinitionIds.SURROUND_WITH_BEGIN_RESCUE);
- beginRescueAction.update(selection);
- provider.addSelectionChangedListener(beginRescueAction);
- setAction(SurroundWithBeginRescueAction.SURROUND_WTH_BEGIN_RESCUE, beginRescueAction);
}
/**
@@ -749,9 +757,26 @@
}
protected void editorContextMenuAboutToShow(IMenuManager menu) {
- super.editorContextMenuAboutToShow(menu);
+ super.editorContextMenuAboutToShow(menu);
- IExtensionRegistry registry = Platform.getExtensionRegistry();
+ menu.insertAfter(IContextMenuConstants.GROUP_OPEN, new GroupMarker(IContextMenuConstants.GROUP_SHOW));
+
+ ActionContext context= new ActionContext(getSelectionProvider().getSelection());
+ fContextMenuGroup.setContext(context);
+ fContextMenuGroup.fillContextMenu(menu);
+ fContextMenuGroup.setContext(null);
+
+ // Quick views
+ IAction action= getAction(IRubyEditorActionDefinitionIds.SHOW_OUTLINE);
+ menu.appendToGroup(IContextMenuConstants.GROUP_OPEN, action);
+ action= getAction(IRubyEditorActionDefinitionIds.OPEN_HIERARCHY);
+ menu.appendToGroup(IContextMenuConstants.GROUP_OPEN, action);
+
+ addExtensionMenuItems(menu);
+ }
+
+ private void addExtensionMenuItems(IMenuManager menu) {
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint extensionPoint = registry
.getExtensionPoint("org.rubypeople.rdt.ui.editorPopupExtender");
IExtension[] extensions = extensionPoint.getExtensions();
@@ -782,22 +807,8 @@
}
}
}
+ }
-
- menu.insertAfter(IContextMenuConstants.GROUP_OPEN, new GroupMarker(IContextMenuConstants.GROUP_SHOW));
-
- ActionContext context= new ActionContext(getSelectionProvider().getSelection());
- fContextMenuGroup.setContext(context);
- fContextMenuGroup.fillContextMenu(menu);
- fContextMenuGroup.setContext(null);
-
- // Quick views
- IAction action= getAction(IRubyEditorActionDefinitionIds.SHOW_OUTLINE);
- menu.appendToGroup(IContextMenuConstants.GROUP_OPEN, action);
-// action= getAction(IRubyEditorActionDefinitionIds.OPEN_HIERARCHY);
-// menu.appendToGroup(IContextMenuConstants.GROUP_OPEN, action);
- }
-
protected void handlePreferenceStoreChanged(PropertyChangeEvent event) {
super.handlePreferenceStoreChanged(event);
String property = event.getProperty();
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/RubyActionGroup.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/RubyActionGroup.java 2007-07-23 19:30:39 UTC (rev 2822)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/RubyActionGroup.java 2007-07-23 20:47:23 UTC (rev 2823)
@@ -1,39 +1,127 @@
package org.rubypeople.rdt.ui.actions;
+import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.ui.actions.ActionGroup;
+import org.eclipse.ui.texteditor.IUpdate;
import org.rubypeople.rdt.internal.ui.rubyeditor.RubyEditor;
public class RubyActionGroup extends ActionGroup {
- public static final String RUBY_SOURCE_SEPARATOR = "ruby.source.separator";
- protected RubyEditor editor;
- protected String menuGroupId;
+
+ /**
+ * Pop-up menu: id of the source sub menu (value <code>org.rubypeople.rdt.ui.source.menu</code>).
+ *
+ * @since 1.0
+ */
+ public static final String MENU_ID= "org.rubypeople.rdt.ui.source.menu"; //$NON-NLS-1$
+
+ /**
+ * Pop-up menu: id of the generate group of the source sub menu (value
+ * <code>generateGroup</code>).
+ *
+ * @since 1.0
+ */
+ public static final String GROUP_GENERATE= "generateGroup"; //$NON-NLS-1$
- public RubyActionGroup(RubyEditor editor, String menuGroupId) {
- this.editor = editor;
- this.menuGroupId = menuGroupId;
+ /**
+ * Pop-up menu: id of the code group of the source sub menu (value
+ * <code>codeGroup</code>).
+ *
+ * @since 1.0
+ */
+ public static final String GROUP_CODE= "codeGroup"; //$NON-NLS-1$
+
+ /**
+ * Pop-up menu: id of the comment group of the source sub menu (value
+ * <code>commentGroup</code>).
+ *
+ * TODO: Make API
+ */
+ private static final String GROUP_COMMENT= "commentGroup"; //$NON-NLS-1$
+
+ /**
+ * Pop-up menu: id of the edit group of the source sub menu (value
+ * <code>editGroup</code>).
+ *
+ * TODO: Make API
+ */
+ public static final String GROUP_EDIT= "editGroup"; //$NON-NLS-1$
+
+ private RubyEditor fEditor;
+ private String fGroupName;
+
+ public RubyActionGroup(RubyEditor editor, String groupName) {
+ fEditor= editor;
+ fGroupName= groupName;
}
public void fillContextMenu(IMenuManager menu) {
super.fillContextMenu(menu);
- IMenuManager rubySourceMenu = getRubySourceMenu(menu);
- rubySourceMenu.insertBefore(RUBY_SOURCE_SEPARATOR, editor.getAction("SurroundWithBeginRescue"));
- rubySourceMenu.insertBefore(RUBY_SOURCE_SEPARATOR, editor.getAction("ToggleComment"));
- rubySourceMenu.insertBefore(RUBY_SOURCE_SEPARATOR, editor.getAction("Comment"));
- rubySourceMenu.insertBefore(RUBY_SOURCE_SEPARATOR, editor.getAction("Uncomment"));
- rubySourceMenu.insertBefore(RUBY_SOURCE_SEPARATOR, editor.getAction("Format"));
+ String menuText= "Source";//ActionMessages.SourceMenu_label;
+// if (fQuickAccessAction != null) {
+// menuText= fQuickAccessAction.addShortcut(menuText);
+// }
+ IMenuManager subMenu= new MenuManager(menuText, MENU_ID);
+ int added= 0;
+ if (isEditorOwner()) {
+ added= fillEditorSubMenu(subMenu);
+ } else {
+ added= fillViewSubMenu(subMenu);
+ }
+ if (added > 0)
+ menu.appendToGroup(fGroupName, subMenu);
}
+
+ private int fillEditorSubMenu(IMenuManager source) {
+ int added= 0;
+ source.add(new Separator(GROUP_COMMENT));
+ added+= addEditorAction(source, "ToggleComment"); //$NON-NLS-1$
+ added+= addEditorAction(source, "AddBlockComment"); //$NON-NLS-1$
+ added+= addEditorAction(source, "RemoveBlockComment"); //$NON-NLS-1$
+ source.add(new Separator(GROUP_EDIT));
+ added+= addEditorAction(source, "Indent"); //$NON-NLS-1$
+ added+= addEditorAction(source, "Format"); //$NON-NLS-1$
+ added+= addEditorAction(source, "SurroundWithBeginRescue"); //$NON-NLS-1$
+ source.add(new Separator(GROUP_GENERATE));
+ source.add(new Separator(GROUP_CODE));
+ return added;
+ }
- public static IMenuManager getRubySourceMenu(IMenuManager menu) {
-
- IMenuManager sourceMenu = menu.findMenuUsingPath("ruby.source");
- if (sourceMenu == null) {
- sourceMenu = new MenuManager("Source", "ruby.source");
- sourceMenu.add(new Separator(RUBY_SOURCE_SEPARATOR));
- menu.insertAfter("group.edit", sourceMenu);
+ private int fillViewSubMenu(IMenuManager source) {
+ int added= 0;
+ source.add(new Separator(GROUP_COMMENT));
+ source.add(new Separator(GROUP_EDIT));
+ source.add(new Separator(GROUP_GENERATE));
+ source.add(new Separator(GROUP_CODE));
+ return added;
+ }
+
+ private int addAction(IMenuManager menu, IAction action) {
+ if (action != null && action.isEnabled()) {
+ menu.add(action);
+ return 1;
}
- return sourceMenu;
+ return 0;
+ }
+
+ private int addEditorAction(IMenuManager menu, String actionID) {
+ if (fEditor == null)
+ return 0;
+ IAction action= fEditor.getAction(actionID);
+ if (action == null)
+ return 0;
+ if (action instanceof IUpdate)
+ ((IUpdate)action).update();
+ if (action.isEnabled()) {
+ menu.add(action);
+ return 1;
+ }
+ return 0;
}
+
+ private boolean isEditorOwner() {
+ return fEditor != null;
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|