diff --git a/diylc/diylc-core/src/org/diylc/common/SimpleComponentTransformer.java b/diylc/diylc-core/src/org/diylc/components/transform/SimpleComponentTransformer.java
similarity index 94%
rename from diylc/diylc-core/src/org/diylc/common/SimpleComponentTransformer.java
rename to diylc/diylc-core/src/org/diylc/components/transform/SimpleComponentTransformer.java
index 899b8871..01ea1507 100644
--- a/diylc/diylc-core/src/org/diylc/common/SimpleComponentTransformer.java
+++ b/diylc/diylc-core/src/org/diylc/components/transform/SimpleComponentTransformer.java
@@ -19,12 +19,13 @@
along with DIYLC. If not, see .
*/
-package org.diylc.common;
+package org.diylc.components.transform;
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
+import org.diylc.common.IComponentTransformer;
import org.diylc.core.IDIYComponent;
public class SimpleComponentTransformer implements IComponentTransformer {
diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml
index 1137f320..75545289 100644
--- a/diylc/diylc-core/src/org/diylc/presenter/update.xml
+++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml
@@ -3296,15 +3296,23 @@
IMPROVEMENT
- In cases when there's already a component in the selection that is reduced to nothing, allow moving the selection
+ In cases when there's already a component in the selection that is reduced to nothing, allow moving the selection to avoid getting stuck
IMPROVEMENT
- Apply context menu rotation and mirroring to Trimmer potentiometers
+ Apply context menu rotation and mirroring to Trimmer Potentiometer components
IMPROVEMENT
- Apply context menu rotation and mirroring to SMD components
+ Apply context menu rotation and mirroring to SMD Capacitor and Resistor components
+
+
+ IMPROVEMENT
+ Apply context menu rotation and mirroring to Tag Strip components
+
+
+ IMPROVEMENT
+ Apply context menu rotation to Breadboard components
IMPROVEMENT
diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar
index bd31d9e0..1274a110 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/BlankBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/BlankBoard.java
index 0e2b228c..671e9c6d 100644
--- a/diylc/diylc-library/src/org/diylc/components/boards/BlankBoard.java
+++ b/diylc/diylc-library/src/org/diylc/components/boards/BlankBoard.java
@@ -29,7 +29,7 @@ import java.awt.Shape;
import java.awt.geom.Point2D;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java b/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java
index aa6da041..72df4c32 100644
--- a/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java
+++ b/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java
@@ -37,6 +37,7 @@ import org.diylc.common.ObjectCache;
import org.diylc.common.Orientation;
import org.diylc.common.VerticalAlignment;
import org.diylc.components.AbstractComponent;
+import org.diylc.components.transform.BreadboardTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
@@ -52,7 +53,7 @@ import org.diylc.core.measures.SizeUnit;
@ComponentDescriptor(name = "Breadboard", category = "Boards", author = "Branislav Stojkovic",
description = "Prototyping solderless breadboard", instanceNamePrefix = "BB",
zOrder = IDIYComponent.BOARD, bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false,
- keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, enableCache = true)
+ keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, enableCache = true, transformer = BreadboardTransformer.class)
public class Breadboard extends AbstractComponent {
private static final long serialVersionUID = 1L;
diff --git a/diylc/diylc-library/src/org/diylc/components/boards/EyeletBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/EyeletBoard.java
index 28ebb486..150a5f72 100644
--- a/diylc/diylc-library/src/org/diylc/components/boards/EyeletBoard.java
+++ b/diylc/diylc-library/src/org/diylc/components/boards/EyeletBoard.java
@@ -27,7 +27,7 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Point2D;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/boards/MarshallPerfBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/MarshallPerfBoard.java
index 3404b146..9b69ebf3 100644
--- a/diylc/diylc-library/src/org/diylc/components/boards/MarshallPerfBoard.java
+++ b/diylc/diylc-library/src/org/diylc/components/boards/MarshallPerfBoard.java
@@ -27,7 +27,7 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Point2D;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/boards/PerfBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/PerfBoard.java
index 69805b7a..7908f93f 100644
--- a/diylc/diylc-library/src/org/diylc/components/boards/PerfBoard.java
+++ b/diylc/diylc-library/src/org/diylc/components/boards/PerfBoard.java
@@ -27,7 +27,7 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Point2D;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/chassis/ChassisPanel.java b/diylc/diylc-library/src/org/diylc/components/chassis/ChassisPanel.java
index a3d1a199..7a36e568 100644
--- a/diylc/diylc-library/src/org/diylc/components/chassis/ChassisPanel.java
+++ b/diylc/diylc-library/src/org/diylc/components/chassis/ChassisPanel.java
@@ -26,8 +26,8 @@ import java.awt.Composite;
import java.awt.Graphics2D;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.shapes.AbstractShape;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/chassis/EllipticalCutout.java b/diylc/diylc-library/src/org/diylc/components/chassis/EllipticalCutout.java
index 647185ac..340af317 100644
--- a/diylc/diylc-library/src/org/diylc/components/chassis/EllipticalCutout.java
+++ b/diylc/diylc-library/src/org/diylc/components/chassis/EllipticalCutout.java
@@ -22,8 +22,8 @@ import java.awt.Composite;
import java.awt.Graphics2D;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.shapes.AbstractShape;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java b/diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java
index 00f96c9c..2120aa0d 100644
--- a/diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java
+++ b/diylc/diylc-library/src/org/diylc/components/chassis/PolygonalCutout.java
@@ -25,8 +25,8 @@ import java.awt.geom.Point2D;
import java.util.Arrays;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.shapes.AbstractShape;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/chassis/RectangularCutout.java b/diylc/diylc-library/src/org/diylc/components/chassis/RectangularCutout.java
index fffd9e99..4177c398 100644
--- a/diylc/diylc-library/src/org/diylc/components/chassis/RectangularCutout.java
+++ b/diylc/diylc-library/src/org/diylc/components/chassis/RectangularCutout.java
@@ -22,8 +22,8 @@ import java.awt.Composite;
import java.awt.Graphics2D;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.shapes.AbstractShape;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/CopperTrace.java b/diylc/diylc-library/src/org/diylc/components/connectivity/CopperTrace.java
index 639cf9e0..94356dfa 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/CopperTrace.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/CopperTrace.java
@@ -23,8 +23,8 @@ import java.awt.Shape;
import org.diylc.common.ObjectCache;
import org.diylc.common.PCBLayer;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/CurvedTrace.java b/diylc/diylc-library/src/org/diylc/components/connectivity/CurvedTrace.java
index 7333fdaa..c73c05c8 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/CurvedTrace.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/CurvedTrace.java
@@ -24,8 +24,8 @@ import java.awt.geom.Path2D;
import org.diylc.common.LineStyle;
import org.diylc.common.ObjectCache;
import org.diylc.common.PCBLayer;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractCurvedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/CutLine.java b/diylc/diylc-library/src/org/diylc/components/connectivity/CutLine.java
index 50a19095..0828fd8c 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/CutLine.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/CutLine.java
@@ -25,8 +25,8 @@ import java.awt.geom.Point2D;
import org.diylc.common.ObjectCache;
import org.diylc.common.OrientationHV;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractTransparentComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/Dot.java b/diylc/diylc-library/src/org/diylc/components/connectivity/Dot.java
index 86c472df..596661cb 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/Dot.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/Dot.java
@@ -26,8 +26,8 @@ import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/Eyelet.java b/diylc/diylc-library/src/org/diylc/components/connectivity/Eyelet.java
index 4964de06..38cc77d1 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/Eyelet.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/Eyelet.java
@@ -27,8 +27,8 @@ import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/GroundFill.java b/diylc/diylc-library/src/org/diylc/components/connectivity/GroundFill.java
index b5bebe31..a81c79cc 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/GroundFill.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/GroundFill.java
@@ -28,8 +28,8 @@ import java.util.Arrays;
import org.diylc.common.ObjectCache;
import org.diylc.common.PCBLayer;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/HookupWire.java b/diylc/diylc-library/src/org/diylc/components/connectivity/HookupWire.java
index bb2d52c5..ddc2d3f5 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/HookupWire.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/HookupWire.java
@@ -25,8 +25,8 @@ import java.awt.Stroke;
import java.awt.geom.Path2D;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractCurvedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IContinuity;
import org.diylc.core.IDIYComponent;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/Jumper.java b/diylc/diylc-library/src/org/diylc/components/connectivity/Jumper.java
index 4b92da6c..0392d515 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/Jumper.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/Jumper.java
@@ -28,8 +28,8 @@ import java.awt.Shape;
import org.diylc.common.Display;
import org.diylc.common.LineStyle;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.CreationMethod;
import org.diylc.core.IContinuity;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/Line.java b/diylc/diylc-library/src/org/diylc/components/connectivity/Line.java
index d34ef3df..9b6c1778 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/Line.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/Line.java
@@ -33,8 +33,8 @@ import java.awt.geom.Point2D;
import org.diylc.common.Display;
import org.diylc.common.LineStyle;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/SolderPad.java b/diylc/diylc-library/src/org/diylc/components/connectivity/SolderPad.java
index c142445b..04f4727d 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/SolderPad.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/SolderPad.java
@@ -24,8 +24,8 @@ import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.PCBLayer;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/TraceCut.java b/diylc/diylc-library/src/org/diylc/components/connectivity/TraceCut.java
index f36524d2..76368f5e 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/TraceCut.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/TraceCut.java
@@ -28,10 +28,10 @@ import java.awt.geom.Rectangle2D;
import org.diylc.common.ObjectCache;
import org.diylc.common.OrientationHV;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractComponent;
import org.diylc.components.boards.AbstractBoard;
import org.diylc.components.boards.VeroBoard;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java b/diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java
index e03badac..f33b5b8a 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/Turret.java
@@ -27,8 +27,8 @@ import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/connectivity/TwistedWire.java b/diylc/diylc-library/src/org/diylc/components/connectivity/TwistedWire.java
index 7f9e108c..1343a8e4 100644
--- a/diylc/diylc-library/src/org/diylc/components/connectivity/TwistedWire.java
+++ b/diylc/diylc-library/src/org/diylc/components/connectivity/TwistedWire.java
@@ -34,8 +34,8 @@ import java.util.List;
import org.diylc.common.LineStyle;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractCurvedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IContinuity;
import org.diylc.core.IDIYComponent;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java b/diylc/diylc-library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java
index d2bc08ca..255006c6 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/AxialElectrolyticCapacitor.java
@@ -32,8 +32,8 @@ import java.awt.geom.RoundRectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.Theme;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/AxialFilmCapacitor.java b/diylc/diylc-library/src/org/diylc/components/passive/AxialFilmCapacitor.java
index bdb11825..e2cf37ff 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/AxialFilmCapacitor.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/AxialFilmCapacitor.java
@@ -23,7 +23,7 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/CapacitorSymbol.java b/diylc/diylc-library/src/org/diylc/components/passive/CapacitorSymbol.java
index f5c5e48d..5b1a8a98 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/CapacitorSymbol.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/CapacitorSymbol.java
@@ -25,8 +25,8 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractSchematicLeadedSymbol;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/CrystalOscillator.java b/diylc/diylc-library/src/org/diylc/components/passive/CrystalOscillator.java
index 04b6486e..e6ee74a7 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/CrystalOscillator.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/CrystalOscillator.java
@@ -28,8 +28,8 @@ import java.awt.Shape;
import java.awt.geom.RoundRectangle2D;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/FuseSymbol.java b/diylc/diylc-library/src/org/diylc/components/passive/FuseSymbol.java
index d2bccd3f..dfd05dfc 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/FuseSymbol.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/FuseSymbol.java
@@ -26,8 +26,8 @@ import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Path2D;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractSchematicLeadedSymbol;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/InductorSymbol.java b/diylc/diylc-library/src/org/diylc/components/passive/InductorSymbol.java
index d3a3f924..37fb073b 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/InductorSymbol.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/InductorSymbol.java
@@ -25,8 +25,8 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractSchematicLeadedSymbol;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java b/diylc/diylc-library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java
index ebef6614..b625f29c 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java
@@ -26,8 +26,8 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractRadialComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/RadialElectrolytic.java b/diylc/diylc-library/src/org/diylc/components/passive/RadialElectrolytic.java
index d2dc1329..09a79daf 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/RadialElectrolytic.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/RadialElectrolytic.java
@@ -32,8 +32,8 @@ import java.awt.geom.RoundRectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractRadialComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.Theme;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/RadialFilmCapacitor.java b/diylc/diylc-library/src/org/diylc/components/passive/RadialFilmCapacitor.java
index b1494569..f0b9b0cb 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/RadialFilmCapacitor.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/RadialFilmCapacitor.java
@@ -27,7 +27,7 @@ import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.RoundRectangle2D;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/RadialInductor.java b/diylc/diylc-library/src/org/diylc/components/passive/RadialInductor.java
index 41287692..4ba86ab7 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/RadialInductor.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/RadialInductor.java
@@ -33,8 +33,8 @@ import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractRadialComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/Resistor.java b/diylc/diylc-library/src/org/diylc/components/passive/Resistor.java
index 9784b97b..75026bad 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/Resistor.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/Resistor.java
@@ -32,8 +32,8 @@ import java.awt.geom.Rectangle2D;
import org.diylc.common.ObjectCache;
import org.diylc.common.ResistorColorCode;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/ResistorSymbol.java b/diylc/diylc-library/src/org/diylc/components/passive/ResistorSymbol.java
index ca2bf20f..c12eff8a 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/ResistorSymbol.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/ResistorSymbol.java
@@ -25,8 +25,8 @@ import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractSchematicLeadedSymbol;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/TantalumCapacitor.java b/diylc/diylc-library/src/org/diylc/components/passive/TantalumCapacitor.java
index 74bcb61b..ffc3732a 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/TantalumCapacitor.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/TantalumCapacitor.java
@@ -32,8 +32,8 @@ import java.awt.geom.RoundRectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.common.IPlugInPort;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractRadialComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.Theme;
diff --git a/diylc/diylc-library/src/org/diylc/components/passive/ToroidalInductor.java b/diylc/diylc-library/src/org/diylc/components/passive/ToroidalInductor.java
index 17aee575..131927c0 100644
--- a/diylc/diylc-library/src/org/diylc/components/passive/ToroidalInductor.java
+++ b/diylc/diylc-library/src/org/diylc/components/passive/ToroidalInductor.java
@@ -28,8 +28,8 @@ import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodeGlass.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodeGlass.java
index 89e8fbe8..f6b7e6bb 100644
--- a/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodeGlass.java
+++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodeGlass.java
@@ -27,9 +27,9 @@ import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
-import org.diylc.common.IPlugInPort;
-import org.diylc.common.SimpleComponentTransformer;
-import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.common.IPlugInPort;
+import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.Theme;
diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodePlastic.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodePlastic.java
index 8d06ed73..502f1dd4 100644
--- a/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodePlastic.java
+++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodePlastic.java
@@ -27,9 +27,9 @@ import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import org.diylc.appframework.miscutils.ConfigurationManager;
-import org.diylc.common.IPlugInPort;
-import org.diylc.common.SimpleComponentTransformer;
-import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.common.IPlugInPort;
+import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.Theme;
diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodeSymbol.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodeSymbol.java
index d59ce410..a903e3b5 100644
--- a/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodeSymbol.java
+++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/DiodeSymbol.java
@@ -24,8 +24,8 @@ package org.diylc.components.semiconductors;
import java.awt.Graphics2D;
import java.awt.Polygon;
-import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.common.ObjectCache;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/LED.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/LED.java
index bfb31436..a450e644 100644
--- a/diylc/diylc-library/src/org/diylc/components/semiconductors/LED.java
+++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/LED.java
@@ -28,9 +28,9 @@ import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
-import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
-import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.common.ObjectCache;
+import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/LEDSymbol.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/LEDSymbol.java
index 4a7d98e1..4a4e62b8 100644
--- a/diylc/diylc-library/src/org/diylc/components/semiconductors/LEDSymbol.java
+++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/LEDSymbol.java
@@ -25,8 +25,8 @@ import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.geom.AffineTransform;
-import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.common.ObjectCache;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/PhotoDiodeSymbol.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/PhotoDiodeSymbol.java
index da828bb6..cd78b274 100644
--- a/diylc/diylc-library/src/org/diylc/components/semiconductors/PhotoDiodeSymbol.java
+++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/PhotoDiodeSymbol.java
@@ -25,8 +25,8 @@ import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.geom.AffineTransform;
-import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.common.ObjectCache;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/SchottkyDiodeSymbol.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/SchottkyDiodeSymbol.java
index 75ba8519..8243a07f 100644
--- a/diylc/diylc-library/src/org/diylc/components/semiconductors/SchottkyDiodeSymbol.java
+++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/SchottkyDiodeSymbol.java
@@ -24,8 +24,8 @@ package org.diylc.components.semiconductors;
import java.awt.Graphics2D;
import java.awt.Polygon;
-import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.common.ObjectCache;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/ZenerDiodeSymbol.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/ZenerDiodeSymbol.java
index 2eba4daf..2247cf06 100644
--- a/diylc/diylc-library/src/org/diylc/components/semiconductors/ZenerDiodeSymbol.java
+++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/ZenerDiodeSymbol.java
@@ -24,8 +24,8 @@ package org.diylc.components.semiconductors;
import java.awt.Graphics2D;
import java.awt.Polygon;
-import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.common.ObjectCache;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
import org.diylc.core.annotations.ComponentDescriptor;
diff --git a/diylc/diylc-library/src/org/diylc/components/shapes/Ellipse.java b/diylc/diylc-library/src/org/diylc/components/shapes/Ellipse.java
index ceab11f3..64447324 100644
--- a/diylc/diylc-library/src/org/diylc/components/shapes/Ellipse.java
+++ b/diylc/diylc-library/src/org/diylc/components/shapes/Ellipse.java
@@ -25,8 +25,8 @@ import java.awt.AlphaComposite;
import java.awt.Composite;
import java.awt.Graphics2D;
-import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.common.ObjectCache;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/shapes/Polygon.java b/diylc/diylc-library/src/org/diylc/components/shapes/Polygon.java
index 64ed4288..5c306faa 100644
--- a/diylc/diylc-library/src/org/diylc/components/shapes/Polygon.java
+++ b/diylc/diylc-library/src/org/diylc/components/shapes/Polygon.java
@@ -29,7 +29,7 @@ import java.awt.geom.Point2D;
import java.util.Arrays;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/shapes/Rectangle.java b/diylc/diylc-library/src/org/diylc/components/shapes/Rectangle.java
index 80994bee..d454d429 100644
--- a/diylc/diylc-library/src/org/diylc/components/shapes/Rectangle.java
+++ b/diylc/diylc-library/src/org/diylc/components/shapes/Rectangle.java
@@ -25,8 +25,8 @@ import java.awt.AlphaComposite;
import java.awt.Composite;
import java.awt.Graphics2D;
-import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
+import org.diylc.common.ObjectCache;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.IDIYComponent;
import org.diylc.core.IDrawingObserver;
diff --git a/diylc/diylc-library/src/org/diylc/components/shapes/TapeMeasure.java b/diylc/diylc-library/src/org/diylc/components/shapes/TapeMeasure.java
index 606266f7..78a51387 100644
--- a/diylc/diylc-library/src/org/diylc/components/shapes/TapeMeasure.java
+++ b/diylc/diylc-library/src/org/diylc/components/shapes/TapeMeasure.java
@@ -38,8 +38,8 @@ import java.text.DecimalFormat;
import org.diylc.common.Display;
import org.diylc.common.LineStyle;
import org.diylc.common.ObjectCache;
-import org.diylc.common.SimpleComponentTransformer;
import org.diylc.components.AbstractLeadedComponent;
+import org.diylc.components.transform.SimpleComponentTransformer;
import org.diylc.core.ComponentState;
import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent;
diff --git a/diylc/diylc-library/src/org/diylc/components/transform/BreadboardTransformer.java b/diylc/diylc-library/src/org/diylc/components/transform/BreadboardTransformer.java
new file mode 100644
index 00000000..14c3f54a
--- /dev/null
+++ b/diylc/diylc-library/src/org/diylc/components/transform/BreadboardTransformer.java
@@ -0,0 +1,73 @@
+/*
+
+ 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.AffineTransform;
+import java.awt.geom.Point2D;
+
+import org.diylc.common.IComponentTransformer;
+import org.diylc.common.Orientation;
+import org.diylc.components.boards.Breadboard;
+import org.diylc.core.IDIYComponent;
+
+public class BreadboardTransformer implements IComponentTransformer {
+
+ @Override
+ public boolean canRotate(IDIYComponent> component) {
+ return component.getClass().equals(Breadboard.class);
+ }
+
+ @Override
+ public boolean canMirror(IDIYComponent> component) {
+ return false;
+ }
+
+ @Override
+ public boolean mirroringChangesCircuit() {
+ return false;
+ }
+
+ @Override
+ public void rotate(IDIYComponent> component, Point2D center, int direction) {
+ AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2 * direction, center.getX(), center.getY());
+ for (int index = 0; index < component.getControlPointCount(); index++) {
+ Point2D p = new Point2D.Double();
+ rotate.transform(component.getControlPoint(index), p);
+ component.setControlPoint(p, index);
+ }
+
+ Breadboard board = (Breadboard) component;
+ Orientation o = board.getOrientation();
+ int oValue = o.ordinal();
+ oValue += direction;
+ if (oValue < 0)
+ oValue = Orientation.values().length - 1;
+ if (oValue >= Orientation.values().length)
+ oValue = 0;
+ o = Orientation.values()[oValue];
+ board.setOrientation(o);
+ }
+
+ @Override
+ public void mirror(IDIYComponent> component, Point2D center, int direction) {
+ }
+}
diff --git a/diylc/diylc-library/src/org/diylc/components/transform/VeroBoardTransformer.java b/diylc/diylc-library/src/org/diylc/components/transform/VeroBoardTransformer.java
index 60613986..30ab18c6 100644
--- a/diylc/diylc-library/src/org/diylc/components/transform/VeroBoardTransformer.java
+++ b/diylc/diylc-library/src/org/diylc/components/transform/VeroBoardTransformer.java
@@ -24,7 +24,6 @@ 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;