Statistics
| Revision:

root / tags / v2_0_0_Build_2050 / libraries / libCorePlugin / src / org / gvsig / coreplugin / PreferencesExtension.java @ 38668

History | View | Annotate | Download (7.89 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.IconThemeHelper;
8
import org.gvsig.andami.Launcher;
9
import org.gvsig.andami.PluginServices;
10
import org.gvsig.andami.plugins.Extension;
11
import org.gvsig.andami.plugins.config.generate.Extensions;
12
import org.gvsig.andami.plugins.config.generate.PluginConfig;
13
import org.gvsig.andami.preferences.DlgPreferences;
14
import org.gvsig.andami.preferences.IPreference;
15
import org.gvsig.andami.preferences.IPreferenceExtension;
16
import org.gvsig.coreplugin.preferences.general.AppearancePage;
17
import org.gvsig.coreplugin.preferences.general.BrowserControlPage;
18
import org.gvsig.coreplugin.preferences.general.DirExtensionsPage;
19
import org.gvsig.coreplugin.preferences.general.ExtensionPage;
20
import org.gvsig.coreplugin.preferences.general.ExtensionsPage;
21
import org.gvsig.coreplugin.preferences.general.FolderingPage;
22
import org.gvsig.coreplugin.preferences.general.GeneralPage;
23
import org.gvsig.coreplugin.preferences.general.LanguagePage;
24
import org.gvsig.coreplugin.preferences.general.ScreenSettingsPage;
25
import org.gvsig.coreplugin.preferences.general.SkinPreferences;
26
import org.gvsig.coreplugin.preferences.network.FirewallPage;
27
import org.gvsig.coreplugin.preferences.network.NetworkPage;
28
import org.gvsig.tools.ToolsLocator;
29
import org.gvsig.tools.extensionpoint.ExtensionPoint;
30
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
31
import org.slf4j.Logger;
32
import org.slf4j.LoggerFactory;
33

    
34

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

    
58
        private boolean initilizedExtensions=false;
59

    
60
        public void initialize() {
61

    
62
                registerIcons();
63
                initializeCoreExtensions();
64
        }
65

    
66
        private void registerIcons(){
67
                IconThemeHelper.registerIcon("action", "edit-setup", this);
68

    
69
                // AppearancePage.java
70
                IconThemeHelper.registerIcon("preferences", "edit-setup-appearance", this);
71
                // BrowserControlPage.java
72
                IconThemeHelper.registerIcon("preferences", "edit-setup-browsercontrol", this);
73
                // DirExtensionPage.java
74
                IconThemeHelper.registerIcon("preferences", "edit-setup-dirextension", this);
75
                // ExtensionPage.java
76
                IconThemeHelper.registerIcon("preferences", "edit-setup-extension", this);
77
                // ExtensionsPage.java
78
                IconThemeHelper.registerIcon("preferences", "edit-setup-extensions", this);
79
                // GeneralPage.java
80
                IconThemeHelper.registerIcon("preferences", "edit-setup-general", this);
81
                // FolderingPage.java
82
                IconThemeHelper.registerIcon("preferences", "edit-setup-foldering", this);
83
                // LanguagePage.java
84
                IconThemeHelper.registerIcon("preferences", "edit-setup-language", this);
85
                // ScreenSettingsPage.java
86
                IconThemeHelper.registerIcon("preferences", "edit-setup-screensetting", this);
87
                // FirewallPage.java
88
                IconThemeHelper.registerIcon("preferences", "edit-setup-firewall", this);
89
                // NetworkPage.java
90
                IconThemeHelper.registerIcon("preferences", "edit-setup-network", this);
91
                // SkinPreferences.java
92
                IconThemeHelper.registerIcon("preferences", "edit-setup-skin", this);
93
        }
94

    
95
        public void execute(String actionCommand) {
96
                if (!this.initilizedExtensions) {
97
                        initializeExtensions();
98
                        initializeExtensionsConfig();
99
                        this.initilizedExtensions = true;
100
                }
101
                if ("edit-setup".equalsIgnoreCase(actionCommand)) {
102
                        DlgPreferences dlgPreferences = PluginServices.getDlgPreferences();
103
                        dlgPreferences.refreshExtensionPoints();
104
                        PluginServices.getMDIManager().addWindow(dlgPreferences);
105
                }
106
        }
107
        public boolean isEnabled() {
108
                return true;
109
        }
110

    
111
        public boolean isVisible() {
112
                return true;
113
        }
114

    
115
        private void initializeCoreExtensions() {
116
                ExtensionPoint ep = this.extensionPoints.add("AplicationPreferences", "");
117
                ep.append("GeneralPage", "", new GeneralPage());
118
                ep.append("NetworkPage", "", new NetworkPage());
119
                ep.append("FirewallPage", "", new FirewallPage());
120
                ep.append("DirExtensionsPage", "", new DirExtensionsPage());
121
                ep.append("LanguagePage", "", new LanguagePage());
122
                ep.append("ExtensionsPage", "", new ExtensionsPage());
123
                ep.append("AppearancePage", "", new AppearancePage());
124
                ep.append("FolderingPage", "", new FolderingPage());
125
                ep.append("ScreenSettingsPage", "", new ScreenSettingsPage());
126
                ep.append("SkinPreferences", "", new SkinPreferences());
127

    
128
//                this.extensionPoints.add("AplicationPreferences","GeneralPage", new GeneralPage());
129
//                this.extensionPoints.add("AplicationPreferences","NetworkPage", new NetworkPage());
130
//                this.extensionPoints.add("AplicationPreferences","FirewallPage", new FirewallPage());
131
//                this.extensionPoints.add("AplicationPreferences","DirExtensionsPage", new DirExtensionsPage());
132
//                this.extensionPoints.add("AplicationPreferences","LanguagePage", new LanguagePage());
133
//                this.extensionPoints.add("AplicationPreferences","ExtensionsPage", new ExtensionsPage());
134
//                this.extensionPoints.add("AplicationPreferences","AppearancePage", new AppearancePage());
135
//                this.extensionPoints.add("AplicationPreferences","FolderingPage", new FolderingPage());
136
//                this.extensionPoints.add("AplicationPreferences","ResolutionPage", new ScreenSettingsPage());
137
//                this.extensionPoints.add("AplicationPreferences","SkinPreferences", new SkinPreferences());
138
                String os = System.getProperty("os.name").toLowerCase();
139
                if (os.indexOf("linux") != -1 || os.indexOf("unix")!= -1) {
140
                        ep.append("BrowserControlPage", "", new BrowserControlPage());
141
//                        this.extensionPoints.add("AplicationPreferences","BrowserControlPage", new BrowserControlPage());
142
                }
143

    
144
                //Falta los plugin
145
        }
146

    
147
        private void initializeExtensionsConfig() {
148
                HashMap pc = Launcher.getPluginConfig();
149
                ArrayList array = new ArrayList();
150
                Iterator iter = pc.values().iterator();
151

    
152
                while (iter.hasNext()) {
153
                        array.add(((PluginConfig) iter.next()).getExtensions());
154
                }
155
                ExtensionPoint ep = this.extensionPoints.add("AplicationPreferences", "");
156

    
157
                Extensions[] exts = (Extensions[]) array.toArray(new Extensions[0]);
158
                for (int i = 0; i < exts.length; i++) {
159
                        for (int j = 0; j < exts[i].getExtensionCount(); j++) {
160
                                org.gvsig.andami.plugins.config.generate.Extension ext = exts[i]
161
                                                .getExtension(j);
162
                                String sExt = ext.getClassName().toString();
163
                                // String pn = null;
164
                                // pn = sExt.substring(0, sExt.lastIndexOf("."));
165
                                // dlgPrefs.addPreferencePage(new PluginsPage(pn));
166
                                // dlgPrefs.addPreferencePage(new ExtensionPage(ext));
167
                                ep.append(sExt, "", new ExtensionPage(ext));
168
                        }
169
                }
170
        }
171
        /**
172
         *
173
         */
174
        private void initializeExtensions() {
175
                Iterator i = Launcher.getExtensionIterator();
176
                ExtensionPoint ep = this.extensionPoints.add("AplicationPreferences", "");
177

    
178
                while (i.hasNext()) {
179
                        Object extension = i.next();
180

    
181
                        if (extension instanceof IPreferenceExtension) {
182
                                IPreferenceExtension pe = (IPreferenceExtension) extension;
183
                                IPreference[] pp = pe.getPreferencesPages();
184

    
185
                                if (pp == null) {
186
                                        logger.info("Preferences page is NULL. Extension "
187
                                                        + extension.getClass().getName()
188
                                                        + " implements IPreferenceExtension but does not provide pref. pages. ");
189
                                } else {
190
                                        for (int j = 0; j < pp.length; j++) {
191
                                                ep.append(pp[j].getID(), "", pp[j]);
192
                                                pp[j].initializeValues();
193
                                        }
194
                                }
195
                        }
196
                }
197
        }
198

    
199
        public void postInitialize() {
200
                super.postInitialize();
201
                DlgPreferences dlgPreferences=PluginServices.getDlgPreferences();
202
                dlgPreferences.refreshExtensionPoints();
203
                dlgPreferences.storeValues();
204
        }
205
}