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);
+ }
+}