Revision 46854

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/ExpressionUtils.java
4 4
import java.io.File;
5 5
import java.net.MalformedURLException;
6 6
import java.net.URL;
7
import java.nio.charset.StandardCharsets;
7 8
import java.util.List;
8 9
import java.util.regex.Matcher;
9 10
import java.util.regex.Pattern;
11
import org.apache.commons.io.IOUtils;
10 12
import org.apache.commons.lang3.ArrayUtils;
11 13
import org.apache.commons.lang3.StringUtils;
12 14
import org.gvsig.expressionevaluator.ExpressionBuilder.Value;
......
14 16
import static org.gvsig.expressionevaluator.ExpressionEvaluatorManager.DYNAMICTEXT_STARTTAG;
15 17
import org.gvsig.expressionevaluator.spi.DynObjectSymbolTable;
16 18
import org.gvsig.tools.dataTypes.DataTypeUtils;
19
import org.gvsig.tools.dispose.DisposeUtils;
17 20
import org.gvsig.tools.dynobject.DynObject;
21
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
22
import org.gvsig.tools.script.Script;
18 23
import org.gvsig.tools.util.ListBuilder;
24
import org.slf4j.Logger;
25
import org.slf4j.LoggerFactory;
19 26

  
20 27
/**
21 28
 *
......
23 30
 */
