Revision 2601

View differences:

org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.dynform/org.gvsig.tools.dynform.services/src/main/java/org/gvsig/tools/dynform/services/BasicDynFormFieldsLibrary.java
40 40
import org.gvsig.tools.dynform.services.dynformfield.Integer.JDynFormFieldIntegerFactory;
41 41
import org.gvsig.tools.dynform.services.dynformfield.Long.JDynFormFieldLongFactory;
42 42
import org.gvsig.tools.dynform.services.dynformfield.Password.JDynFormFieldPasswordFactory;
43
import org.gvsig.tools.dynform.services.dynformfield.Script.JDynFormFieldScriptFactory;
43 44
import org.gvsig.tools.dynform.services.dynformfield.String.JDynFormFieldStringFactory;
44 45
import org.gvsig.tools.dynform.services.dynformfield.Text.JDynFormFieldTextFactory;
45 46
import org.gvsig.tools.dynform.services.dynformfield.Time.JDynFormFieldTimeFactory;
......
94 95
			manager.registerDynFieldFactory(new JDynFormFieldURIFactory());
95 96
			manager.registerDynFieldFactory(new JDynFormFieldVersionFactory());
96 97
			manager.registerDynFieldFactory(new JDynFormFieldBytearrayFactory());
98
                        manager.registerDynFieldFactory(new JDynFormFieldScriptFactory());
97 99
                        
98 100
//			manager.registerDynFormSetFactory(new BaseJDynFormSetFactory());
99 101
			manager.registerDynFormSetFactory(new SimpleTableJDynFormSetFactory());
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.dynform/org.gvsig.tools.dynform.services/src/main/java/org/gvsig/tools/dynform/services/dynformfield/Script/JDynFormFieldScriptFactory.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.tools.dynform.services.dynformfield.Script;
25

  
26
import org.gvsig.tools.dynform.services.dynformfield.Text.*;
27
import org.gvsig.tools.dataTypes.DataTypes;
28
import org.gvsig.tools.dynform.DynFormFieldDefinition;
29
import org.gvsig.tools.dynform.JDynFormField;
30
import org.gvsig.tools.dynform.spi.DynFormSPIManager;
31
import org.gvsig.tools.dynform.spi.dynformfield.AbstractJDynFormFieldFactory;
32

  
33
public class JDynFormFieldScriptFactory extends AbstractJDynFormFieldFactory {
34

  
35
    public JDynFormFieldScriptFactory() {
36
        super("SCRIPT", DataTypes.STRING, DataTypes.SUBTYPE_SCRIPT);
37
    }
38

  
39
    @Override
40
    public JDynFormField create(
41
            DynFormSPIManager serviceManager,
42
            DynFormSPIManager.ComponentsFactory componentsFactory,
43
            DynFormFieldDefinition fieldDefinition,
44
            Object value
45
    ) {
46
        return new JDynFormFieldScript(serviceManager, componentsFactory, this, fieldDefinition, value);
47
    }
48
}
0 49

  
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.dynform/org.gvsig.tools.dynform.services/src/main/java/org/gvsig/tools/dynform/services/dynformfield/Script/JDynFormFieldScript.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.tools.dynform.services.dynformfield.Script;
25

  
26
import java.util.Objects;
27
import org.apache.commons.lang3.StringUtils;
28
import org.gvsig.tools.ToolsLocator;
29
import org.gvsig.tools.dynform.DynFormFieldDefinition;
30
import org.gvsig.tools.dynform.JDynFormField;
31
import org.gvsig.tools.dynform.spi.DynFormSPIManager;
32
import org.gvsig.tools.dynform.spi.dynformfield.AbstractJDynFormField;
33
import org.gvsig.tools.dynform.spi.dynformfield.JDynFormFieldFactory;
34
import org.gvsig.tools.script.Script;
35
import org.gvsig.tools.swing.api.ToolsSwingLocator;
36
import org.gvsig.tools.swing.api.script.ScriptSwingManager;
37
import org.gvsig.tools.swing.api.script.ScriptSwingManager.ScriptEditor;
38

  
39
public class JDynFormFieldScript extends AbstractJDynFormField implements JDynFormField {
40

  
41
    private String assignedValue = null;
42
    private ScriptEditor editor;
43

  
44
    public JDynFormFieldScript(
45
            DynFormSPIManager serviceManager,
46
            DynFormSPIManager.ComponentsFactory componentsFactory,
47
            JDynFormFieldFactory factory,
48
            DynFormFieldDefinition definition,
49
            Object value
50
    ) {
51
        super(serviceManager, componentsFactory, factory, definition, value);
52
        this.assignedValue = Objects.toString(value, null);
53
    }
54

  
55
    @Override
56
    public Object getAssignedValue() {
57
        return this.assignedValue;
58
    }
59

  
60
    @Override
61
    public void initComponent() {
62
        ScriptSwingManager scriptSwingManager = ToolsSwingLocator.getScriptSwingManager();
63
        this.editor = scriptSwingManager.createScriptEditor();
64
        this.contents = this.editor.asJComponent();
65

  
66
        if (this.getDefinition().isReadOnly()) {
67
            this.editor.setEditable(false);
68
        }
69
        this.editor.addFocusListener(this);
70
        this.setValue(this.assignedValue);
71
    }
72

  
73
    @Override
74
    public void setValue(Object value) {
75
        String s = Objects.toString(value, "");
76
        this.assignedValue = Objects.toString(value, null);
77
        Script script = ToolsLocator.getScriptManager().createScript("main", s, "cosa");
78
        this.editor.set(script);
79
    }
80

  
81
    @Override
82
    public Object getValue() {
83
        Script script = ToolsLocator.getScriptManager().createScript("main", "", "cosa");
84
        this.editor.fetch(script);
85
        String s = script.getCode();
86
        return s;
87
    }
88

  
89
    @Override
90
    public boolean hasValidValue() {
91
        return true;
92
    }
93

  
94
    @Override
95
    public boolean isModified() {
96
        Script script = ToolsLocator.getScriptManager().createScript("main", "", "cosa");
97
        this.editor.fetch(script);
98
        String value = script.getCode();
99

  
100
        String assigned = (String) getAssignedValue();
101
        if (StringUtils.isBlank(value)) {
102
            return StringUtils.isNotBlank(assigned);
103
        }
104
        return !Objects.equals(value, assigned);
105
    }
106

  
107

  
108
}
0 109

  
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dataTypes/DataTypes.java
72 72
	public static final String SUBTYPE_FOLDER = "Folder";
