package com.googlecode.gchart.gcharttestapp.client;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Grid;
import com.googlecode.gchart.client.GChart;
// Tests widget-based annotations and tick labels
public class TestGChart07a extends GChart {
TestGChart07a() {
super(9*50,9*50);
setChartTitle(GChartTestApp.getTitle(this));
setChartFootnotes(
"Check: Each relative button position consistent with its label and buttons disable when clicked, 2x2 Grid on x-axis"
);
AnnotationLocation[] locations = {
AnnotationLocation.CENTER,
AnnotationLocation.EAST,
AnnotationLocation.NORTH,
AnnotationLocation.NORTHEAST,
AnnotationLocation.NORTHWEST,
AnnotationLocation.SOUTH,
AnnotationLocation.SOUTHEAST,
AnnotationLocation.SOUTHWEST,
AnnotationLocation.WEST,
};
String[] locationNames = {
"Center____",
"East______",
"Northg____",
"Northeastg",
"Northwestg",
"South_____",
"Southeast_",
"Southwest_",
"West______",
};
addCurve();
getXAxis().setAxisMin(-1);
Grid g = new Grid(2,2);
g.setHTML(0, 0, "(0,0)");
g.setHTML(0, 1, "(0,1)");
g.setHTML(1, 0, "(1,0)");
g.setHTML(1, 1, "(1,1)");
getXAxis().addTick(0.0, g, GChart.NAI, GChart.NAI);
getYAxis().setAxisMin(-1);
Button b = new Button("y=0");
getYAxis().addTick(0.0, b);
b.addClickHandler(
new ClickHandler() {
public void onClick(ClickEvent event) {
((Button) event.getSource()).setEnabled(false);
}
}
);
getYAxis().setHasGridlines(false);
this.setGridColor("silver");
for (int i = 0; i < locations.length; i++) {
getCurve().addPoint(i,i);
getCurve().getPoint().setAnnotationLocation(locations[i]);
// text and widget methods are coupled, so exercise that:
if (i % 3 == 0) getCurve().getPoint().setAnnotationWidget(
new Button("Error!"));
if (i % 2 == 0) getCurve().getPoint().setAnnotationText("junk");
getCurve().getPoint(i).setAnnotationWidget(
new Button(locationNames[i]));
if (!(getCurve().getPoint(i).getAnnotationWidget()
instanceof Button))
throw new IllegalStateException(
"getAnnotationWidget test failed");
// disable button when clicked (show event handling works as expected)
((Button) getCurve().getPoint(i).getAnnotationWidget()).addClickHandler(
new ClickHandler() {
public void onClick(ClickEvent event) {
((Button) event.getSource()).setEnabled(false);
}
}
);
}
setLegendVisible(false);
}
}