Révision 669
tmp/org.txm.rcp/src/main/java/org/txm/rcp/ApplicationWorkbenchAdvisor.java (revision 669) | ||
---|---|---|
91 | 91 |
import org.txm.importer.Convert5To6; |
92 | 92 |
import org.txm.objects.Base; |
93 | 93 |
import org.txm.objects.Workspace; |
94 |
import org.txm.rcp.commands.ExecuteGroovyScript; |
|
95 | 94 |
import org.txm.rcp.commands.OpenBrowser; |
96 | 95 |
import org.txm.rcp.commands.OpenWelcomePage; |
97 | 96 |
import org.txm.rcp.commands.RestartTXM; |
98 |
import org.txm.rcp.commands.base.DeleteObject; |
|
99 | 97 |
import org.txm.rcp.commands.workspace.LoadBinaryCorpus; |
98 |
import org.txm.rcp.handlers.results.DeleteObject; |
|
99 |
import org.txm.rcp.handlers.scripts.ExecuteGroovyScript; |
|
100 | 100 |
import org.txm.rcp.p2.plugins.TXMUpdateHandler; |
101 | 101 |
import org.txm.rcp.perspective.TXMPerspective; |
102 | 102 |
import org.txm.rcp.preferences.RCPPreferences; |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/fileexplorer/Explorer.java (revision 669) | ||
---|---|---|
57 | 57 |
import org.txm.Toolbox; |
58 | 58 |
import org.txm.core.preferences.TBXPreferences; |
59 | 59 |
import org.txm.rcp.RCPMessages; |
60 |
import org.txm.rcp.commands.CopyFile; |
|
61 |
import org.txm.rcp.commands.CutFile; |
|
62 |
import org.txm.rcp.commands.DeleteFile; |
|
63 |
import org.txm.rcp.commands.EditFile; |
|
64 | 60 |
import org.txm.rcp.commands.OpenBrowser; |
65 | 61 |
import org.txm.rcp.commands.OpenGraph; |
66 |
import org.txm.rcp.commands.PasteFile; |
|
67 |
import org.txm.rcp.commands.RenameFile; |
|
62 |
import org.txm.rcp.handlers.files.CopyFile; |
|
63 |
import org.txm.rcp.handlers.files.CutFile; |
|
64 |
import org.txm.rcp.handlers.files.DeleteFile; |
|
65 |
import org.txm.rcp.handlers.files.EditFile; |
|
66 |
import org.txm.rcp.handlers.files.PasteFile; |
|
67 |
import org.txm.rcp.handlers.files.RenameFile; |
|
68 | 68 |
// TODO: Auto-generated Javadoc |
69 | 69 |
/** |
70 | 70 |
* Simple file explorer @ author mdecorde. |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/fileexplorer/MacroExplorer.java (revision 669) | ||
---|---|---|
61 | 61 |
import org.txm.core.preferences.TBXPreferences; |
62 | 62 |
import org.txm.rcp.RCPMessages; |
63 | 63 |
import org.txm.rcp.TXMWindows; |
64 |
import org.txm.rcp.commands.CopyFile;
|
|
65 |
import org.txm.rcp.commands.CreateMacro;
|
|
66 |
import org.txm.rcp.commands.CutFile;
|
|
67 |
import org.txm.rcp.commands.DeleteFile;
|
|
68 |
import org.txm.rcp.commands.ExecuteGroovyMacro;
|
|
69 |
import org.txm.rcp.commands.PasteFile;
|
|
70 |
import org.txm.rcp.commands.RenameFile;
|
|
64 |
import org.txm.rcp.handlers.files.CopyFile;
|
|
65 |
import org.txm.rcp.handlers.files.CutFile;
|
|
66 |
import org.txm.rcp.handlers.files.DeleteFile;
|
|
67 |
import org.txm.rcp.handlers.files.PasteFile;
|
|
68 |
import org.txm.rcp.handlers.files.RenameFile;
|
|
69 |
import org.txm.rcp.handlers.scripts.CreateMacro;
|
|
70 |
import org.txm.rcp.handlers.scripts.ExecuteGroovyMacro;
|
|
71 | 71 |
// TODO: Auto-generated Javadoc |
72 | 72 |
/** |
73 | 73 |
* Simple file explorer @ author mdecorde. |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/corpora/CorporaView.java (revision 669) | ||
---|---|---|
73 | 73 |
import org.txm.rcp.RCPMessages; |
74 | 74 |
import org.txm.rcp.StatusLine; |
75 | 75 |
import org.txm.rcp.TXMWindows; |
76 |
import org.txm.rcp.commands.base.DeleteObject; |
|
77 | 76 |
import org.txm.rcp.editors.TXMEditor; |
78 | 77 |
import org.txm.rcp.editors.TXMResultEditorInput; |
78 |
import org.txm.rcp.handlers.results.DeleteObject; |
|
79 | 79 |
import org.txm.rcp.utils.JobHandler; |
80 | 80 |
import org.txm.searchengine.cqp.corpus.Corpus; |
81 | 81 |
import org.txm.utils.logger.Log; |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/BasesView.java (revision 669) | ||
---|---|---|
62 | 62 |
import org.txm.objects.Workspace; |
63 | 63 |
import org.txm.rcp.Application; |
64 | 64 |
import org.txm.rcp.IImageKeys; |
65 |
import org.txm.rcp.commands.EditFile; |
|
66 | 65 |
import org.txm.rcp.commands.OpenBrowser; |
67 |
import org.txm.rcp.commands.base.DeleteObject; |
|
68 | 66 |
import org.txm.rcp.editors.TXMBrowser; |
67 |
import org.txm.rcp.handlers.files.EditFile; |
|
68 |
import org.txm.rcp.handlers.results.DeleteObject; |
|
69 | 69 |
import org.txm.searchengine.cqp.corpus.Corpus; |
70 | 70 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
71 | 71 |
|
tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/QueriesView.java (revision 669) | ||
---|---|---|
69 | 69 |
import org.txm.objects.TxmObject; |
70 | 70 |
import org.txm.rcp.IImageKeys; |
71 | 71 |
import org.txm.rcp.RCPMessages; |
72 |
import org.txm.rcp.commands.EditFile;
|
|
73 |
import org.txm.rcp.commands.base.DeleteObject;
|
|
72 |
import org.txm.rcp.handlers.files.EditFile;
|
|
73 |
import org.txm.rcp.handlers.results.DeleteObject;
|
|
74 | 74 |
import org.txm.rcp.swt.dialog.LastOpened; |
75 | 75 |
import org.txm.searchengine.cqp.clientExceptions.CqiClientException; |
76 | 76 |
import org.txm.searchengine.cqp.corpus.CorpusManager; |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/actions/ImportDialog.java (revision 669) | ||
---|---|---|
54 | 54 |
import org.txm.core.preferences.TXMPreferences; |
55 | 55 |
import org.txm.rcp.RCPMessages; |
56 | 56 |
import org.txm.rcp.TxmPreferences; |
57 |
import org.txm.rcp.commands.EditFile;
|
|
57 |
import org.txm.rcp.handlers.files.EditFile;
|
|
58 | 58 |
import org.txm.rcp.swt.dialog.LastOpened; |
59 | 59 |
import org.txm.rcp.swt.dialog.TXMMessageBox; |
60 | 60 |
// TODO: Auto-generated Javadoc |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/ComputeTXMResult.java (revision 669) | ||
---|---|---|
1 |
package org.txm.rcp.handlers; |
|
2 |
|
|
3 |
import org.eclipse.core.commands.AbstractHandler; |
|
4 |
import org.eclipse.core.commands.ExecutionEvent; |
|
5 |
import org.eclipse.core.commands.ExecutionException; |
|
6 |
import org.eclipse.ui.IWorkbenchPart; |
|
7 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
8 |
import org.txm.rcp.editors.TXMEditor; |
|
9 |
|
|
10 |
public class ComputeTXMResult extends AbstractHandler { |
|
11 |
|
|
12 |
@Override |
|
13 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
14 |
IWorkbenchPart part = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getActivePart(); |
|
15 |
if (!(part instanceof TXMEditor)) { |
|
16 |
System.out.println("Active editor is not a TXMEditor. Aborting."); |
|
17 |
return null; |
|
18 |
} |
|
19 |
|
|
20 |
TXMEditor editor = (TXMEditor) part; |
|
21 |
editor.compute(false); |
|
22 |
|
|
23 |
return null; |
|
24 |
} |
|
25 |
} |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/CloneTXMResult.java (revision 669) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.rcp.handlers; |
|
29 |
|
|
30 |
import org.eclipse.core.commands.AbstractHandler; |
|
31 |
import org.eclipse.core.commands.ExecutionEvent; |
|
32 |
import org.eclipse.core.commands.ExecutionException; |
|
33 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
34 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
35 |
import org.txm.core.results.TXMResult; |
|
36 |
import org.txm.rcp.views.corpora.CorporaView; |
|
37 |
|
|
38 |
/** |
|
39 |
* Clone the selected TXM result node. |
|
40 |
* |
|
41 |
* @author sjacquot |
|
42 |
* |
|
43 |
*/ |
|
44 |
public class CloneTXMResult extends AbstractHandler { |
|
45 |
|
|
46 |
|
|
47 |
|
|
48 |
/* (non-Javadoc) |
|
49 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
50 |
*/ |
|
51 |
@Override |
|
52 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
53 |
|
|
54 |
System.out.println("CloneTXMResult.execute(): clone tests."); |
|
55 |
IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); |
|
56 |
System.out.println("CloneTXMResult.execute() selection class: " + selection); |
|
57 |
if(selection.getFirstElement() instanceof TXMResult) { |
|
58 |
TXMResult srcNode = ((TXMResult) selection.getFirstElement()); |
|
59 |
TXMResult clone = (TXMResult) srcNode.clone(); |
|
60 |
|
|
61 |
// FIXME: hierarchy tests |
|
62 |
//srcNode.addChild(clone); |
|
63 |
} |
|
64 |
|
|
65 |
CorporaView.refresh(); |
|
66 |
|
|
67 |
return null; |
|
68 |
} |
|
69 |
|
|
70 |
} |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/scripts/ExecuteScript.java (revision 669) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.rcp.handlers.scripts; |
|
29 |
|
|
30 |
import java.io.File; |
|
31 |
import java.util.Iterator; |
|
32 |
|
|
33 |
import org.eclipse.core.commands.AbstractHandler; |
|
34 |
import org.eclipse.core.commands.ExecutionEvent; |
|
35 |
import org.eclipse.core.commands.ExecutionException; |
|
36 |
import org.eclipse.jface.dialogs.MessageDialog; |
|
37 |
import org.eclipse.jface.viewers.ISelection; |
|
38 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
39 |
import org.eclipse.swt.SWT; |
|
40 |
import org.eclipse.swt.events.SelectionEvent; |
|
41 |
import org.eclipse.swt.events.SelectionListener; |
|
42 |
import org.eclipse.swt.widgets.Button; |
|
43 |
import org.eclipse.swt.widgets.Composite; |
|
44 |
import org.eclipse.swt.widgets.Control; |
|
45 |
import org.eclipse.swt.widgets.FileDialog; |
|
46 |
import org.eclipse.swt.widgets.Shell; |
|
47 |
import org.eclipse.ui.IWorkbenchPart; |
|
48 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
49 |
import org.eclipse.ui.ide.FileStoreEditorInput; |
|
50 |
import org.txm.core.preferences.TBXPreferences; |
|
51 |
import org.txm.core.preferences.TXMPreferences; |
|
52 |
import org.txm.rcp.RCPMessages; |
|
53 |
import org.txm.rcp.editors.TxtEditor; |
|
54 |
import org.txm.rcp.preferences.RCPPreferences; |
|
55 |
import org.txm.rcp.swt.dialog.LastOpened; |
|
56 |
// TODO: Auto-generated Javadoc |
|
57 |
/** |
|
58 |
* Execute a script. It uses the file extension to execute it as Groovy or R |
|
59 |
* |
|
60 |
* Later : use shabang |
|
61 |
*/ |
|
62 |
public class ExecuteScript extends AbstractHandler { |
|
63 |
|
|
64 |
private static final String ID = "org.txm.rcp.commands.ExecuteScript"; //$NON-NLS-1$ |
|
65 |
/* (non-Javadoc) |
|
66 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
67 |
*/ |
|
68 |
@Override |
|
69 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
70 |
|
|
71 |
// the file to execute |
|
72 |
String result = ""; //$NON-NLS-1$ |
|
73 |
boolean executionFromEditor = false; |
|
74 |
TxtEditor txteditor = null; |
|
75 |
|
|
76 |
IWorkbenchPart page = HandlerUtil.getActiveWorkbenchWindow(event) |
|
77 |
.getActivePage().getActivePart(); |
|
78 |
ISelection selection = HandlerUtil.getCurrentSelection(event); |
|
79 |
if (page != null && page instanceof TxtEditor) { |
|
80 |
txteditor = (TxtEditor) page; |
|
81 |
selection = HandlerUtil.getActiveWorkbenchWindow(event) |
|
82 |
.getActivePage().getSelection(); |
|
83 |
FileStoreEditorInput input = (FileStoreEditorInput) txteditor |
|
84 |
.getEditorInput(); |
|
85 |
|
|
86 |
File f = new File(input.getURI().getPath()); |
|
87 |
result = f.getAbsolutePath(); |
|
88 |
executionFromEditor = true; |
|
89 |
} else if (selection != null |
|
90 |
& selection instanceof IStructuredSelection) { |
|
91 |
File file = null; |
|
92 |
IStructuredSelection strucSelection = (IStructuredSelection) selection; |
|
93 |
for (Iterator<Object> iterator = strucSelection.iterator(); iterator |
|
94 |
.hasNext();) { |
|
95 |
file = (File) iterator.next(); |
|
96 |
result = file.getAbsolutePath(); |
|
97 |
break; |
|
98 |
} |
|
99 |
} |
|
100 |
Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event) |
|
101 |
.getShell(); |
|
102 |
// no file found, ask user |
|
103 |
if (result == "") //$NON-NLS-1$ |
|
104 |
{ |
|
105 |
FileDialog dialog = new FileDialog(shell, SWT.OPEN); |
|
106 |
if (LastOpened.getFile(ID) != null) { |
|
107 |
dialog.setFilterPath(LastOpened.getFolder(ID)); |
|
108 |
dialog.setFileName(LastOpened.getFile(ID)); |
|
109 |
} |
|
110 |
dialog.setFilterExtensions(new String[] { "*.groovy" }); //$NON-NLS-1$ |
|
111 |
|
|
112 |
String scriptCurrentDir = TXMPreferences.getString(TBXPreferences.USER_TXM_HOME, TBXPreferences.PREFERENCES_NODE)+ "/scripts"; |
|
113 |
|
|
114 |
dialog.setFilterPath(scriptCurrentDir); |
|
115 |
result = dialog.open(); |
|
116 |
if (result == null) return null; |
|
117 |
LastOpened.set(ID, new File(result)); |
|
118 |
} |
|
119 |
|
|
120 |
if (executionFromEditor && txteditor != null) { // save file if needed |
|
121 |
if (txteditor.isSaveOnCloseNeeded()) { // check if file need to be saved |
|
122 |
boolean doit = TXMPreferences.getBoolean(RCPPreferences.SAVE_BEFORE_EXECUTION, RCPPreferences.PREFERENCES_NODE); |
|
123 |
//System.out.println("Save file? "+doit); |
|
124 |
if (!doit) { // ask user |
|
125 |
MessageDialog dialog = new MessageDialog(shell, RCPMessages.ExecuteScript_0+result, null, |
|
126 |
RCPMessages.ExecuteScript_1, MessageDialog.QUESTION, new String[] {RCPMessages.ExecuteScript_2, RCPMessages.ExecuteScript_4, |
|
127 |
RCPMessages.ExecuteScript_5}, 0) { |
|
128 |
Button checkDefault; |
|
129 |
@Override |
|
130 |
protected Control createDialogArea(Composite parent) { |
|
131 |
Composite container = (Composite) super.createDialogArea(parent); |
|
132 |
checkDefault = new Button(container, SWT.CHECK); |
|
133 |
checkDefault.setText(RCPMessages.ExecuteScript_6); |
|
134 |
boolean b = TXMPreferences.getBoolean(RCPPreferences.SAVE_BEFORE_EXECUTION, RCPPreferences.PREFERENCES_NODE); |
|
135 |
checkDefault.setSelection(b); |
|
136 |
|
|
137 |
checkDefault.addSelectionListener(new SelectionListener() { |
|
138 |
|
|
139 |
@Override |
|
140 |
public void widgetSelected(SelectionEvent e) { |
|
141 |
boolean b = checkDefault.getSelection(); |
|
142 |
TXMPreferences.put(RCPPreferences.PREFERENCES_NODE, RCPPreferences.SAVE_BEFORE_EXECUTION, b); |
|
143 |
} |
|
144 |
|
|
145 |
@Override |
|
146 |
public void widgetDefaultSelected(SelectionEvent e) { } |
|
147 |
}); |
|
148 |
return container; |
|
149 |
} |
|
150 |
}; |
|
151 |
int c = dialog.open(); |
|
152 |
if (c == 1) { |
|
153 |
System.out.println(RCPMessages.ExecuteScript_7); |
|
154 |
return null; |
|
155 |
} else if (c == 2) { |
|
156 |
//System.out.println("Don't save and run."); |
|
157 |
doit = false; |
|
158 |
} else if (c == 0) { |
|
159 |
//System.out.println("Save and run."); |
|
160 |
doit = true; |
|
161 |
} |
|
162 |
} |
|
163 |
|
|
164 |
if (doit) { |
|
165 |
//System.out.println("Saving file..."); |
|
166 |
txteditor.doSave(null); |
|
167 |
} |
|
168 |
} |
|
169 |
} |
|
170 |
|
|
171 |
executeScript(result, page, selection); |
|
172 |
return null; |
|
173 |
} |
|
174 |
|
|
175 |
/** |
|
176 |
* Execute script. |
|
177 |
* |
|
178 |
* @param scriptpath the scriptfile |
|
179 |
*/ |
|
180 |
public void executeScript(String scriptpath, final IWorkbenchPart page, final ISelection selection) { |
|
181 |
if (scriptpath == null) return; |
|
182 |
File script = new File(scriptpath); |
|
183 |
if (!script.exists()) return; |
|
184 |
|
|
185 |
if (script.getName().endsWith(".groovy")) { //$NON-NLS-1$ |
|
186 |
ExecuteGroovyScript.executeScript(scriptpath, page, selection); |
|
187 |
} else if (script.getName().endsWith(".R")) { //$NON-NLS-1$ |
|
188 |
System.out.println("ExecuteScript with R not implemented"); |
|
189 |
//ExecuteRScript.executeScript(scriptpath); |
|
190 |
} else { |
|
191 |
System.out.println(RCPMessages.ExecuteScript_3+script.getName()); |
|
192 |
} |
|
193 |
} |
|
194 |
} |
|
0 | 195 |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/scripts/ExecuteText.java (revision 669) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.rcp.handlers.scripts; |
|
29 |
|
|
30 |
import java.io.File; |
|
31 |
|
|
32 |
import org.eclipse.core.commands.AbstractHandler; |
|
33 |
import org.eclipse.core.commands.ExecutionEvent; |
|
34 |
import org.eclipse.core.commands.ExecutionException; |
|
35 |
import org.eclipse.jface.text.TextSelection; |
|
36 |
import org.eclipse.jface.viewers.ISelection; |
|
37 |
import org.eclipse.ui.IWorkbenchPart; |
|
38 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
39 |
import org.eclipse.ui.ide.FileStoreEditorInput; |
|
40 |
import org.txm.rcp.RCPMessages; |
|
41 |
import org.txm.rcp.editors.TxtEditor; |
|
42 |
|
|
43 |
// TODO: Auto-generated Javadoc |
|
44 |
/** |
|
45 |
* Handler: execute a selection of code from the TxtEditor. It uses the file extension to execute it as Groovy or R. |
|
46 |
* |
|
47 |
* |
|
48 |
* @author mdecorde. |
|
49 |
*/ |
|
50 |
public class ExecuteText extends AbstractHandler { |
|
51 |
|
|
52 |
/* (non-Javadoc) |
|
53 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
54 |
*/ |
|
55 |
@Override |
|
56 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
57 |
|
|
58 |
ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event) |
|
59 |
.getActivePage().getSelection(); |
|
60 |
if(!(selection instanceof TextSelection)) return null; |
|
61 |
|
|
62 |
TextSelection t = (TextSelection) selection; |
|
63 |
String result = t.getText(); |
|
64 |
|
|
65 |
IWorkbenchPart page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getActivePart(); |
|
66 |
if (!(page instanceof TxtEditor)) return null; |
|
67 |
TxtEditor te = (TxtEditor) page; |
|
68 |
FileStoreEditorInput input = (FileStoreEditorInput) te.getEditorInput(); |
|
69 |
|
|
70 |
File f = new File(input.getURI().getPath()); |
|
71 |
String scriptfile = f.getAbsolutePath(); |
|
72 |
|
|
73 |
return executeText(result, scriptfile); |
|
74 |
} |
|
75 |
|
|
76 |
/** |
|
77 |
* Execute text. |
|
78 |
* |
|
79 |
* @param text the text |
|
80 |
* @param scriptfile the scriptfile |
|
81 |
* @return the object |
|
82 |
*/ |
|
83 |
public static Object executeText(final String text, final String scriptfile) { |
|
84 |
File script = new File(scriptfile); |
|
85 |
if (script.getName().endsWith(".groovy")) { //$NON-NLS-1$ |
|
86 |
ExecuteGroovyText.executeText(text, scriptfile); |
|
87 |
} else if (script.getName().endsWith(".R")) { //$NON-NLS-1$ |
|
88 |
System.out.println("Execute R text selection not implemented"); |
|
89 |
//ExecuteRText.executeText(text); |
|
90 |
} else { |
|
91 |
System.out.println(RCPMessages.ExecuteScript_3+script.getName()); |
|
92 |
} |
|
93 |
return null; |
|
94 |
} |
|
95 |
} |
|
0 | 96 |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/scripts/ExecuteGroovyMacro.java (revision 669) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.rcp.handlers.scripts; |
|
29 |
|
|
30 |
import java.io.File; |
|
31 |
import java.util.Iterator; |
|
32 |
|
|
33 |
import org.eclipse.core.commands.AbstractHandler; |
|
34 |
import org.eclipse.core.commands.ExecutionEvent; |
|
35 |
import org.eclipse.core.commands.ExecutionException; |
|
36 |
import org.eclipse.core.runtime.Platform; |
|
37 |
import org.eclipse.core.runtime.preferences.IPreferencesService; |
|
38 |
import org.eclipse.jface.viewers.ISelection; |
|
39 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
40 |
import org.eclipse.swt.SWT; |
|
41 |
import org.eclipse.swt.widgets.FileDialog; |
|
42 |
import org.eclipse.swt.widgets.Shell; |
|
43 |
import org.eclipse.ui.IWorkbenchPart; |
|
44 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
45 |
import org.eclipse.ui.ide.FileStoreEditorInput; |
|
46 |
import org.txm.Toolbox; |
|
47 |
import org.txm.core.preferences.TBXPreferences; |
|
48 |
import org.txm.rcp.editors.TxtEditor; |
|
49 |
import org.txm.rcp.swt.dialog.LastOpened; |
|
50 |
// TODO: Auto-generated Javadoc |
|
51 |
/** |
|
52 |
* Handler: execute a Macro (Groovy script that opens an UI for parameters) |
|
53 |
*/ |
|
54 |
public class ExecuteGroovyMacro extends AbstractHandler { |
|
55 |
|
|
56 |
private static final String ID = "org.txm.rcp.commands.ExecuteMacro"; //$NON-NLS-1$ |
|
57 |
/* (non-Javadoc) |
|
58 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
59 |
*/ |
|
60 |
@Override |
|
61 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
62 |
|
|
63 |
String filenameParameter = event |
|
64 |
.getParameter("org.txm.rcp.command.parameter.file"); //$NON-NLS-1$ |
|
65 |
|
|
66 |
|
|
67 |
// the file to execute |
|
68 |
String result = ""; //$NON-NLS-1$ |
|
69 |
IWorkbenchPart page = HandlerUtil.getActiveWorkbenchWindow(event) |
|
70 |
.getActivePage().getActivePart(); |
|
71 |
ISelection selection = HandlerUtil.getCurrentSelection(event); |
|
72 |
if (page != null && page instanceof TxtEditor) { |
|
73 |
TxtEditor te = (TxtEditor) page; |
|
74 |
selection = HandlerUtil.getActiveWorkbenchWindow(event) |
|
75 |
.getActivePage().getSelection(); |
|
76 |
FileStoreEditorInput input = (FileStoreEditorInput) te |
|
77 |
.getEditorInput(); |
|
78 |
|
|
79 |
File f = new File(input.getURI().getPath()); |
|
80 |
result = f.getAbsolutePath(); |
|
81 |
} else if (filenameParameter != null) { |
|
82 |
result = filenameParameter; |
|
83 |
} else if (selection != null |
|
84 |
& selection instanceof IStructuredSelection) { |
|
85 |
File file = null; |
|
86 |
IStructuredSelection strucSelection = (IStructuredSelection) selection; |
|
87 |
for (Iterator<Object> iterator = strucSelection.iterator(); iterator |
|
88 |
.hasNext();) { |
|
89 |
file = (File) iterator.next(); |
|
90 |
result = file.getAbsolutePath(); |
|
91 |
break; |
|
92 |
} |
|
93 |
} |
|
94 |
|
|
95 |
if (result == "") { //$NON-NLS-1$ |
|
96 |
Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event) |
|
97 |
.getShell(); |
|
98 |
FileDialog dialog = new FileDialog(shell, SWT.OPEN); |
|
99 |
if (LastOpened.getFile(ID) != null) { |
|
100 |
dialog.setFilterPath(LastOpened.getFolder(ID)); |
|
101 |
dialog.setFileName(LastOpened.getFile(ID)); |
|
102 |
} |
|
103 |
dialog.setFilterExtensions(new String[] { "*.groovy" }); //$NON-NLS-1$ |
|
104 |
|
|
105 |
IPreferencesService service = Platform.getPreferencesService(); |
|
106 |
String scriptRootDir = Toolbox.getTXMHOMEPATH() + "/scripts"; //$NON-NLS-1$ |
|
107 |
|
|
108 |
dialog.setFilterPath(scriptRootDir); |
|
109 |
result = dialog.open(); |
|
110 |
if (result == null) return null; |
|
111 |
LastOpened.set(ID, new File(result)); |
|
112 |
} |
|
113 |
|
|
114 |
execute(result, page, selection); |
|
115 |
return null; |
|
116 |
} |
|
117 |
|
|
118 |
public static void execute(String scriptpath, IWorkbenchPart page, ISelection selection) { |
|
119 |
IPreferencesService service = Platform.getPreferencesService(); |
|
120 |
String scriptRootDir = Toolbox.getTXMHOMEPATH() + "/scripts"; //$NON-NLS-1$ |
|
121 |
File currentRootDir = new File(scriptRootDir, "macro"); //$NON-NLS-1$ |
|
122 |
|
|
123 |
ExecuteGroovyScript.executeScript(currentRootDir, scriptpath, page, selection, false); |
|
124 |
} |
|
125 |
} |
|
0 | 126 |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/scripts/ExecuteGroovyScript.java (revision 669) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.rcp.handlers.scripts; |
|
29 |
|
|
30 |
import groovy.lang.Binding; |
|
31 |
|
|
32 |
import java.io.File; |
|
33 |
import java.io.FilenameFilter; |
|
34 |
import java.io.IOException; |
|
35 |
import java.net.MalformedURLException; |
|
36 |
import java.util.HashMap; |
|
37 |
import java.util.HashSet; |
|
38 |
import java.util.Iterator; |
|
39 |
import java.util.List; |
|
40 |
|
|
41 |
import org.eclipse.core.commands.AbstractHandler; |
|
42 |
import org.eclipse.core.commands.ExecutionEvent; |
|
43 |
import org.eclipse.core.commands.ExecutionException; |
|
44 |
import org.eclipse.core.internal.runtime.InternalPlatform; |
|
45 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
46 |
import org.eclipse.core.runtime.IStatus; |
|
47 |
import org.eclipse.core.runtime.Platform; |
|
48 |
import org.eclipse.core.runtime.Status; |
|
49 |
import org.eclipse.core.runtime.preferences.IPreferencesService; |
|
50 |
import org.eclipse.jface.viewers.ISelection; |
|
51 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
52 |
import org.eclipse.osgi.util.NLS; |
|
53 |
import org.eclipse.swt.SWT; |
|
54 |
import org.eclipse.swt.widgets.FileDialog; |
|
55 |
import org.eclipse.swt.widgets.Shell; |
|
56 |
import org.eclipse.ui.IWorkbenchPart; |
|
57 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
58 |
import org.eclipse.ui.ide.FileStoreEditorInput; |
|
59 |
import org.osgi.framework.Bundle; |
|
60 |
import org.osgi.framework.BundleContext; |
|
61 |
import org.txm.Toolbox; |
|
62 |
import org.txm.core.preferences.TBXPreferences; |
|
63 |
import org.txm.rcp.RCPMessages; |
|
64 |
import org.txm.rcp.TXMClassLoader; |
|
65 |
import org.txm.rcp.editors.TxtEditor; |
|
66 |
import org.txm.rcp.swt.dialog.LastOpened; |
|
67 |
import org.txm.rcp.swt.widget.parameters.UIParameterException; |
|
68 |
import org.txm.rcp.utils.GSERunner; |
|
69 |
import org.txm.rcp.utils.JobHandler; |
|
70 |
import org.txm.rcp.views.corpora.CorporaView; |
|
71 |
import org.txm.utils.logger.Log; |
|
72 |
// TODO: Auto-generated Javadoc |
|
73 |
/** |
|
74 |
* Execute a Groovy script |
|
75 |
* |
|
76 |
* @author mdecorde |
|
77 |
*/ |
|
78 |
public class ExecuteGroovyScript extends AbstractHandler { |
|
79 |
|
|
80 |
private static final String ID = "org.txm.rcp.commands.ExecuteGroovyScript"; //$NON-NLS-1$ |
|
81 |
private static GSERunner gse; |
|
82 |
private static String previousScriptRootDir; |
|
83 |
|
|
84 |
/* (non-Javadoc) |
|
85 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
86 |
*/ |
|
87 |
@Override |
|
88 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
89 |
|
|
90 |
String filenameParameter = event |
|
91 |
.getParameter("org.txm.rcp.command.parameter.file"); //$NON-NLS-1$ |
|
92 |
|
|
93 |
// the file to execute |
|
94 |
String result = ""; //$NON-NLS-1$ |
|
95 |
IWorkbenchPart page = HandlerUtil.getActiveWorkbenchWindow(event) |
|
96 |
.getActivePage().getActivePart(); |
|
97 |
|
|
98 |
ISelection sel = HandlerUtil.getCurrentSelection(event); |
|
99 |
|
|
100 |
if (page != null && page instanceof TxtEditor) { |
|
101 |
TxtEditor te = (TxtEditor) page; |
|
102 |
FileStoreEditorInput input = (FileStoreEditorInput) te |
|
103 |
.getEditorInput(); |
|
104 |
|
|
105 |
File f = new File(input.getURI().getPath()); |
|
106 |
result = f.getAbsolutePath(); |
|
107 |
} else if (filenameParameter != null) { |
|
108 |
result = filenameParameter; |
|
109 |
} else if (sel != null |
|
110 |
& sel instanceof IStructuredSelection) { |
|
111 |
File file = null; |
|
112 |
IStructuredSelection strucSelection = (IStructuredSelection) sel; |
|
113 |
for (Iterator<Object> iterator = strucSelection.iterator(); iterator |
|
114 |
.hasNext();) { |
|
115 |
file = (File) iterator.next(); |
|
116 |
result = file.getAbsolutePath(); |
|
117 |
break; |
|
118 |
} |
|
119 |
} |
|
120 |
|
|
121 |
if ("".equals(result)) { //$NON-NLS-1$ |
|
122 |
Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event) |
|
123 |
.getShell(); |
|
124 |
FileDialog dialog = new FileDialog(shell, SWT.OPEN); |
|
125 |
if (LastOpened.getFile(ID) != null) { |
|
126 |
dialog.setFilterPath(LastOpened.getFolder(ID)); |
|
127 |
dialog.setFileName(LastOpened.getFile(ID)); |
|
128 |
} |
|
129 |
dialog.setFilterExtensions(new String[] { "*.groovy" }); //$NON-NLS-1$ |
|
130 |
|
|
131 |
IPreferencesService service = Platform.getPreferencesService(); |
|
132 |
String scriptCurrentDir = Toolbox.getTXMHOMEPATH() + "/scripts"; //$NON-NLS-1$ |
|
133 |
|
|
134 |
dialog.setFilterPath(scriptCurrentDir); |
|
135 |
result = dialog.open(); |
|
136 |
if (result == null) return null; |
|
137 |
LastOpened.set(ID, new File(result)); |
|
138 |
} |
|
139 |
executeScript(result, page, sel); |
|
140 |
|
|
141 |
return null; |
|
142 |
} |
|
143 |
|
|
144 |
/** |
|
145 |
* |
|
146 |
* @param currentRootDir |
|
147 |
* @param scriptpath |
|
148 |
* @param page current active page, might be null |
|
149 |
* @param sel current selection, might be null |
|
150 |
*/ |
|
151 |
public static void executeScript(String scriptpath, final IWorkbenchPart page, final ISelection selection, boolean modal) { |
|
152 |
IPreferencesService service = Platform.getPreferencesService(); |
|
153 |
// String scriptRootDir = service.getString(Application.PLUGIN_ID, |
|
154 |
// ScriptPreferencePage.SCRIPT_ROOT_DIR, |
|
155 |
// ScriptPreferenceInitializer.SCRIPT_ROOT_DIR_DEFAULT, null); |
|
156 |
// |
|
157 |
String scriptRootDir = Toolbox.getTXMHOMEPATH() + "/scripts"; //$NON-NLS-1$ |
|
158 |
File currentRootDir = new File(scriptRootDir, "user"); //$NON-NLS-1$ |
|
159 |
|
|
160 |
executeScript(currentRootDir, scriptpath, page, selection, modal); |
|
161 |
} |
|
162 |
|
|
163 |
/** |
|
164 |
* |
|
165 |
* @param currentRootDir |
|
166 |
* @param scriptpath |
|
167 |
* @param page current active page, might be null |
|
168 |
* @param sel current selection, might be null |
|
169 |
*/ |
|
170 |
public static void executeScript(String scriptpath, final IWorkbenchPart page, final ISelection selection) { |
|
171 |
executeScript(scriptpath, page, selection, false); |
|
172 |
} |
|
173 |
|
|
174 |
/** |
|
175 |
* |
|
176 |
* @param currentRootDir |
|
177 |
* @param scriptpath |
|
178 |
* @param page current active page, might be null |
|
179 |
* @param sel current selection, might be null |
|
180 |
*/ |
|
181 |
public static void executeScript(final File currentRootDir, String scriptpath, final IWorkbenchPart page, final ISelection sel, final boolean modal) { |
|
182 |
// check script |
|
183 |
final File scriptfile = new File(scriptpath); |
|
184 |
if (!scriptfile.exists()) { |
|
185 |
System.err.println(NLS.bind(RCPMessages.ExecuteScriptImport_1, scriptpath)); |
|
186 |
return; |
|
187 |
} |
|
188 |
ExecuteLastGroovyScript.setLastScript(scriptfile, currentRootDir.getName().equals("macro")); // register last groovy script //$NON-NLS-1$ |
|
189 |
|
|
190 |
// get current selection of the corpora view |
|
191 |
final Object corpusViewSelection = CorporaView.getSelection(); |
|
192 |
final Object corpusViewSelections = CorporaView.getSelections(); |
|
193 |
|
|
194 |
final Object selection; |
|
195 |
final List selections; |
|
196 |
if (sel != null && sel instanceof IStructuredSelection) { |
|
197 |
selection = ((IStructuredSelection)sel).getFirstElement(); |
|
198 |
selections = ((IStructuredSelection)sel).toList(); |
|
199 |
} else { |
|
200 |
selection = sel; |
|
201 |
selections = null; |
|
202 |
} |
|
203 |
|
|
204 |
String tmp = Toolbox.getTXMHOMEPATH() + "/scripts"; //$NON-NLS-1$ |
|
205 |
if (previousScriptRootDir == null || !tmp.equals(previousScriptRootDir)) { |
|
206 |
previousScriptRootDir = tmp; |
|
207 |
gse = null; |
|
208 |
//System.out.println("SCRIPT ROOT DIR CHANGED tmp="+tmp); |
|
209 |
} |
|
210 |
|
|
211 |
String dir = currentRootDir.getAbsolutePath(); |
|
212 |
String path = scriptfile.getAbsolutePath(); |
|
213 |
if (!path.startsWith(dir)) { |
|
214 |
System.out.println(RCPMessages.bind(RCPMessages.ExecuteGroovyScriptFromFile_2, dir)); |
|
215 |
return; |
|
216 |
} |
|
217 |
final String relativepath = path.substring(dir.length()+1); |
|
218 |
|
|
219 |
if (gse == null) { |
|
220 |
gse = buildGSE(previousScriptRootDir, scriptfile); |
|
221 |
if (gse == null) { |
|
222 |
System.out.println("Could not create the Groovy script engine. Aborting."); |
|
223 |
return; |
|
224 |
} |
|
225 |
} |
|
226 |
|
|
227 |
JobHandler jobhandler = new JobHandler(NLS.bind(RCPMessages.ExecuteRScript_1,scriptfile.getName())) { |
|
228 |
@Override |
|
229 |
protected IStatus run(IProgressMonitor monitor) { |
|
230 |
this.runInit(monitor); |
|
231 |
//this.setCurrentMonitor(monitor); |
|
232 |
monitor.beginTask(NLS.bind(RCPMessages.ExecuteRScript_1, scriptfile.getName()), 100); |
|
233 |
|
|
234 |
try { |
|
235 |
Binding binding = new Binding(); |
|
236 |
binding.setVariable("editor", page); //$NON-NLS-1$ |
|
237 |
binding.setVariable("selection", selection); //$NON-NLS-1$ |
|
238 |
binding.setVariable("selections", selections); //$NON-NLS-1$ |
|
239 |
binding.setVariable("corpusViewSelection", corpusViewSelection); //$NON-NLS-1$ |
|
240 |
binding.setVariable("corpusViewSelections", corpusViewSelections); //$NON-NLS-1$ |
|
241 |
binding.setProperty("monitor", this); //$NON-NLS-1$ |
|
242 |
binding.setProperty("gse", gse); |
|
243 |
|
|
244 |
System.out.println(NLS.bind(RCPMessages.ExecuteRScript_1, scriptfile.getName())); |
|
245 |
long time = System.currentTimeMillis(); |
|
246 |
gse.run(relativepath, binding); |
|
247 |
|
|
248 |
System.out.println(RCPMessages.ExecuteRScript_2+(System.currentTimeMillis()-time)+RCPMessages.ExecuteGroovyScript_0); |
|
249 |
} catch (ThreadDeath td) { |
|
250 |
return Status.CANCEL_STATUS; |
|
251 |
} catch (UIParameterException e) { |
|
252 |
if (e.isError()) { |
|
253 |
System.out.println(RCPMessages.ExecuteGroovyScript_1); |
|
254 |
} else { |
|
255 |
System.out.println(RCPMessages.ExecuteGroovyScript_2); |
|
256 |
} |
|
257 |
} catch (Exception e) { |
|
258 |
System.out.println(RCPMessages.ExecuteGroovyScript_9+e); |
|
259 |
org.txm.rcp.utils.Logger.printStackTrace(e); |
|
260 |
} finally { |
|
261 |
monitor.done(); |
|
262 |
} |
|
263 |
return Status.OK_STATUS; |
|
264 |
} |
|
265 |
}; |
|
266 |
|
|
267 |
jobhandler.startJob(modal); |
|
268 |
// //gse.loadScriptByName("scripts/B.groovy"); |
|
269 |
// gse.run("A.groovy", new Binding()); |
|
270 |
|
|
271 |
// ClassLoader parent = getClass().getClassLoader(); |
|
272 |
// GroovyClassLoader loader = new GroovyClassLoader(parent); |
|
273 |
// |
|
274 |
// List<File> classPath = new ArrayList<File>(); |
|
275 |
// classPath.add(new File(scriptRootDir)); |
|
276 |
/*classPath.add(new File(scriptfile)); |
|
277 |
classPath.add(new File(scriptfile).getParentFile().getParentFile()); |
|
278 |
classPath.add(new File("")); //$NON-NLS-1$*/ |
|
279 |
// System.out.println(classPath); |
|
280 |
//System.out.println("Build groovy scripts - Start"); |
|
281 |
//org.txm.Build.run(); |
|
282 |
//System.out.println("Build groovy scripts - Done"); |
|
283 |
|
|
284 |
// Class groovyClass = null; |
|
285 |
// for (File f : classPath) |
|
286 |
// loader.addClasspath(f.getAbsolutePath()); |
|
287 |
// loader.setShouldRecompile(true); |
|
288 |
// |
|
289 |
// try { |
|
290 |
// groovyClass = loader.parseClass(new File(scriptfile)); |
|
291 |
// } catch (CompilationFailedException e) { |
|
292 |
// org.txm.rcp.utils.Logger.printStackTrace(e); |
|
293 |
// } catch (IOException e) { |
|
294 |
// org.txm.rcp.utils.Logger.printStackTrace(e); |
|
295 |
// } |
|
296 |
// |
|
297 |
// // let's call some method on an instance |
|
298 |
// GroovyObject groovyObject = null; |
|
299 |
// try { |
|
300 |
// groovyObject = (GroovyObject) groovyClass.newInstance(); |
|
301 |
// } catch (InstantiationException e) { |
|
302 |
// org.txm.rcp.utils.Logger.printStackTrace(e); |
|
303 |
// } catch (IllegalAccessException e) { |
|
304 |
// org.txm.rcp.utils.Logger.printStackTrace(e); |
|
305 |
// } |
|
306 |
// |
|
307 |
// Object[] args = {}; |
|
308 |
// try { |
|
309 |
// groovyObject.invokeMethod("run", args); //$NON-NLS-1$ |
|
310 |
// } catch (Exception e) { |
|
311 |
// System.err.println(e); |
|
312 |
// org.txm.rcp.utils.Logger.printStackTrace(e); |
|
313 |
// } |
|
314 |
|
|
315 |
/* |
|
316 |
* try { File script = new File(scriptfile); // GroovyImportScriptRunner |
|
317 |
* g = new GroovyImportScriptRunner(new File(""),new ArrayList<File>()); |
|
318 |
* |
|
319 |
* GroovyClassLoader classLoader = new |
|
320 |
* GroovyClassLoader(this.getClass().getClassLoader()); |
|
321 |
* classLoader.addURL(script.getParentFile().toURI().toURL()); |
|
322 |
* |
|
323 |
* GroovyScriptEngine gse = new |
|
324 |
* GroovyScriptEngine(script.getParent(),classLoader); |
|
325 |
* gse.run(script.getAbsolutePath(), new Binding()); |
|
326 |
* System.out.println("END : execute script RCP "); } catch (Exception |
|
327 |
* e) { // TODO Auto-generated catch block org.txm.rcp.utils.Logger.printStackTrace(e); } |
|
328 |
* |
|
329 |
* /* if (scriptfile == "") return; final File script = new |
|
330 |
* File(scriptfile); |
|
331 |
* |
|
332 |
* String[] roots = new String[] {script.getParent()}; |
|
333 |
* System.out.println("SCRIPTROOTDIR "+script.getParent()); |
|
334 |
* System.out.println("SCRIPT "+script); GroovyScriptEngine gse; try { |
|
335 |
* gse = new GroovyScriptEngine(roots); for(File f : |
|
336 |
* script.getParentFile().listFiles()) |
|
337 |
* gse.loadScriptByName(f.getName()); Binding binding = new Binding(); |
|
338 |
* |
|
339 |
* System.out.println("start execution"); gse.run(script.getName(), |
|
340 |
* binding); System.out.println("end execution"); } catch (Exception e) |
|
341 |
* {org.txm.rcp.utils.Logger.printStackTrace(e);} |
|
342 |
*/ |
|
343 |
} |
|
344 |
|
|
345 |
public static GSERunner buildGSE(String scriptRootDir, File script) { |
|
346 |
|
|
347 |
GSERunner gse; |
|
348 |
|
|
349 |
String[] roots = new String[] { |
|
350 |
scriptRootDir+"/user/", //$NON-NLS-1$ |
|
351 |
scriptRootDir+"/macro/", //$NON-NLS-1$ |
|
352 |
scriptRootDir+"/import/", //$NON-NLS-1$ |
|
353 |
script.getParent(), |
|
354 |
}; |
|
355 |
|
|
356 |
HashMap<String, Bundle> bundleWithActivators = new HashMap<String, Bundle>(); |
|
357 |
HashSet<ClassLoader> loaders = new HashSet<ClassLoader>(); |
|
358 |
BundleContext bundleContext = InternalPlatform.getDefault().getBundleContext(); |
|
359 |
for (Bundle b : bundleContext.getBundles()) { |
|
360 |
String acName = b.getHeaders().get("Bundle-Activator"); |
|
361 |
//System.out.println(b.getSymbolicName()+":"+b.getHeaders()); |
|
362 |
if (acName != null) { |
|
363 |
if (!bundleWithActivators.containsKey(b.getSymbolicName())) { |
|
364 |
bundleWithActivators.put(b.getSymbolicName(),b); |
|
365 |
} else { |
|
366 |
Bundle b2 = bundleWithActivators.get(b.getSymbolicName()); |
|
367 |
if (b2.getVersion().compareTo(b.getVersion()) < 0) { |
|
368 |
bundleWithActivators.put(b.getSymbolicName(),b); |
|
369 |
} |
|
370 |
} |
|
371 |
} |
|
372 |
} |
|
373 |
|
|
374 |
for (Bundle b : bundleWithActivators.values()) { |
|
375 |
try { |
|
376 |
String acName = b.getHeaders().get("Bundle-Activator"); |
|
377 |
Class<?> ac = b.loadClass(acName); |
|
378 |
loaders.add(ac.getClassLoader()); |
|
379 |
} catch (ClassNotFoundException e) { |
|
380 |
e.printStackTrace(); |
|
381 |
} |
|
382 |
} |
|
383 |
Log.info("Initialized TXMClassLoader with "+loaders.size()+ " bundles."); |
|
384 |
TXMClassLoader scl = new TXMClassLoader(loaders); |
|
385 |
|
|
386 |
try { |
|
387 |
gse = new GSERunner(roots, scl); |
|
388 |
} catch (IOException e) { |
|
389 |
e.printStackTrace(); |
|
390 |
return null; |
|
391 |
} |
|
392 |
|
|
393 |
File jardir = new File(scriptRootDir,"lib"); //$NON-NLS-1$ |
|
394 |
if (jardir.exists() && jardir.isDirectory()) { |
|
395 |
for (File f: jardir.listFiles(new FilenameFilter() { |
|
396 |
@Override |
|
397 |
public boolean accept(File dir, String name) { |
|
398 |
return name.endsWith(".jar"); //$NON-NLS-1$ |
|
399 |
} |
|
400 |
})) |
|
401 |
{ |
|
402 |
try { |
|
403 |
gse.getGroovyClassLoader().addURL(f.toURI().toURL()); |
|
404 |
} catch (MalformedURLException e) { |
|
405 |
// TODO Auto-generated catch block |
|
406 |
e.printStackTrace(); |
|
407 |
} |
|
408 |
} |
|
409 |
} |
|
410 |
gse.getGroovyClassLoader().addClasspath(scriptRootDir); // for the .class files if any |
|
411 |
|
|
412 |
return gse; |
|
413 |
} |
|
414 |
} |
|
0 | 415 |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/scripts/ExecuteGroovyText.java (revision 669) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.rcp.handlers.scripts; |
|
29 |
|
|
30 |
import groovy.lang.Binding; |
|
31 |
import groovy.lang.GroovyShell; |
|
32 |
|
|
33 |
import java.io.File; |
|
34 |
import java.net.MalformedURLException; |
|
35 |
import java.util.ArrayList; |
|
36 |
import java.util.List; |
|
37 |
|
|
38 |
import org.codehaus.groovy.control.CompilationFailedException; |
|
39 |
import org.eclipse.core.commands.AbstractHandler; |
|
40 |
import org.eclipse.core.commands.ExecutionEvent; |
|
41 |
import org.eclipse.core.commands.ExecutionException; |
|
42 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
43 |
import org.eclipse.core.runtime.IStatus; |
|
44 |
import org.eclipse.core.runtime.Platform; |
|
45 |
import org.eclipse.core.runtime.Status; |
|
46 |
import org.eclipse.core.runtime.preferences.IPreferencesService; |
|
47 |
import org.eclipse.jface.text.TextSelection; |
|
48 |
import org.eclipse.jface.viewers.ISelection; |
|
49 |
import org.eclipse.osgi.util.NLS; |
|
50 |
import org.eclipse.ui.IWorkbenchPart; |
|
51 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
52 |
import org.eclipse.ui.ide.FileStoreEditorInput; |
|
53 |
import org.txm.core.preferences.TBXPreferences; |
|
54 |
import org.txm.core.preferences.TXMPreferences; |
|
55 |
import org.txm.rcp.Application; |
|
56 |
import org.txm.rcp.RCPMessages; |
|
57 |
import org.txm.rcp.editors.TxtEditor; |
|
58 |
import org.txm.rcp.utils.JobHandler; |
|
59 |
import org.txm.rcp.views.corpora.CorporaView; |
|
60 |
|
|
61 |
// TODO: Auto-generated Javadoc |
|
62 |
/** |
|
63 |
* execute a selection of Groovy code from the TxtEditor |
|
64 |
* |
|
65 |
* @author mdecorde. |
|
66 |
*/ |
|
67 |
public class ExecuteGroovyText extends AbstractHandler { |
|
68 |
|
|
69 |
/* |
|
70 |
* (non-Javadoc) |
|
71 |
* |
|
72 |
* @see |
|
73 |
* org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands |
|
74 |
* .ExecutionEvent) |
|
75 |
*/ |
|
76 |
@Override |
|
77 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
78 |
|
|
79 |
ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event) |
|
80 |
.getActivePage().getSelection(); |
|
81 |
if (!(selection instanceof TextSelection)) |
|
82 |
return null; |
|
83 |
TextSelection t = (TextSelection) selection; |
|
84 |
String result = t.getText(); |
|
85 |
|
|
86 |
IWorkbenchPart page = HandlerUtil.getActiveWorkbenchWindow(event) |
|
87 |
.getActivePage().getActivePart(); |
|
88 |
TxtEditor te = (TxtEditor) page; |
|
89 |
FileStoreEditorInput input = (FileStoreEditorInput) te.getEditorInput(); |
|
90 |
|
|
91 |
File f = new File(input.getURI().getPath()); |
|
92 |
String scriptfile = f.getAbsolutePath(); |
|
93 |
|
|
94 |
executeText(result, scriptfile); |
|
95 |
return null; |
|
96 |
} |
|
97 |
|
|
98 |
/** |
|
99 |
* Execute text. |
|
100 |
* |
|
101 |
* @param text |
|
102 |
* the text |
|
103 |
* @param scriptfile |
|
104 |
* the scriptfile |
|
105 |
* @return the object |
|
106 |
*/ |
|
107 |
public static Object executeText(final String text, final String scriptfile) { |
|
108 |
if (!new File(scriptfile).exists()) { |
|
109 |
System.err.println(NLS.bind(RCPMessages.ExecuteScriptImport_1, |
|
110 |
scriptfile)); |
|
111 |
return null; |
|
112 |
} |
|
113 |
final String scriptRootDir = TXMPreferences.getString(TBXPreferences.USER_TXM_HOME, TBXPreferences.PREFERENCES_NODE)+ "/scripts"; |
|
114 |
|
|
115 |
// get current selection of the corpora view |
|
116 |
final Object corpusViewSelection = CorporaView.getSelection(); |
|
117 |
final Object corpusViewSelections = CorporaView.getSelections(); |
|
118 |
final Object selection = null; |
|
119 |
final List selections = null; |
|
120 |
|
|
121 |
JobHandler jobhandler = new JobHandler("run") { //$NON-NLS-1$ |
|
122 |
@Override |
|
123 |
protected IStatus run(IProgressMonitor monitor) { |
|
124 |
// this.setCurrentMonitor(monitor); |
|
125 |
this.runInit(monitor); |
|
126 |
|
|
127 |
try { |
|
128 |
List<File> classPath = new ArrayList<File>(); |
|
129 |
classPath.add(new File(scriptRootDir)); |
|
130 |
classPath.add(new File(scriptfile)); |
|
131 |
classPath.add(new File(scriptfile).getParentFile()); |
|
132 |
classPath.add(new File(".")); //$NON-NLS-1$ |
|
133 |
// System.out.println(classPath); |
|
134 |
|
|
135 |
Binding binding = new Binding(); |
|
136 |
//binding.setVariable("editor", page); //$NON-NLS-1$ |
|
137 |
binding.setVariable("selection", selection); //$NON-NLS-1$ |
|
138 |
binding.setVariable("selections", selections); //$NON-NLS-1$ |
|
139 |
binding.setVariable("corpusViewSelection", corpusViewSelection); //$NON-NLS-1$ |
|
140 |
binding.setVariable("corpusViewSelections", corpusViewSelections); //$NON-NLS-1$ |
|
141 |
binding.setProperty("monitor", this); //$NON-NLS-1$ |
|
142 |
//binding.setProperty("gse", gse); |
|
143 |
GroovyShell shell = new GroovyShell(this.getClass() |
|
144 |
.getClassLoader(), binding); |
|
145 |
|
|
146 |
for (File file : classPath) { |
|
147 |
try { |
|
148 |
shell.getClassLoader().addURL(file.toURI().toURL()); |
|
149 |
shell.getClassLoader().addClasspath( |
|
150 |
file.getAbsolutePath()); |
|
151 |
} catch (MalformedURLException e) { |
|
152 |
org.txm.rcp.utils.Logger.printStackTrace(e); |
|
153 |
return null; |
|
154 |
} |
|
155 |
} |
|
156 |
|
|
157 |
// try { |
|
158 |
System.out.println("Executing text selection..."); //$NON-NLS-1$ |
|
159 |
long time = System.currentTimeMillis(); |
|
160 |
shell.evaluate(text); |
|
161 |
System.out |
|
162 |
.println("Done: " + (System.currentTimeMillis() - time) + RCPMessages.ExecuteRScript_3); //$NON-NLS-1$ |
|
163 |
} catch (ThreadDeath td) { |
|
164 |
return Status.CANCEL_STATUS; |
|
165 |
} catch (CompilationFailedException e) { |
|
166 |
System.err.println(e); |
|
167 |
} catch (Exception e) { |
|
168 |
org.txm.rcp.utils.Logger.printStackTrace(e); |
|
169 |
} |
|
170 |
return Status.OK_STATUS; |
|
171 |
} |
|
172 |
}; |
|
173 |
|
|
174 |
jobhandler.startJob(); |
|
175 |
return null; |
|
176 |
} |
|
177 |
} |
|
0 | 178 |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/scripts/ExecuteGroovyScriptFromFile.java (revision 669) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.rcp.handlers.scripts; |
|
29 |
|
|
30 |
import java.io.File; |
|
31 |
|
|
32 |
import org.eclipse.core.commands.AbstractHandler; |
|
33 |
import org.eclipse.core.commands.ExecutionEvent; |
|
34 |
import org.eclipse.core.commands.ExecutionException; |
|
35 |
import org.eclipse.jface.viewers.ISelection; |
|
36 |
import org.eclipse.swt.SWT; |
|
37 |
import org.eclipse.swt.widgets.FileDialog; |
|
38 |
import org.eclipse.swt.widgets.Shell; |
|
39 |
import org.eclipse.ui.IWorkbenchPart; |
|
40 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
41 |
import org.txm.core.preferences.TBXPreferences; |
|
42 |
import org.txm.core.preferences.TXMPreferences; |
|
43 |
import org.txm.rcp.swt.dialog.LastOpened; |
|
44 |
/** |
|
45 |
* Ask the user to select a Groovy script using a File dialog and execute it |
|
46 |
*/ |
|
47 |
public class ExecuteGroovyScriptFromFile extends AbstractHandler { |
|
48 |
|
|
49 |
private static final String ID = "org.txm.rcp.commands.ExecuteGroovyScriptFromFile"; //$NON-NLS-1$ |
|
50 |
|
|
51 |
/* (non-Javadoc) |
|
52 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
53 |
*/ |
|
54 |
@Override |
|
55 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
56 |
|
|
57 |
// the file to execute |
|
58 |
String result; //$NON-NLS-1$ |
|
59 |
IWorkbenchPart page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getActivePart(); |
|
60 |
ISelection selection = HandlerUtil.getCurrentSelection(event); |
|
61 |
Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell(); |
|
62 |
|
|
63 |
String scriptCurrentDir = TXMPreferences.getString(TBXPreferences.USER_TXM_HOME, TBXPreferences.PREFERENCES_NODE)+ "/scripts"; |
|
64 |
|
|
65 |
FileDialog dialog = new FileDialog(shell, SWT.OPEN); |
|
66 |
|
|
67 |
if (LastOpened.getFile(ID) != null) { |
|
68 |
dialog.setFilterPath(LastOpened.getFolder(ID)); |
|
69 |
dialog.setFileName(LastOpened.getFile(ID)); |
|
70 |
} else { |
|
71 |
dialog.setFilterPath(scriptCurrentDir); |
|
72 |
} |
|
73 |
|
|
74 |
dialog.setFilterExtensions(new String[] { "*.groovy" }); //$NON-NLS-1$ |
|
75 |
dialog.setFilterPath(scriptCurrentDir); |
|
76 |
result = dialog.open(); |
|
77 |
if (result == null) return null; |
|
78 |
|
|
79 |
LastOpened.set(ID, new File(result)); |
|
80 |
ExecuteGroovyScript.executeScript(result, page, selection); |
|
81 |
return null; |
|
82 |
} |
|
83 |
} |
|
0 | 84 |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/scripts/ExecuteLastGroovyScript.java (revision 669) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.rcp.handlers.scripts; |
|
29 |
|
|
30 |
import java.io.File; |
|
31 |
|
|
32 |
import org.eclipse.core.commands.AbstractHandler; |
|
33 |
import org.eclipse.core.commands.ExecutionEvent; |
|
34 |
import org.eclipse.core.commands.ExecutionException; |
|
35 |
import org.eclipse.jface.viewers.ISelection; |
|
36 |
import org.eclipse.ui.IWorkbenchPart; |
|
37 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
38 |
import org.txm.Toolbox; |
|
39 |
import org.txm.core.preferences.TBXPreferences; |
|
40 |
import org.txm.rcp.RCPMessages; |
|
41 |
// TODO: Auto-generated Javadoc |
|
42 |
/** |
|
43 |
* Handler: execute a Macro (Groovy script that opens an UI for parameters) |
|
44 |
*/ |
|
45 |
public class ExecuteLastGroovyScript extends AbstractHandler { |
|
46 |
|
|
47 |
private static final String ID = "org.txm.rcp.commands.ExecuteMacro"; //$NON-NLS-1$ |
|
48 |
public static File lastScript; |
|
49 |
public static boolean macro = false; |
|
50 |
|
|
51 |
/* (non-Javadoc) |
|
52 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
53 |
*/ |
|
54 |
@Override |
|
55 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
56 |
|
|
57 |
IWorkbenchPart page = HandlerUtil.getActiveWorkbenchWindow(event) |
|
58 |
.getActivePage().getActivePart(); |
|
59 |
ISelection selection = HandlerUtil.getCurrentSelection(event); |
|
60 |
|
|
61 |
execute(page, selection); |
|
62 |
|
|
63 |
return null; |
|
64 |
} |
|
65 |
|
|
66 |
public static void setLastScript(File s, boolean b) { |
|
67 |
lastScript = s; |
|
68 |
macro = b; |
|
69 |
} |
|
70 |
|
|
71 |
/** |
|
72 |
* Execute last Groovy script |
|
73 |
* |
|
74 |
* @param page |
|
75 |
* @param selection |
|
76 |
*/ |
|
77 |
public static void execute(IWorkbenchPart page, ISelection selection) { |
|
78 |
if (lastScript == null) return; // no last script |
|
79 |
if (macro) |
|
80 |
System.out.println(RCPMessages.ExecuteLastGroovyScript_0+lastScript); |
|
81 |
else |
|
82 |
System.out.println(RCPMessages.ExecuteLastGroovyScript_1+lastScript); |
|
83 |
|
|
84 |
//IPreferencesService service = Platform.getPreferencesService(); |
|
85 |
String scriptRootDir = Toolbox.getTXMHOMEPATH() + "/scripts"; //$NON-NLS-1$ |
|
86 |
File currentRootDir; |
|
87 |
if (macro) { |
|
88 |
currentRootDir = new File(scriptRootDir, "macro"); //$NON-NLS-1$ |
|
89 |
} else { |
|
90 |
currentRootDir = new File(scriptRootDir, "user"); //$NON-NLS-1$ |
|
91 |
} |
|
92 |
|
|
93 |
if (!currentRootDir.exists()) { |
|
94 |
System.out.println(RCPMessages.ExecuteLastGroovyScript_3+currentRootDir); |
|
95 |
return; |
|
96 |
} |
|
97 |
|
|
98 |
ExecuteGroovyScript.executeScript(currentRootDir, lastScript.getAbsolutePath(), page, selection, false); |
|
99 |
} |
|
100 |
} |
|
0 | 101 |
Formats disponibles : Unified diff