summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.gui
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-07-06 18:32:32 +0530
committerDhandapani <dhandapani@gluster.com>2011-07-06 18:32:32 +0530
commitaf3d4028e2ae2292ad62824467081844066efa2f (patch)
treee3d5e8e7891c41cd22041e5437ec7a41178f0b19 /src/com.gluster.storage.management.gui
parentb1facccacf33b47682f3257f7fbc6ba394ec6b79 (diff)
parent9f0728357a909a9b38d74866ebb03a1be23dae87 (diff)
Merge branch 'master' of git@github.com:gluster/console
Diffstat (limited to 'src/com.gluster.storage.management.gui')
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java28
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java4
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java8
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java1
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java10
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/jobs/DataSyncJob.java55
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/GlusterPreferencePage.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceConstants.java3
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceInitializer.java3
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java48
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java18
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/TasksPage.java12
13 files changed, 149 insertions, 45 deletions
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java
index 598f9639..bff46096 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/Application.java
@@ -23,10 +23,14 @@ import java.util.Collections;
import java.util.List;
import org.eclipse.core.databinding.observable.Realm;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
@@ -35,6 +39,8 @@ import org.eclipse.ui.PlatformUI;
import com.gluster.storage.management.core.model.Entity;
import com.gluster.storage.management.gui.dialogs.LoginDialog;
+import com.gluster.storage.management.gui.jobs.DataSyncJob;
+import com.gluster.storage.management.gui.preferences.PreferenceConstants;
/**
* This class controls all aspects of the application's execution
@@ -45,6 +51,7 @@ public class Application implements IApplication {
private static Application instance;
private List<IEntityListener> entityListeners = Collections.synchronizedList(new ArrayList<IEntityListener>());
private IStatusLineManager statusLineManager;
+ private Job syncJob;
public Application() {
instance = this;
@@ -88,16 +95,36 @@ public class Application implements IApplication {
return IApplication.EXIT_OK;
}
try {
+ setupBackgroundJobs();
+
int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
if (returnCode == PlatformUI.RETURN_RESTART) {
return IApplication.EXIT_RESTART;
}
+
return IApplication.EXIT_OK;
} finally {
display.dispose();
}
}
+ private void setupBackgroundJobs() {
+ // 1 minute delay for first run
+ final IPreferenceStore preferenceStore = Activator.getDefault().getPreferenceStore();
+ final long JOB_INTERVAL = preferenceStore.getLong(PreferenceConstants.P_DATA_SYNC_INTERVAL) * 1000;
+
+ syncJob = new DataSyncJob("Syncing cluster data in background");
+ syncJob.schedule(JOB_INTERVAL);
+ syncJob.addJobChangeListener(new JobChangeAdapter() {
+ @Override
+ public void done(IJobChangeEvent event) {
+ super.done(event);
+ // job done. schedule again after the pre-defined interval
+ syncJob.schedule(JOB_INTERVAL);
+ }
+ });
+ }
+
private void setSystemProperties() {
// TODO: Trying this to avoid the webstart authentication dialog
// to be tested, and removed if this doesn't work.
@@ -116,6 +143,7 @@ public class Application implements IApplication {
final Display display = workbench.getDisplay();
display.syncExec(new Runnable() {
public void run() {
+ syncJob.cancel();
if (!display.isDisposed())
workbench.close();
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java
index 6fff4f44..4a580d05 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ClearTaskAction.java
@@ -17,7 +17,7 @@ public class ClearTaskAction extends AbstractActionDelegate {
final String actionDesc = action.getDescription();
try {
- new TasksClient().resumeTask(taskInfo.getName());
+ new TasksClient().deleteTask(taskInfo.getName()); // taskId
modelManager.removeTask(taskInfo);
} catch (Exception e) {
showErrorDialog(actionDesc,
@@ -33,6 +33,8 @@ public class ClearTaskAction extends AbstractActionDelegate {
taskInfo = (TaskInfo) selectedEntity;
action.setEnabled(taskInfo.getStatus().getCode() == Status.STATUS_CODE_SUCCESS
|| taskInfo.getStatus().getCode() == Status.STATUS_CODE_FAILURE);
+ } else {
+ action.setEnabled(false);
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
index 86e3032e..86a71882 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
@@ -5,11 +5,9 @@ import org.eclipse.jface.viewers.ISelection;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.TasksClient;
-import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.TaskStatus;
-import com.gluster.storage.management.core.model.Volume;
public class CommitTaskAction extends AbstractActionDelegate {
private TaskInfo taskInfo;
@@ -21,12 +19,8 @@ public class CommitTaskAction extends AbstractActionDelegate {
try {
new TasksClient().commitTask(taskInfo.getName());
taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_SUCCESS, "Committed")));
- modelManager.removeTask(taskInfo);
- Volume volume = (new VolumesClient()).getVolume(taskInfo.getReference());
- modelManager.updateVolumeBricks(modelManager.getModel().getCluster().getVolume(taskInfo.getReference()),
- volume.getBricks());
-
showInfoDialog(actionDesc, "Commit successful");
+ modelManager.removeTask(taskInfo);
} catch (Exception e) {
showErrorDialog(actionDesc,
"Task [" + taskInfo.getName() + "] could not be Committed! Error: [" + e.getMessage() + "]");
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java
index e3a4b835..872df738 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/PauseTaskAction.java
@@ -28,6 +28,7 @@ import com.gluster.storage.management.client.TasksClient;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.TaskStatus;
+import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager;
public class PauseTaskAction extends AbstractActionDelegate {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java
index 12d14b43..306edbf3 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StopTaskAction.java
@@ -2,13 +2,11 @@ package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
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.TasksClient;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
-import com.gluster.storage.management.core.model.TaskStatus;
public class StopTaskAction extends AbstractActionDelegate {
private TaskInfo taskInfo;
@@ -19,9 +17,10 @@ public class StopTaskAction extends AbstractActionDelegate {
final String actionDesc = action.getDescription();
try {
- new TasksClient().resumeTask(taskInfo.getName());
- taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_SUCCESS, "Stopped")));
- modelManager.updateTask(taskInfo);
+ new TasksClient().stopTask(taskInfo.getName());
+ // On successful stop clear from the task list
+ modelManager.removeTask(taskInfo);
+ action.setEnabled(false); // TODO disable other task buttons
} catch (Exception e) {
showErrorDialog(actionDesc,
"Task [" + taskInfo.getDescription() + "] could not be Stopped! Error: [" + e.getMessage() + "]");
@@ -42,7 +41,6 @@ public class StopTaskAction extends AbstractActionDelegate {
@Override
public void dispose() {
-
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/jobs/DataSyncJob.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/jobs/DataSyncJob.java
new file mode 100644
index 00000000..f6fd1ba4
--- /dev/null
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/jobs/DataSyncJob.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *******************************************************************************/
+package com.gluster.storage.management.gui.jobs;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.swt.widgets.Display;
+
+import com.gluster.storage.management.client.GlusterDataModelManager;
+import com.gluster.storage.management.gui.utils.GUIHelper;
+
+/**
+ *
+ */
+public class DataSyncJob extends Job {
+ public DataSyncJob(String name) {
+ super(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ Display.getDefault().asyncExec(new Runnable() {
+
+ @Override
+ public void run() {
+ GUIHelper.getInstance().setStatusMessage("Data sync in progress...");
+ GlusterDataModelManager.getInstance().refreshModel();
+ GUIHelper.getInstance().setStatusMessage(null);
+ }
+ });
+
+ return Status.OK_STATUS;
+ }
+}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/GlusterPreferencePage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/GlusterPreferencePage.java
index 431a8128..d8eee3e4 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/GlusterPreferencePage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/GlusterPreferencePage.java
@@ -77,7 +77,7 @@ public class GlusterPreferencePage
addField(new ComboFieldEditor(PreferenceConstants.P_DEFAULT_CLUSTER_NAME, "Default &Cluster to manage:",
clusterNamesArr, getFieldEditorParent()));
- addField(new IntegerFieldEditor(PreferenceConstants.P_DATA_REFRESH_INTERVAL, "&Data Refresh Interval:",
+ addField(new IntegerFieldEditor(PreferenceConstants.P_DATA_SYNC_INTERVAL, "&Data Sync Interval (sec):",
getFieldEditorParent()));
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceConstants.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceConstants.java
index 260aadb6..039cf488 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceConstants.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceConstants.java
@@ -25,12 +25,11 @@ public class PreferenceConstants {
public static final String P_SHOW_CLUSTER_SELECTION_DIALOG = "show.cluster.selection.dialog";
public static final String P_DEFAULT_CLUSTER_NAME = "default.cluster.name";
- public static final String P_DATA_REFRESH_INTERVAL = "data.refresh.interval";
+ public static final String P_DATA_SYNC_INTERVAL = "data.sync.interval";
// TODO: Remove after proper preferences are added
public static final String P_PATH = "pathPreference";
public static final String P_BOOLEAN = "booleanPreference";
public static final String P_CHOICE = "choicePreference";
public static final String P_STRING = "stringPreference";
-
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceInitializer.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceInitializer.java
index 1a4104ac..909b957a 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceInitializer.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/preferences/PreferenceInitializer.java
@@ -37,5 +37,8 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
store.setDefault(PreferenceConstants.P_SHOW_CLUSTER_SELECTION_DIALOG, true);
+
+ // default data sync interval = 5 minutes
+ store.setDefault(PreferenceConstants.P_DATA_SYNC_INTERVAL, 300);
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java
index 77e902ab..f9526ef9 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java
@@ -41,11 +41,17 @@ import org.eclipse.ui.forms.widgets.FormToolkit;
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.ClusterListener;
+import com.gluster.storage.management.core.model.DefaultClusterListener;
+import com.gluster.storage.management.core.model.Event;
import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS;
+import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.utils.NumberUtil;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.NetworkInterfaceTableLabelProvider;
+import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager;
import com.gluster.storage.management.gui.utils.GUIHelper;
import com.richclientgui.toolbox.gauges.CoolGauge;
@@ -55,6 +61,7 @@ public class GlusterServerSummaryView extends ViewPart {
private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
private ScrolledForm form;
private GlusterServer server;
+ private ClusterListener serverChangedListener;
public enum NETWORK_INTERFACE_TABLE_COLUMN_INDICES {
INTERFACE, MODEL, SPEED, IP_ADDRESS, NETMASK, GATEWAY
@@ -62,6 +69,7 @@ public class GlusterServerSummaryView extends ViewPart {
private static final String[] NETWORK_INTERFACE_TABLE_COLUMN_NAMES = { "Interface", "Model", "Speed", "IP Address",
"Netmask", "Gateway" };
+ private CoolGauge cpuGauge;
@Override
public void createPartControl(Composite parent) {
@@ -70,6 +78,28 @@ public class GlusterServerSummaryView extends ViewPart {
}
setPartName("Summary");
createSections(parent);
+
+ final GlusterToolbarManager toolbarManager = new GlusterToolbarManager(getSite().getWorkbenchWindow());
+ // Refresh the navigation tree whenever there is a change to the data model
+ serverChangedListener = new DefaultClusterListener() {
+ @Override
+ public void serverChanged(GlusterServer server, Event event) {
+ updateServerDetails();
+ toolbarManager.updateToolbar(server);
+ }
+ };
+ GlusterDataModelManager.getInstance().addClusterListener(serverChangedListener);
+ }
+
+ private void updateServerDetails() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ GlusterDataModelManager.getInstance().removeClusterListener(serverChangedListener);
}
private void createSections(Composite parent) {
@@ -100,15 +130,15 @@ public class GlusterServerSummaryView extends ViewPart {
// toolkit.createLabel(section, online ? "" + server.getCpuUsage() : "NA", SWT.NONE);
toolkit.createLabel(section, "% CPU Usage (avg): ", SWT.NONE);
- CoolGauge gauge = new CoolGauge(section, guiHelper.getImage(IImageKeys.GAUGE_SMALL));
- gauge.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
- gauge.setGaugeNeedleColour(Display.getDefault().getSystemColor(SWT.COLOR_RED));
- gauge.setGaugeNeedleWidth(2);
- gauge.setGaugeNeedlePivot(new Point(66, 65));
-
- gauge.setPoints(getPnts());
- gauge.setLevel(server.getCpuUsage() / 100);
- gauge.setToolTipText(server.getCpuUsage() + "%");
+ cpuGauge = new CoolGauge(section, guiHelper.getImage(IImageKeys.GAUGE_SMALL));
+ cpuGauge.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
+ cpuGauge.setGaugeNeedleColour(Display.getDefault().getSystemColor(SWT.COLOR_RED));
+ cpuGauge.setGaugeNeedleWidth(2);
+ cpuGauge.setGaugeNeedlePivot(new Point(66, 65));
+
+ cpuGauge.setPoints(getPnts());
+ cpuGauge.setLevel(server.getCpuUsage() / 100);
+ cpuGauge.setToolTipText(server.getCpuUsage() + "%");
toolkit.createLabel(section, "Memory Usage: ", SWT.NONE);
ProgressBar memoryUsageBar = new ProgressBar(section, SWT.SMOOTH);
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
index 17bb28f4..e0df170b 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
@@ -80,24 +80,14 @@ public class VolumeSummaryView extends ViewPart {
setPartName("Summary");
createSections();
+ final GlusterToolbarManager toolbarManager = new GlusterToolbarManager(getSite().getWorkbenchWindow());
// Refresh the navigation tree whenever there is a change to the data model
volumeChangedListener = new DefaultClusterListener() {
- @SuppressWarnings("unchecked")
@Override
public void volumeChanged(Volume volume, Event event) {
- if (event.getEventType() == EVENT_TYPE.VOLUME_STATUS_CHANGED) {
- updateVolumeStatusLabel();
- new GlusterToolbarManager(getSite().getWorkbenchWindow()).updateToolbar(volume);
- } else if (event.getEventType() == EVENT_TYPE.VOLUME_OPTION_SET) {
- Entry<String, String> option = (Entry<String, String>) event.getEventData();
- if (option.getKey().equals(Volume.OPTION_AUTH_ALLOW)) {
- // access control option value has changed. update the text field with new value.
- populateAccessControlText();
- }
- } else if (event.getEventType() == EVENT_TYPE.VOLUME_OPTIONS_RESET) {
- // all volume options reset. populate access control text with default value.
- populateAccessControlText();
- }
+ updateVolumeStatusLabel();
+ populateAccessControlText();
+ toolbarManager.updateToolbar(volume);
}
};
GlusterDataModelManager.getInstance().addClusterListener(volumeChangedListener);
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java
index 80aceb8b..5aaf7094 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java
@@ -61,12 +61,14 @@ public abstract class AbstractTableViewerPage<T> extends Composite implements IS
protected TableViewer tableViewer;
protected GUIHelper guiHelper = GUIHelper.getInstance();
protected Composite parent;
+ protected IWorkbenchSite site;
private Hyperlink linkAll, linkNone;
public AbstractTableViewerPage(IWorkbenchSite site, final Composite parent, int style, boolean useChechboxes, boolean multiSelection, Object model) {
super(parent, style);
this.parent = parent;
+ this.site = site;
this.useCheckboxes = useChechboxes;
this.multiSelection = multiSelection;
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 b3821c6b..8fbeb891 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
@@ -28,8 +28,6 @@ import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.IWorkbenchPart;
@@ -39,13 +37,11 @@ import com.gluster.storage.management.core.model.ClusterListener;
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.Event.EVENT_TYPE;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.Event.EVENT_TYPE;
import com.gluster.storage.management.gui.TasksTableLabelProvider;
-import com.gluster.storage.management.gui.actions.IActionConstants;
import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager;
-import com.gluster.storage.management.gui.utils.GUIHelper;
public class TasksPage extends AbstractTableViewerPage<TaskInfo> {
private List<TaskInfo> taskInfoList;
@@ -77,11 +73,17 @@ public class TasksPage extends AbstractTableViewerPage<TaskInfo> {
@Override
public void taskRemoved(TaskInfo taskInfo) {
refreshViewer();
+ // 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();
+ // 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() {