diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-07-12 23:16:54 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-07-18 00:02:42 +0530 |
| commit | 4290f5519fb7480df6c5919583efc1f7feebf4b3 (patch) | |
| tree | 5930ba1eb58235ec12b897c300f7fd7bef9694d1 /src/com.gluster.storage.management.gui | |
| parent | 194d5787da03f843a4eb81f304d6f30057bb5be2 (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.java | 107 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerSummaryView.java | 28 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServersSummaryView.java | 6 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java | 6 | ||||
| -rw-r--r-- | src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableTreeViewerPage.java | 2 |
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(); |
