diff --git a/diylc/diylc-core/src/main/java/org/diylc/core/ISwitch.java b/diylc/diylc-core/src/main/java/org/diylc/core/ISwitch.java index b4999a3e..9a04acf2 100644 --- a/diylc/diylc-core/src/main/java/org/diylc/core/ISwitch.java +++ b/diylc/diylc-core/src/main/java/org/diylc/core/ISwitch.java @@ -21,7 +21,9 @@ */ package org.diylc.core; -import java.awt.*; +import java.awt.Color; +import java.util.List; +import java.util.Map; /** * Interface for all component that can act as switches. They must have at least one position. @@ -81,4 +83,6 @@ public interface ISwitch extends IContinuity { } return arePointsConnected(index1, index2, getSelectedPosition()); } + + List getCommonPoints(); } 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 b1aca465..66e29668 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 @@ -27,6 +27,26 @@ import java.util.*; public class SwitchUtils { + public static Map>> getSwitchingMatrix(ISwitch switchComponent, int numPoints) { + Map>> result = new HashMap<>(); + + for (Integer commonPoint : switchComponent.getCommonPoints()) { + List> connectedPoints = new ArrayList<>(); + result.put(commonPoint, connectedPoints); + for (int i = 0; i < switchComponent.getPositionCount(); i++) { + List positionPoints = new ArrayList<>(); + for (int j = 0; j < numPoints; j++) { + if (commonPoint != j && switchComponent.arePointsConnected(commonPoint, j, i)) { + positionPoints.add(j); + } + } + connectedPoints.add(positionPoints); + } + } + + return result; + } + public static List> getConnectedTerminals(ISwitch switchComponent, int numPoints) { if (!Boolean.TRUE.equals(switchComponent.getHighlightConnectedTerminals())) { diff --git a/diylc/diylc-core/src/test/java/org/diylc/utils/SwitchUtilsTest.java b/diylc/diylc-core/src/test/java/org/diylc/utils/SwitchUtilsTest.java index 25b5a271..fadbe94c 100644 --- a/diylc/diylc-core/src/test/java/org/diylc/utils/SwitchUtilsTest.java +++ b/diylc/diylc-core/src/test/java/org/diylc/utils/SwitchUtilsTest.java @@ -33,8 +33,7 @@ public class SwitchUtilsTest { return selectedPosition; } - @Override - public Boolean getHighlightConnectedTerminals() { + public Boolean getShowMarkers() { return renderConnected; } 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 f153cc44..b73ba11d 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 @@ -533,8 +533,7 @@ public class MiniToggleSwitch extends AbstractTransparentComponent i } @EditableProperty(name = "Highlight Connected") - @Override - public Boolean getHighlightConnectedTerminals() { + public Boolean getShowMarkers() { if (highlightConnectedTerminals == null) { highlightConnectedTerminals = false; } diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/guitar/Freeway3x3_03.java b/diylc/diylc-library/src/main/java/org/diylc/components/guitar/Freeway3x3_03.java index 142b4499..fe2dc4fb 100644 --- a/diylc/diylc-library/src/main/java/org/diylc/components/guitar/Freeway3x3_03.java +++ b/diylc/diylc-library/src/main/java/org/diylc/components/guitar/Freeway3x3_03.java @@ -451,8 +451,7 @@ public class Freeway3x3_03 extends AbstractTransparentComponent implements } @EditableProperty(name = "Highlight Connected") - @Override - public Boolean getHighlightConnectedTerminals() { + public Boolean getShowMarkers() { if (highlightConnectedTerminals == null) { highlightConnectedTerminals = false; } diff --git a/diylc/diylc-library/src/main/java/org/diylc/components/guitar/LeverSwitch.java b/diylc/diylc-library/src/main/java/org/diylc/components/guitar/LeverSwitch.java index d61ae98e..debd40fa 100644 --- a/diylc/diylc-library/src/main/java/org/diylc/components/guitar/LeverSwitch.java +++ b/diylc/diylc-library/src/main/java/org/diylc/components/guitar/LeverSwitch.java @@ -83,7 +83,7 @@ public class LeverSwitch extends AbstractAngledComponent implemen private transient Double labelDy = null; private Integer selectedPosition; - private Boolean highlightConnectedTerminals; + private Boolean showMarkers; public SchallerMegaSwitch() { super(); @@ -570,16 +570,15 @@ public class SchallerMegaSwitch extends AbstractAngledComponent implemen } @EditableProperty(name = "Highlight Connected") - @Override - public Boolean getHighlightConnectedTerminals() { - if (highlightConnectedTerminals == null) { - highlightConnectedTerminals = false; + public Boolean getShowMarkers() { + if (showMarkers == null) { + showMarkers = false; } - return highlightConnectedTerminals; + return showMarkers; } - public void setHighlightConnectedTerminals(Boolean highlightConnectedTerminals) { - this.highlightConnectedTerminals = highlightConnectedTerminals; + public void setShowMarkers(Boolean showMarkers) { + this.showMarkers = showMarkers; this.body = null; }