[jboss-cvs] jbosside/core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/dialogs ...

Marshall Culpepper mculpepper at jboss.com
Mon Nov 6 16:36:51 EST 2006


  User: mculpepper
  Date: 06/11/06 16:36:51

  Added:       core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/dialogs 
                        PackageNodeDestinationDialog.java
  Log:
  initial commit of the new "packages" tooling ui plugin
  
  Revision  Changes    Path
  1.1      date: 2006/11/06 21:36:51;  author: mculpepper;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/dialogs/PackageNodeDestinationDialog.java
  
  Index: PackageNodeDestinationDialog.java
  ===================================================================
  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.runtime.CoreException;
  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.core.util.ProjectUtil;
  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 TreeViewer destinationTree;
  	private Object packageDestination;
  	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.packageDestination = destination;
  		 this.showWorkspace = showWorkspace;
  		 this.showNodes = showNodes;
  		 setupDestinationList();
  	}
  	 
  	 private void setupDestinationList ()
  	 {
  		 ArrayList destinations = new ArrayList();
  
  		 if (showWorkspace) {
  			 destinations.addAll(ProjectUtil.getAllOpenedProjects());
  		 }
  		 
  		 if (packageDestination instanceof IContainer) {
  			 if (showNodes) {
  				 destinations.addAll(Arrays.asList(PackagesCore.getProjectPackages(((IContainer)packageDestination).getProject(), new NullProgressMonitor())));
  			 }
  		 }
  		 
  		 else if (packageDestination instanceof IPackageNode) {
  			 IPackageNode node = (IPackageNode)packageDestination;
  			 if (showNodes) {
  				 destinations.addAll(Arrays.asList(PackagesCore.getProjectPackages(node.getProject(), new NullProgressMonitor())));
  			 }
  			 String message = PackagesUIMessages.PackageNodeDestinationDialog_messagePrefix;
  			 switch (node.getNodeType()) {
  				 case IPackageNode.TYPE_PACKAGE: message += PackagesUIMessages.PackageNodeDestinationDialog_packageLabel; break;
  				 case IPackageNode.TYPE_PACKAGE_FILESET: message += PackagesUIMessages.PackageNodeDestinationDialog_filesetLabel; break;
  				 case IPackageNode.TYPE_PACKAGE_FOLDER: message += PackagesUIMessages.PackageNodeDestinationDialog_folderLabel; break;
  			 }
  			 message += ".";
  			 setMessage(message);
  		 }
  		 
  		 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) {
  					// TODO Auto-generated catch block
  					e.printStackTrace();
  				}
  			}
  			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) {
  			if (element instanceof IPackageNode)
  			{
  				IPackageNode node = (IPackageNode) element;
  				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.size() > 0;
  			}
  			else if (element instanceof IContainer)
  			{
  				IContainer container = (IContainer) element;
  				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.size() > 0;
  				} catch (CoreException e) {
  					// TODO Auto-generated catch block
  					e.printStackTrace();
  				}
  			}
  			return false;
  		}
  
  		public Object[] getElements(Object inputElement) {
  			if (inputElement instanceof Collection)
  				return ((Collection)inputElement).toArray();
  			
  			return new Object[0];
  		}
  
  		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