You are here -> Thought!

Click the DOWNLOAD button to download (V4.0 - 1669kb). The download process now uses a 'one time download' link to reduce the number of machine/automated downloads.


What is it?

Thought! is one of my oldest application. It allows the rapid creation and manipulation of Structure diagrams. There are two models. The first model is intended for programmers and includes support for Local and System subroutines. The second model is for general purpose type structures. Neither model specifically restricts the usage for the intended purpose.

Thought! is a Jackson Structured Programming (JSP) Editor that enables quick and easy generation of JSP designs.


When I started programming, I 'hacked' code together and then spent a disproportional amount of time getting it to work properly and fixing the 'bugs'. It quickly occurred to me that there had to be a better way! At the time (1970's and 1980's) a lot of work was being done in the theory of Structured Design. most notably by DeMarco, Wirth, Constantine, Yourdon and Jackson (amongst many others). The common theme throughout is the need to plan and design prior to starting to coding.

Of the methods proposed the Jackson structured programming (JSP) method seemed most appropriate for my needs. It is a 'top down' methodology and is probably the simplest to learn and understand. The level of detail is sufficiently flexible to start when there is only a general statement of requirements and subsequently extend it all the way to the detail required at the code level. Whilst JSP was subsequently superceded, the approach remains valid, even when using the last Object Orientated language, Agile, Scrum or other modern methodology, the need to plan and design remains.

A large design structure can rapidly become too complex and confusing and once it exceeds the size of the screen it can become unmanageable. Classical JSP does not include support for System and Local sub-routines, so I added them in to my model.The decomposable system and local objects allows the structure to be organised more logically and the programme flow and control objects to be easily seen and understood within the full context of the design. Sub-routines are common to the structure and can be used and edited anywhere within it.

My first version was written in Commodore V2 Basic and ran on a Commodore C64. There were serious limitations, most notably that I didn't have a printer and the best resolution was only 320 x 240 pixels! It was also very slow and the machine quickly ran out of memory. I subsequently rewrote Thought! in 6502 assembler, the performance was acceptable and it made better use of the memory, but the serious limitations remained.

The first really usable version was written in Mark Williams C and ran on an Atari ST. This relatively affordable machine was powerful (for the time), had a 640 x 400 monochrome resolution and a printer could be attached. Subsequent hardware upgrades and other improvements made this a very usable machine. The Atari ST version of Thought! was by far the most 'advanced' version. It included its own macro language and a task scheduler to allow limited muti-tasking.

A new job and a pay rise saw me moving to an IBM PC in the early 1990's. The realistic choice of operating system at the time being Microsoft Windows 3.0 or IBM OS2. As OS2 was technically far superior to Windows, I went for OS2 and the next version of Thought! was developed under Presentation Manager and Workplace Shell. Many of the Atari functions became redundant and I did not bother with features that I did not use. I did do a port of OS2 Thought! to Windows but it was very prone to locking up or randomly crashing and I never felt that the effort required to work around the Windows OS issues was justified.

I started with JAVA in the late 1990's, mostly as a learning exercise, and really started to get serious with it around 2003-4 when the performance reached an acceptable level for most general programming tasks. Having ported or rewritten Thought! so many times already, the ability to 'write once, run anywhere' was a major attraction. Printing was a nightmare in the early days of JAVA and whilst it has been improved in newer releases it remains a weak area of the language. For a number of reasons, I didn't start on the JAVA version of Thought! until 2007.

Thought! uses the RSyntaxTextArea and Spellchecker libraries, both of which are included in the archive. These libraries are required in order to start the Thought! application. The layout uses Treelayout which produces exactly the same result as my earlier algorythm but saved me time in the java rewrite. The abego license file is included in the archive.

Thought! V1.1 provides the latest versions of RSyntaxTextArea and SpellChecker, saves the window position and size on exit, adds keyboard shortcuts and provides a method of associating the '.tht. extension with the application for Windows users. Linux users can simply associate the extension with the jar file.

Thought! V1.2 fixes a couple of minor bugs and introduces a check for updates. To perform an update simply overwrite the old files with the new ones.

Thought! V2.1 fixes a couple more bugs and makes minor changes to make Thought! a bit more usable. To perform an update simply overwrite the old files with the new ones. An option is provided in 'Preferences' to check for updates on startup. Update: Downloads hit 9501 in March 2015.

Thought! V3.0 incorporates an unlimited Undo/Redo facility for the Programmers Model and enables management of System and Local Subroutines.

Thought! V4.0 Now built for Java 11. Everyone should be using this version as a minimum. It was released in September 2018 and contains important fixes and security updates. If you are updating from a previous version, copy Thought.config to the new folder.

Future Updates

I may re-introducing an UNDO function for the General Model at some point. The original UNDO function disappeared when I removed the macro language in the first Java version. The majority of actions do have confirmation prompts (which are enabled and disabled in 'Preferences').


The application is programmed in Java and requires Java 11 or newer to be installed on the computer it is being run on.

Java can be installed from:

No installation of Thought! is required. Simply copy the contents of the Thought '.zip' file to a convenient folder on your computer to which you have write access. It can be run directly by double clicking on it or from the command line by changing to the installation directory and entering: java -jar Thought.jar

For Microsoft Windows users a batch file and icon have been provided. 'Thought.bat' can be associated the '.tht' file extension so that Thought structures can be opened from Windows Explorer. See your operating system for documentation on how this is done.

A 'Thought.config file with default settings will be created in the same folder on first execution. It is recommended that the user checks the 'Preferences' the first time the application is executed.


If you are not familiar with JSP I suggest that you read up on the subject. There are also tutorials available on the Internet, easily located using any of the search engines.

As an introduction to computers, programming and software design you could do worse than to look <here>. Please note that I am not affiliated in any way to the site.

When executed, the Thought! application will be displayed. The default model can be set in the Options->Preferences dialog. Click on the links below to get basic instruction for using Thought!

Programmers Model

General Model


Thought! The application name
Structure A Thought! structure diagram
Object A component of a Thought! Structure
Action icon A selectable icon that performs a action on a Thought! Structure.
Main Object An Object which has no Parent
Child Object An Object that appears below another Object
Parent Object An Object that appears above another Object
Basic Object An Object that does not have any hidden children
Named decomposable Object An Object that is unique in a Structure which can have hidden Child Objects
Decomposable Object An Object which can have hidden Child Objects
Decomposed Object The display of hidden children belonging to a Decomposable Object


SabreTech Associates Ltd. Lanview, Bunker Street. Freckleton. Lancashire PR4 1HA