Revision 1098

View differences:

trunk/applications/appgvSIG/src/com/iver/cit/gvsig/gui/toc/TOC.java
20 20
import java.awt.event.MouseEvent;
21 21
import java.util.ArrayList;
22 22
import java.util.Enumeration;
23
import java.util.HashMap;
23 24

  
24 25
import javax.swing.BorderFactory;
25 26
import javax.swing.JColorChooser;
......
29 30
import javax.swing.JTree;
30 31
import javax.swing.SwingUtilities;
31 32
import javax.swing.UIManager;
33
import javax.swing.event.TreeExpansionEvent;
34
import javax.swing.event.TreeExpansionListener;
32 35
import javax.swing.tree.DefaultMutableTreeNode;
33 36
import javax.swing.tree.DefaultTreeModel;
34 37
import javax.swing.tree.TreePath;
......
40 43
import com.iver.cit.gvsig.fmap.DriverException;
41 44
import com.iver.cit.gvsig.fmap.FMap;
42 45
import com.iver.cit.gvsig.fmap.core.v02.FSymbol;
43
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
44 46
import com.iver.cit.gvsig.fmap.layers.CancelationException;
45 47
import com.iver.cit.gvsig.fmap.layers.FLayer;
46 48
import com.iver.cit.gvsig.fmap.layers.LayerCollectionEvent;
......
52 54
import com.iver.cit.gvsig.fmap.rendering.ClassifiedLegendInfo;
53 55
import com.iver.cit.gvsig.fmap.rendering.Legend;
54 56
import com.iver.cit.gvsig.fmap.rendering.LegendChangedEvent;
55
import com.iver.cit.gvsig.fmap.rendering.styling.FStyle2D;
56 57

  
57 58
/**
58 59
 * @author fjp
......
61 62
 * Window>Preferences>Java>Code Generation>Code and Comments
62 63
 */
63 64
public class TOC extends JComponent implements ITocOrderListener, 
64
			LegendListener, LayerCollectionListener, ComponentListener {
65
			LegendListener, LayerCollectionListener,
66
			TreeExpansionListener, ComponentListener {
65 67
	private FMap mapContext;
66 68
	private DnDJTree m_Tree;
67 69
	private DefaultTreeModel m_TreeModel;
......
69 71
	private TOCRenderer m_TocRenderer;
70 72
	private JScrollPane m_Scroller;
71 73
	private ArrayList m_Listeners;
74
	private HashMap m_ItemsExpanded = new HashMap();
72 75
	
73 76
	/**
74 77
	 * Clase Listener que reacciona al pulsar sobre el checkbox de un nodo y
......
196 199
		m_Tree.setBackground(UIManager.getColor("Button.background"));
197 200
		m_Tree.setBorder(BorderFactory.createEtchedBorder());
198 201
		
199
		this.addComponentListener(this);			
202
		this.addComponentListener(this);	
200 203
		
204
		m_Tree.addTreeExpansionListener(this);
205
		
201 206
		m_Tree.addOrderListener(this);
202 207
		
203 208
		m_Tree.setRowHeight(0); // Para que lo determine el renderer
......
253 258
		});
254 259
	}
255 260
	
261
	private void setExpandedNodes()
262
	{
263
		int i = 0;
264
		// Las claves sobrantes de m_ItemsExpanded (provocadas
265
		// por layerRemove, se quitan en el evento layerRemoved
266
		// de este TOC
267
		DefaultMutableTreeNode n;
268
		Enumeration enum = m_Root.children();
269
		while (enum.hasMoreElements())
270
		{
271
			n =  (DefaultMutableTreeNode) enum.nextElement();
272
			TreePath path = new TreePath(m_TreeModel.getPathToRoot(n));
273
			ITocItem item = (ITocItem) n.getUserObject();
274
			Boolean b = (Boolean) m_ItemsExpanded.get(item.getLabel());
275
			if (b == null) // No estaba en el hash todav?a: valor por defecto
276
			{
277
				// System.out.println("Primera expansi?n de " + item.getLabel());
278
				m_Tree.expandPath(path);
279
				return;
280
			}
281
			if (b.booleanValue())
282
			{
283
				// System.out.println("Expansi?n de " + item.getLabel());
284
				m_Tree.expandPath(path);
285
			}
286
			else
287
			{
288
				// System.out.println("Colapso de " + item.getLabel());
289
				m_Tree.collapsePath(path);
290
			}
291
		} 
292

  
293
	}
294
	
256 295
	/* (non-Javadoc)
257 296
	 * @see com.iver.cit.opensig.gui.IToc#refresh()
258 297
	 */
......
264 303
		doRefresh(theLayers, m_Root);
265 304
		
266 305
		m_TreeModel.reload();
306
		
307
		setExpandedNodes();
267 308
	}
268 309
	private void doRefresh(LayerCollection theLayers, DefaultMutableTreeNode parentNode)
269 310
	{
......
278 319
			
279 320
			m_TreeModel.insertNodeInto(nodeLayer, parentNode, parentNode.getChildCount());
280 321
			TreePath path = new TreePath(m_TreeModel.getPathToRoot(nodeLayer));
281
			m_Tree.makeVisible(path);
322
			// m_Tree.makeVisible(path);
282 323
			if (lyr instanceof LayerCollection)
283 324
			{
284 325
				LayerCollection group = (LayerCollection) lyr;
......
304 345
								DefaultMutableTreeNode nodeValue = new DefaultMutableTreeNode(itemLeaf);
305 346
								m_TreeModel.insertNodeInto(nodeValue, nodeLayer, nodeLayer.getChildCount());
306 347
								TreePath pathSymbol = new TreePath(m_TreeModel.getPathToRoot(nodeValue));
307
								m_Tree.makeVisible(pathSymbol);							
348
								// m_Tree.makeVisible(pathSymbol);							
308 349
							}						
309 350
						}
310 351
						if (legendInfo.getDefaultSymbol() != null)
......
315 356
							DefaultMutableTreeNode nodeValue = new DefaultMutableTreeNode(itemLeaf);
316 357
							m_TreeModel.insertNodeInto(nodeValue, nodeLayer, nodeLayer.getChildCount());
317 358
							TreePath pathSymbol = new TreePath(m_TreeModel.getPathToRoot(nodeValue));
318
							m_Tree.makeVisible(pathSymbol);
359
							// m_Tree.makeVisible(pathSymbol);
319 360
						}
