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

View differences:

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