/* * This file is part of LaTeXDraw. * Copyright (c) 2005-2017 Arnaud BLOUIN * LaTeXDraw is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later version. * LaTeXDraw is distributed without any warranty; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. */ package net.sf.latexdraw.instruments; import net.sf.latexdraw.models.ShapeFactory; import net.sf.latexdraw.models.interfaces.shape.ArcStyle; import net.sf.latexdraw.models.interfaces.shape.IArc; import net.sf.latexdraw.models.interfaces.shape.IAxes; import net.sf.latexdraw.models.interfaces.shape.IBezierCurve; import net.sf.latexdraw.models.interfaces.shape.ICircle; import net.sf.latexdraw.models.interfaces.shape.ICircleArc; import net.sf.latexdraw.models.interfaces.shape.IDot; import net.sf.latexdraw.models.interfaces.shape.IEllipse; import net.sf.latexdraw.models.interfaces.shape.IFreehand; import net.sf.latexdraw.models.interfaces.shape.IGrid; import net.sf.latexdraw.models.interfaces.shape.IPicture; import net.sf.latexdraw.models.interfaces.shape.IPlot; import net.sf.latexdraw.models.interfaces.shape.IPolygon; import net.sf.latexdraw.models.interfaces.shape.IPolyline; import net.sf.latexdraw.models.interfaces.shape.IRectangle; import net.sf.latexdraw.models.interfaces.shape.IRhombus; import net.sf.latexdraw.models.interfaces.shape.IShape; import net.sf.latexdraw.models.interfaces.shape.ISquare; import net.sf.latexdraw.models.interfaces.shape.IText; import net.sf.latexdraw.models.interfaces.shape.ITriangle; /** * Defines the choices of edition of the canvas. * @author Arnaud BLOUIN */ public enum EditionChoice { RECT { @Override public IRectangle createShapeInstance() { return ShapeFactory.INST.createRectangle(); } }, DOT { @Override public IDot createShapeInstance() { return ShapeFactory.INST.createDot(ShapeFactory.INST.createPoint()); } }, SQUARE { @Override public ISquare createShapeInstance() { return ShapeFactory.INST.createSquare(); } }, RHOMBUS { @Override public IRhombus createShapeInstance() { return ShapeFactory.INST.createRhombus(); } }, FREE_HAND { @Override public IFreehand createShapeInstance() { return ShapeFactory.INST.createFreeHand(); } }, TRIANGLE { @Override public ITriangle createShapeInstance() { return ShapeFactory.INST.createTriangle(); } }, LINES { @Override public IPolyline createShapeInstance() { return ShapeFactory.INST.createPolyline(); } }, CIRCLE { @Override public ICircle createShapeInstance() { return ShapeFactory.INST.createCircle(); } }, GRID { @Override public IGrid createShapeInstance() { return ShapeFactory.INST.createGrid(ShapeFactory.INST.createPoint()); } }, AXES { @Override public IAxes createShapeInstance() { return ShapeFactory.INST.createAxes(ShapeFactory.INST.createPoint()); } }, ELLIPSE { @Override public IEllipse createShapeInstance() { return ShapeFactory.INST.createEllipse(); } }, POLYGON { @Override public IPolygon createShapeInstance() { return ShapeFactory.INST.createPolygon(); } }, WEDGE { @Override public IArc createShapeInstance() { final IArc shape = ShapeFactory.INST.createCircleArc(); shape.setArcStyle(ArcStyle.WEDGE); return shape; } }, CIRCLE_ARC { @Override public ICircleArc createShapeInstance() { final ICircleArc shape = ShapeFactory.INST.createCircleArc(); shape.setArcStyle(ArcStyle.ARC); return shape; } }, CHORD { @Override public IArc createShapeInstance() { final IArc shape = ShapeFactory.INST.createCircleArc(); shape.setArcStyle(ArcStyle.CHORD); return shape; } }, BEZIER_CURVE { @Override public IBezierCurve createShapeInstance() { final IBezierCurve shape = ShapeFactory.INST.createBezierCurve(); shape.setIsClosed(false); return shape; } }, BEZIER_CURVE_CLOSED { @Override public IBezierCurve createShapeInstance() { final IBezierCurve shape = ShapeFactory.INST.createBezierCurve(); shape.setIsClosed(true); return shape; } }, TEXT { @Override public IText createShapeInstance() { return ShapeFactory.INST.createText(); } }, PICTURE { @Override public IPicture createShapeInstance() { return ShapeFactory.INST.createPicture(ShapeFactory.INST.createPoint()); } }, PLOT { @Override public IPlot createShapeInstance() { return ShapeFactory.INST.createPlot(ShapeFactory.INST.createPoint(), 1, 5, "x", false); } }; /** * @return A new shape instance corresponding to the editing choice. * @since 3.0 */ public abstract IShape createShapeInstance(); }