320 361
					} catch (DriverException e) {
321 362
						// TODO Auto-generated catch block
......
387 428
				
388 429
		       	ITocItem item = (ITocItem) n.getUserObject();
389 430
		       	Dimension szAnt = item.getSize();
390
		       	item.setSize(new Dimension(this.getWidth()-30,szAnt.height));
431
		       	item.setSize(new Dimension(this.getWidth()-40,szAnt.height));
391 432
			}						
392 433
			System.out.println("i=" + i++);
393 434
		} 
......
445 486
	 * @see com.iver.cit.gvsig.fmap.layers.LayerCollectionListener#layerRemoved(com.iver.cit.gvsig.fmap.layers.LayerCollectionEvent)
446 487
	 */
447 488
	public void layerRemoved(LayerCollectionEvent e) {
489
		m_ItemsExpanded.remove(e.getAffectedLayer().getName());
448 490
		refresh();
449 491
		
450 492
	}
......
497 539
	}
498 540

  
499 541

  
542

  
543
	/* (non-Javadoc)
544
	 * @see javax.swing.event.TreeExpansionListener#treeCollapsed(javax.swing.event.TreeExpansionEvent)
545
	 */
546
	public void treeCollapsed(TreeExpansionEvent event) {
547
		TreePath path = event.getPath();		
548
		DefaultMutableTreeNode n = (DefaultMutableTreeNode)path.getLastPathComponent();
549
		if (n.getUserObject() instanceof ITocItem)
550
		{
551
			ITocItem item = (ITocItem) n.getUserObject();
552
			Boolean b = Boolean.FALSE;
553
			// System.out.println("Collapsed: " + item.getLabel());
554
			m_ItemsExpanded.put(item.getLabel(), b);
555
		}
556
	}
557

  
558

  
559

  
560
	/* (non-Javadoc)
561
	 * @see javax.swing.event.TreeExpansionListener#treeExpanded(javax.swing.event.TreeExpansionEvent)
562
	 */
563
	public void treeExpanded(TreeExpansionEvent event) {
564
		TreePath path = event.getPath();		
565
		DefaultMutableTreeNode n = (DefaultMutableTreeNode)path.getLastPathComponent();
566
		if (n.getUserObject() instanceof ITocItem)
567
		{
568
			ITocItem item = (ITocItem) n.getUserObject();
569
			Boolean b = Boolean.TRUE;
570
			// System.out.println("Expanded: " + item.getLabel());
571
			m_ItemsExpanded.put(item.getLabel(), b);
572
		}
573
		
574
	}
575

  
576

  
500 577
}

Also available in: Unified diff