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 / DefaultJScriptingLauncher.java @ 465

History | View | Annotate | Download (4.42 KB)

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

    
3
import java.awt.BorderLayout;
4
import java.awt.Component;
5
import java.awt.Dimension;
6
import java.awt.event.ActionEvent;
7
import java.awt.event.ActionListener;
8
import java.util.ArrayList;
9
import java.util.List;
10

    
11
import javax.swing.JTabbedPane;
12

    
13
import org.gvsig.scripting.ScriptingBaseScript;
14
import org.gvsig.scripting.ScriptingDialog;
15
import org.gvsig.scripting.ScriptingFolder;
16
import org.gvsig.scripting.ScriptingManager;
17
import org.gvsig.scripting.ScriptingRunningException;
18
import org.gvsig.scripting.ScriptingScript;
19
import org.gvsig.scripting.swing.api.JScriptingLauncher;
20
import org.gvsig.scripting.swing.api.ScriptingUIManager;
21
import org.gvsig.scripting.swing.impl.DefaultJScriptingBrowser.BrowserActionEvent;
22
import org.gvsig.scripting.swing.impl.composer.DefaultJScriptingComposer;
23
import org.gvsig.tools.task.AbstractMonitorableTask;
24
import org.slf4j.Logger;
25
import org.slf4j.LoggerFactory;
26

    
27
public class DefaultJScriptingLauncher extends JScriptingLauncher implements ActionListener{
28

    
29
        private static Logger LOG = LoggerFactory.getLogger(DefaultJScriptingLauncher.class);
30
        /**
31
         * 
32
         */
33
        private static final long serialVersionUID = -2612734398104678920L;
34
        
35
        protected ActionListener defaultActionlistener = null;
36
        protected ActionListener selectionActionlistener = null;
37
        protected ActionListener dropDownActionlistener = null;
38
        JTabbedPane pestana;
39
        ScriptingUIManager uimanager;
40
        ScriptingManager manager;
41
        
42
        public static class LauncherActionEvent extends ActionEvent{
43
                
44
                /**
45
                 * 
46
                 */
47
                private static final long serialVersionUID = -6960022165103651050L;
48
                private ScriptingBaseScript script= null;
49
                
50
                public LauncherActionEvent(Object source, int id, String command, ScriptingBaseScript script) {
51
                        super(source,id,command);
52
                        this.script = script;
53
                }
54
                
55
                public ScriptingBaseScript getScript(){
56
                        return this.script;
57
                }
58
        }
59

    
60
        public DefaultJScriptingLauncher(ScriptingUIManager uimanager) {
61
                this.uimanager = uimanager;
62
                this.manager = uimanager.getManager();
63

    
64
                
65
                List<ScriptingFolder> folders = new ArrayList<ScriptingFolder>();
66
                folders.add(manager.getUserFolder());
67
                folders.addAll(manager.getAlternativeUserFolders());
68
                folders.add(manager.getSystemFolder());
69
                pestana = new JTabbedPane();
70
                for (ScriptingFolder folder : folders) {
71
                    pestana.addTab( 
72
                        folder.getName(),
73
                        new DefaultJScriptingBrowser(uimanager,folder)
74
                    );
75
                }
76
                      this.setLayout( new BorderLayout() );
77
                this.add(pestana,BorderLayout.CENTER );                        
78
                this.setPreferredSize(new Dimension(200,300));
79
        }
80
        
81
        public void refresh(){
82
                Object objetos[][] = {
83
                                {this.uimanager.getTranslation("User"), new DefaultJScriptingBrowser(uimanager, manager.getUserFolder()) },
84
                                {this.uimanager.getTranslation("System"), new DefaultJScriptingBrowser(uimanager, manager.getSystemFolder()) },
85
                };
86
                for( int i=0; i < objetos.length; i++ ) {
87
                        pestana.setComponentAt(i,
88
                                        (Component) objetos[i][1] );
89
                        ((DefaultJScriptingBrowser)objetos[i][1]).addDefaultActionListener(this);
90
                }
91
                pestana.repaint();
92
        }
93
        
94
        public JTabbedPane getTabbedPane(){
95
                return this.pestana;
96
        }
97
        
98
        public void addDefaultActionListener(ActionListener actionlistener) {
99
                this.defaultActionlistener = actionlistener;  
100
        }
101
        
102
        public void addSelectionActionListener(ActionListener actionlistener) {
103
                this.selectionActionlistener = actionlistener;  
104
        }
105
        
106
        public void addDropDownActionListener(ActionListener actionlistener) {
107
                this.dropDownActionlistener = actionlistener;  
108
        }
109
                
110
        public void actionPerformed(ActionEvent e) {
111
                BrowserActionEvent e2 = (BrowserActionEvent) e;
112

    
113
                switch(e.getID()){
114
                case DefaultJScriptingBrowser.DEFAULT_ACTION:
115
                        if(this.defaultActionlistener==null){
116
                                ScriptingBaseScript script = e2.getScript();
117
                                try {
118
                                        script.compile();
119
                                        script.runAsTask(null);
120
                                } catch (ScriptingRunningException ex) {
121
                                        LOG.warn("Problens launching script '"+script.getName()        +"'", ex);
122
                                }
123
                        }else{
124
                                this.defaultActionlistener.actionPerformed(
125
                                                new LauncherActionEvent(this, DEFAULT_ACTION, "default", e2.getScript())
126
                                );
127
                        }
128
                        break;                
129
                case DefaultJScriptingBrowser.DROPDOWN_ACTION:
130
                case DefaultJScriptingBrowser.SELECTION_ACTION:
131
                        this.defaultActionlistener.actionPerformed(
132
                                        new LauncherActionEvent(this, DEFAULT_ACTION, "default", e2.getScript())
133
                        );
134
                        break;
135
                }
136
        }
137
}