Platforms
---------
- the .nib files use the format for Mac OS X 10.2 and later. Therefore
  but also because various Cocoa classes available only on 10.2 or later
  are used) the application will not run on pre-10.2 systems

.nib info
---------
- in MainMenu.nib, a transparent button is hidden behind the main table.
  This button is activated when the user presses the "Backspace" key
- the MainWindow instance icon in MainMenu.nib indicates that a child
  has a bad/missing connection. This is normal: there is no connection
  for the target of the NSTextField instance that acts as a label for the
  table

GUI design
----------
- it is by design that the table cannot be sorted, otherwise the
  row index could not be guaranteed to match the correct item in the
  model's item list

Implementation
--------------
- error handling concept: whenever a severe unexpected error situation
  appears, an NSNotification is sent to the controller with a description
  about the error condition. The controller shows a dialog to the user,
  telling her that something bad (tm) happened and including the error
  condition description. The dialog offers the user to continue running
  the application, or to shut down the application.
- it is important that in the constructor of AceExpanderController the
  following order of things is retained:
  1) Register for applications specific notifications, especially the
     ErrorOccurredNotification. All other classes require that a central
     error handling instance is present already at a very early stage.
  2) Create AceExpanderPreferences right afterwards; the existence of
     sensible user defaults in the NSRegistration domain is also a central
     requirement for a lot of other classes
- AceExpanderModel.setInteractive(true) should be called only during the
  application's launch sequence, or immediately after an initial expand
  thread has finished.

Info for later implementation
-----------------------------
- the maximum number of entries in the OpenRecent menu is determined by the
  value of the user default NSRecentDocumentsLimit. The value is of type
  Integer.
- NSPerformService is available only in ObjC as an ApplicationKit global
  function

Ideas
-----
- better "list archive" concept:
  - when the user selects a single item for the first time, spawn a
    background thread and process in the background
  - if the drawer is open, indicate the scan-in-progress by a spinner
  - if the scan fails, indicate this
  - when the scan finishes, notify the controller so that it can
    give the table a hint to update itself
  - when a single item is selected, show the cached content list
  - provide an update button, so that the user can update the list
  - still an option "verbose?" -> probably yes
