ToDo is a java application to keep track of chores and other items that you need "to do". It can probably be extended to other organizational applications where the data is heirarchical in nature. It was developed out of my own need for a way to organize and prioritize my tasks at work. There are office organizer packages that are designed around contacts, calendars and scheduling. At least as of this revision that is not what ToDo is about. It is more about graphically being able to organize and prioritize tasks. It allows the user to attach a due date and priority to items as well as to check them off once completed, so that the user can monitor progress on a task. ToDo is freely available, although any donations will be gratefully accepted.
ToDo is primarily developed on the Solaris UNIX platform, but the ports to Macintosh and PC are trivial and current versions of each platform will be maintained off of this website (at some point). Because it is java, there is a little bit of overhead involved in loading java. Hopefully this process will speed up a bit with future revisions of the JVMs and JITs on each platform.
When upgrading to updated versions of ToDo, just make a copy of the .todo data file in the new applications directory. Keep a backup copy in the old ToDo application directory. That way if there is any problem with different data formats (see technical info below) you can export the data from the old version and import it into the new version.
The data for ToDo is kept in a .todo file in the current directory. That means that where you start ToDo from matters. I did this on purpose so that I could manage multiple/separate lists. The label used at the top of export formats is fed in through a command line arg that is the current directory in the startup shell that I include. That way if I change to a directory/folder called "work" and run my wrapper shell there and then export the list to another format, the label will say "Todo list: work".
Version 1.2.1b (2005-02-03) Modified the argument handling to allow user to specify a data file via the command line instead of the default ".todo" in the current directory. Use the prefix of that filename (up to first ".") as the prefix for the export format filenames. Also slightly modified the HTML Table export output format. I have also started work on a rudimentary install script for unix platforms.
Version 1.2.0 (2004-07-07) The original version of ToDo (up to 1.1.2) was developed by Aaron Martin. Version 1.2.0 incorporates changes made by Robert Mackie. We are discussing getting the code into the open source community to allow additional development.
Any and each item may have nested subitems (or subcategories). The subitems may have nested subitems of their own and so on and so on, in a heirarchical or tree fashion. There is no software imposed limit to the number of subitems or the level to which subitems can be nested. However there is a practical limit due to the limited amount of space on the screen. The column width is fixed and subcategories take up a certain amount of horizontal space for each level that you go down. Future versions of ToDo will have adjustable column widths and scrollbars on the main frame. I also anticipate allowing new frames to be opened for a single subtree of items.
Double clicking on an item will bring up the editor window that allows you to assign priorities, due dates and descriptions. The date is really just a text field, there is no specified format as of this version. You can put anything that you want in it. Future revisions may specify some formats for this field so that calculations can be made on the fields. This addition would allow ToDo to warn users of impending deadlines etc....
List ordering, as of v1.0.8, is done by drag-and-drop. The user just needs to select and drag an item to its new position to move it. The destination is hilited in one of three places depending on where it is actually going to be placed relative to that item. The hilight will be a line just above the destination item to paste the selected item at the same level as and just before the destination item. The hilight will be a line just below the destination item to paste the selected item at the same level as and just after the destination item. Hilighting the main portion of the item (ie: over the text) indicates that the item will be pasted into that item. That is, it will become a subitem of that item. It will be pasted in after any other subitems of the destination item.
I have included a few interesting export modes including HTML and PostScript. These allow you to post lists on an web site or to print lists to a PostScript printer and get good resolution on the fonts.
2000 - Macintosh version has some intermittent problems with ghosting during repaint. Probably a bug in MRJ2.0. This is not a problem in Mac OSX and may not be an issue on Mac OS 9.2.x.
2003 and previous - Redraw logic for main window resizing is not great. In some cases, the base image is enlarged and in others its not. I think this may relate to early bugs in Xview implementations of java on the Sun, but I have not revisited it in some time. I should probably just make the image as large as required for the current lines, or the size of the window frame, whichever is larger.
Bug reports should be made to aaron@crustal.ucsb.edu
ToDo was originally developed using JDK 1.1.5 on UNIX and requires Java 1.1 event handling. Version 1.2.0 was developed using JDK 1.4.x and requires swing as well as the Java 1.1 event handling.
The unix version requires that the user modify their CLASSPATH env variable. I include a wrapper shell that sets this. That way users can just modify the classpath var in the shell and then put the shell somewhere in their path.
2000 - I am using JBindery from the SDK package on Mac OS 8.x to create a wrapper application and a virtual classpath. It seems to work quite nicely. The Mac version requires Macintosh Runtime forJava (MRJ2.x)"to be installed on the Mac. It looks like MRJ2.0 requires MacOS 8.x on a 68040 or PowerPC with 8Mb of RAM available and 30Mb of disk space. 68040 microprocessors must be using 32 bit addressing. It looks like there is a custom install option for systems running MacOS 7.6.1. That configuration has not been tested. MRJ seems to be installed on most newer Macs.
2003 - Unix JAR file straight from Solaris build works fine on Mac OSX!
I expect this port to be pretty straightforward but havent attempted it yet.
This section is more of a technical description of the layout of the program and its various objects. Most users probably won't be interested in it. But feel free to read it :-)
The main class is the todoItem class. It contains information about the given item, possibly including a linked list of todoItem objects. There is one master todoItem object that is created when ToDo starts up. This item is not normally accessible to the user and is not seen. All the top-level items seen by the user are subItems of this root todoItem object. A frame is created to display this root object.
The ToDo data file is created in the current directory and is called .todo. This file is merely a serialized version of the root todoItem object. This makes it easy to save and reload the information at startup time, but may cause problems if there are any major changes made to the class description. Thus the need for an export format.
There is no warranty for this software implied or otherwise. Use it at your own risk.
Downloads are no longer available here and should be done via http://sourceforge.net/projects/todo