[jboss-cvs] jbosside/core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/dialogs ...
Robert Stryker
rob.stryker at jboss.com
Mon Apr 16 13:56:53 EDT 2007
User: rawb
Date: 07/04/16 13:56:53
Added: core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/dialogs
PackageNodeDestinationDialog.java
Log:
Complete rewrite of the the two plugins leading to a cleaner, leaner project.
Revision Changes Path
1.5 +29 -89 jbosside/core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/dialogs/PackageNodeDestinationDialog.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PackageNodeDestinationDialog.java
===================================================================
RCS file: PackageNodeDestinationDialog.java
diff -N PackageNodeDestinationDialog.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ PackageNodeDestinationDialog.java 16 Apr 2007 17:56:53 -0000 1.5
@@ -0,0 +1,166 @@
+package org.jboss.ide.eclipse.packages.ui.dialogs;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
+import org.eclipse.ui.ide.IDE;
+import org.jboss.ide.eclipse.packages.core.model.IPackageNode;
+import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
+import org.jboss.ide.eclipse.packages.ui.PackagesUIMessages;
+import org.jboss.ide.eclipse.packages.ui.providers.PackagesLabelProvider;
+
+public class PackageNodeDestinationDialog extends ElementTreeSelectionDialog {
+
+ private boolean showWorkspace, showNodes;
+
+ public PackageNodeDestinationDialog(Shell parent, Object destination, boolean showWorkspace, boolean showNodes) {
+ super(parent, new DestinationLabelProvider(), new DestinationContentProvider());
+ setAllowMultiple(false);
+ setTitle(PackagesUIMessages.PackageNodeDestinationDialog_title);
+
+ this.showWorkspace = showWorkspace;
+ this.showNodes = showNodes;
+ setupDestinationList();
+ }
+
+ // TODO ADD a progress dialog!!!
+ private void setupDestinationList () {
+ ArrayList destinations = new ArrayList();
+
+ if (showWorkspace) {
+ destinations.addAll(Arrays.asList(ResourcesPlugin.getWorkspace().getRoot().getProjects()));
+ }
+
+ IProgressMonitor monitor = new NullProgressMonitor();
+
+ if( showNodes ) {
+ // add ALL packages from ALL projects
+ IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+ for( int i = 0; i < projects.length; i++ ) {
+ if( projects[i].isAccessible()) {
+ destinations.addAll(Arrays.asList(PackagesCore.getProjectPackages(projects[i], monitor, true)));
+ }
+ }
+ }
+
+ setInput(destinations);
+ }
+
+ private static class DestinationContentProvider implements ITreeContentProvider {
+ private static final Object[] NO_CHILDREN = new Object[0];
+
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof IPackageNode) {
+ IPackageNode node = (IPackageNode) parentElement;
+ List children = new ArrayList(Arrays.asList(node.getAllChildren()));
+ for (Iterator iter = children.iterator(); iter.hasNext(); ) {
+ IPackageNode child = (IPackageNode) iter.next();
+ if (child.getNodeType() == IPackageNode.TYPE_PACKAGE_FILESET)
+ iter.remove();
+ }
+ return children.toArray();
+ } else if (parentElement instanceof IContainer) {
+ IContainer container = (IContainer) parentElement;
+ try {
+ IResource members[] = container.members();
+ List folders = new ArrayList();
+ for (int i = 0; i < members.length; i++) {
+ if (members[i].getType() == IResource.FOLDER) folders.add(members[i]);
+ }
+
+ return folders.toArray();
+ } catch (CoreException e) {
+ // swallow
+ }
+ }
+ return NO_CHILDREN;
+ }
+
+ public Object getParent(Object element) {
+ if (element instanceof IPackageNode) {
+ IPackageNode node = (IPackageNode) element;
+ return node.getParent();
+ } else if (element instanceof IContainer) {
+ IContainer container = (IContainer) element;
+ return container.getParent();
+ }
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ return getChildren(element).length > 0;
+ }
+
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof Collection)
+ return ((Collection)inputElement).toArray();
+
+ return NO_CHILDREN;
+ }
+
+ public void dispose() {}
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
+ }
+
+ private static class DestinationLabelProvider implements ILabelProvider {
+ private PackagesLabelProvider delegate;
+
+ public DestinationLabelProvider () {
+ delegate = new PackagesLabelProvider();
+ }
+
+ public Image getImage(Object element) {
+ if (element instanceof IPackageNode) {
+ return delegate.getImage(element);
+ } else if (element instanceof IProject) {
+ return PlatformUI.getWorkbench().getSharedImages().getImage(IDE.SharedImages.IMG_OBJ_PROJECT);
+ } else if (element instanceof IFolder) {
+ return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
+ }
+ return null;
+ }
+
+ public String getText(Object element) {
+ if (element instanceof IPackageNode) {
+ return delegate.getText(element);
+ } else if (element instanceof IContainer) {
+ return ((IContainer)element).getName();
+ }
+ return "";
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return true;
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ }
+}
More information about the jboss-cvs-commits
mailing list