INTEGRATION: CWS scriptingf7 (1.4.14); FILE MERGED
2004/07/14 09:07:09 npower 1.4.14.4: #i25260# Editors changes to support new methods in ScriptEditor interface { execute & indicateErrorLine }. ScriptProviders now raise editors with line of error highlighted.
2004/07/12 16:34:37 npower 1.4.14.3: #i25260# Changes to support error displayed in IDE for javascript and beanshell when script that is invoked is opened in IDE
Issue number:
Submitted by:
Reviewed by:
2004/06/30 11:57:36 npower 1.4.14.2: #i25870# Changes to BeanshellProvider and editor to make sure that the classloader is setup correctly such that scripts run from the IDE use the classpath defined in parcel-descriptor.xml
2004/06/22 14:39:50 npower 1.4.14.1: #i25269# changed code to always use UCB ( via url ) to get output stream
This commit is contained in:
@@ -2,9 +2,9 @@
|
|||||||
*
|
*
|
||||||
* $RCSfile: ScriptEditorForBeanShell.java,v $
|
* $RCSfile: ScriptEditorForBeanShell.java,v $
|
||||||
*
|
*
|
||||||
* $Revision: 1.4 $
|
* $Revision: 1.5 $
|
||||||
*
|
*
|
||||||
* last change: $Author: svesik $ $Date: 2004-04-19 23:10:48 $
|
* last change: $Author: hr $ $Date: 2004-07-23 14:02:55 $
|
||||||
*
|
*
|
||||||
* The Contents of this file are made available subject to the terms of
|
* The Contents of this file are made available subject to the terms of
|
||||||
* either of the following licenses
|
* either of the following licenses
|
||||||
@@ -88,6 +88,7 @@ import bsh.Interpreter;
|
|||||||
import drafts.com.sun.star.script.provider.XScriptContext;
|
import drafts.com.sun.star.script.provider.XScriptContext;
|
||||||
import com.sun.star.script.framework.provider.ScriptEditor;
|
import com.sun.star.script.framework.provider.ScriptEditor;
|
||||||
import com.sun.star.script.framework.container.ScriptMetaData;
|
import com.sun.star.script.framework.container.ScriptMetaData;
|
||||||
|
import com.sun.star.script.framework.provider.ClassLoaderFactory;
|
||||||
|
|
||||||
public class ScriptEditorForBeanShell
|
public class ScriptEditorForBeanShell
|
||||||
implements ScriptEditor, ActionListener
|
implements ScriptEditor, ActionListener
|
||||||
@@ -100,6 +101,7 @@ public class ScriptEditorForBeanShell
|
|||||||
|
|
||||||
private XScriptContext context;
|
private XScriptContext context;
|
||||||
private URL scriptURL = null;
|
private URL scriptURL = null;
|
||||||
|
private ClassLoader cl = null;
|
||||||
|
|
||||||
// global ScriptEditorForBeanShell returned for getEditor() calls
|
// global ScriptEditorForBeanShell returned for getEditor() calls
|
||||||
private static ScriptEditorForBeanShell theScriptEditorForBeanShell;
|
private static ScriptEditorForBeanShell theScriptEditorForBeanShell;
|
||||||
@@ -206,6 +208,23 @@ public class ScriptEditorForBeanShell
|
|||||||
return "bsh";
|
return "bsh";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates the line where error occured
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void indicateErrorLine( int lineNum )
|
||||||
|
{
|
||||||
|
model.indicateErrorLine( lineNum );
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Executes the script edited by the editor
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public Object execute() throws Exception {
|
||||||
|
frame.toFront();
|
||||||
|
return model.execute( context, cl );
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Opens an editor window for the specified ScriptMetaData.
|
* Opens an editor window for the specified ScriptMetaData.
|
||||||
* If an editor window is already open for that data it will be
|
* If an editor window is already open for that data it will be
|
||||||
@@ -219,6 +238,13 @@ public class ScriptEditorForBeanShell
|
|||||||
|
|
||||||
if (entry != null ) {
|
if (entry != null ) {
|
||||||
try {
|
try {
|
||||||
|
ClassLoader cl = null;
|
||||||
|
try {
|
||||||
|
cl = ClassLoaderFactory.getURLClassLoader( entry );
|
||||||
|
}
|
||||||
|
catch (Exception ignore) // TODO re-examine error handling
|
||||||
|
{
|
||||||
|
}
|
||||||
String sUrl = entry.getParcelLocation();
|
String sUrl = entry.getParcelLocation();
|
||||||
if ( !sUrl.endsWith( "/" ) )
|
if ( !sUrl.endsWith( "/" ) )
|
||||||
{
|
{
|
||||||
@@ -237,7 +263,7 @@ public class ScriptEditorForBeanShell
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
new ScriptEditorForBeanShell(context, url);
|
new ScriptEditorForBeanShell(context, cl, url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (IOException ioe) {
|
catch (IOException ioe) {
|
||||||
@@ -249,13 +275,14 @@ public class ScriptEditorForBeanShell
|
|||||||
private ScriptEditorForBeanShell() {
|
private ScriptEditorForBeanShell() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private ScriptEditorForBeanShell(XScriptContext context, URL url)
|
private ScriptEditorForBeanShell(XScriptContext context, ClassLoader cl,
|
||||||
|
URL url)
|
||||||
{
|
{
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.scriptURL = url;
|
this.scriptURL = url;
|
||||||
this.model = new ScriptSourceModel(url);
|
this.model = new ScriptSourceModel(url);
|
||||||
this.filename = url.getFile();
|
this.filename = url.getFile();
|
||||||
|
this.cl = cl;
|
||||||
try {
|
try {
|
||||||
Class c = Class.forName(
|
Class c = Class.forName(
|
||||||
"org.openoffice.netbeans.editor.NetBeansSourceView");
|
"org.openoffice.netbeans.editor.NetBeansSourceView");
|
||||||
@@ -332,14 +359,7 @@ public class ScriptEditorForBeanShell
|
|||||||
OutputStream fos = null;
|
OutputStream fos = null;
|
||||||
try {
|
try {
|
||||||
String s = view.getText();
|
String s = view.getText();
|
||||||
if ( scriptURL.getProtocol().equals("file") )
|
|
||||||
{
|
|
||||||
fos = new FileOutputStream( filename );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fos = scriptURL.openConnection().getOutputStream();
|
fos = scriptURL.openConnection().getOutputStream();
|
||||||
}
|
|
||||||
if ( fos != null) {
|
if ( fos != null) {
|
||||||
fos.write(s.getBytes());
|
fos.write(s.getBytes());
|
||||||
}
|
}
|
||||||
@@ -381,11 +401,12 @@ public class ScriptEditorForBeanShell
|
|||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
if (e.getActionCommand().equals("Run")) {
|
if (e.getActionCommand().equals("Run")) {
|
||||||
try {
|
try
|
||||||
model.execute(context);
|
{
|
||||||
|
execute();
|
||||||
}
|
}
|
||||||
catch (java.lang.reflect.InvocationTargetException ite) {
|
catch (Exception invokeException ) {
|
||||||
showErrorMessage(ite.getMessage());
|
showErrorMessage(invokeException.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (e.getActionCommand().equals("Close")) {
|
else if (e.getActionCommand().equals("Close")) {
|
||||||
|
|||||||
Reference in New Issue
Block a user