KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jimm > datavision > field > ParameterField


1 package jimm.datavision.field;
2 import jimm.datavision.Report;
3 import jimm.datavision.Section;
4 import jimm.datavision.Parameter;
5 import jimm.datavision.gui.FieldWidget;
6 import jimm.datavision.gui.ParameterWidget;
7 import jimm.datavision.gui.SectionWidget;
8 import java.util.Observer JavaDoc;
9 import java.util.Observable JavaDoc;
10
11 /**
12  * A parameter field represents a parameter. The value of a parameter field
13  * holds a {@link Parameter} object. In the XML, the parameter field's value
14  * is the id of the parameter.
15  *
16  * @author Jim Menard, <a HREF="mailto:jimm@io.com">jimm@io.com</a>
17  */

18 public class ParameterField extends Field implements Observer JavaDoc {
19
20 protected Parameter parameter;
21
22 /**
23  * Constructs a parameter field with the specified id in the specified report
24  * section whose {@link Parameter}'s id is <i>value</i>.
25  *
26  * @param id the new field's id
27  * @param report the report containing this element
28  * @param section the report section in which the field resides
29  * @param value the id of a parameter
30  * @param visible show/hide flag
31  */

32 public ParameterField(Long JavaDoc id, Report report, Section section, Object JavaDoc value,
33               boolean visible)
34 {
35     super(id, report, section, value, visible);
36     parameter = report.findParameter(value);
37     parameter.addObserver(this);
38 }
39
40 protected void finalize() throws Throwable JavaDoc {
41     parameter.deleteObserver(this);
42     super.finalize();
43 }
44
45 public void update(Observable JavaDoc o, Object JavaDoc arg) {
46     setChanged();
47     notifyObservers(arg);
48 }
49
50 public FieldWidget makeWidget(SectionWidget sw) {
51     return new ParameterWidget(sw, this);
52 }
53
54 /**
55  * Not really used; we drag parameters, not parameter fields.
56  */

57 public String JavaDoc dragString() {
58     return typeString() + ":" + parameter.getId();
59 }
60
61 /**
62  * Returns the parameter.
63  *
64  * @return the parameter
65  */

66 public Parameter getParameter() { return parameter; }
67
68 /**
69  * Sets the parameter.
70  *
71  * @param newParameter the new parameter
72  */

73 public void setParameter(Parameter newParameter) {
74     if (parameter != newParameter) {
75     parameter.deleteObserver(this);
76     parameter = newParameter;
77     parameter.addObserver(this);
78     setChanged();
79     notifyObservers();
80     }
81 }
82
83 public String JavaDoc typeString() { return "parameter"; }
84
85 public String JavaDoc designLabel() { return parameter.designLabel(); }
86
87 public String JavaDoc formulaString() { return parameter.formulaString(); }
88
89 public boolean refersTo(Parameter p) {
90     return parameter == p;
91 }
92
93 /**
94  * This override returns <code>true</code> if this parameter is in a detail
95  * section and returns a number.
96  *
97  * @return <code>true</code> if this field can be aggregated
98  */

99 public boolean canBeAggregated() {
100     // Section can be null during dragging.
101
return section != null && section.isDetail()
102     && getParameter().getType() == Parameter.TYPE_NUMERIC;
103 }
104
105 /**
106  * Returns the value of this field. For parameter fields, this is the
107  * value generated by evaluating the {@link Parameter}.
108  *
109  * @return the result of evaluating the parameter
110  */

111 public Object JavaDoc getValue() { return parameter.getValue(); }
112
113 }
114
Popular Tags