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;
}
}