package com.googlecode.gwt.charts.showcase.client.controls;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.googlecode.gwt.charts.client.ChartLoader;
import com.googlecode.gwt.charts.client.ChartPackage;
import com.googlecode.gwt.charts.client.ChartType;
import com.googlecode.gwt.charts.client.ChartWrapper;
import com.googlecode.gwt.charts.client.ColumnType;
import com.googlecode.gwt.charts.client.DataTable;
import com.googlecode.gwt.charts.client.controls.Dashboard;
import com.googlecode.gwt.charts.client.controls.filter.CategoryFilter;
import com.googlecode.gwt.charts.client.controls.filter.CategoryFilterOptions;
import com.googlecode.gwt.charts.client.controls.filter.CategoryFilterState;
import com.googlecode.gwt.charts.client.controls.filter.CategoryFilterUi;
import com.googlecode.gwt.charts.client.gauge.GaugeOptions;
import com.googlecode.gwt.charts.client.options.SelectedValuesLayout;
public class CategoryFilterExample extends DockLayoutPanel {
private Dashboard dashboard;
private ChartWrapper<GaugeOptions> gaugeWrapper;
private CategoryFilter categoryFilter;
public CategoryFilterExample() {
super(Unit.PX);
initialize();
}
private void initialize() {
ChartLoader chartLoader = new ChartLoader(ChartPackage.CONTROLS);
chartLoader.loadApi(new Runnable() {
@Override
public void run() {
addNorth(getDashboardWidget(), 0);
addWest(getCategoryFilter(), 200);
add(getGaugeWrapper());
draw();
}
});
}
private Dashboard getDashboardWidget() {
if (dashboard == null) {
dashboard = new Dashboard();
}
return dashboard;
}
private ChartWrapper<GaugeOptions> getGaugeWrapper() {
if (gaugeWrapper == null) {
gaugeWrapper = new ChartWrapper<GaugeOptions>();
gaugeWrapper.setChartType(ChartType.GAUGE);
}
return gaugeWrapper;
}
private CategoryFilter getCategoryFilter() {
if (categoryFilter == null) {
categoryFilter = new CategoryFilter();
}
return categoryFilter;
}
private void draw() {
// Set control options
CategoryFilterOptions categoryFilterOptions = CategoryFilterOptions.create();
categoryFilterOptions.setFilterColumnIndex(0);
CategoryFilterUi categoryFilterUi = CategoryFilterUi.create();
categoryFilterUi.setAllowMultiple(true);
categoryFilterUi.setAllowTyping(false);
categoryFilterUi.setSelectedValuesLayout(SelectedValuesLayout.BELOW_STACKED);
categoryFilterOptions.setUi(categoryFilterUi);
categoryFilter.setOptions(categoryFilterOptions);
CategoryFilterState categoryFilterState = CategoryFilterState.create();
categoryFilterState.setSelectedValues("CPU", "Memory");
categoryFilter.setState(categoryFilterState);
// Set chart options
GaugeOptions gaugeOptions = GaugeOptions.create();
gaugeWrapper.setOptions(gaugeOptions);
// Prepare the data
DataTable dataTable = DataTable.create();
dataTable.addColumn(ColumnType.STRING, "Metric");
dataTable.addColumn(ColumnType.NUMBER, "Value");
dataTable.addRow("CPU" , 12);
dataTable.addRow("Memory", 20);
dataTable.addRow("Disk", 7);
dataTable.addRow("Network", 54);
// Draw the chart
dashboard.bind(categoryFilter, gaugeWrapper);
dashboard.draw(dataTable);
}
}