From 3fbec7fb136e5b3da8606f898ff2edf46d5e1ac3 Mon Sep 17 00:00:00 2001 From: bancika Date: Fri, 23 Dec 2016 13:12:40 +0100 Subject: [PATCH] Subminiature DIL relay added --- .../SubminiatureDILRelay.java | 464 ++++++++++++++++++ .../components/semiconductors/DIL_IC.java | 3 + .../components/semiconductors/SIL_IC.java | 3 + diylc/diylc-swing/library/main.jar | Bin 345806 -> 354424 bytes diylc/diylc-swing/update.xml | 8 +- 5 files changed, 476 insertions(+), 2 deletions(-) create mode 100644 diylc/diylc-library/src/org/diylc/components/electromechanical/SubminiatureDILRelay.java diff --git a/diylc/diylc-library/src/org/diylc/components/electromechanical/SubminiatureDILRelay.java b/diylc/diylc-library/src/org/diylc/components/electromechanical/SubminiatureDILRelay.java new file mode 100644 index 00000000..23598b6d --- /dev/null +++ b/diylc/diylc-library/src/org/diylc/components/electromechanical/SubminiatureDILRelay.java @@ -0,0 +1,464 @@ +package org.diylc.components.electromechanical; + +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Composite; +import java.awt.FontMetrics; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.geom.Area; +import java.awt.geom.Rectangle2D; +import java.awt.geom.RoundRectangle2D; + +import org.diylc.appframework.miscutils.ConfigurationManager; +import org.diylc.common.Display; +import org.diylc.common.IPlugInPort; +import org.diylc.common.ObjectCache; +import org.diylc.common.Orientation; +import org.diylc.components.AbstractTransparentComponent; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.Theme; +import org.diylc.core.VisibilityPolicy; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.core.annotations.KeywordPolicy; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; +import org.diylc.utils.Constants; + +@ComponentDescriptor(name = "Subminiature DIL Relay", author = "Branislav Stojkovic", category = "Electromechanical", + instanceNamePrefix = "RY", description = "Subminiature DIL relay with one or two poles", stretchable = false, + zOrder = IDIYComponent.COMPONENT, keywordPolicy = KeywordPolicy.SHOW_VALUE) +public class SubminiatureDILRelay extends AbstractTransparentComponent { + + private static final long serialVersionUID = 1L; + + public static Color BODY_COLOR = Color.decode("#EDEDD5"); + public static Color BORDER_COLOR = BODY_COLOR.darker(); + public static Color PIN_COLOR = Color.decode("#00B2EE"); + public static Color PIN_BORDER_COLOR = PIN_COLOR.darker(); + public static Color INDENT_COLOR = Color.gray.darker(); + public static Color LABEL_COLOR = Color.darkGray; + public static int EDGE_RADIUS = 6; + public static Size PIN_SIZE = new Size(0.04d, SizeUnit.in); + public static Size INDENT_SIZE = new Size(0.05d, SizeUnit.in); + + public static Size PIN_SPACING = new Size(0.2d, SizeUnit.in); + public static Size ROW_SPACING = new Size(0.3d, SizeUnit.in); + public static Size SECTION_SPACING = new Size(0.3d, SizeUnit.in); + + private String value = ""; + private Orientation orientation = Orientation.DEFAULT; + private PinCount pinCount = PinCount._4; + private Size pinSpacing = PIN_SPACING; + private Size rowSpacing = ROW_SPACING; + private Size sectionSpacing = SECTION_SPACING; + private Point[] controlPoints = new Point[] {new Point(0, 0)}; + protected Display display = Display.NAME; + private Color bodyColor = BODY_COLOR; + private Color borderColor = BORDER_COLOR; + private Color labelColor = LABEL_COLOR; + private Color indentColor = INDENT_COLOR; + transient private Area[] body; + + public SubminiatureDILRelay() { + super(); + updateControlPoints(); + } + + @EditableProperty + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @EditableProperty + public Orientation getOrientation() { + return orientation; + } + + public void setOrientation(Orientation orientation) { + this.orientation = orientation; + updateControlPoints(); + // Reset body shape. + body = null; + } + + @EditableProperty(name = "Contacts") + public PinCount getPinCount() { + return pinCount; + } + + public void setPinCount(PinCount pinCount) { + this.pinCount = pinCount; + updateControlPoints(); + // Reset body shape; + body = null; + } + + @EditableProperty(name = "Pin spacing") + public Size getPinSpacing() { + return pinSpacing; + } + + public void setPinSpacing(Size pinSpacing) { + this.pinSpacing = pinSpacing; + updateControlPoints(); + // Reset body shape; + body = null; + } + + @EditableProperty(name = "Row spacing") + public Size getRowSpacing() { + return rowSpacing; + } + + public void setRowSpacing(Size rowSpacing) { + this.rowSpacing = rowSpacing; + updateControlPoints(); + // Reset body shape; + body = null; + } + + @EditableProperty(name = "Section spacing") + public Size getSectionSpacing() { + return sectionSpacing; + } + + public void setSectionSpacing(Size sectionSpacing) { + this.sectionSpacing = sectionSpacing; + updateControlPoints(); + // Reset body shape; + body = null; + } + + @EditableProperty + public Display getDisplay() { + if (display == null) { + display = Display.VALUE; + } + return display; + } + + public void setDisplay(Display display) { + this.display = display; + } + + @Override + public int getControlPointCount() { + return controlPoints.length; + } + + @Override + public Point getControlPoint(int index) { + return controlPoints[index]; + } + + @Override + public boolean isControlPointSticky(int index) { + return true; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + @Override + public void setControlPoint(Point point, int index) { + controlPoints[index].setLocation(point); + body = null; + } + + private void updateControlPoints() { + Point firstPoint = controlPoints[0]; + controlPoints = new Point[pinCount.getValue() * 2]; + controlPoints[0] = firstPoint; + int pinSpacing = (int) this.pinSpacing.convertToPixels(); + int sectionSpacing = (int) this.sectionSpacing.convertToPixels(); + int rowSpacing = (int) this.rowSpacing.convertToPixels(); + // Update control points. + int dx1; + int dy1; + int dx2; + int dy2; + for (int i = 0; i < pinCount.getValue(); i++) { + int spacing = i == 0 ? 0 : sectionSpacing + (i - 1) * pinSpacing; + switch (orientation) { + case DEFAULT: + dx1 = 0; + dy1 = spacing; + dx2 = rowSpacing; + dy2 = spacing; + break; + case _90: + dx1 = -spacing; + dy1 = 0; + dx2 = -spacing; + dy2 = rowSpacing; + break; + case _180: + dx1 = 0; + dy1 = -spacing; + dx2 = -rowSpacing; + dy2 = -spacing; + break; + case _270: + dx1 = spacing; + dy1 = 0; + dx2 = spacing; + dy2 = -rowSpacing; + break; + default: + throw new RuntimeException("Unexpected orientation: " + orientation); + } + controlPoints[i] = new Point(firstPoint.x + dx1, firstPoint.y + dy1); + controlPoints[i + pinCount.getValue()] = new Point(firstPoint.x + dx2, firstPoint.y + dy2); + } + } + + public Area[] getBody() { + if (body == null) { + body = new Area[2]; + int x = controlPoints[0].x; + int y = controlPoints[0].y; + + int pinSize = (int) PIN_SIZE.convertToPixels(); + int pinSpacing = (int) this.pinSpacing.convertToPixels(); + int rowSpacing = (int) this.rowSpacing.convertToPixels(); + + int minX = Integer.MAX_VALUE; + int maxX = Integer.MIN_VALUE; + int minY = Integer.MAX_VALUE; + int maxY = Integer.MIN_VALUE; + for (int i = 0; i < this.controlPoints.length; i++) { + if (this.controlPoints[i].x > maxX) + maxX = this.controlPoints[i].x; + if (this.controlPoints[i].x < minX) + minX = this.controlPoints[i].x; + if (this.controlPoints[i].y > maxY) + maxY = this.controlPoints[i].y; + if (this.controlPoints[i].y < minY) + minY = this.controlPoints[i].y; + } + int width = maxX - minX; + int height = maxY - minY; + + Area indentation = null; + int indentationSize = getClosestOdd(INDENT_SIZE.convertToPixels()); + switch (orientation) { + case DEFAULT: + x += pinSize / 2; + y -= pinSpacing / 2; + indentation = + new Area(new Rectangle2D.Double(minX + width / 2 - indentationSize / 2, minY - indentationSize / 2 + - pinSize, indentationSize, indentationSize)); + break; + case _90: + x -= (pinSpacing / 2) + width - pinSpacing; + y += pinSize / 2; + indentation = + new Area(new Rectangle2D.Double(minX + width - indentationSize / 2 + pinSize, minY + height / 2 + - indentationSize / 2, indentationSize, indentationSize)); + break; + case _180: + x -= rowSpacing - pinSize / 2; + y -= (pinSpacing / 2) + height - pinSpacing; + indentation = + new Area(new Rectangle2D.Double(minX + width / 2 - indentationSize / 2, minY + height - indentationSize + / 2 + pinSize, indentationSize, indentationSize)); + break; + case _270: + x -= pinSpacing / 2; + y += pinSize / 2 - rowSpacing; + indentation = + new Area(new Rectangle2D.Double(minX - indentationSize / 2 - pinSize, minY + height / 2 - indentationSize + / 2, indentationSize, indentationSize)); + break; + default: + throw new RuntimeException("Unexpected orientation: " + orientation); + } + + body[0] = + new Area(new RoundRectangle2D.Double(minX - pinSize, minY - pinSize, width + 2 * pinSize, height + 2 + * pinSize, EDGE_RADIUS, EDGE_RADIUS)); + body[1] = indentation; + if (indentation != null) { + indentation.intersect(body[0]); + } + } + return body; + } + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, Project project, + IDrawingObserver drawingObserver) { + if (checkPointsClipped(g2d.getClip())) { + return; + } + Area mainArea = getBody()[0]; + + Composite oldComposite = g2d.getComposite(); + if (alpha < MAX_ALPHA) { + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA)); + } + g2d.setColor(outlineMode ? Constants.TRANSPARENT_COLOR : getBodyColor()); + g2d.fill(mainArea); + g2d.setComposite(oldComposite); + + Color finalBorderColor; + if (outlineMode) { + Theme theme = + (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); + finalBorderColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : theme.getOutlineColor(); + } else { + finalBorderColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : getBorderColor(); + } + g2d.setColor(finalBorderColor); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); + if (outlineMode) { + Area area = new Area(mainArea); + area.subtract(getBody()[1]); + g2d.draw(area); + } else { + g2d.draw(mainArea); + if (getBody()[1] != null) { + g2d.setColor(getIndentColor()); + g2d.fill(getBody()[1]); + } + } + + if (!outlineMode) { + int pinSize = (int) PIN_SIZE.convertToPixels() / 2 * 2; + for (Point point : controlPoints) { + g2d.setColor(PIN_COLOR); + g2d.fillOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + g2d.setColor(PIN_BORDER_COLOR); + g2d.drawOval(point.x - pinSize / 2, point.y - pinSize / 2, pinSize, pinSize); + } + } + + // Draw label. + g2d.setFont(LABEL_FONT); + Color finalLabelColor; + if (outlineMode) { + Theme theme = + (Theme) ConfigurationManager.getInstance().readObject(IPlugInPort.THEME_KEY, Constants.DEFAULT_THEME); + finalLabelColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED + : theme.getOutlineColor(); + } else { + finalLabelColor = + componentState == ComponentState.SELECTED || componentState == ComponentState.DRAGGING ? LABEL_COLOR_SELECTED + : getLabelColor(); + } + g2d.setColor(finalLabelColor); + FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont()); + String label = ""; + label = (getDisplay() == Display.NAME) ? getName() : getValue(); + if (getDisplay() == Display.NONE) { + label = ""; + } + if (getDisplay() == Display.BOTH) { + label = getName() + " " + (getValue() == null ? "" : getValue().toString()); + } + Rectangle2D rect = fontMetrics.getStringBounds(label, g2d); + int textHeight = (int) (rect.getHeight()); + int textWidth = (int) (rect.getWidth()); + // Center text horizontally and vertically + Rectangle bounds = mainArea.getBounds(); + int x = bounds.x + (bounds.width - textWidth) / 2; + int y = bounds.y + (bounds.height - textHeight) / 2 + fontMetrics.getAscent(); + g2d.drawString(label, x, y); + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int radius = 6 * width / 32; + g2d.setColor(BODY_COLOR); + g2d.fillRoundRect(width / 6, 1, 4 * width / 6, height - 4, radius, radius); + g2d.setColor(BORDER_COLOR); + g2d.drawRoundRect(width / 6, 1, 4 * width / 6, height - 4, radius, radius); + int pinSize = 2 * width / 32; + g2d.setColor(PIN_COLOR); + for (int i = 0; i < 4; i++) { + if (i == 1) + continue; + g2d.fillOval(width / 3 - pinSize, (height / 5) * (i + 1) - 1, pinSize, pinSize); + g2d.fillOval(2 * width / 3 + 1, (height / 5) * (i + 1) - 1, pinSize, pinSize); + } + } + + @EditableProperty(name = "Body") + public Color getBodyColor() { + if (bodyColor == null) { + bodyColor = BODY_COLOR; + } + return bodyColor; + } + + public void setBodyColor(Color bodyColor) { + this.bodyColor = bodyColor; + } + + @EditableProperty(name = "Border") + public Color getBorderColor() { + if (borderColor == null) { + borderColor = BORDER_COLOR; + } + return borderColor; + } + + public void setBorderColor(Color borderColor) { + this.borderColor = borderColor; + } + + @EditableProperty(name = "Label") + public Color getLabelColor() { + if (labelColor == null) { + labelColor = LABEL_COLOR; + } + return labelColor; + } + + public void setLabelColor(Color labelColor) { + this.labelColor = labelColor; + } + + @EditableProperty(name = "Indent") + public Color getIndentColor() { + if (indentColor == null) { + indentColor = INDENT_COLOR; + } + return indentColor; + } + + public void setIndentColor(Color indentColor) { + this.indentColor = indentColor; + } + + public static enum PinCount { + + _3, _4, _5; + + @Override + public String toString() { + return name().replace("_", "").concat(" per side"); + } + + public int getValue() { + return Integer.parseInt(name().replace("_", "")); + } + } +} diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/DIL_IC.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/DIL_IC.java index 3082a46e..be11a591 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/DIL_IC.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/DIL_IC.java @@ -119,6 +119,9 @@ public class DIL_IC extends AbstractTransparentComponent { public void setPinSpacing(Size pinSpacing) { this.pinSpacing = pinSpacing; + updateControlPoints(); + // Reset body shape; + body = null; } @EditableProperty(name = "Row spacing") diff --git a/diylc/diylc-library/src/org/diylc/components/semiconductors/SIL_IC.java b/diylc/diylc-library/src/org/diylc/components/semiconductors/SIL_IC.java index 8208e5cd..74122b27 100644 --- a/diylc/diylc-library/src/org/diylc/components/semiconductors/SIL_IC.java +++ b/diylc/diylc-library/src/org/diylc/components/semiconductors/SIL_IC.java @@ -116,6 +116,9 @@ public class SIL_IC extends AbstractTransparentComponent { public void setPinSpacing(Size pinSpacing) { this.pinSpacing = pinSpacing; + updateControlPoints(); + // Reset body shape; + body = null; } @EditableProperty diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar index 4bea9e260a430c2df6d36fc022e82b692d44895f..5fd16a80e6d30e1313733a699437bf10730aeb9f 100644 GIT binary patch delta 31631 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 L_nRvsmx%uZuLzki diff --git a/diylc/diylc-swing/update.xml b/diylc/diylc-swing/update.xml index 0ce2d206..efc96b6f 100644 --- a/diylc/diylc-swing/update.xml +++ b/diylc/diylc-swing/update.xml @@ -1412,8 +1412,8 @@ NEW_FEATURE - SMD capacitor and resistor added - + Subminiature DIL relay added + NEW_FEATURE Battery schematic symbol added @@ -1424,6 +1424,10 @@ NEW_FEATURE + SMD capacitor and resistor added + + + IMPROVEMENT Tube, transistor and potentiometer symbols can be rotated