Author: rob.stryker(a)jboss.com
Date: 2007-10-29 18:49:28 -0400 (Mon, 29 Oct 2007)
New Revision: 4571
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ExtensionTableViewer.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ServerExtensionFrame.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/JBossServerViewExtension.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/SimplePropertiesViewExtension.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/DescriptorXPathViewProvider.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/EventLogViewProvider.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/FilesetViewProvider.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/InactiveExtensionViewProvider.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/ModuleViewProvider.java
Log:
JBIDE-1192 multi-select in server view
Most actions switched over to account for multiple selections.
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ExtensionTableViewer.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ExtensionTableViewer.java 2007-10-29
22:48:34 UTC (rev 4570)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ExtensionTableViewer.java 2007-10-29
22:49:28 UTC (rev 4571)
@@ -274,6 +274,17 @@
return ((ContentWrapper)o).getElement();
return o;
}
+
+ public Object[] getRawElements(IStructuredSelection selection) {
+ ArrayList<Object> tmp = new ArrayList<Object>();
+ Object[] obj = selection.toArray();
+ Object tmp2;
+ for( int i = 0; i < obj.length; i++ ) {
+ tmp2 = getRawElement(obj[i]);
+ if( tmp2 != null ) tmp.add(tmp2);
+ }
+ return (Object[]) tmp.toArray(new Object[tmp.size()]);
+ }
public ServerViewProvider getParentViewProvider(Object o) {
if( o instanceof ContentWrapper )
@@ -295,22 +306,32 @@
protected void fillSelectedContextMenu(Shell shell, IMenuManager mgr) {
ISelection sel = getSelection();
- if( sel instanceof IStructuredSelection ) {
- Object selected = ((IStructuredSelection)sel).getFirstElement();
- if( selected != null ) {
- ServerViewProvider provider;
- if( selected instanceof ServerViewProvider ) {
- provider = (ServerViewProvider)selected;
- } else {
- provider = getParentViewProvider(selected);
- }
- if( provider != null )
- provider.getDelegate().fillContextMenu(shell, mgr, getRawElement(selected));
+ if (sel instanceof IStructuredSelection) {
+ ServerViewProvider provider = findProvider((IStructuredSelection)sel);
+ if (provider != null) {
+ Object[] selected = getRawElements((IStructuredSelection)sel);
+ provider.getDelegate().fillContextMenu(shell, mgr, selected);
}
}
+ }
+ protected ServerViewProvider findProvider(IStructuredSelection sel) {
+ Object[] selected = sel.toArray();
+ ServerViewProvider provider = null;
+ ServerViewProvider tmpProvider;
+ for( int i = 0; i < selected.length; i++ ) {
+ if( selected[i] instanceof ServerViewProvider ) {
+ tmpProvider = (ServerViewProvider)selected[i];
+ } else {
+ tmpProvider = getParentViewProvider(selected[i]);
+ }
+ if( provider == null )
+ provider = tmpProvider;
+ else if( tmpProvider != provider )
+ return null;
+ }
+ return provider;
}
-
protected void fillJBContextMenu(Shell shell, IMenuManager menu) {
Object selected = getSelectedElement();
@@ -365,8 +386,10 @@
} else if( page == null ) */ {
page = topLevelPropertiesPage;
}
- page.selectionChanged(part, sel);
- book.showPage(page.getControl());
+ if( page != null ) {
+ page.selectionChanged(part, sel);
+ book.showPage(page.getControl());
+ }
}
}
private IPropertySheetPage getDelegatePage(ServerViewProvider provider) {
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ServerExtensionFrame.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ServerExtensionFrame.java 2007-10-29
22:48:34 UTC (rev 4570)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/ServerExtensionFrame.java 2007-10-29
22:49:28 UTC (rev 4571)
@@ -55,7 +55,7 @@
super(parent, SWT.NONE);
this.view = view;
setLayout(new FillLayout());
- jbTreeTable = new Tree(this, SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL |
SWT.V_SCROLL | SWT.BORDER);
+ jbTreeTable = new Tree(this, SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL |
SWT.V_SCROLL | SWT.BORDER);
jbViewer = new ExtensionTableViewer(jbTreeTable);
view.getSite().setSelectionProvider(jbViewer);
addListeners();
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/JBossServerViewExtension.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/JBossServerViewExtension.java 2007-10-29
22:48:34 UTC (rev 4570)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/JBossServerViewExtension.java 2007-10-29
22:49:28 UTC (rev 4571)
@@ -76,7 +76,7 @@
}
- public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
+ public void fillContextMenu(Shell shell, IMenuManager menu, Object[] selected) {
}
public ITreeContentProvider getContentProvider() {
@@ -157,4 +157,11 @@
protected boolean isJBossServer(IServer server) {
return (JBossServer)server.loadAdapter(JBossServer.class, new NullProgressMonitor()) !=
null;
}
+
+ protected boolean allAre(Object[] list, Class clazz) {
+ for( int i = 0; i < list.length; i++ )
+ if( list[i].getClass() != clazz )
+ return false;
+ return true;
+ }
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/SimplePropertiesViewExtension.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/SimplePropertiesViewExtension.java 2007-10-29
22:48:34 UTC (rev 4570)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/SimplePropertiesViewExtension.java 2007-10-29
22:49:28 UTC (rev 4571)
@@ -45,7 +45,7 @@
}
- public abstract void fillContextMenu(Shell shell, IMenuManager menu, Object selection);
+ public abstract void fillContextMenu(Shell shell, IMenuManager menu, Object[]
selection);
public abstract ITreeContentProvider getContentProvider();
public abstract LabelProvider getLabelProvider();
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/DescriptorXPathViewProvider.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/DescriptorXPathViewProvider.java 2007-10-29
22:48:34 UTC (rev 4570)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/DescriptorXPathViewProvider.java 2007-10-29
22:49:28 UTC (rev 4571)
@@ -300,15 +300,15 @@
editFileAction.setText("Edit File");
}
- public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
- if( selection instanceof ServerViewProvider ) {
+ public void fillContextMenu(Shell shell, IMenuManager menu, Object[] selection) {
+ if( selection[0] instanceof ServerViewProvider ) {
menu.add(this.newXPathCategoryAction);
menu.add(new Separator());
return;
}
- if( selection instanceof XPathCategory ) {
- setActiveCategory((XPathCategory)selection);
+ if( selection[0] instanceof XPathCategory ) {
+ setActiveCategory((XPathCategory)selection[0]);
menu.add(this.newXPathAction);
menu.add(this.deleteXPathCategoryAction);
menu.add(new Separator());
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/EventLogViewProvider.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/EventLogViewProvider.java 2007-10-29
22:48:34 UTC (rev 4570)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/EventLogViewProvider.java 2007-10-29
22:49:28 UTC (rev 4571)
@@ -90,7 +90,7 @@
private IServer input;
private Action clearLogAction;
- private static HashMap majorTypeToName = new HashMap();
+ private static HashMap<String, String> majorTypeToName = new HashMap<String,
String>();
static {
IExtensionRegistry registry = Platform.getExtensionRegistry();
IConfigurationElement[] cf =
registry.getConfigurationElementsFor(JBossServerUIPlugin.PLUGIN_ID,
"EventLogMajorType");
@@ -130,7 +130,7 @@
return getRootCategories();
Object[] ret = EventLogModel.getModel(input).getRoot().getChildren();
if( getSortOrder()) {
- List l = Arrays.asList(ret);
+ List<Object> l = Arrays.asList(ret);
Collections.reverse(l);
return l.toArray();
}
@@ -140,7 +140,7 @@
if( parentElement instanceof String ) {
// get children only of this type
SimpleTreeItem[] children = EventLogModel.getModel(input).getRoot().getChildren();
- ArrayList items = new ArrayList();
+ ArrayList<SimpleTreeItem> items = new ArrayList<SimpleTreeItem>();
for( int i = 0; i < children.length; i++ ) {
if( children[i] instanceof EventLogTreeItem ) {
String type = ((EventLogTreeItem)children[i]).getEventClass();
@@ -151,7 +151,7 @@
if( getSortOrder() ) Collections.reverse(items);
- return (Object[]) items.toArray(new Object[items.size()]);
+ return items.toArray(new Object[items.size()]);
}
// just return the object's kids
@@ -163,7 +163,7 @@
protected Object[] getRootCategories() {
EventLogRoot root = EventLogModel.getModel(input).getRoot();
- ArrayList majorTypes = new ArrayList();
+ ArrayList<String> majorTypes = new ArrayList<String>();
SimpleTreeItem[] children = root.getChildren();
for( int i = 0; i < children.length; i++ ) {
if( children[i] instanceof EventLogTreeItem ) {
@@ -172,7 +172,7 @@
majorTypes.add(type);
}
}
- return (String[]) majorTypes.toArray(new String[majorTypes.size()]);
+ return majorTypes.toArray(new String[majorTypes.size()]);
}
public Object getParent(Object element) {
@@ -232,7 +232,7 @@
if( !(element instanceof EventLogTreeItem)) {
if( element instanceof String ) {
- String val = (String)majorTypeToName.get(element);
+ String val = majorTypeToName.get(element);
if( val != null ) return val;
}
return element.toString();
@@ -264,8 +264,9 @@
}
}
- public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
- menu.add(clearLogAction);
+ public void fillContextMenu(Shell shell, IMenuManager menu, Object selection[]) {
+ if( selection.length == 1 && selection[0] == this.provider)
+ menu.add(clearLogAction);
}
public ITreeContentProvider getContentProvider() {
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/FilesetViewProvider.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/FilesetViewProvider.java 2007-10-29
22:48:34 UTC (rev 4570)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/FilesetViewProvider.java 2007-10-29
22:49:28 UTC (rev 4571)
@@ -105,7 +105,7 @@
private FilesetContentProvider contentProvider;
private LabelProvider labelProvider;
private Fileset[] filesets;
- private Object selection;
+ private Object[] selection;
public FilesetViewProvider() {
contentProvider = new FilesetContentProvider();
@@ -143,10 +143,10 @@
createFilter.setText(Messages.FilesetsCreateFilter);
deleteFilter = new Action() {
public void run() {
- if( selection instanceof Fileset ) {
+ if( selection.length == 1 && selection[0] instanceof Fileset ) {
try {
ArrayList<Fileset> asList = new
ArrayList<Fileset>(Arrays.asList(filesets));
- asList.remove(selection);
+ asList.remove(selection[0]);
filesets = asList.toArray(new Fileset[asList.size()]);
saveFilesets();
} catch( Exception e ) {
@@ -158,7 +158,8 @@
deleteFilter.setText(Messages.FilesetsDeleteFilter);
editFilter = new Action() {
public void run() {
- Fileset sel = (Fileset)selection;
+ Fileset sel = selection.length == 1 && selection[0] instanceof Fileset ?
(Fileset)selection[0] : null;
+ if( sel == null ) return;
FilesetDialog d = new FilesetDialog(new Shell(), sel);
if( d.open() == Window.OK ) {
Fileset ret = d.getFileset();
@@ -175,13 +176,13 @@
public void run() {
try {
Shell shell = JBossServerView.getDefault().getSite().getShell();
- PathWrapper wrapper = (PathWrapper)selection;
- File file = wrapper.getPath().toFile();
+ File[] files = getSelectedFiles();
MessageBox mb = new MessageBox(shell,SWT.ICON_QUESTION | SWT.OK | SWT.CANCEL);
- mb.setText("Delete File?");
- mb.setMessage("Are you sure you want to delete " + file.getName() +
"?");
+ mb.setText("Delete Files?");
+ mb.setMessage("Are you sure you want to delete the selected files?");
if( mb.open() == SWT.OK) {
- FileUtil.safeDelete(file);
+ for( int i = 0; i < files.length; i++ )
+ FileUtil.safeDelete(files[i]);
refreshViewer();
}
} catch( Exception e ) {
@@ -191,37 +192,45 @@
deleteFileAction.setText(Messages.FilesetsDeleteFile);
editFileAction = new Action() {
public void run() {
- try {
- PathWrapper wrapper = (PathWrapper)selection;
- File file = wrapper.getPath().toFile();
- IFile eclipseFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new
Path(file.getAbsolutePath()));
-
- IWorkbench wb = PlatformUI.getWorkbench();
- IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
- IWorkbenchPage page = win.getActivePage();
- IFileStore fileStore= EFS.getLocalFileSystem().fromLocalFile(file);
- if( eclipseFile != null ) {
- IEditorInput input = new FileEditorInput(eclipseFile);
- IEditorDescriptor desc = PlatformUI.getWorkbench().
- getEditorRegistry().getDefaultEditor(file.getName());
- if( desc != null )
- page.openEditor(input, desc.getId());
- } else if( fileStore != null ){
- IEditorInput input = new FileStoreEditorInput(fileStore);
- IEditorDescriptor desc = PlatformUI.getWorkbench().
- getEditorRegistry().getDefaultEditor(file.getName());
- if( desc != null )
- page.openEditor(input, desc.getId());
+ File[] files = getSelectedFiles();
+ IWorkbench wb = PlatformUI.getWorkbench();
+ IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
+ IWorkbenchPage page = win.getActivePage();
+ for( int i = 0; i < files.length; i++ ) {
+ try {
+ IFile eclipseFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new
Path(files[i].getAbsolutePath()));
+ IFileStore fileStore= EFS.getLocalFileSystem().fromLocalFile(files[i]);
+ if( eclipseFile != null ) {
+ IEditorInput input = new FileEditorInput(eclipseFile);
+ IEditorDescriptor desc = PlatformUI.getWorkbench().
+ getEditorRegistry().getDefaultEditor(files[i].getName());
+ if( desc != null )
+ page.openEditor(input, desc.getId());
+ } else if( fileStore != null ){
+ IEditorInput input = new FileStoreEditorInput(fileStore);
+ IEditorDescriptor desc = PlatformUI.getWorkbench().
+ getEditorRegistry().getDefaultEditor(files[i].getName());
+ if( desc != null )
+ page.openEditor(input, desc.getId());
+ }
+ } catch( Exception e ) {
+ IStatus status = new Status(IStatus.ERROR, JBossServerUIPlugin.PLUGIN_ID,
"Cannot open file", e);
+ JBossServerUIPlugin.getDefault().getLog().log(status);
}
- } catch( Exception e ) {
- IStatus status = new Status(IStatus.ERROR, JBossServerUIPlugin.PLUGIN_ID,
"Cannot open file", e);
- JBossServerUIPlugin.getDefault().getLog().log(status);
}
}
};
editFileAction.setText(Messages.FilesetsEditFile);
}
+ protected File[] getSelectedFiles() {
+ ArrayList<File> tmp = new ArrayList<File>();
+ for( int i = 0; i < selection.length; i++ ) {
+ tmp.add(((PathWrapper)selection[i]).getPath().toFile());
+ }
+ return (File[]) tmp.toArray(new File[tmp.size()]);
+ }
+
public static class PathWrapper {
private IPath path;
private IPath folder;
@@ -496,37 +505,61 @@
}
- public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
+ public void fillContextMenu(Shell shell, IMenuManager menu, Object[] selection) {
this.selection = selection;
- if( selection instanceof ServerViewProvider ) {
+ if( selection.length == 1 && selection[0] instanceof ServerViewProvider ) {
menu.add(createFilter);
- } else if( selection instanceof Fileset ) {
+ } else if( selection.length == 1 && selection[0] instanceof Fileset ) {
menu.add(editFilter);
menu.add(deleteFilter);
- } else if( selection instanceof PathWrapper ) {
- File file = ((PathWrapper)selection).getPath().toFile();
- IFile eclipseFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new
Path(file.getAbsolutePath()));
- IFileStore fileStore= EFS.getLocalFileSystem().fromLocalFile(file);
- boolean editable = false;
- if( eclipseFile != null ) {
- IEditorInput input = new FileEditorInput(eclipseFile);
- IEditorDescriptor desc = PlatformUI.getWorkbench().
- getEditorRegistry().getDefaultEditor(file.getName());
- if( input != null && desc != null )
- editable = true;
- } else if( fileStore != null ){
- IEditorInput input = new FileStoreEditorInput(fileStore);
- IEditorDescriptor desc = PlatformUI.getWorkbench().
- getEditorRegistry().getDefaultEditor(file.getName());
- if( input != null && desc != null )
- editable = true;
- }
- editFileAction.setEnabled(editable);
- deleteFileAction.setEnabled(file.exists());
+ } else if( allPathWrappers(selection) ) {
+ editFileAction.setEnabled(canEdit(selection));
+ deleteFileAction.setEnabled(canDelete(selection));
menu.add(editFileAction);
menu.add(deleteFileAction);
}
}
+
+ protected boolean allPathWrappers(Object[] list) {
+ boolean result = true;
+ for( int i = 0; i < list.length; i++ )
+ result &= list[i] instanceof PathWrapper;
+ return result;
+ }
+
+ protected boolean canDelete(Object[] list ) {
+ boolean result = true;
+ for( int i = 0; i < list.length; i++ )
+ result &= ((PathWrapper)selection[i]).getPath().toFile().exists();
+ return result;
+ }
+
+ protected boolean canEdit(Object[] list) {
+ for( int i = 0; i < list.length; i++ )
+ if( canEdit(((PathWrapper)selection[i]).getPath().toFile()))
+ return true;
+ return false;
+ }
+
+ protected boolean canEdit(File file) {
+ IFile eclipseFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new
Path(file.getAbsolutePath()));
+ IFileStore fileStore= EFS.getLocalFileSystem().fromLocalFile(file);
+ boolean editable = false;
+ if( eclipseFile != null ) {
+ IEditorInput input = new FileEditorInput(eclipseFile);
+ IEditorDescriptor desc = PlatformUI.getWorkbench().
+ getEditorRegistry().getDefaultEditor(file.getName());
+ if( input != null && desc != null )
+ editable = true;
+ } else if( fileStore != null ){
+ IEditorInput input = new FileStoreEditorInput(fileStore);
+ IEditorDescriptor desc = PlatformUI.getWorkbench().
+ getEditorRegistry().getDefaultEditor(file.getName());
+ if( input != null && desc != null )
+ editable = true;
+ }
+ return editable;
+ }
public ITreeContentProvider getContentProvider() {
return contentProvider;
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/InactiveExtensionViewProvider.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/InactiveExtensionViewProvider.java 2007-10-29
22:48:34 UTC (rev 4570)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/InactiveExtensionViewProvider.java 2007-10-29
22:49:28 UTC (rev 4571)
@@ -110,24 +110,25 @@
}
- public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
- final Object selected = selection;
- if( selection instanceof ServerViewProvider && selection != this.provider) {
+ public void fillContextMenu(Shell shell, IMenuManager menu, Object[] selection) {
+ final Object[] selected = selection;
+ boolean allProviders = true;
+ for( int i = 0; i < selected.length; i++ )
+ allProviders = allProviders && selected[i] instanceof ServerViewProvider
+ && selected[i] != this.provider;
+
+ if( allProviders) {
Action act = new Action() {
public void run() {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
- if( selected instanceof ServerViewProvider) {
- ((ServerViewProvider)selected).setEnabled(true);
- ((ServerViewProvider)selected).getDelegate().getContentProvider().
+ for( int i = 0; i < selected.length; i++ ) {
+ ((ServerViewProvider)selected[i]).setEnabled(true);
+ ((ServerViewProvider)selected[i]).getDelegate().getContentProvider().
inputChanged(JBossServerView.getDefault().getServerFrame().getViewer(), null,
JBossServerView.getDefault().getSelectedServer());
-
- try {
- JBossServerView.getDefault().getServerFrame().getViewer().refresh();
- } catch(Exception e) {
- }
}
- }
+ JBossServerView.getDefault().getExtensionFrame().getViewer().refresh();
+ }
} );
}
};
@@ -135,6 +136,10 @@
menu.add(act);
}
}
+
+ public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
+ fillContextMenu(shell, menu, new Object[] { selection });
+ }
public ITreeContentProvider getContentProvider() {
return contentProvider;
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/ModuleViewProvider.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/ModuleViewProvider.java 2007-10-29
22:48:34 UTC (rev 4570)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/ModuleViewProvider.java 2007-10-29
22:49:28 UTC (rev 4571)
@@ -21,13 +21,11 @@
*/
package org.jboss.ide.eclipse.as.ui.views.server.providers;
+import java.util.ArrayList;
import java.util.Properties;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.CoreException;
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.IMenuManager;
import org.eclipse.jface.dialogs.MessageDialog;
@@ -44,13 +42,13 @@
import org.eclipse.wst.server.core.ServerEvent;
import org.eclipse.wst.server.core.ServerUtil;
import org.eclipse.wst.server.core.internal.PublishServerJob;
+import org.eclipse.wst.server.core.internal.Server;
import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
import org.eclipse.wst.server.ui.ServerUICore;
import org.eclipse.wst.server.ui.internal.view.servers.ModuleServer;
import org.jboss.ide.eclipse.as.core.server.UnitedServerListener;
import org.jboss.ide.eclipse.as.core.server.UnitedServerListenerManager;
import org.jboss.ide.eclipse.as.core.util.ServerConverter;
-import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin;
import org.jboss.ide.eclipse.as.ui.JBossServerUISharedImages;
import org.jboss.ide.eclipse.as.ui.Messages;
import org.jboss.ide.eclipse.as.ui.views.server.extensions.ServerViewProvider;
@@ -66,7 +64,7 @@
private ModuleContentProvider contentProvider;
private ModuleLabelProvider labelProvider;
private Action deleteModuleAction, fullPublishModuleAction,
incrementalPublishModuleAction;
- private ModuleServer selection;
+ private ModuleServer[] selection;
private IServerLifecycleListener serverResourceListener;
private IServerListener serverListener;
@@ -83,19 +81,22 @@
if (MessageDialog.openConfirm(new Shell(), Messages.ServerDialogHeading,
Messages.DeleteModuleConfirm)) {
Thread t = new Thread() { public void run() {
try {
- IServerWorkingCopy server = selection.server.createWorkingCopy();
-
- if( ServerConverter.getDeployableServer(selection.server) != null ) {
- ServerUtil.modifyModules(server, new IModule[0], selection.module, new
NullProgressMonitor());
- IServer server2 = server.save(true, null);
- ServerConverter.getDeployableServerBehavior(selection.server)
- .publishOneModule(IServer.PUBLISH_INCREMENTAL, selection.module,
ServerBehaviourDelegate.REMOVED, new NullProgressMonitor());
- } else {
- ServerUtil.modifyModules(server, new IModule[0], selection.module, new
NullProgressMonitor());
- IServer server2 = server.save(true, null);
- server2.publish(IServer.PUBLISH_INCREMENTAL, new NullProgressMonitor());
+ if( selection.length > 0 && selection[0].server != null ) {
+ IServer server = selection[0].server;
+ ArrayList topModsToRemove = new ArrayList();
+ IModule topModTmp;
+ for( int i = 0; i < selection.length; i++ ) {
+ if( !topModsToRemove.contains(selection[i].module[0]))
+ topModsToRemove.add(selection[i].module[0]);
+ }
+ IServerWorkingCopy serverWC = server.createWorkingCopy();
+ IModule[] modsToRemove =
+ (IModule[]) topModsToRemove.toArray(new IModule[topModsToRemove.size()]);
+ ServerUtil.modifyModules(serverWC, new IModule[0], modsToRemove, new
NullProgressMonitor());
+ IServer server2 = serverWC.save(true, null);
+ new PublishServerJob(server2, IServer.PUBLISH_INCREMENTAL, true).schedule();
}
- } catch (Exception e) {
+ } catch (CoreException e) {
// ignore
}
}};
@@ -109,7 +110,7 @@
fullPublishModuleAction = new Action() {
public void run() {
- actionPublish(IServer.PUBLISH_FULL);
+ actionPublish(IServer.PUBLISH_STATE_FULL);
}
};
fullPublishModuleAction.setText(Messages.FullPublishModuleText);
@@ -119,7 +120,7 @@
incrementalPublishModuleAction = new Action() {
public void run() {
- actionPublish(IServer.PUBLISH_INCREMENTAL);
+ actionPublish(IServer.PUBLISH_STATE_INCREMENTAL);
}
};
incrementalPublishModuleAction.setText(Messages.IncrementalPublishModuleText);
@@ -127,33 +128,25 @@
incrementalPublishModuleAction.setImageDescriptor(JBossServerUISharedImages.getImageDescriptor(JBossServerUISharedImages.PUBLISH_IMAGE));
}
- protected void actionPublish(final int type) {
- try {
- if( ServerConverter.getDeployableServer(selection.server) != null ) {
- new Job("Publish One Module To Server") {
- protected IStatus run(IProgressMonitor monitor) {
- ServerConverter.getDeployableServerBehavior(selection.server)
- .publishOneModule(type, selection.module,
- ServerBehaviourDelegate.CHANGED, new NullProgressMonitor());
- return Status.OK_STATUS;
- }
- }.schedule();
- } else {
- // can't do anything special here, sadly
- new PublishServerJob(selection.server, type, true).schedule();
+ protected void actionPublish(int type) {
+ // Assumption: Anything selected is already on the server, or it wouldnt be in the
view.
+ if( selection != null && selection.length > 0 ) {
+ Server s = ((Server)selection[0].server);
+ for( int i = 0; i < selection.length; i++ ) {
+ s.setModulePublishState(selection[i].module, type);
}
- } catch( Exception e ) {
- // ignore
- JBossServerUIPlugin.log("Error running publish action", e);
+ new PublishServerJob(s, IServer.PUBLISH_INCREMENTAL, true).schedule();
}
}
- public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
- if( selection instanceof ModuleServer) {
- this.selection = (ModuleServer)selection;
- if( this.selection.module.length == 1 )
- menu.add(deleteModuleAction);
+ public void fillContextMenu(Shell shell, IMenuManager menu, Object[] selection) {
+ if( allAre(selection, ModuleServer.class)) {
+ ModuleServer[] ms = new ModuleServer[selection.length];
+ for( int i = 0; i < selection.length; i++ )
+ ms[i] = (ModuleServer)selection[i];
+ this.selection = ms;
+ menu.add(deleteModuleAction);
menu.add(fullPublishModuleAction);
menu.add(incrementalPublishModuleAction);
}
@@ -250,7 +243,7 @@
return ms.module[size - 1].getName();
}
- return "garbage";
+ return "unknown";
}
public Image getImage(Object obj) {
if( obj instanceof ModuleServer ) {