From 20033a20631d48b503f30fbfbc5cf0b2b54b8b0b Mon Sep 17 00:00:00 2001 From: Dhandapani Date: Wed, 27 Apr 2011 11:01:55 +0530 Subject: Story #13: Remove Disk UI changes --- src/com.gluster.storage.management.gui/plugin.xml | 22 ++++++++ .../management/gui/actions/RemoveDiskAction.java | 65 ++++++++++++++++++++++ .../storage/management/gui/utils/GUIHelper.java | 17 +++++- .../gui/views/details/AbstractDisksPage.java | 3 +- 4 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java (limited to 'src') diff --git a/src/com.gluster.storage.management.gui/plugin.xml b/src/com.gluster.storage.management.gui/plugin.xml index 97a60ad1..2c9ea50d 100644 --- a/src/com.gluster.storage.management.gui/plugin.xml +++ b/src/com.gluster.storage.management.gui/plugin.xml @@ -251,6 +251,12 @@ id="com.gluster.storage.management.gui.commands.MigrateDisk" name="Migrate Disk"> + + @@ -577,6 +583,22 @@ toolbarPath="Normal" tooltip="Start Volume"> + + disks; + + @Override + protected void performAction(IAction action) { + VolumesClient client = new VolumesClient(modelManager.getSecurityToken()); + // final Status status = client.removeDisk(); + } + + @Override + public void dispose() { + } + + @Override + public void selectionChanged(IAction action, ISelection selection) { + super.selectionChanged(action, selection); + + action.setEnabled(false); + Volume selectedVolume = (Volume)guiHelper.getSelectedEntity(window, Volume.class); + if (selectedVolume != null) { + // a volume is selected on navigation tree. Let's check if the currently open view is volume disks view + IWorkbenchPart view = guiHelper.getActiveView(); + if(view instanceof VolumeDisksView) { + // volume disks view is open. check if any disk is selected + disks = getSelectedDisks(selection); + action.setEnabled(disks.size() > 0); + } + } + } + + private List getSelectedDisks(ISelection selection) { + List selectedDisks = new ArrayList(); + if (selection instanceof IStructuredSelection) { + Iterator iter = ((IStructuredSelection) selection).iterator(); + while (iter.hasNext()) { + Object selectedObj = iter.next(); + if (selectedObj instanceof Disk) { + selectedDisks.add((Disk)selectedObj); + } + } + } + return selectedDisks; + } +} \ No newline at end of file diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java index d153a27c..89c5a78e 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java @@ -18,7 +18,9 @@ *******************************************************************************/ package com.gluster.storage.management.gui.utils; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; @@ -55,7 +57,9 @@ import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IViewReference; +import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchSite; +import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.forms.events.ExpansionAdapter; @@ -67,6 +71,8 @@ import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.progress.IProgressConstants; import com.gluster.storage.management.core.exceptions.GlusterRuntimeException; +import com.gluster.storage.management.core.model.Disk; +import com.gluster.storage.management.core.model.Entity; import com.gluster.storage.management.gui.Application; import com.gluster.storage.management.gui.IImageKeys; import com.gluster.storage.management.gui.views.NavigationView; @@ -251,6 +257,10 @@ public class GUIHelper { } return null; } + + public IWorkbenchPart getActiveView() { + return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); + } public ControlDecoration createErrorDecoration(Control control) { ControlDecoration passwordErrorDecoration = new ControlDecoration(control, SWT.LEFT | SWT.TOP); @@ -349,7 +359,11 @@ public class GUIHelper { * @return The selected object of given type if found, else null */ public Object getSelectedEntity(IWorkbenchSite site, Class expectedType) { - ISelection selection = site.getWorkbenchWindow().getSelectionService().getSelection(NavigationView.ID); + return getSelectedEntity(site.getWorkbenchWindow(), expectedType); + } + + public Object getSelectedEntity(IWorkbenchWindow window, Class expectedType) { + ISelection selection = window.getSelectionService().getSelection(NavigationView.ID); if (selection instanceof IStructuredSelection) { Iterator iter = ((IStructuredSelection) selection).iterator(); while (iter.hasNext()) { @@ -361,6 +375,7 @@ public class GUIHelper { } return null; } + public void showProgressView() { try { diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/AbstractDisksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/AbstractDisksPage.java index 593f7ba1..6b516019 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/AbstractDisksPage.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/AbstractDisksPage.java @@ -94,6 +94,7 @@ public abstract class AbstractDisksPage extends Composite implements IEntityList setupPageLayout(); Text filterText = guiHelper.createFilterText(toolkit, this); setupDiskTableViewer(createTableViewerComposite(), filterText); + site.setSelectionProvider(tableViewer); tableViewer.setInput(disks); setupStatusCellEditor(); // creates hyperlinks for "unitialized" disks @@ -231,7 +232,7 @@ public abstract class AbstractDisksPage extends Composite implements IEntityList } private TableViewer createDiskTableViewer(Composite parent) { - tableViewer = CheckboxTableViewer.newCheckList(parent, SWT.FLAT | SWT.FULL_SELECTION | SWT.MULTI); + tableViewer = CheckboxTableViewer.newCheckList(parent, SWT.FLAT | SWT.FULL_SELECTION | SWT.MULTI ); tableViewer.setLabelProvider(getTableLabelProvider()); tableViewer.setContentProvider(new ArrayContentProvider()); -- cgit