top bar

Writing plugins for Micro-Manager

Revision as of 10:33, 2 August 2013 by Arthuredelstein (Talk | contribs)

Micro-Manager has a Java-based plugin system similar to ImageJ's. To write a Micro-Manager plugin, simply implement the MMPlugin interface.
Note
The static String menuName lets you control the name of the plugin that appears in the Micro-Manager Plugins menu.

Micro-Manager's classpath is set up so that Micro-Manager plugins can import classes from:

  1. the Java 2 SE 6.0 Libraries
  2. Micro-Manager
  3. ImageJ
  4. Apache Commons Math

The MMPlugins API provides you access to the GUI and core instances (objects) already created by Micro-Manager startup. Micro-Manager will call public void setApp(ScriptInterface app); you can get the GUI object, core and acquisition engine objects thus:

   MMStudioMainFrame gui_ = (MMStudioMainFrame) app;
   CMMCore core_ = gui_.getMMCore();
   AcquisitionEngine acq_ = gui_.getAcquisitionEngine();

Once you have compiled your code into a .class file or a .jar file, drop that file into Micro-Manager's mmplugins directory, and it will be loaded at startup.

The source code for a number of Micro-Manager plugins is publicly available here. Seamus Holden has also contributed a Hello World Example plugin.


Using Netbeans

The dynamic loading feature (described above) is useful if you are developing your plugin using an IDE such as Eclipse or Netbeans. (The Micro-Manager distribution includes swing-layout-*.*.jar so that you can use the free Netbeans GUI Builder for your plugin.) Here are the steps for Netbeans:

  1. Install Netbeans. Note, Netbeans currently comes with the Java 1.7.0 run time environment. After install, you will need to manually install and add the JRE that Micro-Manager uses: 1.6.0, 64-bit if you need it.
  2. Select New > New Project... > Java > Java Class Library.
  3. Name your plugin project and press Finish.
  4. Under the Projects tab, right-click your plugin project and choose Properties.
  5. Then choose Libraries > Compile > Add JAR/Folder.
    1. Browse to C:\Program Files\Micro-Manager-1.4\plugins\Micro-Manager and choose all jars in that directory.
    2. Click Add JAR/Folder again and add C:\Program Files\Micro-Manager-1.4\ij.jar
    3. Click Categories > Run and set Main Class to ij.ImageJ, working directory to C:\Program Files\Micro-Manager-1.4\ . Click OK.
  6. Now choose Debug > Debug Project from the Menu and ImageJ/Micro-Manager should launch. Close it for now.
  7. Right-click your Source Packages in your project, under the Projects tab. Select New > Java Class... and give your plugin a class name and package name.
  8. Edit the class declaration so that it contains the phrase implements org.micromanager.api.MMPlugin. Left-click on the light-bulb with a red pimple to the left of this line, and select "Implement all abstract methods."
  9. Compile your project, and manually copy the project jar file to Micro-Manager's mmplugins directory. Alternatively, you can add the following to your project build.xml file (look in the Project "Files" tab in Netbeans):
       <property name="pluginsDir"  location="C:\Program Files\Micro-Manager-1.4\mmplugins" />
       <target name="-post-jar">
       System.out.println(info);
       <echo message="--Copied MM plugin JAR to basedir: ${basedir}" />
       <copy file="${basedir}/${dist.jar}" toDir="${pluginsDir}" />
       </target>
When "Clean and Build" is run, this will automatically copy the current version of your plugin to the mmplugins folder.
  1. Now choose Debug > Debug Project and your nascent plugin should appear in the Plugins menu.
You can also dynamically load your plugin by including a line in the MMStartup.bsh file. (This file should reside in the root directory of your Micro-Manager installation; if there isn't one yet, you can create it with any text editor program.) For example:
       gui.installPlugin("org.micromanager.surveyor.SurveyorPlugin");
Make sure you change the "Layout Generation Style" property from "Automatic" to "Swing Layout Extensions Library" as explained on the Netbeans website.
© Micro-Manager : Vale Lab, UCSF 2006-2011 | All Rights Reserved | Contact