package edu.purdue.pivot.skwiki.client.vector; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyUpEvent; import com.google.gwt.event.dom.client.KeyUpHandler; import com.google.gwt.i18n.client.Constants; import com.google.gwt.user.client.ui.AbstractImagePrototype; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.ImageBundle; import com.google.gwt.user.client.ui.ToggleButton; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; public class VectorToolbar extends Composite { public interface Images extends ImageBundle { AbstractImagePrototype rectangle(); AbstractImagePrototype polygon(); AbstractImagePrototype circle(); AbstractImagePrototype line(); AbstractImagePrototype curve(); } public interface Strings extends Constants { String rectangle(); String polygon(); String circle(); String line(); String curve(); } private Images images = (Images) GWT.create(Images.class); private Strings strings = (Strings) GWT.create(Strings.class); private EventHandler handler = new EventHandler(); private VectorPanel vectorCanvas; private ToggleButton circle; private ToggleButton rectangle; private ToggleButton line; private ToggleButton polygon; private ToggleButton curve; public VectorToolbar(VectorPanel vectorCanvas) { VerticalPanel basePanel = new VerticalPanel(); initWidget(basePanel); this.vectorCanvas = vectorCanvas; basePanel.add(circle = createToggleButton(images.circle(), strings.circle())); basePanel.add(rectangle = createToggleButton(images.rectangle(), strings.rectangle())); basePanel.add(line = createToggleButton(images.line(), strings.line())); basePanel.add(polygon = createToggleButton(images.polygon(), strings.polygon())); basePanel.add(curve = createToggleButton(images.curve(), strings.curve())); } private class EventHandler implements ClickHandler, KeyUpHandler { @Override public void onClick(final ClickEvent event) { Widget sender = (Widget) event.getSource(); if (sender == circle) { vectorCanvas.addCircle(); } else if (sender == rectangle) { vectorCanvas.addRectangle(); } else if (sender == line) { vectorCanvas.addLine(); } else if (sender == polygon) { vectorCanvas.addPolygon(); } else if (sender == curve) { vectorCanvas.addCurve(); } } @Override public void onKeyUp(KeyUpEvent event) { } } private ToggleButton createToggleButton(final AbstractImagePrototype img, final String tip) { ToggleButton tb = new ToggleButton(img.createImage()); tb.addClickHandler(handler); tb.setTitle(tip); return tb; } }