Revision 202 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.spi/src/main/java/org/gvsig/tools/swing/spi/DelegatedJFieldComponent.java

View differences:

DelegatedJFieldComponent.java
37 37
import java.util.List;
38 38

  
39 39
import javax.swing.DefaultListModel;
40
import javax.swing.ListModel;
41
import javax.swing.event.ListDataListener;
40 42

  
41 43
import org.gvsig.tools.dynobject.DynClass;
42 44
import org.gvsig.tools.dynobject.DynField;
......
54 56
public abstract class DelegatedJFieldComponent extends AbstractJDynField
55 57
	implements JDynFieldComponent {
56 58

  
57
    public class NValueField implements NFieldValue {
58

  
59
	private final DefaultListModel model;
59
    public class NValueField extends ArrayList implements NFieldValue, ListModel {
60 60
	private final DynField field;
61 61
	private int selectedIndex;
62

  
62
	private DefaultListModel model;
63
	
63 64
	/**
64 65
	 * @param parent
65 66
	 */
66 67
	public NValueField(ValueField parent, DynField field) {
67 68
	    this.field = field;
68
	    this.model = new DefaultListModel();
69 69
	    this.selectedIndex = -1;
70
	    model = new DefaultListModel();
71
	    
72
	    
70 73
//	    elems = new ArrayList<Object>();
71 74

  
72 75
	    // Object value = parent.getValue();
......
78 81
	    // this.elems = (List) value;
79 82
	}
80 83

  
81
	public void addItem(int index, Object element) {
82
	    model.add(index, element);
83
	}
84
//	public void addItem(int index, Object element) {
85
//	    this.model.add(index, element);
86
//	    this.add(index,element);
87
//	}
84 88

  
85 89
	/*
86 90
	 * (non-Javadoc)
......
93 97
	    return field.getDefaultValue();
94 98
	}
95 99

  
96
	public DefaultListModel getModel() {
97
	    return model;
98
	}
99

  
100 100
	/*
101 101
	 * (non-Javadoc)
102 102
	 * 
......
104 104
	 * org.gvsig.tools.swing.api.dynobject.dynfield.ValueField#getValue()
105 105
	 */
106 106
	public Object getValue() {
107
	    if (model.isEmpty())
107
	    if (this.isEmpty())
108 108
		return null;
109
	    if ((selectedIndex < 0) || (selectedIndex >= model.getSize()))
109
	    if ((selectedIndex < 0) || (selectedIndex >= this.size()))
110 110
		return null;
111
	    return model.get(selectedIndex);
111
	    return this.get(selectedIndex);
112 112
	}
113 113

  
114
	public void removeItem(int index) {
115
	    model.remove(index);
116
	}
117

  
118 114
	public void setSelectedIndex(int index) {
119 115
	    selectedIndex = index;
120 116
	}
......
126 122
	 * org.gvsig.tools.swing.api.dynobject.dynfield.ValueField#setValue(
127 123
	 * java.lang.Object)
128 124
	 */
129
	public void add(Object value) {
130
	    setValue(value);
125
	public void addElement(int index, Object element) {
126
	    addElement(index, element, element);
131 127
	}
132 128
	
133
	public void setValue(Object value) {
134
	    model.add(model.getSize(), value);
129
	public void addElement(Object value){
130
	    addElement(this.size(), value);
135 131
	}
136

  
132
	
133
	
134
	public void addElement(Object value, Object printValue){
135
	    addElement(this.size(), value, printValue);
136
	}
137
	
137 138
	/**
138
	 * @param index
139
	 * @param size
139 140
	 * @param value
141
	 * @param printValue
140 142
	 */
141
	public void add(Integer index, Object value) {
142
	    model.add(index, value);
143
	private void addElement(int index, Object element, Object printValue) {
144
	    if (printValue==null) return;
145
	    this.add(index, element); 
146
	    if (printValue==null)
147
		this.model.add(index, element);
148
	    else
149
		this.model.add(index, printValue);
150
	    
143 151
	}
144 152

  
153
	public void setValue(int index, Object element, Object printValue) {
154
	    if (printValue==null) return;
155
	    this.set(index, element); 
156
	    if (printValue==null)
157
		this.model.set(index, element);
158
	    else
159
		this.model.set(index, printValue);
160
	}
161

  
162
	/* (non-Javadoc)
163
	 * @see org.gvsig.tools.swing.api.dynobject.dynfield.ValueField#setValue(java.lang.Object)
164
	 */
165
	public void setValue(Object value) {
166
	    if (value==null) return;
167
	    if (value instanceof List){
168
		for (Object elem: (List) value)
169
		    addElement(elem);
170
	    }else{
171
		addElement(value);
172
	    }
173
	}
174

  
175
	/* (non-Javadoc)
176
	 * @see javax.swing.ListModel#addListDataListener(javax.swing.event.ListDataListener)
177
	 */
178
	public void addListDataListener(ListDataListener l) {
179
	    this.model.addListDataListener(l);
180
	}
181

  
182
	/* (non-Javadoc)
183
	 * @see javax.swing.ListModel#getElementAt(int)
184
	 */
185
	public Object getElementAt(int index) {
186
	    return this.model.getElementAt(index);
187
	}
188

  
189
	/* (non-Javadoc)
190
	 * @see javax.swing.ListModel#getSize()
191
	 */
192
	public int getSize() {
193
	   return this.model.getSize();
194
	}
195

  
196
	/* (non-Javadoc)
197
	 * @see javax.swing.ListModel#removeListDataListener(javax.swing.event.ListDataListener)
198
	 */
199
	public void removeListDataListener(ListDataListener l) {
200
	    this.model.removeListDataListener(l);
201
	}
202

  
145 203
	/**
146 204
	 * @return
147 205
	 */
148
	public Object toArray() {
149
	    return model.toArray();
206
	public Object firstElement() {
207
	    return this.model.firstElement();
150 208
	}
209
	
210
	public void removeElement(int index){
211
	    this.remove(index);
212
	    this.model.remove(index);
213
	}
151 214

  
152
	
153 215
    }
154 216

  
155 217
    protected JDynFieldComponent component;
......
280 342
	this.component = component;
281 343
	parent = component;
282 344
    }
345
    
283 346

  
284 347
    /*
285 348
     * (non-Javadoc)

Also available in: Unified diff