From 3d1a7a5748d6e5b96f85eba6c2afff15061dcd51 Mon Sep 17 00:00:00 2001 From: bancika Date: Sat, 12 Dec 2020 07:58:50 +0100 Subject: [PATCH] Apply context menu rotation to Breadboard components --- .../SimpleComponentTransformer.java | 3 +- .../src/org/diylc/presenter/update.xml | 14 +++- diylc/diylc-library/lib/diylc-core.jar | Bin 338774 -> 338837 bytes .../diylc/components/boards/BlankBoard.java | 2 +- .../diylc/components/boards/Breadboard.java | 3 +- .../diylc/components/boards/EyeletBoard.java | 2 +- .../components/boards/MarshallPerfBoard.java | 2 +- .../diylc/components/boards/PerfBoard.java | 2 +- .../components/chassis/ChassisPanel.java | 2 +- .../components/chassis/EllipticalCutout.java | 2 +- .../components/chassis/PolygonalCutout.java | 2 +- .../components/chassis/RectangularCutout.java | 2 +- .../components/connectivity/CopperTrace.java | 2 +- .../components/connectivity/CurvedTrace.java | 2 +- .../components/connectivity/CutLine.java | 2 +- .../diylc/components/connectivity/Dot.java | 2 +- .../diylc/components/connectivity/Eyelet.java | 2 +- .../components/connectivity/GroundFill.java | 2 +- .../components/connectivity/HookupWire.java | 2 +- .../diylc/components/connectivity/Jumper.java | 2 +- .../diylc/components/connectivity/Line.java | 2 +- .../components/connectivity/SolderPad.java | 2 +- .../components/connectivity/TraceCut.java | 2 +- .../diylc/components/connectivity/Turret.java | 2 +- .../components/connectivity/TwistedWire.java | 2 +- .../passive/AxialElectrolyticCapacitor.java | 2 +- .../passive/AxialFilmCapacitor.java | 2 +- .../components/passive/CapacitorSymbol.java | 2 +- .../components/passive/CrystalOscillator.java | 2 +- .../diylc/components/passive/FuseSymbol.java | 2 +- .../components/passive/InductorSymbol.java | 2 +- .../passive/RadialCeramicDiskCapacitor.java | 2 +- .../passive/RadialElectrolytic.java | 2 +- .../passive/RadialFilmCapacitor.java | 2 +- .../components/passive/RadialInductor.java | 2 +- .../diylc/components/passive/Resistor.java | 2 +- .../components/passive/ResistorSymbol.java | 2 +- .../components/passive/TantalumCapacitor.java | 2 +- .../components/passive/ToroidalInductor.java | 2 +- .../components/semiconductors/DiodeGlass.java | 6 +- .../semiconductors/DiodePlastic.java | 6 +- .../semiconductors/DiodeSymbol.java | 4 +- .../diylc/components/semiconductors/LED.java | 6 +- .../components/semiconductors/LEDSymbol.java | 4 +- .../semiconductors/PhotoDiodeSymbol.java | 4 +- .../semiconductors/SchottkyDiodeSymbol.java | 4 +- .../semiconductors/ZenerDiodeSymbol.java | 4 +- .../org/diylc/components/shapes/Ellipse.java | 4 +- .../org/diylc/components/shapes/Polygon.java | 2 +- .../diylc/components/shapes/Rectangle.java | 4 +- .../diylc/components/shapes/TapeMeasure.java | 2 +- .../transform/BreadboardTransformer.java | 73 ++++++++++++++++++ .../transform/VeroBoardTransformer.java | 1 - 53 files changed, 148 insertions(+), 66 deletions(-) rename diylc/diylc-core/src/org/diylc/{common => components/transform}/SimpleComponentTransformer.java (94%) create mode 100644 diylc/diylc-library/src/org/diylc/components/transform/BreadboardTransformer.java 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 bd31d9e0a104e2469c5772465b200a8c282c785d..1274a1107daa1bce7c1adfe59fd98901b9895002 100644 GIT binary patch delta 28670 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 z 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 W2W`jzS9r@;?aslmrwmRHj{gIeJ+yKF 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;