summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.gui
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-04-27 11:01:55 +0530
committerDhandapani <dhandapani@gluster.com>2011-04-28 11:05:07 +0530
commit20033a20631d48b503f30fbfbc5cf0b2b54b8b0b (patch)
tree649f2c04734709a6c9e23e78bf4bd5a21dbe1a11 /src/com.gluster.storage.management.gui
parente201155bb0e6b34c3974ff66f0911081dbbb355b (diff)
Story #13: Remove Disk UI changes
Diffstat (limited to 'src/com.gluster.storage.management.gui')
-rw-r--r--src/com.gluster.storage.management.gui/plugin.xml22
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java65
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java17
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/AbstractDisksPage.java3
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="&amp;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());