This page describes the current program design. The discussion of its future changes is moved to the talk page.
Currently this page is small, Ask questions so that the team members can extend the points you are interested in. DimitriPolivaev
Note: Someone should review this page every couple of versions and bring it up-to-date. This version of the page is based on the 0.9.0 code base.
FreeMind is a Java application that uses the Java Swing library. The basic design is based on the Model-View-Controller model.
It's central graphic components (MapView and NodeView) allow displaying of arbitrary map implementations implementing interface MindMap extending swing interface TreeModel. The implementations include currently
- MindMapMapModel used for editing of mind maps,
- BrowseMapModel used for displaying a mind map in a browser or in a so-called browse mode,
- FileMapModel used for displaying of file directory tree as a mind map.
Different modes are equipped with mode controllers implementing interface ModeController. The mode controllers are responsible for registering of Actions, Menu Items, Hot Keys and Mouse Listeners which are available for the user. The mode controller of the edit mode MindMapMode takes the required menu structure from file mindmap_menus.xml. It can also include classes registered as Plug-Ins and loaded at the run-time using reflection.
It makes possible to create a relatively compact freemindbrowser.jar that can be used in the applet viewer with a subset of the classes that makeup the whole FreeMind program.
Controller and mode controller classes set up all the
Actions that are used to respond to user input and make changes to the model.
Controller class needs a
FreeMindFrame for it's constructor.
FreeMindFrame is an
Interface. This gives Controller the ability to call back into the
FreeMind class which implements
- See discussion page for more.
The plug-ins allows adding of new operations capsuled in their own components without changing code of controller for registering and managing them. Such plug-ins are saved in directory "accessories". Even the note is implemented as a plug-in.
The plug-ins also provide additional functions that aren't needed by everyone. For instance, the SVG plug-in gives you the capability of exporting your Mind Maps to SVG format. These modules are left out of the minimum download configurations in order to save space.
Freemind is started by invoking a script:
- The main class invoked by the script is:
FreeMindStarterchecks the Java version and then invokes
Freemindtakes care of initialization, setting the look and feel, loads maps and makes the GUI visible.
- As soon as the frame is created (or the applet is displayed), its event loop takes control over. The starter threads ends at this point
GUI Design Principles
The purpose of FreeMind is to provide an easy-to-use Mind Mapping application. It is important to make the users experience with the program as easy, natural, and intuitive as possible. The interface should be uncluttered and easy to navigate.
Need more on this from people who know more about the program.
Required Library Files