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
+ }
+ }
+ }
+ );
+ }
+
+}