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 @ 457

History | View | Annotate | Download (4.27 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

    
9
import javax.swing.JTabbedPane;
10

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

    
24
public class DefaultJScriptingLauncher extends JScriptingLauncher implements ActionListener{
25

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

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

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