Browser resizing doesn't behave smoothly with legend.
Code:
public class MySampleApplication implements IsWidget, EntryPoint {
@Override
public Widget asWidget() {
// reduce the padding on text element as we have widgets in the cells
ListStore<String> store = new ListStore<String>(new ModelKeyProvider<String>() {
@Override
public String getKey(String item) {
return item;
}
});
store.add("Testing Testing");
store.add("Testing DEF");
store.add("ABC Testing");
store.add("Testing ABC");
Chart<String> qualityMetricsChart = new Chart<String>();
qualityMetricsChart.bindStore(store);
qualityMetricsChart.setDefaultInsets(50);
qualityMetricsChart.setShadowChart(true);
final PieSeries<String> series = new PieSeries<String>();
series.setAngleField(new ValueProvider<String, Number>() {
@Override
public Number getValue(String object) {
return Math.random();
}
@Override
public void setValue(String object, Number value) {
}
@Override
public String getPath() {
return "ABC";
}
});
TextSprite textConfig = new TextSprite();
textConfig.setTextBaseline(TextSprite.TextBaseline.MIDDLE);
textConfig.setTextAnchor(TextSprite.TextAnchor.MIDDLE);
textConfig.setFontSize(18);
textConfig.setZIndex(15);
SeriesLabelConfig<String> labelConfig = new SeriesLabelConfig<String>();
labelConfig.setSpriteConfig(textConfig);
labelConfig.setLabelPosition(Series.LabelPosition.START);
labelConfig.setValueProvider(new ToStringValueProvider<String>(), new StringLabelProvider<String>());
series.setLabelConfig(labelConfig);
series.setDonut(35);
series.setHighlighting(true);
series.setLegendValueProvider(new ToStringValueProvider<String>(), new StringLabelProvider<String>());
qualityMetricsChart.addSeries(series);
addColorToChart(series, "slice1", "#94AE0A");
addColorToChart(series, "slice2", "#115FA6");
addColorToChart(series, "slice3", "#A61120");
addColorToChart(series, "slice4", "#FF8809");
final Legend<String> legend = new Legend<String>();
legend.setItemHighlighting(true);
qualityMetricsChart.setLegend(legend);
BorderLayoutContainer c = new BorderLayoutContainer();
c.setCenterWidget(qualityMetricsChart);
Viewport port = new Viewport();
port.setWidget(qualityMetricsChart);
return port;
}
private void addColorToChart(PieSeries<String> series, String name, String color) {
Gradient gradient = new Gradient(name, 45);
gradient.addStop(new Stop(0, new RGB(color)));
Chart<String> chart = series.getChart();
chart.addGradient(gradient);
series.addColor(gradient);
}
@Override
public void onModuleLoad() {
RootPanel.get().add(asWidget());
}
}