Revision 11625 trunk/libraries/libUIComponent/src/org/gvsig/gui/beans/treelist/TreeListContainer.java

View differences:

TreeListContainer.java
24 24
import java.awt.event.ActionListener;
25 25
import java.util.ArrayList;
26 26
import java.util.Hashtable;
27
import java.util.Iterator;
27 28

  
28 29
import javax.swing.DefaultListModel;
29 30
import javax.swing.JButton;
......
33 34
import javax.swing.JSplitPane;
34 35
import javax.swing.JTree;
35 36
import javax.swing.ListSelectionModel;
37
import javax.swing.event.ListSelectionEvent;
38
import javax.swing.event.ListSelectionListener;
39
import javax.swing.event.TreeSelectionEvent;
40
import javax.swing.event.TreeSelectionListener;
36 41
import javax.swing.tree.DefaultMutableTreeNode;
37 42
import javax.swing.tree.DefaultTreeModel;
43
import javax.swing.tree.TreePath;
38 44

  
45
import org.gvsig.gui.beans.treelist.event.TreeListChangeEvent;
46
import org.gvsig.gui.beans.treelist.listeners.TreeListChangeListener;
39 47
import org.gvsig.gui.beans.treelist.listeners.TreeListComponentListener;
40 48
import org.gvsig.gui.beans.treelist.listeners.TreeListListener;
41 49
import org.gvsig.i18n.Messages;
......
49 57
 * Nacho Brodin (brodin_ign@gva.es)
50 58
 */
51 59

  
52
public class TreeListContainer extends JPanel implements ActionListener {
60
public class TreeListContainer extends JPanel implements ActionListener, TreeSelectionListener, ListSelectionListener {
53 61
	private static final long serialVersionUID = 6665259638830401366L;
54 62
	private Hashtable	map;
55 63
	
......
75 83
		listener.setList(getList());
76 84
		listener.setTree(getTree());
77 85
		this.setPreferredSize(new Dimension(160, 0));
86
		getTree().addTreeSelectionListener(this);
87
		getList().addListSelectionListener(this);
78 88
	}
79 89

  
80 90
	/**
......
269 279
			listener.deleteElement();
270 280
		}
271 281
	}
282
	
283
	/**
284
	 * A?adir el disparador de cuando se pulsa un bot?n.
285
	 * @param listener
286
	 */
287
	private ArrayList actionChangeListeners = new ArrayList();
288

  
289
	public void addChangeSelectionListener(TreeListChangeListener listener) {
290
		if (!actionChangeListeners.contains(listener))
291
			actionChangeListeners.add(listener);
292
	}
293

  
294
	/**
295
	 * Borrar el disparador de eventos de los botones.
296
	 * @param listener
297
	 */
298
	public void removeChangeSelectionListener(TreeListChangeListener listener) {
299
		actionChangeListeners.remove(listener);
300
	}
301
	
302
	private void callActionChangeListeners(String item) {
303
		Iterator acIterator = actionChangeListeners.iterator();
304
		while (acIterator.hasNext()) {
305
			TreeListChangeListener listener = (TreeListChangeListener) acIterator.next();
306
			listener.actionChangeSelection(new TreeListChangeEvent(this, item));
307
		}
308
	}
309

  
310
	public void valueChanged(TreeSelectionEvent e) {
311
		String draggLabel = null;
312
		if(e.getSource() == tree){
313
			TreePath[] tp = tree.getSelectionPaths();
314
			if(tp != null){
315
				String val = tp[0].toString();
316
				//Comprobamos que se haya pinchado sobre una rama
317
				String[] pathTree = val.split(", ");
318
				if(pathTree.length > 2) {
319
					draggLabel = val.substring(val.lastIndexOf(", ") + 2, val.lastIndexOf("]"));
320
					callActionChangeListeners(draggLabel);
321
				}
322
			}
323
		}
324
	}
325

  
326
	public void valueChanged(ListSelectionEvent e) {
327
		if (!e.getValueIsAdjusting()) {
328
			callActionChangeListeners(getList().getSelectedValue().toString());
329
		}
330
	}
272 331
}

Also available in: Unified diff