Statistics
| Revision:

root / branches / v10 / libraries / libFMap / src / com / iver / cit / gvsig / fmap / layers / order / DefaultOrderManager.java @ 22326

History | View | Annotate | Download (3.64 KB)

1
package com.iver.cit.gvsig.fmap.layers.order;
2

    
3
import java.util.Map;
4

    
5
import org.apache.log4j.Logger;
6

    
7
import com.iver.cit.gvsig.fmap.MapContext;
8
import com.iver.cit.gvsig.fmap.Messages;
9
import com.iver.cit.gvsig.fmap.layers.FLayer;
10
import com.iver.cit.gvsig.fmap.layers.FLayers;
11
import com.iver.utiles.XMLEntity;
12
import com.iver.utiles.extensionPoints.ExtensionPoint;
13
import com.iver.utiles.extensionPoints.ExtensionPointsSingleton;
14

    
15
/**
16
 * Implements the default gvSIG behaviour when adding a new layer
17
 * to a collection.
18
 * 
19
 * @author Cesar Martinez Izquierdo <cesar.martinez@iver.es>
20
 *
21
 */
22
public class DefaultOrderManager implements OrderManager {
23
        protected static final String extensionPointName = "layer.order.manager";
24
        protected static final String configuredManagerKey = "default.manager";
25
        protected static final String name = "DefaultOrderManager";
26
        protected static final String description = "New_layers_are_always_placed_on_top.";
27

    
28
        public int getPosition(FLayers target, FLayer newLayer) {
29
                return target.getLayersCount();
30
        }
31

    
32
        public static String getExtensionPointName() {
33
                return extensionPointName;
34
        }
35

    
36
        public static String getDefaultManagerKey() {
37
                return configuredManagerKey;
38
        }
39

    
40
        public String getClassName() {
41
                return this.getClass().getName();
42
        }
43

    
44
        public XMLEntity getXMLEntity() {
45
                return null;
46
        }
47

    
48
        public void setXMLEntity(XMLEntity xml) {
49
        }
50

    
51
        public String getDescription() {
52
                return Messages.getString(description);
53
        }
54

    
55
        public String getName() {
56
                return name;
57
        }
58

    
59
        public String toString() {
60
                return getName();
61
        }
62

    
63
        public String getCode() {
64
                return getClassName();
65
        }
66

    
67
        public Object clone() {
68
                try {
69
                        return super.clone();
70
                } catch (CloneNotSupportedException e) {}
71
                return null;
72
        }
73

    
74
        public Object create() {
75
                return this;
76
        }
77

    
78
        public Object create(Object[] args) {
79
                return this;
80
        }
81

    
82
        public Object create(Map args) {
83
                return this;
84
        }
85

    
86
        /**
87
         * Gets the default OrderManager, as configured in the extension point.
88
         * 
89
         * @return The default OrderManager, as configured in the extension point,
90
         * or null if no manager was configured. 
91
         */
92
        public static OrderManager getDefaultOrderManager(){
93
                try {
94
                        ExtensionPoint ep = 
95
                                (ExtensionPoint) ExtensionPointsSingleton.getInstance().
96
                                get(DefaultOrderManager.getExtensionPointName());
97
                        if (ep!=null) {
98
                                Object obj = ep.create(DefaultOrderManager.getDefaultManagerKey());
99
                                if (obj!=null) {
100
                                        return (OrderManager) obj;                                
101
                                }
102
                        }
103
                }
104
                catch (Exception ex) {
105
                        Logger.getLogger(MapContext.class).warn("Error getting default layer order manager", ex);
106
                }
107
                // if something goes wrong, just return the fallback default order manager
108
                return null;
109
        }
110

    
111
        /**
112
         * Gets the OrderManager registered as <code>managerCode</code> in the
113
         * extension point.
114
         * 
115
         * @return the OrderManager registered as <code>managerCode</code> in the
116
         * extension point, or an instance of DefaultOrderManager if not found.
117
         */
118
        public static OrderManager getOrderManager(String managerCode){
119
                try {
120
                        ExtensionPoint ep = 
121
                                (ExtensionPoint) ExtensionPointsSingleton.getInstance().
122
                                get(DefaultOrderManager.getExtensionPointName());
123
                        if (ep!=null) {
124
                                Object obj = ep.create(managerCode);
125
                                if (obj!=null && obj instanceof OrderManager) {
126
                                        return (OrderManager) obj;                                
127
                                }
128
                        }
129
                }
130
                catch (InstantiationException e) { // it may happen if the OrderManager is not installed in the system, that's OK
131
                } catch (IllegalAccessException e) {
132
                }
133
                // if something goes wrong, just return the fallback default order manager
134
                return  new DefaultOrderManager();
135
        }
136
}