inductor symbol

allow empty values
This commit is contained in:
bancika
2012-09-25 14:45:37 +00:00
parent db173acf77
commit 6c7e149c93
4 changed files with 37 additions and 10 deletions
@@ -11,6 +11,8 @@ import java.beans.PropertyChangeListener;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import javax.swing.JComboBox; import javax.swing.JComboBox;
@@ -32,7 +34,8 @@ public class MeasureEditor extends Container {
public MeasureEditor(final PropertyWrapper property) { public MeasureEditor(final PropertyWrapper property) {
setLayout(new BorderLayout()); setLayout(new BorderLayout());
final AbstractMeasure measure = ((AbstractMeasure) property.getValue()); final AbstractMeasure measure = ((AbstractMeasure) property.getValue());
valueField = new DoubleTextField(measure.getValue()); valueField = new DoubleTextField(measure == null ? null : measure
.getValue());
oldBg = valueField.getBackground(); oldBg = valueField.getBackground();
valueField.addPropertyChangeListener(DoubleTextField.VALUE_PROPERTY, valueField.addPropertyChangeListener(DoubleTextField.VALUE_PROPERTY,
new PropertyChangeListener() { new PropertyChangeListener() {
@@ -40,12 +43,11 @@ public class MeasureEditor extends Container {
@Override @Override
public void propertyChange(PropertyChangeEvent evt) { public void propertyChange(PropertyChangeEvent evt) {
try { try {
Constructor ctor = measure.getClass() Constructor ctor = property.getType()
.getConstructors()[0]; .getConstructors()[0];
AbstractMeasure<?> oldMeasure = (AbstractMeasure<?>) property.getValue();
AbstractMeasure<?> newMeasure = (AbstractMeasure<?>) ctor AbstractMeasure<?> newMeasure = (AbstractMeasure<?>) ctor
.newInstance((Double) evt.getNewValue(), .newInstance((Double) evt.getNewValue(),
oldMeasure.getUnit()); unitBox.getSelectedItem());
property.setValue(newMeasure); property.setValue(newMeasure);
property.setChanged(true); property.setChanged(true);
valueField.setBackground(oldBg); valueField.setBackground(oldBg);
@@ -67,18 +69,19 @@ public class MeasureEditor extends Container {
}); });
add(valueField, BorderLayout.CENTER); add(valueField, BorderLayout.CENTER);
try { try {
Method method = measure.getUnit().getClass().getMethod("values"); Type type = ((ParameterizedType) property.getType()
unitBox = new JComboBox((Object[]) method.invoke(measure.getUnit())); .getGenericSuperclass()).getActualTypeArguments()[0];
unitBox.setSelectedItem(measure.getUnit()); Method method = ((Class<?>) type).getMethod("values");
unitBox = new JComboBox((Object[]) method.invoke(null));
unitBox.setSelectedItem(measure == null ? null : measure.getUnit());
unitBox.addActionListener(new ActionListener() { unitBox.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
try { try {
Constructor ctor = measure.getClass().getConstructors()[0]; Constructor ctor = property.getType().getConstructors()[0];
AbstractMeasure<?> oldMeasure = (AbstractMeasure<?>) property.getValue();
AbstractMeasure<?> newMeasure = (AbstractMeasure<?>) ctor AbstractMeasure<?> newMeasure = (AbstractMeasure<?>) ctor
.newInstance(oldMeasure.getValue(), .newInstance(valueField.getValue(),
(Enum<? extends Unit>) unitBox (Enum<? extends Unit>) unitBox
.getSelectedItem()); .getSelectedItem());
property.setValue(newMeasure); property.setValue(newMeasure);
@@ -937,5 +937,29 @@
</changes> </changes>
<url>http://code.google.com/p/diy-layout-creator/downloads/list</url> <url>http://code.google.com/p/diy-layout-creator/downloads/list</url>
</org.diylc.appframework.update.Version> </org.diylc.appframework.update.Version>
<org.diylc.appframework.update.Version>
<versionNumber>
<major>3</major>
<minor>18</minor>
<build>0</build>
</versionNumber>
<releaseDate>2012-09-24 20:00:00.000 CET</releaseDate>
<name></name>
<changes>
<org.diylc.appframework.update.Change>
<changeType>BUG_FIX</changeType>
<description>Components don't show up in the toolbox on OSX</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>NEW_FEATURE</changeType>
<description>Inductor symbol</description>
</org.diylc.appframework.update.Change>
<org.diylc.appframework.update.Change>
<changeType>IMPROVEMENT</changeType>
<description>Component values (resistance, capacitance, etc) are created blank instead of defaulting to some values</description>
</org.diylc.appframework.update.Change>
</changes>
<url>http://code.google.com/p/diy-layout-creator/downloads/list</url>
</org.diylc.appframework.update.Version>
</a> </a>
</java.util.Arrays_-ArrayList> </java.util.Arrays_-ArrayList>