package de.swm.mobile.kitchensink.client.showcase.panels; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.Widget; import de.swm.commons.mobile.client.widgets.HeaderPanel; import de.swm.commons.mobile.client.widgets.PaintableCanvas; import de.swm.mobile.kitchensink.client.Application; import de.swm.mobile.kitchensink.client.base.ShowcaseDetailPage; import de.swm.mobile.kitchensink.client.theme.icon.IconResources; import static de.swm.mobile.kitchensink.client.ShowcaseAnnotations.ShowcaseSource; import static de.swm.mobile.kitchensink.client.ShowcaseAnnotations.ShowcaseUiXML; @ShowcaseSource @ShowcaseUiXML({"PaintableCanvasPage.ui.xml"}) public class PaintableCanvasPage extends ShowcaseDetailPage { // canvas size, in px static final int height = 400; static final int width = 400; @UiField HeaderPanel header; @UiField HTMLPanel htmlPanel; @UiField HTMLPanel canvasHTML; @UiField ListBox dropdownColor; @UiField ListBox dropdownLineWidth; private PaintableCanvas canvas; private static PaintableCanvasPageUiBinder uiBinder = GWT .create(PaintableCanvasPageUiBinder.class); interface PaintableCanvasPageUiBinder extends UiBinder<Widget, PaintableCanvasPage> { } public PaintableCanvasPage() { super(PaintableCanvasPage.class); initWidget(uiBinder.createAndBindUi(this)); Application.addDefaultBackButtonHanlder(header); canvasHTML.add(initCanvas()); populateLineWidthDropDown(); populateColorDropDown(); IconResources resources = GWT.create(IconResources.class); canvas.setImage(resources.bus()); } private void populateLineWidthDropDown() { for (int i = 1; i <= 20; i++) { dropdownLineWidth.addItem("" + i); } dropdownLineWidth.setValue(PaintableCanvas.STANDARD_LINE_WIDTH, "" + PaintableCanvas.STANDARD_LINE_WIDTH); dropdownLineWidth.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { canvas.setLineWidth(dropdownLineWidth.getSelectedIndex() + 1); } }); } private void populateColorDropDown() { dropdownColor.addItem("black"); dropdownColor.addItem("green"); dropdownColor.addItem("yellow"); dropdownColor.addItem("blue"); dropdownColor.addItem("pink"); dropdownColor.addItem("red"); dropdownColor.addItem("white"); dropdownColor.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { canvas.setColor(dropdownColor.getValue(dropdownColor.getSelectedIndex())); } }); } public Widget initCanvas() { canvas = new PaintableCanvas(height, width); return canvas; } @Override public String getName() { return "Paintable canvas page"; } @Override public HeaderPanel getHeaderPanel() { return header; } }