ToDo
====
Version 1.01

Make drag box animated and pretty

Add "Save" functionality - and add to ctrl-S
Make more keyboard shortcuts

Use a "proper" 3D sphere/rod renderer

Dragged link should have smaller diameter...

Remove superfluous log lines...
Remove superfluous classes - using JAX...?

 * Consider supporting an index.xml file in the archive;
 
Cable domes project
-------------------
 Build rectangular cable dome...
 Construct hexagonal cable dome...

Catenary dome essay...
 Selection drag-box ;-)

Selected hidden links (but not nodes) still rendered...

Persistent preferences
----------------------
 Move more options into the "Preferences" object
 Preference persistence - using an XML file
 "Apply"/"OK"/"Cancel" buttons on preferences dialog

Make gestures operate on selection - *or* everything if there is no selection.
Make other commands operate on selection - *or* everything if there is no selection???

"Add nodes" button or gesture...?

Build model of aluminium/glass greenhouse (with compound hexagonal faces)?

The ability to select items in a class from a list of classes

Change "colour" to "material"

Improve GUI: Validate more

Import/Export manual pages

"Misc" box grey: not set up initially

Make Springie less sensitive to 404s

Make Springie give more helpful errors when parsing dud SPR files.

Deselect nodes when only selecting links?

POV file export
 Offer more POV export configurations options - including:
 * Configurable options for ground - including:
   * Grass - allowing projected shadows;
   * User's own scene;
 * Configurable options for sky - including:
   * Sunset;
   * User's own sky;
 * "Fast" option - for rendering as rapidly as possible;
  * Finish work on supporting transparency;
  * "Bulging" struts when under pressure ;-)
  * Options in the model about how to render transparency (face: type="mirror")
 * Use: SMOOTH_TRIANGLE:
     smooth_triangle
     {
         <Corner_1>, <Normal_1>, <Corner_2>,
         <Normal_2>, <Corner_3>, <Normal_3>
         [OBJECT_MODIFIER]
     }
 * Find "rope texture" for POV-Ray
 * Find "strut texture" for POV-Ray
 * Find "face texture" for POV-Ray
 * Find "golf ball texture" for POV-Ray
 * Allow finish parameters - such as "reflection" and "phong" to be configured

Why not make it a *real* list of links!?! - to avoid node deletion troubles?
 Can't do that at the moment - since the renderer needs the numerical index
  of each link...

Join each selected node to the nearest <N> selected/unselected/any node(s).
"Make polygon" button: improvements to algorithm

Tell the internet:
* "Tree" tents

Make hidden links across two (or more) links - to make models stronger

Menu: Save

Stats page:
  * Only analyse selection
  * Ignore hidden objects
  Nodes/links/faces panels
  Analysis of strut lengths
  Bar graph
  Number of nodes
  Number of links
  Number of faces
  Min number of links
  Max number of links
  Min number of sides
  Max number of sides
  FPS
  
Better tabbed navigation
 FG/BG nav button colouring

Preferences panel
 Update
  Frame freq
  
 Import/Export options:
  VRML rotation?

Anaglyph stereo
 Choose I/O distance factor
  One "Coords" per Renderer?

Make more mouse gestures
 * Mouse drag -> squash in direction of vector...
 * Scale *just* node radii...

Colour imported FABRIC files - using automatic node colourer and automatic link colourer..
 Button: Derive node colours from number of links
 Button: Derive link colour from node colours
 Button: Derive node colours from link colours?

Derive link radii from link lengths...
Derive node radii from link radii (and node number)...

Make sure what is chosen when selecting is the object nearest the front...

Scripting programming language for Springie (important)
 Java is totally unsuitable as scripting language
 Need a small, dynamic RAD scripting language
 Look at Io/Smalltalk - and other things first
 Do this at about the same time as implementing "undo"?

GarbageCollection - faces not done yet...

Make list of links (etc) into proper encapsulated classes

Make Node.element (etc) into a proper encapsulated class -
  so whether these classes use Vector internally becomes
  an implementation detail?!

Configurable "Gravity direction" - unit vector 

Configure which universe options are saved - and which
are ignored when loading files

ClazzFactory should not be static When implementing, deal with "merge".

Command-line interface - that acts as file converter/merger

"Bleached" display mode?

Revamp ancient message system

Make select *all* of class look at all the existing selected
  objects colours initaially - and then perform the selection

Make selection select *all* of class - even if type is different

Have multiple, independent charge layers - using a "CHARGEGROUP" XML tag PAIR

Gravity.  Acts like charge - but based on mass

Deploy "viewer" on Hexdome site

Scale gravity - when loading and resizing

Store viscosity in SPR file?

