summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.gui
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-07-12 23:16:54 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-07-18 00:02:42 +0530
commit4290f5519fb7480df6c5919583efc1f7feebf4b3 (patch)
tree5930ba1eb58235ec12b897c300f7fd7bef9694d1 /src/com.gluster.storage.management.gui
parent194d5787da03f843a4eb81f304d6f30057bb5be2 (diff)
Story #38 - CPU Usage graph
Diffstat (limited to 'src/com.gluster.storage.management.gui')
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/ChartViewerComposite.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/PieChartViewerComposite.java)167
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java107
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java28
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java6
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java6
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableTreeViewerPage.java2
6 files changed, 235 insertions, 81 deletions
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/PieChartViewerComposite.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/ChartViewerComposite.java
index ad8e2fa3..edf18011 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/PieChartViewerComposite.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/ChartViewerComposite.java
@@ -18,6 +18,7 @@
*******************************************************************************/
package com.gluster.storage.management.gui.utils;
+import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -28,23 +29,43 @@ import org.eclipse.birt.chart.exception.ChartException;
import org.eclipse.birt.chart.factory.GeneratedChartState;
import org.eclipse.birt.chart.factory.Generator;
import org.eclipse.birt.chart.model.Chart;
+import org.eclipse.birt.chart.model.ChartWithAxes;
import org.eclipse.birt.chart.model.ChartWithoutAxes;
+import org.eclipse.birt.chart.model.attribute.Anchor;
+import org.eclipse.birt.chart.model.attribute.AxisType;
import org.eclipse.birt.chart.model.attribute.Bounds;
import org.eclipse.birt.chart.model.attribute.ChartDimension;
+import org.eclipse.birt.chart.model.attribute.FontDefinition;
+import org.eclipse.birt.chart.model.attribute.LineAttributes;
+import org.eclipse.birt.chart.model.attribute.LineStyle;
+import org.eclipse.birt.chart.model.attribute.Marker;
+import org.eclipse.birt.chart.model.attribute.TickStyle;
import org.eclipse.birt.chart.model.attribute.impl.BoundsImpl;
import org.eclipse.birt.chart.model.attribute.impl.ColorDefinitionImpl;
+import org.eclipse.birt.chart.model.attribute.impl.FontDefinitionImpl;
+import org.eclipse.birt.chart.model.attribute.impl.JavaDateFormatSpecifierImpl;
+import org.eclipse.birt.chart.model.attribute.impl.LineAttributesImpl;
+import org.eclipse.birt.chart.model.attribute.impl.TextAlignmentImpl;
+import org.eclipse.birt.chart.model.component.Axis;
import org.eclipse.birt.chart.model.component.Series;
import org.eclipse.birt.chart.model.component.impl.SeriesImpl;
+import org.eclipse.birt.chart.model.data.DateTimeDataSet;
import org.eclipse.birt.chart.model.data.NumberDataSet;
import org.eclipse.birt.chart.model.data.SeriesDefinition;
import org.eclipse.birt.chart.model.data.TextDataSet;
+import org.eclipse.birt.chart.model.data.impl.DateTimeDataSetImpl;
import org.eclipse.birt.chart.model.data.impl.NumberDataSetImpl;
import org.eclipse.birt.chart.model.data.impl.SeriesDefinitionImpl;
import org.eclipse.birt.chart.model.data.impl.TextDataSetImpl;
+import org.eclipse.birt.chart.model.impl.ChartWithAxesImpl;
import org.eclipse.birt.chart.model.impl.ChartWithoutAxesImpl;
import org.eclipse.birt.chart.model.layout.Legend;
import org.eclipse.birt.chart.model.layout.Plot;
+import org.eclipse.birt.chart.model.type.AreaSeries;
+import org.eclipse.birt.chart.model.type.LineSeries;
import org.eclipse.birt.chart.model.type.PieSeries;
+import org.eclipse.birt.chart.model.type.impl.AreaSeriesImpl;
+import org.eclipse.birt.chart.model.type.impl.LineSeriesImpl;
import org.eclipse.birt.chart.model.type.impl.PieSeriesImpl;
import org.eclipse.birt.core.framework.PlatformConfig;
import org.eclipse.core.runtime.Platform;
@@ -57,20 +78,42 @@ import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
+import com.ibm.icu.util.Calendar;
/**
*
*/
-public final class PieChartViewerComposite extends Composite implements
- PaintListener, IUpdateNotifier {
+public final class ChartViewerComposite extends Composite implements PaintListener, IUpdateNotifier {
+
+ public enum CHART_TYPE {
+ PIE, LINE
+ };
private IDeviceRenderer deviceReader = null;
private Chart chart = null;
private GeneratedChartState generatedChartState = null;
private boolean needsGeneration = true;
- private static Logger logger = Logger
- .getLogger(PieChartViewerComposite.class.getName());
+ private static Logger logger = Logger.getLogger(ChartViewerComposite.class.getName());
+
+ /**
+ * @param parent
+ * Parent composite of this pie chart viewer composite
+ * @param style
+ * SWT style to be used
+ * @param categories
+ * Categories of the pie chart
+ * @param values
+ * Values of each category in the pie chart Constructs a pie
+ * chart viewer composite for given categories and values
+ */
+ public ChartViewerComposite(Composite parent, int style, String[] categories, Double[] values) {
+ super(parent, style);
+ init();
+
+ chart = createPieChart(categories, values);
+ addPaintListener(this);
+ }
/**
* @param parent
@@ -83,17 +126,22 @@ public final class PieChartViewerComposite extends Composite implements
* Values of each category in the pie chart Constructs a pie
* chart viewer composite for given categories and values
*/
- public PieChartViewerComposite(Composite parent, int style, String[] categories,
- Double[] values) {
+ public ChartViewerComposite(Composite parent, int style, Calendar[] categories, Double[] values) {
super(parent, style);
+ init();
+
+ chart = createLineChart(categories, values);
+ addPaintListener(this);
+ }
+
+ public void init() {
try {
PlatformConfig config = new PlatformConfig();
config.setBIRTHome(Platform.getInstallLocation().getURL().getPath());
// Get the connection with SWT device to render the graphics.
deviceReader = ChartEngine.instance(config).getRenderer("dv.SWT");//$NON-NLS-1$
} catch (ChartException ex) {
- logger.log(Level.SEVERE, "Could not create Chart Renderer for SWT",
- ex);
+ logger.log(Level.SEVERE, "Could not create Chart Renderer for SWT", ex);
}
addControlListener(new ControlListener() {
@@ -106,9 +154,97 @@ public final class PieChartViewerComposite extends Composite implements
needsGeneration = true;
}
});
+ }
- chart = createPieChart(categories, values);
- addPaintListener(this);
+ private Chart createLineChart(Calendar[] timestamps, Double[] values) {
+ return createAreaChart(timestamps, new Double[][] {values});
+ }
+
+ /**
+ * Creates a line chart model as a reference implementation
+ *
+ * @return An instance of the simulated runtime chart model (containing
+ * filled datasets)
+ */
+ public static final Chart createAreaChart(Calendar[] timestamps, Double[][] values) {
+ ChartWithAxes cwaLine = ChartWithAxesImpl.create();
+
+ // Plot
+ cwaLine.getBlock().setBackground(ColorDefinitionImpl.TRANSPARENT());
+ Plot p = cwaLine.getPlot();
+ p.getClientArea().setBackground(ColorDefinitionImpl.TRANSPARENT());
+ //p.getClientArea().setBackground(ColorDefinitionImpl.TRANSPARENT());
+
+
+ // Title
+ //cwaLine.getTitle().getLabel().getCaption().setValue("Line Chart");//$NON-NLS-1$
+ cwaLine.getTitle().setVisible(false);
+
+ // Legend
+ cwaLine.getLegend().setVisible(false);
+ Legend lg = cwaLine.getLegend();
+ LineAttributes lia = lg.getOutline( );
+ lg.getText( ).getFont( ).setSize( 16 );
+ lia.setStyle( LineStyle.SOLID_LITERAL );
+ lg.getInsets( ).set( 10, 5, 0, 0 );
+ lg.getOutline( ).setVisible( false );
+ lg.setAnchor( Anchor.NORTH_LITERAL );
+
+ // X-Axis
+ Axis xAxisPrimary = cwaLine.getPrimaryBaseAxes()[0];
+ xAxisPrimary.setType(AxisType.TEXT_LITERAL);
+ xAxisPrimary.getMajorGrid().setTickStyle(TickStyle.BELOW_LITERAL);
+ xAxisPrimary.getMajorGrid().setLineAttributes(LineAttributesImpl.create(ColorDefinitionImpl.GREY(), LineStyle.DOTTED_LITERAL, 1));
+ xAxisPrimary.getTitle().setVisible(false);
+ xAxisPrimary.setInterval(4);
+ xAxisPrimary.getLabel().getCaption().setFont(createChartFont());
+ xAxisPrimary.setFormatSpecifier( JavaDateFormatSpecifierImpl.create( "HH:mm" ) );
+
+ // Y-Axis
+ Axis yAxisPrimary = cwaLine.getPrimaryOrthogonalAxis(xAxisPrimary);
+ yAxisPrimary.getMajorGrid().setTickStyle(TickStyle.LEFT_LITERAL);
+ yAxisPrimary.getMajorGrid().setLineAttributes(LineAttributesImpl.create(ColorDefinitionImpl.GREY(), LineStyle.SOLID_LITERAL, 1));
+ yAxisPrimary.setInterval(2);
+ yAxisPrimary.getLabel().setVisible(true);
+ yAxisPrimary.getLabel().getCaption().setFont(createChartFont());
+
+ // Data Set
+ DateTimeDataSet categoryValues = DateTimeDataSetImpl.create(timestamps);
+
+ // X-Series
+ Series seCategory = SeriesImpl.create();
+ seCategory.setDataSet(categoryValues);
+ SeriesDefinition sdX = SeriesDefinitionImpl.create();
+
+ xAxisPrimary.getSeriesDefinitions().add(sdX);
+ sdX.getSeries().add(seCategory);
+
+ SeriesDefinition sdY = SeriesDefinitionImpl.create();
+ sdY.getSeriesPalette().shift(-3);
+ yAxisPrimary.getSeriesDefinitions().add(sdY);
+
+ for (int i = 0; i < values.length; i++) {
+ // Y-Sereis
+ AreaSeries ls = (AreaSeries) AreaSeriesImpl.create();
+ // LineSeries ls = (LineSeries) LineSeriesImpl.create();
+
+ NumberDataSet orthoValues = NumberDataSetImpl.create(values[i]);
+ ls.setDataSet(orthoValues);
+ ls.getLineAttributes().setColor(ColorDefinitionImpl.create(50, 50, 255));
+ for (int j = 0; j < ls.getMarkers().size(); j++) {
+ // ( (Marker) ls.getMarkers( ).get( j ) ).setType( MarkerType.CIRCLE_LITERAL);
+ ((Marker) ls.getMarkers().get(j)).setVisible(false);
+ }
+ ls.setTranslucent(true);
+ // don't show values on each point on the line chart
+ ls.getLabel().setVisible(false);
+ sdY.getSeries().add(ls);
+ }
+ return cwaLine;
+ }
+
+ public static FontDefinition createChartFont() {
+ return FontDefinitionImpl.create("Serif", 8, false, false, false, false, false, 0d, TextAlignmentImpl.create());
}
/**
@@ -118,8 +254,7 @@ public final class PieChartViewerComposite extends Composite implements
* Values of each category in the pie chart
* @return The chart object created for given categories and values
*/
- public static final Chart createPieChart(String[] categories,
- Double[] values) {
+ public static final Chart createPieChart(String[] categories, Double[] values) {
ChartWithoutAxes pieChart = ChartWithoutAxesImpl.create();
// Plot
@@ -127,7 +262,7 @@ public final class PieChartViewerComposite extends Composite implements
pieChart.setDimension(ChartDimension.TWO_DIMENSIONAL_WITH_DEPTH_LITERAL);
pieChart.getBlock().setBackground(ColorDefinitionImpl.WHITE());
Plot p = pieChart.getPlot();
-
+
p.getClientArea().setBackground(null);
p.getClientArea().getOutline().setVisible(false);
p.getOutline().setVisible(false);
@@ -196,8 +331,7 @@ public final class PieChartViewerComposite extends Composite implements
if (needsGeneration) {
needsGeneration = false;
try {
- generatedChartState = gr.build(deviceReader.getDisplayServer(),
- chart, bo, null, null, null);
+ generatedChartState = gr.build(deviceReader.getDisplayServer(), chart, bo, null, null, null);
} catch (ChartException ce) {
ce.printStackTrace();
}
@@ -208,8 +342,7 @@ public final class PieChartViewerComposite extends Composite implements
GC gc = e.gc;
gc.drawImage(imgChart, d.x, d.y);
} catch (ChartException gex) {
- logger.log(Level.SEVERE, "Exception while rendering pie chart ["
- + gex.getMessage() + "]", gex);
+ logger.log(Level.SEVERE, "Exception while rendering pie chart [" + gex.getMessage() + "]", gex);
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java
index 49c55b8a..f970effd 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java
@@ -20,8 +20,10 @@
*/
package com.gluster.storage.management.gui.views;
+import java.util.Date;
import java.util.List;
+import org.eclipse.birt.chart.util.CDateTime;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.graphics.Image;
@@ -40,21 +42,18 @@ import org.eclipse.ui.part.ViewPart;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Alert;
import com.gluster.storage.management.core.model.Cluster;
-import com.gluster.storage.management.core.model.Device.DEVICE_STATUS;
-import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.EntityGroup;
import com.gluster.storage.management.core.model.GlusterDataModel;
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.Server;
import com.gluster.storage.management.core.model.TaskInfo;
-import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
import com.gluster.storage.management.core.utils.NumberUtil;
import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.actions.IActionConstants;
+import com.gluster.storage.management.gui.utils.ChartViewerComposite;
import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.utils.PieChartViewerComposite;
+import com.ibm.icu.util.Calendar;
/**
* @author root
@@ -82,16 +81,6 @@ public class ClusterSummaryView extends ViewPart {
createSections(parent);
}
- private int getVolumeCountByStatus(Cluster cluster, VOLUME_STATUS status) {
- int count = 0;
- for (Volume volume : cluster.getVolumes()) {
- if (volume.getStatus() == status) {
- count++;
- }
- }
- return count;
- }
-
private int getServerCountByStatus(Cluster cluster, SERVER_STATUS status) {
int count = 0;
for (GlusterServer server : cluster.getServers()) {
@@ -102,14 +91,6 @@ public class ClusterSummaryView extends ViewPart {
return count;
}
- private void createVolumesSection() {
- Composite section = guiHelper.createSection(form, toolkit, "Volumes", null, 1, false);
-
- Double[] values = new Double[] { Double.valueOf(getVolumeCountByStatus(cluster, VOLUME_STATUS.ONLINE)),
- Double.valueOf(getVolumeCountByStatus(cluster, VOLUME_STATUS.OFFLINE)) };
- createDiskSpaceChart(toolkit, section, values);
- }
-
private void createServersSection() {
Composite section = guiHelper.createSection(form, toolkit, "Servers", null, 2, false);
@@ -135,34 +116,13 @@ public class ClusterSummaryView extends ViewPart {
double totalDiskSpace = cluster.getTotalDiskSpace();
double diskSpaceInUse = cluster.getDiskSpaceInUse();
Double[] values = new Double[] { diskSpaceInUse, totalDiskSpace - diskSpaceInUse };
- createDiskSpaceChart(toolkit, section, values);
- }
-
- private int getDiskCountByStatus(Cluster cluster, DEVICE_STATUS status) {
- int diskCount = 0;
- for(GlusterServer server : cluster.getServers()) {
- for(Disk disk : server.getDisks()) {
- if(disk.getStatus() == status) {
- diskCount++;
- }
- }
- }
- return diskCount;
+ createDiskSpaceChart(section, values);
}
- private int getDiskCount(Cluster cluster) {
- int diskCount = 0;
- for(GlusterServer server : cluster.getServers()) {
- diskCount += server.getDisks().size();
- }
- return diskCount;
- }
-
- private void createDiskSpaceChart(FormToolkit toolkit, Composite section, Double[] values) {
+ private void createDiskSpaceChart(Composite section, Double[] values) {
String[] categories = new String[] { "Used Space: " + NumberUtil.formatNumber((values[0] / 1024)) + " GB",
- "Free Space: " + NumberUtil.formatNumber((values[1] / 1024)) + " GB"};
- PieChartViewerComposite chartViewerComposite = new PieChartViewerComposite(section, SWT.NONE, categories,
- values);
+ "Free Space: " + NumberUtil.formatNumber((values[1] / 1024)) + " GB" };
+ ChartViewerComposite chartViewerComposite = new ChartViewerComposite(section, SWT.NONE, categories, values);
GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
data.widthHint = 400;
@@ -170,6 +130,15 @@ public class ClusterSummaryView extends ViewPart {
data.verticalAlignment = SWT.CENTER;
chartViewerComposite.setLayoutData(data);
}
+
+ private void createLineChart(Composite section, Calendar timestamps[], Double values[]) {
+ ChartViewerComposite chartViewerComposite = new ChartViewerComposite(section, SWT.NONE, timestamps, values);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
+ data.widthHint = 400;
+ data.heightHint = 300;
+ data.verticalAlignment = SWT.CENTER;
+ chartViewerComposite.setLayoutData(data);
+ }
private void createAlertsSection() {
Composite section = guiHelper.createSection(form, toolkit, "Alerts", null, 1, false);
@@ -254,23 +223,51 @@ public class ClusterSummaryView extends ViewPart {
parent.layout(); // IMP: lays out the form properly
}
- private void createMemoryUsageSection() {
- Composite section = guiHelper.createSection(form, toolkit, "Memory Usage (aggregated)", null, 1, false);
- toolkit.createLabel(section, "Historical Memory Usage graph aggregated across all servers will be displayed here.");
- }
-
private void createCPUUsageSection() {
Composite section = guiHelper.createSection(form, toolkit, "CPU Usage (aggregated)", null, 1, false);
if (cluster.getServers().size() == 0) {
toolkit.createLabel(section, "This section will be populated after at least\none server is added to the storage cloud.");
return;
}
- toolkit.createLabel(section, "Historical CPU Usage graph aggregated across\nall servers will be displayed here.");
+ //toolkit.createLabel(section, "Historical CPU Usage graph aggregated across\nall servers will be displayed here.");
+
+// Date[] timestamps = new Date[] { new Date(1310468100), new Date(1310468400), new Date(1310468700),
+// new Date(1310469000), new Date(1310469300), new Date(1310469600), new Date(1310469900),
+// new Date(1310470200), new Date(1310470500), new Date(1310470800), new Date(1310471100),
+// new Date(1310471400), new Date(1310471700), new Date(1310472000), new Date(1310472300),
+// new Date(1310472600), new Date(1310472900), new Date(1310473200), new Date(1310473500),
+// new Date(1310473800) };
+ Calendar[] timestamps = new Calendar[] { new CDateTime(1000l*1310468100), new CDateTime(1000l*1310468400), new CDateTime(1000l*1310468700),
+ new CDateTime(1000l*1310469000), new CDateTime(1000l*1310469300), new CDateTime(1000l*1310469600), new CDateTime(1000l*1310469900),
+ new CDateTime(1000l*1310470200), new CDateTime(1000l*1310470500), new CDateTime(1000l*1310470800), new CDateTime(1000l*1310471100),
+ new CDateTime(1000l*1310471400), new CDateTime(1000l*1310471700), new CDateTime(1000l*1310472000), new CDateTime(1000l*1310472300),
+ new CDateTime(1000l*1310472600), new CDateTime(1000l*1310472900), new CDateTime(1000l*1310473200), new CDateTime(1000l*1310473500),
+ new CDateTime(1000l*1310473800) };
+
+ //String[] timestampsarr = new String[] {"t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20"};
+ Double[] values = new Double[] { 10d, 11.23d, 17.92d, 18.69d, 78.62d, 89.11d, 92.43d, 89.31d, 57.39d, 18.46d, 10.44d, 16.28d, 13.51d, 17.53d, 12.21, 20d, 21.43d, 16.45d, 14.86d, 15.27d };
+ createLineChart(section, timestamps, values);
}
private void createNetworkUsageSection() {
Composite section = guiHelper.createSection(form, toolkit, "Network Usage", null, 1, false);
- toolkit.createLabel(section, "Historical Network Usage graph will be displayed here.");
+ //toolkit.createLabel(section, "Historical Network Usage graph will be displayed here.");
+
+ Calendar[] timestamps = new Calendar[] { new CDateTime(1000l*1310468100), new CDateTime(1000l*1310468400), new CDateTime(1000l*1310468700),
+ new CDateTime(1000l*1310469000), new CDateTime(1000l*1310469300), new CDateTime(1000l*1310469600), new CDateTime(1000l*1310469900),
+ new CDateTime(1000l*1310470200), new CDateTime(1000l*1310470500), new CDateTime(1000l*1310470800), new CDateTime(1000l*1310471100),
+ new CDateTime(1000l*1310471400), new CDateTime(1000l*1310471700), new CDateTime(1000l*1310472000), new CDateTime(1000l*1310472300),
+ new CDateTime(1000l*1310472600), new CDateTime(1000l*1310472900), new CDateTime(1000l*1310473200), new CDateTime(1000l*1310473500),
+ new CDateTime(1000l*1310473800) };
+// Date[] timestamps = new Date[] { new Date(1310468100), new Date(1310468400), new Date(1310468700),
+// new Date(1310469000), new Date(1310469300), new Date(1310469600), new Date(1310469900),
+// new Date(1310470200), new Date(1310470500), new Date(1310470800), new Date(1310471100),
+// new Date(1310471400), new Date(1310471700), new Date(1310472000), new Date(1310472300),
+// new Date(1310472600), new Date(1310472900), new Date(1310473200), new Date(1310473500),
+// new Date(1310473800) };
+ String[] timestampsarr = new String[] {"t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20"};
+ Double[] values = new Double[] { 32d, 31.23d, 27.92d, 48.69d, 58.62d, 49.11d, 72.43d, 69.31d, 87.39d, 78.46d, 60.44d, 56.28d, 33.51d, 27.53d, 12.21, 10d, 21.43d, 36.45d, 34.86d, 35.27d };
+ createLineChart(section, timestamps, values);
}
private void createRunningTasksSection() {
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 30072b97..50da72ff 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
@@ -47,11 +47,12 @@ 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.ChartViewerComposite;
+import com.gluster.storage.management.gui.utils.ChartViewerComposite.CHART_TYPE;
import com.gluster.storage.management.gui.utils.GUIHelper;
import com.richclientgui.toolbox.gauges.CoolGauge;
@@ -100,12 +101,37 @@ public class GlusterServerSummaryView extends ViewPart {
GlusterDataModelManager.getInstance().removeClusterListener(serverChangedListener);
}
+ private void createLineChart(Composite section, String timestamps[], Double values[]) {
+ ChartViewerComposite chartViewerComposite = new ChartViewerComposite(section, SWT.NONE, timestamps, values);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
+ data.widthHint = 450;
+ data.heightHint = 300;
+ data.verticalAlignment = SWT.CENTER;
+ chartViewerComposite.setLayoutData(data);
+ }
+
+ private void createMemoryUsageSection() {
+ Composite section = guiHelper.createSection(form, toolkit, "Memory Usage (aggregated)", null, 1, false);
+ toolkit.createLabel(section, "Historical Memory Usage graph aggregated across all servers will be displayed here.");
+ }
+
+ private void createCPUUsageSection() {
+ Composite section = guiHelper.createSection(form, toolkit, "CPU Usage (aggregated)", null, 1, false);
+ //toolkit.createLabel(section, "Historical CPU Usage graph aggregated across\nall servers will be displayed here.");
+
+ String[] timestamps = new String[] {"t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20"};
+ Double[] values = new Double[] { 10d, 11.23d, 17.92d, 18.69d, 78.62d, 89.11d, 92.43d, 20.31d, 19.63d, 18.46d, 10.44d, 16.28d, 13.51d, 17.53d, 12.21, 20d, 40d, 10d, 90d, 40d };
+ createLineChart(section, timestamps, values);
+ }
+
private void createSections(Composite parent) {
String serverName = server.getName();
form = guiHelper.setupForm(parent, toolkit, "Server Summary [" + serverName + "]");
createServerSummarySection(server, toolkit, form);
if (server.getStatus() == SERVER_STATUS.ONLINE) {
+ createMemoryUsageSection();
+ createCPUUsageSection();
createNetworkInterfacesSection(server, toolkit, form);
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java
index d80e3879..d703c9a7 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java
@@ -33,8 +33,9 @@ import org.eclipse.ui.part.ViewPart;
import com.gluster.storage.management.core.model.EntityGroup;
import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS;
+import com.gluster.storage.management.gui.utils.ChartViewerComposite.CHART_TYPE;
import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.utils.PieChartViewerComposite;
+import com.gluster.storage.management.gui.utils.ChartViewerComposite;
/**
*
@@ -95,7 +96,7 @@ public class GlusterServersSummaryView extends ViewPart {
private void createStatusChart(Composite section, Double[] values) {
String[] categories = new String[] { "Online", "Offline" };
- PieChartViewerComposite chartViewerComposite = new PieChartViewerComposite(section, SWT.NONE, categories, values);
+ ChartViewerComposite chartViewerComposite = new ChartViewerComposite(section, SWT.NONE, categories, values);
GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
data.widthHint = 300;
@@ -103,7 +104,6 @@ public class GlusterServersSummaryView extends ViewPart {
chartViewerComposite.setLayoutData(data);
}
-
private void createAlertsSection() {
Composite section = guiHelper.createSection(form, toolkit, "Alerts", null, 2, false);
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java
index a43330c4..daeecb83 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java
@@ -40,8 +40,9 @@ import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
import com.gluster.storage.management.gui.IImageKeys;
+import com.gluster.storage.management.gui.utils.ChartViewerComposite.CHART_TYPE;
import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.utils.PieChartViewerComposite;
+import com.gluster.storage.management.gui.utils.ChartViewerComposite;
/**
*
@@ -157,8 +158,7 @@ public class VolumesSummaryView extends ViewPart {
private void createStatusChart(FormToolkit toolkit, Composite section, Double[] values) {
String[] categories = new String[] { "Online", "Offline" };
- PieChartViewerComposite chartViewerComposite = new PieChartViewerComposite(section, SWT.NONE, categories,
- values);
+ ChartViewerComposite chartViewerComposite = new ChartViewerComposite(section, SWT.NONE, categories, values);
GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
data.widthHint = 300;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableTreeViewerPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableTreeViewerPage.java
index 05a74b03..13c2ceef 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableTreeViewerPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableTreeViewerPage.java
@@ -38,7 +38,6 @@ import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.ui.forms.widgets.Hyperlink;
import com.gluster.storage.management.core.model.ClusterListener;
import com.gluster.storage.management.core.model.Disk;
@@ -46,7 +45,6 @@ import com.gluster.storage.management.gui.utils.GUIHelper;
public abstract class AbstractTableTreeViewerPage<T> extends Composite implements ISelectionListener {
-
protected final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
protected TreeViewer treeViewer;
protected GUIHelper guiHelper = GUIHelper.getInstance();