From d9f5e2e42b26c574585b39098b31bd1dfa6ee13a Mon Sep 17 00:00:00 2001 From: bancika Date: Sat, 17 Mar 2012 02:02:53 +0000 Subject: [PATCH] Plastic DC jack --- .../src/org/diylc/presenter/Presenter.java | 2 +- .../electromechanical/CliffJack1_4.java | 4 +- .../electromechanical/ClosedJack1_4.java | 4 +- .../electromechanical/PlasticDCJack.java | 219 ++++++++++++++++++ .../diylc-swing/library/main.jar | Bin 163963 -> 168182 bytes .../diylc-swing/update.xml | 18 +- 6 files changed, 241 insertions(+), 6 deletions(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/PlasticDCJack.java diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/Presenter.java index 5e05bcbd..e66354dd 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/Presenter.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-core/src/org/diylc/presenter/Presenter.java @@ -56,7 +56,7 @@ public class Presenter implements IPlugInPort { private static final Logger LOG = Logger.getLogger(Presenter.class); - public static final VersionNumber CURRENT_VERSION = new VersionNumber(3, 5, 0); + public static final VersionNumber CURRENT_VERSION = new VersionNumber(3, 6, 0); public static final String DEFAULTS_KEY_PREFIX = "default."; public static final List> EMPTY_SELECTION = Collections.emptyList(); diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/CliffJack1_4.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/CliffJack1_4.java index 61be8918..909d6423 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/CliffJack1_4.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/CliffJack1_4.java @@ -300,8 +300,8 @@ public class CliffJack1_4 extends AbstractTransparentComponent { @Override public void setControlPoint(Point point, int index) { - controlPoints[index] = point; - updateControlPoints(); + controlPoints[index].setLocation(point); + body = null; } @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/ClosedJack1_4.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/ClosedJack1_4.java index a70244f5..fc32c2fa 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/ClosedJack1_4.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/ClosedJack1_4.java @@ -291,8 +291,8 @@ public class ClosedJack1_4 extends AbstractTransparentComponent { @Override public void setControlPoint(Point point, int index) { - controlPoints[index] = point; - updateControlPoints(); + controlPoints[index].setLocation(point); + body = null; } @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/PlasticDCJack.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/PlasticDCJack.java new file mode 100644 index 00000000..a65dc4f9 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/electromechanical/PlasticDCJack.java @@ -0,0 +1,219 @@ +package org.diylc.components.electromechanical; + +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Composite; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Shape; +import java.awt.geom.Area; +import java.awt.geom.Ellipse2D; + +import org.diylc.appframework.miscutils.ConfigurationManager; +import org.diylc.common.IPlugInPort; +import org.diylc.common.ObjectCache; +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.measures.Size; +import org.diylc.core.measures.SizeUnit; +import org.diylc.utils.Constants; + +@ComponentDescriptor(name = "Plastic DC Jack", category = "Electromechanical", author = "Branislav Stojkovic", description = "Panel mount plastic DC jack", stretchable = false, zOrder = IDIYComponent.COMPONENT, instanceNamePrefix = "J") +public class PlasticDCJack extends AbstractTransparentComponent { + + private static final long serialVersionUID = 1L; + + private static Size LUG_WIDTH = new Size(0.08d, SizeUnit.in); + private static Size LUG_THICKNESS = new Size(0.02d, SizeUnit.in); + private static Size SPACING = new Size(0.1d, SizeUnit.in); + private static Size DIAMETER = new Size(0.5d, SizeUnit.in); + private static Color BODY_COLOR = Color.decode("#666666"); + private static Color PHENOLIC_COLOR = Color.decode("#E28F00"); + private static Color BORDER_COLOR = Color.black; + + private Point[] controlPoints = new Point[] { new Point(0, 0), new Point(0, 0), new Point(0, 0) }; + private String value = ""; + transient private Shape[] body; + + public PlasticDCJack() { + updateControlPoints(); + } + + private void updateControlPoints() { + // invalidate body shape + body = null; + + int x = controlPoints[0].x; + int y = controlPoints[0].y; + + int spacing = (int) SPACING.convertToPixels(); + controlPoints[1] = new Point(x + spacing, y + spacing); + controlPoints[2] = new Point(x - spacing, y + spacing * 2); + } + + public Shape[] getBody() { + if (body == null) { + body = new Shape[4]; + + int x = controlPoints[0].x; + int y = controlPoints[0].y; + int spacing = (int) SPACING.convertToPixels(); + int diameter = getClosestOdd(DIAMETER.convertToPixels()); + body[0] = new Ellipse2D.Double(x - diameter / 2, y + spacing - diameter / 2, diameter, + diameter); + + int rectWidth = (int) (diameter / Math.sqrt(2)) - 2; + body[1] = new Rectangle(x - rectWidth / 2, y + spacing - rectWidth / 2, rectWidth, + rectWidth); + + int lugWidth = getClosestOdd(LUG_WIDTH.convertToPixels()); + int lugThickness = getClosestOdd(LUG_THICKNESS.convertToPixels()); + + Point groundPoint = controlPoints[controlPoints.length - 1]; + Area groundLug = new Area(new Ellipse2D.Double(groundPoint.x + spacing - lugWidth / 2, + groundPoint.y - lugWidth / 2, lugWidth, lugWidth)); + groundLug.add(new Area(new Rectangle(groundPoint.x, groundPoint.y - lugWidth / 2, + spacing, lugWidth))); + groundLug.subtract(new Area(new Ellipse2D.Double( + groundPoint.x + spacing - lugWidth / 6, groundPoint.y - lugWidth / 6, + lugWidth / 3, lugWidth / 3))); + body[2] = groundLug; + + Area lugArea = new Area(); + for (int i = 0; i < controlPoints.length; i++) { + Point point = controlPoints[i]; + if (i == getControlPointCount() - 1) { + lugArea.add(new Area(new Rectangle(point.x - lugThickness / 2, point.y + - lugWidth / 2, lugThickness, lugWidth))); + } else { + lugArea.add(new Area(new Rectangle(point.x - lugWidth / 2, point.y + - lugThickness / 2, lugWidth, lugThickness))); + } + } + body[3] = lugArea; + } + return body; + } + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, + Project project, IDrawingObserver drawingObserver) { + Shape[] body = getBody(); + + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); + if (componentState != ComponentState.DRAGGING) { + 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 : BODY_COLOR); + g2d.fill(body[0]); + if (!outlineMode) { + g2d.setColor(PHENOLIC_COLOR); + g2d.fill(body[1]); + } + 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 : BORDER_COLOR; + } + + g2d.setColor(finalBorderColor); + g2d.draw(body[0]); + if (!outlineMode) { + g2d.setColor(PHENOLIC_COLOR.darker()); + g2d.draw(body[1]); + + g2d.setColor(METAL_COLOR); + g2d.fill(body[2]); + g2d.setColor(METAL_COLOR.darker()); + g2d.draw(body[2]); + } + + g2d.setColor(METAL_COLOR); + g2d.fill(body[3]); + g2d.setColor(METAL_COLOR.darker()); + g2d.draw(body[3]); + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + int margin = 2 * 32 / width; + int diameter = getClosestOdd(width - margin); + g2d.setColor(BODY_COLOR); + g2d.fillOval((width - diameter) / 2, (height - diameter) / 2, diameter, diameter); + g2d.setColor(BORDER_COLOR); + g2d.drawOval((width - diameter) / 2, (height - diameter) / 2, diameter, diameter); + int rectWidth = getClosestOdd(((width - 2 * margin) / Math.sqrt(2)) - margin / 2); + g2d.setColor(PHENOLIC_COLOR); + g2d.fillRect((width - rectWidth) / 2, (height - rectWidth) / 2, rectWidth, rectWidth); + g2d.setColor(PHENOLIC_COLOR.darker()); + g2d.drawRect((width - rectWidth) / 2, (height - rectWidth) / 2, rectWidth, rectWidth); + int lugWidth = 4 * 32 / width; + g2d.setColor(METAL_COLOR); + g2d.drawLine((width - lugWidth) / 2, height / 3, (width + lugWidth) / 2, height / 3); + g2d + .drawLine(width * 2 / 3, (height - lugWidth) / 2, width * 2 / 3, + (height + lugWidth) / 2); + g2d.fillOval((width - lugWidth) / 2, height * 2 / 3 - lugWidth / 2, lugWidth, lugWidth); + g2d.fillRect(width / 2 - lugWidth * 3 / 2, height * 2 / 3 - lugWidth / 2, lugWidth * 3 / 2, + lugWidth); + g2d.setColor(PHENOLIC_COLOR); + g2d.fillOval((width - margin) / 2, height * 2 / 3 - margin / 2, margin, margin); + } + + @Override + public int getControlPointCount() { + return controlPoints.length; + } + + @Override + public Point getControlPoint(int index) { + return controlPoints[index]; + } + + @Override + public void setControlPoint(Point point, int index) { + controlPoints[index].setLocation(point); + this.body = null; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + @Override + public boolean isControlPointSticky(int index) { + return true; + } + + @EditableProperty + @Override + public String getValue() { + return value; + } + + @Override + public void setValue(String value) { + this.value = value; + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/library/main.jar b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/library/main.jar index 46539c32af133f32e5be22626fbec2dd2064224b..41caaee01e4643bfa9faa8adc9d0bfbffdac57b9 100644 GIT binary patch delta 18769 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 z zMB*Os)-gS)04R3$Y22i$$)?I{ zcjWK$Z)nimryYZ>geRL?mUyG*f!tpXC7zL* zL@RB)brKH2s~^AMoT2#;-E6S?VCr{6-16{;o~&csg7b%Sp3yv{GWp`<0M&$e3%Az{ z>k<2>qZe`a z_`4X_+qxiNQ!zZci;`HQe%yd1wS2Nlbjq^Mx!m@+EGnwL%ff(;8zY;-f%x5YoI7+< zy`l(Xd~!`+YF{z>Z6=@hk?^9(x>D@V^)t^*kPeh6H8-$J@7HjHK zC?ZtJ=J0=**{*uy*MFYcD%9Q8KJ7^Wo??ZzX;AHOGEGjN0^z!bLlyM|yN%t+09xzJG zIIl;~f$?P?y{jFye(vzMTuB{ie~#*-OwJH97h}89)_FccFNh3O46XK3b%im_Iycol z7=q{IXbX(C1iEC?u~t@#sx*<%MotEYf944vz03ddCqrEQ?rDE}Rv(rT3w~LCFA(F? zkKox;beEjIYnnr@kXvVs?KrpOSccP2d=!PWF;m*Y=^drdY}G*Is0irGn{ygO{;-CG z`K(^4+xK*4M^13Rzah8d@*N_rDe;rxTTGnn+5U)Ry%+xD=}T_ie2-QA@JRRs_I3O7 zFyrQ_ga>_?K;Hr9TEwjqA~29~=ho=1oga&T`BeRusQVe_zcfH!Ki3-#06rv){MtY) zK1T@g$_E7TK}5&Hfq`LRC3G1PBs`x&)y6JXzx5OgZ702T8PA=zQ*0>?#^A7xV~F5}P_GfbIB{Z5BY=VF;=eEs1aDd+ zbns_{zYA$JAp)O!?Urs7qyo2njobK*3EcjTtw>ng*_(S|E0oAn?1{k18WmW<|DeA5 z$%%q%0A5jzRIMG!8hI_G1-7uzeQhj2k(26 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 F_&@!m^AP|5 diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/update.xml b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/update.xml index 0257410d..6d90d444 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-swing/update.xml +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-swing/update.xml @@ -527,7 +527,7 @@ 5 0 - 2012-03-09 20:00:00.000 CET + 2012-03-15 20:00:00.000 CET @@ -545,5 +545,21 @@ http://code.google.com/p/diy-layout-creator/downloads/list + + + 3 + 6 + 0 + + 2012-03-15 20:00:00.000 CET + + + + NEW_FEATURE + Plastic DC jack + + + http://code.google.com/p/diy-layout-creator/downloads/list + \ No newline at end of file