diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-03-22 17:53:14 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-03-22 17:53:14 +0530 |
| commit | c0767db8bf79afd62cdb750558ab7db1a227838f (patch) | |
| tree | 86e64122f70f8a03a3a9dbe677ac1be89948490a /com.gluster.storage.management.gui/src/com/gluster | |
| parent | 97964bbc552cf0c3a86d0dff8ba00d930f60fd5d (diff) | |
story#21 Start Volume
Diffstat (limited to 'com.gluster.storage.management.gui/src/com/gluster')
3 files changed, 64 insertions, 6 deletions
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 6dbe6315..dec94f12 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,21 +19,39 @@ package com.gluster.storage.management.gui.actions; import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; +import org.eclipse.swt.widgets.Display; +import com.gluster.storage.management.client.GlusterDataModelManager; +import com.gluster.storage.management.client.VolumesClient; +import com.gluster.storage.management.core.model.Status; import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS; public class StartVolumeAction extends AbstractActionDelegate { + private Volume volume; + GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); @Override public void run(IAction action) { - System.out.println("Running [" + this.getClass().getSimpleName() + "]"); + VolumesClient client = new VolumesClient(modelManager.getServerName(), modelManager.getSecurityToken()); + Status status = client.startVolume(volume.getName()); + if (status.isSuccess()) { + new MessageDialog(Display.getDefault().getActiveShell(), "Create Volume", null, "Volume [" + + volume.getName() + "] started successfully!", MessageDialog.INFORMATION, new String[] { "OK" }, 0) + .open(); + modelManager.updateVolumeStatus(volume, VOLUME_STATUS.ONLINE); + } else { + new MessageDialog(Display.getDefault().getActiveShell(), "Create Volume", null, "Volume [" + + volume.getName() + "] could not be started! Error: [" + status + "]", MessageDialog.ERROR, + new String[] { "OK" }, 0).open(); + } } @Override public void dispose() { - System.out.println("Disposing [" + this.getClass().getSimpleName() + "]"); + } /* @@ -48,7 +66,7 @@ public class StartVolumeAction extends AbstractActionDelegate { super.selectionChanged(action, selection); if (selectedEntity instanceof Volume) { - Volume volume = (Volume) selectedEntity; + volume = (Volume) selectedEntity; action.setEnabled(volume.getStatus() == VOLUME_STATUS.OFFLINE); } } 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 8618c1da..35b5cd7a 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 @@ -37,8 +37,10 @@ import org.eclipse.ui.part.ViewPart; import com.gluster.storage.management.client.GlusterDataModelManager; import com.gluster.storage.management.core.model.DefaultClusterListener; import com.gluster.storage.management.core.model.Entity; +import com.gluster.storage.management.core.model.Event; import com.gluster.storage.management.core.model.GlusterDataModel; import com.gluster.storage.management.core.model.GlusterServer; +import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager; import com.gluster.storage.management.gui.views.navigator.ClusterAdapterFactory; @@ -86,6 +88,19 @@ public class NavigationView extends ViewPart implements ISelectionListener { public void serverAdded(GlusterServer server) { treeViewer.refresh(); } + + /* + * (non-Javadoc) + * + * @see + * com.gluster.storage.management.core.model.DefaultClusterListener#volumeChanged(com.gluster.storage.management + * .core.model.Volume, com.gluster.storage.management.core.model.Event) + */ + @Override + public void volumeChanged(Volume volume, Event event) { + treeViewer.refresh(); + selectEntity(volume); // this makes sure that the toolbar buttons get updated accoring to new status + } }); } diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java index 99ac0e0b..396c5419 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java @@ -16,11 +16,17 @@ import org.eclipse.ui.forms.widgets.Hyperlink; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.ui.part.ViewPart; +import com.gluster.storage.management.client.GlusterDataModelManager; +import com.gluster.storage.management.core.model.DefaultClusterListener; +import com.gluster.storage.management.core.model.Event; +import com.gluster.storage.management.core.model.Event.EVENT_TYPE; +import com.gluster.storage.management.core.model.GlusterServer; import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.core.model.Volume.NAS_PROTOCOL; import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE; import com.gluster.storage.management.core.utils.NumberUtil; import com.gluster.storage.management.gui.IImageKeys; +import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager; import com.gluster.storage.management.gui.utils.GUIHelper; public class VolumeSummaryView extends ViewPart { @@ -29,6 +35,7 @@ public class VolumeSummaryView extends ViewPart { private final FormToolkit toolkit = new FormToolkit(Display.getCurrent()); private ScrolledForm form; private Volume volume; + private CLabel lblStatusValue; @Override public void createPartControl(Composite parent) { @@ -37,6 +44,20 @@ public class VolumeSummaryView extends ViewPart { } createSections(parent); + + // Refresh the navigation tree whenever there is a change to the data model + GlusterDataModelManager.getInstance().addClusterListener(new DefaultClusterListener() { + /* (non-Javadoc) + * @see com.gluster.storage.management.core.model.DefaultClusterListener#volumeChanged(com.gluster.storage.management.core.model.Volume, com.gluster.storage.management.core.model.Event) + */ + @Override + public void volumeChanged(Volume volume, Event event) { + if(event.getEventType() == EVENT_TYPE.VOLUME_STATUS_CHANGED) { + updateVolumeStatusLabel(); + new GlusterToolbarManager(getSite().getWorkbenchWindow()).updateToolbar(volume); + } + } + }); } private void createSections(Composite parent) { @@ -192,12 +213,16 @@ public class VolumeSummaryView extends ViewPart { private void createStatusField(Composite section) { toolkit.createLabel(section, "Status: ", SWT.NONE); - CLabel lblStatusValue = new CLabel(section, SWT.NONE); + lblStatusValue = new CLabel(section, SWT.NONE); + updateVolumeStatusLabel(); + + toolkit.createLabel(section, "", SWT.NONE); // dummy + } + + private void updateVolumeStatusLabel() { lblStatusValue.setText(volume.getStatusStr()); lblStatusValue.setImage(volume.getStatus() == Volume.VOLUME_STATUS.ONLINE ? guiHelper .getImage(IImageKeys.STATUS_ONLINE) : guiHelper.getImage(IImageKeys.STATUS_OFFLINE)); - - toolkit.createLabel(section, "", SWT.NONE); // dummy } private void createTransportTypeField(Composite section) { |
