Initial battleplan.
It is still missing notes about where there should be public releases, etc. Also, the iteration numbers could be changed so that they don't all start with 0.0.

Version Contains
0.0.1 - Done Implement the basic command framework, undo, redo, a command history, and a command class.
0.0.2 - Done Implement some simple commands (exit, undo, redo, test).
0.0.3 - Done Implement the basic functionality of the node library view.
  • Initial node views
  • Node library categories.
  • Adding nodes to the node library.
  • Initial sketch of some typical contents of the node library.

0.0.4 - Ongoing Get node structure functionality and the plant working, so that we can attach nodes together.
  • Add nodes as children to other nodes - Done
  • Remove nodes from the child list of other nodes
  • Implement commands for adding a node as a child for another node -- Problem: How do we pass the target and soruce node to the command? How does drag & drop and similar interact with Command classes?
  • Implement command for removing a node from the child list of another node.

0.0.5 Implement a simple editor for viewing and editing node graphs.
  • Implement code for graph layout - (worked out on paper)
  • Implement node renderer, or use node view?
  • Implement connection renderer
  • Put it in a scroll pane and make sure it scrolls properly
  • Implement drag node and drop node on other node, or in empty space, and make it call the add as child, remove from parent(s) commands
  • Implement node selection (click / ctrl+click etc for select / multiselect, MainController to keep track of selected nodes)
  • Multiple node dragging
  • Context sensitive popup for a node or nodes. Delete, clone, etc. commands will go here.
  • Implement delete node command
  • Implement hotkeys, so that the del keys deletes a node, etc.

0.0.6 Implement needed parameter types.
  • Boolean
  • Integer
  • Double
  • String
  • Color
  • Histogram
  • Polyline
  • Polygon

0.0.7 Implement editors for parameters, and the ParameterPanel.
0.0.8 Implement command for saving and loading a node graph.
0.0.9 Implement a small but usable and representative set of node types.
0.0.10 Implement generation of the 3D structure for a plant, and showing it in the preview window with Java3D or similar.
0.0.11 Implement tweaks.
0.0.12 Implement animation of tweak values.
0.0.13 Add all other node types.
0.0.14 Polish icons, user interface, option dialog, etc.
0.0.15 Fix bugs, improve performance.
0.0.16 Imlement optional C++ library that can render / produce the plant with open gl at variable LOD, using techniques such as impostors to support large numbers of different plants.
0.0.17 Extract the framework developed in PlantEdit, and use it for other WF editing tools and other Java applications.