added capacitor

This commit is contained in:
bancika
2011-01-04 22:47:41 +00:00
parent 872293ea0e
commit 74c7007b23
6 changed files with 144 additions and 33 deletions
@@ -31,6 +31,7 @@ public abstract class AbstractLeadedDIYComponent implements IDIYComponent {
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;
@@ -98,13 +99,17 @@ public abstract class AbstractLeadedDIYComponent implements IDIYComponent {
(point1.y + point2.y - shapeRect.height) / 2);
g2d.rotate(theta, shapeRect.width / 2, shapeRect.height / 2);
// Draw body.
g2d.setColor(getBodyColor());
g2d.fill(shape);
if (componentState != ComponentState.DRAGGING) {
g2d.setColor(getBodyColor());
g2d.fill(shape);
}
g2d.setColor(getBorderColor());
g2d.draw(shape);
// Draw label.
g2d.setFont(LABEL_FONT);
g2d.setColor(LABEL_COLOR);
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,
@@ -0,0 +1,71 @@
package org.diylc.components;
import java.awt.Color;
import java.awt.Graphics2D;
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;
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 Capacitor extends AbstractLeadedDIYComponent {
private static final long serialVersionUID = 1L;
public static Size DEFAULT_WIDTH = new Size(1d / 2, SizeUnit.in);
public static Size DEFAULT_HEIGHT = new Size(1d / 8, SizeUnit.in);
public static Color BODY_COLOR = Color.decode("#FFE303");
public static Color BORDER_COLOR = Color.decode("#B8860B");
private Capacitance value = new Capacitance(123d, CapacitanceUnit.nF);
public Capacitor() {
super();
}
@ComponentValue
@EditableProperty
public Capacitance getValue() {
return value;
}
public void setValue(Capacitance value) {
this.value = value;
}
public void drawIcon(Graphics2D g2d, int width, int height) {
g2d.drawString("C", 10, 10);
}
@Override
protected Size getDefaultHeight() {
return DEFAULT_HEIGHT;
}
@Override
protected Size getDefaultWidth() {
return DEFAULT_WIDTH;
}
@Override
protected Color getBodyColor() {
return BODY_COLOR;
}
@Override
protected Color getBorderColor() {
return BORDER_COLOR;
}
@Override
protected Shape getComponentShape() {
return new Rectangle2D.Double(0f, 0f, getWidth().convertToPixels(), getHeight()
.convertToPixels());
}
}
@@ -6,6 +6,7 @@ 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;
@@ -22,15 +23,20 @@ public class Resistor extends AbstractLeadedDIYComponent {
public static Color BODY_COLOR = Color.decode("#82CFFD");
public static Color BORDER_COLOR = Color.decode("#5D92B1");
private Resistance r = new Resistance(123d, ResistanceUnit.K);
private Resistance value = new Resistance(123d, ResistanceUnit.K);
public Resistor() {
super();
}
@ComponentValue
@EditableProperty
public Resistance getR() {
return r;
public Resistance getValue() {
return value;
}
public void setValue(Resistance value) {
this.value = value;
}
public void drawIcon(Graphics2D g2d, int width, int height) {
@@ -6,6 +6,7 @@ import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
import java.util.Map;
@@ -23,6 +24,7 @@ import org.diylc.common.EventType;
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;
@@ -166,6 +168,8 @@ public class StatusBar extends JPanel implements IPlugIn {
case AVAILABLE_CTRL_POINTS_CHANGED:
componentsUnderCursor = new ArrayList<IDIYComponent>(
((Map<IDIYComponent, ControlPointWrapper>) params[0]).keySet());
Collections.sort(componentsUnderCursor, ComparatorFactory.getInstance()
.getComponentNameComparator());
refreshStatusText();
break;
}
@@ -176,34 +180,22 @@ public class StatusBar extends JPanel implements IPlugIn {
if ((componentsUnderCursor == null) || (componentsUnderCursor.isEmpty())) {
getStatusLabel().setText("");
} else {
// String formattedNames = "";
// int n = 1;
// for (IDIYComponent component : componentsUnderCursor) {
// if (n > 1) {
// formattedNames += ", ";
// }
// formattedNames +=
// ComponentProcessor.getInstance().extractBomName(component);//
// +
// // " (<b><font color=\"blue\">"
// // +
// // n++
// // +
// // "</font></b>)";
// }
if (componentsUnderCursor.size() == 1) {
getStatusLabel().setText(
"Drag \""
+ ComponentProcessor.getInstance().extractComponentName(
componentsUnderCursor.get(0)) + "\"");
} else {
getStatusLabel().setText(
"Hold CTRL key to drag all "
+ componentsUnderCursor.size()
+ " components under the cursor or drag only \""
+ ComponentProcessor.getInstance().extractComponentName(
componentsUnderCursor.get(0)) + "\"");
String formattedNames = "";
int n = 1;
for (IDIYComponent component : componentsUnderCursor) {
if (n > 1) {
formattedNames += ", ";
}
formattedNames += ComponentProcessor.getInstance().extractComponentName(
component);//
// +
// " (<b><font color=\"blue\">"
// +
n++;
// +
// "</font></b>)";
}
getStatusLabel().setText("Drag " + formattedNames + "");
}
} else {
getStatusLabel().setText(
@@ -0,0 +1,37 @@
package org.diylc.presenter;
import java.util.Comparator;
import org.diylc.core.IDIYComponent;
public class ComparatorFactory {
private static ComparatorFactory instance;
private Comparator<IDIYComponent> componentNameComparator;
public static ComparatorFactory getInstance() {
if (instance == null) {
instance = new ComparatorFactory();
}
return instance;
}
public Comparator<IDIYComponent> getComponentNameComparator() {
if (componentNameComparator == null) {
componentNameComparator = new Comparator<IDIYComponent>() {
@Override
public int compare(IDIYComponent o1, IDIYComponent o2) {
String name1 = ComponentProcessor.getInstance().extractComponentName(o1);
String name2 = ComponentProcessor.getInstance().extractComponentName(o2);
if (name1 == null || name2 == null) {
return 0;
}
return name1.compareToIgnoreCase(name2);
}
};
}
return componentNameComparator;
}
}