summaryrefslogtreecommitdiffstats
path: root/src/org.gluster.storage.management.console/src/org/gluster/storage/management/console/views/pages/TasksPage.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org.gluster.storage.management.console/src/org/gluster/storage/management/console/views/pages/TasksPage.java')
-rw-r--r--src/org.gluster.storage.management.console/src/org/gluster/storage/management/console/views/pages/TasksPage.java151
1 files changed, 151 insertions, 0 deletions
diff --git a/src/org.gluster.storage.management.console/src/org/gluster/storage/management/console/views/pages/TasksPage.java b/src/org.gluster.storage.management.console/src/org/gluster/storage/management/console/views/pages/TasksPage.java
new file mode 100644
index 00000000..aeea018c
--- /dev/null
+++ b/src/org.gluster.storage.management.console/src/org/gluster/storage/management/console/views/pages/TasksPage.java
@@ -0,0 +1,151 @@
+/**
+ * TasksPage.java
+ *
+ * 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 org.gluster.storage.management.console.views.pages;
+
+import java.util.List;
+
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchSite;
+import org.gluster.storage.management.console.TasksTableLabelProvider;
+import org.gluster.storage.management.console.toolbar.GlusterToolbarManager;
+import org.gluster.storage.management.core.model.ClusterListener;
+import org.gluster.storage.management.core.model.DefaultClusterListener;
+import org.gluster.storage.management.core.model.Entity;
+import org.gluster.storage.management.core.model.TaskInfo;
+
+
+public class TasksPage extends AbstractTableViewerPage<TaskInfo> {
+ private List<TaskInfo> taskInfoList;
+ private TaskInfo selectedTask;
+
+ public enum TASK_TABLE_COLUMN_INDICES {
+ TASK, STATUS
+ };
+
+ private static final String[] TASK_TABLE_COLUMN_NAMES = new String[] { "Task", "Status"};
+
+
+ public TasksPage(IWorkbenchSite site, Composite parent, int style, List<TaskInfo> taskInfo) {
+ super(site, parent, style, false, false, taskInfo);
+ this.taskInfoList = taskInfo;
+ }
+
+ /* (non-Javadoc)
+ * @see org.gluster.storage.management.console.views.pages.AbstractTableViewerPage#createClusterListener()
+ */
+ @Override
+ protected ClusterListener createClusterListener() {
+ return new DefaultClusterListener() {
+ @Override
+ public void taskAdded(TaskInfo taskInfo) {
+ tableViewer.add(taskInfo);
+ parent.update();
+ }
+
+ @Override
+ public void taskRemoved(TaskInfo taskInfo) {
+ tableViewer.remove(taskInfo);
+ parent.update();
+ // hide the task related actionset as no task is selected
+ // site.getPage().hideActionSet(ActionConstants.ACTION_SET_TASK);
+ }
+
+ @Override
+ public void taskUpdated(TaskInfo taskInfo) {
+ 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));
+ }
+ };
+ }
+
+ /* (non-Javadoc)
+ * @see org.gluster.storage.management.console.views.pages.AbstractTableViewerPage#getColumnNames()
+ */
+ @Override
+ protected String[] getColumnNames() {
+ return TASK_TABLE_COLUMN_NAMES;
+ }
+
+ /* (non-Javadoc)
+ * @see org.gluster.storage.management.console.views.pages.AbstractTableViewerPage#setColumnProperties(org.eclipse.swt.widgets.Table)
+ */
+ @Override
+ protected void setColumnProperties(Table table) {
+ guiHelper.setColumnProperties(table, TASK_TABLE_COLUMN_INDICES.TASK.ordinal(), SWT.LEFT, 50);
+ guiHelper.setColumnProperties(table, TASK_TABLE_COLUMN_INDICES.STATUS.ordinal(), SWT.LEFT, 50);
+ }
+
+ /* (non-Javadoc)
+ * @see org.gluster.storage.management.console.views.pages.AbstractTableViewerPage#getLabelProvider()
+ */
+ @Override
+ protected IBaseLabelProvider getLabelProvider() {
+ return new TasksTableLabelProvider();
+ }
+
+ /* (non-Javadoc)
+ * @see org.gluster.storage.management.console.views.pages.AbstractTableViewerPage#getContentProvider()
+ */
+ @Override
+ protected IContentProvider getContentProvider() {
+ return new ArrayContentProvider();
+ }
+
+ /* (non-Javadoc)
+ * @see org.gluster.storage.management.console.views.pages.AbstractTableViewerPage#getAllEntities()
+ */
+ @Override
+ protected List<TaskInfo> getAllEntities() {
+ return taskInfoList;
+ }
+
+ /* (non-Javadoc)
+ * @see org.gluster.storage.management.console.views.pages.AbstractTableViewerPage#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
+ */
+ @Override
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ if (selection instanceof StructuredSelection) {
+ Entity selectedEntity = (Entity) ((StructuredSelection) selection).getFirstElement();
+ if (selectedEntity != null && selectedEntity instanceof TaskInfo && selectedEntity != selectedTask) {
+ selectedTask = (TaskInfo)selectedEntity;
+ new GlusterToolbarManager(part.getSite().getWorkbenchWindow()).updateToolbar(selectedTask);
+ }
+ }
+ }
+
+ @Override
+ protected ViewerComparator createViewerComparator() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}