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 @ 368

History | View | Annotate | Download (6.4 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.swing.api.ToolsSwingLocator;
39
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
40
import org.slf4j.Logger;
41
import org.slf4j.LoggerFactory;
42

    
43

    
44
public class DefaultScriptingUIManager implements ScriptingUIManager{
45

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

    
52

    
53
        public DefaultScriptingUIManager(){
54
                this.manager =  ScriptingLocator.getManager();
55
                this.manager.put("ScriptingUIManager",this);
56
        }
57
        
58
        public JScriptingComposer createComposer() {
59
                return new DefaultJScriptingComposer(this);
60
        }
61

    
62
        public JPanel createInstaller() {
63
                // TODO Auto-generated method stub
64
                return null;
65
        }
66

    
67
        public JScriptingLauncher createLauncher() {
68
                return new DefaultJScriptingLauncher(this);
69
        }
70

    
71
        public ImageIcon getIcon(String name){
72
                return this.getIcon(name, null);
73
        }
74
        
75
        public ImageIcon getIcon(String name, String size) {
76
                String tamanyo = "16x16/";
77
                if(size != null && size.equals("big"))
78
                        tamanyo = "32x32/";
79
                ClassLoader loader = this.getClass().getClassLoader();
80
                URL url = loader.getResource("org/gvsig/scripting/images/"+tamanyo+name+".png");
81
                if (url == null){
82
                        url = loader.getResource("org/gvsig/scripting/images/"+tamanyo+"image-missing.png");
83
                }
84
                if (url == null){
85
                        return new ImageIcon();
86
                }
87
                return new ImageIcon(url);
88
        }
89

    
90
        public ScriptingManager getManager() {
91
                return this.manager;
92
        }
93
        
94
        public JPanel getAPIHelp(){
95
                JPanel panel = new JPanel();
96
                panel.setLayout(new BorderLayout());
97
                panel.add(new JHelp(this.getManager().getHelpManager().getHelpSet()),BorderLayout.CENTER);
98
                panel.setPreferredSize(new Dimension(800,600));
99
                return panel;
100
        }
101

    
102
        public String[] getPrerreferedLanguages(){
103
                String curr = Locale.getDefault().getLanguage().toLowerCase();
104
                if(curr.equals("gl")){
105
                        return new String[]{"gl","es","en"};
106
                }
107
                if(curr.equals("ca")){
108
                        return new String[]{"ca","es","en"};
109
                }
110
                if(curr.equals("eu")){
111
                        return new String[]{"eu","es","en"};
112
                }
113
                if(curr.equals("va")){
114
                        return new String[]{"va","ca","es","en"};
115
                }
116
                return new String[]{curr,"en","es"};
117
        }
118
        
119
        public JPanel getUserHelp() {
120
                String[] langs= this.getPrerreferedLanguages();
121
                URL url=null;
122
                for (int i=0; i<langs.length;i++){
123
                        url = this.userHelps.get(langs[i]);
124
                        if(url!=null){
125
                                break;
126
                        }
127
                }
128

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

    
155
        }
156

    
157
        public void addUserHelp(String langName, URL resource) {
158
                this.userHelps.put(langName.toLowerCase(), resource);
159
        }
160
        
161
        public AboutManager getAboutManager(){
162
                return AboutLocator.getManager();
163
        }
164

    
165
    public void showDialog(JPanel panel, String title) {
166
        WindowManager winmanager = ToolsSwingLocator.getWindowManager();
167
        winmanager.showWindow(panel, title, WindowManager.MODE.DIALOG);
168
    }
169

    
170
    public void showWindow(JPanel panel, String title) {
171
        WindowManager winmanager = ToolsSwingLocator.getWindowManager();
172
        winmanager.showWindow(panel, title, WindowManager.MODE.WINDOW);
173
    }
174

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

    
180
        public JScriptingBrowser createBrowser(ScriptingUIManager uimanager, ScriptingFolder root, boolean foldersOnly) {
181
                return new DefaultJScriptingBrowser(uimanager, root, foldersOnly);
182
        }
183
        
184
        public JScriptingBrowser createBrowser(ScriptingUIManager uimanager, ScriptingFolder root) {
185
                return new DefaultJScriptingBrowser(uimanager, root, false);
186
        }
187

    
188
        public JCodeEditor createJCodeEditor(ScriptingUIManager uimanager, ScriptingScript script) {
189
                return new DefaultJCodeEditor(uimanager,script);
190
        }
191

    
192
        public JDialogEditor createJDialogEditor(ScriptingUIManager uimanager, ScriptingDialog script) {
193
                return new DefaultJDialogEditor(uimanager,script);
194
        }
195

    
196
        public JThinG createJThinG() {
197
                JThinG thing = new DefaultJThinG();
198
                return thing;
199
        }
200

    
201
        public JThinlet createJThinlet() {
202
                JThinlet thinlet = new DefaultJThinlet();
203
                return thinlet;
204
        }
205

    
206
        public SyntaxtHighlightTextComponent createSyntaxHighlightingPanel() {
207
                try {
208
                        return new JRSyntaxTextArea();
209
                } catch( Throwable t) {
210
                        logger.info("Can't create advanced SyntaxHighlightingPanel.", t);
211
                        return new JEditorPaneSyntaxHighlighting();
212
                }
213
        }
214

    
215
}