Statistics
| Revision:

root / trunk / libraries / libCorePlugin / src / com / iver / core / PreferencesExtension.java @ 15786

History | View | Annotate | Download (8.57 KB)

1
package com.iver.core;
2

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

    
7
import com.iver.andami.Launcher;
8
import com.iver.andami.PluginServices;
9
import com.iver.andami.plugins.Extension;
10
import com.iver.andami.plugins.ExtensionDecorator;
11
import com.iver.andami.plugins.config.generate.Extensions;
12
import com.iver.andami.plugins.config.generate.PluginConfig;
13
import com.iver.andami.preferences.DlgPreferences;
14
import com.iver.andami.preferences.IPreference;
15
import com.iver.andami.preferences.IPreferenceExtension;
16
import com.iver.core.preferences.general.AppearancePage;
17
import com.iver.core.preferences.general.BrowserControlPage;
18
import com.iver.core.preferences.general.DirExtensionsPage;
19
import com.iver.core.preferences.general.ExtensionPage;
20
import com.iver.core.preferences.general.ExtensionsPage;
21
import com.iver.core.preferences.general.FolderingPage;
22
import com.iver.core.preferences.general.GeneralPage;
23
import com.iver.core.preferences.general.LanguagePage;
24
import com.iver.core.preferences.general.ScreenSettingsPage;
25
import com.iver.core.preferences.network.FirewallPage;
26
import com.iver.core.preferences.network.NetworkPage;
27
import com.iver.utiles.extensionPoints.ExtensionPoints;
28
import com.iver.utiles.extensionPoints.ExtensionPointsSingleton;
29

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

    
52
        private boolean initilizedExtensions=false;
53

    
54
        public void initialize() {
55

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

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

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

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

    
78

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

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

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

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

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

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

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

    
159

    
160

    
161
        }
162

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

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

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

    
182
        private void initializeCoreExtensions() {
183
                this.extensionPoints.add("AplicationPreferences","GeneralPage", new GeneralPage());
184
                this.extensionPoints.add("AplicationPreferences","NetworkPage", new NetworkPage());
185
                this.extensionPoints.add("AplicationPreferences","FirewallPage", new FirewallPage());
186
                this.extensionPoints.add("AplicationPreferences","DirExtensionsPage", new DirExtensionsPage());
187
                this.extensionPoints.add("AplicationPreferences","LanguagePage", new LanguagePage());
188
                this.extensionPoints.add("AplicationPreferences","ExtensionsPage", new ExtensionsPage());
189
                this.extensionPoints.add("AplicationPreferences","AppearancePage", new AppearancePage());
190
                this.extensionPoints.add("AplicationPreferences","FolderingPage", new FolderingPage());
191
                this.extensionPoints.add("AplicationPreferences","ResolutionPage", new ScreenSettingsPage());
192
                String os = System.getProperty("os.name").toLowerCase();
193
                if (os.indexOf("linux") != -1 || os.indexOf("unix")!= -1)
194
                        this.extensionPoints.add("AplicationPreferences","BrowserControlPage", new BrowserControlPage());
195

    
196
                //Falta los plugin
197
        }
198

    
199
        private void initializeExtensionsConfig() {
200
                HashMap pc = Launcher.getPluginConfig();
201
                ArrayList array = new ArrayList();
202
                Iterator iter = pc.values().iterator();
203

    
204
                while (iter.hasNext()) {
205
                        array.add(((PluginConfig) iter.next()).getExtensions());
206
                }
207

    
208
                Extensions[] exts = (Extensions[]) array.toArray(new Extensions[0]);
209
                for (int i = 0; i < exts.length; i++) {
210
                        for (int j = 0; j < exts[i].getExtensionCount(); j++) {
211
                                com.iver.andami.plugins.config.generate.Extension ext = exts[i]
212
                                                .getExtension(j);
213
                                String sExt = ext.getClassName().toString();
214
                                // String pn = null;
215
                                // pn = sExt.substring(0, sExt.lastIndexOf("."));
216
                                // dlgPrefs.addPreferencePage(new PluginsPage(pn));
217
                                // dlgPrefs.addPreferencePage(new ExtensionPage(ext));
218
                                this.extensionPoints.add("AplicationPreferences",sExt, new ExtensionPage(ext));
219
                        }
220
                }
221
        }
222
        /**
223
         *
224
         */
225
        private void initializeExtensions() {
226

    
227
                Iterator i =PluginServices.getExtensions();
228
                while (i.hasNext()) {
229
                        ExtensionDecorator extension = (ExtensionDecorator) i.next();
230

    
231
                        if (extension.getExtension() instanceof IPreferenceExtension) {
232
                                IPreferenceExtension pe=(IPreferenceExtension)extension.getExtension();
233
                                IPreference[] pp=pe.getPreferencesPages();
234
                                //dlgPrefs.addPreferencePage(pe.getPreferencesPage());
235
                                for (int j=0;j<pp.length;j++) {
236
                                        this.extensionPoints.add("AplicationPreferences",pp[j].getID(), pp[j]);
237
                                }
238
                        }
239
                }
240
        }
241

    
242
        public void postInitialize() {
243
                super.postInitialize();
244
                DlgPreferences dlgPreferences=PluginServices.getDlgPreferences();
245
                dlgPreferences.refreshExtensionPoints();
246
        }
247
}