/* * 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.actions; import net.sf.latexdraw.actions.shape.ShapeProperties; import net.sf.latexdraw.actions.shape.ShapePropertyAction; import net.sf.latexdraw.instruments.Pencil; import net.sf.latexdraw.models.interfaces.shape.ArcStyle; import net.sf.latexdraw.models.interfaces.shape.ArrowStyle; import net.sf.latexdraw.models.interfaces.shape.AxesStyle; import net.sf.latexdraw.models.interfaces.shape.BorderPos; import net.sf.latexdraw.models.interfaces.shape.Color; import net.sf.latexdraw.models.interfaces.shape.DotStyle; import net.sf.latexdraw.models.interfaces.shape.FillingStyle; import net.sf.latexdraw.models.interfaces.shape.FreeHandStyle; import net.sf.latexdraw.models.interfaces.shape.IPoint; import net.sf.latexdraw.models.interfaces.shape.LineStyle; import net.sf.latexdraw.models.interfaces.shape.PlotStyle; import net.sf.latexdraw.models.interfaces.shape.PlottingStyle; import net.sf.latexdraw.models.interfaces.shape.TextPosition; import net.sf.latexdraw.models.interfaces.shape.TicksStyle; /** * This action modifies a parameter of the pencil and updates its corresponding instrument. * @author Arnaud Blouin */ public class ModifyPencilParameter extends ShapePropertyAction { /** The pencil to modify. */ protected Pencil pencil; @Override public void flush() { super.flush(); pencil = null; } @Override public boolean canDo() { return super.canDo() && pencil!=null; } @Override protected boolean isPropertySupported() { return super.isPropertySupported() && property!=ShapeProperties.TEXT; } @Override protected void doActionBody() { // Modification of the pencil. applyValue(value); } /** * Defines the pencil to modify. * @param pen The pencil to modify. * @since 3.0 */ public void setPencil(final Pencil pen) { pencil = pen; } @Override protected void applyValue(final Object obj) { switch(property) { case BORDER_POS: pencil.getGroupParams().setBordersPosition((BorderPos) value); break; case COLOUR_DBLE_BORD: pencil.getGroupParams().setDbleBordCol((Color) value); break; case COLOUR_FILLING: pencil.getGroupParams().setFillingCol((Color) value); break; case COLOUR_GRADIENT_END: pencil.getGroupParams().setGradColEnd((Color) value); break; case COLOUR_GRADIENT_START: pencil.getGroupParams().setGradColStart((Color) value); break; case COLOUR_HATCHINGS: pencil.getGroupParams().setHatchingsCol((Color) value); break; case COLOUR_LINE: pencil.getGroupParams().setLineColour((Color) value); break; case SHADOW_COLOUR: pencil.getGroupParams().setShadowCol((Color) value); break; case DBLE_BORDERS: pencil.getGroupParams().setHasDbleBord((Boolean) value); break; case DOT_FILLING_COL: pencil.getGroupParams().setDotFillingCol((Color)value); break; case DOT_SIZE: pencil.getGroupParams().setDiametre((Double) value); break; case DOT_STYLE: pencil.getGroupParams().setDotStyle((DotStyle) value); break; case FILLING_STYLE: pencil.getGroupParams().setFillingStyle((FillingStyle) value); break; case LINE_STYLE: pencil.getGroupParams().setLineStyle((LineStyle) value); break; case LINE_THICKNESS: pencil.getGroupParams().setThickness((Double) value); break; case SHADOW: pencil.getGroupParams().setHasShadow((Boolean) value); break; case ROUND_CORNER_VALUE: pencil.getGroupParams().setLineArc((Double)value); break; case DBLE_BORDERS_SIZE: pencil.getGroupParams().setDbleBordSep((Double)value); break; case SHADOW_ANGLE: pencil.getGroupParams().setShadowAngle((Double)value); break; case SHADOW_SIZE: pencil.getGroupParams().setShadowSize((Double)value); break; case GRAD_ANGLE: pencil.getGroupParams().setGradAngle((Double)value); break; case GRAD_MID_POINT: pencil.getGroupParams().setGradMidPt((Double)value); break; case HATCHINGS_ANGLE: pencil.getGroupParams().setHatchingsAngle((Double)value); break; case HATCHINGS_SEP: pencil.getGroupParams().setHatchingsSep((Double)value); break; case HATCHINGS_WIDTH: pencil.getGroupParams().setHatchingsWidth((Double)value); break; case TEXT_POSITION: pencil.getGroupParams().setTextPosition((TextPosition)value); break; case ARROW1_STYLE: pencil.getGroupParams().setArrowStyle((ArrowStyle)value, 0); break; case ARROW2_STYLE: pencil.getGroupParams().setArrowStyle((ArrowStyle)value, -1); break; case TEXT: // The pencil does not set text values. break; case ARC_END_ANGLE : pencil.getGroupParams().setAngleEnd((Double)value); break; case ARC_START_ANGLE: pencil.getGroupParams().setAngleStart((Double)value); break; case ARC_STYLE : pencil.getGroupParams().setArcStyle((ArcStyle)value); break; case GRID_START: pencil.getGroupParams().setGridStart(((IPoint)value).getX(), ((IPoint)value).getY()); break; case GRID_END: pencil.getGroupParams().setGridEnd(((IPoint)value).getX(), ((IPoint)value).getY()); break; case GRID_LABEL_POSITION_Y: pencil.getGroupParams().setXLabelSouth((Boolean)value); break; case GRID_LABEL_POSITION_X: pencil.getGroupParams().setYLabelWest((Boolean)value); break; case ARROW_INSET: pencil.getGroupParams().setArrowInset((Double)value); break; case ARROW_LENGTH: pencil.getGroupParams().setArrowLength((Double)value); break; case ARROW_BRACKET_NUM: pencil.getGroupParams().setBracketNum((Double)value); break; case ARROW_DOT_SIZE_DIM: pencil.getGroupParams().setDotSizeDim((Double)value); break; case ARROW_DOT_SIZE_NUM: pencil.getGroupParams().setDotSizeNum((Double)value); break; case ARROW_R_BRACKET_NUM: pencil.getGroupParams().setRBracketNum((Double)value); break; case ARROW_SIZE_DIM: pencil.getGroupParams().setArrowSizeDim((Double)value); break; case ARROW_SIZE_NUM: pencil.getGroupParams().setArrowSizeNum((Double)value); break; case ARROW_T_BAR_SIZE_DIM: pencil.getGroupParams().setTBarSizeDim((Double)value); break; case ARROW_T_BAR_SIZE_NUM: pencil.getGroupParams().setTBarSizeNum((Double)value); break; case GRID_SIZE_LABEL: pencil.getGroupParams().setLabelsSize((Integer)value); break; case GRID_ORIGIN: pencil.getGroupParams().setOrigin(((IPoint)value).getX(), ((IPoint)value).getY()); break; case AXES_STYLE: pencil.getGroupParams().setAxesStyle((AxesStyle)value); break; case AXES_TICKS_STYLE: pencil.getGroupParams().setTicksStyle((TicksStyle)value); break; // case AXES_TICKS_SIZE: pencil.getGroupParams().setTicksSize((Double)value); break; case AXES_TICKS_SHOW: pencil.getGroupParams().setTicksDisplayed((PlottingStyle)value); break; case AXES_LABELS_INCR: pencil.getGroupParams().setIncrement((IPoint)value); break; case AXES_LABELS_SHOW: pencil.getGroupParams().setLabelsDisplayed((PlottingStyle)value); break; case AXES_SHOW_ORIGIN: pencil.getGroupParams().setShowOrigin((Boolean)value); break; case AXES_LABELS_DIST: pencil.getGroupParams().setDistLabels((IPoint)value); break; case GRID_LABELS_COLOUR: pencil.getGroupParams().setGridLabelsColour((Color)value); break; case GRID_SUBGRID_COLOUR: pencil.getGroupParams().setSubGridColour((Color)value); break; case GRID_WIDTH: pencil.getGroupParams().setGridWidth((Double)value); break; case GRID_SUBGRID_WIDTH: pencil.getGroupParams().setSubGridWidth((Double)value); break; case GRID_DOTS: pencil.getGroupParams().setGridDots((Integer)value); break; case GRID_SUBGRID_DOTS: pencil.getGroupParams().setSubGridDots((Integer)value); break; case GRID_SUBGRID_DIV: pencil.getGroupParams().setSubGridDiv((Integer)value); break; case FREEHAND_STYLE: pencil.getGroupParams().setType((FreeHandStyle)value); break; case FREEHAND_INTERVAL: pencil.getGroupParams().setInterval((Integer)value); break; case FREEHAND_OPEN: pencil.getGroupParams().setOpen((Boolean)value); break; case SHOW_POINTS: pencil.getGroupParams().setShowPts((Boolean)value); break; case PLOT_NB_PTS: pencil.getGroupParams().setNbPlottedPoints((Integer)value); break; case PLOT_MAX_X: pencil.getGroupParams().setPlotMaxX((Double)value); break; case PLOT_MIN_X: pencil.getGroupParams().setPlotMinX((Double)value); break; case X_SCALE: pencil.getGroupParams().setXScale((Double)value); break; case Y_SCALE: pencil.getGroupParams().setYScale((Double)value); break; case PLOT_EQ: pencil.getGroupParams().setPlotEquation((String)value); break; case PLOT_POLAR: pencil.getGroupParams().setPolar((Boolean)value); break; case PLOT_STYLE: pencil.getGroupParams().setPlotStyle((PlotStyle)value); break; } } }