Statistics
| Revision:

gvsig-scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.swing / org.gvsig.scripting.swing.impl / src / main / java / org / gvsig / scripting / swing / impl / composer / JNewScriptPanel.java @ 212

History | View | Annotate | Download (8.17 KB)

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

    
3
import java.awt.Dimension;
4
import java.awt.GridBagConstraints;
5
import java.awt.GridBagLayout;
6
import java.awt.Insets;
7
import java.awt.event.ActionEvent;
8
import java.awt.event.ActionListener;
9
import java.util.Collection;
10

    
11
import javax.swing.JComboBox;
12
import javax.swing.JLabel;
13
import javax.swing.JOptionPane;
14
import javax.swing.JScrollPane;
15
import javax.swing.JTextArea;
16
import javax.swing.JTextField;
17
import javax.swing.JViewport;
18

    
19
import org.gvsig.scripting.ScriptingFolder;
20
import org.gvsig.scripting.ScriptingManager;
21
import org.gvsig.scripting.swing.api.ScriptingUIManager;
22
import org.gvsig.scripting.swing.impl.AbstractJDialogPanel;
23
import org.gvsig.scripting.swing.impl.DefaultJScriptingBrowser;
24

    
25
public class JNewScriptPanel extends AbstractJDialogPanel implements ActionListener{
26
        /**
27
         * 
28
         */
29
        private static final long serialVersionUID = -3455272930442207085L;
30
        private final ScriptingUIManager uimanager;
31
        private final ScriptingManager manager;
32
        //private DefaultJScriptingComposer composer;
33
        private final JNewScriptModel model;
34
         
35
        JComboBox units = null;
36
        JTextField name = null;
37
        JTextArea description = null;
38
        JComboBox languages =null;
39
        JTextField saveTo =null;
40
        JComboBox saveDirs = null;
41
        JTextField createdBy = null;
42
        JTextField version =null;
43
        
44
        public JNewScriptPanel(ScriptingUIManager uimanager, JNewScriptModel model){
45
                this.uimanager = uimanager;
46
                this.manager = this.uimanager.getManager();
47
                //this.composer = composer;
48
                this.model= model;
49
                model.setAction(JNewScriptModel.ACTION_CANCEL);
50
                
51
                //Object[] unitsLabel = manager.getUnitTypes().toArray();
52
                units = new JComboBox(manager.getUnitTypes().toArray());
53
                name = new JTextField(20);
54
                description = new JTextArea(5,20);
55
                JScrollPane scroll = new JScrollPane(description);
56
        Collection<String> langs =
57
            manager.getSupportedLanguagesByExtension().values();
58
                Object[] x = langs.toArray();
59
                
60
                languages = new JComboBox(x);
61
                saveTo = new JTextField(20);
62
                createdBy = new JTextField(20);
63
                version = new JTextField(20);
64
                
65
                setLayout(new GridBagLayout());
66
                
67
                
68

    
69
                GridBagConstraints gbc = new GridBagConstraints();
70

    
71
                gbc.insets = new Insets(25,10,0,5);
72
                gbc.weightx = 0.5;
73
                gbc.fill = GridBagConstraints.HORIZONTAL;
74
                gbc.gridx = 0;
75
                gbc.gridy = 0;        
76
                add(new JLabel("Type: "),gbc);
77

    
78
                gbc.gridx = 1;
79
                units.addActionListener(new ActionListener(){
80
                        public void actionPerformed(ActionEvent arg0) {
81
                                if(((JComboBox)arg0.getSource()).getSelectedItem().equals("Project")){
82
                                        JOptionPane.showMessageDialog(null, "Projects will be supported in future versions", "Info", JOptionPane.INFORMATION_MESSAGE);
83
                                } else if(((JComboBox)arg0.getSource()).getSelectedItem().equals("Folder")){
84
                                        languages.setEnabled(false);
85
                                        createdBy.setEditable(false);
86
                                        version.setEditable(false);
87
                                } else {
88
                                        languages.setEnabled(true);
89
                                        createdBy.setEditable(true);
90
                                        version.setEditable(true);
91
                                }
92
                        }
93
                });
94
                add(units, gbc);
95
                
96
                gbc.insets = new Insets(10,10,0,5);
97
                gbc.gridx = 0;
98
                gbc.gridy = 1;
99
                add(new JLabel("Name: "),gbc);
100
                gbc.gridx = 1;
101
                add(name,gbc);
102
                
103
                gbc.gridx = 0;
104
                gbc.gridy = 2;
105
                add(new JLabel("Description: "),gbc);
106
                gbc.gridx = 1;
107
                add(scroll, gbc);
108
                
109
                gbc.gridx = 0;
110
                gbc.gridy = 3;
111
                add(new JLabel("Language: "),gbc);
112
                gbc.gridx = 1;
113
                add(languages, gbc);
114
                
115
                gbc.gridx = 0;
116
                gbc.gridy = 4;
117
                add(new JLabel("Save on: "),gbc);
118
                gbc.gridx = 1;
119
                saveTo.setEditable(false);
120
                saveTo.setText(this.manager.getRootUserFolder());
121
                add(saveTo, gbc);
122
                
123
                gbc.gridx = 0;
124
                gbc.gridy = 5;
125
                gbc.gridwidth = 2;
126
                DefaultJScriptingBrowser jbrowser = new DefaultJScriptingBrowser(this.uimanager,this.manager.getUserFolder(),true);
127
                jbrowser.setPreferredSize(new Dimension(250,100));
128
                jbrowser.addSelectionActionListener(this);
129
                add(jbrowser,gbc);
130
                                
131
                gbc.gridx = 0;
132
                gbc.gridy = 6;
133
                add(new JLabel("Created by: "),gbc);
134
                gbc.gridx = 1;
135
                add(createdBy, gbc);
136
                
137
                gbc.insets = new Insets(10,10,25,5);
138
                gbc.gridx = 0;
139
                gbc.gridy = 7;
140
                add(new JLabel("Version: "),gbc);
141
                gbc.gridx = 1;
142
                add(version, gbc);
143

    
144
        }
145

    
146
        @Override
147
    public void actionAccept() {
148

    
149
                model.setType((String)units.getSelectedItem());
150
                model.setName(name.getText().trim());
151
                model.setDescription(description.getText().trim());
152
                model.setCreatedBy(createdBy.getText().trim());
153
                model.setVersion(version.getText().trim());
154
                model.setPath(saveTo.getText().trim());
155

    
156
//                if(model.getName().length()==0){
157
//                        JOptionPane.showMessageDialog(null, "Name must not be empty.", "Error", JOptionPane.ERROR_MESSAGE);
158
//                        return;
159
//                }
160
                
161
//                ScriptingFolder folder = manager.getFolder(new File(model.getPath()));
162
//                if(!manager.validateUnitId(folder,model.getName())){
163
//                        JOptionPane.showMessageDialog(null, "This file already exists.\nWrite another name for the script", "Error", JOptionPane.ERROR_MESSAGE);
164
//                        return;
165
//                }
166
                        
167
                if(!model.getType().equals(ScriptingManager.UNIT_FOLDER)){
168
                        model.setLanguage((String)languages.getSelectedItem());
169
                }
170
//                if(model.getType().equals(ScriptingManager.UNIT_PROJECT)){
171
//                        JOptionPane.showMessageDialog(null, "Projects will be supported in future versions", "Info", JOptionPane.INFORMATION_MESSAGE);
172
//                        return;
173
//                }
174
                try {
175
                        model.validate();
176
                } catch (Exception e) {
177
                        JOptionPane.showMessageDialog(null, e.getMessage(), "Info", JOptionPane.INFORMATION_MESSAGE);
178
                        return;
179
                }
180
                model.setAction(JNewScriptModel.ACTION_ACCEPT);
181
                setVisible(false);
182
        
183
                        
184
                
185
                
186
                
187
//                
188
//                ScriptingBaseScript newScript = null;
189
//                ScriptingFolder f = null;
190
//                ScriptingFolder folder = manager.getFolder(new File(saveTo.getText()));
191
//                if(name.getText().length()==0)
192
//                        JOptionPane.showMessageDialog(null, "Name must not be empty.", "Error", JOptionPane.ERROR_MESSAGE);
193
//                else if(manager.validateUnitId(folder,name.getText())){
194
//                        Map langs = manager.getExtensionsByLanguages();
195
//                        String langExtension = (String) langs.get((String) languages.getSelectedItem());
196
//                        String UnitType = (String)units.getSelectedItem();
197
//                        if (UnitType.equals((String)"Script")){
198
//                                newScript = manager.createScript(folder, name.getText()+langExtension);
199
//                        }else if(UnitType.equals((String)"Dialog")){
200
//                                newScript = manager.createDialog(folder, name.getText()+langExtension);
201
//                        }else if(UnitType.equals((String)"Folder")){
202
//                                f = manager.createFolder(folder, name.getText());
203
//                        }else{//Es un project
204
//                                JOptionPane.showMessageDialog(null, "Projects will be supported in future versions", "Info", JOptionPane.INFORMATION_MESSAGE);
205
//                        }
206
//                        if(description.getText().length()!=0){
207
//                                newScript.setDescription(description.getText());
208
//                        }
209
//                        
210
//                        if(createdBy.getText().length()!=0){
211
//                                newScript.setCreatedBy(createdBy.getText());
212
//                        }
213
//                        
214
//                        if(version.getText().length()!=0){
215
//                                newScript.setVersion(version.getText());
216
//                        }
217
//                        
218
//                        if(newScript!=null){
219
//                                newScript.setName(name.getText());
220
//
221
//                                ((ScriptingScript) newScript).save();                            
222
//                                JOptionPane.showMessageDialog(null, "Script '"+newScript.getName()+"' created succesfully", "Info", JOptionPane.INFORMATION_MESSAGE);
223
//                                setVisible(false);
224
//                                composer.editUnit(newScript);
225
//                        }
226
//                        if(f!=null){
227
//                                JOptionPane.showMessageDialog(null, "Folder '"+f.getName()+"' created succesfully", "Info", JOptionPane.INFORMATION_MESSAGE);
228
//                                setVisible(false);
229
//                        }
230
//                        composer.launcherRefresh();
231
//                }
232
//                else
233
//                        JOptionPane.showMessageDialog(null, "This file already exists.\nWrite another name for the script", "Error", JOptionPane.ERROR_MESSAGE);
234

    
235
        }
236

    
237
        @Override
238
    public void actionApply() {
239
        }
240

    
241
        @Override
242
    public void actionCancel() {
243
                setVisible(false);
244
        }
245

    
246
        @Override
247
    public boolean isVisibleAccept() {
248
                return true;
249
        }
250

    
251
        @Override
252
    public boolean isVisibleApply() {
253
                return false;
254
        }
255

    
256
        @Override
257
    public boolean isVisibleCancel() {
258
                return true;
259
        }
260

    
261
        public void actionPerformed(ActionEvent arg0) {
262
                JViewport jView = (JViewport)arg0.getSource();
263
                JScrollPane jScroll = (JScrollPane)jView.getParent();
264
                DefaultJScriptingBrowser jBrowser = (DefaultJScriptingBrowser)jScroll.getParent();
265
                if(jBrowser.getSelectedNode() instanceof ScriptingFolder){
266
                        ScriptingFolder selectedFolder = (ScriptingFolder)jBrowser.getSelectedNode();
267
                        saveTo.setText(selectedFolder.getPath());
268
                }
269
        }
270
        
271
}