diff --git a/diylc/diylc-core/src/main/java/org/diylc/utils/SwitchUtils.java b/diylc/diylc-core/src/main/java/org/diylc/utils/SwitchUtils.java
index 33dc583f..5fcd8a2f 100644
--- a/diylc/diylc-core/src/main/java/org/diylc/utils/SwitchUtils.java
+++ b/diylc/diylc-core/src/main/java/org/diylc/utils/SwitchUtils.java
@@ -45,7 +45,8 @@ public class SwitchUtils {
for (int i = 0; i < numPoints; i++) {
final int finalI = i;
if (switchingMatrix.stream().allMatch(
- l -> l.stream().anyMatch(
+ l -> l.isEmpty() ||
+ l.stream().anyMatch(
s -> s.contains(finalI)))) {
markers[i] = String.valueOf((char)((int)'A' + commonPoints.size()));
commonPoints.add(i);
diff --git a/diylc/diylc-core/src/main/resources/update.xml b/diylc/diylc-core/src/main/resources/update.xml
index bb014406..f4ca536a 100644
--- a/diylc/diylc-core/src/main/resources/update.xml
+++ b/diylc/diylc-core/src/main/resources/update.xml
@@ -331,7 +331,7 @@
NEW_FEATURE
- Added ability to highlight connected switch lugs in selected position in order to illustrate how it works internally.
+ Added ability to display switch lug markings in order to illustrate how it works internally.
IMPROVEMENT
@@ -345,6 +345,10 @@
IMPROVEMENT
Fully configurable colors for 'Mini Toggle Switch' components
+
+ IMPROVEMENT
+ Removed 'DP3T' options from 'Mini Toggle Switch' because that is covered by 'Slide Switch' component and does not belong here
+
BUG_FIX
Applying a variant to a 'Hookup Wire' or 'Curved Trace' makes it lose its shape
diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/electromechanical/MiniToggleSwitch.java b/diylc/diylc-library/src/main/java/org/diylc/components/electromechanical/MiniToggleSwitch.java
index b73ba11d..ba70ca02 100644
--- a/diylc/diylc-library/src/main/java/org/diylc/components/electromechanical/MiniToggleSwitch.java
+++ b/diylc/diylc-library/src/main/java/org/diylc/components/electromechanical/MiniToggleSwitch.java
@@ -31,15 +31,11 @@ import java.awt.geom.Area;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.IntStream;
import org.diylc.appframework.miscutils.ConfigurationManager;
-import org.diylc.common.IPlugInPort;
-import org.diylc.common.ObjectCache;
-import org.diylc.common.OrientationHV;
+import org.diylc.awt.StringUtils;
+import org.diylc.common.*;
import org.diylc.components.AbstractTransparentComponent;
import org.diylc.components.guitar.ToggleSwitchPositionPropertyValueSource;
import org.diylc.components.transform.MiniToggleSwitchTransformer;
@@ -59,8 +55,7 @@ import org.diylc.core.gerber.IGerberComponentSimple;
import org.diylc.core.measures.Size;
import org.diylc.core.measures.SizeUnit;
import org.diylc.utils.Constants;
-
-import static org.diylc.utils.SwitchUtils.getConnectedTerminals;
+import org.diylc.utils.SwitchUtils;
@ComponentDescriptor(name = "Mini Toggle Switch", category = "Electro-Mechanical", author = "Branislav Stojkovic",
description = "Panel mounted mini toggle switch", zOrder = IDIYComponent.COMPONENT,
@@ -74,11 +69,14 @@ public class MiniToggleSwitch extends AbstractTransparentComponent> connectedTerminals = getConnectedTerminals(this, controlPoints.length);
-
for (int i = 0; i < controlPoints.length; i++) {
Point2D p = controlPoints[i];
if (outlineMode) {
@@ -341,36 +326,44 @@ public class MiniToggleSwitch extends AbstractTransparentComponent connectedTerminals.get(j).contains(finalI))
- .findFirst().orElse(-1);
-
- if (groupIndex < 0) {
- g2d.setColor(getTerminalPadColor().darker());
- } else {
- g2d.setColor(ISwitch.POLE_COLORS[groupIndex].darker());
- }
+ g2d.setColor(getTerminalPadColor().darker());
g2d.drawOval((int)(p.getX() - circleDiameter / 2d), (int)(p.getY() - circleDiameter / 2d), circleDiameter, circleDiameter);
-
- if (groupIndex < 0) {
- g2d.setColor(getTerminalPadColor());
- } else {
- g2d.setColor(ISwitch.POLE_COLORS[groupIndex]);
- }
+ g2d.setColor(getTerminalPadColor());
g2d.fillOval((int)(p.getX() - circleDiameter / 2d), (int)(p.getY() - circleDiameter / 2d), circleDiameter, circleDiameter);
- if (groupIndex < 0) {
- g2d.setColor(getTerminalColor());
- } else {
- g2d.setColor(getTerminalColor().darker());
- }
+ g2d.setColor(getTerminalColor());
// drawingObserver.startTrackingContinuityArea(true);
g2d.fillRect((int)(p.getX() - lugWidth / 2d), (int)(p.getY() - lugHeight / 2d), lugWidth, lugHeight);
// drawingObserver.stopTrackingContinuityArea();
}
}
+
+ if (getShowMarkers()) {
+ String[] markers =
+ SwitchUtils.getSwitchingMarkers(this, getControlPointCount(), false);
+
+ g2d.setColor(MARKER_COLOR);
+
+ double offset = MARKER_OFFSET.convertToPixels();
+ for (int i = 0; i < getControlPointCount(); i++) {
+ if (markers[i] == null)
+ continue;
+
+ Point2D p = getControlPoint(i);
+ Point2D labelPoint = new Point2D.Double(offset, 0);
+
+ AffineTransform tx = null;
+ if (getOrientation() == OrientationHV.HORIZONTAL) {
+ tx = AffineTransform.getRotateInstance(-Math.PI / 2, 0, 0);
+ }
+ if (tx != null) {
+ tx.transform(labelPoint, labelPoint);
+ }
+ StringUtils.drawCenteredText(g2d, markers[i], p.getX() + labelPoint.getX(), p.getY() + labelPoint.getY(),
+ HorizontalAlignment.CENTER, VerticalAlignment.CENTER);
+ }
+ }
}
public Shape getBody() {
@@ -398,11 +391,6 @@ public class MiniToggleSwitch extends AbstractTransparentComponent= index2)
+ return false;
+
switch (switchType) {
case SPST:
return position == 0;
@@ -561,9 +550,11 @@ public class MiniToggleSwitch extends AbstractTransparentComponent