Revision 647 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/JNDynFieldComponent.java

View differences:

JNDynFieldComponent.java
38 38
import java.awt.Insets;
39 39
import java.awt.event.ActionEvent;
40 40
import java.awt.event.ActionListener;
41
import java.awt.event.MouseAdapter;
42
import java.awt.event.MouseEvent;
41 43
import java.util.ArrayList;
42 44
import java.util.Iterator;
43 45
import java.util.List;
......
64 66
 * 
65 67
 */
66 68
public class JNDynFieldComponent extends AbstractNValueFieldComponent implements
67
		JDynFieldComponent, ValueChangedListener, ListSelectionListener {
69
    JDynFieldComponent, ValueChangedListener, ListSelectionListener {
68 70

  
69
	private JList list;
71
    private JList list;
70 72

  
71
	private JButton removeButton;
73
    private JButton removeButton;
72 74

  
73
	private JButton addButton;
75
    private JButton addButton;
74 76

  
75
	private JPanel subPanel;
77
    private JPanel subPanel;
76 78

  
77
	/**
78
	 * @param writable
79
	 * @param definition
80
	 * @param serviceManager
81
	 * @param dynObject
82
	 * @param dynField
83
	 */
84
	public JNDynFieldComponent(DynField definition, ValueField valueField,
85
			boolean writable) {
86
		super(definition, valueField, writable);
87
		this.setEnabled(valueField.getDynField().isReadOnly());
88
		this.getComponent().addValueChangedListener(this);
89
	}
79
    /**
80
     * @param writable
81
     * @param definition
82
     * @param serviceManager
83
     * @param dynObject
84
     * @param dynField
85
     */
86
    public JNDynFieldComponent(DynField definition, ValueField valueField,
87
        boolean writable) {
88
        super(definition, valueField, writable);
89
        this.setEnabled(valueField.getDynField().isReadOnly());
90
        this.getComponent().addValueChangedListener(this);
91
    }
90 92

  
91
	private int findIndex(Object objectValue) {
92
		Object[] values = this.getDynField().getElementsType()
93
				.getAvailableValues();
94
		int index = -1;
95
		if (values == null) {
96
			return -1;
97
		}
93
    private int findIndex(Object objectValue) {
94
        Object[] values =
95
            this.getDynField().getElementsType().getAvailableValues();
96
        int index = -1;
97
        if (values == null) {
98
            return -1;
99
        }
98 100

  
99
		for (Object value : values) {
100
			index++;
101
			if (value != null) {
102
				if (value.equals(objectValue)) {
103
					return index;
104
				}
105
			}
106
		}
107
		return -1;
108
	}
101
        for (Object value : values) {
102
            index++;
103
            if (value != null) {
104
                if (value.equals(objectValue)) {
105
                    return index;
106
                }
107
            }
108
        }
109
        return -1;
110
    }
109 111

  
110
	/**
112
    /**
111 113
     * 
112 114
     */
113
	@Override
114
	protected void afterUI() {
115
		refresh();
116
	}
115
    @Override
116
    protected void afterUI() {
117
        refresh();
118
    }
117 119

  
118
	private JButton createButton(String text) {
119
		return ToolsSwingLocator.getUsabilitySwingManager().createJToolButton(
120
				text.toString());
121
	}
120
    private JButton createButton(String text) {
121
        return ToolsSwingLocator.getUsabilitySwingManager().createJToolButton(
122
            text.toString());
123
    }
122 124

  
123
	/*
124
	 * (non-Javadoc)
125
	 * 
126
	 * @see
127
	 * org.gvsig.tools.swing.api.dynobject.dynfield.ValueField#getDefaultValue()
128
	 */
129
	@Override
130
	public Object getDefaultValue() {
131
		return this.getDynField().getDefaultValue();
132
	}
125
    /*
126
     * (non-Javadoc)
127
     * 
128
     * @see
129
     * org.gvsig.tools.swing.api.dynobject.dynfield.ValueField#getDefaultValue()
130
     */
131
    @Override
132
    public Object getDefaultValue() {
133
        return this.getDynField().getDefaultValue();
134
    }
133 135

  
134
	/*
135
	 * (non-Javadoc)
136
	 * 
137
	 * @see org.gvsig.tools.swing.spi.DelegatedJFieldComponent#getValue()
138
	 */
139
	public Object getValue() {
140
		if (getSize() <= 0) {
141
			return null;
142
		}
136
    /*
137
     * (non-Javadoc)
138
     * 
139
     * @see org.gvsig.tools.swing.spi.DelegatedJFieldComponent#getValue()
140
     */
141
    public Object getValue() {
142
        if (getSize() <= 0) {
143
            return null;
144
        }
143 145

  
144
		Object valueItem;
145
		List listItems = new ArrayList();
146
		for (int i = 0; i < this.list.getModel().getSize(); i++) {
147
			valueItem = this.list.getModel().getElementAt(i);
148
			listItems.add(valueItem);
149
		}
150
		return listItems;
151
	}
146
        Object valueItem;
147
        List listItems = new ArrayList();
148
        for (int i = 0; i < this.list.getModel().getSize(); i++) {
149
            valueItem = this.list.getModel().getElementAt(i);
150
            listItems.add(valueItem);
151
        }
152
        return listItems;
153
    }
152 154

  
153
	/*
154
	 * (non-Javadoc)
155
	 * 
156
	 * @see
157
	 * 
158
	 * org.gvsig.tools.swing.api.dynobject.ValueChangedListener#handleValueChanged
159
	 * (org.gvsig.tools.swing.api.dynobject.dynfield.JDynFieldComponent)
160
	 */
161
	public void handleValueChanged(JDynFieldComponent component) {
162
		if (getComponent().isValid() && getComponent().getValue() != null) {
163
			int index = this.list.getSelectedIndex();
164
			if (index >= 0) {
165
				setListValue(getComponent().getValue(), index);
166
			}
167
		} else {
168
			this.list.setSelectedIndex(-1);
169
		}
170
	}
155
    /*
156
     * (non-Javadoc)
157
     * 
158
     * @see
159
     * 
160
     * org.gvsig.tools.swing.api.dynobject.ValueChangedListener#handleValueChanged
161
     * (org.gvsig.tools.swing.api.dynobject.dynfield.JDynFieldComponent)
162
     */
163
    public void handleValueChanged(JDynFieldComponent component) {
164
        if (getComponent().isValid() && getComponent().getValue() != null) {
165
            int index = this.list.getSelectedIndex();
166
            if (index >= 0) {
167
                setListValue(getComponent().getValue(), index);
168
            }
169
        } else {
170
            this.list.setSelectedIndex(-1);
171
        }
172
    }
171 173

  
172
	/**
174
    /**
173 175
     *  
174 176
     */
175
	private void initBoxLayout() {
176
		subPanel = new JPanel(new GridBagLayout());
177
		subPanel.setBorder(BorderFactory.createTitledBorder(""));
178
		list.setVisibleRowCount(4);
179
	
180
		list.setBorder(BorderFactory.createTitledBorder(""));
181
		// listScrollPane = new JScrollPane(list);
182
		// listScrollPane.setViewportView(this.list);
183
		// listScrollPane.setLocale(this.list.getLocale());
177
    private void initBoxLayout() {
178
        subPanel = new JPanel(new GridBagLayout());
179
        subPanel.setBorder(BorderFactory.createTitledBorder(""));
180
        list.setVisibleRowCount(4);
181
        list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
182
        list.setBorder(BorderFactory.createTitledBorder(""));
183
        list.addMouseListener(new MouseAdapter() {
184 184

  
185
		// int span = 3;
185
            int lastSelectedIndex;
186 186

  
187
		GridBagConstraints c = new GridBagConstraints();
188
		c.insets = new Insets(2, 2, 2, 2);
189
		// c.gridx = 0;
190
		// c.gridy = 0;
191
		// c.gridwidth = span;
192
		// c.fill = GridBagConstraints.BOTH;
193
		c.weightx = 1.0;
194
		c.fill = GridBagConstraints.HORIZONTAL;
195
		c.anchor = GridBagConstraints.NORTHWEST;
196
		JComponent comp = getComponent().asJComponent();
197
		subPanel.add(comp, c);
187
            public void mouseClicked(MouseEvent e) {
198 188

  
199
		c = new GridBagConstraints();
200
		c.insets = new Insets(2, 2, 2, 2);
189
                int index = list.locationToIndex(e.getPoint());
201 190

  
202
		c.weightx = 0.0;
203
		// c.gridx = span;
204
		// c.gridy = 0;
205
		// c.ipady = 0;
206
		c.fill = GridBagConstraints.HORIZONTAL;
207
		c.anchor = GridBagConstraints.NORTHEAST;
208
		subPanel.add(addButton, c);
191
                if (index != -1 && index == lastSelectedIndex) {
192
                    list.clearSelection();
193
                    getComponent().asJComponent().requestFocus();
194
                }
209 195

  
210
		// list of items
211
		c = new GridBagConstraints();
212
		c.insets = new Insets(4, 2, 2, 2);
213
		c.gridx = 0;
214
		c.gridy = 1;
215
		c.weightx = 1.0;
216
		// c.gridwidth = span;
217
		c.fill = GridBagConstraints.BOTH;
218
		c.anchor = GridBagConstraints.NORTHWEST;
219
		subPanel.add(this.list, c);
196
                lastSelectedIndex = list.getSelectedIndex();
197
            }
198
        });
199
        // list.addMouseListener(new MouseListener() {
200
        //
201
        // private int previousIndex = -1;
202
        //
203
        // public void mouseClicked(MouseEvent arg0) {
204
        // if (list.getSelectedIndex() != previousIndex) {
205
        // previousIndex = list.getSelectedIndex();
206
        // } else {
207
        // setSelectedIndex(-2);
208
        // }
209
        // list.updateUI();
210
        // }
211
        //
212
        // public void mouseEntered(MouseEvent arg0) {
213
        // // TODO Auto-generated method stub
214
        //
215
        // }
216
        //
217
        // public void mouseExited(MouseEvent arg0) {
218
        // // TODO Auto-generated method stub
219
        //
220
        // }
221
        //
222
        // public void mousePressed(MouseEvent arg0) {
223
        // // TODO Auto-generated method stub
224
        //
225
        // }
226
        //
227
        // public void mouseReleased(MouseEvent arg0) {
228
        // // TODO Auto-generated method stub
229
        //
230
        // }
231
        //
232
        // });
233
        // list.addListSelectionListener(new ListSelectionListener() {
234
        //
235
        // private int previousIndex = -1;
236
        //
237
        // public void valueChanged(ListSelectionEvent event) {
238
        // if (list.getSelectedIndex() != previousIndex) {
239
        // previousIndex = list.getSelectedIndex();
240
        // } else {
241
        // list.setSelectedIndex(-1);
242
        // }
243
        // }
244
        //
245
        // });
220 246

  
221
		// remove Button
222
		c = new GridBagConstraints();
223
		c.insets = new Insets(4, 2, 2, 2);
224
		// c.gridx = span;
225
		c.gridy = 1;
226
		c.ipady = 0;
227
		c.weightx = 0.0;
228
		c.fill = GridBagConstraints.NONE;
229
		c.anchor = GridBagConstraints.NORTHWEST;
230
		subPanel.add(removeButton, c);
247
        // listScrollPane = new JScrollPane(list);
248
        // listScrollPane.setViewportView(this.list);
249
        // listScrollPane.setLocale(this.list.getLocale());
231 250

  
232
	}
251
        // int span = 3;
233 252

  
234
	/*
235
	 * (non-Javadoc)
236
	 * 
237
	 * @see org.gvsig.tools.swing.api.dynobject.JComponent#getComponent()
238
	 */
239
	public JComponent asJComponent() {
240
		// return this.listScrollPane;
241
		return this.subPanel;
242
	}
253
        GridBagConstraints c = new GridBagConstraints();
254
        c.insets = new Insets(2, 2, 2, 2);
255
        // c.gridx = 0;
256
        // c.gridy = 0;
257
        // c.gridwidth = span;
258
        // c.fill = GridBagConstraints.BOTH;
259
        c.weightx = 1.0;
260
        c.fill = GridBagConstraints.HORIZONTAL;
261
        c.anchor = GridBagConstraints.NORTHWEST;
262
        JComponent comp = getComponent().asJComponent();
263
        subPanel.add(comp, c);
243 264

  
244
	@Override
245
	protected void initData() {
265
        c = new GridBagConstraints();
266
        c.insets = new Insets(2, 2, 2, 2);
246 267

  
247
	}
268
        c.weightx = 0.0;
269
        // c.gridx = span;
270
        // c.gridy = 0;
271
        // c.ipady = 0;
272
        c.fill = GridBagConstraints.HORIZONTAL;
273
        c.anchor = GridBagConstraints.NORTHEAST;
274
        subPanel.add(addButton, c);
248 275

  
249
	public void initJButtons() {
250
		removeButton = createButton("-");
251
		removeButton.setActionCommand("-");
252
		removeButton.addActionListener(new ActionListener() {
276
        // list of items
277
        c = new GridBagConstraints();
278
        c.insets = new Insets(4, 2, 2, 2);
279
        c.gridx = 0;
280
        c.gridy = 1;
281
        c.weightx = 1.0;
282
        // c.gridwidth = span;
283
        c.fill = GridBagConstraints.BOTH;
284
        c.anchor = GridBagConstraints.NORTHWEST;
285
        subPanel.add(this.list, c);
253 286

  
254
			public void actionPerformed(ActionEvent e) {
255
				removeElement(list.getSelectedIndex());
256
				refresh();
287
        // remove Button
288
        c = new GridBagConstraints();
289
        c.insets = new Insets(4, 2, 2, 2);
290
        // c.gridx = span;
291
        c.gridy = 1;
292
        c.ipady = 0;
293
        c.weightx = 0.0;
294
        c.fill = GridBagConstraints.NONE;
295
        c.anchor = GridBagConstraints.NORTHWEST;
296
        subPanel.add(removeButton, c);
257 297

  
258
				fireValueChangedEvent();
259
			}
260
		});
298
    }
261 299

  
262
		addButton = createButton("+");
263
		addButton.setActionCommand("+");
264
		addButton.addActionListener(new ActionListener() {
300
    /*
301
     * (non-Javadoc)
302
     * 
303
     * @see org.gvsig.tools.swing.api.dynobject.JComponent#getComponent()
304
     */
305
    public JComponent asJComponent() {
306
        // return this.listScrollPane;
307
        return this.subPanel;
308
    }
265 309

  
266
			public void actionPerformed(ActionEvent e) {
267
				// add at the end of the list
268
				if (getComponent().isValid()
269
						&& getComponent().getValue() != null) {
270
					addElement(list, getComponent());
271
					refresh();
272
					fireValueChangedEvent();
273
				}
274
			}
275
		});
276
	}
310
    @Override
311
    protected void initData() {
277 312

  
278
	@Override
279
	protected void initUI() {
280
		initJButtons();
281
		this.initComponents();
282
	}
313
    }
283 314

  
284
	private void initComponents() {
285
		initJList(this);
286
		initBoxLayout();
287
	}
315
    public void initJButtons() {
316
        removeButton = createButton("-");
317
        removeButton.setActionCommand("-");
318
        removeButton.addActionListener(new ActionListener() {
288 319

  
289
	public void initJList(ListSelectionListener listener) {
290
		this.list = new JList(getModel());
291
		this.list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
292
		this.list.addListSelectionListener(listener);
293
		if (getSize() > 0) {
294
			this.list.setSelectedIndex(0);
295
		}
296
	}
320
            public void actionPerformed(ActionEvent e) {
321
                removeElement(list.getSelectedIndex());
322
                refresh();
297 323

  
298
	protected void setSelectedIndex(int index) {
299
		if (index > -2) {
300
			this.list.setSelectedIndex(index);
301
		}
302
	}
324
                fireValueChangedEvent();
325
            }
326
        });
303 327

  
304
	/*
305
	 * (non-Javadoc)
306
	 * 
307
	 * @see
308
	 * org.gvsig.tools.swing.api.dynobject.dynfield.JDynFieldComponent#isValid()
309
	 */
310
	public boolean isValid() {
311
		if (getSize() > 0) {
312
			return getComponent().isValid();
313
		}
314
		return !isReadOnly();
315
	}
328
        addButton = createButton("+");
329
        addButton.setActionCommand("+");
330
        addButton.addActionListener(new ActionListener() {
316 331

  
317
	public void refresh() {
318
		this.setEnabled(!isEmpty());
319
		// this.fireValueChangedEvent();
320
	}
332
            public void actionPerformed(ActionEvent e) {
333
                // add at the end of the list
334
                if (getComponent().isValid()
335
                    && getComponent().getValue() != null) {
336
                    addElement(list, getComponent());
337
                    refresh();
338
                    fireValueChangedEvent();
339
                }
340
            }
341
        });
342
    }
321 343

  
322
	protected void removeElement(int ind) {
344
    @Override
345
    protected void initUI() {
346
        initJButtons();
347
        this.initComponents();
348
    }
323 349

  
324
		super.removeSelectedElement(this.list, this.removeButton);
350
    private void initComponents() {
351
        initJList(this);
352
        initBoxLayout();
353
    }
325 354

  
326
		if (getSize() < 0) {
327
			this.getComponent().setValue(null);
328
		}
329
		refresh();
330
	}
355
    public void initJList(ListSelectionListener listener) {
356
        this.list = new JList(getModel());
357
        this.list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
358
        // this.list.addListSelectionListener(listener);
359
        // if (getSize() > 0) {
360
        // this.list.setSelectedIndex(0);
361
        // }
362
    }
331 363

  
332
	public void requestFocus() {
333
		this.getComponent().requestFocus();
334
	}
364
    protected void setSelectedIndex(int index) {
365
        if (index > -2) {
366
            this.list.setSelectedIndex(index);
367
        }
368
    }
335 369

  
336
	public void saveStatus() {
337
		setFieldValue(getModel());
338
	}
370
    /*
371
     * (non-Javadoc)
372
     * 
373
     * @see
374
     * org.gvsig.tools.swing.api.dynobject.dynfield.JDynFieldComponent#isValid()
375
     */
376
    public boolean isValid() {
377
        if (getSize() > 0) {
378
            return getComponent().isValid();
379
        }
380
        return !this.isMandatory();
381
    }
339 382

  
340
	public void setEnabled(boolean isEnabled) {
383
    public void refresh() {
384
        this.setEnabled(!isEmpty());
385
        // this.fireValueChangedEvent();
386
    }
341 387

  
342
		this.removeButton.setEnabled(isEnabled);
343
		if ((getModel().isEmpty()) || (list.getSelectedIndex() < 0)) {
344
			if (this.getComponent().getDynField().getType() != DataTypes.DYNOBJECT) {
345
				this.getComponent().requestFocus();
346
			}
347
		}
388
    protected void removeElement(int ind) {
348 389

  
349
		this.list.updateUI();
350
		getComponent().asJComponent().updateUI();
390
        super.removeSelectedElement(this.list, this.removeButton);
351 391

  
352
		this.removeButton.setEnabled(isEnabled);
353
		if (isReadOnly()) {
354
			if (this.getValue() == null) {
355
				this.addButton.setEnabled(true);
356
				this.getComponent().setEnabled(true);
357
				this.removeButton.setEnabled(false);
358
			} else {
359
				this.addButton.setEnabled(isEmpty());
360
				this.getComponent().setEnabled(!isEmpty());
361
				this.removeButton.setEnabled(true);
362
			}
363
		}
392
        if (getSize() < 0) {
393
            this.getComponent().setValue(null);
394
        }
395
        refresh();
396
    }
364 397

  
365
		this.list.updateUI();
366
		getComponent().asJComponent().updateUI();
398
    public void requestFocus() {
399
        this.getComponent().requestFocus();
400
    }
367 401

  
368
	}
402
    public void saveStatus() {
403
        setFieldValue(getModel());
404
    }
369 405

  
370
	private boolean isEmpty() {
371
		return (getModel().isEmpty() || (list.getSelectedIndex() < 0));
372
	}
406
    public void setEnabled(boolean isEnabled) {
373 407

  
374
	@Override
375
	protected void setJDynFieldComponentListeners() {
408
        this.addButton.setEnabled(true);
409
        if ((getModel().isEmpty()) || (list.getSelectedIndex() < 0)) {
410
            if (this.getComponent().getDynField().getType() != DataTypes.DYNOBJECT) {
411
                this.getComponent().requestFocus();
412
            }
413
            this.removeButton.setEnabled(false);
414
            this.addButton.setEnabled(true);
415
        } else {
416
            if (this.list.getSelectedIndex() < 0) {
417
                this.removeButton.setEnabled(false);
418
            } else {
419
                this.removeButton.setEnabled(true);
420
            }
421
        }
376 422

  
377
	}
423
        if (isReadOnly()) {
424
            this.addButton.setEnabled(false);
425
            this.getComponent().setEnabled(false);
426
            this.removeButton.setEnabled(false);
427
        }
428
        // // this.list.updateUI();
429
        // // getComponent().asJComponent().updateUI();
430
        //
431
        // // this.removeButton.setEnabled(isEnabled);
432
        // if (isReadOnly()) {
433
        // if (this.getValue() == null) {
434
        // this.addButton.setEnabled(true);
435
        // this.getComponent().setEnabled(true);
436
        // this.removeButton.setEnabled(false);
437
        // } else {
438
        // this.addButton.setEnabled(isEmpty());
439
        // this.getComponent().setEnabled(true);
440
        // this.removeButton.setEnabled(true);
441
        // }
442
        // }
378 443

  
379
	@Override
380
	protected void setNonNullValue(Object value) {
381
		if (this.list == null) {
382
			initComponents();
383
		}
444
        // this.list.updateUI();
445
        // getComponent().asJComponent().updateUI();
384 446

  
385
		if (value instanceof List) {
386
			// this.getModel().setValue(value);
387
			Iterator<Object> itemsIter = ((List) value).iterator();
388
			if (itemsIter.hasNext()) {
389
				this.getModel().clear();
390
			}
391
			while (itemsIter.hasNext()) {
392
				this.getModel().addElement(itemsIter.next());
393
			}
394
		} else {
395
			this.list.setSelectedValue(value, true);
396
		}
397
	}
447
    }
398 448

  
399
	@Override
400
	protected void setNullValue() {
401
		setNonNullValue(null);
402
	}
449
    private boolean isEmpty() {
450
        // return (getModel().isEmpty() || (list.getSelectedIndex() < 0));
451
        return getModel().isEmpty();
452
    }
403 453

  
404
	/*
405
	 * (non-Javadoc)
406
	 * 
407
	 * @see org.gvsig.tools.swing.spi.AbstractJDynField#setReadOnly()
408
	 */
409
	@Override
410
	protected void setReadOnly() {
411
		this.setEnabled(false);
412
	}
454
    @Override
455
    protected void setJDynFieldComponentListeners() {
413 456

  
414
	private void setListValue(Object element, int index) {
415
		super.setValue(element, index);
416
		refresh();
417
		// this.list.setSelectedIndex(index);
418
	}
457
    }
419 458

  
420
	public void valueChanged(ListSelectionEvent e) {
459
    @Override
460
    protected void setNonNullValue(Object value) {
461
        if (this.list == null) {
462
            initComponents();
463
        }
421 464

  
422
		int index = list.getSelectedIndex();
423
		if (index >= 0) {
424
			this.getComponent().setValue(
425
					getModel().getElementAt(list.getSelectedIndex()));
426
		}else{
427
			int size = getSize();
428
			if (size > 0) {
429
				index = getModel().indexOf(getModel().firstElement());
430
				if (index != this.list.getSelectedIndex()) {
431
					this.list.setSelectedIndex(index);
432
				}
433
			}
434
		}
435
		refresh();
436
	}
465
        if (value instanceof List) {
466
            // this.getModel().setValue(value);
467
            Iterator<Object> itemsIter = ((List) value).iterator();
468
            if (itemsIter.hasNext()) {
469
                this.getModel().clear();
470
            }
471
            while (itemsIter.hasNext()) {
472
                this.getModel().addElement(itemsIter.next());
473
            }
474
        } else {
475
            this.list.setSelectedValue(value, true);
476
        }
477
    }
437 478

  
438
	public String getValidationMessage() {
439
		return null;
440
	}
479
    @Override
480
    protected void setNullValue() {
481
        setNonNullValue(null);
482
    }
441 483

  
442
	@Override
443
	protected DefaultListModel getModel() {
444
		if (this.list == null) {
445
			return super.getModel();
446
		}
447
		return (DefaultListModel) this.list.getModel();
448
	}
484
    /*
485
     * (non-Javadoc)
486
     * 
487
     * @see org.gvsig.tools.swing.spi.AbstractJDynField#setReadOnly()
488
     */
489
    @Override
490
    protected void setReadOnly() {
491
        this.setEnabled(false);
492
    }
449 493

  
494
    private void setListValue(Object element, int index) {
495
        super.setValue(element, index);
496
        refresh();
497
        // this.list.setSelectedIndex(index);
498
    }
499

  
500
    public void valueChanged(ListSelectionEvent e) {
501

  
502
        int index = list.getSelectedIndex();
503
        if (index >= 0) {
504
            this.getComponent().setValue(
505
                getModel().getElementAt(list.getSelectedIndex()));
506
        } else {
507
            int size = getSize();
508
            if (size > 0) {
509
                index = getModel().indexOf(getModel().firstElement());
510
                if (index != this.list.getSelectedIndex()) {
511
                    this.list.setSelectedIndex(index);
512
                }
513
            }
514
        }
515
        refresh();
516
    }
517

  
518
    public String getValidationMessage() {
519
        return null;
520
    }
521

  
522
    @Override
523
    protected DefaultListModel getModel() {
524
        if (this.list == null) {
525
            return super.getModel();
526
        }
527
        return (DefaultListModel) this.list.getModel();
528
    }
529

  
450 530
}

Also available in: Unified diff