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 |
} |