diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-07-11 00:33:58 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-07-11 00:33:58 +0530 |
| commit | efe32527e41e28b30b0393f9963daad608ec5c2c (patch) | |
| tree | 0eaaf965c5dcd340d643d591e7e36b54a5d25e6c /src/com.gluster.storage.management.gui | |
| parent | 901d2fc3cfd69219e84de8845e7b8c2e61e35672 (diff) | |
Task#111 - Auto-refresh of data in views
Diffstat (limited to 'src/com.gluster.storage.management.gui')
4 files changed, 67 insertions, 41 deletions
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java index 14f999e7..f684a0f7 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java @@ -89,8 +89,20 @@ public class NavigationView extends ViewPart implements ISelectionListener { @Override public void volumeChanged(Volume volume, Event event) { super.volumeChanged(volume, event); - selectEntity(volume); // this makes sure that the toolbar buttons get updated according to new status + if (volume == entity) { + // this makes sure that the toolbar buttons get updated according to new status + selectEntity(volume); + } } + + public void volumeDeleted(Volume volume) { + super.volumeDeleted(volume); + if(volume == entity) { + // volume deleted was deleted. selected the root element in the tree. + treeViewer.setSelection(new StructuredSelection(GlusterDataModelManager.getInstance().getModel() + .getCluster())); + } + }; }; GlusterDataModelManager.getInstance().addClusterListener(clusterListener); } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/BricksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/BricksPage.java index 9805daec..c9e63889 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/BricksPage.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/BricksPage.java @@ -18,6 +18,7 @@ *******************************************************************************/ package com.gluster.storage.management.gui.views.pages; +import java.util.Collection; import java.util.List; import org.eclipse.jface.viewers.ArrayContentProvider; @@ -54,13 +55,26 @@ public class BricksPage extends AbstractTableViewerPage<Brick> { @Override protected ClusterListener createClusterListener() { return new DefaultClusterListener() { + @SuppressWarnings("unchecked") @Override public void volumeChanged(Volume volume, Event event) { - if (event.getEventType() == EVENT_TYPE.BRICKS_ADDED || event.getEventType() == EVENT_TYPE.BRICKS_REMOVED) { - tableViewer.refresh(); + switch (event.getEventType()) { + case BRICKS_ADDED: + tableViewer.add(((Collection<Brick>) event.getEventData()).toArray()); parent.update(); + break; + + case BRICKS_REMOVED: + tableViewer.remove(((Collection<Brick>) event.getEventData()).toArray()); + parent.update(); + break; + + case BRICKS_CHANGED: + tableViewer.update(((Collection<Brick>) event.getEventData()).toArray(), null); + parent.update(); + default: + break; } - } }; } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/TasksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/TasksPage.java index 8fbeb891..106984da 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/TasksPage.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/TasksPage.java @@ -67,40 +67,26 @@ public class TasksPage extends AbstractTableViewerPage<TaskInfo> { return new DefaultClusterListener() { @Override public void taskAdded(TaskInfo taskInfo) { - refreshViewer(); + tableViewer.add(taskInfo); + parent.update(); } @Override public void taskRemoved(TaskInfo taskInfo) { - refreshViewer(); + tableViewer.remove(taskInfo); + parent.update(); // hide the task related actionset as no task is selected // site.getPage().hideActionSet(IActionConstants.ACTION_SET_TASK); - tableViewer.setSelection(new StructuredSelection(taskInfo)); } @Override public void taskUpdated(TaskInfo taskInfo) { - refreshViewer(); + tableViewer.update(taskInfo, null); + parent.update(); // fire selection event so that toolbar gets updated // (the action class listens to selection and enables/disables automatically) tableViewer.setSelection(new StructuredSelection(taskInfo)); } - - private void refreshViewer() { - tableViewer.refresh(); - parent.update(); - } - - @Override - public void volumeChanged(Volume volume, Event event) { - super.volumeChanged(volume, event); - if (event.getEventType() == EVENT_TYPE.BRICK_REPLACED) { - if (!tableViewer.getControl().isDisposed()) { - tableViewer.refresh(); - } - } - } - }; } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumeOptionsPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumeOptionsPage.java index 2d1e7e98..34829fef 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumeOptionsPage.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumeOptionsPage.java @@ -118,20 +118,6 @@ public class VolumeOptionsPage extends Composite { return toolkit.createButton(this, "&Add", SWT.FLAT); } - @Override - public void dispose() { - super.dispose(); - toolkit.dispose(); - - if (!(addTopButton.isEnabled() || addBottomButton.isEnabled())) { - // user has selected key, but not added value. Since this is not a valid entry, - // remove the last option (without value) from the volume - volume.getOptions().remove(keyEditingSupport.getEntryBeingAdded().getKey()); - } - - GlusterDataModelManager.getInstance().removeClusterListener(clusterListener); - } - private void registerListeners(final Composite parent) { /** * Ideally not required. However the table viewer is not getting laid out properly on performing @@ -149,14 +135,16 @@ public class VolumeOptionsPage extends Composite { @Override public void volumeChanged(Volume volume, Event event) { super.volumeChanged(volume, event); - if (event.getEventType() == EVENT_TYPE.VOLUME_OPTIONS_RESET) { + + switch (event.getEventType()) { + case VOLUME_OPTIONS_RESET: if (!tableViewer.getControl().isDisposed()) { tableViewer.refresh(); setAddButtonsEnabled(true); } - } + break; - if (event.getEventType() == EVENT_TYPE.VOLUME_OPTION_SET) { + case VOLUME_OPTION_SET: String key = (String)event.getEventData(); if (isNewOption(volume, key)) { // option has been set successfully by the user. re-enable the add button and search filter @@ -176,6 +164,16 @@ public class VolumeOptionsPage extends Composite { // existing volume option value changed. update that element. tableViewer.update(volume.getOptions().get(key), null); } + break; + case VOLUME_CHANGED: + tableViewer.refresh(); + if(volume.getOptions().size() == defaultVolumeOptions.size()) { + setAddButtonsEnabled(false); + } else { + setAddButtonsEnabled(true); + } + default: + break; } } @@ -235,6 +233,22 @@ public class VolumeOptionsPage extends Composite { }); GlusterDataModelManager.getInstance().addClusterListener(clusterListener); + + addDisposeListener(new DisposeListener() { + + @Override + public void widgetDisposed(DisposeEvent e) { + toolkit.dispose(); + + if (!(addTopButton.isEnabled() || addBottomButton.isEnabled())) { + // user has selected key, but not added value. Since this is not a valid entry, + // remove the last option (without value) from the volume + volume.getOptions().remove(keyEditingSupport.getEntryBeingAdded().getKey()); + } + + GlusterDataModelManager.getInstance().removeClusterListener(clusterListener); + } + }); } private void setupPageLayout() { |
