Statistics
| Revision:

gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.swing / org.gvsig.scripting.swing.impl / src / main / java / org / gvsig / scripting / swing / impl / DefaultScriptingUIManager.java @ 457

History | View | Annotate | Download (6.79 KB)

1
package org.gvsig.scripting.swing.impl;
2

    
3
import java.awt.BorderLayout;
4
import java.awt.Dimension;
5
import java.net.URL;
6
import java.net.URLClassLoader;
7
import java.util.HashMap;
8
import java.util.Locale;
9
import java.util.Map;
10

    
11
import javax.help.HelpSet;
12
import javax.help.HelpSetException;
13
import javax.help.JHelp;
14
import javax.swing.ImageIcon;
15
import javax.swing.JPanel;
16

    
17
import org.gvsig.about.AboutLocator;
18
import org.gvsig.about.AboutManager;
19
import org.gvsig.scripting.ScriptingDialog;
20
import org.gvsig.scripting.ScriptingFolder;
21
import org.gvsig.scripting.ScriptingLocator;
22
import org.gvsig.scripting.ScriptingManager;
23
import org.gvsig.scripting.ScriptingScript;
24
import org.gvsig.scripting.swing.api.JCodeEditor;
25
import org.gvsig.scripting.swing.api.JDialogEditor;
26
import org.gvsig.scripting.swing.api.JScriptingBrowser;
27
import org.gvsig.scripting.swing.api.JScriptingComposer;
28
import org.gvsig.scripting.swing.api.JScriptingLauncher;
29
import org.gvsig.scripting.swing.api.JThinG;
30
import org.gvsig.scripting.swing.api.JThinlet;
31
import org.gvsig.scripting.swing.api.ScriptingUIManager;
32
import org.gvsig.scripting.swing.api.SyntaxtHighlightTextComponent;
33
import org.gvsig.scripting.swing.impl.composer.DefaultJCodeEditor;
34
import org.gvsig.scripting.swing.impl.composer.DefaultJDialogEditor;
35
import org.gvsig.scripting.swing.impl.composer.DefaultJScriptingComposer;
36
import org.gvsig.scripting.swing.impl.syntaxhighlight.JEditorPaneSyntaxHighlighting;
37
import org.gvsig.scripting.swing.impl.syntaxhighlight.JRSyntaxTextArea;
38
import org.gvsig.tools.ToolsLocator;
39
import org.gvsig.tools.i18n.I18nManager;
40
import org.gvsig.tools.swing.api.ToolsSwingLocator;
41
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
42
import org.slf4j.Logger;
43
import org.slf4j.LoggerFactory;
44

    
45

    
46
public class DefaultScriptingUIManager implements ScriptingUIManager{
47

    
48
        private final static Logger logger= LoggerFactory.getLogger(DefaultScriptingUIManager.class);
49
;
50
        private ScriptingManager manager;
51
        private Map<String,URL> userHelps= new HashMap<String, URL>();
52
        private I18nManager i18nManager;
53
        
54

    
55

    
56
        public DefaultScriptingUIManager(){
57
                
58
                this.manager =  ScriptingLocator.getManager();
59
                this.manager.put("ScriptingUIManager",this);
60
                
61
                this.i18nManager = ToolsLocator.getI18nManager();
62
        }
63
        
64
        public JScriptingComposer createComposer() {
65
                return new DefaultJScriptingComposer(this);
66
        }
67

    
68
        public JPanel createInstaller() {
69
                // TODO Auto-generated method stub
70
                return null;
71
        }
72

    
73
        public JScriptingLauncher createLauncher() {
74
                return new DefaultJScriptingLauncher(this);
75
        }
76

    
77
        public ImageIcon getIcon(String name){
78
                return this.getIcon(name, null);
79
        }
80
        
81
        public ImageIcon getIcon(String name, String size) {
82
                if( name == null ) {
83
                        return new ImageIcon();
84
                }
85
                String tamanyo = "16x16/";
86
                if(size != null && size.equals("big"))
87
                        tamanyo = "32x32/";
88
                ClassLoader loader = this.getClass().getClassLoader();
89
                URL url = loader.getResource("org/gvsig/scripting/images/"+tamanyo+name+".png");
90
                if (url == null){
91
                        url = loader.getResource("org/gvsig/scripting/images/"+tamanyo+"image-missing.png");
92
                }
93
                if (url == null){
94
                        return new ImageIcon();
95
                }
96
                return new ImageIcon(url);
97
        }
98

    
99
        public ScriptingManager getManager() {
100
                return this.manager;
101
        }
102
        
103
        public JPanel getAPIHelp(){
104
                JPanel panel = new JPanel();
105
                panel.setLayout(new BorderLayout());
106
                panel.add(new JHelp(this.getManager().getHelpManager().getHelpSet()),BorderLayout.CENTER);
107
                panel.setPreferredSize(new Dimension(800,600));
108
                return panel;
109
        }
110

    
111
        public String[] getPrerreferedLanguages(){
112
                String curr = Locale.getDefault().getLanguage().toLowerCase();
113
                if(curr.equals("gl")){
114
                        return new String[]{"gl","es","en"};
115
                }
116
                if(curr.equals("ca")){
117
                        return new String[]{"ca","es","en"};
118
                }
119
                if(curr.equals("eu")){
120
                        return new String[]{"eu","es","en"};
121
                }
122
                if(curr.equals("va")){
123
                        return new String[]{"va","ca","es","en"};
124
                }
125
                return new String[]{curr,"en","es"};
126
        }
127
        
128
        public JPanel getUserHelp() {
129
                String[] langs= this.getPrerreferedLanguages();
130
                URL url=null;
131
                for (int i=0; i<langs.length;i++){
132
                        url = this.userHelps.get(langs[i]);
133
                        if(url!=null){
134
                                break;
135
                        }
136
                }
137

    
138
                if(url==null){
139
                        logger.warn("Can't have help");
140
                        return null;
141
                }
142
                
143
                URL[] urls = new URL[1];
144
                urls[0] = url;
145
        ClassLoader loader = new URLClassLoader(urls,this.getClass().getClassLoader());
146
        
147
                HelpSet helpSet=null;
148
                try {
149
                        URL resource;
150
                        resource = loader.getResource("org/gvsig/scripting/help/help.hs");
151
                        
152
                        helpSet = new HelpSet(loader,resource);
153
                } catch (HelpSetException e) {
154
                        logger.warn("Can't load helpset '"+url.toString()+"'.",e);
155
                        return null;
156
                }
157
                
158
                JPanel panel = new JPanel();
159
                panel.setLayout(new BorderLayout());
160
                panel.add(new JHelp(helpSet),BorderLayout.CENTER);
161
                panel.setPreferredSize(new Dimension(800,600));
162
                return panel;
163

    
164
        }
165

    
166
        public void addUserHelp(String langName, URL resource) {
167
                this.userHelps.put(langName.toLowerCase(), resource);
168
        }
169
        
170
        public AboutManager getAboutManager(){
171
                return AboutLocator.getManager();
172
        }
173

    
174
    public void showDialog(JPanel panel, String title) {
175
        WindowManager winmanager = ToolsSwingLocator.getWindowManager();
176
        winmanager.showWindow(panel, title, WindowManager.MODE.DIALOG);
177
    }
178

    
179
    public void showWindow(JPanel panel, String title) {
180
        WindowManager winmanager = ToolsSwingLocator.getWindowManager();
181
        winmanager.showWindow(panel, title, WindowManager.MODE.WINDOW);
182
    }
183

    
184
    public void showTool(JPanel panel, String title) {
185
        WindowManager winmanager = ToolsSwingLocator.getWindowManager();
186
        winmanager.showWindow(panel, title, WindowManager.MODE.TOOL);
187
    }
188

    
189
        public JScriptingBrowser createBrowser(ScriptingUIManager uimanager, ScriptingFolder root, boolean foldersOnly) {
190
                return new DefaultJScriptingBrowser(uimanager, root, foldersOnly);
191
        }
192
        
193
        public JScriptingBrowser createBrowser(ScriptingUIManager uimanager, ScriptingFolder root) {
194
                return new DefaultJScriptingBrowser(uimanager, root, false);
195
        }
196

    
197
        public JCodeEditor createJCodeEditor(ScriptingUIManager uimanager, ScriptingScript script) {
198
                return new DefaultJCodeEditor(uimanager,script);
199
        }
200

    
201
        public JDialogEditor createJDialogEditor(ScriptingUIManager uimanager, ScriptingDialog script) {
202
                return new DefaultJDialogEditor(uimanager,script);
203
        }
204

    
205
        public JThinG createJThinG() {
206
                JThinG thing = new DefaultJThinG();
207
                return thing;
208
        }
209

    
210
        public JThinlet createJThinlet() {
211
                JThinlet thinlet = new DefaultJThinlet();
212
                return thinlet;
213
        }
214

    
215
        public SyntaxtHighlightTextComponent createSyntaxHighlightingPanel() {
216
                try {
217
                        return new JRSyntaxTextArea();
218
                } catch( Throwable t) {
219
                        logger.info("Can't create advanced SyntaxHighlightingPanel.", t);
220
                        return new JEditorPaneSyntaxHighlighting();
221
                }
222
        }
223
        
224
        public String getTranslation(String key){
225
                if(this.i18nManager==null){
226
                        this.i18nManager = ToolsLocator.getI18nManager();
227
                }
228
                return i18nManager.getTranslation(key);
229
        }
230

    
231
}