[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.ui.mbeans/src/org/jboss/ide/eclipse/as/ui/mbeans/editors ...

Robert Stryker rawblem at gmail.com
Wed Dec 13 13:30:50 EST 2006


  User: rawb    
  Date: 06/12/13 13:30:50

  Modified:    as/plugins/org.jboss.ide.eclipse.as.ui.mbeans/src/org/jboss/ide/eclipse/as/ui/mbeans/editors 
                        ServiceXMLOutlineConfiguration.java
  Log:
  Added another extension point to allow actions to be added to the outline view for xml elements. This was done so that the mbeans project does not directly depend on as.ui, and as.ui can extend as.ui.mbeans. 
  
  Not that this matters much.
  
  Revision  Changes    Path
  1.2       +48 -9     jbosside/as/plugins/org.jboss.ide.eclipse.as.ui.mbeans/src/org/jboss/ide/eclipse/as/ui/mbeans/editors/ServiceXMLOutlineConfiguration.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ServiceXMLOutlineConfiguration.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.ui.mbeans/src/org/jboss/ide/eclipse/as/ui/mbeans/editors/ServiceXMLOutlineConfiguration.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- ServiceXMLOutlineConfiguration.java	16 Nov 2006 22:45:30 -0000	1.1
  +++ ServiceXMLOutlineConfiguration.java	13 Dec 2006 18:30:50 -0000	1.2
  @@ -23,29 +23,29 @@
   
   import java.util.ArrayList;
   
  +import org.eclipse.core.runtime.CoreException;
  +import org.eclipse.core.runtime.IConfigurationElement;
  +import org.eclipse.core.runtime.IExtensionRegistry;
  +import org.eclipse.core.runtime.Platform;
   import org.eclipse.jface.action.IMenuListener;
   import org.eclipse.jface.action.IMenuManager;
  -import org.eclipse.jface.resource.ImageRegistry;
  -import org.eclipse.jface.resource.JFaceResources;
   import org.eclipse.jface.viewers.IContentProvider;
   import org.eclipse.jface.viewers.ILabelProvider;
  +import org.eclipse.jface.viewers.ISelection;
   import org.eclipse.jface.viewers.ITreeContentProvider;
   import org.eclipse.jface.viewers.LabelProvider;
   import org.eclipse.jface.viewers.TreeViewer;
   import org.eclipse.jface.viewers.Viewer;
   import org.eclipse.swt.graphics.Image;
   import org.eclipse.wst.sse.ui.internal.IReleasable;
  -import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
  -import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
   import org.eclipse.wst.xml.core.internal.document.DOMModelImpl;
  -import org.eclipse.wst.xml.core.internal.modelquery.ModelQueryUtil;
   import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
   import org.eclipse.wst.xml.ui.internal.contentoutline.XMLNodeActionManager;
  -import org.eclipse.wst.xml.ui.internal.editor.CMImageUtil;
   import org.eclipse.wst.xml.ui.internal.editor.XMLEditorPluginImageHelper;
   import org.eclipse.wst.xml.ui.internal.editor.XMLEditorPluginImages;
   import org.eclipse.wst.xml.ui.views.contentoutline.XMLContentOutlineConfiguration;
  -import org.w3c.dom.Attr;
  +import org.jboss.ide.eclipse.as.ui.mbeans.Activator;
  +import org.jboss.ide.eclipse.as.ui.mbeans.editors.proposals.IServiceXMLOutlineActionProvider;
   import org.w3c.dom.NamedNodeMap;
   import org.w3c.dom.Node;
   
  @@ -171,16 +171,34 @@
   	
   	private ActionManagerMenuListener fContextMenuFiller = null;
   
  -	
   	/**
   	 * Pilfered from superclass, where it's currently PRIVATE (BOOOO!)
   	 */
   	private class ActionManagerMenuListener implements IMenuListener, IReleasable {
   		private XMLNodeActionManager fActionManager;
   		private TreeViewer fTreeViewer;
  +		private OutlineMenuProvider[] menuProviders = null;
   
   		public ActionManagerMenuListener(TreeViewer viewer) {
   			fTreeViewer = viewer;
  +			
  +		}
  +
  +		public OutlineMenuProvider[] getProviders() {
  +			if( menuProviders == null ) {
  +				ArrayList list = new ArrayList();
  +				IExtensionRegistry registry = Platform.getExtensionRegistry();
  +				IConfigurationElement[] cf = registry.getConfigurationElementsFor(Activator.PLUGIN_ID, "ServiceXMLOutlineMenuProvider");
  +				for( int i = 0; i < cf.length; i++ ) {
  +					try {
  +						list.add(new OutlineMenuProvider(cf[i]));
  +					} catch( CoreException ce ) {
  +						ce.printStackTrace();
  +					}
  +				}
  +				menuProviders = (OutlineMenuProvider[]) list.toArray(new OutlineMenuProvider[list.size()]);
  +			}
  +			return menuProviders;
   		}
   
   		public void menuAboutToShow(IMenuManager manager) {
  @@ -188,6 +206,9 @@
   				fActionManager = createNodeActionManager(fTreeViewer);
   			}
   			fActionManager.fillContextMenu(manager, fTreeViewer.getSelection());
  +			for( int i = 0; i < getProviders().length; i++ ) {
  +				getProviders()[i].menuAboutToShow(manager, fTreeViewer.getSelection());
  +			}
   		}
   
   		public void release() {
  @@ -195,6 +216,24 @@
   			if (fActionManager != null) {
   				fActionManager.setModel(null);
   			}
  +			for( int i = 0; i < getProviders().length; i++ ) {
  +				getProviders()[i].release();
  +			}
  +		}
  +	}
  +	
  +	private static class OutlineMenuProvider {
  +		private IServiceXMLOutlineActionProvider listener;
  +		public OutlineMenuProvider(IConfigurationElement element) throws CoreException {
  +			listener = (IServiceXMLOutlineActionProvider)element.createExecutableExtension("class");
  +		}
  +		public void menuAboutToShow(IMenuManager manager, ISelection selection) {
  +			if( listener != null ) listener.menuAboutToShow(manager, selection);
  +		}
  +		public void release() {
  +			if( listener != null && listener instanceof IReleasable) {
  +				((IReleasable)listener).release();
  +			}
   		}
   	}
   	
  
  
  



More information about the jboss-cvs-commits mailing list