Program design

From FreeMind
Revision as of 21:33, 11 October 2007 by DimitriPolivaev (talk | contribs)
Jump to navigationJump to search

This page describes the current program design.

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.

Architecture Design

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.

All kinds of MindMap use MindMapNode for representing a single node.

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 small sized freemindbrowser.jar with applet viewer using a part of classes included on the whole program.

Model

MindMap

MindMapNode

Filtering

Edge Models

Links

Clouds

Atributes

Attribute Registry

Model Events

View

MapView

NodeView

Edges
Filtered Nodes
Attribute Table
Clouds

Link Views

Layout Managers

Controller

Modes

Actions

Undo Implementation
XML-Serialization

Listeners

Controller Events

Filter Controller

Configuration (Preferences)

Plug-Ins

Startup

  1. Freemind is started by invoking a script:
Starting Scripts
Windows freemind.bat
Linux freemind.sh
  1. The main class invoked by the script is: freemind.main.FreeMindStarter
  2. FreeMindStarter checks the Java version and then invokes Freemind.main.
  3. The Freemind takes care of initialization, setting the look and feel, loads maps and makes the GUI visible.

    NOTE:It might make some sense to refactor this class, it's very large and complicated.

  4. It appears that freemind.modes.ModeController takes over control 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.

Auxillary Files

Distribution

Required Library Files

  • lib\freemind.jar
  • lib\commons-lang-2.0.jar
  • lib\forms-1.0.5.jar
  • lib\jibx\jibx-run.jar
  • lib\jibx\xpp3.jar
  • lib\bindings.jar