Author: rob.stryker(a)jboss.com
Date: 2008-08-04 14:40:06 -0400 (Mon, 04 Aug 2008)
New Revision: 9503
Added:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesActionProvider.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProviderDelegate.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesRootBridgeContentProvider.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesRootContentProvider.java
Removed:
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/ArchivesContentProviderDelegate.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesRootBridgeContentProvider.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesRootContentProvider.java
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/PreviewPage.java
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/plugin.xml
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/pages/DefaultJARConfigWizardPage.java
Log:
moved a few files from one package to another
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/PreviewPage.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/PreviewPage.java 2008-08-04
17:43:10 UTC (rev 9502)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/packages/PreviewPage.java 2008-08-04
18:40:06 UTC (rev 9503)
@@ -54,8 +54,8 @@
import org.eclipse.wst.server.core.internal.ServerPlugin;
import org.jboss.ide.eclipse.archives.core.model.IArchive;
import org.jboss.ide.eclipse.archives.core.model.IArchiveFolder;
+import org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProviderDelegate;
import org.jboss.ide.eclipse.archives.ui.providers.ArchivesLabelProvider;
-import org.jboss.ide.eclipse.archives.ui.views.ArchivesContentProviderDelegate;
import org.jboss.ide.eclipse.archives.ui.wizards.AbstractArchiveWizard;
import org.jboss.ide.eclipse.archives.ui.wizards.WizardPageWithNotification;
Modified: trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/plugin.xml
===================================================================
--- trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/plugin.xml 2008-08-04 17:43:10
UTC (rev 9502)
+++ trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/plugin.xml 2008-08-04 18:40:06
UTC (rev 9503)
@@ -104,7 +104,7 @@
point="org.eclipse.ui.navigator.navigatorContent">
<navigatorContent
activeByDefault="true"
-
contentProvider="org.jboss.ide.eclipse.archives.ui.views.ArchivesRootContentProvider"
+
contentProvider="org.jboss.ide.eclipse.archives.ui.providers.ArchivesRootContentProvider"
icon="icons/jar_obj.gif"
id="org.jboss.ide.eclipse.archives.ui.archivesContent"
labelProvider="org.jboss.ide.eclipse.archives.ui.providers.ArchivesLabelProvider"
@@ -124,12 +124,12 @@
</or>
</possibleChildren>
<actionProvider
-
class="org.jboss.ide.eclipse.archives.ui.views.ArchivesActionProvider"
+
class="org.jboss.ide.eclipse.archives.ui.providers.ArchivesActionProvider"
id="org.jboss.ide.eclipse.archives.ui.views.ArchivesActionProvider1">
</actionProvider>
</navigatorContent>
<navigatorContent
-
contentProvider="org.jboss.ide.eclipse.archives.ui.views.ArchivesRootBridgeContentProvider"
+
contentProvider="org.jboss.ide.eclipse.archives.ui.providers.ArchivesRootBridgeContentProvider"
icon="icons/jar_obj.gif"
id="org.jboss.ide.eclipse.archives.ui.archivesRootBridgeContent"
labelProvider="org.jboss.ide.eclipse.archives.ui.providers.ArchivesLabelProvider"
@@ -141,7 +141,7 @@
</instanceof>
</triggerPoints>
<actionProvider
-
class="org.jboss.ide.eclipse.archives.ui.views.ArchivesActionProvider"
+
class="org.jboss.ide.eclipse.archives.ui.providers.ArchivesActionProvider"
id="org.jboss.ide.eclipse.archives.ui.views.ArchivesActionProvider2">
</actionProvider>
<possibleChildren>
Copied:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesActionProvider.java
(from rev 9479,
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/providers/ArchivesActionProvider.java
(rev 0)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesActionProvider.java 2008-08-04
18:40:06 UTC (rev 9503)
@@ -0,0 +1,360 @@
+package org.jboss.ide.eclipse.archives.ui.providers;
+
+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();
+ }
+}
Property changes on:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesActionProvider.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProviderDelegate.java
(from rev 9479,
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesContentProviderDelegate.java)
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProviderDelegate.java
(rev 0)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesContentProviderDelegate.java 2008-08-04
18:40:06 UTC (rev 9503)
@@ -0,0 +1,184 @@
+package org.jboss.ide.eclipse.archives.ui.providers;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+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.TreeViewer;
+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.IArchiveModelListener;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
+import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
+
+public class ArchivesContentProviderDelegate implements ITreeContentProvider,
IArchiveModelListener {
+
+ // Because all viewers need to be updated, this must be a singleton
+ private static ArchivesContentProviderDelegate singleton;
+ public static ArchivesContentProviderDelegate getDefault() {
+ if( singleton == null )
+ singleton = new ArchivesContentProviderDelegate();
+ return singleton;
+ }
+
+ public static class WrappedProject {
+ public static final int NAME = 1;
+ public static final int CATEGORY = 2;
+ private IProject element;
+ private int type;
+ public WrappedProject(IProject element) { this.element = element; }
+ public WrappedProject(IProject element, int type) { this.element = element; this.type =
type;}
+ public IProject getElement() { return element; }
+ public int getType() { return type; }
+ public boolean equals(Object otherObject) {
+ if( otherObject instanceof WrappedProject &&
element.equals(((WrappedProject)otherObject).element))
+ return true;
+ return false;
+ }
+ }
+
+ public static class DelayProxy {
+ public WrappedProject wProject;
+ public IProject project;
+ public DelayProxy(WrappedProject wp) {
+ this.wProject = wp;
+ this.project = wProject.element;
+ }
+ }
+
+ public ArchivesContentProviderDelegate() {
+ ArchivesModel.instance().addModelListener(this);
+ }
+ public ArchivesContentProviderDelegate(boolean addListener) {
+ if( addListener)
+ ArchivesModel.instance().addModelListener(this);
+ }
+
+ protected ArrayList<Viewer> viewersInUse = new ArrayList<Viewer>();
+ protected ArrayList<IProject> loadingProjects = new ArrayList<IProject>();
+
+ public Object[] getChildren(Object parentElement) {
+ if( parentElement instanceof WrappedProject ) {
+ WrappedProject wp = (WrappedProject)parentElement;
+ IProject p = ((WrappedProject)parentElement).getElement();
+
+ // if currently loading, always send a delay
+ if( loadingProjects.contains(p))
+ return new Object[]{new DelayProxy(wp)};
+
+ 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(wp);
+ launchRegistrationThread(dp);
+ return new Object[]{dp};
+ }
+ }
+ if( parentElement instanceof IArchiveNode )
+ return ((IArchiveNode)parentElement).getAllChildren();
+ return new Object[0];
+ }
+
+
+ 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<Viewer> it = viewersInUse.iterator();
+ while(it.hasNext()) {
+ Viewer next = ((Viewer)it.next());
+ if( next instanceof StructuredViewer)
+ ((StructuredViewer)next).refresh(dp.wProject);
+ 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() {
+ ArchivesModel.instance().removeModelListener(this);
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if( newInput != null) {
+ if( !viewersInUse.contains(viewer)) {
+ viewersInUse.add(viewer);
+ }
+ } else {
+ viewersInUse.remove(viewer);
+ }
+ }
+ public void modelChanged(IArchiveNodeDelta delta) {
+
+ final IArchiveNode[] topChanges;
+ if( delta.getKind() == IArchiveNodeDelta.DESCENDENT_CHANGED)
+ topChanges = getChanges(delta);
+ else if( delta.getKind() == IArchiveNodeDelta.NO_CHANGE)
+ return;
+ else
+ topChanges = new IArchiveNode[]{delta.getPostNode()};
+
+ final Viewer[] viewers = (Viewer[]) viewersInUse.toArray(new
Viewer[viewersInUse.size()]);
+
+ // now go through and refresh them
+ Display.getDefault().asyncExec(new Runnable () {
+ public void run () {
+ for( int i = 0; i < topChanges.length; i++ ) {
+ for (int j = 0; j < viewers.length; j++ ) {
+ if( viewers[j] instanceof StructuredViewer ) {
+ ((StructuredViewer)viewers[j]).refresh(topChanges[i]);
+ if( viewers[j] instanceof TreeViewer ) {
+ ((TreeViewer)viewers[j]).expandToLevel(topChanges[i], 1);
+ }
+ } else
+ viewers[j].refresh();
+ }
+ }
+ }
+ });
+ }
+
+ 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()]);
+ }
+
+}
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-04
17:43:10 UTC (rev 9502)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesLabelProvider.java 2008-08-04
18:40:06 UTC (rev 9503)
@@ -12,8 +12,8 @@
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.views.ArchivesContentProviderDelegate.DelayProxy;
-import
org.jboss.ide.eclipse.archives.ui.views.ArchivesContentProviderDelegate.WrappedProject;
+import
org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProviderDelegate.DelayProxy;
+import
org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProviderDelegate.WrappedProject;
public class ArchivesLabelProvider extends BaseLabelProvider implements ILabelProvider {
Copied:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesRootBridgeContentProvider.java
(from rev 9479,
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesRootBridgeContentProvider.java)
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesRootBridgeContentProvider.java
(rev 0)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesRootBridgeContentProvider.java 2008-08-04
18:40:06 UTC (rev 9503)
@@ -0,0 +1,39 @@
+package org.jboss.ide.eclipse.archives.ui.providers;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import
org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProviderDelegate.WrappedProject;
+
+public class ArchivesRootBridgeContentProvider implements ITreeContentProvider {
+ private ArchivesContentProviderDelegate delegate;
+ public ArchivesRootBridgeContentProvider() {
+ delegate = ArchivesContentProviderDelegate.getDefault();
+ }
+
+ public Object[] getChildren(Object parentElement) {
+ if( parentElement instanceof IProject )
+ return new Object[] { new WrappedProject((IProject)parentElement,
WrappedProject.CATEGORY) };
+ return delegate.getChildren(parentElement);
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ return delegate.hasChildren(element);
+ }
+
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ delegate.inputChanged(viewer, oldInput, newInput);
+ }
+
+}
Property changes on:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesRootBridgeContentProvider.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesRootContentProvider.java
(from rev 9479,
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/providers/ArchivesRootContentProvider.java
(rev 0)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesRootContentProvider.java 2008-08-04
18:40:06 UTC (rev 9503)
@@ -0,0 +1,70 @@
+package org.jboss.ide.eclipse.archives.ui.providers;
+
+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;
+import
org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProviderDelegate.WrappedProject;
+import org.jboss.ide.eclipse.archives.ui.views.ProjectArchivesCommonView;
+
+public class ArchivesRootContentProvider implements ITreeContentProvider {
+ private ArchivesContentProviderDelegate delegate;
+ public ArchivesRootContentProvider() {
+ delegate = ArchivesContentProviderDelegate.getDefault();
+ }
+
+ public Object[] getChildren(Object parentElement) {
+ return delegate.getChildren(parentElement);
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ return delegate.hasChildren(element);
+ }
+
+ 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 wrap((IProject[]) tmp.toArray(new IProject[tmp.size()]));
+ }
+ IProject cp = ProjectArchivesCommonView.getInstance().getCurrentProject();
+ if( cp != null )
+ return wrap(new IProject[]{cp});
+ }
+ return new Object[]{};
+ }
+
+ protected Object[] wrap(IProject[] objs) {
+ WrappedProject[] projs = new WrappedProject[objs.length];
+ for( int i = 0; i < projs.length; i++)
+ projs[i] = new WrappedProject(objs[i], WrappedProject.NAME);
+ return projs;
+ }
+
+ public void dispose() {
+ delegate.dispose();
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ delegate.inputChanged(viewer, oldInput, newInput);
+ }
+
+ private boolean showProjectRoot () {
+ return PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_PROJECT_ROOT);
+ }
+ private boolean showAllProjects () {
+ return PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS);
+ }
+}
Property changes on:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/providers/ArchivesRootContentProvider.java
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted:
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 2008-08-04
17:43:10 UTC (rev 9502)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesActionProvider.java 2008-08-04
18:40:06 UTC (rev 9503)
@@ -1,360 +0,0 @@
-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();
- }
-}
Deleted:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesContentProviderDelegate.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesContentProviderDelegate.java 2008-08-04
17:43:10 UTC (rev 9502)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesContentProviderDelegate.java 2008-08-04
18:40:06 UTC (rev 9503)
@@ -1,184 +0,0 @@
-package org.jboss.ide.eclipse.archives.ui.views;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-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.TreeViewer;
-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.IArchiveModelListener;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveNode;
-import org.jboss.ide.eclipse.archives.core.model.IArchiveNodeDelta;
-
-public class ArchivesContentProviderDelegate implements ITreeContentProvider,
IArchiveModelListener {
-
- // Because all viewers need to be updated, this must be a singleton
- private static ArchivesContentProviderDelegate singleton;
- public static ArchivesContentProviderDelegate getDefault() {
- if( singleton == null )
- singleton = new ArchivesContentProviderDelegate();
- return singleton;
- }
-
- public static class WrappedProject {
- public static final int NAME = 1;
- public static final int CATEGORY = 2;
- private IProject element;
- private int type;
- public WrappedProject(IProject element) { this.element = element; }
- public WrappedProject(IProject element, int type) { this.element = element; this.type =
type;}
- public IProject getElement() { return element; }
- public int getType() { return type; }
- public boolean equals(Object otherObject) {
- if( otherObject instanceof WrappedProject &&
element.equals(((WrappedProject)otherObject).element))
- return true;
- return false;
- }
- }
-
- public static class DelayProxy {
- public WrappedProject wProject;
- public IProject project;
- public DelayProxy(WrappedProject wp) {
- this.wProject = wp;
- this.project = wProject.element;
- }
- }
-
- public ArchivesContentProviderDelegate() {
- ArchivesModel.instance().addModelListener(this);
- }
- public ArchivesContentProviderDelegate(boolean addListener) {
- if( addListener)
- ArchivesModel.instance().addModelListener(this);
- }
-
- protected ArrayList<Viewer> viewersInUse = new ArrayList<Viewer>();
- protected ArrayList<IProject> loadingProjects = new ArrayList<IProject>();
-
- public Object[] getChildren(Object parentElement) {
- if( parentElement instanceof WrappedProject ) {
- WrappedProject wp = (WrappedProject)parentElement;
- IProject p = ((WrappedProject)parentElement).getElement();
-
- // if currently loading, always send a delay
- if( loadingProjects.contains(p))
- return new Object[]{new DelayProxy(wp)};
-
- 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(wp);
- launchRegistrationThread(dp);
- return new Object[]{dp};
- }
- }
- if( parentElement instanceof IArchiveNode )
- return ((IArchiveNode)parentElement).getAllChildren();
- return new Object[0];
- }
-
-
- 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<Viewer> it = viewersInUse.iterator();
- while(it.hasNext()) {
- Viewer next = ((Viewer)it.next());
- if( next instanceof StructuredViewer)
- ((StructuredViewer)next).refresh(dp.wProject);
- 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() {
- ArchivesModel.instance().removeModelListener(this);
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- if( newInput != null) {
- if( !viewersInUse.contains(viewer)) {
- viewersInUse.add(viewer);
- }
- } else {
- viewersInUse.remove(viewer);
- }
- }
- public void modelChanged(IArchiveNodeDelta delta) {
-
- final IArchiveNode[] topChanges;
- if( delta.getKind() == IArchiveNodeDelta.DESCENDENT_CHANGED)
- topChanges = getChanges(delta);
- else if( delta.getKind() == IArchiveNodeDelta.NO_CHANGE)
- return;
- else
- topChanges = new IArchiveNode[]{delta.getPostNode()};
-
- final Viewer[] viewers = (Viewer[]) viewersInUse.toArray(new
Viewer[viewersInUse.size()]);
-
- // now go through and refresh them
- Display.getDefault().asyncExec(new Runnable () {
- public void run () {
- for( int i = 0; i < topChanges.length; i++ ) {
- for (int j = 0; j < viewers.length; j++ ) {
- if( viewers[j] instanceof StructuredViewer ) {
- ((StructuredViewer)viewers[j]).refresh(topChanges[i]);
- if( viewers[j] instanceof TreeViewer ) {
- ((TreeViewer)viewers[j]).expandToLevel(topChanges[i], 1);
- }
- } else
- viewers[j].refresh();
- }
- }
- }
- });
- }
-
- 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()]);
- }
-
-}
Deleted:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesRootBridgeContentProvider.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesRootBridgeContentProvider.java 2008-08-04
17:43:10 UTC (rev 9502)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesRootBridgeContentProvider.java 2008-08-04
18:40:06 UTC (rev 9503)
@@ -1,39 +0,0 @@
-package org.jboss.ide.eclipse.archives.ui.views;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import
org.jboss.ide.eclipse.archives.ui.views.ArchivesContentProviderDelegate.WrappedProject;
-
-public class ArchivesRootBridgeContentProvider implements ITreeContentProvider {
- private ArchivesContentProviderDelegate delegate;
- public ArchivesRootBridgeContentProvider() {
- delegate = ArchivesContentProviderDelegate.getDefault();
- }
-
- public Object[] getChildren(Object parentElement) {
- if( parentElement instanceof IProject )
- return new Object[] { new WrappedProject((IProject)parentElement,
WrappedProject.CATEGORY) };
- return delegate.getChildren(parentElement);
- }
-
- public Object getParent(Object element) {
- return null;
- }
-
- public boolean hasChildren(Object element) {
- return delegate.hasChildren(element);
- }
-
- public Object[] getElements(Object inputElement) {
- return getChildren(inputElement);
- }
-
- public void dispose() {
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- delegate.inputChanged(viewer, oldInput, newInput);
- }
-
-}
Deleted:
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 2008-08-04
17:43:10 UTC (rev 9502)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/views/ArchivesRootContentProvider.java 2008-08-04
18:40:06 UTC (rev 9503)
@@ -1,69 +0,0 @@
-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;
-import
org.jboss.ide.eclipse.archives.ui.views.ArchivesContentProviderDelegate.WrappedProject;
-
-public class ArchivesRootContentProvider implements ITreeContentProvider {
- private ArchivesContentProviderDelegate delegate;
- public ArchivesRootContentProvider() {
- delegate = ArchivesContentProviderDelegate.getDefault();
- }
-
- public Object[] getChildren(Object parentElement) {
- return delegate.getChildren(parentElement);
- }
-
- public Object getParent(Object element) {
- return null;
- }
-
- public boolean hasChildren(Object element) {
- return delegate.hasChildren(element);
- }
-
- 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 wrap((IProject[]) tmp.toArray(new IProject[tmp.size()]));
- }
- IProject cp = ProjectArchivesCommonView.getInstance().getCurrentProject();
- if( cp != null )
- return wrap(new IProject[]{cp});
- }
- return new Object[]{};
- }
-
- protected Object[] wrap(IProject[] objs) {
- WrappedProject[] projs = new WrappedProject[objs.length];
- for( int i = 0; i < projs.length; i++)
- projs[i] = new WrappedProject(objs[i], WrappedProject.NAME);
- return projs;
- }
-
- public void dispose() {
- delegate.dispose();
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- delegate.inputChanged(viewer, oldInput, newInput);
- }
-
- private boolean showProjectRoot () {
- return PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_PROJECT_ROOT);
- }
- private boolean showAllProjects () {
- return PrefsInitializer.getBoolean(PrefsInitializer.PREF_SHOW_ALL_PROJECTS);
- }
-}
Modified:
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/pages/DefaultJARConfigWizardPage.java
===================================================================
---
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/pages/DefaultJARConfigWizardPage.java 2008-08-04
17:43:10 UTC (rev 9502)
+++
trunk/core/plugins/org.jboss.ide.eclipse.archives.ui/src/main/org/jboss/ide/eclipse/archives/ui/wizards/pages/DefaultJARConfigWizardPage.java 2008-08-04
18:40:06 UTC (rev 9503)
@@ -7,8 +7,8 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.jboss.ide.eclipse.archives.ui.ArchivesSharedImages;
+import org.jboss.ide.eclipse.archives.ui.providers.ArchivesContentProviderDelegate;
import org.jboss.ide.eclipse.archives.ui.providers.ArchivesLabelProvider;
-import org.jboss.ide.eclipse.archives.ui.views.ArchivesContentProviderDelegate;
import org.jboss.ide.eclipse.archives.ui.wizards.AbstractArchiveWizard;
import org.jboss.ide.eclipse.archives.ui.wizards.WizardPageWithNotification;