package com.googlecode.gchart.gcharttestapp.client; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.MultiWordSuggestOracle; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.SuggestBox; import com.googlecode.gchart.client.GChart; import com.googlecode.gchart.client.HoverUpdateable; /** * This test uses a HoverUpdateable SuggestBox * that lets the user change the color and symbol type of * the curve. * */ public class TestGChart40 extends GChart { class HoverUpdateableSuggestBox extends Composite implements HoverUpdateable { MultiWordSuggestOracle oracle = new MultiWordSuggestOracle(); MultiWordSuggestOracle emptyOracle = new MultiWordSuggestOracle(); SuggestBox suggestBox = new SuggestBox(oracle); SimplePanel panel = new SimplePanel(); HoverUpdateableSuggestBox() { panel.add(suggestBox); initWidget(panel); panel.setPixelSize(175,30); DOM.setStyleAttribute(panel.getElement(),"border","1px solid black"); oracle.add("color/size: red 10 pixels"); oracle.add("color/size: green 10 pixels"); oracle.add("color/size: blue 10 pixels"); oracle.add("color/size: red 20 pixels"); oracle.add("color/size: green 20 pixels"); oracle.add("color/size: blue 20 pixels"); oracle.add("color/size: red 40 pixels"); oracle.add("color/size: green 40 pixels"); oracle.add("color/size: blue 40 pixels"); // DOM.setStyleAttribute(getElement(), // "backgroundColor", "EEE"); // DOM.setStyleAttribute(getElement(), // "padding", "3px"); // DOM.setStyleAttribute(getElement(), // "border", "2px solid black"); } public SuggestBox getSuggestBox() {return suggestBox;} public void hoverUpdate(GChart.Curve.Point p) { suggestBox.setText("color/size: " + p.getParent().getSymbol().getBackgroundColor() + " " + p.getParent().getSymbol().getWidth() + " pixels"); } public void hoverCleanup(GChart.Curve.Point p) { } } TestGChart40() { final int N_CURVES = 2; setChartSize(200, 200); setBorderStyle("none"); for (int iCurve = 0; iCurve < N_CURVES; iCurve++) { addCurve(); HoverUpdateableSuggestBox hoverWidget = new HoverUpdateableSuggestBox(); hoverWidget.getSuggestBox().addValueChangeHandler(new ValueChangeHandler() { public void onValueChange(ValueChangeEvent event) { String s = event.getValue(); String[] part = s.split(" "); String color = part[1]; int pixels = Integer.parseInt(part[2]); getTouchedCurve().getSymbol().setBackgroundColor(color); getTouchedCurve().getSymbol().setBorderColor(color); getTouchedCurve().getSymbol().setHeight(pixels); getTouchedCurve().getSymbol().setWidth(pixels); update(); } }); getCurve().getSymbol().setHoverWidget(hoverWidget); getCurve().getSymbol().setHoverLocation(AnnotationLocation.CENTER); getCurve().getSymbol().setHoverSelectionBorderWidth(-3); // initialize to "red 10 pixels" and "blue 20 pixels" getCurve().getSymbol().setHeight(10+iCurve*10); getCurve().getSymbol().setWidth(10+iCurve*10); getCurve().getSymbol().setBorderColor(iCurve==0?"red":"blue"); getCurve().getSymbol().setBackgroundColor(iCurve==0?"red":"blue"); getCurve().getSymbol().setBorderStyle("solid"); for (int iPoint = 0; iPoint < 10; iPoint++) getCurve().addPoint(iPoint, (1+iCurve)*iPoint); } getXAxis().setHasGridlines(true); getYAxis().setHasGridlines(true); setChartFootnotes( "Check: hover over suggest box changes color/size as indicated;
" + "Default text in suggest box reflects curve's color/size."); } }