[jboss-cvs] jbosside/core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/views ...
Marshall Culpepper
mculpepper at jboss.com
Sat Feb 17 12:31:39 EST 2007
User: mculpepper
Date: 07/02/17 12:31:39
Modified: core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/views
ProjectPackagesView.java
Log:
implemented "nodePopupMenus" extension point, allowing for contributions to the node context menu based on the type of node being currently selected. see the stub NodePropertiesAction extension in plugin.xml for an example.
Revision Changes Path
1.16 +52 -0 jbosside/core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/views/ProjectPackagesView.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ProjectPackagesView.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/views/ProjectPackagesView.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- ProjectPackagesView.java 16 Feb 2007 20:42:20 -0000 1.15
+++ ProjectPackagesView.java 17 Feb 2007 17:31:39 -0000 1.16
@@ -1,5 +1,10 @@
package org.jboss.ide.eclipse.packages.ui.views;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.GroupMarker;
@@ -40,6 +45,8 @@
import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
import org.jboss.ide.eclipse.packages.core.model.internal.PackageFolderImpl;
import org.jboss.ide.eclipse.packages.core.model.internal.PackagesModel;
+import org.jboss.ide.eclipse.packages.ui.ExtensionManager;
+import org.jboss.ide.eclipse.packages.ui.NodeContribution;
import org.jboss.ide.eclipse.packages.ui.PackagesUIMessages;
import org.jboss.ide.eclipse.packages.ui.PackagesUIPlugin;
import org.jboss.ide.eclipse.packages.ui.actions.BuildPackagesAction;
@@ -69,11 +76,16 @@
private IProject currentProject;
private boolean loading;
private PackagesContentProvider contentProvider;
+ private ArrayList nodePopupMenuContributions;
private static ProjectPackagesView _instance;
public ProjectPackagesView ()
{
_instance = this;
+
+ NodeContribution[] menus = ExtensionManager.findNodePopupMenuContributions();
+ nodePopupMenuContributions = new ArrayList(Arrays.asList(menus));
+ Collections.sort(nodePopupMenuContributions);
}
public static ProjectPackagesView instance()
@@ -256,6 +268,8 @@
}
manager.add(editAction);
manager.add(deleteAction);
+
+ addContextMenuContributions(node);
}
else {
manager.add(newPackageManager);
@@ -276,6 +290,44 @@
// createPackageLink.setMenu(emptyContextMenu);
}
+ private void addContextMenuContributions (IPackageNode context)
+ {
+ for (Iterator iter = nodePopupMenuContributions.iterator(); iter.hasNext(); )
+ {
+ NodeContribution contribution = (NodeContribution) iter.next();
+
+ addContextMenuContribution(contribution, context);
+ }
+ }
+
+ private void addContextMenuContribution(final NodeContribution contribution, IPackageNode context)
+ {
+ if (contribution.isEnabledForNodeType(context.getNodeType()))
+ {
+ Action action = new Action () {
+ public String getId() {
+ return contribution.getId();
+ }
+
+ public ImageDescriptor getImageDescriptor() {
+ return contribution.getIcon();
+ }
+
+ public String getText() {
+ return contribution.getLabel();
+ }
+
+ public void run() {
+ contribution.getActionDelegate().init(ProjectPackagesView.this);
+ contribution.getActionDelegate().run(this);
+ }
+ };
+
+ contextMenuManager.add(action);
+ }
+ }
+
+
public void projectSelected(final IProject project)
{
if (project != null && project.equals(currentProject)) return;
More information about the jboss-cvs-commits
mailing list