Author: rob.stryker(a)jboss.com
Date: 2008-08-01 20:40:00 -0400 (Fri, 01 Aug 2008)
New Revision: 9476
Added:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesActionProvider.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesContentProvider.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesRootContentProvider.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesCommonView.java
Removed:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/ActionWithDelegate.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/dialogs/
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/util/garbage/
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/NodeContribution.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/NewArchiveAction.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/NewJARAction.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/preferences/MainPreferencePage.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesLabelProvider.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java
Log:
JBIDE-460 - archives view in common nav
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/NodeContribution.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/NodeContribution.java 2008-08-02
00:39:43 UTC (rev 9475)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/NodeContribution.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -24,7 +24,7 @@
try {
actionDelegate = (INodeActionDelegate)
element.createExecutableExtension("class");
} catch (CoreException e) {
-//TODO Trace.trace(getClass(), e);
+ //TODO Trace.trace(getClass(), e);
}
String iconPath = element.getAttribute("icon");
Deleted:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/ActionWithDelegate.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/ActionWithDelegate.java 2008-08-02
00:39:43 UTC (rev 9475)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/ActionWithDelegate.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -1,47 +0,0 @@
-package org.jboss.ide.eclipse.archives.ui.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IActionDelegate;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchPart;
-
-public abstract class ActionWithDelegate extends Action implements IActionDelegate,
ISelectionListener {
-
-/*
- * Constructors
- */
- public ActionWithDelegate () {
- }
-
- public ActionWithDelegate(String text) {
- super(text);
- }
-
- public ActionWithDelegate(String text, ImageDescriptor image) {
- super(text, image);
- }
-
- public ActionWithDelegate(String text, int style) {
- super(text, style);
- }
-
-
-
- public abstract void run ();
-
- public void run(IAction action) {
- run();
- }
-
- public abstract IStructuredSelection getSelection();
- public void selectionChanged(IAction action, ISelection selection) {
- }
-
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- }
-
-}
\ No newline at end of file
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/NewArchiveAction.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/NewArchiveAction.java 2008-08-02
00:39:43 UTC (rev 9475)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/NewArchiveAction.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -29,15 +29,14 @@
try {
action = (IActionDelegate) element.createExecutableExtension("class");
} catch (CoreException e) {
-//TODO Trace.trace(getClass(), e);
+ //TODO
}
String iconPath = element.getAttribute("icon");
String pluginId = element.getDeclaringExtension().getNamespaceIdentifier();
Bundle bundle = Platform.getBundle(pluginId);
URL iconURL = FileLocator.find(bundle, new Path(iconPath), null);
- if (iconURL == null)
- {
+ if (iconURL == null) {
iconURL = bundle.getEntry(iconPath);
}
icon = ImageDescriptor.createFromURL(iconURL);
@@ -52,8 +51,7 @@
return icon;
}
- public Image getIcon()
- {
+ public Image getIcon() {
return iconImage;
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/NewJARAction.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/NewJARAction.java 2008-08-02
00:39:43 UTC (rev 9475)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/actions/NewJARAction.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -1,42 +1,33 @@
package org.jboss.ide.eclipse.archives.ui.actions;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.ui.IActionDelegate;
import org.eclipse.ui.PlatformUI;
-import org.jboss.ide.eclipse.archives.ui.ArchivesSharedImages;
-import org.jboss.ide.eclipse.archives.ui.views.ProjectArchivesView;
import org.jboss.ide.eclipse.archives.ui.wizards.NewJARWizard;
-public class NewJARAction extends ActionWithDelegate {
+public class NewJARAction implements IActionDelegate {
public void run() {
try {
- NewJARWizard wizard = new NewJARWizard();
-
- wizard.init(PlatformUI.getWorkbench(), getSelection());
-
- WizardDialog dialog = new
WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), wizard);
- int response = dialog.open();
- if (response == Dialog.OK) {
- }
+ NewJARWizard wizard = new NewJARWizard();
+ wizard.init(PlatformUI.getWorkbench(), selection);
+ WizardDialog dialog = new
WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), wizard);
+ dialog.open();
} catch( Exception e ) {
- e.printStackTrace();
+ // TODO
}
}
- public IStructuredSelection getSelection() {
- return ProjectArchivesView.getInstance().getSelection();
+ private IStructuredSelection selection;
+ public void run(IAction action) {
+ run();
}
- public ImageDescriptor getImageDescriptor() {
- return ArchivesSharedImages.getImageDescriptor(ArchivesSharedImages.IMG_NEW_PACKAGE);
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ if( selection instanceof IStructuredSelection) {
+ this.selection = (IStructuredSelection)selection;
+ }
}
-
- public String getText() {
- return "JAR";
- }
-
- public String getToolTipText() {
- return "Create a new JAR package";
- }
}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/preferences/MainPreferencePage.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/preferences/MainPreferencePage.java 2008-08-02
00:39:43 UTC (rev 9475)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/preferences/MainPreferencePage.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -21,7 +21,6 @@
import org.jboss.ide.eclipse.archives.ui.ArchivesSharedImages;
import org.jboss.ide.eclipse.archives.ui.ArchivesUIMessages;
import org.jboss.ide.eclipse.archives.ui.PrefsInitializer;
-import org.jboss.ide.eclipse.archives.ui.views.ProjectArchivesView;
public class MainPreferencePage extends PropertyPage implements
IWorkbenchPreferencePage {
@@ -183,8 +182,9 @@
PrefsInitializer.setBoolean(PrefsInitializer.PREF_SHOW_FULL_FILESET_ROOT_DIR,
showFullFilesetRootDir.getSelection(), getElement());
PrefsInitializer.setBoolean(PrefsInitializer.PREF_SHOW_PROJECT_ROOT,
showProjectRoot.getSelection(), getElement());
PrefsInitializer.setBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS,
showAllProjects.getSelection(), getElement());
- if( ProjectArchivesView.getInstance() != null )
- ProjectArchivesView.getInstance().refreshViewer(null);
+ // TODO FIX THIS
+// if( ProjectArchivesCommonView.getInstance() != null )
+// ProjectArchivesCommonView.getInstance().refreshViewer(null);
return true;
}
Deleted:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java 2008-08-02
00:39:43 UTC (rev 9475)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProvider.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -1,87 +0,0 @@
-package org.jboss.ide.eclipse.archives.ui.providers;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
-import org.jboss.ide.eclipse.archives.core.util.ModelUtil;
-import org.jboss.ide.eclipse.archives.ui.PrefsInitializer;
-import org.jboss.ide.eclipse.archives.ui.views.ProjectArchivesView;
-
-public class ArchivesContentProvider implements ITreeContentProvider {
-
- public ArchivesContentProvider () {
- }
-
- public static class WrappedProject {
- private IProject project;
- public WrappedProject (IProject proj) { project = proj; }
- public IProject getProject() { return project; }
- }
-
- private boolean showProjectRoot () {
- return PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_PROJECT_ROOT);
- }
-
- private Object[] wrapProjects(IProject[] project) {
- Object[] ret = new Object[project.length];
- for( int i = 0; i < project.length; i++ )
- ret[i] = new WrappedProject(project[i]);
- return ret;
- }
- public Object[] getChildren(Object parentElement) {
-
- if( parentElement instanceof Object[] ) return (Object[])parentElement;
-
-
- if( parentElement instanceof IArchiveModelRootNode && showProjectRoot()) {
- IProject[] projects;
- if( PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS)) {
- projects = ProjectArchivesView.getInstance().getAllProjectsWithPackages();
- } else {
- String projName =
((IArchiveModelRootNode)parentElement).getProjectPath().lastSegment();
- projects = new IProject[] {
ResourcesPlugin.getWorkspace().getRoot().getProject(projName) };
- }
- return wrapProjects(projects);
- }
-
- if( parentElement instanceof IArchiveModelRootNode)
- return ((IArchiveModelRootNode)parentElement).getAllChildren();
-
- if( parentElement instanceof ArchivesModel ) {
- // return all that's there
- }
- if( parentElement instanceof WrappedProject ) {
- return
ModelUtil.getProjectArchives(((WrappedProject)parentElement).getProject().getLocation());
- }
- if( parentElement instanceof IArchiveNode ) {
- return ((IArchiveNode)parentElement).getAllChildren();
- }
- return new Object[] {};
- }
-
- public Object getParent(Object element) {
- if( element instanceof IArchiveNode )
- return ((IArchiveNode)element).getParent();
- if( element instanceof WrappedProject )
- return
ArchivesModel.instance().getRoot(((WrappedProject)element).getProject().getLocation());
- return null;
- }
-
- public boolean hasChildren(Object element) {
- return getChildren(element).length > 0;
- }
-
- public Object[] getElements(Object inputElement) {
- return getChildren(inputElement);
- }
-
- public void dispose() {}
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
-
-}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesLabelProvider.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesLabelProvider.java 2008-08-02
00:39:43 UTC (rev 9475)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesLabelProvider.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -1,7 +1,8 @@
package org.jboss.ide.eclipse.archives.ui.providers;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.viewers.BaseLabelProvider;
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;
@@ -12,9 +13,9 @@
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
import org.jboss.ide.eclipse.archives.ui.ArchivesSharedImages;
import org.jboss.ide.eclipse.archives.ui.PrefsInitializer;
-import
org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProvider.WrappedProject;
+import org.jboss.ide.eclipse.archives.ui.views.ArchivesContentProvider.DelayProxy;
-public class ArchivesLabelProvider implements ILabelProvider {
+public class ArchivesLabelProvider extends BaseLabelProvider implements ILabelProvider {
/*
@@ -43,8 +44,7 @@
}
private Image internalGetImage(Object element) {
- element = unwrapElement(element);
- if( element instanceof WrappedProject )
+ if( element instanceof IProject )
return
PlatformUI.getWorkbench().getSharedImages().getImage(org.eclipse.ui.ide.IDE.SharedImages.IMG_OBJ_PROJECT);
if( element instanceof IArchiveNode ) {
IArchiveNode node = (IArchiveNode) element;
@@ -69,9 +69,10 @@
}
private String internalGetText(Object element) {
- element = unwrapElement(element);
- if( element instanceof WrappedProject)
- return ((WrappedProject)element).getProject().getName();
+ if( element instanceof DelayProxy )
+ return "Loading...";
+ if( element instanceof IProject)
+ return ((IProject)element).getProject().getName();
if( element instanceof IArchiveNode ) {
switch (((IArchiveNode)element).getNodeType()) {
case IArchiveNode.TYPE_ARCHIVE: return getPackageText((IArchive)element);
@@ -124,21 +125,4 @@
return text;
}
-
-
- protected Object unwrapElement(Object element) {
- return element; // to be used if we wrap everything for preferences
- }
-
-
- public void addListener(ILabelProviderListener listener) {}
-
- public void dispose() { }
-
- public boolean isLabelProperty(Object element, String property) {
- return true;
- }
-
- public void removeListener(ILabelProviderListener listener) { }
-
}
Added:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesActionProvider.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesActionProvider.java
(rev 0)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesActionProvider.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -0,0 +1,361 @@
+package org.jboss.ide.eclipse.archives.ui.views;
+
+import java.util.Arrays;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.GroupMarker;
+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.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.navigator.CommonActionProvider;
+import org.eclipse.ui.navigator.ICommonActionExtensionSite;
+import org.eclipse.ui.navigator.ICommonViewerSite;
+import org.jboss.ide.eclipse.archives.core.build.ArchiveBuildDelegate;
+import org.jboss.ide.eclipse.archives.core.build.SaveArchivesJob;
+import org.jboss.ide.eclipse.archives.core.model.ArchiveNodeFactory;
+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.ui.ArchivesSharedImages;
+import org.jboss.ide.eclipse.archives.ui.ArchivesUIMessages;
+import org.jboss.ide.eclipse.archives.ui.ExtensionManager;
+import org.jboss.ide.eclipse.archives.ui.NodeContribution;
+import org.jboss.ide.eclipse.archives.ui.actions.NewArchiveAction;
+import org.jboss.ide.eclipse.archives.ui.wizards.FilesetWizard;
+import org.jboss.ide.eclipse.archives.ui.wizards.NewJARWizard;
+
+public class ArchivesActionProvider extends CommonActionProvider {
+ 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;
+ private NodeContribution[] nodePopupMenuContributions;
+ private NewArchiveAction[] newPackageActions;
+ private Action editAction, deleteAction, newFolderAction, newFilesetAction;
+ private Action buildAction;
+ private ICommonViewerSite site;
+
+ public ArchivesActionProvider() {
+ }
+
+ public void init(ICommonActionExtensionSite aSite) {
+ newPackageActions = ExtensionManager.findNewArchiveActions();
+ nodePopupMenuContributions = ExtensionManager.findNodePopupMenuContributions();
+ Arrays.sort(nodePopupMenuContributions);
+ site = aSite.getViewSite();
+ createActions();
+ newPackageManager = new
MenuManager(ArchivesUIMessages.ProjectPackagesView_newPackageMenu_label,
NEW_PACKAGE_MENU_ID);
+ newPackageManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+ public void fillContextMenu(IMenuManager manager) {
+ menuAboutToShow2(manager);
+ }
+
+ public void menuAboutToShow2(IMenuManager manager) {
+ addNewPackageActions(newPackageManager);
+
+ IStructuredSelection selection = getSelection();
+ if (selection != null && !selection.isEmpty()) {
+ Object element = selection.getFirstElement();
+
+ if (element instanceof IProject) {
+ 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) {
+ 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);
+ deleteAction.setText(ArchivesUIMessages.ProjectPackagesView_deletePackageAction_label);
+ 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);
+ deleteAction.setText(ArchivesUIMessages.ProjectPackagesView_deleteFolderAction_label);
+ editAction.setImageDescriptor(platformDescriptor(ISharedImages.IMG_OBJ_FOLDER));
+ } else if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE_FILESET) {
+ editAction.setText(ArchivesUIMessages.ProjectPackagesView_editFilesetAction_label);
+ deleteAction.setText(ArchivesUIMessages.ProjectPackagesView_deleteFilesetAction_label);
+ editAction.setImageDescriptor(ArchivesSharedImages.getImageDescriptor(ArchivesSharedImages.IMG_MULTIPLE_FILES));
+ }
+ manager.add(editAction);
+ manager.add(deleteAction);
+ addContextMenuContributions(node, manager);
+ }
+ } else {
+ manager.add(newPackageManager);
+ }
+ }
+
+ protected void createActions() {
+ 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 Action("",
ArchivesSharedImages.getImageDescriptor(ArchivesSharedImages.IMG_BUILD_PACKAGES)) {
+ public void run() {
+ buildSelectedNode(getSelectedObject());
+ }
+ };
+ }
+
+
+
+
+ private void addContextMenuContributions (final IArchiveNode context, IMenuManager mgr)
{
+
+ for( int i = 0; i < nodePopupMenuContributions.length; i++ ) {
+ 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);
+ }
+ };
+ mgr.add(action);
+ }
+ }
+ }
+
+
+ /**
+ * 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++ ) {
+ NewArchiveAction action = newPackageActions[i];
+ ActionWrapper wrapped = new ActionWrapper(action);
+ wrapped.selectionChanged(getSelection());
+ manager.add(wrapped);
+ }
+ }
+
+ public class ActionWrapper extends Action {
+ private NewArchiveAction action;
+ public ActionWrapper(NewArchiveAction act) {
+ this.action = act;
+ }
+ public String getId() {
+ return action.getId();
+ }
+
+ public ImageDescriptor getImageDescriptor() {
+ return action.getIconDescriptor();
+ }
+
+ public String getText() {
+ return action.getLabel();
+ }
+
+ public void run() {
+ action.getAction().run(null);
+ }
+
+ public void selectionChanged(IStructuredSelection sel) {
+ action.getAction().selectionChanged(this, sel);
+ }
+ }
+
+
+ /*
+ * 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(getShell(),
+ ArchivesUIMessages.ProjectPackagesView_createFolderDialog_title,
+ ArchivesUIMessages.ProjectPackagesView_createFolderDialog_message, "",
validator);
+
+ int response = dialog.open();
+ if (response == Dialog.OK) {
+ String[] folderPaths = dialog.getValue().split("[\\\\/]");
+ IArchiveNode selected = getSelectedNode();
+ IArchiveFolder current = null;
+ IArchiveFolder temp = null;
+
+ for(int i = folderPaths.length-1; i >= 0 ; i-- ) {
+ temp = ArchiveNodeFactory.createFolder();
+ temp.setName(folderPaths[i]);
+ if( current == null )
+ current = temp;
+ else {
+ temp.addChild(current);
+ current = temp;
+ }
+ }
+
+ selected.addChild(current);
+ new SaveArchivesJob(selected.getProjectPath()).schedule();
+ }
+ }
+
+ private void createFileset () {
+ IArchiveNode selected = getSelectedNode();
+ WizardDialog dialog = new WizardDialog(getShell(), new FilesetWizard(null, selected));
+ dialog.open();
+ }
+
+ private void editSelectedNode () {
+ IArchiveNode node = getSelectedNode();
+ if (node != null) {
+ if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE_FILESET) {
+ IArchiveFileSet fileset = (IArchiveFileSet) node;
+ WizardDialog dialog = new WizardDialog(getShell(), new FilesetWizard(fileset,
node.getParent()));
+ dialog.open();
+ } else if (node.getNodeType() == IArchiveNode.TYPE_ARCHIVE) {
+ IArchive pkg = (IArchive) node;
+ WizardDialog dialog = new WizardDialog(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(getShell(),
+ ArchivesUIMessages.ProjectPackagesView_createFolderDialog_title,
+ ArchivesUIMessages.ProjectPackagesView_createFolderDialog_message,
folder.getName(), null);
+
+ int response = dialog.open();
+ if (response == Dialog.OK) {
+ folder.setName(dialog.getValue());
+ new SaveArchivesJob(folder.getProjectPath()).schedule();
+ }
+ }
+ }
+ }
+
+ private void buildSelectedNode(final Object selected) {
+ new Job("Build Archive Node") {
+ protected IStatus run(IProgressMonitor monitor) {
+ if( selected == null ) return Status.OK_STATUS;
+ if (selected instanceof IArchiveNode &&
+ ((IArchiveNode)selected).getNodeType() == IArchiveNode.TYPE_ARCHIVE) {
+ new ArchiveBuildDelegate().fullArchiveBuild((IArchive)selected);
+ } else if( selected != null && selected instanceof IProject ){
+ new
ArchiveBuildDelegate().fullProjectBuild(((IProject)selected).getProject().getLocation());
+ } else {
+ new
ArchiveBuildDelegate().fullArchiveBuild(((IArchiveNode)selected).getRootArchive());
+ }
+ return Status.OK_STATUS;
+ }
+ }.schedule();
+ }
+
+ private void deleteSelectedNode () {
+ IArchiveNode node = getSelectedNode();
+ if (node != null) {
+ final IArchiveNode parent = (IArchiveNode) node.getParent();
+ parent.removeChild(node);
+ SaveArchivesJob job = new SaveArchivesJob(parent.getProjectPath());
+ job.schedule();
+ }
+ }
+
+
+ private IArchiveNode getSelectedNode () {
+ Object selected = getSelectedObject();
+ if( selected instanceof IArchiveNode )
+ return ((IArchiveNode)selected);
+ return null;
+ }
+ private Object getSelectedObject() {
+ IStructuredSelection selection = getSelection();
+ if (selection != null && !selection.isEmpty())
+ return selection.getFirstElement();
+ return null;
+ }
+ private IStructuredSelection getSelection() {
+ return (IStructuredSelection) site.getSelectionProvider().getSelection();
+ }
+
+ private ImageDescriptor platformDescriptor(String desc) {
+ return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(desc);
+ }
+ private Shell getShell() {
+ return site.getShell();
+ }
+}
Added:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesContentProvider.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesContentProvider.java
(rev 0)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesContentProvider.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -0,0 +1,99 @@
+package org.jboss.ide.eclipse.archives.ui.views;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Display;
+import org.jboss.ide.eclipse.archives.core.build.RegisterArchivesJob;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+
+public class ArchivesContentProvider implements ITreeContentProvider {
+
+ protected ArrayList<Viewer> viewersInUse = new ArrayList<Viewer>();
+ protected ArrayList<IProject> loadingProjects = new ArrayList<IProject>();
+
+ public Object[] getChildren(Object parentElement) {
+ if( parentElement instanceof IProject ) {
+ IProject p = (IProject)parentElement;
+
+ // if currently loading, always send a delay
+ if( loadingProjects.contains(p))
+ return new Object[]{new DelayProxy(p)};
+
+ if( ArchivesModel.instance().isProjectRegistered(p.getLocation()))
+ return ArchivesModel.instance().getRoot(p.getLocation()).getAllChildren();
+ if( ArchivesModel.instance().canReregister(p.getLocation())) {
+ loadingProjects.add(p);
+ DelayProxy dp = new DelayProxy(p);
+ launchRegistrationThread(dp);
+ return new Object[]{dp};
+ }
+ }
+ if( parentElement instanceof IArchiveNode )
+ return ((IArchiveNode)parentElement).getAllChildren();
+ return new Object[0];
+ }
+
+ public static class DelayProxy {
+ public IProject project;
+ public DelayProxy(IProject p) {this.project = p; }
+ }
+
+ protected void launchRegistrationThread(final DelayProxy dp) {
+ Runnable callback = new Runnable() {
+ public void run() {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ loadingProjects.remove(dp.project);
+ Iterator it = viewersInUse.iterator();
+ while(it.hasNext()) {
+ Viewer next = ((Viewer)it.next());
+ if( next instanceof StructuredViewer)
+ ((StructuredViewer)next).refresh(dp.project);
+ else
+ next.refresh();
+ }
+ }
+ });
+ }
+ };
+ RegisterArchivesJob job = new RegisterArchivesJob(new IProject[]{dp.project},
callback);
+ job.schedule();
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ if( element instanceof IArchiveNode )
+ return getChildren(element).length > 0;
+ if( element instanceof IResource )
+ return ArchivesModel.instance().canReregister(((IResource)element).getLocation());
+ return true;
+ }
+
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if( newInput != null) {
+ if( !viewersInUse.contains(viewer)) {
+ viewersInUse.add(viewer);
+ }
+ } else {
+ viewersInUse.remove(viewer);
+ }
+ }
+
+}
Deleted:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java 2008-08-02
00:39:43 UTC (rev 9475)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesMenuHandler.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -1,405 +0,0 @@
-package org.jboss.ide.eclipse.archives.ui.views;
-
-import java.util.Arrays;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.GroupMarker;
-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.IWorkbenchActionConstants;
-import org.eclipse.ui.PlatformUI;
-import org.jboss.ide.eclipse.archives.core.build.ArchiveBuildDelegate;
-import org.jboss.ide.eclipse.archives.core.build.SaveArchivesJob;
-import org.jboss.ide.eclipse.archives.core.model.ArchiveNodeFactory;
-import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
-import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
-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.ui.ArchivesSharedImages;
-import org.jboss.ide.eclipse.archives.ui.ArchivesUIMessages;
-import org.jboss.ide.eclipse.archives.ui.ExtensionManager;
-import org.jboss.ide.eclipse.archives.ui.NodeContribution;
-import org.jboss.ide.eclipse.archives.ui.PackagesUIPlugin;
-import org.jboss.ide.eclipse.archives.ui.actions.ActionWithDelegate;
-import org.jboss.ide.eclipse.archives.ui.actions.NewArchiveAction;
-import org.jboss.ide.eclipse.archives.ui.actions.NewJARAction;
-import
org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProvider.WrappedProject;
-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);
- newPackageManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- 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(getSelectedObject());
- }
-
- 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) {}
- }
-
- }
-
-
- /**
- * 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[] folderPaths = dialog.getValue().split("[\\\\/]");
- IArchiveNode selected = getSelectedNode();
- IArchiveFolder current = null;
- IArchiveFolder temp = null;
-
- for(int i = folderPaths.length-1; i >= 0 ; i-- ) {
- temp = ArchiveNodeFactory.createFolder();
- temp.setName(folderPaths[i]);
- if( current == null )
- current = temp;
- else {
- temp.addChild(current);
- current = temp;
- }
- }
-
- selected.addChild(current);
- new SaveArchivesJob(selected.getProjectPath()).schedule();
- }
- }
-
- private void createFileset () {
- IArchiveNode selected = getSelectedNode();
- WizardDialog dialog = new WizardDialog(getSite().getShell(), new FilesetWizard(null,
selected));
- dialog.open();
- }
-
- 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()));
- dialog.open();
- } 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());
- new SaveArchivesJob(folder.getProjectPath()).schedule();
- }
- }
- }
- }
-
- private void buildSelectedNode(final Object selected) {
- new Job("Build Archive Node") {
- protected IStatus run(IProgressMonitor monitor) {
- if( selected == null ) return Status.OK_STATUS;
- if (selected instanceof IArchiveNode &&
- ((IArchiveNode)selected).getNodeType() == IArchiveNode.TYPE_ARCHIVE) {
- new ArchiveBuildDelegate().fullArchiveBuild((IArchive)selected);
- } else if( selected != null && selected instanceof WrappedProject ){
- new
ArchiveBuildDelegate().fullProjectBuild(((WrappedProject)selected).getProject().getLocation());
- } else {
- new
ArchiveBuildDelegate().fullArchiveBuild(((IArchiveNode)selected).getRootArchive());
- }
- return Status.OK_STATUS;
- }
- }.schedule();
- }
-
- private void deleteSelectedNode () {
- IArchiveNode node = getSelectedNode();
- if (node != null) {
- final IArchiveNode parent = (IArchiveNode) node.getParent();
- parent.removeChild(node);
- SaveArchivesJob job = new SaveArchivesJob(parent.getProjectPath());
- job.schedule();
- }
- }
-
- /*
- * 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);
- }
-
-}
Added:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesRootContentProvider.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesRootContentProvider.java
(rev 0)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesRootContentProvider.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -0,0 +1,55 @@
+package org.jboss.ide.eclipse.archives.ui.views;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.ui.PrefsInitializer;
+
+public class ArchivesRootContentProvider implements ITreeContentProvider {
+
+ public Object[] getChildren(Object parentElement) {
+ return new Object[0];
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ return false;
+ }
+
+ public Object[] getElements(Object inputElement) {
+ if( showProjectRoot() ) {
+ if( showAllProjects() ) {
+ IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+ ArrayList<IProject> tmp = new ArrayList<IProject>();
+ for( int i = 0; i < projects.length; i++ )
+ if( ArchivesModel.instance().canReregister(projects[i].getLocation()))
+ tmp.add(projects[i]);
+ return (IProject[]) tmp.toArray(new IProject[tmp.size()]);
+ }
+ IProject cp = ProjectArchivesCommonView.getInstance().getCurrentProject();
+ if( cp != null )
+ return new Object[]{cp};
+ }
+ return new Object[]{};
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ private boolean showProjectRoot () {
+ return PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_PROJECT_ROOT);
+ }
+ private boolean showAllProjects () {
+ return PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS);
+ }
+}
Added:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesCommonView.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesCommonView.java
(rev 0)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesCommonView.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -0,0 +1,150 @@
+package org.jboss.ide.eclipse.archives.ui.views;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.INullSelectionListener;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.navigator.CommonNavigator;
+import org.jboss.ide.eclipse.archives.core.build.ArchiveBuildDelegate;
+import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
+import org.jboss.ide.eclipse.archives.core.model.IArchive;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveModelListener;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
+import org.jboss.ide.eclipse.archives.ui.ArchivesSharedImages;
+import org.jboss.ide.eclipse.archives.ui.PrefsInitializer;
+
+public class ProjectArchivesCommonView extends CommonNavigator implements
IArchiveModelListener {
+ protected static ProjectArchivesCommonView instance;
+ protected ISelectionListener selectionListener;
+ protected IProject currentProject;
+ public static ProjectArchivesCommonView getInstance() { return instance; }
+ public ProjectArchivesCommonView() {
+ super();
+ instance = this;
+ selectionListener = createSelectionListener();
+ }
+ protected IAdaptable getInitialInput() {
+ currentProject = null;
+ return ResourcesPlugin.getWorkspace().getRoot();
+ }
+
+ public void createPartControl(Composite aParent) {
+ super.createPartControl(aParent);
+ addBuildActionToSite();
+ }
+
+ public void init(IViewSite site) throws PartInitException {
+ super.init(site);
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().addPostSelectionListener(selectionListener);
+ ArchivesModel.instance().addModelListener(this);
+ }
+
+ public void dispose() {
+ super.dispose();
+
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().removePostSelectionListener(selectionListener);
+ ArchivesModel.instance().removeModelListener(this);
+ }
+
+ protected ISelectionListener createSelectionListener() {
+ return new INullSelectionListener() {
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ if( part == instance )
+ return;
+ if (!(selection instanceof IStructuredSelection))
+ return;
+
+ Object element = ((IStructuredSelection)selection).getFirstElement();
+ IProject project = getProject(element);
+ if( project != null ) {
+ currentProject = project;
+ if( showProjectRoot())
+ getCommonViewer().setInput(ResourcesPlugin.getWorkspace().getRoot());
+ else
+ getCommonViewer().setInput(currentProject);
+ }
+ }
+
+ public IProject getProject (Object element) {
+ if( element instanceof IStructuredSelection)
+ element = ((IStructuredSelection)element).getFirstElement();
+
+ if (element instanceof IAdaptable) {
+ IAdaptable adaptable = (IAdaptable)element;
+ IResource resource = (IResource) adaptable.getAdapter(IResource.class);
+ if( resource != null )
+ return resource.getProject();
+ }
+ return null;
+ }
+
+ };
+ }
+
+ public void modelChanged(IArchiveNodeDelta delta) {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ getCommonViewer().refresh();
+ }
+ });
+ }
+
+ public IProject getCurrentProject() {
+ return currentProject;
+ }
+ private boolean showProjectRoot () {
+ return PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_PROJECT_ROOT);
+ }
+
+ public void addBuildActionToSite() {
+ Action buildAction = new Action("",
ArchivesSharedImages.getImageDescriptor(ArchivesSharedImages.IMG_BUILD_PACKAGES)) {
+ public void run() {
+ buildSelection(getSelectedObject());
+ }
+ };
+ IActionBars bars = ((IViewSite)getSite()).getActionBars();
+ bars.getToolBarManager().add(buildAction);
+ }
+
+ private void buildSelection(final Object selected) {
+ new Job("Build Archive Node") {
+ protected IStatus run(IProgressMonitor monitor) {
+ if( selected == null ) return Status.OK_STATUS;
+ if( selected instanceof IProject ) {
+ new ArchiveBuildDelegate().fullProjectBuild(((IProject)selected).getLocation());
+ } else if (selected instanceof IArchiveNode &&
+ ((IArchiveNode)selected).getNodeType() == IArchiveNode.TYPE_ARCHIVE) {
+ new ArchiveBuildDelegate().fullArchiveBuild((IArchive)selected);
+ } else if( selected != null && selected instanceof IProject ){
+ new
ArchiveBuildDelegate().fullProjectBuild(((IProject)selected).getProject().getLocation());
+ } else {
+ new
ArchiveBuildDelegate().fullArchiveBuild(((IArchiveNode)selected).getRootArchive());
+ }
+ return Status.OK_STATUS;
+ }
+ }.schedule();
+ }
+
+ private Object getSelectedObject() {
+ IStructuredSelection selection =
(IStructuredSelection)getCommonViewer().getSelection();
+ if (selection != null && !selection.isEmpty())
+ return selection.getFirstElement();
+ return null;
+ }
+}
Deleted:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java 2008-08-02
00:39:43 UTC (rev 9475)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ProjectArchivesView.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -1,381 +0,0 @@
-package org.jboss.ide.eclipse.archives.ui.views;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.wizard.ProgressMonitorPart;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Link;
-import org.eclipse.ui.INullSelectionListener;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.PageBook;
-import org.eclipse.ui.part.ViewPart;
-import org.jboss.ide.eclipse.archives.core.model.ArchivesModel;
-import org.jboss.ide.eclipse.archives.core.model.ArchivesModelException;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelListener;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveModelRootNode;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
-import org.jboss.ide.eclipse.archives.ui.ArchivesUIMessages;
-import org.jboss.ide.eclipse.archives.ui.ExtensionManager;
-import org.jboss.ide.eclipse.archives.ui.PackagesUIPlugin;
-import org.jboss.ide.eclipse.archives.ui.PrefsInitializer;
-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;
-
-public class ProjectArchivesView extends ViewPart implements IArchiveModelListener {
-
- protected static ProjectArchivesView instance;
- public static ProjectArchivesView getInstance() {
- return instance;
- }
-
-
- protected ISelectionListener selectionListener;
- public ProjectArchivesView() {
- instance = this;
- selectionListener = createSelectionListener();
- }
-
- public void init(IViewSite site) throws PartInitException {
- super.init(site);
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().addPostSelectionListener(selectionListener);
- ArchivesModel.instance().addModelListener(this);
- }
-
- public void dispose() {
- super.dispose();
-
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().removePostSelectionListener(selectionListener);
- ArchivesModel.instance().removeModelListener(this);
- }
-
-
- protected ISelectionListener createSelectionListener() {
- return new INullSelectionListener() {
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- if (!(selection instanceof IStructuredSelection))
- return;
-
- Object element = ((IStructuredSelection)selection).getFirstElement();
- IProject project = getProject(element);
- if( project != null ) {
- viewSelectionChanged(project);
- } else {
- if( getCurrentProject() != null && !getCurrentProject().exists() ) {
- viewSelectionChanged(null);
- }
- }
- }
-
- public IProject getProject (Object element) {
- if( element instanceof IStructuredSelection)
- element = ((IStructuredSelection)element).getFirstElement();
-
- if (element instanceof IAdaptable) {
- IAdaptable adaptable = (IAdaptable)element;
- IResource resource = (IResource) adaptable.getAdapter(IResource.class);
- if( resource != null )
- return resource.getProject();
- }
- return null;
- }
-
- };
- }
-
-
- // parts
- private PageBook book;
- private IProject project;
- private ArchivesContentProvider contentProvider = new ArchivesContentProvider();
- private ArchivesLabelProvider labelProvider = new ArchivesLabelProvider();
- private Composite emptyComposite, viewerComposite, loadingPackagesComposite,
noSelectionComposite;
- private IProgressMonitor loadingProgress;
- private TreeViewer packageViewer;
- private ArchivesMenuHandler menuHandler;
- public void createPartControl(Composite parent) {
- book = new PageBook(parent, SWT.NONE);
- addEmptyComposite(book);
- addLoadingComposite(book);
- addViewerComposite(book);
- addNoSelectionComposite(book);
- book.showPage(noSelectionComposite);
- menuHandler = new ArchivesMenuHandler(packageViewer);
- }
-
- protected void addNoSelectionComposite(PageBook book) {
- noSelectionComposite = new Composite(book, SWT.NONE);
- noSelectionComposite.setLayout(new FillLayout());
- Label label = new Label(noSelectionComposite, SWT.NONE);
- label.setText(ArchivesUIMessages.ProjectPackagesView_noProjectSelectedMessage);
- }
- protected void addEmptyComposite(PageBook book) {
- emptyComposite = new Composite(book, SWT.NONE);
- emptyComposite.setLayout(new FormLayout());
- Label l = new Label(emptyComposite, SWT.NONE);
- l.setText(ArchivesUIMessages.ProjectPackagesView_createPackagesMessage);
-
- Composite actionsComposite = new Composite(emptyComposite, SWT.NONE);
-
-
- FormData lData = new FormData();
- lData.left = new FormAttachment(0,5);
- lData.top = new FormAttachment(0,5);
- l.setLayoutData(lData);
-
- FormData actionsData = new FormData();
- actionsData.left = new FormAttachment(0,5);
- actionsData.top = new FormAttachment(l,5);
- actionsData.bottom = new FormAttachment(100,-5);
-
- actionsComposite.setLayoutData(actionsData);
-
- actionsComposite.setLayout(new GridLayout(1, false));
- addNewPackageActions(actionsComposite);
-
- }
-
-
- private void addNewPackageActions (Composite composite) {
- NewArchiveAction[] actions = ExtensionManager.findNewArchiveActions();
- for (int i = 0; i < actions.length; i++) {
- final NewArchiveAction action = actions[i];
-
- Composite linkComposite = new Composite(composite, SWT.NONE);
- linkComposite.setLayout(createGridLayoutWithNoMargins(2));
- linkComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- new Label(linkComposite, SWT.NONE).setImage(action.getIcon());
-
- Link actionLink = new Link(linkComposite, SWT.NONE);
- actionLink.setText("<a href=\"create\">" + action.getLabel()
+ "</a>");
- actionLink.addSelectionListener(new SelectionListener () {
- public void widgetDefaultSelected(SelectionEvent e) {
- widgetSelected(e);
- }
-
- public void widgetSelected(SelectionEvent e) {
- action.getAction().run(null);
- }
- });
- }
- }
-
- private GridLayout createGridLayoutWithNoMargins (int columns) {
- GridLayout layout = new GridLayout(columns, false);
- layout.marginBottom = layout.marginHeight = layout.marginLeft = 0;
- layout.marginRight = layout.marginTop = layout.marginWidth = 0;
-
- return layout;
- }
-
- protected void addLoadingComposite(PageBook book) {
- loadingPackagesComposite = new Composite(book, SWT.NONE);
- loadingPackagesComposite.setLayout(new RowLayout(SWT.HORIZONTAL));
- loadingProgress = new ProgressMonitorPart(loadingPackagesComposite, null);
-
- }
- protected void addViewerComposite(PageBook book) {
- viewerComposite = new Composite(book, SWT.NONE);
- viewerComposite.setLayout(new FillLayout());
- packageViewer = new TreeViewer(viewerComposite, SWT.NONE);
- packageViewer.setContentProvider(contentProvider);
- packageViewer.setLabelProvider(labelProvider);
- }
-
-
- public void setFocus() {
- }
- public void viewSelectionChanged(IProject project) {
- if( project == null ) {
- this.project = null;
- packageViewer.setInput(null);
- book.showPage(noSelectionComposite);
- return;
- }
-
- IArchiveModelRootNode node = (IArchiveModelRootNode) packageViewer.getInput();
- if (node != null)
- {
- IPath projectPath = node.getProjectPath();
-
- if( project.getLocation().equals(projectPath))
- return;
- }
-
- if( !project.isAccessible() ) {
- book.showPage(noSelectionComposite);
- } else if( ArchivesModel.instance().canReregister(project.getLocation()) ) {
- if( ArchivesModel.instance().isProjectRegistered(project.getLocation()))
- book.showPage(viewerComposite);
- else {
- this.project = project;
- book.showPage(loadingPackagesComposite);
- if( PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS, project,
true)) {
- registerProjects(getAllProjectsWithPackages(), this.project);
- } else {
- registerProjects(new IProject[] {this.project}, this.project);
- }
- return;
- }
- } else {
- book.showPage(emptyComposite);
- }
-
- this.project = project;
- packageViewer.setInput(ArchivesModel.instance().getRoot(project.getLocation()));
- }
-
- public IProject getCurrentProject() {
- return project;
- }
-
- /**
- * Registers the projects if and only if a file exists already
- * @param projects
- * @param projectToShow
- */
- protected void registerProjects(final IProject[] projects, final IProject projectToShow)
{
- new Job("Register Project Archives") {
- protected IStatus run(IProgressMonitor monitor) {
- // register the projects
- for( int i = 0; i < projects.length; i++ ) {
- try {
- ArchivesModel.instance().registerProject(projects[i].getLocation(),
loadingProgress);
- } catch( ArchivesModelException ame ) {
- IStatus status = new Status(IStatus.ERROR, PackagesUIPlugin.PLUGIN_ID,
ame.getMessage(), ame);
- return status;
- }
- }
-
- // then refresh the view (if no errors)
- getSite().getShell().getDisplay().asyncExec(new Runnable () {
- public void run () {
- book.showPage(viewerComposite);
- packageViewer.setInput(ArchivesModel.instance().getRoot(projectToShow.getLocation()));
- }
- });
- return Status.OK_STATUS;
- }
- }.schedule();
- }
-
- public IProject[] getAllProjectsWithPackages() {
- IProject[] projects2 = ResourcesPlugin.getWorkspace().getRoot().getProjects();
- ArrayList<IProject> list = new ArrayList<IProject>();
- for( int i = 0; i < projects2.length; i++ ) {
- if( projects2[i].isAccessible() &&
ArchivesModel.instance().canReregister(projects2[i].getLocation())) {
- list.add(projects2[i]);
- }
- }
- return list.toArray(new IProject[list.size()]);
- }
- public IStructuredSelection getSelection() {
- return (IStructuredSelection)packageViewer.getSelection();
- }
-
-
- public void modelChanged(IArchiveNodeDelta delta) {
- boolean update = true;
- try {
- if( project == null ) return;
- if( delta.getPostNode() == null && delta.getPreNode() == null ) return;
- if( delta.getPreNode() == null ) update =
delta.getPostNode().getProjectPath().equals(project.getLocation());
- else if( delta.getPostNode() == null ) update =
delta.getPreNode().getProjectPath().equals(project.getLocation());
- else update = delta.getPreNode().getProjectPath().equals(project.getLocation()) ||
delta.getPostNode().getProjectPath().equals(project);
- } catch( Exception e ) {}
-
- if( !update ) return;
-
- final IArchiveNode[] topChanges;
- if( delta.getKind() == IArchiveNodeDelta.DESCENDENT_CHANGED)
- topChanges = getChanges(delta);
- else if( delta.getKind() == IArchiveNodeDelta.NO_CHANGE)
- topChanges = new IArchiveNode[]{};
- else
- topChanges = new IArchiveNode[]{delta.getPostNode()};
-
- // now go through and refresh them
- getSite().getShell().getDisplay().asyncExec(new Runnable () {
- public void run () {
- for( int i = 0; i < topChanges.length; i++ ) {
- if( topChanges.length == 1 && topChanges[0] instanceof
IArchiveModelRootNode) {
- // we have a changed IArchiveModelNode. Something's different
- IArchiveModelRootNode inputModel = (IArchiveModelRootNode)
packageViewer.getInput();
- IArchiveModelRootNode newModel = (IArchiveModelRootNode)topChanges[0];
- if( inputModel == null ||
(inputModel.getProjectPath().equals(newModel.getProjectPath()) && inputModel !=
newModel)) {
- // they have the same path but are different objects.
- // Model was probably reloaded from disk and could be completely different
- book.showPage(viewerComposite);
- packageViewer.setInput(newModel);
- packageViewer.expandAll();
- return;
- } else {
- packageViewer.refresh();
- return;
- }
- } else {
- // just refresh whatever is the top changed element (archive probably)
- packageViewer.refresh(topChanges[i]);
- packageViewer.expandToLevel(topChanges[i], 1);
- }
- }
- }
- });
-
- }
- protected IArchiveNode[] getChanges(IArchiveNodeDelta delta) {
-
- IArchiveNodeDelta[] children = delta.getAllAffectedChildren();
- ArrayList<IArchiveNode> list = new ArrayList<IArchiveNode>();
- for( int i = 0; i < children.length; i++ ) {
- if( children[i].getKind() == IArchiveNodeDelta.DESCENDENT_CHANGED)
- list.addAll(Arrays.asList(getChanges(children[i])));
- else
- list.add(children[i].getPostNode());
- }
- return list.toArray(new IArchiveNode[list.size()]);
- }
-
- public void refreshViewer(final Object node) {
- getSite().getShell().getDisplay().asyncExec(new Runnable () {
- public void run () {
- if( node == null ) {
- Object[] els = packageViewer.getExpandedElements();
- packageViewer.refresh();
- packageViewer.setExpandedElements(els);
- } else {
- packageViewer.refresh(node);
- }
- }
- });
- }
-}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java 2008-08-02
00:39:43 UTC (rev 9475)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/AbstractArchiveWizard.java 2008-08-02
00:40:00 UTC (rev 9476)
@@ -20,7 +20,6 @@
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
import org.jboss.ide.eclipse.archives.ui.PackagesUIPlugin;
-import org.jboss.ide.eclipse.archives.ui.views.ProjectArchivesView;
import org.jboss.ide.eclipse.archives.ui.wizards.pages.ArchiveInfoWizardPage;
public abstract class AbstractArchiveWizard extends WizardWithNotification implements
INewWizard {
@@ -33,11 +32,6 @@
protected IArchiveNode initialDestinationNode;
public AbstractArchiveWizard () {
- this.project = ProjectArchivesView.getInstance().getCurrentProject();
- IStructuredSelection selection = ProjectArchivesView.getInstance().getSelection();
- Object s = selection.getFirstElement();
- if( s instanceof IArchiveNode )
- initialDestinationNode = (IArchiveNode)s;
}
public AbstractArchiveWizard (IArchive existingPackage) {
@@ -115,7 +109,8 @@
public void init(IWorkbench workbench, IStructuredSelection selection) {
if (selection == null) return;
- project = ProjectArchivesView.getInstance().getCurrentProject();
+ project = null;
+
Object selected = (selection.isEmpty() ? project : selection.getFirstElement());
if (selected instanceof IArchiveNode) {
@@ -125,9 +120,10 @@
}
project = ResourcesPlugin.getWorkspace().getRoot().getProject(node.getProjectName());
} else if (selected instanceof IContainer) {
+ project = ((IContainer)selected).getProject();
initialDestinationPath = ((IContainer)selected).getFullPath().toString();
isPathWorkspaceRelative = true;
- } else {
+ } else if( project != null ){
initialDestinationPath = project.getFullPath().toString();
isPathWorkspaceRelative = true;
}