Revision 471

View differences:

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