ASSIGNED - bug 282953: Support different chart types.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=282953
Pie and histogram now work! Minor issues remain with bar chart implementation -- no labels and beige background color.
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/plugin.xml b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/plugin.xml
index 8c16590..11f1cbf 100644
--- a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/plugin.xml
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/plugin.xml
@@ -51,7 +51,7 @@
<action
class="org.eclipse.amp.agf.chart.ide.SelectTimeSeriesAction"
icon="icons/obj16/linecharticon.gif"
- id="org.eclipse.amp.agf.chart.action1"
+ id="org.eclipse.amp.agf.chart.timeseries"
label="Time Series"
menubarPath="org.eclipse.amp.agf.chart.menu/typegroup"
state="true"
@@ -62,13 +62,33 @@
<action
class="org.eclipse.amp.agf.chart.ide.SelectAreaAction"
icon="icons/obj16/areacharticon.gif"
- id="org.eclipse.amp.agf.chart.action1"
+ id="org.eclipse.amp.agf.chart.area"
label="Stacked Area"
menubarPath="org.eclipse.amp.agf.chart.menu/typegroup"
style="radio"
toolbarPath="typegroup"
tooltip="Displays the data as stacked areas">
</action>
+ <action
+ class="org.eclipse.amp.agf.chart.ide.SelectPieAction"
+ icon="icons/obj16/piecharticon.gif"
+ id="org.eclipse.amp.agf.chart.pie"
+ label="Pie"
+ menubarPath="org.eclipse.amp.agf.chart.menu/typegroup"
+ style="radio"
+ toolbarPath="typegroup"
+ tooltip="Displays the data as a pie chart">
+ </action>
+ <action
+ class="org.eclipse.amp.agf.chart.ide.SelectHistogramAction"
+ icon="icons/obj16/barcharticon.gif"
+ id="org.eclipse.amp.agf.chart.histogram"
+ label="Pie"
+ menubarPath="org.eclipse.amp.agf.chart.menu/typegroup"
+ style="radio"
+ toolbarPath="typegroup"
+ tooltip="Displays the data as a pie chart">
+ </action>
</viewContribution>
</extension>
<!-- <extension
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/BasicAxesChartStrategy.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/BasicAxesChartStrategy.java
new file mode 100644
index 0000000..45f0036
--- /dev/null
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/BasicAxesChartStrategy.java
@@ -0,0 +1,118 @@
+package org.eclipse.amp.agf.chart;
+
+import java.util.List;
+
+import org.eclipse.birt.chart.model.Chart;
+import org.eclipse.birt.chart.model.ChartWithAxes;
+import org.eclipse.birt.chart.model.attribute.AxisType;
+import org.eclipse.birt.chart.model.attribute.IntersectionType;
+import org.eclipse.birt.chart.model.attribute.LegendItemType;
+import org.eclipse.birt.chart.model.attribute.TickStyle;
+import org.eclipse.birt.chart.model.attribute.impl.PaletteImpl;
+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.DataSet;
+import org.eclipse.birt.chart.model.data.SeriesDefinition;
+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;
+
+
+public abstract class BasicAxesChartStrategy extends BasicChartStrategy {
+
+ public void update() {
+ }
+
+ public Chart createChart(IDataProvider dataProvider, Object dataSource) {
+ this.dataProvider = dataProvider;
+ this.dataSource = dataSource;
+ ChartWithAxes chart = ChartWithAxesImpl.create();
+ setChart(chart);
+ chart.setUnitSpacing(20);
+
+ // X-Axis
+ Axis xAxisPrimary = getXAxisPrimary();
+ xAxisPrimary.setType(AxisType.TEXT_LITERAL);
+ xAxisPrimary.getTitle().getCaption().setValue("Period");
+ xAxisPrimary.getTitle().setVisible(true);
+ xAxisPrimary.getMajorGrid().setTickStyle(TickStyle.BELOW_LITERAL);
+ xAxisPrimary.getOrigin().setType(IntersectionType.VALUE_LITERAL);
+ createXSeriesDefinition();
+
+ Axis yAxisPrimary = getYAxisPrimary();
+ yAxisPrimary.getMajorGrid().setTickStyle(TickStyle.LEFT_LITERAL);
+ yAxisPrimary.setType(AxisType.LINEAR_LITERAL);
+ yAxisPrimary.getLabel().getCaption().getFont().setRotation(90);
+ createYSeriesDefinition();
+
+ DataSet periods = TextDataSetImpl.create(dataProvider.getCategoryLabels(dataSource));
+ SeriesDefinition xSeriesDefinition = getXSeriesDefinition();
+ xSeriesDefinition.getSeries().get(0).setDataSet(periods);
+ return chart;
+ }
+
+ public void createLegend() {
+ super.createLegend();
+ getLegend().setItemType(LegendItemType.SERIES_LITERAL);
+ }
+
+ protected abstract void addValueSet(Object valueSet);
+
+ public void updateSelection() {
+ List valueSets = dataProvider.getValueSets(dataSource);
+ getValueSetsDefinition().getSeries().clear();
+ for (Object valueSet : valueSets) {
+ addValueSet(valueSet);
+ }
+ }
+
+ private void createXSeriesDefinition() {
+ SeriesDefinition xSeriesDefinition = SeriesDefinitionImpl.create();
+ Axis xAxisPrimary = getXAxisPrimary();
+ xAxisPrimary.getSeriesDefinitions().clear();
+ xAxisPrimary.getSeriesDefinitions().add(xSeriesDefinition);
+ xSeriesDefinition.getSeriesPalette().shift(0);
+
+ Series xSeriesCategory = SeriesImpl.create();
+ xSeriesDefinition.getSeries().clear();
+ xSeriesDefinition.getSeries().add(xSeriesCategory);
+ }
+
+ private void createYSeriesDefinition() {
+ SeriesDefinition ySeriesDefinition = SeriesDefinitionImpl.create();
+ Axis yAxisPrimary = getYAxisPrimary();
+ yAxisPrimary.getSeriesDefinitions().clear();
+ yAxisPrimary.getSeriesDefinitions().add(ySeriesDefinition);
+ ySeriesDefinition.setSeriesPalette(PaletteImpl.create(0, true));
+ }
+
+ protected void addValueSeries(Series series, Object valueSet) {
+ DataSet data = NumberDataSetImpl.create(dataProvider.getValues(valueSet));
+ series.setDataSet(data);
+ getValueSetsDefinition().getSeries().add(series);
+ series.getLabel().setVisible(false);
+ series.setSeriesIdentifier(dataProvider.getText(valueSet));
+ }
+
+ private Axis getXAxisPrimary() {
+ return ((ChartWithAxes) getChart()).getPrimaryBaseAxes()[0];
+ }
+
+ private Axis getYAxisPrimary() {
+ return ((ChartWithAxes) getChart()).getPrimaryOrthogonalAxis(getXAxisPrimary());
+ }
+
+ private SeriesDefinition getYSeriesDefinition() {
+ return getYAxisPrimary().getSeriesDefinitions().get(0);
+ }
+
+ private SeriesDefinition getXSeriesDefinition() {
+ return getXAxisPrimary().getSeriesDefinitions().get(0);
+ }
+
+ public SeriesDefinition getValueSetsDefinition() {
+ return getYSeriesDefinition();
+ }
+}
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/BasicChartStrategy.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/BasicChartStrategy.java
new file mode 100644
index 0000000..f91a4a5
--- /dev/null
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/BasicChartStrategy.java
@@ -0,0 +1,40 @@
+package org.eclipse.amp.agf.chart;
+
+import org.eclipse.birt.chart.model.Chart;
+import org.eclipse.birt.chart.model.attribute.Anchor;
+import org.eclipse.birt.chart.model.attribute.LineAttributes;
+import org.eclipse.birt.chart.model.attribute.LineStyle;
+import org.eclipse.birt.chart.model.layout.Legend;
+
+public abstract class BasicChartStrategy implements IChartDesignStrategy {
+
+ protected IDataProvider dataProvider;
+ protected Object dataSource;
+
+ private Chart chart;
+
+ private Legend legend;
+
+ public void createLegend() {
+ legend = chart.getLegend();
+ LineAttributes lia = legend.getOutline();
+ legend.getText().getFont().setSize(10);
+ lia.setStyle(LineStyle.SOLID_LITERAL);
+ legend.getInsets().set(10, 5, 0, 0);
+ legend.getOutline().setVisible(false);
+ legend.setAnchor(Anchor.EAST_LITERAL);
+ }
+
+ public void setChart(Chart chart) {
+ this.chart = chart;
+ createLegend();
+ }
+
+ public Chart getChart() {
+ return chart;
+ }
+
+ public Legend getLegend() {
+ return legend;
+ }
+}
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartEditPart.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartEditPart.java
index 0d7cde0..22fac1f 100644
--- a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartEditPart.java
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartEditPart.java
@@ -15,14 +15,10 @@
*/
package org.eclipse.amp.agf.chart;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
import org.eclipse.amp.axf.core.IModel;
import org.eclipse.amp.axf.core.IObservationProvider;
@@ -36,36 +32,14 @@
import org.eclipse.birt.chart.factory.RunTimeContext;
import org.eclipse.birt.chart.log.ILogger;
import org.eclipse.birt.chart.model.Chart;
-import org.eclipse.birt.chart.model.ChartWithAxes;
-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.CallBackValue;
import org.eclipse.birt.chart.model.attribute.ColorDefinition;
import org.eclipse.birt.chart.model.attribute.Fill;
-import org.eclipse.birt.chart.model.attribute.IntersectionType;
-import org.eclipse.birt.chart.model.attribute.LegendItemType;
-import org.eclipse.birt.chart.model.attribute.LineAttributes;
-import org.eclipse.birt.chart.model.attribute.LineStyle;
import org.eclipse.birt.chart.model.attribute.Palette;
-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.PaletteImpl;
-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.DataSet;
-import org.eclipse.birt.chart.model.data.SeriesDefinition;
-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.layout.Legend;
-import org.eclipse.birt.chart.model.type.AreaSeries;
-import org.eclipse.birt.chart.model.type.LineSeries;
-import org.eclipse.birt.chart.model.type.impl.AreaSeriesImpl;
-import org.eclipse.birt.chart.model.type.impl.LineSeriesImpl;
import org.eclipse.birt.chart.script.IChartScriptContext;
import org.eclipse.birt.chart.script.IExternalContext;
import org.eclipse.birt.core.framework.PlatformConfig;
@@ -82,7 +56,6 @@
import org.eclipse.emf.common.util.EList;
import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
@@ -99,7 +72,7 @@
private static final long serialVersionUID = 1L;
- private ChartWithAxes chart;
+ private Chart chart;
private IDeviceRenderer renderer;
@@ -109,43 +82,8 @@
private IColorProvider seriesColorProvider;
- private ILabelProvider seriesLabelProvider;
-
private Palette genericPalette;
- public enum ChartType {
- TIME_SERIES, STACKED_AREA, HISTOGRAM, PIE
- }
-
- private ChartType chartType;
-
- /**
- * Gets the series label provider.
- *
- * @return the series label provider
- */
- public ILabelProvider getSeriesLabelProvider() {
- return seriesLabelProvider;
- }
-
- /**
- * Sets the series label provider.
- *
- * @param seriesLabelProvider the new series label provider
- */
- public void setSeriesLabelProvider(ILabelProvider seriesLabelProvider) {
- this.seriesLabelProvider = seriesLabelProvider;
- }
-
- /**
- * Gets the series color provider.
- *
- * @return the series color provider
- */
- public IColorProvider getSeriesColorProvider() {
- return seriesColorProvider;
- }
-
/**
* Sets the series color provider.
*
@@ -157,16 +95,6 @@
private Object dataSource;
- private Series xSeriesCategory;
-
- private SeriesDefinition ySeriesDefinition;
-
- private SeriesDefinition xSeriesDefinition;
-
- private Set<Object> currentSeries = new HashSet<Object>();
- private Map<String, Color> colorForSeries = new HashMap<String, Color>();
- private Map<Series, Object> dataForSeries;
-
private GC imageGC;
private Image image;
@@ -194,10 +122,8 @@
} catch (ChartException e) {
throw new RuntimeException(e);
}
- // rtc = new RunTimeContext();
- // rtc.setULocale(ULocale.getDefault());
- colorForSeries = new HashMap<String, Color>();
-
+ genericPalette = PaletteImpl.create(0, true);
+ genericPalette.shift(0);
}
/**
@@ -231,7 +157,7 @@
} catch (InterruptedException e) {
}
}
- setChartType(ChartType.TIME_SERIES);
+ setChartStrategy(ChartType.TIME_SERIES.createStrategy());
}
/**
@@ -239,7 +165,7 @@
* @see org.eclipse.amp.axf.core.AbstractLifecycleListener#observeStart(org.eclipse.amp.axf.core.IObservationProvider)
*/
public void observeStart(IObservationProvider observed) {
- updateYSeries();
+ updateChartSelection();
endPainting();
}
@@ -259,6 +185,7 @@
@Override
public void update(final IModel model) {
beginPainting();
+ chartStrategy.update();
refresh();
}
@@ -302,12 +229,12 @@
}
};
- private void updateYSeriesColor(Series object, int index) {
- Series lineSeries = object;
- Object valueSet = dataForSeries.get(lineSeries);
- String seriesLabel = seriesLabelProvider.getText(valueSet);
+ private IChartDesignStrategy chartStrategy;
+
+ private void updateValueSetColor(Object valueSet, int index) {
+ String seriesLabel = dataProvider.getText(valueSet);
Color swtColor = seriesColorProvider.getForeground(seriesLabel);
- EList<Fill> entries = ySeriesDefinition.getSeriesPalette().getEntries();
+ EList<Fill> entries = chartStrategy.getValueSetsDefinition().getSeriesPalette().getEntries();
ColorDefinition cd = null;
if (swtColor == null) {
// List<Fill> palette = ySeriesDefinition.getSeriesPalette().getEntries();
@@ -338,14 +265,6 @@
// cd.setBlue(swtColor.getBlue());
}
entries.add(cd);
- if (chartType == ChartType.TIME_SERIES) {
- // ((LineSeries) lineSeries).getLineAttributes().setColor(cd);
- ((LineSeries) lineSeries).setPaletteLineColor(true);
- } else if (chartType == ChartType.STACKED_AREA) {
- // ((AreaSeries) lineSeries).getLineAttributes().setColor(cd);
- ((AreaSeries) lineSeries).setStacked(true);
- // ((AreaSeries) lineSeries).setShadowColor(cd);
- }
}
/**
@@ -449,7 +368,7 @@
image = null;
}
try {
- if (chart != null && getFigure() != null && !getFigure().getSize().isEmpty() && ySeriesDefinition != null) {
+ if (chart != null && getFigure() != null && !getFigure().getSize().isEmpty()) {
createImage();
Dimension area = getFigure().getSize();
Bounds chartBounds = BoundsImpl.create(0, 0, area.width, area.height);
@@ -494,110 +413,26 @@
* Creates the chart.
*/
public synchronized void createChart() {
- if (chart == null) {
- chart = ChartWithAxesImpl.create();
- chart.getTitle().getLabel().setVisible(false); //$NON-NLS-1$
- chart.setUnitSpacing(20);
- // Color gray = getFigure().getBackgroundColor();
- // chart.getBlock().setBackground(ColorDefinitionImpl.create(gray.getRed(), gray.getGreen(),
- // gray.getBlue()));
- Legend lg = chart.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.EAST_LITERAL);
- lg.setItemType(LegendItemType.SERIES_LITERAL);
- }
+ chart = chartStrategy.createChart(dataProvider, dataSource);
- // X-Axis
- Axis xAxisPrimary = chart.getPrimaryBaseAxes()[0];
- xAxisPrimary.setType(AxisType.TEXT_LITERAL);
- xAxisPrimary.getTitle().getCaption().setValue("Period");
- xAxisPrimary.getTitle().setVisible(true);
- xAxisPrimary.getMajorGrid().setTickStyle(TickStyle.BELOW_LITERAL);
- xAxisPrimary.getOrigin().setType(IntersectionType.VALUE_LITERAL);
-
- Axis yAxisPrimary = chart.getPrimaryOrthogonalAxis(xAxisPrimary);
- yAxisPrimary.getMajorGrid().setTickStyle(TickStyle.LEFT_LITERAL);
- yAxisPrimary.setType(AxisType.LINEAR_LITERAL);
- yAxisPrimary.getLabel().getCaption().getFont().setRotation(90);
-
- createXSeriesDefinition(xAxisPrimary);
-
- createYSeriesDefinition(yAxisPrimary);
-
+ chart.getTitle().getLabel().setVisible(false);
}
- private void createYSeriesDefinition(Axis yAxisPrimary) {
- ySeriesDefinition = SeriesDefinitionImpl.create();
- yAxisPrimary.getSeriesDefinitions().clear();
- yAxisPrimary.getSeriesDefinitions().add(ySeriesDefinition);
- if (genericPalette == null) {
- genericPalette = ySeriesDefinition.getSeriesPalette();
- genericPalette.shift(0);
- }
- ySeriesDefinition.setSeriesPalette(PaletteImpl.create(0, true));
- }
-
- private void createXSeriesDefinition(Axis xAxisPrimary) {
- xSeriesDefinition = SeriesDefinitionImpl.create();
- xAxisPrimary.getSeriesDefinitions().clear();
- xAxisPrimary.getSeriesDefinitions().add(xSeriesDefinition);
- xSeriesDefinition.getSeriesPalette().shift(0);
-
- xSeriesCategory = SeriesImpl.create();
- xSeriesDefinition.getSeries().clear();
- xSeriesDefinition.getSeries().add(xSeriesCategory);
- DataSet periods = TextDataSetImpl.create(dataProvider.getCategoryLabels(dataSource));
- xSeriesCategory.setDataSet(periods);
- }
+ boolean chartUpated;
/**
* Update chart series.
*/
- @SuppressWarnings("unchecked")
- public synchronized void updateYSeries() {
+ public synchronized void updateChartSelection() {
+ chartStrategy.updateSelection();
List valueSets = dataProvider.getValueSets(dataSource);
+ chartStrategy.getValueSetsDefinition().getSeriesPalette().getEntries().clear();
int index = 0;
- ySeriesDefinition.getSeries().clear();
- ySeriesDefinition.getSeriesPalette().getEntries().clear();
for (Object valueSet : valueSets) {
- // if (!currentSeries.contains(valueSet)) {
- Series series = addYSeries(valueSet, index);
- // }
- updateYSeriesColor(series, index);
+ updateValueSetColor(valueSet, index);
index++;
}
- // currentSeries = new HashSet<Object>(valueSets);
- for (Series lineSeries : new ArrayList<Series>(ySeriesDefinition.getSeries())) {
- // Object valueSet = dataForSeries.get(lineSeries);
- // if (!currentSeries.contains(valueSet)) {
- // ySeriesDefinition.getSeries().remove(lineSeries);
- // }
- }
- }
-
- private Series addYSeries(Object valueSet, int index) {
- Series series = null;
- if (chartType == ChartType.TIME_SERIES) {
- series = LineSeriesImpl.create();
- ((LineSeries) series).getMarkers().clear();
- ((LineSeries) series).setPaletteLineColor(true);
- } else if (chartType == ChartType.STACKED_AREA) {
- series = AreaSeriesImpl.create();
- ((AreaSeries) series).getMarkers().clear();
- // ((AreaSeries) lineSeries).setPaletteLineColor(false);
- }
-
- series.getLabel().setVisible(false);
- series.setSeriesIdentifier(seriesLabelProvider.getText(valueSet));
- DataSet data = NumberDataSetImpl.create(dataProvider.getValues(valueSet));
- series.setDataSet(data);
- dataForSeries.put(series, valueSet);
- ySeriesDefinition.getSeries().add(series);
- return series;
+ chartUpated = true;
}
/*
@@ -661,7 +496,7 @@
*
* @return the chart
*/
- public ChartWithAxes getChart() {
+ public Chart getChart() {
return chart;
}
@@ -698,12 +533,11 @@
*/
public synchronized void setDataProvider(IDataProvider dataProvider) {
this.dataProvider = dataProvider;
- setSeriesLabelProvider(dataProvider);
dataSource = dataProvider.getDataSource(getModel());
dataListener = new IDataSelectionListener() {
public void selectionChanged(Object dataSet) {
if (getParent() != null && getRoot() != null && getViewer() != null && chart != null) {
- updateYSeries();
+ updateChartSelection();
getViewer().getControl().getDisplay().asyncExec(new Runnable() {
public void run() {
regenerateChart(true);
@@ -716,38 +550,12 @@
}
/**
- * Gets the data set.
- *
- * @return the data set
- */
- public Object getDataSet() {
- return dataSource;
- }
-
- /**
- * Sets the data set.
- *
- * @param dataSet the new data set
- */
- public void setDataSet(Object dataSet) {
- this.dataSource = dataSet;
- }
-
- /**
- * @return the chartType
- */
- public ChartType getChartType() {
- return chartType;
- }
-
- /**
* @param chartType the chartType to set
*/
- public void setChartType(ChartType chartType) {
- this.chartType = chartType;
- dataForSeries = new HashMap<Series, Object>();
- currentSeries = new HashSet<Object>();
+ public void setChartStrategy(IChartDesignStrategy chartStrategy) {
+ this.chartStrategy = chartStrategy;
createChart();
+ updateChartSelection();
if (getViewer().getControl().getDisplay() != null) {
getViewer().getControl().getDisplay().asyncExec(new Runnable() {
public void run() {
@@ -756,4 +564,13 @@
});
}
}
+
+ /**
+ * Gets the series color provider.
+ *
+ * @return the series color provider
+ */
+ public IColorProvider getSeriesColorProvider() {
+ return seriesColorProvider;
+ }
}
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartType.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartType.java
new file mode 100644
index 0000000..e0d5029
--- /dev/null
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartType.java
@@ -0,0 +1,23 @@
+/**
+ *
+ */
+package org.eclipse.amp.agf.chart;
+
+
+public enum ChartType {
+ TIME_SERIES, STACKED_AREA, HISTOGRAM, PIE;
+
+ public IChartDesignStrategy createStrategy() {
+ switch (this) {
+ case TIME_SERIES :
+ return new TimeSeriesStrategy();
+ case STACKED_AREA:
+ return new StackAreaStrategy();
+ case PIE:
+ return new PieStrategy();
+ case HISTOGRAM:
+ return new HistrogramStrategy();
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/HistrogramStrategy.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/HistrogramStrategy.java
new file mode 100644
index 0000000..ed740d0
--- /dev/null
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/HistrogramStrategy.java
@@ -0,0 +1,130 @@
+package org.eclipse.amp.agf.chart;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.birt.chart.model.Chart;
+import org.eclipse.birt.chart.model.ChartWithAxes;
+import org.eclipse.birt.chart.model.attribute.AxisType;
+import org.eclipse.birt.chart.model.attribute.IntersectionType;
+import org.eclipse.birt.chart.model.attribute.LegendItemType;
+import org.eclipse.birt.chart.model.attribute.Position;
+import org.eclipse.birt.chart.model.attribute.TickStyle;
+import org.eclipse.birt.chart.model.attribute.impl.ColorDefinitionImpl;
+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.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.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.layout.Block;
+import org.eclipse.birt.chart.model.layout.Plot;
+import org.eclipse.birt.chart.model.type.BarSeries;
+import org.eclipse.birt.chart.model.type.impl.BarSeriesImpl;
+
+public class HistrogramStrategy extends LastValueStrategy {
+
+ private SeriesDefinition labelDefinition;
+ private BarSeries valueSeries;
+ private SeriesDefinition xSeriesDefinition;
+ private SeriesDefinition valueDefinition;
+
+ List<List<Double>> numbersLists = new ArrayList<List<Double>>();
+ List<List<String>> labelsLists = new ArrayList<List<String>>();
+
+ public Chart createChart(IDataProvider dataProvider, Object dataSource) {
+ this.dataProvider = dataProvider;
+ this.dataSource = dataSource;
+
+ ChartWithAxes chart = ChartWithAxesImpl.create();
+ chart.setType("Bar Chart"); //$NON-NLS-1$
+ chart.setSubType("Stacked"); //$NON-NLS-1$
+ // Plot
+ chart.getBlock().setBackground(ColorDefinitionImpl.WHITE());
+ chart.getBlock().getOutline().setVisible(true);
+ for (Block block : chart.getBlock().getChildren()) {
+ block.setBackground(ColorDefinitionImpl.WHITE());
+ }
+ Plot p = chart.getPlot();
+ p.getClientArea().setBackground(ColorDefinitionImpl.create(255, 255, 225));
+ p.setBackground(ColorDefinitionImpl.WHITE());
+
+ // X-Axis
+ Axis xAxisPrimary = chart.getPrimaryBaseAxes()[0];
+
+ xAxisPrimary.setType(AxisType.TEXT_LITERAL);
+ xAxisPrimary.getMajorGrid().setTickStyle(TickStyle.BELOW_LITERAL);
+ xAxisPrimary.getOrigin().setType(IntersectionType.MIN_LITERAL);
+
+ // Y-Axis
+ Axis yAxisPrimary = chart.getPrimaryOrthogonalAxis(xAxisPrimary);
+ yAxisPrimary.getMajorGrid().setTickStyle(TickStyle.LEFT_LITERAL);
+ yAxisPrimary.setType(AxisType.LINEAR_LITERAL);
+ yAxisPrimary.getLabel().getCaption().getFont().setRotation(90);
+
+
+ xSeriesDefinition = SeriesDefinitionImpl.create();
+ xAxisPrimary.getSeriesDefinitions().add(xSeriesDefinition);
+ xSeriesDefinition.getSeriesPalette().shift(0);
+
+ valueDefinition = SeriesDefinitionImpl.create();
+ // valueDefinition.getSeriesPalette().shift(0);
+ yAxisPrimary.getSeriesDefinitions().add(valueDefinition);
+
+
+ return chart;
+ }
+
+ public void update() {
+ int index = 0;
+ for (Object valueSet : dataProvider.getValueSets(dataSource)) {
+ List<Double> values = (List<Double>) dataProvider.getValues(valueSet);
+ numbersLists.get(index).set(0, values.get(values.size() - 1));
+ // X-Series
+ String text = dataProvider.getText(valueSet);
+ labelsLists.get(index++).set(0, text);
+ }
+ }
+
+ public void updateSelection() {
+ valueDefinition.getSeries().clear();
+ xSeriesDefinition.getSeries().clear();
+ numbersLists = new ArrayList<List<Double>>();
+ labelsLists = new ArrayList<List<String>>();
+ for (Object valueSet : dataProvider.getValueSets(dataSource)) {
+ Double number = 0.0;
+ List<Double> valueList = new ArrayList<Double>();
+ valueList.add(number);
+ NumberDataSet numberSet = NumberDataSetImpl.create(valueList);
+ numbersLists.add(valueList);
+ valueSeries = (BarSeries) BarSeriesImpl.create();
+ valueSeries.setDataSet(numberSet);
+ // valueSeries.setStacked(true);
+ valueSeries.getLabel().setVisible(true);
+ valueSeries.setLabelPosition(Position.INSIDE_LITERAL);
+ valueDefinition.getSeries().add(valueSeries);
+ List<String> labelList = new ArrayList<String>();
+ labelList.add("");
+ TextDataSet labelSet = TextDataSetImpl.create(labelList);//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+ labelsLists.add(labelList);
+ Series seCategory = SeriesImpl.create();
+ seCategory.setDataSet(labelSet);
+ xSeriesDefinition.getSeries().add(seCategory);
+ }
+ }
+
+ public void createLegend() {
+ super.createLegend();
+ getLegend().setItemType(LegendItemType.SERIES_LITERAL);
+ }
+
+ public SeriesDefinition getValueSetsDefinition() {
+ return valueDefinition;
+ }
+
+
+}
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/IChartDesignStrategy.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/IChartDesignStrategy.java
new file mode 100644
index 0000000..91b0451
--- /dev/null
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/IChartDesignStrategy.java
@@ -0,0 +1,19 @@
+package org.eclipse.amp.agf.chart;
+
+import org.eclipse.birt.chart.model.Chart;
+import org.eclipse.birt.chart.model.data.SeriesDefinition;
+
+public interface IChartDesignStrategy {
+ void update();
+
+ Chart createChart(IDataProvider dataProvider, Object dataSource);
+
+ public SeriesDefinition getValueSetsDefinition();
+
+ Chart getChart();
+
+ void setChart(Chart chart);
+
+ void updateSelection();
+
+}
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/LastValueStrategy.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/LastValueStrategy.java
new file mode 100644
index 0000000..8b3ddb2
--- /dev/null
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/LastValueStrategy.java
@@ -0,0 +1,48 @@
+package org.eclipse.amp.agf.chart;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+
+public abstract class LastValueStrategy extends BasicChartStrategy {
+
+ protected Collection<String> labels = new HashSet<String>();
+
+ protected List<Double> numbers = new ArrayList<Double>();
+
+ public void updateSelection() {
+ numbers.clear();
+ labels.clear();
+ for (Object valueSet : dataProvider.getValueSets(dataSource)) {
+ List<Double> values = (List<Double>) dataProvider.getValues(valueSet);
+ numbers.add(0.0);
+ String text = dataProvider.getText(valueSet);
+ labels.add(text);
+ }
+ }
+
+ public void update() {
+ int index = 0;
+ for (Object valueSet : dataProvider.getValueSets(dataSource)) {
+ List<Double> values = (List<Double>) dataProvider.getValues(valueSet);
+ numbers.set(index++, values.get(values.size() - 1));
+ }
+ }
+
+ public void setLabels(Collection<String> labels) {
+ this.labels = labels;
+ }
+
+ public Collection<String> getLabels() {
+ return labels;
+ }
+
+ public void setNumbers(List<Double> numbers) {
+ this.numbers = numbers;
+ }
+
+ public List<Double> getNumbers() {
+ return numbers;
+ }
+}
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/PieStrategy.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/PieStrategy.java
new file mode 100644
index 0000000..2c22aee
--- /dev/null
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/PieStrategy.java
@@ -0,0 +1,62 @@
+package org.eclipse.amp.agf.chart;
+
+import org.eclipse.birt.chart.model.Chart;
+import org.eclipse.birt.chart.model.ChartWithoutAxes;
+import org.eclipse.birt.chart.model.attribute.ChartDimension;
+import org.eclipse.birt.chart.model.component.Series;
+import org.eclipse.birt.chart.model.component.impl.SeriesImpl;
+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.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.ChartWithoutAxesImpl;
+import org.eclipse.birt.chart.model.type.PieSeries;
+import org.eclipse.birt.chart.model.type.impl.PieSeriesImpl;
+
+public class PieStrategy extends LastValueStrategy {
+
+ private PieSeries numberSeries;
+ private Series labelSeries;
+ private SeriesDefinition labelDefinition;
+ private SeriesDefinition numberDefinition;
+
+ public Chart createChart(IDataProvider dataProvider, Object dataSource) {
+ this.dataProvider = dataProvider;
+ this.dataSource = dataSource;
+ ChartWithoutAxes chart = ChartWithoutAxesImpl.create();
+ setChart(chart);
+ chart.setDimension(ChartDimension.TWO_DIMENSIONAL_LITERAL);
+ chart.setType("Pie Chart"); //$NON-NLS-1$
+ chart.setSubType("Standard Pie Chart"); //$NON-NLS-1$
+
+ // Plot
+ chart.setSeriesThickness(10);
+
+ // Data Set
+ TextDataSet labelSet = TextDataSetImpl.create(getLabels());//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+ NumberDataSet numberSet = NumberDataSetImpl.create(getNumbers());
+
+ labelSeries = SeriesImpl.create();
+ labelSeries.setDataSet(labelSet);
+
+ labelDefinition = SeriesDefinitionImpl.create();
+ chart.getSeriesDefinitions().add(labelDefinition);
+ labelDefinition.getSeriesPalette().shift(0);
+ labelDefinition.getSeries().add(labelSeries);
+
+ numberSeries = (PieSeries) PieSeriesImpl.create();
+ numberSeries.setDataSet(numberSet);
+ numberSeries.setExplosion(0);
+
+ numberDefinition = SeriesDefinitionImpl.create();
+ numberDefinition.getSeries().add(numberSeries);
+ labelDefinition.getSeriesDefinitions().add(numberDefinition);
+ return chart;
+ }
+
+ public SeriesDefinition getValueSetsDefinition() {
+ return labelDefinition;
+ }
+}
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/StackAreaStrategy.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/StackAreaStrategy.java
new file mode 100644
index 0000000..f919387
--- /dev/null
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/StackAreaStrategy.java
@@ -0,0 +1,15 @@
+package org.eclipse.amp.agf.chart;
+
+import org.eclipse.birt.chart.model.component.Series;
+import org.eclipse.birt.chart.model.type.AreaSeries;
+import org.eclipse.birt.chart.model.type.impl.AreaSeriesImpl;
+
+public class StackAreaStrategy extends BasicAxesChartStrategy {
+
+ public void addValueSet(Object valueSet) {
+ Series series = AreaSeriesImpl.create();
+ ((AreaSeries) series).getMarkers().clear();
+ ((AreaSeries) series).setStacked(true);
+ addValueSeries(series, valueSet);
+ }
+}
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/TimeSeriesStrategy.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/TimeSeriesStrategy.java
new file mode 100644
index 0000000..e59816a
--- /dev/null
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/TimeSeriesStrategy.java
@@ -0,0 +1,14 @@
+package org.eclipse.amp.agf.chart;
+
+import org.eclipse.birt.chart.model.type.LineSeries;
+import org.eclipse.birt.chart.model.type.impl.LineSeriesImpl;
+
+public class TimeSeriesStrategy extends BasicAxesChartStrategy {
+
+ public void addValueSet(Object valueSet) {
+ LineSeries series = (LineSeries) LineSeriesImpl.create();
+ series.getMarkers().clear();
+ series.setPaletteLineColor(true);
+ addValueSeries(series, valueSet);
+ }
+}
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectAreaAction.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectAreaAction.java
index ef72d29..7b5918c 100644
--- a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectAreaAction.java
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectAreaAction.java
@@ -16,8 +16,9 @@
package org.eclipse.amp.agf.chart.ide;
import org.eclipse.amp.agf.chart.ChartEditPart;
+import org.eclipse.amp.agf.chart.ChartType;
import org.eclipse.amp.agf.chart.ChartViewPart;
-import org.eclipse.amp.agf.chart.ChartEditPart.ChartType;
+import org.eclipse.amp.agf.chart.IChartDesignStrategy;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IViewActionDelegate;
@@ -37,8 +38,9 @@
* @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
*/
public void run(IAction action) {
- editor.setChartType(ChartType.STACKED_AREA);
- editor.updateYSeries();
+ IChartDesignStrategy createChart = ChartType.STACKED_AREA.createStrategy();
+ editor.setChartStrategy(createChart);
+ createChart.update();
}
/**
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectHistogramAction.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectHistogramAction.java
new file mode 100644
index 0000000..74c973a
--- /dev/null
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectHistogramAction.java
@@ -0,0 +1,61 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+ */
+package org.eclipse.amp.agf.chart.ide;
+
+import org.eclipse.amp.agf.chart.ChartEditPart;
+import org.eclipse.amp.agf.chart.ChartType;
+import org.eclipse.amp.agf.chart.ChartViewPart;
+import org.eclipse.amp.agf.chart.IChartDesignStrategy;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class DisplayLegendAction.
+ */
+public class SelectHistogramAction implements IViewActionDelegate {
+
+ ChartEditPart editor;
+
+ /**
+ *
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run(IAction action) {
+ IChartDesignStrategy createChart = ChartType.HISTOGRAM.createStrategy();
+ editor.setChartStrategy(createChart);
+ createChart.update();
+ }
+
+ /**
+ *
+ * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
+ */
+ public void init(IViewPart view) {
+ editor = (ChartEditPart) ((ChartViewPart) view).getEditPart();
+ }
+
+ /**
+ *
+ * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+}
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectPieAction.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectPieAction.java
new file mode 100644
index 0000000..bc5d776
--- /dev/null
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectPieAction.java
@@ -0,0 +1,61 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+ */
+package org.eclipse.amp.agf.chart.ide;
+
+import org.eclipse.amp.agf.chart.ChartEditPart;
+import org.eclipse.amp.agf.chart.ChartType;
+import org.eclipse.amp.agf.chart.ChartViewPart;
+import org.eclipse.amp.agf.chart.IChartDesignStrategy;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class DisplayLegendAction.
+ */
+public class SelectPieAction implements IViewActionDelegate {
+
+ ChartEditPart editor;
+
+ /**
+ *
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run(IAction action) {
+ IChartDesignStrategy createChart = ChartType.PIE.createStrategy();
+ editor.setChartStrategy(createChart);
+ createChart.update();
+ }
+
+ /**
+ *
+ * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
+ */
+ public void init(IViewPart view) {
+ editor = (ChartEditPart) ((ChartViewPart) view).getEditPart();
+ }
+
+ /**
+ *
+ * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ }
+
+}
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectTimeSeriesAction.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectTimeSeriesAction.java
index 55b1c45..cc34382 100644
--- a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectTimeSeriesAction.java
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ide/SelectTimeSeriesAction.java
@@ -16,8 +16,9 @@
package org.eclipse.amp.agf.chart.ide;
import org.eclipse.amp.agf.chart.ChartEditPart;
+import org.eclipse.amp.agf.chart.ChartType;
import org.eclipse.amp.agf.chart.ChartViewPart;
-import org.eclipse.amp.agf.chart.ChartEditPart.ChartType;
+import org.eclipse.amp.agf.chart.IChartDesignStrategy;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IViewActionDelegate;
@@ -37,8 +38,9 @@
* @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
*/
public void run(IAction action) {
- editor.setChartType(ChartType.TIME_SERIES);
- editor.updateYSeries();
+ IChartDesignStrategy createChart = ChartType.TIME_SERIES.createStrategy();
+ editor.setChartStrategy(createChart);
+ createChart.update();
}
/**