Under the covers: Difference between revisions

From FreeMind
Jump to navigationJump to search
No edit summary
Line 1: Line 1:
== Under the covers ==
>== Under the covers ==


There doesn't appear to be a page on this wiki dedicated to describing the design of the system for potential developers of plugins etc.
There doesn't appear to be a page on this wiki dedicated to describing the design of the system for potential developers of plugins etc.
Line 17: Line 17:
Let's start with a link to the stated requirements (these could be inlined later on) at [[Development#Requirements on file format of FreeMind|File Format Requirements]].
Let's start with a link to the stated requirements (these could be inlined later on) at [[Development#Requirements on file format of FreeMind|File Format Requirements]].


Here's the current version of the XML schema from 0.9.0 beta2: [[http://freemind.cvs.sourceforge.net/*checkout*/freemind/freemind/freemind.xsd?revision=1.1.2.4&pathrev=fm_0_9_0_beta2]]
Here's the current version of the XML schema from 0.9.0 beta2: [[http://freemind.cvs.sourceforge.net/*checkout*/freemind/freemind/freemind.xsd?revision=1.1.2.4&pathrev=fm_0_9_0_beta2]]


=== Properties files ===
=== Properties files ===
Line 31: Line 31:
=== The Plug-in API ===
=== The Plug-in API ===


