Scripting: Freeplane Utility Classes

From Freeplane - free mind mapping and knowledge management software
Revision as of 10:15, 24 November 2010 by Boercher (talk | contribs) (Undo vandalism)

Back to Scripting overview

There are a few utility classes in Freeplane that are of special use for scripting. (For details look up the code.) For example:

UITools

UITools.java <groovy> public class UITools {

   public static String MAIN_FREEPLANE_FRAME = "mainFreeplaneFrame";
   public static void addEscapeActionToDialog(JDialog dialog);
   public void actionPerformed(ActionEvent e);
   public static void addEscapeActionToDialog(JDialog dialog, Action action);
   public static void addKeyActionToDialog(JDialog dialog, Action action,
       String keyStroke, String actionId);
   public static void convertPointFromAncestor(Component source, Point p,
       Component c);
   public static void convertPointToAncestor(Component source, Point point,
       Class ancestorClass);
   public static void convertPointToAncestor(Component c, Point p,
       Component destination);
   public static void errorMessage(Object message);
   public void run();
   public static Frame getFrame();
   public static KeyStroke getKeyStroke(String keyStrokeDescription);
   public static void informationMessage(Frame frame, String message);
   public static void informationMessage(Frame frame, String message, String title);
   public static void informationMessage(Frame frame, String message, String title,
       int type);
   public static void setBounds(Component frame, int win_x, int win_y,
       int win_width, int win_height);
   public static void setDialogLocationRelativeTo(JDialog dialog, Component c);
   public static void setDialogLocationRelativeTo(JDialog dialog,
       Controller controller, NodeModel node);
   public static void setDialogLocationUnder(JDialog dialog, Controller controller,
       NodeModel node);
   public static int showConfirmDialog(Controller controller, NodeModel node,
       Object message, String title, int optionType);
   public static String showInputDialog(Controller controller, NodeModel node,
       String text, String string);
   public static String showInputDialog(Controller controller, NodeModel node,
       String text, String title, int type);

} </groovy>


HtmlTools

HtmlTools.java <groovy> public class HtmlTools {

   public static HtmlTools getInstance();
   public static String htmlToPlain(String text);
   public static String htmlToPlain(String text, boolean strictHTMLOnly);
   public static boolean isHtmlNode(String text);
   public static String plainToHTML(String text);
   public static String removeAllTagsFromString(String text);
   /**
    * Removes all tags (<..>) from a string if it starts with "<html>..." to
    * make it compareable.
    */
   public static String removeHtmlTagsFromString(String text);
   public static String toXMLEscapedText(String text);
   public static String toXMLEscapedTextExpandingWhitespace(String text);
   public static String toXMLUnescapedText(String text);
   /**
    * warning: only decodes unicode entities like ä. Use
    * toXMLUnescapedText(unescapeHTMLUnicodeEntity(text)) to decode &
    * etc. too.
    */
   public static String unescapeHTMLUnicodeEntity(String text);
   public static String unicodeToHTMLUnicodeEntity(String text);
   // the remainder could/should be static as well (use getInstance() to get the singleton
   /**
    * @return the maximal index i such that pI is mapped to i by removing all
    *         tags from the original input.
    */
   public int getMaximalOriginalPosition(int pI, ArrayList pListOfIndices);
   public int getMinimalOriginalPosition(int pI, ArrayList pListOfIndices);
   /**
    * Replaces text in node content without replacing tags.
    */
   public String getReplaceResult(Pattern pattern, String replacement, String text);
   /**
    * @return true, if well formed XML.
    */
   public boolean isWellformedXml(String xml);
   public String toHtml(String xhtmlText);
   public String toXhtml(String htmlText);
   static public int endOfText(String html);

} </groovy>

LogTool

Gives access to Freeplane's standard logging facility:

LogTool.java <groovy> public class LogTool {

   public static void createLogger();
   public static void info(String string);
   public static void info(Transferable t);
   public static void severe(String message);
   public static void severe(String comment, Throwable e);
   public static void severe(Throwable e);
   public static void warn(String msg);
   public static void warn(String comment, Throwable e);
   public static void warn(Throwable e);

} </groovy>

FreeplaneVersion

FreeplaneVersion.java <groovy> public class FreeplaneVersion implements Comparable<FreeplaneVersion> {

   public static String XML_VERSION = "0.9.0";
   /** returns a initialized version. */
   public static FreeplaneVersion getVersion();
   /** major version, the 1 in "1.0.38 rc" */
   public int getMaj();
   /** mid version, the 0 in "1.0.38 rc" */
   public int getMid();
   /** minor version, the 38 in "1.0.38 rc" */
   public int getMin();
   /** optional patch level (testversion only). */
   public int getNum();
   /** release type e.g. "", "rc", "beta", "alpha" or "nightly_build". */
   public String getType();
   /** Use it like this:

*

     *   FreeplaneVersion required = FreeplaneVersion.getVersion("1.0.38");
     *   if (FreeplaneVersion.getVersion().compareTo(required) < 0)
     *       UITools.errorMessage("Freeplane version not supported"
     *           + " - update to at least " + required);
     * 
    */
   public int compareTo(FreeplaneVersion o);
   /** returns the full version number, e.g. "1.0.38 rc". */
   public String toString();
   /** returns the version number only, e.g. "1.0.38". */
   public String numberToString();

} </groovy>