Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.fmap.control / src / main / java / org / gvsig / fmap / mapcontrol / CompoundLayersTreeModel.java @ 42651

History | View | Annotate | Download (2.49 KB)

1
package org.gvsig.fmap.mapcontrol;
2

    
3
import java.util.ArrayList;
4
import java.util.Iterator;
5
import java.util.List;
6
import javax.swing.event.TreeModelEvent;
7
import javax.swing.event.TreeModelListener;
8
import javax.swing.tree.TreeModel;
9
import javax.swing.tree.TreePath;
10
import org.gvsig.fmap.mapcontext.layers.FLayer;
11
import org.gvsig.fmap.mapcontext.layers.FLayers;
12

    
13

    
14
public class CompoundLayersTreeModel implements TreeModel {
15

    
16
        protected final FLayers layers;
17

    
18
        protected final List<TreeModelListener> listeners = new ArrayList();
19

    
20
        public CompoundLayersTreeModel() {
21
            this.layers = new FLayers();
22
        }
23
        
24
        public void addLayers(FLayers layers) {
25
            this.layers.add(layers);
26
        }
27

    
28
        @Override
29
        public Object getRoot() {
30
            return layers;
31
        }
32

    
33
        @Override
34
        public Object getChild(Object parent, int index) {
35
            if (!(parent instanceof FLayers)) {
36
                return null;
37
            }
38
            return ((FLayers) parent).getLayer(index);
39
        }
40

    
41
        @Override
42
        public int getChildCount(Object parent) {
43
            if (!(parent instanceof FLayers)) {
44
                return 0;
45
            }
46
            return ((FLayers) parent).getLayersCount();
47
        }
48

    
49
        @Override
50
        public boolean isLeaf(Object node) {
51
            return !(node instanceof FLayers);
52
        }
53

    
54
        @Override
55
        public int getIndexOfChild(Object parent, Object child) {
56
            for( int i=0; i<((FLayers)parent).getLayersCount() ; i++ ) {
57
                FLayer layer = ((FLayers)parent).getLayer(i);
58
                if( child == layer ) {
59
                    return i;
60
                }
61
            }
62
            return -1;
63
        }
64

    
65
        @Override
66
        public void valueForPathChanged(TreePath path, Object value) {
67
        }
68

    
69
        @Override
70
        public void addTreeModelListener(TreeModelListener listener) {
71
            listeners.add(listener);
72
        }
73

    
74
        @Override
75
        public void removeTreeModelListener(TreeModelListener listener) {
76
            listeners.remove(listener);
77
        }
78

    
79
        public void reload() {
80
            TreeModelEvent event = new TreeModelEvent(this, new TreePath(this.layers));
81
            Iterator<TreeModelListener> iterator = listeners.iterator();
82
            TreeModelListener listener;
83
            while (iterator.hasNext()) {
84
                listener = iterator.next();
85
                listener.treeStructureChanged(event);
86
            }
87
        }
88
}