diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 75545289..ad7ed372 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -3312,7 +3312,7 @@ IMPROVEMENT - Apply context menu rotation to Breadboard components + Apply context menu rotation to Breadboard and P-0+o (Proto) Board components IMPROVEMENT diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 1274a110..46826fea 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/AbstractProtoBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/AbstractProtoBoard.java new file mode 100644 index 00000000..968db8b3 --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/boards/AbstractProtoBoard.java @@ -0,0 +1,24 @@ +package org.diylc.components.boards; + +import org.diylc.common.Orientation; +import org.diylc.components.AbstractComponent; +import org.diylc.core.annotations.EditableProperty; + +public abstract class AbstractProtoBoard extends AbstractComponent { + + + private static final long serialVersionUID = 1L; + + protected Orientation orientation; + + @EditableProperty + public Orientation getOrientation() { + if (orientation == null) + orientation = Orientation.DEFAULT; + return orientation; + } + + public void setOrientation(Orientation orientation) { + this.orientation = orientation; + } +} 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 72df4c32..9dbeb99c 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/Breadboard.java @@ -34,10 +34,8 @@ import java.awt.geom.RoundRectangle2D; import org.diylc.awt.StringUtils; import org.diylc.common.HorizontalAlignment; 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.components.transform.ProtoBoardTransformer; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; @@ -53,8 +51,8 @@ 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, transformer = BreadboardTransformer.class) -public class Breadboard extends AbstractComponent { + keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, enableCache = true, transformer = ProtoBoardTransformer.class) +public class Breadboard extends AbstractProtoBoard { private static final long serialVersionUID = 1L; @@ -78,7 +76,7 @@ public class Breadboard extends AbstractComponent { protected BreadboardSize breadboardSize; protected PowerStripPosition powerStripPosition; - protected Orientation orientation; + @SuppressWarnings("incomplete-switch") @Override @@ -282,17 +280,6 @@ public class Breadboard extends AbstractComponent { g2d.drawLine(width / 2, 2 / factor, width / 2, height - 4 / factor); } - @EditableProperty - public Orientation getOrientation() { - if (orientation == null) - orientation = Orientation.DEFAULT; - return orientation; - } - - public void setOrientation(Orientation orientation) { - this.orientation = orientation; - } - @EditableProperty(name = "Size") public BreadboardSize getBreadboardSize() { if (breadboardSize == null) diff --git a/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java b/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java index 3740b17d..4b115fca 100644 --- a/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java +++ b/diylc/diylc-library/src/org/diylc/components/boards/ProtoBoard.java @@ -31,9 +31,8 @@ import java.awt.geom.Rectangle2D; import org.diylc.awt.StringUtils; import org.diylc.common.HorizontalAlignment; 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.ProtoBoardTransformer; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.IDrawingObserver; @@ -49,8 +48,8 @@ import org.diylc.core.measures.SizeUnit; @ComponentDescriptor(name = "P-0+o (Proto) Board", category = "Boards", author = "Branislav Stojkovic", description = "A prototyping board for modular synths, central bus with V+ GND and V-", instanceNamePrefix = "BB", zOrder = IDIYComponent.BOARD, bomPolicy = BomPolicy.SHOW_ONLY_TYPE_NAME, autoEdit = false, - keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, enableCache = true) -public class ProtoBoard extends AbstractComponent { + keywordPolicy = KeywordPolicy.SHOW_TYPE_NAME, enableCache = true, transformer = ProtoBoardTransformer.class) +public class ProtoBoard extends AbstractProtoBoard { private static final long serialVersionUID = 1L; @@ -80,9 +79,7 @@ public class ProtoBoard extends AbstractComponent { private static int[] GAPS = new int[] { 1, 0, 2, 0, 0, 0 }; private static int[] SEGMENTS_STARTS = new int[] { 0, 3, 6, 11, 14, 17 }; - protected Point2D point = new Point2D.Double(0, 0); - - protected Orientation orientation; + protected Point2D point = new Point2D.Double(0, 0); protected Color boardColor = FILL_COLOR; protected Color padColor = PAD_COLOR; @@ -563,17 +560,6 @@ public class ProtoBoard extends AbstractComponent { g2d.fillOval(width / 3 - 2 / factor + size / 2 - 1, 2 * width / 3 - 2 / factor + size / 2 - 1, 3, 3); g2d.fillOval(2 * width / 3 - 2 / factor + size / 2 - 1, 6 / factor + size / 2 - 1, 3, 3); g2d.fillOval(2 * width / 3 - 2 / factor + size / 2 - 1, 2 * width / 3 - 2 / factor + size / 2 - 1, 3, 3); - } - - @EditableProperty - public Orientation getOrientation() { - if (orientation == null) - orientation = Orientation.DEFAULT; - return orientation; - } - - public void setOrientation(Orientation orientation) { - this.orientation = orientation; } @EditableProperty(name = "Board Color") diff --git a/diylc/diylc-library/src/org/diylc/components/transform/BreadboardTransformer.java b/diylc/diylc-library/src/org/diylc/components/transform/ProtoBoardTransformer.java similarity index 87% rename from diylc/diylc-library/src/org/diylc/components/transform/BreadboardTransformer.java rename to diylc/diylc-library/src/org/diylc/components/transform/ProtoBoardTransformer.java index 14c3f54a..2e757cbc 100644 --- a/diylc/diylc-library/src/org/diylc/components/transform/BreadboardTransformer.java +++ b/diylc/diylc-library/src/org/diylc/components/transform/ProtoBoardTransformer.java @@ -26,14 +26,14 @@ import java.awt.geom.Point2D; import org.diylc.common.IComponentTransformer; import org.diylc.common.Orientation; -import org.diylc.components.boards.Breadboard; +import org.diylc.components.boards.AbstractProtoBoard; import org.diylc.core.IDIYComponent; -public class BreadboardTransformer implements IComponentTransformer { +public class ProtoBoardTransformer implements IComponentTransformer { @Override public boolean canRotate(IDIYComponent component) { - return component.getClass().equals(Breadboard.class); + return AbstractProtoBoard.class.isAssignableFrom(component.getClass()); } @Override @@ -55,7 +55,7 @@ public class BreadboardTransformer implements IComponentTransformer { component.setControlPoint(p, index); } - Breadboard board = (Breadboard) component; + AbstractProtoBoard board = (AbstractProtoBoard) component; Orientation o = board.getOrientation(); int oValue = o.ordinal(); oValue += direction; diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index bd31d9e0..46826fea 100644 Binary files a/diylc/diylc-swing/lib/diylc-core.jar and b/diylc/diylc-swing/lib/diylc-core.jar differ diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index 4ee57fb5..580bc6de 100644 Binary files a/diylc/diylc-swing/library/main.jar and b/diylc/diylc-swing/library/main.jar differ