[jbosstools-commits] JBoss Tools SVN: r2891 - in trunk/seam/plugins/org.jboss.tools.seam.ui: META-INF and 4 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Fri Aug 3 13:15:14 EDT 2007


Author: scabanovich
Date: 2007-08-03 13:15:14 -0400 (Fri, 03 Aug 2007)
New Revision: 2891

Added:
   trunk/seam/plugins/org.jboss.tools.seam.ui/icons/view/package.gif
   trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/actions/ScopePresentationActionProvider.java
Modified:
   trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF
   trunk/seam/plugins/org.jboss.tools.seam.ui/plugin.xml
   trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/SeamUiImages.java
   trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/AbstractSeamContentProvider.java
   trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/SeamJarFilter.java
   trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/SeamLabelProvider.java
Log:
JBIDE-610,JBIDE-652

Modified: trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF	2007-08-03 17:14:52 UTC (rev 2890)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF	2007-08-03 17:15:14 UTC (rev 2891)
@@ -11,6 +11,7 @@
  org.eclipse.ui.ide,
  org.eclipse.ui.forms,
  org.eclipse.ui.navigator,
+ org.eclipse.ui.navigator.resources,
  org.eclipse.jst.servlet.ui,
  org.eclipse.wst.web.ui,
  org.eclipse.wst.common.project.facet.ui,

Added: trunk/seam/plugins/org.jboss.tools.seam.ui/icons/view/package.gif
===================================================================
(Binary files differ)


Property changes on: trunk/seam/plugins/org.jboss.tools.seam.ui/icons/view/package.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/seam/plugins/org.jboss.tools.seam.ui/plugin.xml
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/plugin.xml	2007-08-03 17:14:52 UTC (rev 2890)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/plugin.xml	2007-08-03 17:15:14 UTC (rev 2891)
@@ -147,7 +147,14 @@
 	        </or>
 	      </enablement>
 	    </actionProvider>
+	    <actionProvider
+	      class="org.jboss.tools.seam.ui.views.actions.ScopePresentationActionProvider"
+	      id="a1">
+	      <enablement>
+	      </enablement>
+	    </actionProvider>
 	  </navigatorContent>
+
       <commonFilter
             class="org.jboss.tools.seam.ui.views.SeamJarFilter"
             description="Hide Seam Components loaded from libraries and not overriden in project"
@@ -194,6 +201,12 @@
 					</or>
 				</enablement>
 			</actionProvider>
+			<actionProvider
+					class="org.jboss.tools.seam.ui.views.actions.ScopePresentationActionProvider"
+					id="a2">
+				<enablement>
+				</enablement>
+			</actionProvider>
 		</navigatorContent>
 	</extension>
 

Modified: trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/SeamUiImages.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/SeamUiImages.java	2007-08-03 17:14:52 UTC (rev 2890)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/SeamUiImages.java	2007-08-03 17:15:14 UTC (rev 2891)
@@ -25,6 +25,7 @@
 	public static Image ROLE_IMAGE = getImage("view/role.gif");
 	public static Image JAVA_IMAGE = getImage("view/java.gif");
 	public static Image JAVA_BINARY_IMAGE = getImage("view/java_binary.gif");
