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

History | View | Annotate | Download (4.72 KB)

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

    
3
import java.awt.BorderLayout;
4
import java.awt.Dimension;
5
import java.awt.event.ActionEvent;
6
import java.awt.event.ActionListener;
7
import java.util.ArrayList;
8
import java.util.List;
9
import javax.swing.JComponent;
10
import javax.swing.JPanel;
11

    
12
import javax.swing.JTabbedPane;
13
import org.gvsig.scripting.ScriptingBaseScript;
14

    
15
import org.gvsig.scripting.ScriptingFolder;
16
import org.gvsig.scripting.ScriptingManager;
17
import org.gvsig.scripting.ScriptingRunningException;
18
import org.gvsig.scripting.ScriptingUnit;
19
import org.gvsig.scripting.swing.api.JScriptingBrowser;
20
import org.gvsig.scripting.swing.api.JScriptingBrowser.BrowserActionEvent;
21
import org.gvsig.scripting.swing.api.JScriptingLauncher;
22
import org.gvsig.scripting.swing.api.ScriptingUIManager;
23
import org.gvsig.scripting.swing.impl.DefaultJScriptingBrowser.DefaultBrowserActionEvent;
24
import org.gvsig.tools.swing.api.ActionListenerSupport;
25
import org.gvsig.tools.swing.api.ToolsSwingLocator;
26
import org.gvsig.tools.util.CancelledException;
27
import org.slf4j.Logger;
28
import org.slf4j.LoggerFactory;
29

    
30
public class DefaultJScriptingLauncher extends JPanel implements JScriptingLauncher, ActionListener {
31

    
32
    private static final Logger LOG = LoggerFactory.getLogger(DefaultJScriptingLauncher.class);
33

    
34
    private static final long serialVersionUID = -2612734398104678920L;
35

    
36
    
37
    protected ActionListenerSupport defaultActionlisteners = null;
38
    JTabbedPane pestana;
39
    ScriptingUIManager uimanager;
40
    ScriptingManager manager;
41

    
42
    public DefaultJScriptingLauncher(ScriptingUIManager uimanager) {
43
        this.uimanager = uimanager;
44
        this.manager = uimanager.getManager();
45

    
46
        this.defaultActionlisteners = ToolsSwingLocator.getToolsSwingManager().createActionListenerSupport();
47
        List<ScriptingFolder> folders = new ArrayList<>();
48
        folders.add(manager.getUserFolder());
49
        folders.addAll(manager.getAlternativeUserFolders());
50
        folders.add(manager.getSystemFolder());
51
        pestana = new JTabbedPane();
52
        for (ScriptingFolder folder : folders) {
53
            DefaultJScriptingBrowser browser = new DefaultJScriptingBrowser(uimanager, folder);
54
            browser.addDefaultActionListener(this);
55
            pestana.addTab(uimanager.getTranslation(folder.getName()), browser);
56
        }
57
        this.setLayout(new BorderLayout());
58
        this.add(pestana, BorderLayout.CENTER);
59
        this.setPreferredSize(new Dimension(260, 300));
60
    }
61

    
62

    
63
    @Override
64
    public JScriptingBrowser getSelectedBrowser() {
65
        return (JScriptingBrowser) this.pestana.getSelectedComponent();
66
    }
67

    
68
    @Override
69
    public JComponent asJComponent() {
70
        return this;
71
    }
72

    
73
    @Override
74
    public void refresh() {
75
        for (int i = 0; i < pestana.getTabCount(); i++) {
76
            DefaultJScriptingBrowser browser = (DefaultJScriptingBrowser) (pestana.getComponentAt(i));
77
            browser.refresh();
78
        }
79
        pestana.repaint();
80
    }
81

    
82
    @Override
83
    public void addDefaultActionListener(ActionListener actionlistener) {
84
        this.defaultActionlisteners.addActionListener(actionlistener);
85
    }
86

    
87
    @Override
88
    public void actionPerformed(ActionEvent e) {
89
        try {
90
            BrowserActionEvent e2 = (BrowserActionEvent) e;
91
            switch (e.getID()) {
92
                case DefaultJScriptingBrowser.DEFAULT_ACTION:
93
                    if( this.defaultActionlisteners.hasActionListeners() ) {
94
                        this.defaultActionlisteners.fireActionEvent(
95
                            new DefaultBrowserActionEvent(this, DEFAULT_ACTION, "default", e2.getUnit())
96
                        );
97
                    } else {
98
                        ScriptingUnit unit = e2.getUnit();
99
                        if( unit instanceof ScriptingBaseScript ) {
100
                            ScriptingBaseScript script = (ScriptingBaseScript) unit;
101
                            try {
102
                                script.compile();
103
                                script.runAsTask(null);
104
                            } catch (ScriptingRunningException ex) {
105
                                LOG.warn("Problems launching script '" + script.getName() + "'", ex);
106
                            }
107
                        }
108
                    }
109
                    break;
110
                case DefaultJScriptingBrowser.DROPDOWN_ACTION:
111
                case DefaultJScriptingBrowser.SELECTION_ACTION:
112
                    this.defaultActionlisteners.fireActionEvent(
113
                            new DefaultBrowserActionEvent(this, e.getID(), "default", e2.getUnit())
114
                    );
115
                    break;
116
            }
117
        } catch( CancelledException ex) {
118
            // Do norhing
119
        } catch(Throwable th) {
120
            LOG.warn("",th);
121
        }
122
    }
123
}