Hacking on JAS3
Tools
Building JAS3 from source requires Apache Ant.
wget http://apache.oregonstate.edu/ant/binaries/apache-ant-1.6.5-bin.zip unzip apache-ant-1.6.5-bin.zip
Building
Obtaining the Source
JAS3
CVS checkout command.
cvs -d :pserver:anonymous@cvs.freehep.org:/cvs/jas co jas3
FreeHep
Much of JAS3's functionality is found in the freehep package.
CVS checkout command.
setenv CVSROOT :pserver:anoncvs@cvs.freehep.org:/cvs/freehep cvs login [jascvs] cvs co -P freehep
cd freehep export FREEHEP=`pwd` tools/ant
Building JAS3 from Source
cd jas3 ant
Installing Freehep Dependencies
Make a file ~/jas3.properties containing the following:
FREEHEP=C:\path\to\freehep
On Windows, the path separators need to be double backslashes. (Check same for Unix???)
Now, run from JAS3:
ant extLibs
This pulls all FreeHep external library jars files into the jas3/extensions directory.
Plugins
Structure
On startup, JAS looks for this path in the jar file to load a plugin.
PLUGIN-inf/plugins.xml
For example, here is the contents of that file for the org.lcsim plugin.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plugins SYSTEM "http://java.freehep.org/schemas/plugin/1.0/plugin.dtd"> <plugins> <plugin> <information> <name>org.lcsim</name> <category>hep.linearcollider</category> <author>LCSIM Team</author> <version>0.9</version> <description kind="short">org.lcsim plugin for JAS3</description> <description>org.lcsim plugin for JAS3.</description> <load-at-start/> </information> <resources> <j2se minVersion="1.5"/> <file href="http://jas.freehep.org/jas3/plugins/lcsim/0.9/lcsim.jar" location="lcsim.jar"/> <file href="http://jas.freehep.org/jas3/plugins/lcsim/0.9/freehep-physics.jar" location="freehep-physics.jar"/> <file href="http://jas.freehep.org/jas3/plugins/lcsim/0.9/sio.jar" location="sio.jar"/> <file href="http://jas.freehep.org/jas3/plugins/lcsim/0.9/GeomConverter.jar" location="GeomConverter.jar"/> <file href="http://jas.freehep.org/jas3/plugins/lcsim/0.9/commons-math.jar" location="commons-math.jar"/> </resources> <plugin-desc class="org.lcsim.plugin.LCSimPlugin"/> </plugin> </plugins>
Menus
Example of adding a File -> New -> Example Plugin menu item.
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE MenuSystem SYSTEM "http://java.freehep.org/schemas/menus/1.0/menus.dtd"> <MenuSystem> <MenuBar id="mainMenu"> <Menu name="File" mnemonic="F" location="100"> <Menu name="New" mnemonic="N" location="50"> <Component type="default" icon="/classpath/to/examplePluginIcon.gif" name="Example Plugin" mnemonic="E" command="ExamplePlugin" location="1200"/> </Menu> </Menu> </MenuBar> </MenuSystem>
Within the init() function of the plugin class, the following lines of code should be used to build the menus.
Studio app = getApplication(); XMLMenuBuilder builder = app.getXMLMenuBuilder(); URL xml = getClass().getResource("ExamplePlugin.menus"); builder.build(xml);