summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractBricksPage.java156
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java133
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableViewerPage.java3
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/BricksPage.java62
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DisksPage.java20
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/ServerDisksPage.java20
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumesPage.java133
7 files changed, 107 insertions, 420 deletions
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractBricksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractBricksPage.java
deleted file mode 100644
index baa6cbe9..00000000
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractBricksPage.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*******************************************************************************
- * 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.views.pages;
-
-import java.util.List;
-
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.TableEditor;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.forms.events.HyperlinkAdapter;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.ImageHyperlink;
-
-import com.gluster.storage.management.core.model.Brick;
-import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.core.model.Disk.DISK_STATUS;
-import com.gluster.storage.management.core.model.Entity;
-import com.gluster.storage.management.gui.Application;
-import com.gluster.storage.management.gui.IEntityListener;
-import com.gluster.storage.management.gui.jobs.InitializeDiskJob;
-import com.gluster.storage.management.gui.utils.GUIHelper;
-
-public abstract class AbstractBricksPage extends Composite implements IEntityListener {
- protected final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- protected CheckboxTableViewer tableViewer;
- private IWorkbenchSite site;
- protected static final GUIHelper guiHelper = GUIHelper.getInstance();
-
- /**
- * Setup properties of the table e.g. column headers, widths, etc.
- *
- * @param parent
- * The parent composite. (TableColumnLayout has to be set on this)
- * @param table
- * The table to be set up
- */
- protected abstract void setupDiskTable(Composite parent, Table table);
-
- /**
- * @return The label provider to be used with the disk table viewer
- */
- protected abstract ITableLabelProvider getTableLabelProvider();
-
- /**
- * @return Index of the "status" column in the table. Return -1 if status column is not displayed
- */
- protected abstract int getStatusColumnIndex();
-
- private void init(final Composite parent, IWorkbenchSite site, List<Brick> bricks) {
- addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- toolkit.dispose();
- }
- });
-
- this.site = site;
-
- setupPageLayout();
- Text filterText = guiHelper.createFilterText(toolkit, this);
- setupBrickTableViewer(createTableViewerComposite(), filterText);
- site.setSelectionProvider(tableViewer);
-
- tableViewer.setInput(bricks);
-
- site.setSelectionProvider(tableViewer);
- Application.getApplication().addEntityListener(this);
-
- parent.layout(); // Important - this actually paints the table
-
- toolkit.adapt(this);
- toolkit.paintBordersFor(this);
-
- /**
- * Ideally not required. However the table viewer is not getting laid out properly on performing
- * "maximize + restore" So this is a hack to make sure that the table is laid out again on re-size of the window
- */
- addPaintListener(new PaintListener() {
- @Override
- public void paintControl(PaintEvent e) {
- parent.layout();
- }
- });
- }
-
- public AbstractBricksPage(final Composite parent, int style, IWorkbenchSite site, List<Brick> bricks) {
- super(parent, style);
- init(parent, site, bricks);
- }
-
- private void setupPageLayout() {
- final GridLayout layout = new GridLayout(1, false);
- layout.verticalSpacing = 10;
- layout.marginTop = 10;
- setLayout(layout);
- }
-
- private Composite createTableViewerComposite() {
- Composite tableViewerComposite = new Composite(this, SWT.NO);
- tableViewerComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
- tableViewerComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- return tableViewerComposite;
- }
-
- private CheckboxTableViewer createBrickTableViewer(Composite parent) {
- tableViewer = CheckboxTableViewer.newCheckList(parent, SWT.FLAT | SWT.FULL_SELECTION | SWT.MULTI );
-
- tableViewer.setLabelProvider(getTableLabelProvider());
- tableViewer.setContentProvider(new ArrayContentProvider());
-
- setupDiskTable(parent, tableViewer.getTable());
-
- // make sure that table selection is driven by checkbox selection
- guiHelper.configureCheckboxTableViewer(tableViewer);
-
- return tableViewer;
- }
-
- private void setupBrickTableViewer(Composite parent, final Text filterText) {
- tableViewer = createBrickTableViewer(parent);
- // Create a case insensitive filter for the table viewer using the filter text field
- guiHelper.createFilter(tableViewer, filterText, false);
- }
-}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
index 55283c7a..133aed38 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
@@ -21,8 +21,7 @@ package com.gluster.storage.management.gui.views.pages;
import java.util.List;
import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
@@ -30,102 +29,55 @@ import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ImageHyperlink;
+import com.gluster.storage.management.core.model.ClusterListener;
+import com.gluster.storage.management.core.model.DefaultClusterListener;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.Disk.DISK_STATUS;
import com.gluster.storage.management.core.model.Entity;
import com.gluster.storage.management.gui.Application;
import com.gluster.storage.management.gui.IEntityListener;
import com.gluster.storage.management.gui.jobs.InitializeDiskJob;
-import com.gluster.storage.management.gui.utils.GUIHelper;
-
-public abstract class AbstractDisksPage extends Composite implements IEntityListener {
- protected final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- protected CheckboxTableViewer tableViewer;
- private IWorkbenchSite site;
- protected static final GUIHelper guiHelper = GUIHelper.getInstance();
-
- /**
- * Setup properties of the table e.g. column headers, widths, etc.
- *
- * @param parent
- * The parent composite. (TableColumnLayout has to be set on this)
- * @param table
- * The table to be set up
- */
- protected abstract void setupDiskTable(Composite parent, Table table);
-
- /**
- * @return The label provider to be used with the disk table viewer
- */
- protected abstract ITableLabelProvider getTableLabelProvider();
+public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> implements IEntityListener {
+ private List<Disk> disks;
+
/**
* @return Index of the "status" column in the table. Return -1 if status column is not displayed
*/
protected abstract int getStatusColumnIndex();
- private void init(final Composite parent, IWorkbenchSite site, List<Disk> disks) {
- addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- toolkit.dispose();
- }
- });
-
- this.site = site;
-
- setupPageLayout();
- Text filterText = guiHelper.createFilterText(toolkit, this);
- setupDiskTableViewer(createTableViewerComposite(), filterText);
- site.setSelectionProvider(tableViewer);
-
- tableViewer.setInput(disks);
- setupStatusCellEditor(); // creates hyperlinks for "unitialized" disks
-
- site.setSelectionProvider(tableViewer);
+ public AbstractDisksPage(final Composite parent, int style, IWorkbenchSite site, List<Disk> disks) {
+ super(site, parent, style, disks);
+ this.disks = disks;
+
+ // creates hyperlinks for "unitialized" disks
+ setupStatusCellEditor();
+ // Listen for disk status change events
Application.getApplication().addEntityListener(this);
-
- parent.layout(); // Important - this actually paints the table
-
- toolkit.adapt(this);
- toolkit.paintBordersFor(this);
-
- /**
- * Ideally not required. However the table viewer is not getting laid out properly on performing
- * "maximize + restore" So this is a hack to make sure that the table is laid out again on re-size of the window
- */
- addPaintListener(new PaintListener() {
-
- @Override
- public void paintControl(PaintEvent e) {
- parent.layout();
- }
- });
}
-
- public AbstractDisksPage(final Composite parent, int style, IWorkbenchSite site, List<Disk> disks) {
- super(parent, style);
- init(parent, site, disks);
+
+ @Override
+ protected IContentProvider getContentProvider() {
+ return new ArrayContentProvider();
}
-
- private void setupPageLayout() {
- final GridLayout layout = new GridLayout(1, false);
- layout.verticalSpacing = 10;
- layout.marginTop = 10;
- setLayout(layout);
+
+ @Override
+ protected List<Disk> getAllEntities() {
+ return disks;
+ }
+
+ @Override
+ protected ClusterListener createClusterListener() {
+ return new DefaultClusterListener();
}
private void createInitializeLink(final TableItem item, final int rowNum, final Disk disk) {
@@ -151,7 +103,7 @@ public abstract class AbstractDisksPage extends Composite implements IEntityList
myLink = toolkit.createImageHyperlink(table, SWT.NONE);
// link.setImage(guiHelper.getImage(IImageKeys.DISK_UNINITIALIZED));
myLink.setText("Initialize");
- myLink.addHyperlinkListener(new StatusLinkListener(myLink, myEditor, myItem, tableViewer, disk1, site));
+ myLink.addHyperlinkListener(new StatusLinkListener(myLink, myEditor, myItem, tableViewer, disk1));
myEditor.setEditor(myLink, item1, getStatusColumnIndex());
@@ -220,47 +172,18 @@ public abstract class AbstractDisksPage extends Composite implements IEntityList
}
}
- private Composite createTableViewerComposite() {
- Composite tableViewerComposite = new Composite(this, SWT.NO);
- tableViewerComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
- tableViewerComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- return tableViewerComposite;
- }
-
- private CheckboxTableViewer createDiskTableViewer(Composite parent) {
- tableViewer = CheckboxTableViewer.newCheckList(parent, SWT.FLAT | SWT.FULL_SELECTION | SWT.MULTI );
-
- tableViewer.setLabelProvider(getTableLabelProvider());
- tableViewer.setContentProvider(new ArrayContentProvider());
-
- setupDiskTable(parent, tableViewer.getTable());
-
- // make sure that table selection is driven by checkbox selection
- guiHelper.configureCheckboxTableViewer(tableViewer);
-
- return tableViewer;
- }
-
- private void setupDiskTableViewer(Composite parent, final Text filterText) {
- tableViewer = createDiskTableViewer(parent);
- // Create a case insensitive filter for the table viewer using the filter text field
- guiHelper.createFilter(tableViewer, filterText, false);
- }
-
private final class StatusLinkListener extends HyperlinkAdapter {
private final Disk disk;
private final TableEditor myEditor;
private final ImageHyperlink myLink;
private final TableViewer viewer;
- private final IWorkbenchSite site;
private StatusLinkListener(ImageHyperlink link, TableEditor editor, TableItem item, TableViewer viewer,
- Disk disk, IWorkbenchSite site) {
+ Disk disk) {
this.disk = disk;
this.viewer = viewer;
this.myEditor = editor;
this.myLink = link;
- this.site = site;
}
private void updateStatus(final DISK_STATUS status, final boolean disposeEditor) {
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 a8a98bbd..b64e80d2 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
@@ -52,8 +52,9 @@ public abstract class AbstractTableViewerPage<T> extends Composite {
protected final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
protected CheckboxTableViewer tableViewer;
protected GUIHelper guiHelper = GUIHelper.getInstance();
- private Hyperlink linkAll, linkNone;
protected Composite parent;
+
+ private Hyperlink linkAll, linkNone;
public AbstractTableViewerPage(IWorkbenchSite site, final Composite parent, int style, Object model) {
super(parent, style);
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 a6bc6f94..b83914eb 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
@@ -20,27 +20,24 @@ package com.gluster.storage.management.gui.views.pages;
import java.util.List;
-import org.eclipse.jface.layout.TableColumnLayout;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.IWorkbenchSite;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Brick;
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.Volume;
import com.gluster.storage.management.core.model.Event.EVENT_TYPE;
+import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.gui.BrickTableLabelProvider;
-public class BricksPage extends AbstractBricksPage {
- private Composite parent;
+public class BricksPage extends AbstractTableViewerPage<Brick> {
+ private List<Brick> bricks;
public enum BRICK_TABLE_COLUMN_INDICES {
SERVER, BRICK, FREE_SPACE, TOTAL_SPACE, STATUS
@@ -49,13 +46,14 @@ public class BricksPage extends AbstractBricksPage {
private static final String[] DISK_TABLE_COLUMN_NAMES = new String[] { "Server", "Brick Directory", "Free Space (GB)",
"Total Space (GB)", "Status" };
- public BricksPage(final Composite parent, int style, IWorkbenchSite site, final List<Brick> bricks) {
- super(parent, style, site, bricks);
- createListeners();
+ public BricksPage(Composite parent, int style, IWorkbenchSite site, final List<Brick> bricks) {
+ super(site, parent, style, bricks);
+ this.bricks = bricks;
}
- private void createListeners() {
- final ClusterListener clusterListener = new DefaultClusterListener() {
+ @Override
+ protected ClusterListener createClusterListener() {
+ return new DefaultClusterListener() {
@Override
public void volumeChanged(Volume volume, Event event) {
if (event.getEventType() == EVENT_TYPE.BRICKS_ADDED || event.getEventType() == EVENT_TYPE.BRICKS_REMOVED) {
@@ -65,43 +63,33 @@ public class BricksPage extends AbstractBricksPage {
}
};
- GlusterDataModelManager.getInstance().addClusterListener(clusterListener);
- addDisposeListener(new DisposeListener() {
-
- @Override
- public void widgetDisposed(DisposeEvent e) {
- GlusterDataModelManager.getInstance().removeClusterListener(clusterListener);
- }
- });
}
@Override
- protected void setupDiskTable(Composite parent, Table table) {
- this.parent = parent;
- table.setHeaderVisible(true);
- table.setLinesVisible(false);
-
- TableColumnLayout tableColumnLayout = guiHelper.createTableColumnLayout(table, DISK_TABLE_COLUMN_NAMES);
- parent.setLayout(tableColumnLayout);
-
+ protected String[] getColumnNames() {
+ return DISK_TABLE_COLUMN_NAMES;
+ }
+
+ @Override
+ protected void setColumnProperties(Table table) {
guiHelper.setColumnProperties(table, BRICK_TABLE_COLUMN_INDICES.SERVER.ordinal(), SWT.CENTER, 100);
guiHelper.setColumnProperties(table, BRICK_TABLE_COLUMN_INDICES.BRICK.ordinal(), SWT.CENTER, 100);
guiHelper.setColumnProperties(table, BRICK_TABLE_COLUMN_INDICES.FREE_SPACE.ordinal(), SWT.CENTER, 90);
guiHelper.setColumnProperties(table, BRICK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal(), SWT.CENTER, 90);
-
}
-
+
@Override
- protected ITableLabelProvider getTableLabelProvider() {
+ protected ITableLabelProvider getLabelProvider() {
return new BrickTableLabelProvider();
}
-
+
@Override
- protected int getStatusColumnIndex() {
- return BRICK_TABLE_COLUMN_INDICES.STATUS.ordinal();
+ protected IContentProvider getContentProvider() {
+ return new ArrayContentProvider();
}
-
+
@Override
- public void entityChanged(Entity entity, String[] paremeters) {
+ protected List<Brick> getAllEntities() {
+ return bricks;
}
} \ No newline at end of file
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DisksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DisksPage.java
index 1df74481..bd14607e 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DisksPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DisksPage.java
@@ -20,8 +20,7 @@ package com.gluster.storage.management.gui.views.pages;
import java.util.List;
-import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
@@ -44,25 +43,24 @@ public class DisksPage extends AbstractDisksPage {
}
@Override
- protected void setupDiskTable(Composite parent, Table table) {
- table.setHeaderVisible(true);
- table.setLinesVisible(false);
-
- TableColumnLayout tableColumnLayout = guiHelper.createTableColumnLayout(table, DISK_TABLE_COLUMN_NAMES);
- parent.setLayout(tableColumnLayout);
+ protected String[] getColumnNames() {
+ return DISK_TABLE_COLUMN_NAMES;
+ }
+ @Override
+ protected void setColumnProperties(Table table) {
guiHelper.setColumnProperties(table, DISK_TABLE_COLUMN_INDICES.SERVER.ordinal(), SWT.CENTER, 100);
guiHelper.setColumnProperties(table, DISK_TABLE_COLUMN_INDICES.DISK.ordinal(), SWT.CENTER, 100);
guiHelper.setColumnProperties(table, DISK_TABLE_COLUMN_INDICES.FREE_SPACE.ordinal(), SWT.CENTER, 90);
guiHelper.setColumnProperties(table, DISK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal(), SWT.CENTER, 90);
// guiHelper.setColumnProperties(table, DISK_TABLE_COLUMN_INDICES.SPACE_IN_USE.ordinal(), SWT.CENTER, 90);
}
-
+
@Override
- protected ITableLabelProvider getTableLabelProvider() {
+ protected IBaseLabelProvider getLabelProvider() {
return new DiskTableLabelProvider();
}
-
+
@Override
protected int getStatusColumnIndex() {
return DISK_TABLE_COLUMN_INDICES.STATUS.ordinal();
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/ServerDisksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/ServerDisksPage.java
index 3621afe1..c2f76a43 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/ServerDisksPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/ServerDisksPage.java
@@ -20,7 +20,7 @@ package com.gluster.storage.management.gui.views.pages;
import java.util.List;
-import org.eclipse.jface.layout.TableColumnLayout;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
@@ -28,7 +28,6 @@ import org.eclipse.ui.IWorkbenchSite;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.gui.ServerDiskTableLabelProvider;
-import com.gluster.storage.management.gui.TableLabelProviderAdapter;
public class ServerDisksPage extends AbstractDisksPage {
public ServerDisksPage(Composite parent, int style, IWorkbenchSite site, List<Disk> disks) {
@@ -43,26 +42,25 @@ public class ServerDisksPage extends AbstractDisksPage {
"Space in Use (GB)", "Status" };
@Override
- protected void setupDiskTable(Composite parent, Table table) {
- table.setHeaderVisible(true);
- table.setLinesVisible(false);
-
- TableColumnLayout tableColumnLayout = guiHelper.createTableColumnLayout(table, SERVER_DISK_TABLE_COLUMN_NAMES);
- parent.setLayout(tableColumnLayout);
-
+ protected String[] getColumnNames() {
+ return SERVER_DISK_TABLE_COLUMN_NAMES;
+ }
+
+ @Override
+ protected void setColumnProperties(Table table) {
guiHelper.setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.DISK.ordinal(), SWT.CENTER, 100);
guiHelper.setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.SPACE.ordinal(), SWT.CENTER, 90);
guiHelper.setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.SPACE_IN_USE.ordinal(), SWT.CENTER, 90);
guiHelper.setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.STATUS.ordinal(), SWT.LEFT, 90);
}
-
+
@Override
protected int getStatusColumnIndex() {
return SERVER_DISK_TABLE_COLUMN_INDICES.STATUS.ordinal();
}
@Override
- protected TableLabelProviderAdapter getTableLabelProvider() {
+ protected IBaseLabelProvider getLabelProvider() {
return new ServerDiskTableLabelProvider();
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumesPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumesPage.java
index 38fa2d41..d0824888 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumesPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/VolumesPage.java
@@ -18,39 +18,28 @@
*******************************************************************************/
package com.gluster.storage.management.gui.views.pages;
+import java.util.List;
+
import org.eclipse.jface.layout.TableColumnLayout;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbenchSite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
+import com.gluster.storage.management.core.model.ClusterListener;
+import com.gluster.storage.management.core.model.DefaultClusterListener;
import com.gluster.storage.management.core.model.EntityGroup;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.gui.EntityGroupContentProvider;
import com.gluster.storage.management.gui.VolumeTableLabelProvider;
-import com.gluster.storage.management.gui.utils.GUIHelper;
-
-public class VolumesPage extends Composite {
-
- private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
- private TableViewer tableViewer;
- private GUIHelper guiHelper = GUIHelper.getInstance();
+public class VolumesPage extends AbstractTableViewerPage<Volume> {
+ private List<Volume> volumes;
+
public enum VOLUME_TABLE_COLUMN_INDICES {
NAME, VOLUME_TYPE, NUM_OF_DISKS, TRANSPORT_TYPE, VOLUME_STATUS
};
@@ -59,91 +48,37 @@ public class VolumesPage extends Composite {
"Number of\nBricks", "Transport Type", "Status" };
public VolumesPage(final Composite parent, IWorkbenchSite site, EntityGroup<Volume> volumes) {
- super(parent, SWT.NONE);
-
- addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent e) {
- toolkit.dispose();
- }
- });
-
- toolkit.adapt(this);
- toolkit.paintBordersFor(this);
-
- setupPageLayout();
- setupVolumeTableViewer(site, volumes);
-
- parent.layout(); // Important - this actually paints the table
-
- /**
- * Ideally not required. However the table viewer is not getting laid out properly on performing
- * "maximize + restore" So this is a hack to make sure that the table is laid out again on re-size of the window
- */
- addPaintListener(new PaintListener() {
-
- @Override
- public void paintControl(PaintEvent e) {
- parent.layout();
- }
- });
+ super(site, parent, SWT.NONE, volumes);
}
- public void addDoubleClickListener(IDoubleClickListener listener) {
- tableViewer.addDoubleClickListener(listener);
+ @Override
+ protected String[] getColumnNames() {
+ return VOLUME_TABLE_COLUMN_NAMES;
}
-
- private void setupPageLayout() {
- final GridLayout layout = new GridLayout(1, false);
- layout.verticalSpacing = 10;
- layout.marginTop = 10;
- setLayout(layout);
- }
-
- private void setupVolumeTable(Composite parent, Table table) {
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
-
- TableColumnLayout columnLayout = guiHelper.createTableColumnLayout(table, VOLUME_TABLE_COLUMN_NAMES);
- parent.setLayout(columnLayout);
-
+
+ @Override
+ protected void setColumnProperties(Table table) {
setColumnProperties(table, VOLUME_TABLE_COLUMN_INDICES.VOLUME_STATUS, SWT.CENTER, 50);
setColumnProperties(table, VOLUME_TABLE_COLUMN_INDICES.NUM_OF_DISKS, SWT.CENTER, 50);
setColumnProperties(table, VOLUME_TABLE_COLUMN_INDICES.TRANSPORT_TYPE, SWT.CENTER, 70);
}
-
- private CheckboxTableViewer createVolumeTableViewer(Composite parent) {
- CheckboxTableViewer tableViewer = CheckboxTableViewer.newCheckList(parent, SWT.FLAT | SWT.FULL_SELECTION
- | SWT.MULTI);
- tableViewer.setLabelProvider(new VolumeTableLabelProvider());
- tableViewer.setContentProvider(new EntityGroupContentProvider<Volume>());
-
- setupVolumeTable(parent, tableViewer.getTable());
-
- // make sure that table selection is driven by checkbox selection
- guiHelper.configureCheckboxTableViewer(tableViewer);
-
- return tableViewer;
+
+ @Override
+ protected IBaseLabelProvider getLabelProvider() {
+ return new VolumeTableLabelProvider();
}
-
- private Composite createTableViewerComposite() {
- Composite tableViewerComposite = new Composite(this, SWT.NO);
- tableViewerComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
- tableViewerComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- return tableViewerComposite;
+
+ @Override
+ protected IContentProvider getContentProvider() {
+ return new EntityGroupContentProvider<Volume>();
}
-
- private void setupVolumeTableViewer(IWorkbenchSite site, EntityGroup<Volume> volumes) {
- Text filterText = guiHelper.createFilterText(toolkit, this);
-
- Composite tableViewerComposite = createTableViewerComposite();
- tableViewer = createVolumeTableViewer(tableViewerComposite);
- site.setSelectionProvider(tableViewer);
-
- // Create a case insensitive filter for the table viewer using the filter text field
- guiHelper.createFilter(tableViewer, filterText, false);
- tableViewer.setInput(volumes);
+
+ @Override
+ protected ClusterListener createClusterListener() {
+ // TODO: Override methods to handle volume related events
+ return new DefaultClusterListener();
}
-
+
/**
* Sets properties for alignment and weight of given column of given table
*
@@ -159,9 +94,9 @@ public class VolumesPage extends Composite {
TableColumnLayout tableColumnLayout = (TableColumnLayout) table.getParent().getLayout();
tableColumnLayout.setColumnData(column, new ColumnWeightData(weight));
}
-
- public void setInput(EntityGroup<Volume> volumes) {
- tableViewer.setInput(volumes);
- tableViewer.refresh();
+
+ @Override
+ protected List<Volume> getAllEntities() {
+ return volumes;
}
}