+	public static Image PACKAGE_IMAGE = getImage("view/package.gif");
 	
 	public static Image getImage(String key) {
 		return INSTANCE.createImageDescriptor(key).createImage();

Modified: trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/AbstractSeamContentProvider.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/AbstractSeamContentProvider.java	2007-08-03 17:14:52 UTC (rev 2890)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/AbstractSeamContentProvider.java	2007-08-03 17:15:14 UTC (rev 2891)
@@ -33,11 +33,13 @@
 import org.jboss.tools.seam.core.ISeamComponentDeclaration;
 import org.jboss.tools.seam.core.ISeamElement;
 import org.jboss.tools.seam.core.ISeamJavaComponentDeclaration;
+import org.jboss.tools.seam.core.ISeamPackage;
 import org.jboss.tools.seam.core.ISeamProject;
 import org.jboss.tools.seam.core.ISeamScope;
 import org.jboss.tools.seam.core.SeamCorePlugin;
 import org.jboss.tools.seam.core.event.ISeamProjectChangeListener;
 import org.jboss.tools.seam.core.event.SeamProjectChangeEvent;
+import org.jboss.tools.seam.ui.views.actions.ScopePresentationActionProvider;
 
 /**
  * Basic type for content providers that add seam components 
@@ -58,11 +60,19 @@
 	IResourceChangeListener listener = new ResourceChangeListener();
 	Set<ISeamProject> processed = new HashSet<ISeamProject>();
 	
+
 	public AbstractSeamContentProvider() {}
 
 	public Object[] getElements(Object inputElement) {
 		return getChildren(inputElement);
 	}
+	
+	boolean isNotShowingScopeNodes() {
+		return ScopePresentationActionProvider.isScopePresentedAsLabel();
+//		if(viewer == null) return false;
+//		Boolean b = (Boolean)viewer.getData("scopeAsNode");
+//		return b != null && b.booleanValue();
+	}
 
 	public boolean hasChildren(Object element) {
 		if(element instanceof ISeamComponentDeclaration) return false;
@@ -72,10 +82,18 @@
 
 	public Object[] getChildren(Object parentElement) {
 		if(parentElement instanceof ISeamProject) {
-			return ((ISeamProject)parentElement).getScopes();
+			ISeamProject project = (ISeamProject)parentElement;
+			if(isNotShowingScopeNodes()) {
+				project.resolve();
+				return project.getPackages().toArray(new Object[0]);
+			}
+			return project.getScopes();
 		} else if(parentElement instanceof ISeamScope) {
 			((ISeamScope)parentElement).getSeamProject().resolve();
-			return ((ISeamScope)parentElement).getComponents().toArray(new Object[0]);
+			return ((ISeamScope)parentElement).getPackages().toArray(new Object[0]);
+//			return ((ISeamScope)parentElement).getComponents().toArray(new Object[0]);
+		} else if(parentElement instanceof ISeamPackage) {
+			return ((ISeamPackage)parentElement).getComponents().toArray(new Object[0]);
 		} else if(parentElement instanceof ISeamComponent) {
 			List<Object> children = new ArrayList<Object>();
 			Set<ISeamComponentDeclaration> ds = ((ISeamComponent)parentElement).getAllDeclarations();
@@ -96,6 +114,17 @@
 			ISeamElement p = ((IRole)element).getParent();
 			return p == null ? p : p.getParent();
 		} else if(element instanceof ISeamElement) {
+			if(element instanceof ISeamComponent) {
+				ISeamComponent c = (ISeamComponent)element;
+				if(isNotShowingScopeNodes()) {
+					return c.getSeamProject().getPackage(c);
+				} else {
+					ISeamScope s = (ISeamScope)c.getParent();
+					ISeamPackage p = s.getPackage(c);
+					return p == null ? s : p;
+					
+				}
+			}
 			return ((ISeamElement)element).getParent();
 		}
 		return null;

Modified: trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/SeamJarFilter.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/SeamJarFilter.java	2007-08-03 17:14:52 UTC (rev 2890)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/SeamJarFilter.java	2007-08-03 17:15:14 UTC (rev 2891)
@@ -17,6 +17,7 @@
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.jboss.tools.seam.core.ISeamComponent;
 import org.jboss.tools.seam.core.ISeamComponentDeclaration;
+import org.jboss.tools.seam.core.ISeamPackage;
 
 /**
  * 
@@ -30,6 +31,9 @@
 		if(element instanceof ISeamComponent) {
 			return isUserDefinedComponent((ISeamComponent)element);
 		}
+		if(element instanceof ISeamPackage) {
+			return isUserDefinedPackage((ISeamPackage)element);
+		}
 		return true;
 	}
 	
@@ -41,10 +45,14 @@
 				return true;
 			}
 		}
-		
 		return false;
 	}
 	
+	boolean isUserDefinedPackage(ISeamPackage p) {
+		for (ISeamComponent c : p.getComponents()) {
+			if(isUserDefinedComponent(c)) return true;
+		}
+		return false;
+	}
 	
-
 }

Modified: trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/SeamLabelProvider.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/SeamLabelProvider.java	2007-08-03 17:14:52 UTC (rev 2890)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/SeamLabelProvider.java	2007-08-03 17:15:14 UTC (rev 2891)
@@ -29,11 +29,13 @@
 import org.jboss.tools.seam.core.ISeamElement;
 import org.jboss.tools.seam.core.ISeamJavaComponentDeclaration;
 import org.jboss.tools.seam.core.ISeamJavaSourceReference;
+import org.jboss.tools.seam.core.ISeamPackage;
 import org.jboss.tools.seam.core.ISeamProject;
 import org.jboss.tools.seam.core.ISeamScope;
 import org.jboss.tools.seam.internal.core.SeamComponentDeclaration;
 import org.jboss.tools.seam.internal.core.SeamProject;
 import org.jboss.tools.seam.ui.SeamUiImages;
+import org.jboss.tools.seam.ui.views.actions.ScopePresentationActionProvider;
 
 /**
  * @author Viacheslav Kabanovich
@@ -48,8 +50,15 @@
 			return ((IProjectNature)element).getProject().getName();
 		} else if(element instanceof ISeamScope) {
 			return ((ISeamScope)element).getType().getLabel();
+		} else if(element instanceof ISeamPackage) {
+			return ((ISeamPackage)element).getName();
 		} else if(element instanceof ISeamComponent) {
-			return ((ISeamComponent)element).getName();
+			ISeamComponent c = (ISeamComponent)element;
+			String name = c.getName();
+			if(ScopePresentationActionProvider.isScopePresentedAsLabel()) {
+				name += " " + ((ISeamScope)c.getParent()).getType().getLabel();
+			}
+			return name; 
 		} else if (element instanceof IRole) {
 			return "" + ((IRole)element).getName();
 		} else if(element instanceof ISeamJavaSourceReference) {
@@ -76,6 +85,8 @@
 			return SeamUiImages.PROJECT_IMAGE;
 		} else if(obj instanceof ISeamScope) {
 			return SeamUiImages.SCOPE_IMAGE;
+		} else if(obj instanceof ISeamPackage) {
+			return SeamUiImages.PACKAGE_IMAGE;
 		} else if(obj instanceof ISeamComponent) {
 			return SeamUiImages.COMPONENT_IMAGE;
 		} else if(obj instanceof IRole) {

Added: trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/actions/ScopePresentationActionProvider.java
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/actions/ScopePresentationActionProvider.java	                        (rev 0)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/views/actions/ScopePresentationActionProvider.java	2007-08-03 17:15:14 UTC (rev 2891)
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Exadel, Inc. and Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/ 
+package org.jboss.tools.seam.ui.views.actions;
+
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.jface.action.ContributionItem;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.navigator.CommonActionProvider;
+import org.jboss.tools.seam.core.SeamPreferences;
+
+/**
+ * Action provider for Seam Components view.
+ * @author Viacheslav Kabanovich
+ */
+public class ScopePresentationActionProvider extends CommonActionProvider {
+	public static String SCOPE_PRESENTATION = "seam.scopePresentation";
+	
+	public static boolean isScopePresentedAsLabel() {
+		String s = SeamPreferences.getInstancePreference(SCOPE_PRESENTATION);
+		return "label".equals(s);
+	}
+	
+	public void setScopePresentedAsLabel(boolean s) {
+		IEclipsePreferences p = SeamPreferences.getInstancePreferences();
+		p.put(SCOPE_PRESENTATION, s ? "label" : "node");
+	}
+	
+	public ScopePresentationActionProvider() {}
+
+    public void fillContextMenu(IMenuManager menu) {
+    }
+
+    public void fillActionBars(IActionBars actionBars) {
+    	if(scopePresentation == null) {
+    		scopePresentation = new ScopePresentationContribution();
+			IMenuManager menuManager = actionBars.getMenuManager();
+			String SEP_NAME = "aaa";
+	        if(menuManager.find(IWorkbenchActionConstants.MB_ADDITIONS) != null) 
+	        	menuManager.insertAfter(IWorkbenchActionConstants.MB_ADDITIONS, new Separator(SEP_NAME));
+	        else
+	        	menuManager.add(new Separator(SEP_NAME));
+	        menuManager.appendToGroup(SEP_NAME, scopePresentation);
+	        actionBars.updateActionBars();
+    	}
+    }
+
+    ScopePresentationContribution scopePresentation = null;
+    boolean scopeAsNode = !isScopePresentedAsLabel();
+    
+    class ScopePresentationContribution extends ContributionItem {
+    	boolean filled = false;
+    	public void fill(Menu menu, int index) {
+    		if(filled) return;
+    		filled = true;
+    		MenuItem item = new MenuItem(menu, SWT.CASCADE);
+    		item.setText("Scope Presentation");
+    		Menu smenu = new Menu(item);
+    		item.setMenu(smenu);
+    		final MenuItem item1 = new MenuItem(smenu, SWT.RADIO);
+    		item1.setText("As node");
+    		item1.setSelection(scopeAsNode);
+    		item1.addSelectionListener(new SelectionListener() {
+				public void widgetDefaultSelected(SelectionEvent e) {
+					widgetSelected(e);
+				}
+				public void widgetSelected(SelectionEvent e) {
+					if(item1.getSelection() && !scopeAsNode) {
+						scopeAsNode = true;
+						setUpViewer();
+					}
+				}
+    			
+    		});
+    		final MenuItem item2 = new MenuItem(smenu, SWT.RADIO);
+    		item2.setText("As label");
+    		item2.setSelection(!scopeAsNode);
+    		item2.addSelectionListener(new SelectionListener() {
+				public void widgetDefaultSelected(SelectionEvent e) {
+					widgetSelected(e);
+				}
+				public void widgetSelected(SelectionEvent e) {
+					if(item2.getSelection() && scopeAsNode) {
+						scopeAsNode = false;
+						setUpViewer();
+					}
+				}
+    			
+    		});
+    	}
+    	
+    }
+    
+    public void dispose() {
+    	scopePresentation = null;
+    	super.dispose();
+    }
+
+	void setUpViewer() {
+		setScopePresentedAsLabel(!scopeAsNode);
+		BusyIndicator.showWhile(PlatformUI.getWorkbench()
+				.getActiveWorkbenchWindow().getShell().getDisplay(),
+			new Runnable() {
+				public void run() {
+					try {
+						getActionSite().getStructuredViewer().refresh();
+					} catch (Exception e2) {
+						//ignore
+					}
+				}
+			}
+		);
+	}
+
+}




More information about the jbosstools-commits mailing list