Freemind has a comprehensive plugin API.  Plugins are hooked in by an XML file as defined in [[http://freemind.cvs.sourceforge.net/*checkout*/freemind/freemind/freemind_actions.xsd?pathrev=fm_0_9_0_beta2]].<br>
Freemind has a comprehensive plugin API.  Plugins are hooked in by an XML file as defined in [[http://freemind.cvs.sourceforge.net/*checkout*/freemind/freemind/freemind_actions.xsd?pathrev=fm_0_9_0_beta2]].&lt;br&gt;
Various actions can be defined for plugins to hook the behaviour of inbuilt actions.  An example is the time management plugin [[http://freemind.cvs.sourceforge.net/*checkout*/freemind/freemind/plugins/TimeManagement.xml?pathrev=fm_0_9_0_beta2 |XML file]].
Various actions can be defined for plugins to hook the behaviour of inbuilt actions.  An example is the time management plugin [[http://freemind.cvs.sourceforge.net/*checkout*/freemind/freemind/plugins/TimeManagement.xml?pathrev=fm_0_9_0_beta2 |XML file]].


Plugins can be mandated by a Freemind data file (for example a file saved with TimeManagementPlugin reminders in it):
Plugins can be mandated by a Freemind data file (for example a file saved with TimeManagementPlugin reminders in it):


  <map version="0.8.0">
  &lt;map version=&quot;0.8.0&quot;&gt;
  <!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
  &lt;!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --&gt;
  <node CREATED="1154726055515" ID="Freemind_Link_370555638" MODIFIED="1154726201296" TEXT="New Mindmap">
  &lt;node CREATED=&quot;1154726055515&quot; ID=&quot;Freemind_Link_370555638&quot; MODIFIED=&quot;1154726201296&quot; TEXT=&quot;New Mindmap&quot;&gt;
  <hook NAME="accessories/plugins/CreationModificationPlugin_new.properties"/>
  &lt;hook NAME=&quot;accessories/plugins/CreationModificationPlugin_new.properties&quot;/&gt;
  <node CREATED="1154726156765" ID="_" MODIFIED="1154726213500" POSITION="right" TEXT="h">
  &lt;node CREATED=&quot;1154726156765&quot; ID=&quot;_&quot; MODIFIED=&quot;1154726213500&quot; POSITION=&quot;right&quot; TEXT=&quot;h&quot;&gt;
  <hook NAME="plugins/TimeManagementReminder.xml">
  &lt;hook NAME=&quot;plugins/TimeManagementReminder.xml&quot;&gt;
  <Parameters REMINDUSERAT="1155244560656"/>
  &lt;Parameters REMINDUSERAT=&quot;1155244560656&quot;/&gt;
  </hook>
  &lt;/hook&gt;
  </node>
  &lt;/node&gt;
  <node CREATED="1154726229406" ID="Freemind_Link_382110888" MODIFIED="1154726269062" POSITION="right" TEXT="hh">
  &lt;node CREATED=&quot;1154726229406&quot; ID=&quot;Freemind_Link_382110888&quot; MODIFIED=&quot;1154726269062&quot; POSITION=&quot;right&quot; TEXT=&quot;hh&quot;&gt;
  <hook NAME="plugins/TimeManagementReminder.xml">
  &lt;hook NAME=&quot;plugins/TimeManagementReminder.xml&quot;&gt;
  <Parameters REMINDUSERAT="1155935760656"/>
  &lt;Parameters REMINDUSERAT=&quot;1155935760656&quot;/&gt;
  </hook>
  &lt;/hook&gt;
  </node>
  &lt;/node&gt;
  <node CREATED="1154726231796" ID="Freemind_Link_1550073498" MODIFIED="1154726233031" POSITION="right" TEXT="j"/>
  &lt;node CREATED=&quot;1154726231796&quot; ID=&quot;Freemind_Link_1550073498&quot; MODIFIED=&quot;1154726233031&quot; POSITION=&quot;right&quot; TEXT=&quot;j&quot;/&gt;
  </node>
  &lt;/node&gt;
  </map>
  &lt;/map&gt;


TBC.
TBC.
Line 62: Line 62:
=== Discussion on potential design changes ===
=== Discussion on potential design changes ===
I've left a section here for discussion on changes in the above (rather than use the discussion page).
I've left a section here for discussion on changes in the above (rather than use the discussion page).
<br>This may or may not be useful, but discussion leads to innovation... --[[User:Violetlight|Violetlight]] 12:32, 4 Aug 2006 (PDT)
&lt;br&gt;This may or may not be useful, but discussion leads to innovation... --[[User:Violetlight|Violetlight]] 12:32, 4 Aug 2006 (PDT)


=== Other sources of design/development information ===
=== Other sources of design/development information ===
You should also see the [[Development]] page, which describes & discusses the project's development process and some internal details.
You should also see the [[Development]] page, which describes &amp; discusses the project's development process and some internal details.


[[Category:Development]]
[[Category:Development]]
----
<div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;">
----
=[http://yzoxixytote.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=
----
=[http://yzoxixytote.co.cc CLICK HERE]=
----
</div>

Revision as of 23:02, 17 November 2010

>== Under the covers ==

There doesn't appear to be a page on this wiki dedicated to describing the design of the system for potential developers of plugins etc. This page is meant to fill that gap. If this starts to be a source of documentation that looks respectable, then please add whatever documentation you would consider to be necessary to turn a professional java developer into a freemind developer. Currently it is is at very draft status. Thanks (and sorry if such information already exists in a collated form elsewhere) --Violetlight 12:41, 4 Aug 2006 (PDT)

The High Level Design

Need subsections here on:

  • hooks framework
  • properties parsing
  • action pairs

etc etc. (to be completed by anyone)

The File Format

Let's start with a link to the stated requirements (these could be inlined later on) at File Format Requirements.

Here's the current version of the XML schema from 0.9.0 beta2: [[1]]

Properties files

The freemind.properties and user.properties files define the user customisable properties of the freemind application. The freemind.properties defines settings for all users in a multi-user system, and each user should then have a user.properties file, which can override freemind.properties.

TBD - define each of the properties in turn

patterns.xml

This file provides the current implementation of skinning. Patterns defined in this file can be mapped to function keys within freemind, and thence applied to mind maps as a style. Patterns can be simple (make the text in the node italic), or can be complex (make this node large/blue/with-a-1-icon and its immediate child small/yellow/with-a-2-icon).

The Plug-in API

Freemind has a comprehensive plugin API. Plugins are hooked in by an XML file as defined in [[2]].<br> Various actions can be defined for plugins to hook the behaviour of inbuilt actions. An example is the time management plugin [|XML file].

Plugins can be mandated by a Freemind data file (for example a file saved with TimeManagementPlugin reminders in it):

<map version="0.8.0">
<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
<node CREATED="1154726055515" ID="Freemind_Link_370555638" MODIFIED="1154726201296" TEXT="New Mindmap">
<hook NAME="accessories/plugins/CreationModificationPlugin_new.properties"/>
<node CREATED="1154726156765" ID="_" MODIFIED="1154726213500" POSITION="right" TEXT="h">
<hook NAME="plugins/TimeManagementReminder.xml">
<Parameters REMINDUSERAT="1155244560656"/>
</hook>
</node>
<node CREATED="1154726229406" ID="Freemind_Link_382110888" MODIFIED="1154726269062" POSITION="right" TEXT="hh">
<hook NAME="plugins/TimeManagementReminder.xml">
<Parameters REMINDUSERAT="1155935760656"/>
</hook>
</node>
<node CREATED="1154726231796" ID="Freemind_Link_1550073498" MODIFIED="1154726233031" POSITION="right" TEXT="j"/>
</node>
</map>

TBC.

Documentation for current plugins

Plugins

Discussion on potential design changes

I've left a section here for discussion on changes in the above (rather than use the discussion page). <br>This may or may not be useful, but discussion leads to innovation... --Violetlight 12:32, 4 Aug 2006 (PDT)

Other sources of design/development information

You should also see the Development page, which describes & discusses the project's development process and some internal details.