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 | 165 | jobacas | 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 | 301 | jjdelcerro | import org.gvsig.scripting.ScriptingDialog; |
13 | 165 | jobacas | import org.gvsig.scripting.ScriptingManager; |
14 | 301 | jjdelcerro | import org.gvsig.scripting.ScriptingRunningException; |
15 | import org.gvsig.scripting.ScriptingScript; |
||
16 | 165 | jobacas | 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 | 301 | jjdelcerro | 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 | 165 | jobacas | |
24 | public class DefaultJScriptingLauncher extends JScriptingLauncher implements ActionListener{ |
||
25 | |||
26 | 301 | jjdelcerro | private static Logger LOG = LoggerFactory.getLogger(DefaultJScriptingLauncher.class); |
27 | 165 | jobacas | /**
|
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 | 457 | jbadia | {this.uimanager.getTranslation("User"), new DefaultJScriptingBrowser(uimanager, manager.getUserFolder()) }, |
63 | {this.uimanager.getTranslation("System"), new DefaultJScriptingBrowser(uimanager, manager.getSystemFolder()) }, |
||
64 | 165 | jobacas | }; |
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 | 252 | jjdelcerro | this.setPreferredSize(new Dimension(200,300)); |
75 | 165 | jobacas | } |
76 | |||
77 | public void refresh(){ |
||
78 | Object objetos[][] = { |
||
79 | 457 | jbadia | {this.uimanager.getTranslation("User"), new DefaultJScriptingBrowser(uimanager, manager.getUserFolder()) }, |
80 | {this.uimanager.getTranslation("System"), new DefaultJScriptingBrowser(uimanager, manager.getSystemFolder()) }, |
||
81 | 165 | jobacas | }; |
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 | 301 | jjdelcerro | ScriptingBaseScript script = e2.getScript(); |
113 | try {
|
||
114 | script.compile(); |
||
115 | 411 | jjdelcerro | script.runAsTask(null);
|
116 | 301 | jjdelcerro | } catch (ScriptingRunningException ex) {
|
117 | LOG.warn("Problens launching script '"+script.getName() +"'", ex); |
||
118 | } |
||
119 | 165 | jobacas | }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 | } |