01: package JSci.beans;
02:
03: import java.beans.*;
04: import java.util.Vector;
05: import JSci.maths.*;
06: import JSci.maths.matrices.DoubleMatrix;
07: import JSci.maths.vectors.DoubleVector;
08:
09: public final class VariableBean extends Object implements
10: java.io.Serializable {
11: private PropertyChangeSupport changes = new PropertyChangeSupport(
12: this );
13: private Vector variableListeners = new Vector();
14: private String variable = new String();
15: private Object value;
16:
17: public VariableBean() {
18: }
19:
20: public synchronized void setVariable(String var) {
21: String oldVar = variable;
22: variable = var;
23: changes.firePropertyChange("variable", oldVar, var);
24: }
25:
26: public synchronized String getVariable() {
27: return variable;
28: }
29:
30: public synchronized void setValueAsNumber(double x) {
31: value = new MathDouble(x);
32: changes
33: .firePropertyChange("valueAsNumber", null,
34: new Double(x));
35: fireVariableChanged(new VariableEvent(this , variable, value));
36: }
37:
38: public synchronized double getValueAsNumber() {
39: if (value instanceof MathDouble)
40: return ((MathDouble) value).value();
41: else
42: return Double.NaN;
43: }
44:
45: public synchronized void setValueAsVector(double v[]) {
46: value = new DoubleVector(v);
47: changes.firePropertyChange("valueAsVector", null, v);
48: fireVariableChanged(new VariableEvent(this , variable, value));
49: }
50:
51: public synchronized void setValueAsMatrix(double m[][]) {
52: value = new DoubleMatrix(m);
53: changes.firePropertyChange("valueAsMatrix", null, m);
54: fireVariableChanged(new VariableEvent(this , variable, value));
55: }
56:
57: public synchronized void addPropertyChangeListener(
58: PropertyChangeListener l) {
59: changes.addPropertyChangeListener(l);
60: }
61:
62: public synchronized void removePropertyChangeListener(
63: PropertyChangeListener l) {
64: changes.removePropertyChangeListener(l);
65: }
66:
67: public synchronized void addVariableListener(VariableListener l) {
68: variableListeners.addElement(l);
69: }
70:
71: public synchronized void removeVariableListener(VariableListener l) {
72: variableListeners.removeElement(l);
73: }
74:
75: private void fireVariableChanged(VariableEvent evt) {
76: for (int i = 0; i < variableListeners.size(); i++)
77: ((VariableListener) variableListeners.elementAt(i))
78: .variableChanged(evt);
79: }
80: }
|