Difference between revisions of "Scout/Tutorial/3.8/Jython Integration"

From Eclipsepedia

< Scout‎ | Tutorial‎ | 3.8
Jump to: navigation, search
(Introduction)
(Introduction)
Line 3: Line 3:
 
With Release 3.8 the Scout SDK offers support to integrate external JAR files into a Scout application with a few clicks. In this tutorial we use this capability to demonstrate how [http://jython.org/ Jython] may be integrated in your Scout application.
 
With Release 3.8 the Scout SDK offers support to integrate external JAR files into a Scout application with a few clicks. In this tutorial we use this capability to demonstrate how [http://jython.org/ Jython] may be integrated in your Scout application.
  
According to the [http://wiki.python.org/jython/ Wiki] ''"Jython is a Java implementation of [http://python.org/ Python]"'' and Python itself claims ''"You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs."'' In any case, we need an example here and combining Java with a powerful scripting language can be of help to solve a significant amount of problems.
+
According to the [http://wiki.python.org/jython/ Wiki] ''"Jython is a Java implementation of [http://python.org/ Python]"'' and Python itself claims ''"You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs."'' In any case, we need an example library here and combining Java with a powerful scripting language can help to solve a significant variety of problems.
  
 
The result at the end of this tutorial will look similar to the screenshot below:
 
The result at the end of this tutorial will look similar to the screenshot below:
  
 
[[Image:Jython_integration.png]]
 
[[Image:Jython_integration.png]]
 +
 +
== Building the Jythonlib.jar ===
 +
bla
 +
 +
== Create New Scout Project and add the Library bundle ==
 +
bla
 +
 +
== Add and Configure the Form Fields on the Desktop Form ==
 +
bla
 +
 +
== Add Logic for Jython Interpreter and Interaction with Scout Form ==
 +
bla
 +
 +
  @Override
 +
  protected void execClickAction() throws ProcessingException {
 +
    getResultField().clearErrorStatus();
 +
    try {
 +
      // make sure Lib is visible to access python modules
 +
      PySystemState sys = Py.getSystemState();
 +
      PyString pyLibPath = new PyString("__pyclasspath__/Lib");
 +
 +
      if (!sys.path.contains(pyLibPath)) {
 +
        sys.path.append(pyLibPath);
 +
      }
 +
 +
      // get interpreter, read input variable from input field
 +
      PythonInterpreter pi = new PythonInterpreter();
 +
      pi.set(getInputField().getValue(), new PyString(getLineField().getValue()));
 +
 +
      // run script, transfer output to result field
 +
      pi.exec(getPythonField().getValue());
 +
      getResultField().setValue(pi.get(getOutputField().getValue()).asString());
 +
    }
 +
    catch (Exception e) {
 +
      getResultField().setValue(null);
 +
      getResultField().setErrorStatus(e.toString());
 +
    }
 +
  }

Revision as of 16:56, 1 June 2012

Contents

Introduction

With Release 3.8 the Scout SDK offers support to integrate external JAR files into a Scout application with a few clicks. In this tutorial we use this capability to demonstrate how Jython may be integrated in your Scout application.

According to the Wiki "Jython is a Java implementation of Python" and Python itself claims "You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs." In any case, we need an example library here and combining Java with a powerful scripting language can help to solve a significant variety of problems.

The result at the end of this tutorial will look similar to the screenshot below:

Jython integration.png

Building the Jythonlib.jar =

bla

Create New Scout Project and add the Library bundle

bla

Add and Configure the Form Fields on the Desktop Form

bla

Add Logic for Jython Interpreter and Interaction with Scout Form

bla

 @Override
 protected void execClickAction() throws ProcessingException {
   getResultField().clearErrorStatus();
   try {
     // make sure Lib is visible to access python modules
     PySystemState sys = Py.getSystemState();
     PyString pyLibPath = new PyString("__pyclasspath__/Lib");
     if (!sys.path.contains(pyLibPath)) {
       sys.path.append(pyLibPath);
     }
     // get interpreter, read input variable from input field
     PythonInterpreter pi = new PythonInterpreter();
     pi.set(getInputField().getValue(), new PyString(getLineField().getValue()));
     // run script, transfer output to result field
     pi.exec(getPythonField().getValue());
     getResultField().setValue(pi.get(getOutputField().getValue()).asString());
   }
   catch (Exception e) {
     getResultField().setValue(null);
     getResultField().setErrorStatus(e.toString());
   }
 }