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

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

    
14
import org.gvsig.scripting.ScriptingBaseScript;
15
import org.gvsig.scripting.ScriptingFolder;
16
import org.gvsig.scripting.ScriptingManager;
17
import org.gvsig.scripting.ScriptingRunningException;
18
import org.gvsig.scripting.swing.api.JScriptingBrowser;
19
import org.gvsig.scripting.swing.api.JScriptingBrowser.BrowserActionEvent;
20
import org.gvsig.scripting.swing.api.JScriptingLauncher;
21
import org.gvsig.scripting.swing.api.ScriptingUIManager;
22
import org.gvsig.scripting.swing.impl.DefaultJScriptingBrowser.DefaultBrowserActionEvent;
23
import org.slf4j.Logger;
24
import org.slf4j.LoggerFactory;
25

    
26
public class DefaultJScriptingLauncher extends JPanel implements JScriptingLauncher, ActionListener {
27

    
28
    private static final Logger LOG = LoggerFactory.getLogger(DefaultJScriptingLauncher.class);
29
    /**
30
     *
31
     */
32
    private static final long serialVersionUID = -2612734398104678920L;
33

    
34
    protected ActionListener defaultActionlistener = null;
35
//    protected ActionListener selectionActionlistener = null;
36
//    protected ActionListener dropDownActionlistener = null;
37
    JTabbedPane pestana;
38
    ScriptingUIManager uimanager;
39
    ScriptingManager manager;
40

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

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

    
60

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

    
66
    @Override
67
    public JComponent asJComponent() {
68
        return this;
69
    }
70

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

    
80
    @Override
81
    public void addDefaultActionListener(ActionListener actionlistener) {
82
        this.defaultActionlistener = actionlistener;
83
    }
84

    
85
    @Override
86
    public void actionPerformed(ActionEvent e) {
87
        BrowserActionEvent e2 = (BrowserActionEvent) e;
88

    
89
        switch (e.getID()) {
90
            case DefaultJScriptingBrowser.DEFAULT_ACTION:
91
                if (this.defaultActionlistener == null) {
92
                    ScriptingBaseScript script = e2.getScript();
93
                    try {
94
                        script.compile();
95
                        script.runAsTask(null);
96
                    } catch (ScriptingRunningException ex) {
97
                        LOG.warn("Problems launching script '" + script.getName() + "'", ex);
98
                    }
99
                } else {
100
                    this.defaultActionlistener.actionPerformed(
101
                            new DefaultBrowserActionEvent(this, DEFAULT_ACTION, "default", e2.getScript())
102
                    );
103
                }
104
                break;
105
            case DefaultJScriptingBrowser.DROPDOWN_ACTION:
106
            case DefaultJScriptingBrowser.SELECTION_ACTION:
107
                if (this.defaultActionlistener != null) {
108
                    this.defaultActionlistener.actionPerformed(
109
                            new DefaultBrowserActionEvent(this, DEFAULT_ACTION, "default", e2.getScript())
110
                    );
111
                }
112
                break;
113
        }
114
    }
115
}