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