ReDash - a tree drawing application

run application! (JNLP)


ReDash is a free and easy to use hierarchies tree creator written in the Java programming language. -Softpedia

Licence: freeware

Runs on: Unix/Linux, Mac, Windows (and any platform supporting Java)

Download

There are two alternatives for launching the application:

  1. Run the the JNLP file directly from your browser. You'll need a JNLP implementation such as Java Web Start installed, it's included in any recent Java Runtime Environment. Warning: Saving or opening trees won't work if you run the application this way, since the JAR package isn't signed.
  2. ... or download the ReDash.jar file. For this you only need a Java Virtual Machine installed. If you're running Windows you might find it handy to use ReDash.bat to run the app, just save it in the same directory where you save the .jar file. If you're running a *nix or something else I trust you're capable of typing "java -jar ReDash.jar" yourself.

Background

Finished in the beginning of 2004 as a part of the Programming Graphical User Interfaces -course in the University of Tampere. Unlikely to be further developed by me. I was going to put the source on display too, but it's not as well commented as it could be. Ask me for it, and I will send it to you.

Features

  • Add an unlimited number of nodes as children of any node
  • Renaming nodes
  • Setting node and text colors
  • Nodes can be moved and resized via drag'n'drop
  • Saving and opening trees to and from files (using Java serialization)
  • Scroll bars! =D
  • Works anywhere Java does with a full-featured GUI
  • Keyboard shortcuts for the most common operations
  • Most constants are stored in an external configuration file, by editing that you may be capable of making the application act real wacky! ;)

The specifications for the application and some code, including the algorithm for rendering the nodes, provided by Jarkko Leponiemi.

Before building this, there was also a prototype made with MFC in C++. This application uses the Model View Controller design pattern.

Things that would clearly still need to be fixed

  • If a user attempts to save a file overwriting another, the application will not ask for confirmation
  • The status bar only shows descriptions for drop-down menu items while the menus are being used with a mouse, not when accessed with the keyboard
  • Usability: there is no undo, and just dragging a node far enough from the tree currently results in total destruction of the node.
  • Further develop exception handling; currently on a quite primitive level

Things to yet be developed

  • More direct manipulation of the nodes' properties
    • ability to edit node text directly
    • a color selection popup menu
  • Undo/Redo capabilities
  • For such a small and simple one, this application takes up a *lot* of system resources. On my 1433MHz AMD machine with 512 MB RAM it runs smoothly, but on the dept. Linux machines moving nodes etc is unacceptably slow. Also, initial memory usage of 16 MB just seems too much. This could be optimized by using the "dirty" variable of the BinaryTree example in the course material - making sure the locations of the nodes aren't  recalculated unless needed. Also, repainting only the areas that have changed would probably be smart.
  • Giving up using absolute units (pixels)?
  • Font and font size changing
  • Printing capabilities
  • More efficient usage of screen real estate. In the current  implementation of the drawing algorithm a node takes up all the horizontal space required for its siblings.
  • Making the application look and behave like a native application in also other windowing systems than Windows
  • "Real-time" response to window resizing - currently the response comes when the user stops resizing
  • Different image files for 16x16 and 32x32 icons - possible in Java at all?
  • Support for XML output and input
  • A command to remove all the children of a selected node
  • It might be smarter to read the values from the config file once to an member variable array and access them via that from everywhere
  • More methods and member variables could probably be private
  • A command in the help menu to show a brief (X)HTML-formatted help either in a default browser (not avalable in Linux =/ ) or a Dialog showing a HTMLDocument, loaded from an external file
  • Strangely enough, although the application icon is a partly transparent PNG image, the CS department Linux machines showed a solid background in the task bar

return to code & design index