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

Robert Stryker rob.stryker at jboss.com
Fri Apr 20 05:42:02 EDT 2007


  User: rawb    
  Date: 07/04/20 05:42:02

  Modified:    core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views   
                        ProjectArchivesView.java
  Added:       core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views   
                        ArchivesMenuHandler.java
  Removed:     core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views   
                        PackagesMenuHandler.java
  Log:
  Refactoring of class names
  
  Revision  Changes    Path
  1.3       +5 -5      jbosside/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ProjectArchivesView.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- ProjectArchivesView.java	20 Apr 2007 09:38:23 -0000	1.2
  +++ ProjectArchivesView.java	20 Apr 2007 09:42:02 -0000	1.3
  @@ -35,7 +35,7 @@
   import org.jboss.ide.eclipse.archives.core.model.ArchivesCore;
   import org.jboss.ide.eclipse.archives.core.model.internal.ArchivesModel;
   import org.jboss.ide.eclipse.archives.ui.ExtensionManager;
  -import org.jboss.ide.eclipse.archives.ui.actions.NewPackageAction;
  +import org.jboss.ide.eclipse.archives.ui.actions.NewArchiveAction;
   import org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProvider;
   import org.jboss.ide.eclipse.archives.ui.providers.ArchivesLabelProvider;
   
  @@ -92,13 +92,13 @@
   	private Composite emptyComposite, viewerComposite, loadingPackagesComposite;
   	private IProgressMonitor loadingProgress;
   	private TreeViewer packageViewer;
  -	private PackagesMenuHandler menuHandler;
  +	private ArchivesMenuHandler menuHandler;
   	public void createPartControl(Composite parent) {
   		book = new PageBook(parent, SWT.NONE);
   		addEmptyComposite(book);
   		addLoadingComposite(book);
   		addViewerComposite(book);
  -		menuHandler = new PackagesMenuHandler(packageViewer);
  +		menuHandler = new ArchivesMenuHandler(packageViewer);
   	}
   	
   	protected void addEmptyComposite(PageBook book) {
  @@ -129,9 +129,9 @@
   		
   	
   	private void addNewPackageActions (Composite composite) {
  -		NewPackageAction[] actions = ExtensionManager.findNewArchiveActions();
  +		NewArchiveAction[] actions = ExtensionManager.findNewArchiveActions();
   		for (int i = 0; i < actions.length; i++) {
  -			final NewPackageAction action = actions[i];
  +			final NewArchiveAction action = actions[i];
   			
   			Composite linkComposite = new Composite(composite, SWT.NONE);
   			linkComposite.setLayout(createGridLayoutWithNoMargins(2));
  
  
  
  1.1      date: 2007/04/20 09:42:02;  author: rawb;  state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java
  
  Index: ArchivesMenuHandler.java
  ===================================================================
  package org.jboss.ide.eclipse.archives.ui.views;
  
  import java.util.Arrays;
  
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.runtime.NullProgressMonitor;
  import org.eclipse.jface.action.Action;
  import org.eclipse.jface.action.IMenuListener;
  import org.eclipse.jface.action.IMenuManager;
  import org.eclipse.jface.action.MenuManager;
  import org.eclipse.jface.action.Separator;
  import org.eclipse.jface.dialogs.Dialog;
  import org.eclipse.jface.dialogs.IInputValidator;
  import org.eclipse.jface.dialogs.InputDialog;
  import org.eclipse.jface.resource.ImageDescriptor;
  import org.eclipse.jface.viewers.IStructuredSelection;
  import org.eclipse.jface.viewers.TreeViewer;
  import org.eclipse.jface.wizard.WizardDialog;
  import org.eclipse.swt.widgets.Menu;
  import org.eclipse.ui.IActionBars;
  import org.eclipse.ui.ISharedImages;
  import org.eclipse.ui.IViewSite;
  import org.eclipse.ui.PlatformUI;
  import org.jboss.ide.eclipse.archives.core.model.IArchive;
  import org.jboss.ide.eclipse.archives.core.model.IArchiveFileSet;
  import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
  import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
  import org.jboss.ide.eclipse.archives.core.model.ArchivesCore;
  import org.jboss.ide.eclipse.archives.core.model.internal.ArchivesModel;
  import org.jboss.ide.eclipse.archives.ui.ExtensionManager;
  import org.jboss.ide.eclipse.archives.ui.NodeContribution;
  import org.jboss.ide.eclipse.archives.ui.ArchivesSharedImages;
  import org.jboss.ide.eclipse.archives.ui.ArchivesUIMessages;
  import org.jboss.ide.eclipse.archives.ui.actions.ActionWithDelegate;
  import org.jboss.ide.eclipse.archives.ui.actions.NewJARAction;
  import org.jboss.ide.eclipse.archives.ui.actions.NewArchiveAction;
  import org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProvider.WrappedProject;
  import org.jboss.ide.eclipse.archives.ui.util.ArchiveNodeFactory;
  import org.jboss.ide.eclipse.archives.ui.wizards.FilesetWizard;
  import org.jboss.ide.eclipse.archives.ui.wizards.NewJARWizard;
  
  /**
   * Manages the actions associated with the view
   * @author rstryker
   *
   */
  public class ArchivesMenuHandler {
  	public static final String NEW_PACKAGE_MENU_ID = "org.jboss.ide.eclipse.archives.ui.newPackageMenu";
  	public static final String NODE_CONTEXT_MENU_ID = "org.jboss.ide.eclipse.archives.ui.nodeContextMenu";
  	public static final String NEW_PACKAGE_ADDITIONS = "newPackageAdditions";
  
  	private MenuManager newPackageManager, contextMenuManager;
  	private NodeContribution[]  nodePopupMenuContributions;
  	private NewArchiveAction[] newPackageActions;
  	private Menu treeContextMenu;
  	private TreeViewer packageTree;
  	
  	private Action editAction, deleteAction, newFolderAction, newFilesetAction;
  	private NewJARAction newJARAction;
  	private Action buildAction;
  
  	public ArchivesMenuHandler(TreeViewer viewer) {
  		this.packageTree = viewer;
  
  		// load from extensions 
  		newPackageActions = ExtensionManager.findNewArchiveActions();
  		nodePopupMenuContributions = ExtensionManager.findNodePopupMenuContributions();
  		Arrays.sort(nodePopupMenuContributions);
  
  		
  		createActions();
  		createMenu();
  		createContextMenu();
  		addToActionBars();
  	}
  
  	private void addToActionBars() {
  		IActionBars bars = getSite().getActionBars();
  		bars.getToolBarManager().add(buildAction);
  	}
  	
  	/**
  	 * Creates the primary menu as well as adds the package actions to it
  	 *
  	 */
  	private void createMenu () {
  		newPackageManager = new MenuManager(ArchivesUIMessages.ProjectPackagesView_newPackageMenu_label, NEW_PACKAGE_MENU_ID);
  		addNewPackageActions(newPackageManager);
  	}
  
  	private void createContextMenu () {
  		contextMenuManager = new MenuManager(NODE_CONTEXT_MENU_ID); //$NON-NLS-1$
  		contextMenuManager.setRemoveAllWhenShown(true);
  		contextMenuManager.addMenuListener(new IMenuListener () {
  			public void menuAboutToShow(IMenuManager manager) {
  				IStructuredSelection selection = (IStructuredSelection) packageTree.getSelection();
  				if (selection != null && !selection.isEmpty()) {
  					Object element = selection.getFirstElement();
  					
  					if (element instanceof WrappedProject) {
  						newJARAction.setEnabled(true);
  						manager.add(newPackageManager);
  						manager.add(buildAction);
  						buildAction.setText(ArchivesUIMessages.ProjectPackagesView_buildProjectAction_label);
  					} else if( element instanceof IArchiveNode ){
  						IArchiveNode node = (IArchiveNode)element;
  						
  						if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE
  								|| node.getNodeType() == IArchiveNode.TYPE_ARCHIVE_FOLDER)
  						{	
  							newJARAction.setEnabled(true);
  							manager.add(newPackageManager);
  							
  							manager.add(newFolderAction);
  							manager.add(newFilesetAction);
  							manager.add(new Separator());
  						}
  						
  						if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE) {
  							editAction.setText(ArchivesUIMessages.ProjectPackagesView_editPackageAction_label); //$NON-NLS-1$
  							deleteAction.setText(ArchivesUIMessages.ProjectPackagesView_deletePackageAction_label); //$NON-NLS-1$
  							editAction.setImageDescriptor(ArchivesSharedImages.getImageDescriptor(ArchivesSharedImages.IMG_PACKAGE_EDIT));
  							buildAction.setText(ArchivesUIMessages.ProjectPackagesView_buildArchiveAction_label);
  							manager.add(buildAction);
  						} else if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE_FOLDER) {
  							editAction.setText(ArchivesUIMessages.ProjectPackagesView_editFolderAction_label); //$NON-NLS-1$
  							deleteAction.setText(ArchivesUIMessages.ProjectPackagesView_deleteFolderAction_label); //$NON-NLS-1$
  							editAction.setImageDescriptor(platformDescriptor(ISharedImages.IMG_OBJ_FOLDER));
  						} else if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE_FILESET) {
  							editAction.setText(ArchivesUIMessages.ProjectPackagesView_editFilesetAction_label); //$NON-NLS-1$
  							deleteAction.setText(ArchivesUIMessages.ProjectPackagesView_deleteFilesetAction_label); //$NON-NLS-1$
  							editAction.setImageDescriptor(ArchivesSharedImages.getImageDescriptor(ArchivesSharedImages.IMG_MULTIPLE_FILES));
  						}
  						manager.add(editAction);
  						manager.add(deleteAction);
  						addContextMenuContributions(node);
  					}
  				} else {
  					manager.add(newPackageManager);
  				}
  			}
  		});
  		
  		treeContextMenu = contextMenuManager.createContextMenu(packageTree.getTree());
  		packageTree.getTree().setMenu(treeContextMenu);
  		
  		getSite().registerContextMenu(NEW_PACKAGE_MENU_ID, newPackageManager, packageTree);
  	}
  
  	protected void createActions() {
  		newJARAction = new NewJARAction();
  		newJARAction.setEnabled(false);
  		
  		newFolderAction = new Action(ArchivesUIMessages.ProjectPackagesView_newFolderAction_label, platformDescriptor(ISharedImages.IMG_OBJ_FOLDER)) { //$NON-NLS-1$
  			public void run () {
  				createFolder();
  			}
  		};
  		
  		newFilesetAction = new Action(ArchivesUIMessages.ProjectPackagesView_newFilesetAction_label, ArchivesSharedImages.getImageDescriptor(ArchivesSharedImages.IMG_MULTIPLE_FILES)) { //$NON-NLS-1$
  			public void run () {
  				createFileset();
  			}
  		};
  		
  		deleteAction = new Action (ArchivesUIMessages.ProjectPackagesView_deletePackageAction_label, platformDescriptor(ISharedImages.IMG_TOOL_DELETE)) { //$NON-NLS-1$
  			public void run () {
  				deleteSelectedNode();
  			}	
  		};
  		
  		editAction = new Action (ArchivesUIMessages.ProjectPackagesView_editPackageAction_label, ArchivesSharedImages.getImageDescriptor(ArchivesSharedImages.IMG_PACKAGE_EDIT)) { //$NON-NLS-1$
  			public void run () {
  				editSelectedNode();
  			}
  		};
  		
  		buildAction = new ActionWithDelegate("", ArchivesSharedImages.getImageDescriptor(ArchivesSharedImages.IMG_BUILD_PACKAGES)) {
  			public void run() {
  				buildSelectedNode();
  			}
  
  			public IStructuredSelection getSelection() {
  				return ProjectArchivesView.getInstance().getSelection();
  			}
  		};
  	}
  
  	private void addContextMenuContributions (final IArchiveNode context) {
  
  		for( int i = 0; i < nodePopupMenuContributions.length; i++ ) {
  			try {
  
  				final NodeContribution contribution = nodePopupMenuContributions[i];
  				if ( contribution.getActionDelegate().isEnabledFor(context)) {
  					Action action = new Action () {
  						public String getId() {
  							return contribution.getId();
  						}
  			
  						public ImageDescriptor getImageDescriptor() {
  							return contribution.getIcon();
  						}
  			
  						public String getText() {
  							return contribution.getLabel();
  						}
  			
  						public void run() {
  							contribution.getActionDelegate().run(context);
  						}
  					};
  					contextMenuManager.add(action);
  				}
  			} catch( Exception e) { e.getMessage(); }
  		}
  
  	}
  	
  	
  	/**
  	 * Adds the new package type actions (which come from an extension point)
  	 * to the menu.
  	 * @param manager
  	 */
  	private void addNewPackageActions (IMenuManager manager) {
  		for( int i = 0; i < newPackageActions.length; i++ ) {
  			final NewArchiveAction action = newPackageActions[i];
  			
  			Action actionWrapper = new Action () {
  				public String getId() {
  					return action.getId();
  				}
  				
  				public ImageDescriptor getImageDescriptor() {
  					return action.getIconDescriptor();
  				}
  				
  				public String getText() {
  					return action.getLabel();
  				}
  				
  				public void run() {
  					action.getAction().run(this);
  				}
  			};
  			
  			manager.add(actionWrapper);
  		}
  	}
  
  
  	
  	
  	/*
  	 * Methods below are called from the standard actions, 
  	 * the implementations of the action, where the action does its work etc
  	 */
  	
  	private void createFolder ()
  	{
  		IInputValidator validator = new IInputValidator () {
  			public String isValid(String newText) {
  				IArchiveNode selected = getSelectedNode();
  				
  				boolean folderExists = false;
  				IArchiveNode[] folders = selected.getChildren(IArchiveNode.TYPE_ARCHIVE_FOLDER);
  				for (int i = 0; i < folders.length; i++) {
  					IArchiveFolder folder = (IArchiveFolder) folders[i];
  					if (folder.getName().equals(newText)) {
  						folderExists = true; break;
  					}
  				}
  				
  				if (folderExists) {
  					return ArchivesUIMessages.bind(
  						ArchivesUIMessages.ProjectPackagesView_createFolderDialog_warnFolderExists, newText);
  					
  				}
  				return null;
  			}
  		};
  		
  		InputDialog dialog = new InputDialog(getSite().getShell(),
  			ArchivesUIMessages.ProjectPackagesView_createFolderDialog_title,
  			ArchivesUIMessages.ProjectPackagesView_createFolderDialog_message, "", validator);
  		
  		int response = dialog.open();
  		if (response == Dialog.OK) {
  			String folderName = dialog.getValue();
  			IArchiveNode selected = getSelectedNode();
  
  			IArchiveFolder folder = ArchiveNodeFactory.createFolder();
  			folder.setName(folderName);
  			ArchivesModel.instance().attach(selected, folder, new NullProgressMonitor());
  		}
  	}
  	
  	private void createFileset () {
  		try {
  			IArchiveNode selected = getSelectedNode();
  			WizardDialog dialog = new WizardDialog(getSite().getShell(), new FilesetWizard(null, selected));
  			
  			dialog.open();
  		} catch( Exception e ) {
  			e.printStackTrace();
  		}
  	}
  	
  	private void editSelectedNode () {
  		IArchiveNode node = getSelectedNode();
  		if (node != null) {
  			if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE_FILESET) {
  				IArchiveFileSet fileset = (IArchiveFileSet) node;
  				WizardDialog dialog = new WizardDialog(getSite().getShell(), new FilesetWizard(fileset, node.getParent()));
  				try {
  					dialog.open();
  				} catch( Exception e ) { e.printStackTrace(); }
  			} else if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE) {
  				IArchive pkg = (IArchive) node;
  				WizardDialog dialog = new WizardDialog(getSite().getShell(), new NewJARWizard(pkg));
  				dialog.open();
  			} else if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE_FOLDER) {
  				// folder can do the model save here. 
  				IArchiveFolder folder = (IArchiveFolder) node;
  				InputDialog dialog = new InputDialog(getSite().getShell(),
  					ArchivesUIMessages.ProjectPackagesView_createFolderDialog_title,
  					ArchivesUIMessages.ProjectPackagesView_createFolderDialog_message, folder.getName(), null);
  				
  				int response = dialog.open();
  				if (response == Dialog.OK) {
  					folder.setName(dialog.getValue());
  					ArchivesModel.instance().saveModel(folder.getProject(), new NullProgressMonitor());
  				}
  			} 
  		}
  	}
  	
  	private void buildSelectedNode() {
  		Object selected = getSelectedObject();
  		if( selected == null ) return;
  		if (selected instanceof IArchiveNode && 
  				((IArchiveNode)selected).getNodeType() == IArchiveNode.TYPE_ARCHIVE) {
  			ArchivesCore.buildArchive((IArchive)selected, null);
  		} else if( selected != null && selected instanceof IProject ){
  			ArchivesCore.buildProject((IProject)selected, null);
  		}
  		
  	}
  	
  	private void deleteSelectedNode () {
  		IArchiveNode node = getSelectedNode();
  		if (node != null) {
  			IArchiveNode parent = (IArchiveNode) node.getParent();
  			parent.removeChild(node);
  			if( parent.getProject() != null ) {
  				ArchivesModel.instance().saveModel(parent.getProject(), new NullProgressMonitor());
  			}
  		}
  	}
  
  	
  	
  	/*
  	 * Utility methods below
  	 */
  
  	private IViewSite getSite() {
  		return (IViewSite) ProjectArchivesView.getInstance().getSite();
  	}
  
  	private IArchiveNode getSelectedNode () {
  		Object selected = getSelectedObject();
  		if( selected instanceof IArchiveNode ) 
  			return ((IArchiveNode)selected);
  		return null;
  	}
  	private Object getSelectedObject() {
  		IStructuredSelection selection = (IStructuredSelection) ProjectArchivesView.getInstance().getSelection();
  		if (selection != null && !selection.isEmpty())
  			return selection.getFirstElement();
  		return null;
  	}
  	
  	private ImageDescriptor platformDescriptor(String desc) {
  		return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(desc);
  	}
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list