From 97964bbc552cf0c3a86d0dff8ba00d930f60fd5d Mon Sep 17 00:00:00 2001 From: Shireesh Anjal Date: Mon, 21 Mar 2011 20:17:17 +0530 Subject: Modified to enable/disable start/stop volume actions depending on the status of currently selected volume --- com.gluster.storage.management.gui/icons/logs.png | Bin 0 -> 900 bytes com.gluster.storage.management.gui/plugin.xml | 4 +-- .../management/gui/actions/StartVolumeAction.java | 32 ++++++++++++++------- .../management/gui/actions/StopVolumeAction.java | 18 ++++++++++++ .../management/gui/views/NavigationView.java | 7 +++-- 5 files changed, 47 insertions(+), 14 deletions(-) create mode 100644 com.gluster.storage.management.gui/icons/logs.png diff --git a/com.gluster.storage.management.gui/icons/logs.png b/com.gluster.storage.management.gui/icons/logs.png new file mode 100644 index 00000000..c8449f98 Binary files /dev/null and b/com.gluster.storage.management.gui/icons/logs.png differ diff --git a/com.gluster.storage.management.gui/plugin.xml b/com.gluster.storage.management.gui/plugin.xml index 1b14c6f2..f5ab3db7 100644 --- a/com.gluster.storage.management.gui/plugin.xml +++ b/com.gluster.storage.management.gui/plugin.xml @@ -125,7 +125,7 @@ allowMultiple="false" category="com.gluster.storage.management.gui.category" class="com.gluster.storage.management.gui.views.VolumeLogsView" - icon="icons/gluster_icon.png" + icon="icons/logs.png" id="com.gluster.storage.management.gui.views.VolumeLogsView" name="Volume Logs" restorable="true"> @@ -179,7 +179,7 @@ allowMultiple="false" category="com.gluster.storage.management.gui.category" class="com.gluster.storage.management.gui.views.GlusterServerLogsView" - icon="icons/gluster_icon.png" + icon="icons/logs.png" id="com.gluster.storage.management.gui.views.GlusterServerLogsView" name="Server Logs" restorable="true"> diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java index dc8ee77b..6dbe6315 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java @@ -19,25 +19,37 @@ package com.gluster.storage.management.gui.actions; import org.eclipse.jface.action.IAction; -import org.eclipse.ui.PlatformUI; +import org.eclipse.jface.viewers.ISelection; -import com.gluster.storage.management.gui.views.DiscoveredServersView; +import com.gluster.storage.management.core.model.Volume; +import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS; public class StartVolumeAction extends AbstractActionDelegate { + @Override public void run(IAction action) { - PlatformUI - .getWorkbench() - .getActiveWorkbenchWindow() - .getActivePage() - .hideView( - PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() - .findViewReference(DiscoveredServersView.ID)); - System.out.println("After closing the view!"); + System.out.println("Running [" + this.getClass().getSimpleName() + "]"); } @Override public void dispose() { System.out.println("Disposing [" + this.getClass().getSimpleName() + "]"); } + + /* + * (non-Javadoc) + * + * @see + * com.gluster.storage.management.gui.actions.AbstractActionDelegate#selectionChanged(org.eclipse.jface.action.IAction + * , org.eclipse.jface.viewers.ISelection) + */ + @Override + public void selectionChanged(IAction action, ISelection selection) { + super.selectionChanged(action, selection); + + if (selectedEntity instanceof Volume) { + Volume volume = (Volume) selectedEntity; + action.setEnabled(volume.getStatus() == VOLUME_STATUS.OFFLINE); + } + } } diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java index 7011f677..8e0e7f50 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopVolumeAction.java @@ -19,6 +19,10 @@ package com.gluster.storage.management.gui.actions; import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; + +import com.gluster.storage.management.core.model.Volume; +import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS; public class StopVolumeAction extends AbstractActionDelegate { @Override @@ -30,4 +34,18 @@ public class StopVolumeAction extends AbstractActionDelegate { public void dispose() { System.out.println("Disposing [" + this.getClass().getSimpleName() + "]"); } + + /* (non-Javadoc) + * @see com.gluster.storage.management.gui.actions.AbstractActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) + */ + @Override + public void selectionChanged(IAction action, ISelection selection) { + // TODO Auto-generated method stub + super.selectionChanged(action, selection); + + if (selectedEntity instanceof Volume) { + Volume volume = (Volume) selectedEntity; + action.setEnabled(volume.getStatus() == VOLUME_STATUS.ONLINE); + } + } } diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java index 21378db8..8618c1da 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java @@ -58,9 +58,9 @@ public class NavigationView extends ViewPart implements ISelectionListener { // Create the views and toolbar managers toolbarManager = new GlusterToolbarManager(getSite().getWorkbenchWindow()); viewsManager = new GlusterViewsManager(getSite().getPage()); - + // listen to selection events to update views/toolbar accordingly - getSite().getPage().addSelectionListener(this); + getSite().getPage().addSelectionListener(this); } private void createNavigationTree(Composite parent) { @@ -127,6 +127,9 @@ public class NavigationView extends ViewPart implements ISelectionListener { // update views and toolbar buttons visibility based on selected entity viewsManager.updateViews(entity); toolbarManager.updateToolbar(entity); + + // Opening of other views may cause navigation tree to lose focus; get it back. + setFocus(); } } } -- cgit