package org.geogebra.web.web.gui.util; import org.geogebra.web.html5.awt.GGraphics2DW; import org.geogebra.web.html5.main.AppW; import com.google.gwt.canvas.client.Canvas; import com.google.gwt.user.client.ui.Composite; /** * Widget to show line with thickness and style. * * @author Laszlo Gal * */ public abstract class StylePreview extends Composite { /** The value canvas next to the slider */ private Canvas canvas; protected GGraphics2DW g2; private int marginX = 0; private int marginY; protected AppW app; public StylePreview(AppW app, int width, int height) { setCanvas(Canvas.createIfSupported()); getCanvas().setCoordinateSpaceWidth(width); getCanvas().setCoordinateSpaceHeight(height); initWidget(getCanvas()); this.app = app; g2 = new GGraphics2DW(getCanvas()); createPreviewGeo(); setMarginY(height / 2 - 1); } /** * Creates a geo used for preview only. */ protected abstract void createPreviewGeo(); /** * Clears the preview. */ public void clear() { g2.clearRect(0, 0, getOffsetWidth(), getOffsetHeight()); } public Canvas getCanvas() { return canvas; } public void setCanvas(Canvas canvas) { this.canvas = canvas; } public int getMarginX() { return marginX; } public void setMarginX(int marginX) { this.marginX = marginX; } public int getMarginY() { return marginY; } public void setMarginY(int marginY) { this.marginY = marginY; } }