Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libCorePlugin / src / org / gvsig / coreplugin / PreferencesExtension.java @ 29630

History | View | Annotate | Download (9.54 KB)

1
package org.gvsig.coreplugin;
2

    
3
import java.util.ArrayList;
4
import java.util.HashMap;
5
import java.util.Iterator;
6

    
7
import org.gvsig.andami.Launcher;
8
import org.gvsig.andami.PluginServices;
9
import org.gvsig.andami.plugins.Extension;
10
import org.gvsig.andami.plugins.config.generate.Extensions;
11
import org.gvsig.andami.plugins.config.generate.PluginConfig;
12
import org.gvsig.andami.preferences.DlgPreferences;
13
import org.gvsig.andami.preferences.IPreference;
14
import org.gvsig.andami.preferences.IPreferenceExtension;
15
import org.gvsig.coreplugin.preferences.general.AppearancePage;
16
import org.gvsig.coreplugin.preferences.general.BrowserControlPage;
17
import org.gvsig.coreplugin.preferences.general.DirExtensionsPage;
18
import org.gvsig.coreplugin.preferences.general.ExtensionPage;
19
import org.gvsig.coreplugin.preferences.general.ExtensionsPage;
20
import org.gvsig.coreplugin.preferences.general.FolderingPage;
21
import org.gvsig.coreplugin.preferences.general.GeneralPage;
22
import org.gvsig.coreplugin.preferences.general.LanguagePage;
23
import org.gvsig.coreplugin.preferences.general.ScreenSettingsPage;
24
import org.gvsig.coreplugin.preferences.general.SkinPreferences;
25
import org.gvsig.coreplugin.preferences.network.FirewallPage;
26
import org.gvsig.coreplugin.preferences.network.NetworkPage;
27
import org.gvsig.tools.ToolsLocator;
28
import org.gvsig.tools.extensionpoint.ExtensionPoint;
29
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
30

    
31

    
32
/**
33
 *
34
 * <p>
35
 * Extension that provides support for visual application configuration
36
 * through a Preferences dialog where the user can specify its own settings for
37
 * general purpose aspects.
38
 * </p>
39
 * <p>
40
 * Adding new preference pages is made through ExtensionPoints by invoking
41
 * <b>
42
 *         this.extensionPoints.add("AplicationPreferences","YourIPreferencesClassName", yourIPreferencesPage);
43
 * </b>
44
 * and then call <b>DlgPreferences.refreshExtensionPoints();</b>
45
 * </p>
46
 *
47
 * @author jaume dominguez faus - jaume.dominguez@iver.es
48
 *
49
 */
