Merge branch 'develop' into features/JAL-2094_colourInterface
[jalview.git] / help / html / features / groovy.html
index 66edaf9..a2bc627 100644 (file)
@@ -1,18 +1,89 @@
-<html>\r
-<!--\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)\r
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle\r
- * \r
- * This file is part of Jalview.\r
- * \r
- * Jalview is free software: you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License \r
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r
- * \r
- * Jalview is distributed in the hope that it will be useful, but \r
- * WITHOUT ANY WARRANTY; without even the implied warranty \r
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
- * PURPOSE.  See the GNU General Public License for more details.\r
- * \r
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.\r
--->\r
+<html>
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ -->
+<head>
+<title>Groovy Shell</title>
+</head>
+<body>
+  <p>
+    <strong>The Groovy Shell</strong>
+  </p>
+  <p>
+    <a href="http://www.groovy-lang.org/">Groovy</a> is an &quot;<em>agile
+      and dynamic language for the Java platform</em>&quot;. The groovy
+    scripting language makes it extremely easy to programmatically
+    interact with Java programs, in much the same way that Javascript is
+    used to generate and interact with applets and other objects on the
+    page.
+  </p>
+  <p>
+    <strong><em>Getting Groovy...</em> </strong><br> Jalview comes with
+    an embedded installation of Groovy. All you need is to select <strong>Tools&#8594;Groovy
+      Console...</strong> menu option from the Jalview Desktop's
+    drop-down menu. After a short pause, you should then see the <a
+      href="http://groovy-lang.org/groovyconsole.html"
+    >Groovy Console</a> appear. This allows you to interactively execute Groovy
+    scripts within the Jalview run-time environment.
+  </p>
+  <p>
+    <strong>Executing groovy scripts on Jalview startup</strong><br>
+    The -groovy &lt;script&gt; option on the <a href="commandline.html">
+      Jalview command line</a> will execute the contents of &lt;script&gt;.
+    &lt;script&gt; may be a file, a URL, or alternatively if it is
+    &quot;STDIN&quot; then the standard input will be used.<br> <em>Note:
+      The groovy script will be executed <strong>after</strong> any data
+      is loaded, and <strong>before</strong> images or any output files
+      are written. This allows you to perform customised Jalview
+      analysis workflows with groovy.
+    </em>
+  </p>
+  <p>
+    <strong>Executing a groovy script on a particular alignment</strong><br/>
+    
+  <p>
+    <strong>Access to Jalview's functions from Groovy Scripts</strong><br>
+    There is as yet no properly defined scripting interface to Jalview,
+    but all the public methods of the jalview class hierarchy can be
+    called from Groovy scripts. The access point for this is the <strong>Jalview</strong>
+    object defined in the groovy environment which corresponds to the
+  <pre>jalview.gui.Desktop</pre>
+  object which manages all the Jalview windows. Here's an example to get
+  you started:
+  <br>
+  <ul>
+    <li>Getting the title, alignment and first sequence from the
+      current alignFrame<br> <pre>
+def alf = Jalview.getAlignFrames();
+print alf[0].getTitle();
+def alignment = alf[0].viewport.alignment;
+def seq = alignment.getSequenceAt(0);
+</pre>
+    </li>
+    <li>When running a groovy script from the command line, the
+      alignment that was just loaded can be referred to like so:<br>
+    <pre>
+print currentAlFrame.getTitle();</pre>
+  </ul>
+  If you have downloaded the InstallAnywhere version of Jalview, you can
+  find additional groovy scripts in the examples/groovy subfolder of the
+  installation directory.
+</body>
+</html>