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

History | View | Annotate | Download (4.41 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
                    DefaultJScriptingBrowser browser = new DefaultJScriptingBrowser(uimanager,folder);
72
                    browser.addDefaultActionListener(this);
73
                    pestana.addTab( folder.getName(), browser);
74
                }
75
                      this.setLayout( new BorderLayout() );
76
                this.add(pestana,BorderLayout.CENTER );                        
77
                this.setPreferredSize(new Dimension(260,300));
78
        }
79
        
80
        public void refresh(){
81
                for( int i=0; i < pestana.getTabCount(); i++ ) {
82
                        DefaultJScriptingBrowser browser = (DefaultJScriptingBrowser)(pestana.getComponentAt(i));
83
                        browser.refresh();
84
                }
85
                pestana.repaint();
86
        }
87
        
88
        public JTabbedPane getTabbedPane(){
89
                return this.pestana;
90
        }
91
        
92
        public void addDefaultActionListener(ActionListener actionlistener) {
93
                this.defaultActionlistener = actionlistener;  
94
        }
95
        
96
        public void addSelectionActionListener(ActionListener actionlistener) {
97
                this.selectionActionlistener = actionlistener;  
98
        }
99
        
100
        public void addDropDownActionListener(ActionListener actionlistener) {
101
                this.dropDownActionlistener = actionlistener;  
102
        }
103
                
104
        public void actionPerformed(ActionEvent e) {
105
                BrowserActionEvent e2 = (BrowserActionEvent) e;
106

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