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 | 165 | jobacas | package org.gvsig.scripting.swing.impl; |
---|---|---|---|
2 | |||
3 | import java.awt.BorderLayout; |
||
4 | 185 | jobacas | import java.awt.Dimension; |
5 | 165 | jobacas | import java.net.URL; |
6 | 180 | jobacas | import java.net.URLClassLoader; |
7 | import java.util.HashMap; |
||
8 | import java.util.Locale; |
||
9 | import java.util.Map; |
||
10 | 165 | jobacas | |
11 | 180 | jobacas | import javax.help.HelpSet; |
12 | import javax.help.HelpSetException; |
||
13 | 165 | jobacas | 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 | 368 | jjdelcerro | import org.gvsig.scripting.swing.api.SyntaxtHighlightTextComponent; |
33 | 165 | jobacas | 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 | 368 | jjdelcerro | import org.gvsig.scripting.swing.impl.syntaxhighlight.JRSyntaxTextArea; |
38 | 457 | jbadia | import org.gvsig.tools.ToolsLocator; |
39 | import org.gvsig.tools.i18n.I18nManager; |
||
40 | 252 | jjdelcerro | import org.gvsig.tools.swing.api.ToolsSwingLocator; |
41 | import org.gvsig.tools.swing.api.windowmanager.WindowManager; |
||
42 | 368 | jjdelcerro | import org.slf4j.Logger; |
43 | import org.slf4j.LoggerFactory; |
||
44 | 165 | jobacas | |
45 | |||
46 | public class DefaultScriptingUIManager implements ScriptingUIManager{ |
||
47 | |||
48 | 180 | jobacas | private final static Logger logger= LoggerFactory.getLogger(DefaultScriptingUIManager.class); |
49 | ; |
||
50 | 165 | jobacas | private ScriptingManager manager;
|
51 | 180 | jobacas | private Map<String,URL> userHelps= new HashMap<String, URL>(); |
52 | 457 | jbadia | private I18nManager i18nManager;
|
53 | 180 | jobacas | |
54 | 185 | jobacas | |
55 | 165 | jobacas | |
56 | public DefaultScriptingUIManager(){
|
||
57 | 457 | jbadia | |
58 | 165 | jobacas | this.manager = ScriptingLocator.getManager();
|
59 | this.manager.put("ScriptingUIManager",this); |
||
60 | 457 | jbadia | |
61 | this.i18nManager = ToolsLocator.getI18nManager();
|
||
62 | 165 | jobacas | } |
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 | 441 | jjdelcerro | if( name == null ) { |
83 | return new ImageIcon(); |
||
84 | } |
||
85 | 165 | jobacas | 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 | 180 | jobacas | public JPanel getAPIHelp(){ |
104 | 165 | jobacas | JPanel panel = new JPanel(); |
105 | panel.setLayout(new BorderLayout()); |
||
106 | panel.add(new JHelp(this.getManager().getHelpManager().getHelpSet()),BorderLayout.CENTER); |
||
107 | 185 | jobacas | panel.setPreferredSize(new Dimension(800,600)); |
108 | 165 | jobacas | return panel;
|
109 | } |
||
110 | |||
111 | 180 | jobacas | 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 | 185 | jobacas | |
138 | 180 | jobacas | 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 | 185 | jobacas | URL resource;
|
150 | resource = loader.getResource("org/gvsig/scripting/help/help.hs");
|
||
151 | |||
152 | helpSet = new HelpSet(loader,resource);
|
||
153 | 180 | jobacas | } catch (HelpSetException e) {
|
154 | logger.warn("Can't load helpset '"+url.toString()+"'.",e); |
||
155 | return null; |
||
156 | } |
||
157 | 185 | jobacas | |
158 | 180 | jobacas | JPanel panel = new JPanel(); |
159 | panel.setLayout(new BorderLayout()); |
||
160 | panel.add(new JHelp(helpSet),BorderLayout.CENTER); |
||
161 | 185 | jobacas | panel.setPreferredSize(new Dimension(800,600)); |
162 | 180 | jobacas | return panel;
|
163 | |||
164 | } |
||
165 | |||
166 | public void addUserHelp(String langName, URL resource) { |
||
167 | this.userHelps.put(langName.toLowerCase(), resource);
|
||
168 | } |
||
169 | |||
170 | 165 | jobacas | public AboutManager getAboutManager(){
|
171 | return AboutLocator.getManager();
|
||
172 | } |
||
173 | |||
174 | 252 | jjdelcerro | public void showDialog(JPanel panel, String title) { |
175 | WindowManager winmanager = ToolsSwingLocator.getWindowManager(); |
||
176 | winmanager.showWindow(panel, title, WindowManager.MODE.DIALOG); |
||
177 | } |
||
178 | 165 | jobacas | |
179 | 252 | jjdelcerro | public void showWindow(JPanel panel, String title) { |
180 | WindowManager winmanager = ToolsSwingLocator.getWindowManager(); |
||
181 | winmanager.showWindow(panel, title, WindowManager.MODE.WINDOW); |
||
182 | } |
||
183 | 165 | jobacas | |
184 | 252 | jjdelcerro | public void showTool(JPanel panel, String title) { |
185 | WindowManager winmanager = ToolsSwingLocator.getWindowManager(); |
||
186 | winmanager.showWindow(panel, title, WindowManager.MODE.TOOL); |
||
187 | } |
||
188 | |||
189 | 165 | jobacas | 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 | 368 | jjdelcerro | 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 | 165 | jobacas | } |
223 | 457 | jbadia | |
224 | public String getTranslation(String key){ |
||
225 | if(this.i18nManager==null){ |
||
226 | this.i18nManager = ToolsLocator.getI18nManager();
|
||
227 | } |
||
228 | return i18nManager.getTranslation(key);
|
||
229 | } |
||
230 | 165 | jobacas | |
231 | } |