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 33d05d68..bc4d624d 100644 Binary files a/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar and b/ diy-layout-creator --username bancika@gmail.com/DIYLC/library/main.jar differ diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractComponent.java index 414c63c3..f4d809b7 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractComponent.java @@ -1,5 +1,8 @@ package org.diylc.components; +import java.awt.Color; +import java.awt.Font; + import org.diylc.core.IDIYComponent; import org.diylc.core.annotations.EditableProperty; @@ -16,6 +19,11 @@ public abstract class AbstractComponent implements IDIYComponent { private static final long serialVersionUID = 1L; protected String name = ""; + + public static Color SELECTION_COLOR = Color.red; + public static Color LABEL_COLOR = Color.black; + public static Color LABEL_COLOR_SELECTED = Color.red; + public static Font LABEL_FONT = new Font("Tahoma", Font.PLAIN, 12); @EditableProperty(defaultable = false) @Override diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java index 0b7d3e0c..d1370e65 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/components/AbstractLeadedComponent.java @@ -19,7 +19,6 @@ import org.diylc.core.VisibilityPolicy; import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -import org.diylc.utils.Constants; /** * Base class for all leaded components such as resistors or capacitors. Has two @@ -33,8 +32,6 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp private static final long serialVersionUID = 1L; public static Color LEAD_COLOR = Color.decode("#236B8E"); - public static Color LABEL_COLOR = Color.black; - public static Color LABEL_COLOR_SELECTED = Color.red; public static Size LEAD_THICKNESS = new Size(0.6d, SizeUnit.mm); public static Size DEFAULT_SIZE = new Size(1d, SizeUnit.in); @@ -45,6 +42,7 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp new Point(DEFAULT_SIZE.convertToPixels() / 2, 0) }; protected Color bodyColor = getDefaultBodyColor(); protected Color borderColor = getDefaultBorderColor(); + protected Color labelColor = LABEL_COLOR; protected Display display = Display.NAME; protected AbstractLeadedComponent() { @@ -124,10 +122,8 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp // Do not track the label because that area was already covered. drawingObserver.stopTracking(); // Draw label. - g2d.setFont(Constants.LABEL_FONT); - g2d - .setColor(componentState == ComponentState.SELECTED ? LABEL_COLOR_SELECTED - : getLabelColor()); + g2d.setFont(LABEL_FONT); + g2d.setColor(componentState == ComponentState.SELECTED ? LABEL_COLOR_SELECTED : labelColor); FontMetrics fontMetrics = g2d.getFontMetrics(); String label = display == Display.NAME ? getName() : getValue().toString(); // Adjust label angle if needed to make sure that it's readable. @@ -144,10 +140,6 @@ public abstract class AbstractLeadedComponent extends AbstractTransparentComp // Do nothing. } - protected Color getLabelColor() { - return LABEL_COLOR; - } - protected boolean shouldShadeLeads() { return true; } 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 b6671f9a..a46f57dc 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 @@ -1,6 +1,5 @@ package org.diylc.core; -import java.awt.Color; import java.awt.Graphics2D; import java.awt.Point; import java.io.Serializable; @@ -37,10 +36,9 @@ public interface IDIYComponent extends Serializable { public static final int BELOW_BOARD = 4; public static final int BOARD = 5; public static final int ABOVE_BOARD = 6; - public static final int COMPONENT = 7; - public static final int ABOVE_COMPONENT = 8; - - public static Color SELECTION_COLOR = Color.red; + public static final int BELOW_COMPONENT = 7; + public static final int COMPONENT = 8; + public static final int ABOVE_COMPONENT = 9; /** * @return component instance name. diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/AbstractMeasure.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/AbstractMeasure.java index 385a3e69..0245fba9 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/AbstractMeasure.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/core/measures/AbstractMeasure.java @@ -8,7 +8,7 @@ public class AbstractMeasure> implements Serializ private static final long serialVersionUID = 1L; - protected static final Format format = new DecimalFormat("#.00##"); + protected static final Format format = new DecimalFormat("0.####"); protected Double value; protected T unit; diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/EditMenuPlugin.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/EditMenuPlugin.java index f3fc26ce..8985dcbb 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/EditMenuPlugin.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/clipboard/EditMenuPlugin.java @@ -41,7 +41,7 @@ public class EditMenuPlugin implements IPlugIn, ClipboardOwner { private Clipboard clipboard; private Cloner cloner; - private CutAction cutAction; +// private CutAction cutAction; private CopyAction copyAction; private PasteAction pasteAction; @@ -72,8 +72,8 @@ public class EditMenuPlugin implements IPlugIn, ClipboardOwner { plugInPort.injectMenuAction(undoHandler.getUndoAction(), EDIT_TITLE); plugInPort.injectMenuAction(undoHandler.getRedoAction(), EDIT_TITLE); plugInPort.injectMenuAction(null, EDIT_TITLE); - cutAction = new CutAction(); - plugInPort.injectMenuAction(cutAction, EDIT_TITLE); + // cutAction = new CutAction(); + // plugInPort.injectMenuAction(cutAction, EDIT_TITLE); copyAction = new CopyAction(); plugInPort.injectMenuAction(copyAction, EDIT_TITLE); pasteAction = new PasteAction(); @@ -109,7 +109,7 @@ public class EditMenuPlugin implements IPlugIn, ClipboardOwner { private void refreshActions() { boolean enabled = !plugInPort.getSelectedComponents().isEmpty(); - cutAction.setEnabled(enabled); + // cutAction.setEnabled(enabled); copyAction.setEnabled(enabled); try { pasteAction.setEnabled(clipboard.isDataFlavorAvailable(ComponentSelection.listFlavor)); @@ -264,7 +264,8 @@ public class EditMenuPlugin implements IPlugIn, ClipboardOwner { // Save default values. for (PropertyWrapper property : editor.getDefaultedProperties()) { if (property.getValue() != null) { - plugInPort.setProjectDefaultPropertyValue(property.getName(), property.getValue()); + plugInPort.setProjectDefaultPropertyValue(property.getName(), property + .getValue()); } } } @@ -299,7 +300,8 @@ public class EditMenuPlugin implements IPlugIn, ClipboardOwner { // Save default values. for (PropertyWrapper property : editor.getDefaultedProperties()) { if (property.getValue() != null) { - plugInPort.setSelectionDefaultPropertyValue(property.getName(), property.getValue()); + plugInPort.setSelectionDefaultPropertyValue(property.getName(), property + .getValue()); } } } diff --git a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/layers/LayersMenuPlugin.java b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/layers/LayersMenuPlugin.java index c9e8f987..c0cf0f90 100644 --- a/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/layers/LayersMenuPlugin.java +++ b/ diy-layout-creator --username bancika@gmail.com/DIYLC/src/org/diylc/plugins/layers/LayersMenuPlugin.java @@ -68,9 +68,9 @@ public class LayersMenuPlugin implements IPlugIn { BELOW_CHASSIS("Below Chassis", IDIYComponent.BELOW_CHASSIS), CHASSIS("Chassis", IDIYComponent.CHASSIS), ABOVE_CHASSIS("Above Chassis", IDIYComponent.ABOVE_CHASSIS), BELOW_BOARD( "Below Board", IDIYComponent.BELOW_BOARD), BOARD("Board", IDIYComponent.BOARD), ABOVE_BOARD( - "Above Board", IDIYComponent.ABOVE_BOARD), COMPONENT("Component", - IDIYComponent.COMPONENT), ABOVE_COMPONENT("Above Component", - IDIYComponent.ABOVE_COMPONENT); + "Above Board", IDIYComponent.ABOVE_BOARD), BELOW_COMPONENT("Below Component", + IDIYComponent.BELOW_COMPONENT), COMPONENT("Component", IDIYComponent.COMPONENT), ABOVE_COMPONENT( + "Above Component", IDIYComponent.ABOVE_COMPONENT); String title; int zOrder; 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 c9f43133..b4e665f9 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,7 +2,6 @@ package org.diylc.utils; import java.awt.BasicStroke; import java.awt.Color; -import java.awt.Font; import java.awt.Stroke; import java.awt.Toolkit; @@ -14,8 +13,6 @@ public class Constants { public static Color CANVAS_COLOR = Color.white; - public static Font LABEL_FONT = new Font("Tahoma", Font.PLAIN, 12); - public static final Stroke DASHED_STROKE = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10f, new float[] { 2.0f }, 0.0f); } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar b/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar index 8af4a89a..8c227d2d 100644 Binary files a/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar and b/ diy-layout-creator --username bancika@gmail.com/Library/lib/diylc.jar differ 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 index 92f88a6a..3e23d4bc 100644 --- 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 @@ -21,7 +21,6 @@ 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 { @@ -48,7 +47,7 @@ public class BOM extends AbstractComponent { iterator.remove(); } } - g2d.setFont(Constants.LABEL_FONT); + g2d.setFont(LABEL_FONT); g2d.setColor(componentState == ComponentState.DRAGGING || componentState == ComponentState.SELECTED ? SELECTION_COLOR : COLOR); // Determine maximum name length and maximum value length to calculate @@ -99,7 +98,7 @@ public class BOM extends AbstractComponent { 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)); + g2d.setFont(LABEL_FONT.deriveFont(1f * 9 * width / 32).deriveFont(Font.PLAIN)); FontMetrics fontMetrics = g2d.getFontMetrics(); Rectangle2D rect = fontMetrics.getStringBounds("BOM", g2d); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java new file mode 100644 index 00000000..272047c0 --- /dev/null +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/misc/Label.java @@ -0,0 +1,124 @@ +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.IDrawingObserver; +import org.diylc.core.Project; +import org.diylc.core.VisibilityPolicy; +import org.diylc.core.annotations.ComponentDescriptor; +import org.diylc.core.annotations.EditableProperty; + +@ComponentDescriptor(name = "Label", author = "Branislav Stojkovic", category = "Misc", description = "User defined label", instanceNamePrefix = "L", zOrder = IDIYComponent.ABOVE_COMPONENT, stretchable = false) +public class Label extends AbstractComponent { + + public static String DEFAULT_TEXT = "Double click to edit text"; + + private static final long serialVersionUID = 1L; + + private Point point = new Point(0, 0); + private String text = DEFAULT_TEXT; + private Font font = LABEL_FONT; + private Color color = LABEL_COLOR; + + @Override + public void draw(Graphics2D g2d, ComponentState componentState, Project project, + IDrawingObserver drawingObserver) { + g2d.setColor(componentState == ComponentState.SELECTED ? LABEL_COLOR_SELECTED : color); + g2d.setFont(font); + FontMetrics fontMetrics = g2d.getFontMetrics(); + Rectangle2D rect = fontMetrics.getStringBounds(text, g2d); + + int textHeight = (int) rect.getHeight(); + int textWidth = (int) rect.getWidth(); + + // Center text horizontally and vertically + int x = point.x - textWidth / 2; + int y = point.y - textHeight / 2 + fontMetrics.getAscent(); + + g2d.drawString(text, x, y); + } + + @Override + public void drawIcon(Graphics2D g2d, int width, int height) { + g2d.setColor(LABEL_COLOR); + g2d.setFont(LABEL_FONT.deriveFont(13f * width / 32).deriveFont(Font.PLAIN)); + + FontMetrics fontMetrics = g2d.getFontMetrics(); + Rectangle2D rect = fontMetrics.getStringBounds("Abc", g2d); + + int textHeight = (int) (rect.getHeight()); + int textWidth = (int) (rect.getWidth()); + + // Center text horizontally and vertically. + int x = (width - textWidth) / 2 + 1; + int y = (height - textHeight) / 2 + fontMetrics.getAscent(); + + g2d.drawString("Abc", x, y); + } + + @Override + public int getControlPointCount() { + return 1; + } + + @Override + public Point getControlPoint(int index) { + return point; + } + + @Override + public boolean isControlPointSticky(int index) { + return false; + } + + @Override + public VisibilityPolicy getControlPointVisibilityPolicy(int index) { + return VisibilityPolicy.NEVER; + } + + @Override + public void setControlPoint(Point point, int index) { + this.point.setLocation(point); + } + + @EditableProperty(defaultable = false) + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + @EditableProperty + public Color getColor() { + return color; + } + + public void setColor(Color color) { + this.color = color; + } + + @Override + public String getName() { + return super.getName(); + } + + @Deprecated + @Override + 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 index 7be9270e..6c6d9b11 100644 --- 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 @@ -16,7 +16,6 @@ import org.diylc.core.VisibilityPolicy; 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 { @@ -32,7 +31,7 @@ public class ProjectInformation extends AbstractComponent { @Override public void draw(Graphics2D g2d, ComponentState componentState, Project project, IDrawingObserver drawingObserver) { - g2d.setFont(Constants.LABEL_FONT); + g2d.setFont(LABEL_FONT); g2d.setColor(componentState == ComponentState.DRAGGING || componentState == ComponentState.SELECTED ? SELECTION_COLOR : COLOR); // FontMetrics fontMetrics = g2d.getFontMetrics(); @@ -45,7 +44,7 @@ public class ProjectInformation extends AbstractComponent { 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)); + g2d.setFont(LABEL_FONT.deriveFont(1f * 9 * width / 32).deriveFont(Font.PLAIN)); FontMetrics fontMetrics = g2d.getFontMetrics(); Rectangle2D rect = fontMetrics.getStringBounds("BOM", g2d); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AbstractPotentiometer.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AbstractPotentiometer.java index a189c4da..9662613c 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AbstractPotentiometer.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/AbstractPotentiometer.java @@ -17,7 +17,7 @@ public abstract class AbstractPotentiometer extends AbstractComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerPanel.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerPanel.java index a7999dd5..1884daa0 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerPanel.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerPanel.java @@ -1,6 +1,7 @@ package org.diylc.components.passive; import java.awt.Color; +import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.geom.Area; @@ -19,7 +20,7 @@ import org.diylc.core.annotations.EditableProperty; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Potentiometer (panel mount)", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.SINGLE_CLICK, instanceNamePrefix = "VR", description = "test", zOrder = IDIYComponent.ABOVE_COMPONENT, stretchable = false) +@ComponentDescriptor(name = "Potentiometer (panel mount)", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.SINGLE_CLICK, instanceNamePrefix = "VR", description = "Panel mount potentiometer with solder lugs", zOrder = IDIYComponent.ABOVE_COMPONENT, stretchable = false) public class PotentiometerPanel extends AbstractPotentiometer { private static final long serialVersionUID = 1L; @@ -32,8 +33,10 @@ public class PotentiometerPanel extends AbstractPotentiometer { protected Size bodyDiameter = BODY_DIAMETER; protected Size spacing = SPACING; + protected Size lugDiameter = LUG_DIAMETER; protected Color bodyColor = BODY_COLOR; protected Color borderColor = BORDER_COLOR; + // Array of 7 elements: 3 lug connectors, 1 pot body and 3 lugs protected Area[] body = null; public PotentiometerPanel() { @@ -72,8 +75,8 @@ public class PotentiometerPanel extends AbstractPotentiometer { body = new Area[7]; // Add lugs. - int lugDiameter = getClosestOdd(LUG_DIAMETER.convertToPixels()); - int holeDiameter = getClosestOdd(LUG_DIAMETER.convertToPixels() / 2); + int lugDiameter = getClosestOdd(this.lugDiameter.convertToPixels()); + int holeDiameter = getClosestOdd(this.lugDiameter.convertToPixels() / 2); for (int i = 0; i < 3; i++) { Area area = new Area(new Ellipse2D.Double(controlPoints[i].x - lugDiameter / 2, controlPoints[i].y - lugDiameter / 2, lugDiameter, lugDiameter)); @@ -160,16 +163,62 @@ public class PotentiometerPanel extends AbstractPotentiometer { if (shape != null) { g2d.setColor(bodyColor); g2d.fill(shape); - g2d.setColor(borderColor); + g2d.setColor(componentState == ComponentState.SELECTED + || componentState == ComponentState.DRAGGING ? SELECTION_COLOR + : borderColor); g2d.draw(shape); } } + // Draw caption. + g2d.setFont(LABEL_FONT); + g2d + .setColor(componentState == ComponentState.SELECTED ? LABEL_COLOR_SELECTED + : LABEL_COLOR); + FontMetrics fontMetrics = g2d.getFontMetrics(); + Rectangle2D bodyRect = getBody()[3].getBounds2D(); + Rectangle2D rect = fontMetrics.getStringBounds(getName(), g2d); + + int textHeight = (int) rect.getHeight(); + int textWidth = (int) rect.getWidth(); + int panelHeight = (int) bodyRect.getHeight(); + int panelWidth = (int) bodyRect.getWidth(); + + int x = (panelWidth - textWidth) / 2; + int y = panelHeight / 2 - textHeight + fontMetrics.getAscent(); + + g2d.drawString(getName(), (int) (bodyRect.getX() + x), (int) (bodyRect.getY() + y)); + + // Draw value. + rect = fontMetrics.getStringBounds(getValue().toString(), g2d); + + textHeight = (int) rect.getHeight(); + textWidth = (int) rect.getWidth(); + + x = (panelWidth - textWidth) / 2; + y = panelHeight / 2 + fontMetrics.getAscent(); + + g2d.drawString(getValue().toString(), (int) (bodyRect.getX() + x), + (int) (bodyRect.getY() + y)); } @Override public void drawIcon(Graphics2D g2d, int width, int height) { - // TODO Auto-generated method stub - + int margin = 4 * width / 32; + int spacing = width / 3; + g2d.setColor(BORDER_COLOR); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2 * width / 32)); + g2d.drawLine(width / 2 - spacing, height / 2, width / 2 - spacing, height - margin); + g2d.drawLine(width / 2 + spacing, height / 2, width / 2 + spacing, height - margin); + g2d.drawLine(width / 2, height / 2, width / 2, height - margin); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(4 * width / 32)); + g2d.drawLine(width / 2 - spacing, height - margin, width / 2 - spacing, height - margin); + g2d.drawLine(width / 2 + spacing, height - margin, width / 2 + spacing, height - margin); + g2d.drawLine(width / 2, height - margin, width / 2, height - margin); + g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); + g2d.setColor(BODY_COLOR); + g2d.fillOval(margin, margin / 2, width - 2 * margin, height - 2 * margin); + g2d.setColor(BORDER_COLOR); + g2d.drawOval(margin, margin / 2, width - 2 * margin, height - 2 * margin); } @EditableProperty @@ -192,6 +241,15 @@ public class PotentiometerPanel extends AbstractPotentiometer { this.bodyDiameter = bodyDiameter; } + @EditableProperty(name = "Lug size") + public Size getLugDiameter() { + return lugDiameter; + } + + public void setLugDiameter(Size lugDiameter) { + this.lugDiameter = lugDiameter; + } + @EditableProperty(name = "Body") public Color getBodyColor() { return bodyColor; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerValue.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerValue.java index 00efd2b3..26f3caee 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerValue.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/PotentiometerValue.java @@ -23,6 +23,6 @@ public class PotentiometerValue { @Override public String toString() { - return resistance.toString() + taper.toString(); + return resistance.toString() + " " + taper.toString(); } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java index aa015cc1..38f6b763 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialCeramicDiskCapacitor.java @@ -15,7 +15,7 @@ import org.diylc.core.measures.CapacitanceUnit; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Ceramic Capacitor (radial)", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "test", zOrder = IDIYComponent.COMPONENT) +@ComponentDescriptor(name = "Ceramic Capacitor (radial)", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "Standard radial ceramic capacitor", zOrder = IDIYComponent.COMPONENT) public class RadialCeramicDiskCapacitor extends AbstractLeadedComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialFilmCapacitor.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialFilmCapacitor.java index 77366b40..19296332 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialFilmCapacitor.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/RadialFilmCapacitor.java @@ -15,7 +15,7 @@ import org.diylc.core.measures.CapacitanceUnit; import org.diylc.core.measures.Size; import org.diylc.core.measures.SizeUnit; -@ComponentDescriptor(name = "Film Capacitor (radial)", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "test", zOrder = IDIYComponent.COMPONENT) +@ComponentDescriptor(name = "Film Capacitor (radial)", author = "Branislav Stojkovic", category = "Passive", creationMethod = CreationMethod.POINT_BY_POINT, instanceNamePrefix = "C", description = "Radial film capacitor, similar to Sprague Orange Drop", zOrder = IDIYComponent.COMPONENT) public class RadialFilmCapacitor extends AbstractLeadedComponent { private static final long serialVersionUID = 1L; diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Taper.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Taper.java index 372e3294..d92983aa 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Taper.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/passive/Taper.java @@ -2,5 +2,11 @@ package org.diylc.components.passive; public enum Taper { - LINEAR, LOG, REVERSE_LOG, W, S + LIN, LOG, REV_LOG, W, S; + + @Override + public String toString() { + return name().substring(0, 1).toUpperCase() + + name().substring(1).toLowerCase().replace("_", ""); + } } diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java index 62a252a2..3ae26731 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DIL_IC.java @@ -23,7 +23,6 @@ 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 = "DIL IC", author = "Branislav Stojkovic", category = "Semiconductors", instanceNamePrefix = "IC", description = "test", stretchable = false, zOrder = IDIYComponent.COMPONENT) public class DIL_IC extends AbstractTransparentComponent { @@ -125,12 +124,12 @@ public class DIL_IC extends AbstractTransparentComponent { public Point getControlPoint(int index) { return controlPoints[index]; } - + @Override public boolean isControlPointSticky(int index) { return true; } - + @Override public VisibilityPolicy getControlPointVisibilityPolicy(int index) { return VisibilityPolicy.NEVER; @@ -249,7 +248,7 @@ public class DIL_IC extends AbstractTransparentComponent { g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(1)); g2d.draw(getBody()); // Draw label. - g2d.setFont(Constants.LABEL_FONT); + g2d.setFont(LABEL_FONT); g2d.setColor(LABEL_COLOR); FontMetrics fontMetrics = g2d.getFontMetrics(g2d.getFont()); Rectangle2D rect = fontMetrics.getStringBounds(getName(), g2d); diff --git a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java index 7d02fd2f..d0118346 100644 --- a/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java +++ b/ diy-layout-creator --username bancika@gmail.com/Library/src/org/diylc/components/semiconductors/DiodePlastic.java @@ -30,6 +30,7 @@ public class DiodePlastic extends AbstractLeadedComponent { public DiodePlastic() { super(); + this.labelColor = LABEL_COLOR; } @EditableProperty @@ -74,11 +75,6 @@ public class DiodePlastic extends AbstractLeadedComponent { return BORDER_COLOR; } - @Override - protected Color getLabelColor() { - return LABEL_COLOR; - } - @Override protected Shape getBodyShape() { return new Rectangle2D.Double(0f, 0f, getWidth().convertToPixels(),