From 989e0a03e4eaf9e74a965f44696d5e6c0d31f2e4 Mon Sep 17 00:00:00 2001 From: bancika Date: Sun, 4 Mar 2012 22:41:37 +0000 Subject: [PATCH] Added MOSFET Symbol --- .../AbstractTransistorSymbol.java | 14 +----------- .../semiconductors/FETPolarity.java | 21 ++++++++++++++++++ .../semiconductors/MOSFETSymbol.java | 16 ++++++++++++- .../semiconductors/TransistorPolarity.java | 6 ----- .../diylc-swing/library/main.jar | Bin 140975 -> 141089 bytes 5 files changed, 37 insertions(+), 20 deletions(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/FETPolarity.java delete mode 100644 diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorPolarity.java diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java index a9893014..9e240460 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/AbstractTransistorSymbol.java @@ -28,8 +28,7 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent public static Size PIN_SPACING = new Size(0.1d, SizeUnit.in); public static Color COLOR = Color.black; - - protected TransistorPolarity polarity = TransistorPolarity.NPN; + protected String value = ""; protected Point[] controlPoints = new Point[] { new Point(0, 0), new Point(0, 0), new Point(0, 0) }; @@ -146,17 +145,6 @@ public abstract class AbstractTransistorSymbol extends AbstractComponent body = null; } - @EditableProperty - public TransistorPolarity getPolarity() { - return polarity; - } - - public void setPolarity(TransistorPolarity polarity) { - this.polarity = polarity; - // Invalidate body - body = null; - } - @EditableProperty public Color getColor() { return color; diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/FETPolarity.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/FETPolarity.java new file mode 100644 index 00000000..3cb4543b --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/FETPolarity.java @@ -0,0 +1,21 @@ +package org.diylc.components.semiconductors; + +public enum FETPolarity { + + NEGATIVE("Negative"), POSITIVE("Positive"); + + private String title; + + private FETPolarity(String title) { + this.title = title; + } + + public String getTitle() { + return title; + } + + @Override + public String toString() { + return title; + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/MOSFETSymbol.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/MOSFETSymbol.java index f125b4d2..5f06db0c 100644 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/MOSFETSymbol.java +++ b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/MOSFETSymbol.java @@ -8,11 +8,14 @@ import java.awt.geom.GeneralPath; import org.diylc.common.ObjectCache; import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; @ComponentDescriptor(name = "MOSFET Symbol", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "Q", description = "BJT NPN and PNP transistor", stretchable = false, zOrder = IDIYComponent.COMPONENT) public class MOSFETSymbol extends AbstractTransistorSymbol { private static final long serialVersionUID = 1L; + + protected FETPolarity polarity = FETPolarity.NEGATIVE; public Shape[] getBody() { if (body == null) { @@ -44,7 +47,7 @@ public class MOSFETSymbol extends AbstractTransistorSymbol { body[1] = polyline; Polygon arrow; - if (polarity == TransistorPolarity.PNP) { + if (polarity == FETPolarity.NEGATIVE) { arrow = new Polygon(new int[] { x + pinSpacing * 8 / 6, x + pinSpacing * 8 / 6, x + pinSpacing * 12 / 6 }, new int[] { y + pinSpacing * 6 / 5, y + pinSpacing * 4 / 5, y + pinSpacing }, 3); @@ -72,4 +75,15 @@ public class MOSFETSymbol extends AbstractTransistorSymbol { g2d.drawLine(width * 4 / 5, height - 1, width * 4 / 5, height * 3 / 4); g2d.drawLine(width * 4 / 5, height * 3 / 4, width * 3 / 5, height * 3 / 4); } + + @EditableProperty + public FETPolarity getPolarity() { + return polarity; + } + + public void setPolarity(FETPolarity polarity) { + this.polarity = polarity; + // Invalidate body + body = null; + } } diff --git a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorPolarity.java b/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorPolarity.java deleted file mode 100644 index 895f36cf..00000000 --- a/ diy-layout-creator --username bancika@gmail.com/diylc-library/src/org/diylc/components/semiconductors/TransistorPolarity.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.diylc.components.semiconductors; - -public enum TransistorPolarity { - - NPN, PNP, -} 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 fa84681387ed555a029d43a54557dc92d38fb7e0..06edcc7de1659d35061fd72b24f5f7c426d827a2 100644 GIT binary patch delta 7020 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%0AhnH;T`=o+%F43XCN2b-jzH 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