diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index ba1a6d43..3902e66f 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -2954,6 +2954,10 @@ NEW_FEATURE Transistor components can display pinout instead of name or value + + NEW_FEATURE + "Trace Cut" can now be placed horizontally or vertically when "Cut Between Lines" is selected + IMPROVEMENT Prevent the app from closing while running background operations, like saving and exporting files 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 8319873c..0259d70c 100644 --- a/diylc/diylc-library/src/org/diylc/components/connectivity/TraceCut.java +++ b/diylc/diylc-library/src/org/diylc/components/connectivity/TraceCut.java @@ -27,6 +27,7 @@ import java.awt.Point; 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; @@ -63,7 +64,8 @@ public class TraceCut extends AbstractComponent { @Deprecated private Color borderColor = BORDER_COLOR; private Color boardColor = AbstractBoard.BOARD_COLOR; - private Boolean cutBetweenHoles = false; + private Boolean cutBetweenHoles = false; + private OrientationHV orientation = OrientationHV.VERTICAL; private Size holeSpacing = VeroBoard.SPACING; protected Point point = new Point(0, 0); @@ -81,8 +83,11 @@ public class TraceCut extends AbstractComponent { int holeSpacing = getClosestOdd(getHoleSpacing().convertToPixels()); g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR : getBoardColor()); - drawingObserver.startTrackingContinuityArea(false); - g2d.fillRect(point.x - holeSpacing / 2 - cutWidth / 2, point.y - size / 2 - 1, cutWidth, size + 2); + drawingObserver.startTrackingContinuityArea(false); + if (getOrientation() == OrientationHV.VERTICAL) + g2d.fillRect(point.x - holeSpacing / 2 - cutWidth / 2, point.y - size / 2 - 1, cutWidth, size + 2); + else + g2d.fillRect(point.x - size / 2 - 1, point.y - holeSpacing / 2 - cutWidth / 2, size + 2, cutWidth); drawingObserver.stopTrackingContinuityArea(); } else { g2d.setColor(componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR @@ -193,7 +198,7 @@ public class TraceCut extends AbstractComponent { this.borderColor = borderColor; } - @EditableProperty(name = "Cut between holes") + @EditableProperty(name = "Cut Between Holes") public boolean getCutBetweenHoles() { if (cutBetweenHoles == null) { cutBetweenHoles = false; @@ -217,7 +222,7 @@ public class TraceCut extends AbstractComponent { this.boardColor = boardColor; } - @EditableProperty(name = "Hole spacing") + @EditableProperty(name = "Hole Spacing") public Size getHoleSpacing() { if (holeSpacing == null) { holeSpacing = VeroBoard.SPACING; @@ -227,6 +232,17 @@ public class TraceCut extends AbstractComponent { public void setHoleSpacing(Size holeSpacing) { this.holeSpacing = holeSpacing; + } + + @EditableProperty(name = "Cut Orientation") + public OrientationHV getOrientation() { + if (orientation == null) + orientation = OrientationHV.VERTICAL; + return orientation; + } + + public void setOrientation(OrientationHV orientation) { + this.orientation = orientation; } @Deprecated