From aac45e8978477fba3d00ea18a9a1c13403dbb95a Mon Sep 17 00:00:00 2001 From: bancika Date: Wed, 12 Jan 2011 23:01:35 +0000 Subject: [PATCH] added project info component --- .../DIYLC/library/main.jar | Bin 511527 -> 515378 bytes .../src/org/diylc/components/misc/BOM.java | 29 ++++-- .../components/misc/ProjectInformation.java | 97 ++++++++++++++++++ 3 files changed, 117 insertions(+), 9 deletions(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.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 e0cb0fbad71d4259b8b24d73cd3927cb71e3ae36..7397db7d537f5a9abe7b713a8908f15efb1f1755 100644 GIT binary patch delta 8000 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 delta 4157 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 { +public class BOM extends AbstractComponent { public static Size DEFAULT_SIZE = new Size(10d, SizeUnit.cm); public static Size SPACING = Constants.GRID_SIZE; @@ -113,13 +113,16 @@ public class BOM extends AbstractComponent { g2d.drawString("BOM", x, y); g2d.setFont(g2d.getFont().deriveFont(1f * 5 * width / 32)); - + fontMetrics = g2d.getFontMetrics(); rect = fontMetrics.getStringBounds("resistors", g2d); x = (width - textWidth) / 2 + 1; - g2d.drawString("resistors", x, 4 * height / 7); - g2d.drawString("tubes", x, 5 * height / 7); - g2d.drawString("diodes", x, 6 * height / 7); + y = height / 2 + 2; + g2d.drawString("resistors", x, y); + y += rect.getHeight() - 1; + g2d.drawString("tubes", x, y); + y += rect.getHeight() - 1; + g2d.drawString("diodes", x, y); } @Override @@ -138,13 +141,21 @@ public class BOM extends AbstractComponent { } @EditableProperty(name = "Width") - @Override - public Size getValue() { + public Size getSize() { return size; } + public void setSize(Size size) { + this.size = size; + } + + @Deprecated @Override - public void setValue(Size value) { - this.size = value; + public Void getValue() { + return null; + } + + @Override + public void setValue(Void value) { } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.java new file mode 100644 index 00000000..a2dd961b --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/ProjectInformation.java @@ -0,0 +1,97 @@ +package org.diylc.components.misc; + +import java.awt.Color; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.geom.Rectangle2D; + +import org.diylc.components.AbstractComponent; +import org.diylc.core.ComponentState; +import org.diylc.core.IDIYComponent; +import org.diylc.core.Project; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; +import org.diylc.utils.Constants; + +@ComponentDescriptor(name = "Project Information", author = "Branislav Stojkovic", category = "Misc", description = "Draws a box with general project information", instanceNamePrefix = "BOM", zOrder = IDIYComponent.ABOVE_COMPONENT, stretchable = false) +public class ProjectInformation extends AbstractComponent { + + public static Size DEFAULT_SIZE = new Size(10d, SizeUnit.cm); + public static Size SPACING = Constants.GRID_SIZE; + public static Color COLOR = Color.black; + public static String DEFAULT_TEXT = "No components to show in the Bill of Materials"; + + private static final long serialVersionUID = 1L; + + private Point point = new Point(0, 0); + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, Project project) { + g2d.setFont(Constants.LABEL_FONT); + g2d.setColor(componentState == ComponentState.DRAGGING + || componentState == ComponentState.SELECTED ? SELECTION_COLOR : COLOR); + // FontMetrics fontMetrics = g2d.getFontMetrics(); + g2d.drawString(project.getTitle(), point.x, point.y); + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + g2d.setColor(Color.white); + g2d.fillRect(width / 8, 0, 6 * width / 8, height - 1); + g2d.setColor(Color.black); + g2d.drawRect(width / 8, 0, 6 * width / 8, height - 1); + g2d.setFont(Constants.LABEL_FONT.deriveFont(1f * 9 * width / 32).deriveFont(Font.PLAIN)); + + FontMetrics fontMetrics = g2d.getFontMetrics(); + Rectangle2D rect = fontMetrics.getStringBounds("BOM", g2d); + + int textHeight = (int) (rect.getHeight()); + int textWidth = (int) (rect.getWidth()); + + // Center text horizontally and vertically. + int x = (width - textWidth) / 2 + 1; + int y = textHeight + 2; + + g2d.drawString("BOM", x, y); + + g2d.setFont(g2d.getFont().deriveFont(1f * 5 * width / 32)); + + fontMetrics = g2d.getFontMetrics(); + rect = fontMetrics.getStringBounds("resistors", g2d); + x = (width - textWidth) / 2 + 1; + y = height / 2 + 2; + g2d.drawString("resistors", x, y); + y += rect.getHeight() - 1; + g2d.drawString("tubes", x, y); + y += rect.getHeight() - 1; + g2d.drawString("diodes", x, y); + } + + @Override + public int getControlPointCount() { + return 1; + } + + @Override + public Point getControlPoint(int index) { + return point; + } + + @Override + public void setControlPoint(Point point, int index) { + this.point.setLocation(point); + } + + @Deprecated + @Override + public Void getValue() { + return null; + } + + @Override + public void setValue(Void value) { + } +}