1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.x.form;
14
15 import java.util.ArrayList;
16
17 public class ComponentEnabler implements XFormFieldListener
18 {
19 private final XFormField formField;
20
21
22 private ArrayList<FieldValue> fields = new ArrayList<FieldValue>();
23
24 private static class FieldValue
25 {
26 XFormField field;
27 String value;
28
29 public FieldValue(XFormField field, String value)
30 {
31 this.field = field;
32 this.value = value;
33 }
34 }
35
36 public ComponentEnabler(XFormField formField)
37 {
38 this.formField = formField;
39
40 formField.addFormFieldListener( this );
41 }
42
43 /***
44 * This should not be called directly from the dialog builders,
45 * because <code>field</code> may be a Proxy (on the Eclipse platform).
46 * Instead, call <code>addComponentEnablesFor(field, value)</code> on the combo box.
47 * @param field
48 * @param value
49 */
50 void add(XFormField field, String value)
51 {
52 String fieldValue = formField.getValue();
53 boolean enable = (fieldValue == null ? value == null : fieldValue.equals( value ));
54 field.setEnabled( enable);
55 fields.add( new FieldValue(field, value) );
56 }
57
58 public void valueChanged(XFormField sourceField, String newValue, String oldValue)
59 {
60 for( FieldValue f : fields)
61 {
62 boolean enable = newValue.equals( f.value);
63 f.field.setEnabled( enable );
64 }
65 }
66 }