Statistics
| Revision:

svn-gvsig-desktop / branches / gvSIG_1.11.0_Mejoras_gvSIG-EIEL / applications / appgvSIG / src / com / iver / cit / gvsig / LayerOrderExtension.java @ 35646

History | View | Annotate | Download (5.48 KB)

1
package com.iver.cit.gvsig;
2

    
3
import java.security.KeyException;
4

    
5
import org.apache.log4j.Logger;
6

    
7
import com.iver.andami.PluginServices;
8
import com.iver.andami.plugins.Extension;
9
import com.iver.andami.plugins.IExtension;
10
import com.iver.andami.preferences.IPreference;
11
import com.iver.andami.preferences.IPreferenceExtension;
12
import com.iver.cit.gvsig.fmap.MapContext;
13
import com.iver.cit.gvsig.fmap.layers.order.DefaultOrderManager;
14
import com.iver.cit.gvsig.fmap.layers.order.OrderManager;
15
import com.iver.cit.gvsig.fmap.layers.order.RasterPolLinePointOrderManager;
16
import com.iver.cit.gvsig.gui.preferencespage.LayerOrderPage;
17
import com.iver.utiles.XMLEntity;
18
import com.iver.utiles.extensionPoints.ExtensionPoint;
19
import com.iver.utiles.extensionPoints.ExtensionPointsSingleton;
20

    
21
public class LayerOrderExtension extends Extension 
22
        implements IPreferenceExtension        {
23
        LayerOrderPage page = null;
24

    
25
        public void execute(String actionCommand) {}
26

    
27
        public void initialize() {
28
                registerIcons();
29
//                registerPrefPage();
30
                registerDefaultManager();
31
                initDefaultOrderManager();
32
                
33
                // register second order manager (raster-point)
34
                registerRasterPointManager();
35
        }
36
        
37
        private void registerRasterPointManager() {
38
                
39
                ExtensionPoint ep = 
40
                        (ExtensionPoint) ExtensionPointsSingleton.getInstance().
41
                        get(DefaultOrderManager.getExtensionPointName());
42

    
43
                OrderManager manager = new RasterPolLinePointOrderManager();
44
                ep.put(manager.getCode(), manager);
45
                
46
                // if there is no default Order Manager, set our manager as default
47
                IExtension ext = PluginServices.getExtension(com.iver.cit.gvsig.LayerOrderExtension.class);
48
                com.iver.cit.gvsig.LayerOrderExtension orderExt = (com.iver.cit.gvsig.LayerOrderExtension) ext;
49
                if (!orderExt.existsDefaultOrderManager()) {
50
                        orderExt.setDefaultOrderManager(manager);
51
                }
52

    
53
        }
54

    
55
        public boolean isEnabled() {
56
                return false;
57
        }
58
        public boolean isVisible() {
59
                return false;
60
        }
61

    
62
        public IPreference getPreferencesPage() {
63
                if (page==null) {
64
                        page = new LayerOrderPage();
65
                }
66
                return page;
67
        }
68
        
69
//  Not necessary: the page gets automatically registered by implemented IPreferenceExtension 
70
//        private void registerPrefPage() {
71
//                ExtensionPointsSingleton.getInstance().add("AplicationPreferences",
72
//                                LayerOrderPage.class.getName(), new LayerOrderPage());
73
//        }
74

    
75
        private void registerDefaultManager() {
76
                DefaultOrderManager manager = new DefaultOrderManager();
77
                ExtensionPointsSingleton.getInstance().
78
                        add(DefaultOrderManager.getExtensionPointName(),
79
                                manager.getCode(),
80
                                manager);
81

    
82
        }
83

    
84
        private void initDefaultOrderManager() {
85
                PluginServices ps = PluginServices.getPluginServices(this);
86
                XMLEntity xml = ps.getPersistentXML();
87
                if (xml!=null && xml.contains(DefaultOrderManager.getExtensionPointName())) {
88
                        String code = xml.getStringProperty(DefaultOrderManager.getExtensionPointName());
89
                        try {
90
                                ExtensionPoint ep = 
91
                                        (ExtensionPoint) ExtensionPointsSingleton.getInstance().
92
                                        get(DefaultOrderManager.getExtensionPointName());
93
                                if (ep.containsKey(code)) {
94
                                        ep.addAlias(code, DefaultOrderManager.getDefaultManagerKey());
95
                                }
96
                        }
97
                        catch (Exception ex) {
98
                                Logger.getLogger(MapContext.class).warn("Error getting default layer order manager", ex);
99
                        }
100
                }
101
        }
102

    
103
        /**
104
         * Sets as system default OrderManager the provided order manager. 
105
         */
106
        public void setDefaultOrderManager(OrderManager manager) {
107
                if (manager==null)
108
                        return;
109
                ExtensionPoint ep = 
110
                        (ExtensionPoint) ExtensionPointsSingleton.getInstance().
111
                        get(DefaultOrderManager.getExtensionPointName());
112
                if (ep!=null) {
113
                        try {
114
                                if (!ep.containsKey(manager.getCode())) {
115
                                        ep.put(manager.getCode(), manager);
116
                                }
117
                                ep.addAlias(manager.getCode(), DefaultOrderManager.getDefaultManagerKey());
118
                        } catch (KeyException e) {} // this can't happen, we have ensured the key is present
119
                }
120

    
121
                PluginServices ps = PluginServices.getPluginServices(this);
122
                XMLEntity xml = ps.getPersistentXML();
123
                xml.putProperty(DefaultOrderManager.getExtensionPointName(), manager.getCode());
124
        }
125

    
126
        /**
127
         * Gets the default OrderManager, as configured in the extension point.
128
         * 
129
         * @return The default OrderManager, as configured in the extension point,
130
         * or null if no manager was configured. 
131
         */
132
        public OrderManager getDefaultOrderManager() {
133
                return DefaultOrderManager.getDefaultOrderManager();
134
        }
135

    
136
        /**
137
         * Checks whether an OrderManager was configured as default in the
138
         * extension point.
139
         * 
140
         * @return <code>true</code> if there is a default OrderManager configured
141
         * in the extension point, or <code>false</code> otherwise.
142
         */
143
        public boolean existsDefaultOrderManager() {
144
                try {
145
                        ExtensionPoint ep = 
146
                                (ExtensionPoint) ExtensionPointsSingleton.getInstance().
147
                                get(DefaultOrderManager.getExtensionPointName());
148
                        if (ep!=null) {
149
                                Object obj = ep.create(DefaultOrderManager.getDefaultManagerKey());
150
                                if (obj!=null) {
151
                                        return true;                                
152
                                }
153
                        }
154
                }
155
                catch (Exception ex) {
156
                        Logger.getLogger(MapContext.class).warn("Error getting default layer order manager", ex);
157
                }
158
                return false;
159
        }
160
        
161
        private void registerIcons(){
162
                PluginServices.getIconTheme().registerDefault(
163
                                "layer-order-manager",
164
                                InfoToolExtension.class.getClassLoader().getResource("images/orderManager.png")
165
                );
166
        }
167

    
168
        public IPreference[] getPreferencesPages() {
169
                IPreference[] preferences=new IPreference[1];
170
                preferences[0]=getPreferencesPage();
171
                return preferences;
172
        }
173
}