diff options
| author | Dhandapani <dhandapani@gluster.com> | 2011-04-27 11:01:55 +0530 |
|---|---|---|
| committer | Dhandapani <dhandapani@gluster.com> | 2011-04-28 11:05:07 +0530 |
| commit | 20033a20631d48b503f30fbfbc5cf0b2b54b8b0b (patch) | |
| tree | 649f2c04734709a6c9e23e78bf4bd5a21dbe1a11 /src/com.gluster.storage.management.gui | |
| parent | e201155bb0e6b34c3974ff66f0911081dbbb355b (diff) | |
Story #13: Remove Disk UI changes
Diffstat (limited to 'src/com.gluster.storage.management.gui')
4 files changed, 105 insertions, 2 deletions
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"> </command> + <command + categoryId="com.gluster.storage.management.gui.category" + description="Remove Disk" + id="com.gluster.storage.management.gui.commands.RemoveDisk" + name="Remove Disk"> + </command> </extension> <extension point="org.eclipse.ui.bindings"> @@ -577,6 +583,22 @@ toolbarPath="Normal" tooltip="Start Volume"> </action> + <action + allowLabelUpdate="false" + class="com.gluster.storage.management.gui.actions.RemoveDiskAction" + definitionId="com.gluster.storage.management.gui.commands.RemoveDisk" + icon="icons/disk.png" + id="com.gluster.storage.management.gui.actions.RemoveDiskAction" + label="Remove Disk" + menubarPath="com.gluster.storage.management.gui.menu.volume/volume" + mode="FORCE_TEXT" + pulldown="false" + retarget="false" + state="false" + style="push" + toolbarPath="Normal" + tooltip="Remove Disk"> + </action> <menu id="com.gluster.storage.management.gui.menu.volume" label="&Gluster" diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java new file mode 100644 index 00000000..19cf84f7 --- /dev/null +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java @@ -0,0 +1,65 @@ +package com.gluster.storage.management.gui.actions; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IWorkbenchPart; + +import com.gluster.storage.management.client.GlusterDataModelManager; +import com.gluster.storage.management.client.VolumesClient; +import com.gluster.storage.management.core.model.Disk; +import com.gluster.storage.management.core.model.Entity; +import com.gluster.storage.management.core.model.Volume; +import com.gluster.storage.management.gui.utils.GUIHelper; +import com.gluster.storage.management.gui.views.VolumeDisksView; + +public class RemoveDiskAction extends AbstractActionDelegate { + private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); + private GUIHelper guiHelper = GUIHelper.getInstance(); + private List<Disk> 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<Disk> getSelectedDisks(ISelection selection) { + List<Disk> selectedDisks = new ArrayList<Disk>(); + if (selection instanceof IStructuredSelection) { + Iterator<Object> 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<Object> 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()); |
