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

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


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

  Added:       core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/providers  
                        PackagesContentProvider.java
                        PackagesLabelProvider.java
  Log:
  initial commit of the new "packages" tooling ui plugin
  
  Revision  Changes    Path
  1.1      date: 2006/11/06 21:36:52;  author: mculpepper;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/providers/PackagesContentProvider.java
  
  Index: PackagesContentProvider.java
  ===================================================================
  package org.jboss.ide.eclipse.packages.ui.providers;
  
  import java.util.ArrayList;
  import java.util.Hashtable;
  
  import org.eclipse.core.resources.IContainer;
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.resources.IResource;
  import org.eclipse.jface.viewers.ITreeContentProvider;
  import org.eclipse.jface.viewers.Viewer;
  import org.jboss.ide.eclipse.packages.core.model.IPackage;
  import org.jboss.ide.eclipse.packages.core.model.IPackageFileSet;
  import org.jboss.ide.eclipse.packages.core.model.IPackageNode;
  import org.jboss.ide.eclipse.packages.core.model.IPackageNodeVisitor;
  import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
  
  public class PackagesContentProvider implements ITreeContentProvider {
  	
  	private Hashtable filesetProperties;
  	
  	public PackagesContentProvider ()
  	{
  		filesetProperties = new Hashtable();
  	}
  	
  	public static class FileSetProperty {
  		private IPackageFileSet fileset;
  		private String name;
  		
  		public FileSetProperty(String name, IPackageFileSet fileset)
  		{
  			this.name = name;
  			this.fileset = fileset;
  		}
  		
  		public String getName () { return name; }
  		public IPackageFileSet getFileSet() { return fileset; }
  	}
  	
  	public static final String FILESET_PROP_SRC_CONTAINER = "srcContainer";
  	public static final String FILESET_PROP_SRC_PROJECT = "srcProject";
  	public static final String FILESET_PROP_DIR = "dir";
  	public static final String FILESET_PROP_INCLUDES = "includes";
  	public static final String FILESET_PROP_EXCLUDES = "excludes";
  	public static final String FILESET_PROP_DEST_FILE = "destFile";
  	public static final String FILESET_PROP_FILE = "file";
  	
  	public void addFilesetProperties (IProject project, IPackageFileSet fileset)
  	{
  		ArrayList props = new ArrayList();
  		if (fileset.isSingleFile())
  		{
  			if (fileset.getDestinationFilename() != null && fileset.getDestinationFilename().length() > 0)
  				props.add(new FileSetProperty(FILESET_PROP_DEST_FILE, fileset));
  			
  			props.add(new FileSetProperty(FILESET_PROP_FILE, fileset));
  		}
  		else {
  			if (fileset.getExcludesPattern() != null && fileset.getExcludesPattern().length() > 0)
  				props.add(new FileSetProperty(FILESET_PROP_EXCLUDES, fileset));
  			
  			if (fileset.getIncludesPattern() != null && fileset.getIncludesPattern().length() > 0)
  				props.add(new FileSetProperty(FILESET_PROP_INCLUDES, fileset));
  			
  			if (fileset.isInWorkspace())
  			{
  				IContainer sourceContainer = fileset.getSourceContainer();
  				if (!(sourceContainer.getType() == IResource.PROJECT && sourceContainer.equals(project)))
  					props.add(new FileSetProperty(FILESET_PROP_SRC_CONTAINER, fileset));
  			} else {
  				props.add(new FileSetProperty(FILESET_PROP_DIR, fileset));
  			}
  			
  			if (!fileset.getProject().equals(project))
  				props.add(new FileSetProperty(FILESET_PROP_SRC_PROJECT, fileset));
  		}
  		filesetProperties.put(fileset, props);
  	}
  	
  	public Object[] getChildren(Object parentElement) {
  		if (parentElement instanceof IPackageFileSet)
  		{
  			IPackageFileSet fileset = (IPackageFileSet) parentElement;
  			return ((ArrayList)filesetProperties.get(fileset)).toArray();
  		}
  		else if (parentElement instanceof IPackageNode)
  		{
  			IPackageNode node = (IPackageNode)parentElement;
  			return node.getAllChildren();
  		}
  		else return new Object[0];
  	}
  
  	public Object getParent(Object element) {
  		if (element instanceof IPackageNode)
  		{
  			IPackageNode node = (IPackageNode) element;
  			return node.getParent();
  		}
  		else if (element instanceof FileSetProperty)
  		{
  			return ((FileSetProperty)element).getFileSet();
  		}
  		return new Object[0];
  	}
  
  	public boolean hasChildren(Object element) {
  		if (element instanceof IPackageFileSet)
  		{
  			return true;
  		}
  		else if (element instanceof IPackageNode)
  		{
  			IPackageNode node = (IPackageNode) element;
  			return node.hasChildren();
  		}
  		return false;
  	}
  
  	public Object[] getElements(Object inputElement) {
  		return (Object[]) inputElement;
  	}
  
  	public void dispose() {}
  
  	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  		if (newInput == null) return;
  		
  		IPackage packages[] = (IPackage[]) newInput;
  		
  		if (oldInput != newInput && packages.length > 0)
  		{
  			final IProject project = (IProject) packages[0].getProject();
  			filesetProperties.clear();
  			
  			PackagesCore.visitProjectPackages(project, new IPackageNodeVisitor() {
  				public boolean visit(IPackageNode node) {
  					if (node.getNodeType() == IPackageNode.TYPE_PACKAGE_FILESET)
  					{
  						IPackageFileSet fileset = (IPackageFileSet) node;
  						addFilesetProperties(project, fileset);
  					}
  					return true;
  				}
  			});
  		}
  	}
  
  }
  
  
  
  1.1      date: 2006/11/06 21:36:52;  author: mculpepper;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.ui/src/main/org/jboss/ide/eclipse/packages/ui/providers/PackagesLabelProvider.java
  
  Index: PackagesLabelProvider.java
  ===================================================================
  package org.jboss.ide.eclipse.packages.ui.providers;
  
  import org.eclipse.jface.viewers.ILabelProvider;
  import org.eclipse.jface.viewers.ILabelProviderListener;
  import org.eclipse.swt.graphics.Image;
  import org.eclipse.ui.ISharedImages;
  import org.eclipse.ui.PlatformUI;
  import org.eclipse.ui.ide.IDE;
  import org.jboss.ide.eclipse.packages.core.model.IPackage;
  import org.jboss.ide.eclipse.packages.core.model.IPackageFileSet;
  import org.jboss.ide.eclipse.packages.core.model.IPackageFolder;
  import org.jboss.ide.eclipse.packages.core.model.IPackageNode;
  import org.jboss.ide.eclipse.packages.ui.PackagesUIMessages;
  import org.jboss.ide.eclipse.packages.ui.PackagesUIPlugin;
  import org.jboss.ide.eclipse.packages.ui.providers.PackagesContentProvider.FileSetProperty;
  
  public class PackagesLabelProvider implements ILabelProvider {
  
  	public Image getImage(Object element) {
  		Image image = internalGetImage(element);
  		
  		if (image != null)
  		{
  			image = PlatformUI.getWorkbench().getDecoratorManager().decorateImage(image, element);
  		}
  		
  		return image;
  	}
  	
  	public String getText(Object element) {
  		String text = internalGetText(element);
  		
  		if (text != null)
  		{
  			text = PlatformUI.getWorkbench().getDecoratorManager().decorateText(text, element);
  		}
  		return text;
  	}
  	
  	private Image internalGetImage(Object element) {
  		if (element instanceof IPackageNode)
  		{
  			IPackageNode node = (IPackageNode) element;
  			switch (node.getNodeType())
  			{
  				case IPackageNode.TYPE_PACKAGE: {
  					IPackage pkg = (IPackage) node;
  					if (!pkg.isExploded())
  						return PackagesUIPlugin.getImage(PackagesUIPlugin.IMG_PACKAGE);
  					else
  						return PackagesUIPlugin.getImage(PackagesUIPlugin.IMG_PACKAGE_EXPLODED);
  				}
  				case IPackageNode.TYPE_PACKAGE_FOLDER: return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
  				case IPackageNode.TYPE_PACKAGE_FILESET: {
  					IPackageFileSet fileset = (IPackageFileSet) node;
  					if (fileset.isSingleFile())
  						return PackagesUIPlugin.getImage(PackagesUIPlugin.IMG_SINGLE_FILE);
  					else
  						return PackagesUIPlugin.getImage(PackagesUIPlugin.IMG_MULTIPLE_FILES);
  				}
  			}
  		}
  		else if (element instanceof FileSetProperty)
  		{
  			FileSetProperty prop = (FileSetProperty)element;
  			if (PackagesContentProvider.FILESET_PROP_DEST_FILE.equals(prop.getName())
  				|| PackagesContentProvider.FILESET_PROP_FILE.equals(prop.getName()))
  			{
  				return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
  			}
  			else if (PackagesContentProvider.FILESET_PROP_EXCLUDES.equals(prop.getName()))
  			{
  				return PackagesUIPlugin.getDefault().getImageRegistry().get(PackagesUIPlugin.IMG_EXCLUDES);
  			}
  			else if (PackagesContentProvider.FILESET_PROP_INCLUDES.equals(prop.getName()))
  			{
  				return PackagesUIPlugin.getDefault().getImageRegistry().get(PackagesUIPlugin.IMG_INCLUDES);
  			}
  			else if (PackagesContentProvider.FILESET_PROP_SRC_CONTAINER.equals(prop.getName())
  				|| PackagesContentProvider.FILESET_PROP_DIR.equals(prop.getName()))
  			{
  				return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
  			}
  			else if (PackagesContentProvider.FILESET_PROP_SRC_PROJECT.equals(prop.getName()))
  			{
  				return PlatformUI.getWorkbench().getSharedImages().getImage(IDE.SharedImages.IMG_OBJ_PROJECT);
  			}
  		}
  		return null;
  	}
  
  	private String internalGetText(Object element) {
  		if (element instanceof IPackageNode)
  		{
  			IPackageNode node = (IPackageNode) element;
  			switch (node.getNodeType())
  			{
  				case IPackageNode.TYPE_PACKAGE: return getPackageText((IPackage)element);
  				case IPackageNode.TYPE_PACKAGE_FOLDER: return getPackageFolderText((IPackageFolder)element);
  				case IPackageNode.TYPE_PACKAGE_FILESET: return getPackageFileSetText((IPackageFileSet)element);
  			}
  		}
  		else if (element instanceof FileSetProperty)
  		{
  			return getFileSetPropertyText((FileSetProperty)element);
  		}
  		return "";
  	}
  	
  	private String getPackageText (IPackage pkg)
  	{
  		return pkg.getName();
  	}
  	
  	private String getPackageFolderText (IPackageFolder folder)
  	{
  		return folder.getName();
  	}
  	
  	private String getPackageFileSetText (IPackageFileSet fileset)
  	{
  		if (fileset.isSingleFile())
  		{
  			return fileset.getFile().getProjectRelativePath().toString();
  		}
  		else
  		{
  			if (fileset.isInWorkspace())
  			{
  				String text = fileset.getSourceContainer().getName();
  				if (fileset.getIncludesPattern() != null)
  					text += " : " + fileset.getIncludesPattern();
  				return text;
  			} else {
  				return fileset.getIncludesPattern();
  			}
  		}
  		
  	}
  	
  	private String getFileSetPropertyText (FileSetProperty property)
  	{
  		if (PackagesContentProvider.FILESET_PROP_FILE.equals(property.getName()))
  		{
  			return PackagesUIMessages.PackagesLabelProvider_filesetProperty_file + property.getFileSet().getFile().getProjectRelativePath().toString();
  		}
  		else if (PackagesContentProvider.FILESET_PROP_DEST_FILE.equals(property.getName()))
  		{
  			return PackagesUIMessages.PackagesLabelProvider_filesetProperty_destination + property.getFileSet().getDestinationFilename();
  		}
  		else if (PackagesContentProvider.FILESET_PROP_EXCLUDES.equals(property.getName()))
  		{
  			return PackagesUIMessages.PackagesLabelProvider_filesetProperty_excludes + property.getFileSet().getExcludesPattern();
  		}
  		else if (PackagesContentProvider.FILESET_PROP_INCLUDES.equals(property.getName()))
  		{
  			return PackagesUIMessages.PackagesLabelProvider_filesetProperty_includes + property.getFileSet().getIncludesPattern();
  		}
  		else if (PackagesContentProvider.FILESET_PROP_SRC_CONTAINER.equals(property.getName()))
  		{
  			return PackagesUIMessages.PackagesLabelProvider_filesetProperty_sourceFolder + property.getFileSet().getSourceContainer().getProjectRelativePath().toString();
  		}
  		else if (PackagesContentProvider.FILESET_PROP_SRC_PROJECT.equals(property.getName()))
  		{
  			return PackagesUIMessages.PackagesLabelProvider_filesetProperty_project + property.getFileSet().getSourceProject().getName();
  		}
  		else if (PackagesContentProvider.FILESET_PROP_DIR.equals(property.getName()))
  		{
  			return PackagesUIMessages.PackagesLabelProvider_filesetProperty_dir + property.getFileSet().getSourceFolder().toString();
  		}
  		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