package com.googlecode.gwt.charts.showcase.client;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RequiresResize;
import com.google.gwt.user.client.ui.SplitLayoutPanel;
import com.google.gwt.user.client.ui.Widget;
import com.googlecode.gwt.charts.showcase.client.controls.CategoryFilterExample;
import com.googlecode.gwt.charts.showcase.client.controls.ChartRangeFilterExample;
import com.googlecode.gwt.charts.showcase.client.controls.DateRangeFilterExample;
import com.googlecode.gwt.charts.showcase.client.controls.NumberRangeFilterExample;
import com.googlecode.gwt.charts.showcase.client.controls.StringFilterExample;
import com.googlecode.gwt.charts.showcase.client.corechart.AreaChartExample;
import com.googlecode.gwt.charts.showcase.client.corechart.BarChartExample;
import com.googlecode.gwt.charts.showcase.client.corechart.BubbleChartExample;
import com.googlecode.gwt.charts.showcase.client.corechart.CandlestickChartExample;
import com.googlecode.gwt.charts.showcase.client.corechart.ColumnChartExample;
import com.googlecode.gwt.charts.showcase.client.corechart.ComboChartExample;
import com.googlecode.gwt.charts.showcase.client.corechart.HistogramExample;
import com.googlecode.gwt.charts.showcase.client.corechart.LineChartExample;
import com.googlecode.gwt.charts.showcase.client.corechart.PieChartExample;
import com.googlecode.gwt.charts.showcase.client.corechart.ScatterChartExample;
import com.googlecode.gwt.charts.showcase.client.corechart.SteppedAreaChartExample;
import com.googlecode.gwt.charts.showcase.client.diffchart.DiffBarChartExample;
import com.googlecode.gwt.charts.showcase.client.diffchart.DiffColumnChartExample;
import com.googlecode.gwt.charts.showcase.client.diffchart.DiffPieChartExample;
import com.googlecode.gwt.charts.showcase.client.diffchart.DiffScatterChartExample;
import com.googlecode.gwt.charts.showcase.client.others.AnnotationChartExample;
import com.googlecode.gwt.charts.showcase.client.others.CalendarExample;
import com.googlecode.gwt.charts.showcase.client.others.GaugeExample;
import com.googlecode.gwt.charts.showcase.client.others.GeoChartExample;
import com.googlecode.gwt.charts.showcase.client.others.IntervalExample;
import com.googlecode.gwt.charts.showcase.client.others.MapExample;
import com.googlecode.gwt.charts.showcase.client.others.OrgChartExample;
import com.googlecode.gwt.charts.showcase.client.others.SankeyExample;
import com.googlecode.gwt.charts.showcase.client.others.TableExample;
import com.googlecode.gwt.charts.showcase.client.others.TimelineExample;
import com.googlecode.gwt.charts.showcase.client.others.TreeMapExample;
public class AppMainPanel extends Composite implements ValueChangeHandler<String>, RequiresResize {
private SplitLayoutPanel splitLayoutPanel;
private DockLayoutPanel dockLayoutPanel;
private DockLayoutPanel headerPanel;
private SideMenu sideMenu;
private ExampleWidget simpleLayoutPanel;
public AppMainPanel() {
super();
initialize();
}
private void initialize() {
initWidget(getDockLayoutPanel());
}
private DockLayoutPanel getDockLayoutPanel() {
if (dockLayoutPanel == null) {
dockLayoutPanel = new DockLayoutPanel(Unit.PX);
dockLayoutPanel.addNorth(getHeaderPanel(), 70);
dockLayoutPanel.add(getSplitLayoutPanel());
}
return dockLayoutPanel;
}
private SplitLayoutPanel getSplitLayoutPanel() {
if (splitLayoutPanel == null) {
splitLayoutPanel = new SplitLayoutPanel(6);
splitLayoutPanel.addWest(getSideMenu(), 150);
splitLayoutPanel.add(getSimpleLayoutPanel());
}
return splitLayoutPanel;
}
private DockLayoutPanel getHeaderPanel() {
if (headerPanel == null) {
headerPanel = new DockLayoutPanel(Unit.PX);
headerPanel.addWest(new Image(Resources.INSTANCE.headerLogo()), 70);
Label label = new Label("GWT Charts - Unofficial Google Chart Tools API for Google Web Toolkit");
label.setStyleName(Resources.INSTANCE.css().headerText());
headerPanel.add(label);
}
return headerPanel;
}
private ExampleWidget getSimpleLayoutPanel() {
if (simpleLayoutPanel == null) {
simpleLayoutPanel = new ExampleWidget();
}
return simpleLayoutPanel;
}
private SideMenu getSideMenu() {
if (sideMenu == null) {
sideMenu = new SideMenu();
sideMenu.add("Charts");
sideMenu.add("Annotation", "annotation");
sideMenu.add("Area", "area");
sideMenu.add("Bar", "bar");
sideMenu.add("Bubble", "bubble");
sideMenu.add("Calendar", "calendar");
sideMenu.add("Candlestick", "candlestick");
sideMenu.add("Column", "column");
sideMenu.add("Combo", "combo");
sideMenu.add("Gauge", "gauge");
sideMenu.add("Geo Chart", "geochart");
sideMenu.add("Histogram", "histogram");
sideMenu.add("Line", "line");
sideMenu.add("Map", "map");
sideMenu.add("Org Chart", "orgchart");
sideMenu.add("Pie", "pie");
sideMenu.add("Sankey Diagram", "sankey");
sideMenu.add("Scatter", "scatter");
sideMenu.add("Stepped Area", "steppedarea");
sideMenu.add("Table", "table");
sideMenu.add("Timeline", "timeline");
sideMenu.add("Tree Map", "treemap");
sideMenu.add("Diff Charts");
sideMenu.add("Bar", "diffbar");
sideMenu.add("Column", "diffcolumn");
sideMenu.add("Pie", "diffpie");
sideMenu.add("Scatter", "diffscatter");
sideMenu.add("Other Charts");
sideMenu.add("Interval", "interval");
sideMenu.add("Controls");
sideMenu.add("Category Filter", "categoryfilter");
sideMenu.add("Chart Range Filter", "chartrangefilter");
sideMenu.add("Date Range Filter", "daterangefilter");
sideMenu.add("Number Range Filter", "numberrangefilter");
sideMenu.add("String Filter", "stringfilter");
sideMenu.addSelectionHandler(new SelectionHandler<String>() {
@Override
public void onSelection(SelectionEvent<String> event) {
History.newItem(event.getSelectedItem(), true);
}
});
}
return sideMenu;
}
private void fireSelectionChanged(String key) {
Widget widget = null;
if (key.equals("area")) {
widget = new AreaChartExample();
} else if (key.equals("bar")) {
widget = new BarChartExample();
} else if (key.equals("bubble")) {
widget = new BubbleChartExample();
} else if (key.equals("candlestick")) {
widget = new CandlestickChartExample();
} else if (key.equals("column")) {
widget = new ColumnChartExample();
} else if (key.equals("combo")) {
widget = new ComboChartExample();
} else if (key.equals("histogram")) {
widget = new HistogramExample();
} else if (key.equals("line")) {
widget = new LineChartExample();
} else if (key.equals("pie")) {
widget = new PieChartExample();
} else if (key.equals("scatter")) {
widget = new ScatterChartExample();
} else if (key.equals("steppedarea")) {
widget = new SteppedAreaChartExample();
} else if (key.equals("diffbar")) {
widget = new DiffBarChartExample();
} else if (key.equals("diffcolumn")) {
widget = new DiffColumnChartExample();
} else if (key.equals("diffpie")) {
widget = new DiffPieChartExample();
} else if (key.equals("diffscatter")) {
widget = new DiffScatterChartExample();
} else if (key.equals("annotation")) {
widget = new AnnotationChartExample();
} else if (key.equals("calendar")) {
widget = new CalendarExample();
} else if (key.equals("gauge")) {
widget = new GaugeExample();
} else if (key.equals("geochart")) {
widget = new GeoChartExample();
} else if (key.equals("interval")) {
widget = new IntervalExample();
} else if (key.equals("map")) {
widget = new MapExample();
} else if (key.equals("orgchart")) {
widget = new OrgChartExample();
} else if (key.equals("sankey")) {
widget = new SankeyExample();
} else if (key.equals("table")) {
widget = new TableExample();
} else if (key.equals("timeline")) {
widget = new TimelineExample();
} else if (key.equals("treemap")) {
widget = new TreeMapExample();
} else if (key.equals("categoryfilter")) {
widget = new CategoryFilterExample();
} else if (key.equals("chartrangefilter")) {
widget = new ChartRangeFilterExample();
} else if (key.equals("daterangefilter")) {
widget = new DateRangeFilterExample();
} else if (key.equals("numberrangefilter")) {
widget = new NumberRangeFilterExample();
} else if (key.equals("stringfilter")) {
widget = new StringFilterExample();
}
simpleLayoutPanel.setSampleWidget(widget);
}
@Override
public void onResize() {
dockLayoutPanel.onResize();
}
@Override
public void onValueChange(ValueChangeEvent<String> event) {
sideMenu.setSelection(event.getValue(), false);
fireSelectionChanged(event.getValue());
}
}