Statistics
| Revision:

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 / composer / JPropertiesScript.java @ 1066

History | View | Annotate | Download (6.46 KB)

1
package org.gvsig.scripting.swing.impl.composer;
2

    
3
import java.awt.event.ItemEvent;
4
import java.awt.event.ItemListener;
5
import java.awt.event.KeyEvent;
6
import java.awt.event.KeyListener;
7
import java.beans.PropertyChangeListener;
8
import java.util.Map;
9

    
10
import javax.swing.text.JTextComponent;
11
import org.apache.commons.lang3.StringUtils;
12

    
13
import org.gvsig.scripting.ScriptingBaseScript;
14
import org.gvsig.scripting.ScriptingFolder;
15
import org.gvsig.scripting.ScriptingLocator;
16
import org.gvsig.scripting.ScriptingManager;
17
import org.gvsig.scripting.ScriptingUnit;
18
import org.gvsig.scripting.swing.api.ScriptingSwingLocator;
19
import org.gvsig.scripting.swing.api.ScriptingUIManager;
20

    
21
public class JPropertiesScript extends JPropertiesScriptView {
22

    
23
    private static final long serialVersionUID = 1503322333448146954L;
24

    
25
    private final ScriptingUIManager uimanager;
26
    private final ChangeListenerSupport changeListeners;
27

    
28
    private class MyKeyListener implements KeyListener {
29

    
30
        private final String name;
31
        private final JTextComponent text;
32

    
33
        public MyKeyListener(String name, JTextComponent text) {
34
            this.name = name;
35
            this.text = text;
36
        }
37

    
38
        @Override
39
        public void keyTyped(KeyEvent e) {
40
            changeListeners.fireChange(this.name, this.text.getText());
41
        }
42

    
43
        @Override
44
        public void keyPressed(KeyEvent e) {
45
        }
46

    
47
        @Override
48
        public void keyReleased(KeyEvent e) {
49
        }
50

    
51
    };
52

    
53
    public JPropertiesScript(final ScriptingUnit unit) {
54
        this.uimanager = ScriptingSwingLocator.getUIManager();
55
        this.changeListeners = new ChangeListenerSupport();
56
        this.initComponents();
57
        if( unit!=null ) {
58
            this.set(unit);
59
        }
60
    }
61

    
62
    private void initComponents() {
63
        this.txtName.addKeyListener(new MyKeyListener("name", txtName));
64
        this.txtDescription.addKeyListener(new MyKeyListener("description", txtDescription));
65
        this.txtCreatedBy.addKeyListener(new MyKeyListener("createdBy", txtCreatedBy));
66
        this.txtVersion.addKeyListener(new MyKeyListener("version", txtVersion));
67
        this.txtIsolationGroup.addKeyListener(new MyKeyListener("isolation", txtIsolationGroup));
68
        this.chkEnabled.addItemListener(new ItemListener() {
69
            @Override
70
            public void itemStateChanged(ItemEvent e) {
71
                changeListeners.fireChange("enabled", chkEnabled.isSelected());
72
            }
73
        });
74
    }
75

    
76
    public final void set(ScriptingUnit unit) {
77
        boolean enabled = this.changeListeners.setEnabled(false);
78
        try {
79
            if (unit instanceof ScriptingFolder) {
80
                this.txtName.setEditable(false);
81
                this.txtDescription.setEditable(false);
82
                this.txtCreatedBy.setEditable(false);
83
                this.txtVersion.setEditable(false);
84
            } else {
85
                this.txtName.setEditable(true);
86
                this.txtDescription.setEditable(true);
87
                this.txtCreatedBy.setEditable(true);
88
                this.txtVersion.setEditable(true);
89
            }
90
            this.cboLibraryVersion.setEnabled(false);
91

    
92
            this.txtName.setText(unit.getName());
93
            this.txtDescription.setText(unit.getDescription());
94
            this.txtCreatedBy.setText(unit.getCreatedBy());
95
            this.txtVersion.setText(unit.getVersion());
96
            if (unit instanceof ScriptingBaseScript) {
97
                ScriptingBaseScript script = (ScriptingBaseScript) unit;
98
                this.chkEnabled.setEnabled(true);
99
                this.chkEnabled.setSelected(script.isEnabled());
100
                this.cboLibraryVersion.removeAllItems();
101
                ScriptingManager manager = ScriptingLocator.getManager();
102
                Map<String, String> versions = manager.getLibFoldersVersions();
103
                if( versions != null ) {
104
                    this.cboLibraryVersion.setEnabled(true);
105
                    this.cboLibraryVersion.addItem(new VersionItem(null,"Current version"));
106
                    this.cboLibraryVersion.setSelectedIndex(0);
107
                    for (Map.Entry<String, String> entrySet : versions.entrySet()) {
108
                        String suffix = entrySet.getKey();
109
                        String label = entrySet.getValue();
110
                        this.cboLibraryVersion.addItem(new VersionItem(suffix,label));
111
                        if( StringUtils.equals(suffix, script.getLibrarySuffix()) ) {
112
                            this.cboLibraryVersion.setSelectedIndex(this.cboLibraryVersion.getItemCount()-1);
113
                        }
114
                    }
115
                }
116
                if( StringUtils.isEmpty(script.getIsolationGroup()) ) {
117
                    this.txtIsolationGroup.setText("");
118
                } else {
119
                    this.txtIsolationGroup.setText(script.getIsolationGroup());
120
                }
121
            } else {
122
                this.chkEnabled.setEnabled(false);
123
                this.chkEnabled.setSelected(false);
124
            }
125
        } finally {
126
            this.changeListeners.setEnabled(enabled);
127
        }
128
    }
129
    
130
    private static class VersionItem {
131
        private final String suffix;
132
        private final String label;
133
        
134
        VersionItem(String suffix, String label) {
135
            this.suffix = suffix;
136
            this.label = label;
137
        }
138
        public String getSuffix() {
139
            return this.suffix;
140
        }
141

    
142
        @Override
143
        public String toString() {
144
            return this.label;
145
        }
146
    }
147

    
148
    public void fectch(ScriptingUnit unit) {
149
        unit.setName(this.txtName.getText());
150
        unit.setDescription(this.txtDescription.getText());
151
        unit.setCreatedBy(this.txtCreatedBy.getText());
152
        unit.setVersion(this.txtVersion.getText());
153
        if (unit instanceof ScriptingBaseScript) {
154
            ScriptingBaseScript script = (ScriptingBaseScript) unit;
155
            script.setEnabled(this.chkEnabled.isSelected());
156
            VersionItem version = (VersionItem) this.cboLibraryVersion.getSelectedItem();
157
            if( version!=null ) {
158
                script.setLibrarySuffix(version.suffix);
159
            } 
160
            String s = this.txtIsolationGroup.getText();
161
            if( StringUtils.isEmpty(s) ) {
162
                script.setIsolationGroup(null);
163
            } else {
164
                script.setIsolationGroup(s.trim());
165
            }
166
        }
167
    }
168

    
169
    public void addChangeListener(PropertyChangeListener listener) {
170
        this.changeListeners.addChangeListener(listener);
171
    }
172

    
173
}