Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'profiling/org.eclipse.linuxtools.dataviewers.piechart/src/org/eclipse/linuxtools')
-rw-r--r--profiling/org.eclipse.linuxtools.dataviewers.piechart/src/org/eclipse/linuxtools/dataviewers/piechart/PieChart.java7
-rw-r--r--profiling/org.eclipse.linuxtools.dataviewers.piechart/src/org/eclipse/linuxtools/dataviewers/piechart/PieChartPaintListener.java41
2 files changed, 44 insertions, 4 deletions
diff --git a/profiling/org.eclipse.linuxtools.dataviewers.piechart/src/org/eclipse/linuxtools/dataviewers/piechart/PieChart.java b/profiling/org.eclipse.linuxtools.dataviewers.piechart/src/org/eclipse/linuxtools/dataviewers/piechart/PieChart.java
index d9a3a6232a..adabc5fa73 100644
--- a/profiling/org.eclipse.linuxtools.dataviewers.piechart/src/org/eclipse/linuxtools/dataviewers/piechart/PieChart.java
+++ b/profiling/org.eclipse.linuxtools.dataviewers.piechart/src/org/eclipse/linuxtools/dataviewers/piechart/PieChart.java
@@ -27,6 +27,10 @@ public class PieChart extends Chart {
protected List<RGB> colorList = new ArrayList<RGB>();
public PieChart(Composite parent, int style) {
+ this(parent, style, new String[0]);
+ }
+
+ public PieChart(Composite parent, int style, String labels[]) {
super(parent, style);
Control plotArea = null;
for (Control child : getChildren()) {
@@ -37,7 +41,7 @@ public class PieChart extends Chart {
plotArea = child;
}
}
- this.addPaintListener(new PieChartPaintListener(this, plotArea));
+ this.addPaintListener(new PieChartPaintListener(this, plotArea, labels));
}
@Override
@@ -50,6 +54,7 @@ public class PieChart extends Chart {
/*
* Add data to this Pie Chart. A single pie Chart will be drawn with the data provided.
*/
+ @Deprecated
public void addPieChartSeries(String labels[], double val[]) {
for (ISeries s : this.getSeriesSet().getSeries()) {
this.getSeriesSet().deleteSeries(s.getId());
diff --git a/profiling/org.eclipse.linuxtools.dataviewers.piechart/src/org/eclipse/linuxtools/dataviewers/piechart/PieChartPaintListener.java b/profiling/org.eclipse.linuxtools.dataviewers.piechart/src/org/eclipse/linuxtools/dataviewers/piechart/PieChartPaintListener.java
index 5b6856da04..50cc59bd75 100644
--- a/profiling/org.eclipse.linuxtools.dataviewers.piechart/src/org/eclipse/linuxtools/dataviewers/piechart/PieChartPaintListener.java
+++ b/profiling/org.eclipse.linuxtools.dataviewers.piechart/src/org/eclipse/linuxtools/dataviewers/piechart/PieChartPaintListener.java
@@ -10,23 +10,36 @@
*******************************************************************************/
package org.eclipse.linuxtools.dataviewers.piechart;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
import org.swtchart.ISeries;
public class PieChartPaintListener implements PaintListener {
private PieChart chart;
private Control plotArea;
+ private String[] seriesNames;
private static final int X_GAP = 10;
+ protected static final Color WHITE = Display.getDefault().getSystemColor(SWT.COLOR_WHITE);
+ protected static final Color BLACK = Display.getDefault().getSystemColor(SWT.COLOR_BLACK);
+
public PieChartPaintListener(PieChart chart, Control plotArea) {
+ this(chart, plotArea, new String[0]);
+ }
+
+ public PieChartPaintListener(PieChart chart, Control plotArea, String[] seriesNames) {
this.chart = chart;
this.plotArea = plotArea;
+ this.seriesNames = seriesNames;
}
@Override
@@ -39,16 +52,28 @@ public class PieChartPaintListener implements PaintListener {
bounds = plotArea.getBounds();
}
double[][] series = this.getPieSeriesArray();
+ if (series.length == 0) {
+ Rectangle allBounds = chart.getBounds();
+ Font font = new Font(Display.getDefault(), "Arial", 15, SWT.BOLD); //$NON-NLS-1$
+ gc.setForeground(BLACK);
+ gc.setFont(font);
+ String text = "No data"; //$NON-NLS-1$
+ Point textSize = e.gc.textExtent(text);
+ gc.drawText(text, (allBounds.width - textSize.x) / 2, (allBounds.height - textSize.y) / 2);
+ font.dispose();
+ return;
+ }
int width = (bounds.width - bounds.x) / series.length;
int x = bounds.x;
- for (double s[] : series) {
- drawPieChart(e, s, new Rectangle(x, bounds.y, width, bounds.height));
+ for (int i = 0; i < series.length; i++) {
+ double[] s = series[i];
+ drawPieChart(e, i, s, new Rectangle(x, bounds.y, width, bounds.height));
x += width;
}
}
- private void drawPieChart(PaintEvent e, double series[], Rectangle bounds) {
+ private void drawPieChart(PaintEvent e, int chartnum, double series[], Rectangle bounds) {
int nelemSeries = series.length;
double sumTotal = 0;
@@ -84,6 +109,16 @@ public class PieChartPaintListener implements PaintListener {
initialAngle += (-sweepAngle);
}
}
+ if (chartnum < seriesNames.length) {
+ Font font = new Font(Display.getDefault(), "Arial", 15, SWT.BOLD); //$NON-NLS-1$
+ gc.setForeground(BLACK);
+ gc.setBackground(WHITE);
+ gc.setFont(font);
+ String text = seriesNames[chartnum];
+ Point textSize = e.gc.textExtent(text);
+ gc.drawText(text, pieX + (pieWidth - textSize.x) / 2, pieY + pieWidth + textSize.y);
+ font.dispose();
+ }
}
private double[][] getPieSeriesArray() {

Back to the top