diff options
6 files changed, 84 insertions, 19 deletions
diff --git a/com.gluster.storage.management.gui/plugin.xml b/com.gluster.storage.management.gui/plugin.xml index 8097f4ef..6c956981 100644 --- a/com.gluster.storage.management.gui/plugin.xml +++ b/com.gluster.storage.management.gui/plugin.xml @@ -350,6 +350,11 @@ style="push" toolbarPath="Normal" tooltip="Migrate Disk"> + <enablement> + <objectClass + name="com.gluster.storage.management.core.model.Disk"> + </objectClass> + </enablement> </action> <action allowLabelUpdate="false" @@ -819,6 +824,42 @@ </not> </visibility> </objectContribution> + <objectContribution + id="gluster.context.menu.entityGroup" + objectClass="com.gluster.storage.management.core.model.EntityGroup"> + <action + allowLabelUpdate="false" + class="com.gluster.storage.management.gui.actions.CreateVolumeAction" + definitionId="com.gluster.storage.management.gui.commands.CreateVolume" + icon="icons/volume-create.png" + id="com.gluster.storage.management.gui.actions.CreateVolumeAction" + label="&Create Volume" + menubarPath="additions" + mode="FORCE_TEXT" + pulldown="false" + retarget="false" + state="false" + style="push" + toolbarPath="Normal" + tooltip="Create a new Volume"> + </action> + <action + allowLabelUpdate="false" + class="com.gluster.storage.management.gui.actions.AddServerAction" + definitionId="com.gluster.storage.management.gui.commands.AddServer" + icon="icons/server-add.png" + id="com.gluster.storage.management.gui.actions.AddServerAction" + label="&Add Server(s)" + menubarPath="additions" + mode="FORCE_TEXT" + pulldown="false" + retarget="false" + state="false" + style="push" + toolbarPath="Normal" + tooltip="Add Server(s) to Cluster"> + </action> + </objectContribution> </extension> </plugin> diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java index ddcb91c0..80953cde 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AbstractActionDelegate.java @@ -3,6 +3,7 @@ package com.gluster.storage.management.gui.actions; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TreeSelection; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; @@ -27,7 +28,9 @@ public abstract class AbstractActionDelegate implements IWorkbenchWindowActionDe return; } - this.selectedEntity = selectedEntity; + if(selectedEntity != null) { + this.selectedEntity = selectedEntity; + } } } diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java index 9a278c74..9d385068 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java @@ -5,6 +5,9 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; +import com.gluster.storage.management.core.model.EntityGroup; +import com.gluster.storage.management.core.model.Volume; + public class AddServerAction extends AbstractActionDelegate { @Override public void run(IAction action) { @@ -15,4 +18,14 @@ public class AddServerAction extends AbstractActionDelegate { public void dispose() { System.out.println("Disposing [" + this.getClass().getSimpleName() + "]"); } + + @Override + public void selectionChanged(IAction action, ISelection selection) { + super.selectionChanged(action, selection); + + action.setEnabled(true); + if(selectedEntity instanceof EntityGroup && ((EntityGroup)selectedEntity).getEntityType() == Volume.class) { + action.setEnabled(false); + } + } } diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java index ea5ac084..2cd1a505 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java @@ -1,8 +1,11 @@ package com.gluster.storage.management.gui.actions; import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.wizard.WizardDialog; +import com.gluster.storage.management.core.model.EntityGroup; +import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.gui.dialogs.CreateVolumeWizard; public class CreateVolumeAction extends AbstractActionDelegate { @@ -20,4 +23,15 @@ public class CreateVolumeAction extends AbstractActionDelegate { public void dispose() { window = null; } + + @Override + public void selectionChanged(IAction action, ISelection selection) { + super.selectionChanged(action, selection); + + action.setEnabled(true); + if(selectedEntity instanceof EntityGroup && ((EntityGroup)selectedEntity).getEntityType() != Volume.class) { + // selected entity is either "servers" or "discovered servers". + action.setEnabled(false); + } + } } diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java index 3d59f179..f8d6eb35 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java @@ -16,32 +16,28 @@ public class MigrateDiskAction extends AbstractActionDelegate { @Override public void run(IAction action) { // MigrateDiskDialog dialog = new MigrateDiskDialog(window.getShell(), volume, disk); -// dialog.create(); -// dialog.open(); +// dialog.create(); +// dialog.open(); MigrateDiskWizard wizard = new MigrateDiskWizard(volume, disk); - + WizardDialog dialog = new WizardDialog(window.getShell(), wizard); - dialog.create(); - dialog.getShell().setSize(1024, 600); - dialog.open(); + dialog.create(); + dialog.getShell().setSize(1024, 600); + dialog.open(); } @Override public void selectionChanged(IAction action, ISelection selection) { super.selectionChanged(action, selection); - - if(selectedEntity == null) { - // this happens when user clicks on the "Disks" tab - return; - } - - action.setEnabled(false); + if (selectedEntity instanceof Volume) { volume = (Volume) selectedEntity; - action.setEnabled(true); - } else if (selectedEntity instanceof Disk) { + } + + action.setEnabled(false); + if (selectedEntity instanceof Disk) { disk = (Disk) selectedEntity; - action.setEnabled(((StructuredSelection) selection).size() <= 1); + action.setEnabled(((StructuredSelection) selection).size() == 1); } } diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/DetailsView.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/DetailsView.java index ff40d1ea..29b575ac 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/DetailsView.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/DetailsView.java @@ -13,12 +13,10 @@ import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartSite; import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.contexts.IContextService; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.part.ViewPart; import com.gluster.storage.management.core.model.Entity; -import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.gui.toolbar.ToolbarManager; import com.gluster.storage.management.gui.views.navigator.NavigationView; |
