From 69acfcff2f281cc88fc81729fe1ecad908c00f87 Mon Sep 17 00:00:00 2001 From: bancika Date: Wed, 5 Jan 2011 00:09:11 +0000 Subject: [PATCH] simplified component framework --- .../DIYLC/library/main.jar | Bin 11671 -> 13195 bytes .../AbstractLeadedDIYComponent.java | 30 +++-- .../diylc/components/AxialFilmCapacitor.java | 4 +- .../org/diylc/components/DIL_IC.java | 105 ++++++++++++++++++ .../diylc/components/MockDIYComponent.java | 6 +- .../RadialCeramicDiskCapacitor.java | 4 +- .../diylc/components/RadialFilmCapacitor.java | 4 +- .../org/diylc/components/Resistor.java | 6 +- .../src/org/diylc/core/IDIYComponent.java | 16 ++- .../diylc/core/annotations/ComponentName.java | 16 --- .../core/annotations/ComponentValue.java | 15 --- .../src/org/diylc/plugins/file/BomMaker.java | 6 +- .../diylc/plugins/statusbar/StatusBar.java | 4 +- .../diylc/presenter/ComparatorFactory.java | 4 +- .../diylc/presenter/ComponentProcessor.java | 66 ----------- .../src/org/diylc/presenter/Presenter.java | 5 +- .../DIYLC/src/org/diylc/utils/Constants.java | 3 + 17 files changed, 145 insertions(+), 149 deletions(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/DIL_IC.java delete mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentName.java delete mode 100644 diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentValue.java diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar index 90989836a70786a450cec8e0af592d5c41ed70e6..68f93bd4724d62946d326a2109fbd49c2ac6a838 100644 GIT binary patch delta 1554 zcmYk+Yd8}M90u^Y)8;;xsT7XuTuO;y9ocxs+KEshGAfN3Gi9C8YDrkF!$fR_A(Lz7 zI+rqy#gQiAxMmcIoTNhG93Rek`oCZP@AJH$f7yZbaAhyFj4T+S_-}?~jUOv3K_UP3 zep%zgfS=BQIjN~jMS2`PPqj1E-YMN?Of(BdLNpp`jjbXh zPS`o|VtQV}<;FoyLxNpKtUOWQYyerhDY?Urhj*}UsOVW!lD~AVz$QGfvcx~w|G-Xn zogb=UbKSk*^XHXL{xMN|&W6RqjKYL3TQ87$oLUG~W?3VYFpxL8Y$xcs;L&i#Y)qM_ zdk|UxK~NWJ39)p_G$?%lmE!_y4qbVp1+vf$8E%}YOWQqXwJAvnsY)}z`~5u<@T=`Dhvdh{7CxGmmL^;& zvUI-99Ztc(MQ`$HG9a0IYvC#K5jQW#yN{+YJ@{yk+i~6Bp5i-}$>V0EY#+TB z0a=SU{ku}>CBOo{_(VJ}>Mrd;ib|V^TqA&|zvYD4=rM-C-D6ob6{X=fQZ?_Se~qPj zDHA9oh%#ZmD5K)uVAfwEx?kXfFqYNmvkXNRYb;VbiunPP49AjTXI-n?ptGhW(U~Sd zW>b@gW0!uspAXf-(&JhG33z>HK&`7#oCRT2NqMhX4>o>eVAwm*xY-uuCtc*OF3We| zOi`3VOInZF_vcJZO)z`1hI92MmFOpQuJk@KQDC~Ki?Zs{{=H&8TY=>LIl_YQ1`#20 zY@jXo0as`{f;cQ`9Jevm!XF3pMTo%=rJU13t1%Nh`zG9r{$8Z93y5<=GVuDMmNtIg zRotGe=@@vXEPoAk!w83zB;=wlmb>~5?7t4CwOQjp&09ugQt`nJ=2TJp3k4(Ju9$2r z;;^Z2B1htr(5a?_dXfaGkLN~86%AN@PCHo`5-DFbXqH5NPH^B88FV^#XlVi={pY^* z;}{2QBfmojzNKM8D@b6N1ay?8l1^$LM9(&)T0iu;8#lES z$01hEiT4whoeY1Wa!k%!_p5&a4Rz@AZyK(|73{q3rB--Zb;Azt!glAA-m(cum==Z|+wm&J5MdoO!!xcQz=hhDSC{InOS4 zOB#Ox`%-dHl`(9JIo4DlP>Ba068jIQR#z7$!M^UoZd|MOU;~rB zh)2P2>a6k%aS9SuT3yfFUDrx?HQj!R0`_IbA@2ggCt>#MLwbW*AGlF`UcI=w-dw<@ zGU}1}QSxqibT^!xD+QXPFubOlZENVSN_3m!Oqo}H2j)J>uhR+8zFWdAw^xVW@&2sT zyTv3C?FJK<3HKgSLX+pqQ9Q_L&eBCH-+rkeDG&EUj%2HfxRSK!T<&$9V%rS85R$43 z$s(GHK5ESmncZ&9IeS3;*t0#;(=lmP{SG#zui9`degkHl-bcg)e3Jlk-7ahv&#ZZB z3kfyrxr_)NJvydO*s%IS_-(aa81!RKviZadt)OTbT<3H`4ge?u0svlUDUdW6@ITi) wBWQ>;bFbBoz1vp*yfpa9Z2$laWxmnWG5ncsFSMNe_GTOY7HI&WY2SAH2ZEN(EdT%j delta 62 zcmeB9pB~K{;LXe;!oUH9D*IJ7@^WhPGBSxUz(qEnFi2n$VP#_g0(KzGWny3u(FXAV DTet}5 diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AbstractLeadedDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AbstractLeadedDIYComponent.java index 5e88d562..50f623c4 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AbstractLeadedDIYComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AbstractLeadedDIYComponent.java @@ -2,7 +2,6 @@ package org.diylc.components; import java.awt.BasicStroke; import java.awt.Color; -import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Point; @@ -12,7 +11,6 @@ import java.awt.Shape; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.VisibilityPolicy; -import org.diylc.core.annotations.ComponentName; import org.diylc.core.annotations.ControlPoint; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; @@ -25,20 +23,19 @@ import org.diylc.utils.Constants; * * @author Branislav Stojkovic */ -public abstract class AbstractLeadedDIYComponent implements IDIYComponent { +public abstract class AbstractLeadedDIYComponent implements IDIYComponent { private static final long serialVersionUID = 1L; public static Color LEAD_COLOR = Color.black; public static Color LABEL_COLOR = Color.black; public static Color LABEL_COLOR_SELECTED = Color.red; - public static Font LABEL_FONT = new Font("Tahoma", Font.BOLD, 11); protected Size width; protected Size height; protected Point point1 = new Point(0, 0); protected Point point2 = new Point((int) (Constants.GRID * 10), 0); - protected String componentName = "New Component"; + protected String name = "New Component"; protected AbstractLeadedDIYComponent() { super(); @@ -106,24 +103,23 @@ public abstract class AbstractLeadedDIYComponent implements IDIYComponent { g2d.setColor(getBorderColor()); g2d.draw(shape); // Draw label. - g2d.setFont(LABEL_FONT); + g2d.setFont(Constants.LABEL_FONT); g2d .setColor(componentState == ComponentState.SELECTED ? LABEL_COLOR_SELECTED : LABEL_COLOR); FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont()); - java.awt.geom.Rectangle2D textRect = fontMetrics.getStringBounds(getComponentName(), g2d); - g2d.drawString(getComponentName(), (int) (shapeRect.width - textRect.getWidth()) / 2, + java.awt.geom.Rectangle2D textRect = fontMetrics.getStringBounds(getName(), g2d); + g2d.drawString(getName(), (int) (shapeRect.width - textRect.getWidth()) / 2, (int) (shapeRect.height - textRect.getHeight()) / 2 + fontMetrics.getAscent()); } - @ComponentName @EditableProperty - public String getComponentName() { - return componentName; + public String getName() { + return name; } - public void setComponentName(String componentName) { - this.componentName = componentName; + public void setName(String name) { + this.name = name; } @ControlPoint(visibilityPolicy = VisibilityPolicy.WHEN_SELECTED) @@ -166,7 +162,7 @@ public abstract class AbstractLeadedDIYComponent implements IDIYComponent { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((componentName == null) ? 0 : componentName.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @@ -179,10 +175,10 @@ public abstract class AbstractLeadedDIYComponent implements IDIYComponent { if (getClass() != obj.getClass()) return false; AbstractLeadedDIYComponent other = (AbstractLeadedDIYComponent) obj; - if (componentName == null) { - if (other.componentName != null) + if (name == null) { + if (other.name != null) return false; - } else if (!componentName.equals(other.componentName)) + } else if (!name.equals(other.name)) return false; return true; } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AxialFilmCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AxialFilmCapacitor.java index eb024b86..046b2f54 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AxialFilmCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/AxialFilmCapacitor.java @@ -6,7 +6,6 @@ import java.awt.Shape; import java.awt.geom.Rectangle2D; import org.diylc.core.annotations.ComponentDescriptor; -import org.diylc.core.annotations.ComponentValue; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Capacitance; import org.diylc.core.measures.CapacitanceUnit; @@ -14,7 +13,7 @@ import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; @ComponentDescriptor(name = "Axial Film Capacitor", author = "bancika", category = "Passive", instanceNamePrefix = "C", desciption = "test") -public class AxialFilmCapacitor extends AbstractLeadedDIYComponent { +public class AxialFilmCapacitor extends AbstractLeadedDIYComponent { private static final long serialVersionUID = 1L; @@ -29,7 +28,6 @@ public class AxialFilmCapacitor extends AbstractLeadedDIYComponent { super(); } - @ComponentValue @EditableProperty public Capacitance getValue() { return value; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/DIL_IC.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/DIL_IC.java new file mode 100644 index 00000000..0e83141d --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/DIL_IC.java @@ -0,0 +1,105 @@ +package org.diylc.components; + +import java.awt.Color; +import java.awt.FontMetrics; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.geom.Rectangle2D; + +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.VisibilityPolicy; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.ControlPoint; +import org.diylc.core.annotations.EditableProperty; +import org.diylc.utils.Constants; + +@ComponentDescriptor(name = "DIL IC", author = "bancika", category = "Semiconductors", instanceNamePrefix = "IC", desciption = "test") +public class DIL_IC implements IDIYComponent { + + private static final long serialVersionUID = 1L; + + public static Color BODY_COLOR = Color.gray; + public static Color BORDER_COLOR = Color.black; + public static Color LABEL_COLOR = Color.white; + public static int EDGE_RADIUS = 6; + + private Point point1 = new Point(0, 0); + private Point point2 = new Point((int) (Constants.GRID) * 4, (int) (Constants.GRID) * 5); + private String name = "New Component"; + private String value = ""; + + @EditableProperty + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @EditableProperty + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @ControlPoint(visibilityPolicy = VisibilityPolicy.WHEN_SELECTED) + public Point getPoint1() { + return point1; + } + + public void setPoint1(Point point1) { + this.point1 = point1; + } + + @ControlPoint(visibilityPolicy = VisibilityPolicy.WHEN_SELECTED) + public Point getPoint2() { + return point2; + } + + public void setPoint2(Point point2) { + this.point2 = point2; + } + + @Override + public void draw(Graphics2D g2d, ComponentState componentState) { + int width = ((int) (Math.abs(point1.x - point2.x) / Constants.GRID)); + if (width % 2 == 1) { + width--; + } + width = (int) (width * Constants.GRID); + int height = ((int) (Math.abs(point1.y - point2.y) / Constants.GRID)); + if (height % 2 == 1) { + height--; + } + height = (int) (height * Constants.GRID); + int x = (point1.x + point2.x - width) / 2; + int y = (point1.y + point2.y - height) / 2; + if (componentState != ComponentState.DRAGGING) { + g2d.setColor(BODY_COLOR); + g2d.fillRoundRect(x, y, width, height, EDGE_RADIUS, EDGE_RADIUS); + } + g2d.setColor(BORDER_COLOR); + g2d.drawRoundRect(x, y, width, height, EDGE_RADIUS, EDGE_RADIUS); + // Draw label. + g2d.setFont(Constants.LABEL_FONT); + g2d.setColor(LABEL_COLOR); + FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont()); + Rectangle2D rect = fontMetrics.getStringBounds(getName(), g2d); + int textHeight = (int) (rect.getHeight()); + int textWidth = (int) (rect.getWidth()); + // Center text horizontally and vertically + x = (width - textWidth) / 2; + y = (height - textHeight) / 2 + fontMetrics.getAscent(); + g2d.drawString(getName(), x, y); + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + g2d.drawString("IC", 10, 10); + } +} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockDIYComponent.java index ebbf0a8d..f0942ad1 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockDIYComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/MockDIYComponent.java @@ -7,8 +7,6 @@ import java.awt.Point; import org.diylc.core.ComponentState; import org.diylc.core.IDIYComponent; import org.diylc.core.VisibilityPolicy; -import org.diylc.core.annotations.ComponentName; -import org.diylc.core.annotations.ComponentValue; import org.diylc.core.annotations.ComponentDescriptor; import org.diylc.core.annotations.ControlPoint; import org.diylc.core.annotations.EditableProperty; @@ -47,7 +45,6 @@ public class MockDIYComponent implements IDIYComponent { super(); } - @ComponentName @EditableProperty public String getName() { return name; @@ -75,9 +72,8 @@ public class MockDIYComponent implements IDIYComponent { this.testField = testField; } - @ComponentValue @EditableProperty(defaultable = true) - public Capacitance getC() { + public Capacitance getValue() { return c; } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/RadialCeramicDiskCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/RadialCeramicDiskCapacitor.java index a2f371a7..e42a0d5b 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/RadialCeramicDiskCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/RadialCeramicDiskCapacitor.java @@ -6,7 +6,6 @@ import java.awt.Shape; import java.awt.geom.Ellipse2D; import org.diylc.core.annotations.ComponentDescriptor; -import org.diylc.core.annotations.ComponentValue; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Capacitance; import org.diylc.core.measures.CapacitanceUnit; @@ -14,7 +13,7 @@ import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; @ComponentDescriptor(name = "Ceramic Capacitor", author = "bancika", category = "Passive", instanceNamePrefix = "C", desciption = "test") -public class RadialCeramicDiskCapacitor extends AbstractLeadedDIYComponent { +public class RadialCeramicDiskCapacitor extends AbstractLeadedDIYComponent { private static final long serialVersionUID = 1L; @@ -29,7 +28,6 @@ public class RadialCeramicDiskCapacitor extends AbstractLeadedDIYComponent { super(); } - @ComponentValue @EditableProperty public Capacitance getValue() { return value; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/RadialFilmCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/RadialFilmCapacitor.java index 9491d8bc..0ebd4f67 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/RadialFilmCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/RadialFilmCapacitor.java @@ -6,7 +6,6 @@ import java.awt.Shape; import java.awt.geom.RoundRectangle2D; import org.diylc.core.annotations.ComponentDescriptor; -import org.diylc.core.annotations.ComponentValue; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Capacitance; import org.diylc.core.measures.CapacitanceUnit; @@ -14,7 +13,7 @@ import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; @ComponentDescriptor(name = "Radial Film Capacitor", author = "bancika", category = "Passive", instanceNamePrefix = "C", desciption = "test") -public class RadialFilmCapacitor extends AbstractLeadedDIYComponent { +public class RadialFilmCapacitor extends AbstractLeadedDIYComponent { private static final long serialVersionUID = 1L; @@ -29,7 +28,6 @@ public class RadialFilmCapacitor extends AbstractLeadedDIYComponent { super(); } - @ComponentValue @EditableProperty public Capacitance getValue() { return value; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/Resistor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/Resistor.java index 098576a5..7fa93ada 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/Resistor.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src.library/org/diylc/components/Resistor.java @@ -6,7 +6,6 @@ import java.awt.Shape; import java.awt.geom.Rectangle2D; import org.diylc.core.annotations.ComponentDescriptor; -import org.diylc.core.annotations.ComponentValue; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Resistance; import org.diylc.core.measures.ResistanceUnit; @@ -14,7 +13,7 @@ import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; @ComponentDescriptor(name = "Resistor", author = "bancika", category = "Passive", instanceNamePrefix = "R", desciption = "test") -public class Resistor extends AbstractLeadedDIYComponent { +public class Resistor extends AbstractLeadedDIYComponent { private static final long serialVersionUID = 1L; @@ -29,12 +28,11 @@ public class Resistor extends AbstractLeadedDIYComponent { super(); } - @ComponentValue @EditableProperty public Resistance getValue() { return value; } - + public void setValue(Resistance value) { this.value = value; } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java index 343323b5..c104bac5 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/IDIYComponent.java @@ -4,8 +4,6 @@ import java.awt.Graphics2D; import java.io.Serializable; import org.diylc.core.annotations.ComponentDescriptor; -import org.diylc.core.annotations.ComponentName; -import org.diylc.core.annotations.ComponentValue; import org.diylc.core.annotations.ControlPoint; import org.diylc.core.annotations.EditableProperty; @@ -18,8 +16,6 @@ import org.diylc.core.annotations.EditableProperty; *
    *
  • Must have an empty constructor.
  • *
  • Class should be annotated with {@link ComponentDescriptor}.
  • - *
  • Exactly one getter should be annotated with {@link ComponentName}.
  • - *
  • Exactly one getter should be annotated with {@link ComponentValue}.
  • *
  • Control point getters need to be annotated with {@link ControlPoint}.
  • *
  • Getters for properties editable by users should be annotated with * {@link EditableProperty}.
  • @@ -28,8 +24,18 @@ import org.diylc.core.annotations.EditableProperty; *
* * @author Branislav Stojkovic + * + * @param + * type of component values, e.g. Resistance for resistors or String + * for transistors. */ -public interface IDIYComponent extends Serializable { +public interface IDIYComponent extends Serializable { + + String getName(); + + void setName(String name); + + T getValue(); /** * Draws the component onto the {@link Graphics2D}. diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentName.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentName.java deleted file mode 100644 index 3e119413..00000000 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentName.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.diylc.core.annotations; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** - * Annotates getter for the component name that will be shown in the BOM. Only - * one getter per class may be tagged with this annotation and, must return - * string type and there has to be a matching setter. - * - * @author Branislav Stojkovic - */ -@Retention(RetentionPolicy.RUNTIME) -public @interface ComponentName { - -} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentValue.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentValue.java deleted file mode 100644 index 1c9b53f8..00000000 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/annotations/ComponentValue.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.diylc.core.annotations; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** - * Annotates getter for the component value that will be shown in the BOM. Only - * one getter per class may be tagged with this annotation. - * - * @author Branislav Stojkovic - */ -@Retention(RetentionPolicy.RUNTIME) -public @interface ComponentValue { - -} diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/BomMaker.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/BomMaker.java index f6b93222..c90a369f 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/BomMaker.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/file/BomMaker.java @@ -8,8 +8,6 @@ import java.util.List; import java.util.Map; import org.diylc.core.IDIYComponent; -import org.diylc.presenter.ComponentProcessor; - public class BomMaker { @@ -28,8 +26,8 @@ public class BomMaker { public List createBom(List components) { Map entryMap = new HashMap(); for (IDIYComponent component : components) { - String name = ComponentProcessor.getInstance().extractComponentName(component); - String value = ComponentProcessor.getInstance().extractComponentValue(component); + String name = component.getName(); + String value = component.getValue() == null ? "" : component.getValue().toString(); if ((name != null) && (value != null)) { String key = name + "|" + value; if (entryMap.containsKey(key)) { diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java index 427efe84..22ecf815 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/statusbar/StatusBar.java @@ -25,7 +25,6 @@ import org.diylc.common.IPlugIn; import org.diylc.common.IPlugInPort; import org.diylc.core.IDIYComponent; import org.diylc.presenter.ComparatorFactory; -import org.diylc.presenter.ComponentProcessor; import com.diyfever.gui.MemoryBar; import com.diyfever.gui.miscutils.PercentageListCellRenderer; @@ -186,8 +185,7 @@ public class StatusBar extends JPanel implements IPlugIn { if (n > 1) { formattedNames += ", "; } - formattedNames += ComponentProcessor.getInstance().extractComponentName( - component);// + formattedNames += component.getName();// // + // " (" // + diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComparatorFactory.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComparatorFactory.java index f1b23abb..91b60d41 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComparatorFactory.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComparatorFactory.java @@ -23,8 +23,8 @@ public class ComparatorFactory { @Override public int compare(IDIYComponent o1, IDIYComponent o2) { - String name1 = ComponentProcessor.getInstance().extractComponentName(o1); - String name2 = ComponentProcessor.getInstance().extractComponentName(o2); + String name1 = o1.getName(); + String name2 = o2.getName(); if (name1 == null || name2 == null) { return 0; } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java index ae2b87dc..83e90024 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/ComponentProcessor.java @@ -11,8 +11,6 @@ import org.apache.log4j.Logger; import org.diylc.common.ControlPointWrapper; import org.diylc.common.PropertyWrapper; import org.diylc.core.IDIYComponent; -import org.diylc.core.annotations.ComponentName; -import org.diylc.core.annotations.ComponentValue; import org.diylc.core.annotations.ControlPoint; import org.diylc.core.annotations.EditableProperty; @@ -174,68 +172,4 @@ public class ComponentProcessor { } return properties; } - - /** - * Finds the method annotated with {@link ComponentName} annotations and - * calls it to retrieve component name. - * - * @param component - * @return - */ - public String extractComponentName(IDIYComponent component) { - String name = null; - for (Method method : component.getClass().getMethods()) { - if (method.isAnnotationPresent(ComponentName.class)) { - try { - name = method.invoke(component).toString(); - } catch (Exception e) { - name = null; - } - } - } - return name; - } - - /** - * Finds the method annotated with {@link ComponentName} and it's matching - * setter and calls the setter to update the component name. - * - * @param component - * @param newName - */ - public void writeComponentName(IDIYComponent component, String newName) { - for (Method method : component.getClass().getMethods()) { - if (method.isAnnotationPresent(ComponentName.class)) { - try { - Method setter = component.getClass().getMethod( - method.getName().replaceFirst("get", "set"), String.class); - setter.invoke(component, newName); - } catch (Exception e) { - LOG.warn("Could not update component name on a component of type " - + component.getClass().getName()); - } - } - } - } - - /** - * Finds the method annotated with {@link ComponentValue} annotations and - * calls it to retrieve component value. - * - * @param component - * @return - */ - public String extractComponentValue(IDIYComponent component) { - String value = null; - for (Method method : component.getClass().getMethods()) { - if (method.isAnnotationPresent(ComponentValue.class)) { - try { - value = method.invoke(component).toString(); - } catch (Exception e) { - value = null; - } - } - } - return value; - } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java index 48e61f38..6f16a137 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/Presenter.java @@ -716,14 +716,13 @@ public class Presenter implements IPlugInPort { String name = namePrefix + i; exists = false; for (IDIYComponent c : currentProject.getComponents()) { - String cName = ComponentProcessor.getInstance().extractComponentName(c); - if (cName.equals(name)) { + if (c.getName().equals(name)) { exists = true; break; } } } - ComponentProcessor.getInstance().writeComponentName(component, namePrefix + i); + component.setName(namePrefix + i); // Add it to the project. currentProject.getComponents().add(component); diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java index 9cd4115e..4a282fab 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/utils/Constants.java @@ -2,6 +2,7 @@ package org.diylc.utils; import java.awt.BasicStroke; import java.awt.Color; +import java.awt.Font; import java.awt.Stroke; import java.awt.Toolkit; @@ -12,6 +13,8 @@ public class Constants { public static final Color CANVAS_COLOR = Color.white; public static final Color GRID_COLOR = new Color(240, 240, 240); + public static Font LABEL_FONT = new Font("Tahoma", Font.BOLD, 11); + public static final Stroke dashedStroke = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 2.0f, new float[] { 2.0f }, 0.0f); }