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 debd40fa..ce82b037 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 @@ -33,12 +33,14 @@ import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.awt.geom.RoundRectangle2D; import java.util.*; -import java.util.stream.IntStream; import org.diylc.appframework.miscutils.ConfigurationManager; +import org.diylc.awt.StringUtils; +import org.diylc.common.HorizontalAlignment; import org.diylc.common.IPlugInPort; import org.diylc.common.ObjectCache; +import org.diylc.common.VerticalAlignment; import org.diylc.components.AbstractAngledComponent; import org.diylc.components.transform.AngledComponentTransformer; import org.diylc.core.*; @@ -49,8 +51,7 @@ import org.diylc.core.annotations.KeywordPolicy; 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 = "Lever Switch", category = "Guitar", author = "Branislav Stojkovic", description = "Strat-style lever switch", zOrder = IDIYComponent.COMPONENT, @@ -63,6 +64,7 @@ public class LeverSwitch extends AbstractAngledComponent> connectedTerminals = getConnectedTerminals(this, controlPoints.length); - - body = new Shape[3 + connectedTerminals.size()]; + body = new Shape[3]; body[0] = baseArea; body[1] = waferArea; - for (int i = 0; i <= connectedTerminals.size(); i++) { - body[2 + i] = new Area(); - } + body[2] = new Area(); for (int i = 0; i < controlPoints.length; i++) { Point2D point = controlPoints[i]; Area terminal = - new Area(new RoundRectangle2D.Double(point.getX() - terminalLength / 2, point.getY() - terminalWidth / 2, - terminalLength, terminalWidth, terminalWidth / 2, terminalWidth / 2)); - terminal.subtract(new Area(new RoundRectangle2D.Double(point.getX() - terminalLength / 4, point.getY() - terminalWidth - / 4, terminalLength / 2, terminalWidth / 2, terminalWidth / 2, terminalWidth / 2))); + new Area(new RoundRectangle2D.Double(point.getX() - terminalLength / 2d, point.getY() - terminalWidth / 2d, + terminalLength, terminalWidth, terminalWidth / 2d, terminalWidth / 2d)); + terminal.subtract(new Area(new RoundRectangle2D.Double(point.getX() - terminalLength / 4d, point.getY() - terminalWidth + / 4d, terminalLength / 2d, terminalWidth / 2d, terminalWidth / 2d, terminalWidth / 2d))); // Rotate the terminal if needed if (theta != 0) { AffineTransform rotation = AffineTransform.getRotateInstance(theta, point.getX(), point.getY()); terminal.transform(rotation); } - int finalI = i; - int groupIndex = IntStream.range(0, connectedTerminals.size()) - .filter(j -> connectedTerminals.get(j).contains(finalI)) - .findFirst().orElse(-1); - - ((Area)body[3 + groupIndex]).add(terminal); + ((Area)body[2]).add(terminal); } // Rotate if needed