From 99f26f4dd4136b33d0e68687599b9673363319ae Mon Sep 17 00:00:00 2001 From: Bruno Sinou Date: Tue, 26 Jun 2012 08:43:46 +0000 Subject: [PATCH] Fix copy workspace & delete artifacts commands git-svn-id: https://svn.argeo.org/slc/trunk@5347 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../META-INF/spring/commands.xml | 9 ++ .../org.argeo.slc.client.ui.dist/plugin.xml | 10 ++ .../ui/dist/commands/CopyWorkspace.java | 137 ++++++++++-------- .../ui/dist/commands/DeleteArtifacts.java | 81 +++++++++++ .../RefreshDistributionOverviewPage.java | 37 +++++ .../editors/DistributionOverviewPage.java | 43 +++++- 6 files changed, 256 insertions(+), 61 deletions(-) create mode 100644 eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/DeleteArtifacts.java create mode 100644 eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/RefreshDistributionOverviewPage.java diff --git a/eclipse/plugins/org.argeo.slc.client.ui.dist/META-INF/spring/commands.xml b/eclipse/plugins/org.argeo.slc.client.ui.dist/META-INF/spring/commands.xml index 61f60e2a2..63d63517e 100644 --- a/eclipse/plugins/org.argeo.slc.client.ui.dist/META-INF/spring/commands.xml +++ b/eclipse/plugins/org.argeo.slc.client.ui.dist/META-INF/spring/commands.xml @@ -47,4 +47,13 @@ class="org.argeo.slc.client.ui.dist.commands.RefreshDistributionsView" scope="prototype"> + + + + + diff --git a/eclipse/plugins/org.argeo.slc.client.ui.dist/plugin.xml b/eclipse/plugins/org.argeo.slc.client.ui.dist/plugin.xml index 3b426c6b3..8750f012f 100644 --- a/eclipse/plugins/org.argeo.slc.client.ui.dist/plugin.xml +++ b/eclipse/plugins/org.argeo.slc.client.ui.dist/plugin.xml @@ -133,6 +133,16 @@ defaultHandler="org.argeo.eclipse.spring.SpringCommandHandler" name="Refresh Distributions View"> + + + + it = ((IStructuredSelection) selector) + .iterator(); + while (it.hasNext()) { + Node node = (Node) it.next(); + node.remove(); + } + } + session.save(); + } + CommandHelpers.callCommand(RefreshDistributionOverviewPage.ID); + } catch (RepositoryException re) { + throw new ArgeoException( + "Unexpected error while deleting artifacts.", re); + } finally { + if (session != null) + session.logout(); + } + } + return null; + } + + /* DEPENDENCY INJECTION */ + public void setRepository(Repository repository) { + this.repository = repository; + } +} diff --git a/eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/RefreshDistributionOverviewPage.java b/eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/RefreshDistributionOverviewPage.java new file mode 100644 index 000000000..d6d86e1d4 --- /dev/null +++ b/eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/RefreshDistributionOverviewPage.java @@ -0,0 +1,37 @@ +package org.argeo.slc.client.ui.dist.commands; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.slc.client.ui.dist.DistPlugin; +import org.argeo.slc.client.ui.dist.editors.DistributionEditor; +import org.argeo.slc.client.ui.dist.editors.DistributionOverviewPage; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.forms.editor.IFormPage; + +/** + * Force refresh of the DistributionsView + */ + +public class RefreshDistributionOverviewPage extends AbstractHandler { + private static final Log log = LogFactory + .getLog(RefreshDistributionOverviewPage.class); + public final static String ID = DistPlugin.ID + + ".refreshDistributionOverviewPage"; + public final static String DEFAULT_LABEL = "Refresh the distribution overview"; + public final static String DEFAULT_ICON_PATH = "icons/refresh.png"; + + public Object execute(ExecutionEvent event) throws ExecutionException { + IWorkbenchPart activePart = DistPlugin.getDefault().getWorkbench() + .getActiveWorkbenchWindow().getActivePage().getActivePart(); + if (activePart instanceof DistributionEditor) { + IFormPage ifp = ((DistributionEditor) activePart) + .getActivePageInstance(); + if (ifp instanceof DistributionOverviewPage) + ((DistributionOverviewPage) ifp).refresh(); + } + return null; + } +} diff --git a/eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/editors/DistributionOverviewPage.java b/eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/editors/DistributionOverviewPage.java index d7d578a03..bdd243d83 100644 --- a/eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/editors/DistributionOverviewPage.java +++ b/eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/editors/DistributionOverviewPage.java @@ -17,9 +17,15 @@ import javax.jcr.query.qom.Selector; import org.argeo.eclipse.ui.ErrorFeedback; import org.argeo.jcr.JcrUtils; +import org.argeo.slc.client.ui.dist.DistPlugin; +import org.argeo.slc.client.ui.dist.commands.DeleteArtifacts; +import org.argeo.slc.client.ui.dist.utils.CommandHelpers; import org.argeo.slc.client.ui.dist.utils.NodeViewerComparator; import org.argeo.slc.jcr.SlcNames; import org.argeo.slc.jcr.SlcTypes; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.TableViewer; @@ -30,7 +36,9 @@ import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Table; +import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.forms.editor.FormPage; @@ -38,7 +46,7 @@ import org.eclipse.ui.forms.widgets.ScrolledForm; import org.osgi.framework.Constants; /** Table giving an overview of an OSGi distribution */ -class DistributionOverviewPage extends FormPage implements SlcNames { +public class DistributionOverviewPage extends FormPage implements SlcNames { private TableViewer viewer; private Session session; @@ -123,11 +131,24 @@ class DistributionOverviewPage extends FormPage implements SlcNames { table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); viewer.setContentProvider(new DistributionsContentProvider()); + getSite().setSelectionProvider(viewer); + viewer.setInput(session); comparator = new NodeViewerComparator(1, NodeViewerComparator.DESCENDING, propertiesList, propertyTypesList); viewer.setComparator(comparator); + + MenuManager menuManager = new MenuManager(); + Menu menu = menuManager.createContextMenu(viewer.getTable()); + menuManager.addMenuListener(new IMenuListener() { + public void menuAboutToShow(IMenuManager manager) { + contextMenuAboutToShow(manager); + } + }); + viewer.getTable().setMenu(menu); + getSite().registerContextMenu(menuManager, viewer); + } @Override @@ -135,6 +156,25 @@ class DistributionOverviewPage extends FormPage implements SlcNames { viewer.getTable().setFocus(); } + /** force refresh of the artifact list */ + public void refresh() { + viewer.refresh(); + } + + /** Programatically configure the context menu */ + protected void contextMenuAboutToShow(IMenuManager menuManager) { + IWorkbenchWindow window = DistPlugin.getDefault().getWorkbench() + .getActiveWorkbenchWindow(); + + // Build conditions depending on element type (repo or workspace) + + // Delete selected artifacts + CommandHelpers.refreshCommand(menuManager, window, DeleteArtifacts.ID, + DeleteArtifacts.DEFAULT_LABEL, + DeleteArtifacts.DEFAULT_ICON_PATH, true); + + } + static NodeIterator listBundleArtifacts(Session session) throws RepositoryException { QueryManager queryManager = session.getWorkspace().getQueryManager(); @@ -198,5 +238,4 @@ class DistributionOverviewPage extends FormPage implements SlcNames { } } - } \ No newline at end of file -- 2.39.2