Revision 471
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.app/org.gvsig.scripting.app.mainplugin/src/main/java/org/gvsig/scripting/app/extension/ScriptingExtension.java | ||
---|---|---|
34 | 34 |
import java.util.List; |
35 | 35 |
|
36 | 36 |
import javax.swing.JOptionPane; |
37 |
import org.apache.commons.io.FileUtils; |
|
37 | 38 |
|
38 | 39 |
import org.gvsig.andami.IconThemeHelper; |
39 | 40 |
import org.gvsig.andami.PluginServices; |
... | ... | |
106 | 107 |
IconThemeHelper.registerIcon("action", "tools-scripting-console-jython", this); |
107 | 108 |
} |
108 | 109 |
|
110 |
private void addLinkToPreviousVersion(ScriptingManager manager) { |
|
111 |
// File home = manager.getHomeFolder(); |
|
112 |
// File home_1_0 = new File(home.getParentFile(), "org.gvsig.scripting.app.extension"); |
|
113 |
// File home_scripts_1_0 = new File(home_1_0, "scripts"); |
|
114 |
// manager.addAlternativeUserFolder(home_scripts_1_0, "Usuario (1.0)", "Scripts de usuario (1.0)"); |
|
115 |
|
|
116 |
String contents = "[Unit]\n" + |
|
117 |
"type = Folder\n" + |
|
118 |
"name = Previous version\n" + |
|
119 |
"description =\n" + |
|
120 |
"createdBy =\n" + |
|
121 |
"version =\n" + |
|
122 |
"\n" + |
|
123 |
"[Folder]\n" + |
|
124 |
"path = ../../org.gvsig.scripting.app.extension/scripts\n\n\n"; |
|
125 |
File previousVersion = new File(manager.getUserFolder().getFile(),"previous_version.inf"); |
|
126 |
if( !previousVersion.exists() ) { |
|
127 |
try { |
|
128 |
FileUtils.writeStringToFile(previousVersion, contents); |
|
129 |
} catch (IOException ex) { |
|
130 |
logger.warn("Can't create ScriptingFolder file in '"+previousVersion.getAbsolutePath()+"'.",ex); |
|
131 |
} |
|
132 |
} |
|
133 |
} |
|
134 |
|
|
109 | 135 |
@Override |
110 | 136 |
public void postInitialize() { |
111 | 137 |
super.postInitialize(); |
... | ... | |
114 | 140 |
|
115 | 141 |
File home = this.getPlugin().getPluginHomeFolder(); |
116 | 142 |
manager.setHomeFolder(home); |
117 |
File home_1_0 = new File(home.getParentFile(), "org.gvsig.scripting.app.extension"); |
|
118 |
File home_scripts_1_0 = new File(home_1_0, "scripts"); |
|
119 |
manager.addAlternativeUserFolder(home_scripts_1_0, "Usuario (1.0)", "Scripts de usuario (1.0)"); |
|
120 |
|
|
143 |
|
|
144 |
this.addLinkToPreviousVersion(manager); |
|
145 |
|
|
121 | 146 |
List<File> pluginsFolders = new ArrayList<>(); |
122 | 147 |
for (File f : pluginManager.getPluginsFolders()) { |
123 | 148 |
pluginsFolders.addAll(Arrays.asList(f.listFiles())); |
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/ScriptingInstallerProviderFactory.java | ||
---|---|---|
36 | 36 |
|
37 | 37 |
private DynClass parametersDefinition = null; |
38 | 38 |
|
39 |
@Override |
|
39 | 40 |
protected DynClass createParametersDynClass() { |
40 | 41 |
if (parametersDefinition == null) { |
41 | 42 |
initialize(); |
... | ... | |
43 | 44 |
return parametersDefinition; |
44 | 45 |
} |
45 | 46 |
|
47 |
@Override |
|
46 | 48 |
protected Provider doCreate(DynObject parameters, ProviderServices services) { |
47 | 49 |
return new ScriptingInstallerProvider(services); |
48 | 50 |
} |
49 | 51 |
|
52 |
@Override |
|
50 | 53 |
public void initialize() { |
51 | 54 |
if (parametersDefinition == null) { |
52 |
DynObjectManager dynObjectManager = |
|
53 |
ToolsLocator.getDynObjectManager(); |
|
54 |
parametersDefinition = |
|
55 |
dynObjectManager.createDynClass(ScriptingManager.INSTALLER_PROVIDER_NAME, |
|
56 |
ScriptingManager.INSTALLER_PROVIDER_DESCRIPTION); |
|
57 |
dynObjectManager.add(parametersDefinition); |
|
55 |
DynObjectManager dynObjectManager = ToolsLocator.getDynObjectManager(); |
|
56 |
if( dynObjectManager.has(ScriptingManager.INSTALLER_PROVIDER_NAME) ) { |
|
57 |
parametersDefinition = dynObjectManager.get(ScriptingManager.INSTALLER_PROVIDER_NAME); |
|
58 |
} else { |
|
59 |
parametersDefinition = dynObjectManager.createDynClass( |
|
60 |
ScriptingManager.INSTALLER_PROVIDER_NAME, |
|
61 |
ScriptingManager.INSTALLER_PROVIDER_DESCRIPTION |
|
62 |
); |
|
63 |
dynObjectManager.add(parametersDefinition); |
|
64 |
} |
|
58 | 65 |
} |
59 | 66 |
} |
60 | 67 |
|
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/DefaultScriptingManager.java | ||
---|---|---|
255 | 255 |
|
256 | 256 |
public ScriptingFolder createFolder(ScriptingFolder folder, String id) { |
257 | 257 |
DefaultScriptingFolder unit = new DefaultScriptingFolder(folder, this, new File(folder.getFile(), id)); |
258 |
if (!unit.getFile().exists()) { |
|
259 |
unit.create(folder, id); |
|
260 |
} else { |
|
261 |
unit.load(folder, id); |
|
262 |
} |
|
258 |
unit.load(folder, id); |
|
259 |
// if (!unit.getFile().exists()) { |
|
260 |
// unit.create(folder, id); |
|
261 |
// } else { |
|
262 |
// unit.load(folder, id); |
|
263 |
// } |
|
263 | 264 |
return unit; |
264 | 265 |
} |
265 | 266 |
|
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/AbstractUnit.java | ||
---|---|---|
253 | 253 |
} |
254 | 254 |
} |
255 | 255 |
|
256 |
private String getInfString(Ini prefs, String section, String option, Object defaultValue) {
|
|
256 |
protected String getInfString(Ini prefs, String section, String option, Object defaultValue) {
|
|
257 | 257 |
String s = (String) getInfValue(prefs, section, option, defaultValue); |
258 | 258 |
if (s != null && s.trim().length() < 1) { |
259 | 259 |
return null; |
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/DefaultScriptingFolder.java | ||
---|---|---|
167 | 167 |
@Override |
168 | 168 |
public boolean accept(File arg0, String arg1) { |
169 | 169 |
File f = new File(arg0, arg1); |
170 |
return f.isDirectory(); |
|
170 |
if (!f.canRead() || f.isHidden()) { |
|
171 |
return false; |
|
172 |
} |
|
173 |
if (f.isDirectory()) { |
|
174 |
return true; |
|
175 |
} |
|
176 |
String ext = FilenameUtils.getExtension(f.getName()); |
|
177 |
return "inf".equalsIgnoreCase(ext); |
|
171 | 178 |
} |
172 | 179 |
}); |
173 | 180 |
if (files != null) { |
174 | 181 |
Arrays.sort(files, new Comparator<File>() { |
175 | 182 |
@Override |
176 | 183 |
public int compare(File f1, File f2) { |
177 |
return f1.getName().toLowerCase().compareTo(f2.getName().toLowerCase()); |
|
184 |
if (f1.isDirectory() && !f2.isDirectory()) { |
|
185 |
return -1; |
|
186 |
} else if (!f1.isDirectory() && f2.isDirectory()) { |
|
187 |
return 1; |
|
188 |
} else { |
|
189 |
return f1.getName().toLowerCase().compareTo(f2.getName().toLowerCase()); |
|
190 |
} |
|
178 | 191 |
} |
179 | 192 |
}); |
180 | 193 |
for (File f : files) { |
181 | 194 |
try { |
182 |
ScriptingFolder unit = (ScriptingFolder) this.getUnit(f); |
|
183 |
ol.add(unit); |
|
195 |
ScriptingUnit unit = this.getUnit(f); |
|
196 |
if( unit instanceof ScriptingFolder ) { |
|
197 |
ol.add((ScriptingFolder) unit); |
|
198 |
} |
|
184 | 199 |
} catch (Exception ex) { |
185 |
logger.warn("Can't create folder from '" + f.getAbsolutePath() + "'.");
|
|
200 |
logger.warn("Can't create unit from file '" + f.getAbsolutePath() + "'.");
|
|
186 | 201 |
} |
187 | 202 |
} |
188 | 203 |
} |
... | ... | |
205 | 220 |
this.setParent(folder); |
206 | 221 |
this.setId(id); |
207 | 222 |
this.folder = new File(parent.getFile(), id); |
223 |
File f = getFileResource(".inf"); |
|
224 |
if (f.isFile()) { |
|
225 |
Ini prefs; |
|
226 |
try { |
|
227 |
prefs = new Ini(f); |
|
228 |
loadInf(prefs); |
|
229 |
String path = getInfString( |
|
230 |
prefs, |
|
231 |
ScriptingManager.UNIT_FOLDER, |
|
232 |
"path", |
|
233 |
this.folder.getAbsolutePath() |
|
234 |
); |
|
235 |
File ff = new File(path); |
|
236 |
if( ff.isAbsolute() ) { |
|
237 |
this.folder = ff; |
|
238 |
} else { |
|
239 |
this.folder = new File(parent.getFile(), path); |
|
240 |
} |
|
241 |
} catch (Exception e) { |
|
242 |
logger.warn("Can't load 'inf' file '" + f.getAbsolutePath() + "'.", e); |
|
243 |
} |
|
244 |
} |
|
208 | 245 |
} |
209 | 246 |
|
210 | 247 |
@Override |
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.swing/org.gvsig.scripting.swing.impl/src/main/java/org/gvsig/scripting/swing/impl/composer/DefaultJScriptingComposer.java | ||
---|---|---|
52 | 52 |
import org.fife.ui.rtextarea.SearchResult; |
53 | 53 |
import org.gvsig.installer.swing.api.SwingInstallerLocator; |
54 | 54 |
import org.gvsig.installer.swing.api.SwingInstallerManager; |
55 |
import org.gvsig.installer.swing.api.packagebuilder.PackageBuildder; |
|
55 | 56 |
|
56 | 57 |
import org.gvsig.scripting.CompileErrorException; |
57 | 58 |
import org.gvsig.scripting.ExecuteErrorException; |
... | ... | |
77 | 78 |
import org.gvsig.tools.i18n.I18nManager; |
78 | 79 |
import org.gvsig.tools.observer.Observable; |
79 | 80 |
import org.gvsig.tools.observer.Observer; |
80 |
import org.gvsig.tools.swing.api.Component; |
|
81 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
|
81 |
import org.gvsig.tools.packageutils.PackageInfo; |
|
82 |
import org.gvsig.tools.packageutils.PackageManager; |
|
83 |
import org.gvsig.tools.packageutils.Version; |
|
82 | 84 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager; |
83 | 85 |
import org.slf4j.Logger; |
84 | 86 |
import org.slf4j.LoggerFactory; |
... | ... | |
450 | 452 |
|
451 | 453 |
private void createPackage() { |
452 | 454 |
I18nManager i18nManager = ToolsLocator.getI18nManager(); |
453 |
WindowManager windowManager = ToolsSwingLocator.getWindowManager(); |
|
454 | 455 |
SwingInstallerManager installerManager = SwingInstallerLocator.getSwingInstallerManager(); |
455 |
Component packager = installerManager.createPackagerPanel(
|
|
456 |
PackageBuildder packager = installerManager.createPackagerPanel(
|
|
456 | 457 |
ScriptingManager.INSTALLER_PROVIDER_NAME, |
457 | 458 |
manager.getRootUserFolder(), |
458 | 459 |
manager.getPackagesFolder() |
459 | 460 |
); |
460 |
windowManager.showWindow( |
|
461 |
PackageInfo packageInfo = packager.getPackageInfo(); |
|
462 |
packageInfo.setArchitecture(PackageManager.ARCH.ALL); |
|
463 |
packageInfo.setJavaVM(PackageManager.JVM.J1_7); |
|
464 |
packageInfo.setOperatingSystem(PackageManager.OS.ALL); |
|
465 |
packageInfo.setOfficial(false); |
|
466 |
packageInfo.setState(PackageManager.STATE.TESTING); |
|
467 |
packageInfo.setType(ScriptingManager.INSTALLER_PROVIDER_NAME); |
|
468 |
Version version = ToolsLocator.getPackageManager().createVersion(); |
|
469 |
version.parse("1.0.0"); |
|
470 |
packageInfo.setVersion(version); |
|
471 |
this.uimanager.showWindow( |
|
461 | 472 |
(JPanel) packager.asJComponent(), |
462 |
i18nManager.getTranslation("_Scripting_packager"), |
|
463 |
WindowManager.MODE.WINDOW |
|
473 |
i18nManager.getTranslation("_Scripting_packager") |
|
464 | 474 |
); |
465 | 475 |
} |
466 | 476 |
|
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.swing/org.gvsig.scripting.swing.impl/src/main/java/org/gvsig/scripting/swing/impl/composer/EditorHelper.java | ||
---|---|---|
1 | 1 |
package org.gvsig.scripting.swing.impl.composer; |
2 | 2 |
|
3 | 3 |
import java.awt.BorderLayout; |
4 |
import java.awt.Component; |
|
4 | 5 |
import java.awt.event.ActionListener; |
5 | 6 |
import java.awt.event.KeyEvent; |
6 | 7 |
import java.awt.event.KeyListener; |
... | ... | |
13 | 14 |
import javax.swing.text.JTextComponent; |
14 | 15 |
import org.gvsig.scripting.ScriptingManager; |
15 | 16 |
import org.gvsig.scripting.ScriptingScript; |
17 |
import org.gvsig.scripting.swing.api.JCodeEditor; |
|
16 | 18 |
import org.gvsig.scripting.swing.api.JEditor; |
17 | 19 |
import org.gvsig.scripting.swing.api.ScriptingUIManager; |
18 | 20 |
import org.gvsig.scripting.swing.api.SyntaxtHighlightTextComponent; |
... | ... | |
94 | 96 |
this.editorHelper = editorHelper; |
95 | 97 |
} |
96 | 98 |
|
99 |
private Component findParentComponent(Component comp, Class[] parentClasses) { |
|
100 |
while( comp != null ) { |
|
101 |
for (Class parentClass : parentClasses) { |
|
102 |
if( parentClass.isInstance(comp) ) { |
|
103 |
return comp; |
|
104 |
} |
|
105 |
} |
|
106 |
comp = comp.getParent(); |
|
107 |
} |
|
108 |
return null; |
|
109 |
} |
|
110 |
|
|
97 | 111 |
private JEditor getJEditor(KeyEvent event) { |
98 | 112 |
JEditor editor = null; |
99 | 113 |
|
100 | 114 |
try { |
101 | 115 |
JTextArea textArea = (JTextArea) event.getSource(); |
102 |
JViewport jView = (JViewport) textArea.getParent(); |
|
103 |
JScrollPane jScroll = (JScrollPane) jView.getParent(); |
|
104 |
JPanel panel = (JPanel) jScroll.getParent(); |
|
105 |
JTabbedPane tabsCode = (JTabbedPane) panel.getParent(); |
|
106 |
|
|
107 |
if (tabsCode.getParent() instanceof DefaultJCodeEditor) { |
|
108 |
editor = (DefaultJCodeEditor) tabsCode.getParent(); |
|
109 |
} else if (tabsCode.getParent() instanceof DefaultJDialogEditor) { |
|
110 |
editor = (DefaultJDialogEditor) tabsCode.getParent(); |
|
111 |
} |
|
116 |
Component component = this.findParentComponent( |
|
117 |
textArea, |
|
118 |
new Class[] { JEditor.class } |
|
119 |
); |
|
120 |
editor = (JEditor) component; |
|
112 | 121 |
} catch (Throwable t) { |
113 |
// Do nothing
|
|
122 |
logger.debug("Can't find editor component.",t);
|
|
114 | 123 |
} |
115 | 124 |
return editor; |
116 | 125 |
} |
Also available in: Unified diff