// License: GPL. For details, see LICENSE file.
package org.openstreetmap.beboj.client.gui;
import com.google.gwt.canvas.client.Canvas;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Widget;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import org.openstreetmap.josm.beboj.CanvasPresenter;
import org.openstreetmap.josm.beboj.CanvasView;
import org.openstreetmap.josm.gui.MapFrame;
public class MainUI extends Composite {
interface Binder extends UiBinder<Widget, MainUI> {}
private static Binder uiBinder = GWT.create(Binder.class);
@UiField
public MainMenu menu;
@UiField
public Toolbar toolbar;
@UiField
public LeftButtonRow leftButtons;
@UiField
public HTMLPanel canvas_wrapper;
@UiField
public DivElement mapview_div;
@UiField
public HTMLPanel attribution;
@UiField
public HTMLPanel layers;
@UiField(provided=true)
public Canvas canv;
public CanvasView canvView;
public MainUI() {
canv = Canvas.createIfSupported();
canv.getElement().setId("canvas");
canv.setCoordinateSpaceHeight(500);
canv.setCoordinateSpaceWidth(600);
initWidget(uiBinder.createAndBindUi(this));
canvas_wrapper.getElement().setId("canvas-wrapper");
attribution.getElement().setId("attribution");
layers.getElement().setId("layers");
layers.addStyleName("olControlLayerSwitcher");
canvView = new CanvasViewImpl(canv);
mapview_div.getStyle().setTop(62, Unit.PX);
}
static class CanvasViewImpl implements CanvasView {
protected CanvasGraphics2D g;
protected Canvas canv;
protected CanvasPresenter presenter;
public CanvasViewImpl(Canvas canv) {
this.canv = canv;
}
@Override
public int getWidth() {
return canv.getCoordinateSpaceWidth();
}
@Override
public int getHeight() {
return canv.getCoordinateSpaceHeight();
}
@Override
public Rectangle getBounds() {
return new Rectangle(0, 0, getWidth(), getHeight());
}
@Override
public void repaint() {
presenter.repaint();
}
@Override
public void setPresenter(CanvasPresenter presenter) {
this.presenter = presenter;
}
@Override
public Graphics2D getGraphics2D() {
if (g == null) {
g = new CanvasGraphics2D(canv);
}
return g;
}
}
public void setMapModesController(MapFrame mapModesController) {
leftButtons.mapModesController = mapModesController;
}
}