Make tube(1) and tube(2) work

Make composite spiral tube with "internal supporting scaffolding" algorithm

GarbageCollection of polygons is not working

Button: make link length proportion to distance from C of G
Button: make charge strength proportion to distance from C of G

Some more "chemical" examples (electrostatics)

list_of_links is only really used to speed up rendering.  Deprecate it.
list_of_polygons is only really used to speed up rendering.  Deprecate it.

log_mass -> mass
Separate configuration for Inertial mass and Gravitational mass

Implement saving of mass

Electrostatics: "charged" option - needs setting up more often?

"Wheelify" button

Dimple maker

Title bar not set up initially?

When splitting into 3
instead of A-B-C-D A-D
try A-B-C-D A-C B-D! ;-)

Beta!
-----
Hue/Saturation/Value global sliders - to make things easier to see

Pulleys - Tension equalization algorithm
 Implement this by using:
 <link composite=true><node><node><node><node></link>

Implement a "make all polygons clockwise" algorithm

"M.C.V." architecture

"Slow Down" button (combine with "make motionless"?)?

Consider allowing "load from zip" - to reduce file loading times 

Move view position: UDLRIO?
Rotate - U D L R CW ACW?

Advanced edit options:
 "Actual length" measurer

Select all links/polygons/nodes attached to selection
Select all * attached to selected * (eight options)
Use radio icons
Then - get rid of useless "remove links/polygons" options.

Polygon lightsource sensitivity?

Look into VRML procedural textures?

"Explore" navigation which moves camera position

Investigate exceptions - when loading "new" EIG files
Investigate exceptions - when loading "new" RBF files
Investigate "implosions" - when loading /some/ RBF files

Editing primitives
------------------
Dimple command

EIG import
----------
 Import polygon transparency
 Other ways to improve EIG quality

Click actions
-------------
 Fix/unfix
 Hide/show
 Get colour/set colour
 Disabled/enabled
 Cable/Strut

Use "opacity" and "hidden" options in VRML export

Own "dome making" GUI frame?

Option to hide the bottom bars

Version 1.00
============
Export options (e.g. include gravity information?)
Import options (e.g. respect any gravity information?)

Allow configurable background colour
Allow configurable "selection" colour

Consider "inflating a sphere" inside objects - and then equalising tension

Multiple sets of colours/types - for editing and cosmetic purposes

More strut views: Quadruple/Quintuple
More sphere views - multiple circles

*Consider* unplot using XOR!

Better support for D+D loading (mostly done)

Make selection chooser disable selected links when link selection is off?

Provide a way to measure links and distances

VRML export options (headlight, viewpoints, etc).

More "polygon making" options?
Ability to select polygons

"Emitting" entities?
"Absorbing" entities?

IMPORT
------
EXPORT
------
 ".m" file export (two types ;-))

Initial velocity setup - in nodes attribute:
  Rotation: vector only
  Translation: vector

Consider making everything scale with the size of the window

Use "interior" for rendering purposes (strut indication)??
Use "interior" for rendering purposes (VRML "halo")??

More rendering options

Farm out "ToDo list" (to SF?)
Split up FrEnd class further...

Switch to using "mass" internally
More render options for polygons: filled/(cross-hatch/shaded?)

Style improvements
------------------
Eliminate more static code

Make "properties" - and make them act using inheritance

"Undo" option in editor

Multiple documents open at once by the same program

More dome making tools

Primitive dome types as examples

Remove duplicate links (best to not make them in the first place)?

Marathon
Swimathon

Type Editors
  More-completely separate UI from calculation (clean up "Renderer" classes)
  Bug with bins when object too large

Improve "stiffness" algorithm?

Start using original bins

"Equalise and set group" button?
  Coordinates
  Use floats for all calculations?
  Switch Y and Z
  Move origin - so (0,0,0) is in the middle of the screen
"High level" editing operations

Animate "only when cursor over window" functionality - 4 web demos
Check that allowing multiple instances on a page works

"Equalise tension between adjacent ropes of same type" setting

NO:Truncate to fit???

NO:Name nodes, links(?), groups(?) internally - and save the names???

---------------------

Node growth rate/node shrink rate slider(s)

Kill dead code
Consider "very large" number of bins
Keyboard navigation - e.g. pressing DELETE deletes the current selection
Bins when paused?
No need to save list of links with each node?
Allow variable TLHC co-ordinates
Sophisticated "solid" background image - with intelligent redraw?
(Eventually) all forces (e.g. spring force) need to pay attention to mass
Sort out bugs in collision detection when "off screen"?
Real 3D - (/perhaps/ using Java3D?)
Add improved mass - and conservation of energy - to the physics of the collisions
