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 | 165 | jobacas | 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 | 465 | jjdelcerro | import java.util.ArrayList; |
8 | import java.util.List; |
||
9 | 639 | jjdelcerro | import javax.swing.JComponent; |
10 | import javax.swing.JPanel; |
||
11 | 165 | jobacas | |
12 | import javax.swing.JTabbedPane; |
||
13 | |||
14 | import org.gvsig.scripting.ScriptingBaseScript; |
||
15 | 465 | jjdelcerro | import org.gvsig.scripting.ScriptingFolder; |
16 | 165 | jobacas | import org.gvsig.scripting.ScriptingManager; |
17 | 301 | jjdelcerro | import org.gvsig.scripting.ScriptingRunningException; |
18 | 639 | jjdelcerro | import org.gvsig.scripting.swing.api.JScriptingBrowser; |
19 | import org.gvsig.scripting.swing.api.JScriptingBrowser.BrowserActionEvent; |
||
20 | 165 | jobacas | import org.gvsig.scripting.swing.api.JScriptingLauncher; |
21 | import org.gvsig.scripting.swing.api.ScriptingUIManager; |
||
22 | 639 | jjdelcerro | import org.gvsig.scripting.swing.impl.DefaultJScriptingBrowser.DefaultBrowserActionEvent; |
23 | 301 | jjdelcerro | import org.slf4j.Logger; |
24 | import org.slf4j.LoggerFactory; |
||
25 | 165 | jobacas | |
26 | 639 | jjdelcerro | public class DefaultJScriptingLauncher extends JPanel implements JScriptingLauncher, ActionListener { |
27 | 165 | jobacas | |
28 | 639 | jjdelcerro | private static final Logger LOG = LoggerFactory.getLogger(DefaultJScriptingLauncher.class); |
29 | /**
|
||
30 | *
|
||
31 | */
|
||
32 | private static final long serialVersionUID = -2612734398104678920L; |
||
33 | 508 | fdiaz | |
34 | 639 | jjdelcerro | protected ActionListener defaultActionlistener = null; |
35 | // protected ActionListener selectionActionlistener = null;
|
||
36 | // protected ActionListener dropDownActionlistener = null;
|
||
37 | JTabbedPane pestana;
|
||
38 | ScriptingUIManager uimanager; |
||
39 | ScriptingManager manager; |
||
40 | 508 | fdiaz | |
41 | 639 | jjdelcerro | public DefaultJScriptingLauncher(ScriptingUIManager uimanager) {
|
42 | this.uimanager = uimanager;
|
||
43 | this.manager = uimanager.getManager();
|
||
44 | 508 | fdiaz | |
45 | 639 | jjdelcerro | 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 | 508 | fdiaz | |
60 | |||
61 | 639 | jjdelcerro | @Override
|
62 | public JScriptingBrowser getSelectedBrowser() {
|
||
63 | return (JScriptingBrowser) this.pestana.getSelectedComponent(); |
||
64 | } |
||
65 | 165 | jobacas | |
66 | 639 | jjdelcerro | @Override
|
67 | public JComponent asJComponent() { |
||
68 | return this; |
||
69 | } |
||
70 | 465 | jjdelcerro | |
71 | 639 | jjdelcerro | @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 | 508 | fdiaz | |
80 | 639 | jjdelcerro | @Override
|
81 | public void addDefaultActionListener(ActionListener actionlistener) { |
||
82 | this.defaultActionlistener = actionlistener;
|
||
83 | } |
||
84 | 508 | fdiaz | |
85 | 639 | jjdelcerro | @Override
|
86 | public void actionPerformed(ActionEvent e) { |
||
87 | BrowserActionEvent e2 = (BrowserActionEvent) e; |
||
88 | 508 | fdiaz | |
89 | 639 | jjdelcerro | 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 | 508 | fdiaz | } |