diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 29eb6507..1137f320 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -3290,14 +3290,6 @@ IMPROVEMENT macOS: two finger click shows the popup menu without deselecting a selected component - - IMPROVEMENT - Apply context menu rotation and mirroring to Trimmer potentiometers - - - IMPROVEMENT - Apply context menu rotation and mirroring to SMD components - IMPROVEMENT Do not allow for components like traces, jumpers and wires to be reduced to nothing by dragging connected components @@ -3305,7 +3297,19 @@ IMPROVEMENT In cases when there's already a component in the selection that is reduced to nothing, allow moving the selection - + + + IMPROVEMENT + Apply context menu rotation and mirroring to Trimmer potentiometers + + + IMPROVEMENT + Apply context menu rotation and mirroring to SMD components + + + IMPROVEMENT + When rotating Vero and Tri-Pad boards, change the orientation of strips to match the rotation angle + https://github.com/bancika/diy-layout-creator/releases diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 6fea02d4..37e1ac83 100644 Binary files a/diylc/diylc-library/lib/diylc-core.jar and b/diylc/diylc-library/lib/diylc-core.jar differ diff --git a/diylc/diylc-library/src/org/diylc/components/boards/AbstractVeroBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/AbstractVeroBoard.java new file mode 100644 index 00000000..46c0bd54 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/boards/AbstractVeroBoard.java @@ -0,0 +1,52 @@ +package org.diylc.components.boards; + +import java.awt.Color; + +import org.diylc.common.OrientationHV; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.annotations.PositiveNonZeroMeasureValidator; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; + +public abstract class AbstractVeroBoard extends AbstractBoard { + + private static final long serialVersionUID = 1L; + + public static Color BORDER_COLOR = BOARD_COLOR.darker(); + + public static Size SPACING = new Size(0.1d, SizeUnit.in); + public static Size STRIP_SIZE = new Size(0.07d, SizeUnit.in); + public static Size HOLE_SIZE = new Size(0.7d, SizeUnit.mm); + + // strip + protected Size spacing = SPACING; + protected Color stripColor = COPPER_COLOR; + protected OrientationHV orientation = OrientationHV.HORIZONTAL; + + @EditableProperty(name = "Strip Color") + public Color getStripColor() { + return stripColor; + } + + public void setStripColor(Color padColor) { + this.stripColor = padColor; + } + + @EditableProperty(validatorClass = PositiveNonZeroMeasureValidator.class) + public Size getSpacing() { + return spacing; + } + + public void setSpacing(Size spacing) { + this.spacing = spacing; + } + + @EditableProperty + public OrientationHV getOrientation() { + return orientation; + } + + public void setOrientation(OrientationHV orientation) { + this.orientation = orientation; + } +} diff --git a/diylc/diylc-library/src/org/diylc/components/boards/TriPadBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/TriPadBoard.java index a95ae7e4..79840488 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/TriPadBoard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/TriPadBoard.java @@ -22,14 +22,13 @@ package org.diylc.components.boards; import java.awt.AlphaComposite; -import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.Point2D; import org.diylc.common.OrientationHV; -import org.diylc.common.SimpleComponentTransformer; +import org.diylc.components.transform.VeroBoardTransformer; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; @@ -37,30 +36,17 @@ import org.diylc.core.Project; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.annotations.KeywordPolicy; -import org.diylc.core.annotations.PositiveNonZeroMeasureValidator; -import org.diylc.core.measures.Size; -import org.diylc.core.measures.SizeUnit; import org.diylc.utils.Constants; @ComponentDescriptor(name = "TriPad Board", category = "Boards", author = "Hauke Juhls", zOrder = IDIYComponent.BOARD, instanceNamePrefix = "Board", description = "Perforated FR4 board with copper strips connecting 3 holes in a row (aka TriPad Board)", - keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, transformer = SimpleComponentTransformer.class, enableCache = true) -public class TriPadBoard extends AbstractBoard { + keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, transformer = VeroBoardTransformer.class, enableCache = true) +public class TriPadBoard extends AbstractVeroBoard { private static final long serialVersionUID = 1L; - public static Color BORDER_COLOR = BOARD_COLOR.darker(); - - public static Size SPACING = new Size(0.1d, SizeUnit.in); - public static Size STRIP_SIZE = new Size(0.07d, SizeUnit.in); - public static Size HOLE_SIZE = new Size(0.7d, SizeUnit.mm); - protected int stripSpan = 3; // determines how many holes are covered by a - // strip - protected Size spacing = SPACING; - protected Color stripColor = COPPER_COLOR; - protected OrientationHV orientation = OrientationHV.HORIZONTAL; @Override public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, @@ -166,33 +152,6 @@ public class TriPadBoard extends AbstractBoard { } } - @EditableProperty(name = "Strip Color") - public Color getStripColor() { - return stripColor; - } - - public void setStripColor(Color padColor) { - this.stripColor = padColor; - } - - @EditableProperty(validatorClass = PositiveNonZeroMeasureValidator.class) - public Size getSpacing() { - return spacing; - } - - public void setSpacing(Size spacing) { - this.spacing = spacing; - } - - @EditableProperty - public OrientationHV getOrientation() { - return orientation; - } - - public void setOrientation(OrientationHV orientation) { - this.orientation = orientation; - } - @Override public void drawIcon(Graphics2D g2d, int width, int height) { g2d.setColor(BOARD_COLOR); diff --git a/diylc/diylc-library/src/org/diylc/components/boards/VeroBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/VeroBoard.java index acfc5127..d4067307 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/VeroBoard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/VeroBoard.java @@ -22,46 +22,31 @@ package org.diylc.components.boards; import java.awt.AlphaComposite; -import java.awt.Color; import java.awt.Composite; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.Point2D; import org.diylc.common.OrientationHV; -import org.diylc.common.SimpleComponentTransformer; +import org.diylc.components.transform.VeroBoardTransformer; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; import org.diylc.core.Project; import org.diylc.core.annotations.BomPolicy; import org.diylc.core.annotations.ComponentDescriptor; -import org.diylc.core.annotations.EditableProperty; import org.diylc.core.annotations.KeywordPolicy; -import org.diylc.core.annotations.PositiveNonZeroMeasureValidator; -import org.diylc.core.measures.Size; -import org.diylc.core.measures.SizeUnit; import org.diylc.utils.Constants; @ComponentDescriptor(name = "Vero Board", category = "Boards", author = "Branislav Stojkovic", zOrder = IDIYComponent.BOARD, instanceNamePrefix = "Board", description = "Perforated FR4 board with copper strips connecting all holes in a row", bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false, keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, - transformer = SimpleComponentTransformer.class, enableCache = true) -public class VeroBoard extends AbstractBoard { + transformer = VeroBoardTransformer.class, enableCache = true) +public class VeroBoard extends AbstractVeroBoard { private static final long serialVersionUID = 1L; - public static Color BORDER_COLOR = BOARD_COLOR.darker(); - - public static Size SPACING = new Size(0.1d, SizeUnit.in); - public static Size STRIP_SIZE = new Size(0.07d, SizeUnit.in); - public static Size HOLE_SIZE = new Size(0.7d, SizeUnit.mm); - - protected Size spacing = SPACING; - protected Color stripColor = COPPER_COLOR; - protected OrientationHV orientation = OrientationHV.HORIZONTAL; - @Override public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, IDrawingObserver drawingObserver) { @@ -126,32 +111,7 @@ public class VeroBoard extends AbstractBoard { } } - @EditableProperty(name = "Strip Color") - public Color getStripColor() { - return stripColor; - } - - public void setStripColor(Color padColor) { - this.stripColor = padColor; - } - - @EditableProperty(validatorClass = PositiveNonZeroMeasureValidator.class) - public Size getSpacing() { - return spacing; - } - - public void setSpacing(Size spacing) { - this.spacing = spacing; - } - - @EditableProperty - public OrientationHV getOrientation() { - return orientation; - } - - public void setOrientation(OrientationHV orientation) { - this.orientation = orientation; - } + @Override public String getControlPointNodeName(int index) { diff --git a/diylc/diylc-library/src/org/diylc/components/transform/VeroBoardTransformer.java b/diylc/diylc-library/src/org/diylc/components/transform/VeroBoardTransformer.java new file mode 100644 index 00000000..60613986 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/transform/VeroBoardTransformer.java @@ -0,0 +1,44 @@ +/* + + DIY Layout Creator (DIYLC). + Copyright (c) 2009-2018 held jointly by the individual authors. + + This file is part of DIYLC. + + DIYLC 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 3 of the License, or + (at your option) any later version. + + DIYLC is distributed in the hope that it will be useful, + but 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. + + You should have received a copy of the GNU General Public License + along with DIYLC. If not, see . + +*/ +package org.diylc.components.transform; + +import java.awt.geom.Point2D; + +import org.diylc.common.OrientationHV; +import org.diylc.common.SimpleComponentTransformer; +import org.diylc.components.boards.AbstractVeroBoard; +import org.diylc.core.IDIYComponent; + +public class VeroBoardTransformer extends SimpleComponentTransformer { + + @Override + public void rotate(IDIYComponent component, Point2D center, int direction) { + super.rotate(component, center, direction); + + AbstractVeroBoard board = (AbstractVeroBoard)component; + OrientationHV orientation = board.getOrientation(); + if (orientation == OrientationHV.HORIZONTAL) + board.setOrientation(OrientationHV.VERTICAL); + else + board.setOrientation(OrientationHV.HORIZONTAL); + } +}