improved electrolytic cap and resistor

This commit is contained in:
bancika
2011-01-29 21:55:51 +00:00
parent 22185a2d14
commit a42592410e
8 changed files with 128 additions and 35 deletions
@@ -1,24 +1,15 @@
<map> <map>
<entry> <entry>
<string>lastPath</string> <string>metric</string>
<string>C:\Documents and Settings\Branislav Stojkovic\Desktop</string> <boolean>true</boolean>
</entry> </entry>
<entry> <entry>
<string>zoom</string> <string>zoom</string>
<double>1.0</double> <double>1.0</double>
</entry> </entry>
<entry> <entry>
<string>metric</string> <string>lastPath</string>
<boolean>true</boolean> <string>C:\Documents and Settings\Branislav Stojkovic\Desktop</string>
</entry>
<entry>
<string>default.org.diylc.components.misc.Label:Color</string>
<awt-color>
<red>255</red>
<green>0</green>
<blue>0</blue>
<alpha>255</alpha>
</awt-color>
</entry> </entry>
<entry> <entry>
<string>showTemplatesAtStartup</string> <string>showTemplatesAtStartup</string>
@@ -0,0 +1,5 @@
package org.diylc.common;
public enum Power {
}
@@ -0,0 +1,26 @@
package org.diylc.swing.gui.editor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import org.diylc.common.PropertyWrapper;
public class BooleanEditor extends JCheckBox {
private static final long serialVersionUID = 1L;
public BooleanEditor(final PropertyWrapper property) {
super();
setSelected((Boolean) property.getValue());
addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
property.setValue(isSelected());
}
});
}
}
@@ -37,8 +37,13 @@ public class FieldEditorFactory {
} }
if (Byte.class.isAssignableFrom(property.getType()) if (Byte.class.isAssignableFrom(property.getType())
|| byte.class.isAssignableFrom(property.getType())) { || byte.class.isAssignableFrom(property.getType())) {
ByteEditor byteEditor = new ByteEditor(property); ByteEditor editor = new ByteEditor(property);
return byteEditor; return editor;
}
if (Boolean.class.isAssignableFrom(property.getType())
|| boolean.class.isAssignableFrom(property.getType())) {
BooleanEditor editor = new BooleanEditor(property);
return editor;
} }
LOG.error("Unrecognized parameter type: " + property.getType().getName()); LOG.error("Unrecognized parameter type: " + property.getType().getName());
return new JLabel("Unrecognized"); return new JLabel("Unrecognized");
@@ -86,6 +86,10 @@
<changeType>BUG_FIX</changeType> <changeType>BUG_FIX</changeType>
<description>Curved trace does not show control points</description> <description>Curved trace does not show control points</description>
</com.diyfever.gui.update.Change> </com.diyfever.gui.update.Change>
<com.diyfever.gui.update.Change>
<changeType>BUG_FIX</changeType>
<description>Potentiometer draws wrong at 180 degrees</description>
</com.diyfever.gui.update.Change>
<com.diyfever.gui.update.Change> <com.diyfever.gui.update.Change>
<changeType>IMPROVEMENT</changeType> <changeType>IMPROVEMENT</changeType>
<description>Resistor can show color bands</description> <description>Resistor can show color bands</description>
@@ -3,8 +3,11 @@ package org.diylc.components.passive;
import java.awt.Color; import java.awt.Color;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Shape; import java.awt.Shape;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D; import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import org.diylc.common.ObjectCache;
import org.diylc.components.AbstractLeadedComponent; import org.diylc.components.AbstractLeadedComponent;
import org.diylc.core.CreationMethod; import org.diylc.core.CreationMethod;
import org.diylc.core.IDIYComponent; import org.diylc.core.IDIYComponent;
@@ -21,13 +24,16 @@ public class ElectrolyticRadial extends AbstractLeadedComponent<Capacitance> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static Size DEFAULT_SIZE = new Size(1d / 2, SizeUnit.in); public static Size DEFAULT_SIZE = new Size(1d / 2, SizeUnit.in);
public static Color BODY_COLOR = Color.decode("#27408B"); public static Color BODY_COLOR = Color.decode("#EAADEA");
public static Color BORDER_COLOR = BODY_COLOR.darker(); public static Color BORDER_COLOR = BODY_COLOR.darker();
public static Color COVER_COLOR = Color.decode("#C3E4ED"); public static Color MARKER_COLOR = Color.gray;// Color.decode("#C3E4ED");
public static Color TICK_COLOR = Color.white;
private Capacitance value = new Capacitance(1d, CapacitanceUnit.uF); private Capacitance value = new Capacitance(1d, CapacitanceUnit.uF);
private Color coverColor = COVER_COLOR; private Color markerColor = MARKER_COLOR;
private Color tickColor = TICK_COLOR;
private boolean polarized = true;
public ElectrolyticRadial() { public ElectrolyticRadial() {
super(); super();
@@ -46,23 +52,55 @@ public class ElectrolyticRadial extends AbstractLeadedComponent<Capacitance> {
public void drawIcon(Graphics2D g2d, int width, int height) { public void drawIcon(Graphics2D g2d, int width, int height) {
g2d.setColor(BODY_COLOR); g2d.setColor(BODY_COLOR);
g2d.fillOval(6, 6, width - 12, width - 12); int margin = 3;
Ellipse2D body = new Ellipse2D.Double(margin, margin, getClosestOdd(width - 2 * margin),
getClosestOdd(width - 2 * margin));
g2d.fill(body);
Area marker = new Area(body);
marker.subtract(new Area(new Rectangle2D.Double(margin, margin, width - 4 * margin,
getClosestOdd(width - 2 * margin))));
g2d.setColor(MARKER_COLOR);
g2d.fill(marker);
g2d.setColor(TICK_COLOR);
g2d.drawLine(width - 2 * margin, height / 2 - 2, width - 2 * margin, height / 2 + 2);
g2d.setColor(BORDER_COLOR); g2d.setColor(BORDER_COLOR);
g2d.drawOval(6, 6, width - 12, width - 12); g2d.draw(body);
// g2d.setColor(COVER_COLOR.darker());
// g2d.drawLine(innerMargin + 2, innerMargin + 2, width - innerMargin -
// 2, width - innerMargin
// - 2);
// g2d.drawLine(innerMargin + 2, width - innerMargin - 2, width -
// innerMargin - 2,
// innerMargin + 2);
} }
@Override @Override
protected void decorateComponentBody(Graphics2D g2d) { protected void decorateComponentBody(Graphics2D g2d) {
int totalDiameter = getClosestOdd(getLength().convertToPixels()); if (polarized) {
int coverDiameter = getClosestOdd(totalDiameter * 3 / 4); int totalDiameter = getClosestOdd(getLength().convertToPixels());
g2d.setColor(coverColor); Area area = new Area(getBodyShape());
int position = (totalDiameter - coverDiameter) / 2; area
g2d.fillOval(position, position, coverDiameter, coverDiameter); .subtract(new Area(new Rectangle2D.Double(0, 0, totalDiameter * 0.8,
g2d.setColor(coverColor.darker()); totalDiameter)));
g2d.drawLine(position + coverDiameter / 5, position + coverDiameter / 5, position + 4 g2d.setColor(markerColor);
* coverDiameter / 5, position + 4 * coverDiameter / 5); g2d.fill(area);
g2d.drawLine(position + coverDiameter / 5, position + 4 * coverDiameter / 5, position + 4 g2d.setColor(tickColor);
* coverDiameter / 5, position + coverDiameter / 5); g2d.setStroke(ObjectCache.getInstance().fetchBasicStroke(2));
g2d.drawLine((int) (totalDiameter * 0.9), totalDiameter / 2
- (int) (totalDiameter * 0.05), (int) (totalDiameter * 0.9), totalDiameter / 2
+ (int) (totalDiameter * 0.05));
}
// int coverDiameter = getClosestOdd(totalDiameter * 3 / 4);
// g2d.setColor(coverColor);
// int position = (totalDiameter - coverDiameter) / 2;
// g2d.fillOval(position, position, coverDiameter, coverDiameter);
// g2d.setColor(coverColor.darker());
// g2d.drawLine(position + coverDiameter / 5, position + coverDiameter /
// 5, position + 4
// * coverDiameter / 5, position + 4 * coverDiameter / 5);
// g2d.drawLine(position + coverDiameter / 5, position + 4 *
// coverDiameter / 5, position + 4
// * coverDiameter / 5, position + coverDiameter / 5);
} }
@Override @Override
@@ -88,13 +126,31 @@ public class ElectrolyticRadial extends AbstractLeadedComponent<Capacitance> {
return super.getLength(); return super.getLength();
} }
@EditableProperty(name = "Cover") @EditableProperty(name = "Marker")
public Color getCoverColor() { public Color getMarkerColor() {
return coverColor; return markerColor;
} }
public void setCoverColor(Color coverColor) { public void setMarkerColor(Color coverColor) {
this.coverColor = coverColor; this.markerColor = coverColor;
}
@EditableProperty(name = "Tick")
public Color getTickColor() {
return tickColor;
}
public void setTickColor(Color tickColor) {
this.tickColor = tickColor;
}
@EditableProperty(name = "Polarized")
public boolean getPolarized() {
return polarized;
}
public void setPolarized(boolean polarized) {
this.polarized = polarized;
} }
@Override @Override
@@ -51,6 +51,12 @@ public class Resistor extends AbstractLeadedComponent<Resistance> {
g2d.drawLine(0, height / 2, width, height / 2); g2d.drawLine(0, height / 2, width, height / 2);
g2d.setColor(BODY_COLOR); g2d.setColor(BODY_COLOR);
g2d.fillRect(4, height / 2 - 3, width - 8, 6); g2d.fillRect(4, height / 2 - 3, width - 8, 6);
g2d.setColor(Color.red);
g2d.drawLine(7, height / 2 - 3, 7, height / 2 + 3);
g2d.setColor(Color.orange);
g2d.drawLine(11, height / 2 - 3, 11, height / 2 + 3);
g2d.setColor(Color.black);
g2d.drawLine(15, height / 2 - 3, 15, height / 2 + 3);
g2d.setColor(BORDER_COLOR); g2d.setColor(BORDER_COLOR);
g2d.drawRect(4, height / 2 - 3, width - 8, 6); g2d.drawRect(4, height / 2 - 3, width - 8, 6);
} }