73 73
	public static final String SUBTYPE_DATE = "Date";
74 74
	public static final String SUBTYPE_TEXT = "Text";
75
	public static final String SUBTYPE_SCRIPT = "Script";
75 76
	public static final String SUBTYPE_PASSWORD = "Password";
76 77

  
77 78

  
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/script/ScriptSwingManager.java
1 1
package org.gvsig.tools.swing.api.script;
2 2

  
3
import java.awt.event.FocusListener;
3 4
import java.util.List;
4 5
import javax.swing.JButton;
5 6
import javax.swing.JComboBox;
6 7
import javax.swing.JList;
7 8
import javax.swing.JTextField;
8 9
import org.gvsig.tools.script.Script;
10
import org.gvsig.tools.swing.api.ChangeListenerSupport;
9 11
import org.gvsig.tools.swing.api.Component;
10 12
import org.gvsig.tools.swing.api.pickercontroller.PickerController;
11 13

  
......
24 26
        public int getAction();
25 27
    }
26 28

  
27
    public interface ScriptEditor extends Component {
29
    public interface ScriptEditor extends Component, ChangeListenerSupport {
28 30
    
29 31
        public void set(Script script);
30 32
        
31 33
        public void fetch(Script script);
34
        
35
        public void setEditable(boolean editable);
36
        
37
        public boolean isEditable();
38
        
39
        public void addFocusListener(FocusListener l);
32 40
    }
33 41
    
34 42
    public ScriptEditor createScriptEditor();
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/script/DefaultScriptEditor.java
1 1

  
2 2
package org.gvsig.tools.swing.impl.script;
3 3

  
4
import java.awt.event.FocusListener;
4 5
import javax.swing.JComponent;
5 6
import javax.swing.JTextArea;
7
import javax.swing.event.ChangeListener;
8
import javax.swing.event.DocumentEvent;
9
import javax.swing.event.DocumentListener;
6 10
import org.gvsig.tools.script.Script;
11
import org.gvsig.tools.swing.api.ChangeListenerHelper;
7 12
import org.gvsig.tools.swing.api.script.ScriptSwingManager.ScriptEditor;
13
import org.gvsig.tools.swing.impl.DefaultChangeListenerHelper;
8 14

  
9 15
/**
10 16
 *
......
12 18
 */
13 19
public class DefaultScriptEditor extends JTextArea implements ScriptEditor {
14 20

  
21
    private ChangeListenerHelper changeListener = new DefaultChangeListenerHelper();
22
    
23
    public DefaultScriptEditor() {
24
        this.getDocument().addDocumentListener(new DocumentListener() {
25
            @Override
26
            public void insertUpdate(DocumentEvent e) {
27
                changeListener.fireEvent();
28
            }
29

  
30
            @Override
31
            public void removeUpdate(DocumentEvent e) {
32
                changeListener.fireEvent();
33
            }
34

  
35
            @Override
36
            public void changedUpdate(DocumentEvent e) {
37
                changeListener.fireEvent();
38
            }
39
        });
40
        
41
    }
42
            
15 43
    @Override
16 44
    public void set(Script script) {
17 45
        if( script==null ) {
......
30 58
    public JComponent asJComponent() {
31 59
        return this;
32 60
    }
61

  
62
    @Override
63
    public void addChangeListener(ChangeListener listener) {
64
        changeListener.addChangeListener(listener);
65
    }
66

  
67
    @Override
68
    public ChangeListener[] getChangeListeners() {
69
        return changeListener.getChangeListeners();
70
    }
71

  
72
    @Override
73
    public void removeChangeListener(ChangeListener listener) {
74
        changeListener.removeChangeListener(listener);
75
    }
76

  
77
    @Override
78
    public void removeAllChangeListener() {
79
        changeListener.removeAllChangeListener();
80
    }
81

  
82
    @Override
83
    public boolean hasChangeListeners() {
84
        return changeListener.hasChangeListeners();
85
    }
86

  
87
    @Override
88
    public void setEditable(boolean editable) {
89
        super.setEditable(editable); 
90
    }
33 91
    
92
    public void addFocusListener(FocusListener l) {
93
        super.addFocusListener(l);
94
    }
95
    
34 96
}

Also available in: Unified diff