50
public class PreferencesExtension extends Extension{
51
        private ExtensionPointManager extensionPoints =ToolsLocator.getExtensionPointManager();
52

    
53
        private boolean initilizedExtensions=false;
54

    
55
        public void initialize() {
56

    
57
                registerIcons();
58
                initializeCoreExtensions();
59
        }
60

    
61
        private void registerIcons(){
62
                PluginServices.getIconTheme().registerDefault(
63
                                "application-preferences",
64
                                this.getClass().getClassLoader().getResource("images/config.png")
65
                        );
66

    
67
                        // AppearancePage.java
68
                        PluginServices.getIconTheme().registerDefault(
69
                                        "aplication-preferences-appearance",
70
                                        this.getClass().getClassLoader().getResource("images/gnome-settings-theme.png")
71
                                );
72

    
73
                        // BrowserControlPage.java
74
                        PluginServices.getIconTheme().registerDefault(
75
                                        "aplication-preferences-browsercontrol",
76
                                        this.getClass().getClassLoader().getResource("images/browser.png")
77
                                );
78

    
79

    
80
                        // DirExtensionPage.java
81
                        PluginServices.getIconTheme().registerDefault(
82
                                        "aplication-preferences-dirextension",
83
                                        this.getClass().getClassLoader().getResource("images/file-manager.png")
84
                                );
85

    
86
                        // ExtensionPage.java
87
                        PluginServices.getIconTheme().registerDefault(
88
                                        "aplication-preferences-extension",
89
                                        this.getClass().getClassLoader().getResource("images/emblem-work.png")
90
                                );
91

    
92
                        // ExtensionsPage.java
93
                        PluginServices.getIconTheme().registerDefault(
94
                                        "aplication-preferences-extensions",
95
                                        this.getClass().getClassLoader().getResource("images/bonobo-component-browser.png")
96
                                );
97

    
98
                        // FolderingPage.java
99
                        PluginServices.getIconTheme().registerDefault(
100
                                        "aplication-preferences-foldering",
101
                                        this.getClass().getClassLoader().getResource("images/folder.png")
102
                                );
103

    
104
                        // LanguagePage.java
105
                        PluginServices.getIconTheme().registerDefault(
106
                                        "aplication-preferences-language",
107
                                        this.getClass().getClassLoader().getResource("images/babel.png")
108
                                );
109

    
110
                        // ScreenSettingsPage.java
111
                        PluginServices.getIconTheme().registerDefault(
112
                                        "aplication-preferences-screensetting",
113
                                        this.getClass().getClassLoader().getResource("images/resolution.png")
114
                                );
115
                        // FirewallPage.java
116
                        PluginServices.getIconTheme().registerDefault(
117
                                        "aplication-preferences-firewall",
118
                                        this.getClass().getClassLoader().getResource("images/shield.png")
119
                                );
120

    
121
                        // NetworkPage.java
122
                        //
123
                        PluginServices.getIconTheme().registerDefault(
124
                                        "aplication-preferences-network",
125
                                        this.getClass().getClassLoader().getResource("images/network.png")
126
                                );
127
                        PluginServices.getIconTheme().registerDefault(
128
                                        "application-console",
129
                                        this.getClass().getClassLoader().getResource("images/console.png")
130
                                );
131
                        PluginServices.getIconTheme().registerDefault(
132
                                        "gnome-settings-theme",
133
                                        this.getClass().getClassLoader().getResource("images/gnome-settings-theme.png")
134
                                );
135
                        PluginServices.getIconTheme().registerDefault(
136
                                        "browser-icon",
137
                                        this.getClass().getClassLoader().getResource("images/browser.png")
138
                                );
139
                        PluginServices.getIconTheme().registerDefault(
140
                                        "file-manager",
141
                                        this.getClass().getClassLoader().getResource("images/file-manager.png")
142
                                );
143
                        PluginServices.getIconTheme().registerDefault(
144
                                        "emblem-work",
145
                                        this.getClass().getClassLoader().getResource("images/emblem-work.png")
146
                                );
147
                        PluginServices.getIconTheme().registerDefault(
148
                                        "folder-icon",
149
                                        this.getClass().getClassLoader().getResource("images/folder.png")
150
                                );
151
                        PluginServices.getIconTheme().registerDefault(
152
                                        "kde-network-online-icon",
153
                                        this.getClass().getClassLoader().getResource("images/kde-network-online.png")
154
                                );
155
                        PluginServices.getIconTheme().registerDefault(
156
                                        "kde-network-offline-icon",
157
                                        this.getClass().getClassLoader().getResource("images/kde-network-offline.png")
158
                                );
159

    
160

    
161

    
162
        }
163

    
164
        public void execute(String actionCommand) {
165
                if (!this.initilizedExtensions) {
166
                        initializeExtensions();
167
                        initializeExtensionsConfig();
168
                        this.initilizedExtensions = true;
169
                }
170

    
171
                DlgPreferences dlgPreferences=PluginServices.getDlgPreferences();
172
                dlgPreferences.refreshExtensionPoints();
173
                PluginServices.getMDIManager().addWindow(dlgPreferences);
174
        }
175
        public boolean isEnabled() {
176
                return true;
177
        }
178

    
179
        public boolean isVisible() {
180
                return true;
181
        }
182

    
183
        private void initializeCoreExtensions() {
184
                ExtensionPoint ep = this.extensionPoints.add("AplicationPreferences", "");
185
                ep.append("GeneralPage", "", new GeneralPage());
186
                ep.append("NetworkPage", "", new NetworkPage());
187
                ep.append("FirewallPage", "", new FirewallPage());
188
                ep.append("DirExtensionsPage", "", new DirExtensionsPage());
189
                ep.append("LanguagePage", "", new LanguagePage());
190
                ep.append("ExtensionsPage", "", new ExtensionsPage());
191
                ep.append("AppearancePage", "", new AppearancePage());
192
                ep.append("FolderingPage", "", new FolderingPage());
193
                ep.append("ScreenSettingsPage", "", new ScreenSettingsPage());
194
                ep.append("SkinPreferences", "", new SkinPreferences());
195

    
196
//                this.extensionPoints.add("AplicationPreferences","GeneralPage", new GeneralPage());
197
//                this.extensionPoints.add("AplicationPreferences","NetworkPage", new NetworkPage());
198
//                this.extensionPoints.add("AplicationPreferences","FirewallPage", new FirewallPage());
199
//                this.extensionPoints.add("AplicationPreferences","DirExtensionsPage", new DirExtensionsPage());
200
//                this.extensionPoints.add("AplicationPreferences","LanguagePage", new LanguagePage());
201
//                this.extensionPoints.add("AplicationPreferences","ExtensionsPage", new ExtensionsPage());
202
//                this.extensionPoints.add("AplicationPreferences","AppearancePage", new AppearancePage());
203
//                this.extensionPoints.add("AplicationPreferences","FolderingPage", new FolderingPage());
204
//                this.extensionPoints.add("AplicationPreferences","ResolutionPage", new ScreenSettingsPage());
205
//                this.extensionPoints.add("AplicationPreferences","SkinPreferences", new SkinPreferences());
206
                String os = System.getProperty("os.name").toLowerCase();
207
                if (os.indexOf("linux") != -1 || os.indexOf("unix")!= -1) {
208
                        ep.append("BrowserControlPage", "", new BrowserControlPage());
209
//                        this.extensionPoints.add("AplicationPreferences","BrowserControlPage", new BrowserControlPage());
210
                }
211

    
212
                //Falta los plugin
213
        }
214

    
215
        private void initializeExtensionsConfig() {
216
                HashMap pc = Launcher.getPluginConfig();
217
                ArrayList array = new ArrayList();
218
                Iterator iter = pc.values().iterator();
219

    
220
                while (iter.hasNext()) {
221
                        array.add(((PluginConfig) iter.next()).getExtensions());
222
                }
223
                ExtensionPoint ep = this.extensionPoints.add("AplicationPreferences", "");
224

    
225
                Extensions[] exts = (Extensions[]) array.toArray(new Extensions[0]);
226
                for (int i = 0; i < exts.length; i++) {
227
                        for (int j = 0; j < exts[i].getExtensionCount(); j++) {
228
                                org.gvsig.andami.plugins.config.generate.Extension ext = exts[i]
229
                                                .getExtension(j);
230
                                String sExt = ext.getClassName().toString();
231
                                // String pn = null;
232
                                // pn = sExt.substring(0, sExt.lastIndexOf("."));
233
                                // dlgPrefs.addPreferencePage(new PluginsPage(pn));
234
                                // dlgPrefs.addPreferencePage(new ExtensionPage(ext));
235
                                ep.append(sExt, "", new ExtensionPage(ext));
236
                        }
237
                }
238
        }
239
        /**
240
         *
241
         */
242
        private void initializeExtensions() {
243
                Iterator i = Launcher.getExtensionIterator();
244
                ExtensionPoint ep = this.extensionPoints.add("AplicationPreferences", "");
245

    
246
                while (i.hasNext()) {
247
                        Object extension = i.next();
248

    
249
                        if (extension instanceof IPreferenceExtension) {
250
                                IPreferenceExtension pe=(IPreferenceExtension)extension;
251
                                IPreference[] pp=pe.getPreferencesPages();
252
                                for (int j=0;j<pp.length;j++) {
253
                                        ep.append(pp[j].getID(), "", pp[j]);
254
                                        pp[j].initializeValues();
255
                                }
256
                        }
257
                }
258
        }
259

    
260
        public void postInitialize() {
261
                super.postInitialize();
262
                DlgPreferences dlgPreferences=PluginServices.getDlgPreferences();
263
                dlgPreferences.refreshExtensionPoints();
264
                dlgPreferences.storeValues();
265
        }
266
}