From 521e3fda5fa96523a8199ad0979a1f125f9cdeba Mon Sep 17 00:00:00 2001 From: bancika Date: Wed, 12 Jan 2011 20:50:13 +0000 Subject: [PATCH] added bom component --- .../DIYLC/library/main.jar | Bin 241337 -> 510886 bytes .../src/org/diylc/presenter/G2DWrapper.java | 1 - .../src/org/diylc/components/misc/BOM.java | 123 ++++++++++++++++++ 3 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/BOM.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 7d470f8132c42520f7ee25c8bb8bb78e3f51728f..9f7bee7fbe8a36bbf4ae13409e4ee1bce123ab08 100644 GIT binary patch delta 66726 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 VK8-<`fIraaARyr_z(*y>{{smtjY0qb delta 637 zcmYk1O-vI(6vrns+rBkfC^TTjnrJlHnxeHAF(!Uo8WMvCE`HOH0tHH{AWDq3@c@#> zg9Y5f(*p@1b`v?(j31P?TLMvu$c;dZ5PR^X9*EJaadsM#&dbZZ`M)>6nZJn#bKA9A zdmB?4h$_NlQ(7mTX0LAkrt}5l5tdNtGiF3s0C$$a#l70J%09el=J|#w&{1YQO8KxH zR=m9DKoHn>(ZM5koHWh2=3jTv$IQ_DC-KWN)Nx;M&MEJ%x0nw4fbry+e_#tnxlgwt zH9Q+?Qlv7I)X`OhqkR8`I##W?@nNsx;mL~`mt>XumMYN9t-TV)t&wjPWhVKvQl!WJ zNCqEIX^pA1Sw*Bnr1Ra{EUYwAlOfJSNchI>dAKT!<5Dcy;@{Y=s2aaU_F>in?U2preo+Z_5b7=QUEzYfgE@4kf0`~qM)-S>_eEtc%60-IB^vex5At9ZRU^Rmj682~Z z-AUu%BD8256NChYh6e|t-FNZQD)@b?lZ3=$T_<{C_v77xfyi)sn?wAE5RVAAO30MS G#OXg2C*jBd diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/G2DWrapper.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/G2DWrapper.java index d44e37ee..eae50238 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/G2DWrapper.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/presenter/G2DWrapper.java @@ -29,7 +29,6 @@ import java.awt.geom.Point2D; import java.awt.geom.QuadCurve2D; import java.awt.geom.Rectangle2D; import java.awt.geom.RoundRectangle2D; -import java.awt.geom.CubicCurve2D.Double; import java.awt.image.BufferedImage; import java.awt.image.BufferedImageOp; import java.awt.image.ImageObserver; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/BOM.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/BOM.java new file mode 100644 index 00000000..29a3b4b6 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/BOM.java @@ -0,0 +1,123 @@ +package org.diylc.components.misc; + +import java.awt.Color; +import java.awt.FontMetrics; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.geom.Rectangle2D; +import java.util.Iterator; +import java.util.List; + +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.annotations.EditableProperty; +import org.diylc.core.measures.Size; +import org.diylc.core.measures.SizeUnit; +import org.diylc.plugins.file.BomEntry; +import org.diylc.plugins.file.BomMaker; +import org.diylc.utils.Constants; + +@ComponentDescriptor(name = "Bill of materials", author = "Branislav Stojkovic", category = "Misc", description = "", instanceNamePrefix = "BOM", zOrder = IDIYComponent.ABOVE_COMPONENT, stretchable = false) +public class BOM 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; + + private static final long serialVersionUID = 1L; + private Size size = DEFAULT_SIZE; + + private Point point = new Point(0, 0); + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, Project project) { + List bom = BomMaker.getInstance().createBom(project.getComponents()); + // Cleanup entries that do not have a value set. + Iterator iterator = bom.iterator(); + while (iterator.hasNext()) { + BomEntry entry = iterator.next(); + Object value = entry.getValue(); + if (value == null || value.toString().trim().isEmpty() + || entry.getName().toLowerCase().contains("bom")) { + iterator.remove(); + } + } + g2d.setFont(Constants.LABEL_FONT); + g2d.setColor(componentState == ComponentState.DRAGGING + || componentState == ComponentState.SELECTED ? SELECTION_COLOR : COLOR); + // Determine maximum name length and maximum value length to calculate + // number of columns. + FontMetrics fontMetrics = g2d.getFontMetrics(); + int maxNameWidth = 0; + int maxValueWidth = 0; + int maxHeight = 0; + for (BomEntry entry : bom) { + Rectangle2D stringBounds = fontMetrics.getStringBounds(entry.getName(), g2d); + if (stringBounds.getWidth() > maxNameWidth) { + maxNameWidth = (int) stringBounds.getWidth(); + } + if (stringBounds.getHeight() > maxHeight) { + maxHeight = (int) stringBounds.getHeight(); + } + stringBounds = fontMetrics.getStringBounds(entry.getValue().toString(), g2d); + if (stringBounds.getWidth() > maxValueWidth) { + maxValueWidth = (int) stringBounds.getWidth(); + } + if (stringBounds.getHeight() > maxHeight) { + maxHeight = (int) stringBounds.getHeight(); + } + } + // Calculate maximum entry size. + int maxEntrySize = maxNameWidth + maxValueWidth + 2 * SPACING.convertToPixels(); + int columnCount = size.convertToPixels() / maxEntrySize; + int columnWidth = size.convertToPixels() / columnCount; + int entriesPerColumn = (int) Math.ceil(1.d * bom.size() / columnCount); + if (entriesPerColumn == 0) { + return; + } + for (int i = 0; i < bom.size(); i++) { + int columnIndex = i / entriesPerColumn; + int rowIndex = i % entriesPerColumn; + int x = point.x + columnIndex * columnWidth; + int y = point.y + rowIndex * maxHeight; + g2d.drawString(bom.get(i).getName(), x, y); + x += maxNameWidth + SPACING.convertToPixels(); + g2d.drawString(bom.get(i).getValue().toString(), x, y); + } + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + // TODO Auto-generated method stub + + } + + @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); + } + + @EditableProperty(name = "Width") + @Override + public Size getValue() { + return size; + } + + @Override + public void setValue(Size value) { + this.size = value; + } +}