[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages ...

Robert Stryker rob.stryker at jboss.com
Sat Mar 3 00:25:07 EST 2007


  User: rawb    
  Date: 07/03/03 00:25:07

  Modified:    as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages 
                        WARInfoWizardPage.java
  Log:
  recent changes for integration w./ packaging
  
  Revision  Changes    Path
  1.3       +245 -4    jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/WARInfoWizardPage.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: WARInfoWizardPage.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/WARInfoWizardPage.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- WARInfoWizardPage.java	2 Mar 2007 21:37:04 -0000	1.2
  +++ WARInfoWizardPage.java	3 Mar 2007 05:25:07 -0000	1.3
  @@ -1,15 +1,46 @@
   package org.jboss.ide.eclipse.as.ui.packages;
   
  +import java.util.ArrayList;
  +import java.util.Arrays;
  +import java.util.Collection;
  +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.NullProgressMonitor;
  +import org.eclipse.core.runtime.Path;
  +import org.eclipse.jface.viewers.ILabelProvider;
  +import org.eclipse.jface.viewers.ILabelProviderListener;
  +import org.eclipse.jface.viewers.ITreeContentProvider;
   import org.eclipse.jface.viewers.TreeViewer;
  +import org.eclipse.jface.viewers.Viewer;
  +import org.eclipse.jface.window.Window;
   import org.eclipse.swt.SWT;
  +import org.eclipse.swt.events.SelectionEvent;
  +import org.eclipse.swt.events.SelectionListener;
  +import org.eclipse.swt.graphics.Image;
   import org.eclipse.swt.layout.FormAttachment;
   import org.eclipse.swt.layout.FormData;
   import org.eclipse.swt.layout.FormLayout;
  +import org.eclipse.swt.widgets.Button;
   import org.eclipse.swt.widgets.Composite;
   import org.eclipse.swt.widgets.Group;
  +import org.eclipse.swt.widgets.Shell;
  +import org.eclipse.swt.widgets.Text;
  +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.as.core.packages.ObscurelyNamedPackageTypeSuperclass;
   import org.jboss.ide.eclipse.as.core.packages.WarPackageType;
  +import org.jboss.ide.eclipse.as.ui.Messages;
   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.PackagesCore;
   import org.jboss.ide.eclipse.packages.core.model.types.IPackageType;
   import org.jboss.ide.eclipse.packages.ui.PackagesUIPlugin;
  @@ -19,10 +50,12 @@
   
   public class WARInfoWizardPage extends WizardPageWithNotification {
   
  -	private Group webinfGroup, classesGroup, libGroup;
  +	private Group webinfGroup, previewGroup;
   	private NewWARWizard wizard;
   	private TreeViewer warPreview;
   	private boolean hasCreated = false;
  +	private Text webinfFolders;
  +	private Button webinfFoldersButton;
   	public WARInfoWizardPage (NewWARWizard wizard) {
   		super("WAR information", "WAR Information", PackagesUIPlugin.getImageDescriptor(PackagesUIPlugin.IMG_NEW_WAR_WIZARD));
   		this.wizard = wizard;
  @@ -33,7 +66,31 @@
   				"Later, you can customize this packaging structure further.");
   		Composite main = new Composite(parent, SWT.NONE);
   		main.setLayout(new FormLayout());
  -		warPreview = new TreeViewer(main);
  +		
  +		layoutGroups(main);
  +		fillGroups();
  +		
  +		setControl(main);
  +	}
  +	protected void layoutGroups(Composite main) {
  +		webinfGroup = new Group(main, SWT.NONE);
  +		FormData webinfData = new FormData();
  +		webinfData.left = new FormAttachment(0,5);
  +		webinfData.right = new FormAttachment(100,-5);
  +		webinfData.top = new FormAttachment(0,5);
  +		webinfGroup.setLayoutData(webinfData);
  +		webinfGroup.setText("WEB-INF Folders");
  +		
  +		previewGroup = new Group(main, SWT.NONE);
  +		previewGroup.setText("Preview");
  +		FormData previewData = new FormData();
  +		previewData.left = new FormAttachment(0,5);
  +		previewData.right = new FormAttachment(100,-5);
  +		previewData.top = new FormAttachment(webinfGroup,5);
  +		previewData.bottom = new FormAttachment(100,-5);
  +		previewGroup.setLayoutData(previewData);
  +		previewGroup.setLayout(new FormLayout());
  +		warPreview = new TreeViewer(previewGroup);
   		warPreview.setLabelProvider(new PackagesLabelProvider());
   		warPreview.setContentProvider(new PackagesContentProvider());
   		FormData warPreviewData = new FormData();
  @@ -42,9 +99,58 @@
   		warPreviewData.top = new FormAttachment(0,5);
   		warPreviewData.bottom = new FormAttachment(100,-5);
   		warPreview.getTree().setLayoutData(warPreviewData);
  -		setControl(main);
  +		
   	}
   
  +	protected void fillGroups() {
  +		webinfGroup.setLayout(new FormLayout());
  +		webinfFolders = new Text(webinfGroup, SWT.BORDER | SWT.READ_ONLY);
  +		webinfFoldersButton = new Button(webinfGroup, SWT.PUSH);
  +		webinfFoldersButton.setText(Messages.browse);
  +		
  +		FormData buttonData = new FormData();
  +		buttonData.right = new FormAttachment(100,-5);
  +		webinfFoldersButton.setLayoutData(buttonData);
  +		
  +		FormData textData = new FormData();
  +		textData.left = new FormAttachment(0,5);
  +		textData.right = new FormAttachment(webinfFoldersButton, -5);
  +		webinfFolders.setLayoutData(textData);
  +		
  +		webinfFoldersButton.addSelectionListener(new SelectionListener() {
  +			public void widgetDefaultSelected(SelectionEvent e) {
  +			}
  +			public void widgetSelected(SelectionEvent e) {
  +				WorkspaceFolderSelectionDialog dialog = new WorkspaceFolderSelectionDialog(new Shell(), true, webinfFolders.getText());
  +				if( dialog.open() == Window.OK) {
  +					ArrayList selectedFolders = new ArrayList();
  +					Object[] o = dialog.getResult();
  +					String imploded = "";
  +					for( int i = 0; i < o.length; i++ ) {
  +						selectedFolders.add(((IResource)o[i]).getFullPath().toOSString());
  +						imploded += ((IResource)o[i]).getFullPath() + ",";
  +					}
  +					IPackageFolder webinf = getFolder(wizard.getPackage(), ObscurelyNamedPackageTypeSuperclass.WEBINF);
  +					IPackageFileSet[] sets = webinf.getFileSets();
  +					for( int i = 0; i < sets.length; i++ ) {
  +						String path = sets[i].getSourceContainer().getFullPath().toOSString();
  +						if( selectedFolders.contains(path)) {
  +							selectedFolders.remove(path); // already added
  +						} else {
  +							// remove ir
  +							webinf.removeChild(sets[i]);
  +						}
  +					}
  +					// add whatever's left as new filesets
  +					for( int i = 0; i < selectedFolders.size(); i++ ) {
  +						ObscurelyNamedPackageTypeSuperclass.addFileset(wizard.getProject(), 
  +								webinf, (String)selectedFolders.get(i), "**/*");
  +					}
  +					fillWidgets(wizard.getPackage());
  +				}
  +			}  
  +		});
  +	}
   	public boolean isPageComplete() {
   		return true;
   	}
  @@ -61,14 +167,149 @@
       	IPackageType type = PackagesCore.getPackageType("org.jboss.ide.eclipse.as.core.packages.warPackage");
       	if( type instanceof WarPackageType ) {
       		((WarPackageType)type).fillDefaultConfiguration(wizard.getProject(), wizard.getPackage(), new NullProgressMonitor());
  -    		System.out.println("filling package");
       	}
       }
       protected void fillWidgets(IPackage pkg) {
       	System.out.println("filling widgets");
       	warPreview.setInput(new IPackage[] {pkg});
       	warPreview.expandAll();
  +    	
  +    	fillWebinfText(pkg);
  +    }
  +    
  +    protected void fillWebinfText(IPackage pkg) {
  +    	// set webinf text
  +    	IPackageFolder webinf = getFolder(pkg, ObscurelyNamedPackageTypeSuperclass.WEBINF);
  +    	String s = "";
  +    	if( webinf != null ) {
  +    		IPackageFileSet[] filesets = webinf.getFileSets();
  +    		for( int i = 0; i < filesets.length; i++ ) {
  +    			String path = filesets[i].getSourceContainer().getFullPath().toOSString();
  +    			s += path + ",";
  +    		}
  +    	}
  +    	webinfFolders.setText(s);
  +    }
  +    
  +    protected IPackageFolder getFolder(IPackage pkg, String folderName) {
  +    	IPackageFolder result = null;
  +    	IPackageFolder[] folders = pkg.getFolders();
  +    	for( int i = 0; i < folders.length; i++ ) {
  +    		if( folders[i].getName().equals(folderName)) {
  +    			result = folders[i];
  +    			break;
  +    		}
       }
  +    	return result;
  +    }
  +    
       public void pageExited(int button) {}
   
  +    
  +    
  +    
  +    // stuff that can be extracted
  +    public static class WorkspaceFolderSelectionDialog extends ElementTreeSelectionDialog {
  +    	
  +   	 public WorkspaceFolderSelectionDialog(Shell parent, boolean allowMultiple, String selectedPaths) {
  +   		 super(parent, new FolderLabelProvider(), new FolderContentProvider());
  +   		 setAllowMultiple(allowMultiple);
  +   		 setupDestinationList();
  +   	}
  +   	 
  +   	 private void setupDestinationList () {
  +   		 List projects = Arrays.asList(ResourcesPlugin.getWorkspace().getRoot().getProjects());
  +   		 setInput(projects);
  +   	 }
  +   	 
  +   	 private static class FolderContentProvider implements ITreeContentProvider {
  +   		private static final Object[] NO_CHILDREN = new Object[0];
  +   		public Object[] getChildren(Object parentElement) {
  +   			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 IContainer) {
  +   				return ((IContainer) element).getParent();
  +   			}
  +   			return null;
  +   		}
  +
  +   		public boolean hasChildren(Object element) {
  +   			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 NO_CHILDREN;
  +   		}
  +
  +   		public void dispose() {}
  +   		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
  +   	 }
  +   	 
  +   	 public static class FolderLabelProvider implements ILabelProvider {
  +   		public FolderLabelProvider () {}
  +   		public Image getImage(Object element) {
  +   			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 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