24 31
@SuppressWarnings("UseSpecificCatch")
25 32
public class ExpressionUtils {
33
    
34
    private static final Logger LOGGER = LoggerFactory.getLogger(ExpressionUtils.class);
26 35

  
27 36
    public static boolean isEmpty(Expression expression) {
28 37
        return expression == null || expression.isEmpty();
......
653 662
        String s = expression.getPhrase();
654 663
        return StringUtils.defaultIfBlank(s, null);
655 664
    }
665
    
666
    public static Script createScript(byte[] bytes, String name) {
667
        try {
668
            if( StringUtils.isBlank(name)) {
669
                return null;
670
            }
671
            String source = "";
672
            if( !ArrayUtils.isEmpty(bytes) ) {
673
                source = IOUtils.toString(bytes, StandardCharsets.UTF_8.name());
674
            }
675
            ExpressionEvaluatorManager scriptManager = ExpressionEvaluatorLocator.getManager();
676
            Script script = scriptManager.createScript(name, source, null);
677
            return script;
678
        } catch (Exception ex) {
679
            LOGGER.warn("Can't create script "+name+".", ex);
680
            return null;
681
        }
682
    }
683
    
684
    public static Script getScript(ResourcesStorage resources, String resourceName) {
685
        ResourcesStorage.Resource res = null;
686
        try {
687
            if( resources==null || StringUtils.isBlank(resourceName)) {
688
                return null;
689
            }
690
            res = resources.getResource(resourceName);
691
            if( res == null || !res.exists() ) {
692
                return null;
693
            }
694
            String source = IOUtils.toString(res.asInputStream(), StandardCharsets.UTF_8);
695
            if( StringUtils.isEmpty(source) ) {
696
                return null;
697
            }
698
            ExpressionEvaluatorManager scriptManager = ExpressionEvaluatorLocator.getManager();
699
            Script script = scriptManager.createScript(resourceName, source, null);
700
            return script;
701
        } catch (Exception ex) {
702
            LOGGER.warn("Can't load script from resource "+resourceName+".", ex);
703
            return null;
704
        } finally {
705
            DisposeUtils.disposeQuietly(res);
706
        }
707
    }
656 708
}
657 709

  
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.api/src/main/java/org/gvsig/expressionevaluator/swing/ExpressionEvaluatorSwingManager.java
14 14
import org.gvsig.expressionevaluator.swing.Element.ConstantElement;
15 15
import org.gvsig.expressionevaluator.swing.Element.FunctionElement;
16 16
import org.gvsig.expressionevaluator.swing.Element.GroupElement;
17
import org.gvsig.tools.script.Script;
17 18

  
18 19
public interface ExpressionEvaluatorSwingManager {
19 20

  
......
79 80

  
80 81
    public CalculatorController createCalculatorController(JTextComponent text, int dataType);
81 82

  
83
    public JScriptEditor createJScriptEditor(Script script);
84

  
82 85
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.api/src/main/java/org/gvsig/expressionevaluator/swing/JScriptEditor.java
1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.expressionevaluator.swing;
7

  
8
import org.gvsig.tools.script.Script;
9
import org.gvsig.tools.swing.api.Component;
10

  
11
/**
12
 *
13
 * @author jjdelcerro
14
 */
15
public interface JScriptEditor extends Component {
16
    
17
    public Script getScript();
18
    
19
    public void setScript(Script script);
20
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/DefaultJExpressionBuilder.java
103 103
    private AbstractAutomaticExpressionChecker automaticExpressionChecker;
104 104
    private HistoryController<Expression> historyController;
105 105
    private BookmarksController<Expression> bookmarksController;
106
    private final DefaultJExpressionBuilderView2 view;
106
    final DefaultJExpressionBuilderView2 view;
107 107
    private boolean automaticExpressionCheckerEnabled;
108 108

  
109 109
    private static class InfoPanel implements Component {
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/DefaultExpressionEvaluatorSwingManager.java
37 37
import org.gvsig.expressionevaluator.swing.ExpressionPickerController;
38 38
import org.gvsig.expressionevaluator.swing.FunctionAdditionalPanelFactory;
39 39
import org.gvsig.expressionevaluator.swing.JExpressionPicker;
40
import org.gvsig.expressionevaluator.swing.JScriptEditor;
40 41
import org.gvsig.expressionevaluator.swing.JTextComponentProxy;
41 42
import org.gvsig.expressionevaluator.swing.impl.elements.DefaultAggregateElements;
42 43
import org.gvsig.expressionevaluator.swing.impl.elements.DefaultConstantValueElement;
......
44 45
import org.gvsig.expressionevaluator.swing.impl.elements.DefaultGroupElement;
45 46
import org.gvsig.tools.ToolsLocator;
46 47
import org.gvsig.tools.i18n.I18nManager;
48
import org.gvsig.tools.script.Script;
47 49
import org.gvsig.tools.swing.api.ToolsSwingLocator;
48 50
import org.gvsig.tools.swing.api.windowmanager.Dialog;
49 51
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
......
378 380
        return factory;
379 381
    }
380 382

  
383
    @Override
384
    public JScriptEditor createJScriptEditor(Script script) {
385
        JScriptEditorImpl editor = new JScriptEditorImpl(script);
386
        return editor;
387
    }
381 388
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/JScriptEditorImpl.java
1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.expressionevaluator.swing.impl;
7

  
8
import java.awt.BorderLayout;
9
import javax.swing.JComponent;
10
import javax.swing.JPanel;
11
import javax.swing.JScrollPane;
12
import javax.swing.JTextArea;
13
import javax.swing.SwingUtilities;
14
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
15
import org.gvsig.expressionevaluator.swing.JExpressionBuilder;
16
import org.gvsig.expressionevaluator.swing.JScriptEditor;
17
import org.gvsig.tools.script.Script;
18
import org.gvsig.tools.swing.api.ToolsSwingUtils;
19

  
20
/**
21
 *
22
 * @author jjdelcerro
23
 */
24
public class JScriptEditorImpl extends JPanel implements JScriptEditor {
25

  
26
    private DefaultJExpressionBuilder editor;
27
    private Script script;
28

  
29
    public JScriptEditorImpl(Script script) {
30
        this.script = script;
31
        this.initComponents();
32
    }
33
    
34
    private void initComponents() {
35
        this.editor = (DefaultJExpressionBuilder) ExpressionEvaluatorSwingLocator.getManager().createJExpressionBuilder();
36
        this.editor.view.spnlExpression.setDividerLocation(0.75d);
37
        this.setLayout(new BorderLayout());
38
        this.add(this.editor.asJComponent(),BorderLayout.CENTER);
39
        SwingUtilities.invokeLater(() -> { this.editor.view.spnlExpression.setDividerLocation(1.0d);});
40
        ToolsSwingUtils.ensureRowsCols(this, 30, 100, 45, 150);
41
    }
42
    
43
    @Override
44
    public Script getScript() {
45
        this.script.setCode(this.editor.getText());
46
        return this.script;
47
    }
48

  
49
    @Override
50
    public void setScript(Script script) {
51
        this.script = script;
52
        this.editor.setText(this.script.getCode());
53
    }
54

  
55
    @Override
56
    public JComponent asJComponent() {
57
        return this;
58
    }
59
    
60
    
61
}

Also available in: Unified diff