import java.lang.reflect.ParameterizedType;\r
import java.lang.reflect.Type;\r
\r
-import javax.measure.quantity.Quantity;\r
import javax.measure.unit.Unit;\r
\r
import org.jscience.physics.amount.Amount;\r
vcs = new VetoableChangeSupport(this);\r
\r
vcs.addVetoableChangeListener(new VetoableChangeListener(){\r
+ @SuppressWarnings("unchecked")\r
@Override\r
public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException {\r
if ( evt.getNewValue() instanceof Amount ){\r
- try {\r
- BeanInfo b = Introspector.getBeanInfo(evt.getSource().getClass());\r
- PropertyDescriptor ps[] = b.getPropertyDescriptors();\r
- for ( int i = 0; i < ps.length; i++ ){\r
- if (ps[i].getName().equals(evt.getPropertyName())){\r
- Type t = ps[i].getReadMethod().getGenericReturnType();\r
- ParameterizedType p = (ParameterizedType) t;\r
- Class expected = (Class)p.getActualTypeArguments()[0];\r
- Field f = expected.getDeclaredField("UNIT");\r
- Unit u = (Unit) f.get(null);\r
- \r
- Amount a = (Amount)evt.getNewValue();\r
- if (!a.getUnit().isCompatible(u))\r
- throw new PropertyVetoException(ps[i].getShortDescription()\r
- + " must be in units of "\r
- + expected.getSimpleName(), evt);\r
-\r
- System.out.println("Expected " + expected + " got " + u);\r
+ try {\r
+ BeanInfo b = Introspector.getBeanInfo(evt.getSource().getClass());\r
+ PropertyDescriptor ps[] = b.getPropertyDescriptors();\r
+ for ( int i = 0; i < ps.length; i++ ){\r
+ if (ps[i].getName().equals(evt.getPropertyName())){\r
+ Type t = ps[i].getReadMethod().getGenericReturnType();\r
+ ParameterizedType p = (ParameterizedType) t;\r
+ Class expected = (Class)p.getActualTypeArguments()[0];\r
+ Field f = expected.getDeclaredField("UNIT");\r
+ Unit u = (Unit) f.get(null);\r
+ \r
+ Amount a = (Amount)evt.getNewValue();\r
+ if (!a.getUnit().isCompatible(u))\r
+ throw new PropertyVetoException(ps[i].getShortDescription()\r
+ + " must be in units of "\r
+ + expected.getSimpleName(), evt);\r
+ \r
+ System.out.println("Expected " + expected + " got " + u);\r
+ }\r
}\r
+ } catch ( PropertyVetoException e ){\r
+ throw e;\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
}\r
- } catch ( PropertyVetoException e ){\r
- throw e;\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
}\r
}\r
});\r
}\r
\r
- public <T extends Quantity> void checkAmount(Amount<T> a, Class<T> q)\r
- throws IllegalArgumentException {\r
- try {\r
- Field f = q.getDeclaredField("UNIT");\r
- Unit<T> u = (Unit<T>)f.get(null);\r
-\r
- if (!a.getUnit().isCompatible(u)) {\r
- throw new IllegalArgumentException("Value "\r
- + " must be in units of " + q.getSimpleName());\r
- }\r
- } catch (Exception e) {\r
- throw new Error(e);\r
- }\r
- }\r
-\r
public void addPropertyChangeListener(PropertyChangeListener listener) {\r
pcs.addPropertyChangeListener(listener);\r
}\r
import java.lang.reflect.InvocationTargetException;\r
import java.util.Vector;\r
\r
-import javax.measure.unit.NonSI;\r
import javax.measure.unit.Unit;\r
import javax.swing.JFrame;\r
-import javax.swing.JPanel;\r
import javax.swing.JTextField;\r
import javax.swing.WindowConstants;\r
\r
import org.apache.log4j.Logger;\r
import org.jscience.physics.amount.Amount;\r
\r
-import com.billkuker.rocketry.motorsim.Grain;\r
-import com.billkuker.rocketry.motorsim.grain.CoredCylindricalGrain;\r
-import com.billkuker.rocketry.motorsim.grain.RodAndTubeGrain;\r
import com.l2fprod.common.propertysheet.PropertySheetPanel;\r
\r
public class Editor extends PropertySheetPanel {\r
return editor.getText();\r
}\r
\r
+ @SuppressWarnings("unchecked")\r
@Override\r
public Object getValue() {\r
String text = editor.getText().trim();\r
\r
}\r
\r
+ @SuppressWarnings("unchecked")\r
@Override\r
public void setValue(Object o) {\r
Amount a = (Amount) o;\r