Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'systemtap/org.eclipse.linuxtools.systemtap.graphingapi.ui/src/org/eclipse/linuxtools/systemtap/graphingapi/ui/charts/PieChartBuilder.java')
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.graphingapi.ui/src/org/eclipse/linuxtools/systemtap/graphingapi/ui/charts/PieChartBuilder.java56
1 files changed, 46 insertions, 10 deletions
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.graphingapi.ui/src/org/eclipse/linuxtools/systemtap/graphingapi/ui/charts/PieChartBuilder.java b/systemtap/org.eclipse.linuxtools.systemtap.graphingapi.ui/src/org/eclipse/linuxtools/systemtap/graphingapi/ui/charts/PieChartBuilder.java
index c1e6223aac..c7a1389e60 100644
--- a/systemtap/org.eclipse.linuxtools.systemtap.graphingapi.ui/src/org/eclipse/linuxtools/systemtap/graphingapi/ui/charts/PieChartBuilder.java
+++ b/systemtap/org.eclipse.linuxtools.systemtap.graphingapi.ui/src/org/eclipse/linuxtools/systemtap/graphingapi/ui/charts/PieChartBuilder.java
@@ -22,13 +22,18 @@ import org.eclipse.swt.widgets.Composite;
public class PieChartBuilder extends AbstractChartWithoutAxisBuilder {
public static final String ID = "org.eclipse.linuxtools.systemtap.graphingapi.ui.charts.piechartbuilder"; //$NON-NLS-1$
- public PieChartBuilder(Composite parent, int style, String title,IAdapter adapter) {
+ public PieChartBuilder(Composite parent, int style, String title, IAdapter adapter) {
super(adapter, parent, style, title);
}
@Override
protected void createChart() {
- this.chart = new PieChart(this, getStyle());
+ String[] allNames = adapter.getLabels();
+ String[] ySeriesNames = new String[allNames.length - 1];
+ for (int i = 0; i < ySeriesNames.length; i++) {
+ ySeriesNames[i] = allNames[i+1];
+ }
+ this.chart = new PieChart(this, getStyle(), ySeriesNames);
}
@Override
@@ -37,23 +42,54 @@ public class PieChartBuilder extends AbstractChartWithoutAxisBuilder {
if (data == null || data.length == 0 || data[0].length == 0)
return;
- int start = 0, len = Math.min(this.maxItems, data.length);
+ int start = 0, len = Math.min(this.maxItems, data.length), leny = data[0].length-1;
if (this.maxItems < data.length) {
start = data.length - this.maxItems;
}
- double[][] values = new double[len][data[0].length-1];
- String[] labels = new String[len];
+ Double[][] all_values = new Double[len][leny];
+ String[] all_labels = new String[len];
- for (int i = 0; i < labels.length; i++) {
+ for (int i = 0; i < all_labels.length; i++) {
if (data[i].length < 2)
return;
- labels[i] = data[start + i][0].toString();
- for (int j = 1; j < data[start + i].length; j++)
- values[i][j-1] = getDoubleValue(data[start + i][j]);
+ Object label = data[start + i][0];
+ if (label != null) {
+ all_labels[i] = data[start + i][0].toString();
+ for (int j = 1; j < data[start + i].length; j++) {
+ Double val = getDoubleValue(data[start + i][j]);
+ if (val != null) {
+ all_values[i][j-1] = val;
+ } else {
+ all_labels[i] = null;
+ break;
+ }
+ }
+ }
+ }
+
+ double[][] values = new double[len][leny];
+ String[] labels = new String[len];
+ int len_trim = 0;
+ for (int i = 0; i < len; i++) {
+ if (all_labels[i] != null) {
+ labels[len_trim] = all_labels[i];
+ for (int j = 0; j < leny; j++) {
+ values[len_trim][j] = all_values[i][j].doubleValue();
+ }
+ len_trim++;
+ }
+ }
+ double[][] values_trim = new double[len_trim][leny];
+ String[] labels_trim = new String[len_trim];
+ for (int i = 0; i < len_trim; i++) {
+ labels_trim[i] = labels[i];
+ for (int j = 0; j < leny; j++) {
+ values_trim[i][j] = values[i][j];
+ }
}
- ((PieChart)this.chart).addPieChartSeries(labels, values);
+ ((PieChart)this.chart).addPieChartSeries(labels_trim, values_trim);
chart.redraw();
}

Back to the top