Revision 11625 trunk/libraries/libUIComponent/src/org/gvsig/gui/beans/treelist/TreeListContainer.java
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