Revision 202 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/dynobject/dynfield/JComboBoxDynFieldComponent.java
JComboBoxDynFieldComponent.java | ||
---|---|---|
35 | 35 |
|
36 | 36 |
import java.awt.event.ItemEvent; |
37 | 37 |
import java.awt.event.ItemListener; |
38 |
import java.util.ArrayList; |
|
39 |
import java.util.List; |
|
38 | 40 |
|
39 | 41 |
import javax.swing.JComboBox; |
40 | 42 |
|
41 | 43 |
import org.gvsig.tools.dynobject.DynField; |
42 | 44 |
import org.gvsig.tools.dynobject.DynObjectValueItem; |
45 |
import org.gvsig.tools.swing.api.dynobject.ValueChangedListener; |
|
43 | 46 |
import org.gvsig.tools.swing.api.dynobject.dynfield.JDynFieldComponent; |
44 | 47 |
import org.gvsig.tools.swing.spi.DelegatedJFieldComponent; |
45 | 48 |
|
... | ... | |
51 | 54 |
|
52 | 55 |
private JComboBox combo; |
53 | 56 |
private DynObjectValueItem[] items; |
57 |
private List<ValueChangedListener> listeners; |
|
54 | 58 |
|
55 | 59 |
/** |
56 | 60 |
* @param component |
... | ... | |
89 | 93 |
@Override |
90 | 94 |
public Object getValue() { |
91 | 95 |
int index = this.combo.getSelectedIndex(); |
96 |
|
|
92 | 97 |
if ((isMandatory())&&(index<1)) |
93 | 98 |
return null; |
94 |
else |
|
95 |
//null is at combo position 0, so the index is one unit ahead as of the items index |
|
96 |
return this.items[index-1].getValue(); |
|
99 |
if (index<0) |
|
100 |
return null; |
|
101 |
|
|
102 |
//null is at combo position 0, so the index is one unit ahead as of the items index |
|
103 |
return this.items[index-1].getValue(); |
|
97 | 104 |
} |
98 | 105 |
|
99 | 106 |
/* (non-Javadoc) |
... | ... | |
108 | 115 |
* |
109 | 116 |
*/ |
110 | 117 |
protected void initUI() { |
118 |
listeners = new ArrayList<ValueChangedListener>(); |
|
111 | 119 |
items = getDynField().getAvailableValues(); |
112 | 120 |
this.combo = new JComboBox(); |
113 | 121 |
this.combo.addItem(null); |
... | ... | |
129 | 137 |
* @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent) |
130 | 138 |
*/ |
131 | 139 |
public void itemStateChanged(ItemEvent evt) { |
132 |
this.fireValueChangedEvent();
|
|
140 |
this.fireValueChangedEvent();
|
|
133 | 141 |
} |
134 | 142 |
|
135 | 143 |
/* (non-Javadoc) |
... | ... | |
177 | 185 |
/* (non-Javadoc) |
178 | 186 |
* @see org.gvsig.tools.swing.spi.DelegatedJFieldComponent#setValue(java.lang.Object) |
179 | 187 |
*/ |
180 |
@Override |
|
188 |
|
|
189 |
|
|
181 | 190 |
public void setValue(Object value) { |
191 |
if (value==null) |
|
192 |
this.combo.setSelectedIndex(0); |
|
193 |
|
|
182 | 194 |
Object item; |
183 | 195 |
for (int i=0;i<this.items.length;i++){ |
184 | 196 |
item = this.items[i].getValue(); |
... | ... | |
191 | 203 |
} |
192 | 204 |
} |
193 | 205 |
|
206 |
/* (non-Javadoc) |
|
207 |
* @see org.gvsig.tools.swing.spi.DelegatedJFieldComponent#addValueChangedListener(org.gvsig.tools.swing.api.dynobject.ValueChangedListener) |
|
208 |
*/ |
|
209 |
@Override |
|
210 |
public void addValueChangedListener(ValueChangedListener listener) { |
|
211 |
this.listeners.add(listener); |
|
212 |
} |
|
194 | 213 |
|
214 |
/* (non-Javadoc) |
|
215 |
* @see org.gvsig.tools.swing.spi.DelegatedJFieldComponent#fireValueChangedEvent() |
|
216 |
*/ |
|
217 |
@Override |
|
218 |
public void fireValueChangedEvent() { |
|
219 |
for (ValueChangedListener listener: this.listeners) |
|
220 |
listener.handleValueChanged(this); |
|
221 |
} |
|
222 |
|
|
223 |
|
|
195 | 224 |
|
196 | 225 |
} |
Also available in: Unified diff