Project cats Notes

Title: cats - Computer Assisted Traffic System
Author: Rodney Black
Description: A CTC panel for Pat Lana's Crandic Ry

Revision History

Date Version Designer TrainStat Comments
August 24, 2020 2.41 2.14 1.07
  • Synchronized CATS with Operations interfaces. Bug250.
  • Synchronized CATS with JMRI devices. Bugs 229, 246, and 249.
  • Upgraded designer to use JDOM 2. Bug 247.
  • CATS notes on the system console when a file is included. Bug 233.
  • CATS no longer uses the profile of "simpleConfig2" Bug 220.
  • Fixed problems with crew after resuming a session. Bug 219.
  • Added memory to CATS and designer to remember the last folder used. Bug 184.
  • Reworked recognizing turnouts sharing a decoder address, field locking and unlocking turnouts, and reversing local turnout operations. Bugs 39, 157, and 213.
January 6, 2019 2.40 2.13 1.07
  • Fixed a data synchronization issue on TrainStat. Bug 217
  • I am not sure why COLORDEFINITION was not being created with some JRE's, but I made a change. I can't test that it works. Bug 237.
  • Changed CATS fast clock to conform to JMRI interface, so CATS now works with JMRI 4.14. Bug 238.
  • Created MacDesigner.csh from old designer.csh to explicitly name libraries. Bug 239.
  • Restored approach lighting. I think that it may not restore signals properly when testng signals. Bug 240.
  • Restored ability to save JMRI panels under CATS and reload them . Bug 241.
  • Updated the CATS Linux and Mac launcher to be similar to the JMRI launcher.
January 19, 2018 2.39 2.13 1.06
  • Forgot to replace cats.jar in release2041, so release2042 has correct version.
January 15, 2018 2.39 2.13 1.06
  • Fixed problems when JMRI interfaces changed between release 4.8 and 4.10. Bug 234.
  • Reworked designer launch scripts so that libraries are not explicitly mentioned. Bugs 223 and 225.
  • Reworked CATS launch script to leverage off JMRI launcher. Bug 224.
July 16, 2016 2.38 2.13 1.06
  • Fixed a problem when ending CATS where it would not end cleanly. Bug 230.
  • Fixed a problem where CATS does not initialize JMRI Logix when included in the CTC panel. Bug 231.
March 20, 2016 2.37 2.13 1.06
  • Fixed some unintentional changes in 2.36 involving unbonded or end of track.
  • Removed telling Operations when a rain terminates.
February, 14, 2016 2.36 2.13 1.06
  • Adapted to changes in JMRI 4.0.1. See bug 226.
February, 14, 2013 2.34 2.13 1.06
  • Adapted to changes in JMRI 3.3.1. See bug 222.
July, 29, 2012 2.33 2.13 1.06
  • Checked against JMRI 3.0.
  • Added tighter integration with Operations so that CATS requests a train's number of cars, length, and weight everytime it moves.
January 27, 2012 2.32 2.13 1.06
  • fixed bug 209 - cannot add a new name to a section.
January 23, 2012 2.32 2.12 1.06
  • fixed bug 208 - when editing switchpoints in designer, only one leg is saved.
January 2, 2012 2.32 2.11 1.06
  • Updated CATS for JMRI 2.14 (and later) - CATS devices (IOChains, Metered Sensors, etc.) were broken by changes in JMRI abstract manager.
  • Integrated with JMRI Operations so that CATS moves trains in Operations and requests current train length.
  • Keys work again in CATS - item 205.
  • Lunars can be specified in designer and CATS send the correct commands to JMRI - item 203.
  • Changed compiler settings to same as JMRI and removed warnings and errors.
February 28, 2011 2.31 2.10 1.06
  • Fixed a bug in CATS working with TrainStat - multiple "Status" fields sent in each train.
  • Added editing to TrainStat, which required changes in CATS.
  • Beefed up local turnout control so that Track Authority is needed - bug 202.
  • Reworked train label positioning so drag-n-drop is reported to TrainStat.
  • Item 189 - saving TrainStat saves the position on the screen.
  • Item 187 - Replay may duplicate items.
  • Item 135 - all crew are listed when editing crew under CATS and TrainStat.
February 28, 2011 2.21 2.10 1.06
  • Fixed a bug in CATS working with TrainStat - multiple "Status" fields sent in each train.
  • Added editing to TrainStat, which required changes in CATS.
  • Beefed up local turnout control so that Track Authority is needed - bug 202.
  • Reworked train label positioning so drag-n-drop is reported to TrainStat.
  • Item 189 - saving TrainStat saves the position on the screen.
  • Item 187 - Replay may duplicate items.
  • Item 135 - all crew are listed when editing crew under CATS and TrainStat.
November 29, 2010 2.30 2.10 1.05
  • Replaced cats.bat to work with JMRI 2.10.
  • Replaced cats.csh to work with JMRI 2.10.
November 26, 2010 2.30 2.10 1.05
  • Made CATS compatible with JMRI 2.10 - item 180.
November 22, 2010 2.20 2.10 1.05
  • Fixed bug 191 - shared edges are lost on being read in from a file.
  • Fixed bug 192 - a station disappears when the station dialog is invoked.
  • Made all three programs compatible with Java 1.6.
  • Fixed bug 198 - as long as JMRI supports Java 1.5, so should CATS.
March 28, 2010 2.19 2.09 1.05
  • Added libraries to designer. This may fix bug 163.
  • Kept track of last file used in designer, so the next file operation starts in the same folder (bug 91).
  • Removed dead code for saving files in designer.
  • Added a shallow copy to designer for the "copy" operation.
  • Fixed a bug when deleting a row or column in designer.
  • Fixed several bugs in clear, paste, and undo in designer (bug 93).
  • Added track colors in designer to draw attention to problems.
  • track ends are more carefully checked (bug 129).
December 31, 2009 2.18 2.08 1.05
  • Changed the Windows scripts to accomodate changes in where JMRI places libraries - bug 178.
  • Changed the names of some libraries required by JMRI - bug 179.
December 4, 2009 2.18 2.08 1.05
  • Fixed a bug in TrainStat where band sizes were not saved - bug 159.
  • Fixed several bugs in TrainStat where colors could not be set from menus - bug 177.
November 20, 2009 2.18 2.07 1.04
  • Fixed bug 172 - wrong version of log4j was packaged with TrainStat.
  • Added a color to panel signals so that the color of an "idle" signal (one not involved in a route can be user defined (item 173). This permits CATS to look more like a modern CTC panel.
  • Fixed up calls to log4j, introduced in the previous release - bug 174.
  • Fixed a bug introduced in CATS 1.22 in which a route can be created up to a turnout that is not in correspondence (moving) - bug 175.
  • Fixed a bug introduced in CATS 2.17 in which fonts eat 100% of the CPU cycles - bug 176.
September 20, 2009 2.17 2.07 1.03
  • Added some protection in designer for reading an XML file and encountering an unknown tag.
  • Fixed a bug in editing Chains in designer introduced in 2.06 - bug 165.
  • Created a simplified Swing table model.
  • Added user definable colors and fonts - item 101.
  • Removed some Java 1.5 errors from CATS.
  • Fixed a bug in designer when editing a table column width would cause a cast error - bug 166.
  • Fixed a bug in designer where a trains file (or crew or job) would have to be loaded twice - bug 167.
  • Fixed a bug in designer where a crossing would lose its preference after saving - bug 168.
  • Fixed a bug in software control of flashing signals, where the signal would remain solid if the off state was not defined - bug 169.
July 21, 2009 2.16 2.06 1.02
  • Updated to work with JMRI 2.5.4 and later.
July 4, 2009 2.15 2.06 1.02
  • Fixed a bug in CATS where the lock would not clear on a shared, locked decoder after the turnout moved - bug 155.
  • In TrainStat, added a listener to the band fonts so that they immediately update when changed - bug 156.
  • Added "pretty formatting" to saved train, jobs, and crew files.
  • changed layout manager in designer when editing tables so that only the tables resize, the button spacing remains fixed.
  • added an alignment attribute for text in cells - bug 150.
  • implemented override of local turnout commands, when CTC and locked - item 140.
  • added "WIDTH=" and "HEIGHT=" to TrainStat to set Window geometry on launch.
  • fixed some problems with hidden track - item 161.
  • added a trace capability to designer for determining where a problem exists in an XML file - turn on DEBUG in default.lcf.
  • Trapped any invalid SHARED attributes in designer. These may be created when grid tiles are deleted - bug 117.
  • Added option for edges with mutiple tracks to be points or a crossing - item 84.
  • Fixed object synchronization error in TrainStat by moving IP address information to the end of the XML file - bug 160.
February 2, 2009 2.14 2.05 1.01
  • fixed a bug when a report of a turnout moving is received while a reservation goes through the block. The report kills the reservation, moves the points, then resumes the reservation. Bug 147.
  • When moving the OS point code to spurs, a bug was introduced that made APB and ABS OS sections always appear red. Fixed bug 148.
  • Reworked how CATS decides to instantiate a device handler so that duplicates are not created. Bug 149.
  • Applied Track Authority to spurs so that fascia lights (or other listeners) would be notified when a spur is unlocked.
  • Fixed a bug when specifying the TrainStat configuration file in the execution script.
  • Changed the TrainStat "NETWORK_ADDRSSS" XML tag to "NETWORK_ADDRESS"
  • Added a test into TrainStat to ensure the configuration file was created by TrainStat.
  • Fixed a bug in TrainStat where bindings editing did not work.
  • Fixed a bug in TrainStat where loading a configuration file did not change the save conditions (DefaultItem) in a sequence, so a save was requested.
  • Fixed a bug in TrainStat that prevented setting the background color and font of any row, including the heading.
  • Fixed a bug in designer when trying to create a chain - invalid address 0 error. Bug 152.
  • picked up JMRI names, current as of Jan. 29, 2009, for both designer and CATS.
  • designer no longer enforces numeric addresses - needed for CBUS support - bug 151.
December 28, 2008 2.13 2.04 1.00
  • added some preventative code for bug 134.
  • fixed a bug where trains that had completed their work could be assigned to a crew from the crew menu.
  • added the signals from OS points to spur points so that the dispatcher could be prevented from moving turnouts in places like yard entrances.
  • reworked how signals pass information between each other for bug 56.
  • fixed title on crew edit window in CATS for bug 139.
  • changed the menu title in CATS to record actions from "Save" to "Start Recording" for bug 142.
  • "Start Recording" saves train, job, and crew state, so recording does not have to be started at the beginning of the session, bug 141.
  • fixed changing an extra to a non-extra for bug 143.
  • added Train Status client.
July 15, 2008 2.12 2.03  
  • fixed a bug introduced in 2.1 CATS on crossings. If both tracks on a crossing have the same detector address, the full block may not show as occupied. Bug 130.
  • fixed a bug when identifying when a train label has been selected. Bug 131.
  • added a keyboad accelerator for flipping between labeling trains by their symbol and by the engine number. Use control+e. Bug 132.
  • protected against a Null Pointer Exception when moving a train label.
  • arrow keys move the cursor in designer and may scroll the screen if it would move the cursor off the screen.
  • enhanced designer so that the screen does not move when inserting or deleting a column or row.
  • fixed some JDOM problems with classpaths under Windows. Bug 133.
April 4, 2008 2.11 2.02  
  • corrected a bug with decoder locking. I could not determine the exact cause, so I reduced the possibility of it happening by keeping a list of only shared decoders. Bug 119.
  • added a minimum field width to all text entry areas in designer so that the areas would show more than a few characters.
  • reworked the pop-up window for the right mouse button when positioned over a train to create a Train Table. The old window was moved to the middle mouse button because the table did not always propagate changes to the crew (see next item).
  • I reworked the status bits in Trains which fixed some bugs when tying down trains (colors and releasing crew). Bug 71.
  • Used the BooleanGui class for selecting between engine numbers and train symbols for marking trains on the panel.
  • added action to the Accept button on a table so that it completes any cell editing. This should take care of problems where the mouse focus must be moved before pushing Accept. Bug 126.
  • Added some code to automatically change the cursor back to the default every time a pop-up is closed. Appearance->Refresh Layout also restores it to the system default.
  • added some additional tests in APB when looking to create a reservation. If there are two possible entrances into the block and one is fouling, the fouling one is placed at a lower priority.
  • added an enhancement so that when a blocking condition is cleared, the detection block looks to see if there is a single reservation to enter the block. If so and if it is not through a control point, a reservation is created. This is useful with trains that have only the engine and caboose detected. The scheme could use a little more work because the reservation is based on local conditions and an adjacent block could be preventing the reservation from being seen. Bug 120.
  • fixed a bug in designer where a Block definition was jumping a Block boundary when the boundary was not on an adjacent edge.
February 2, 2008 2.1 2.01  
  • fixed a bug in advance indications where they were not clearing properly.
  • reworked crossings so the crossing tracks are not in the same block. This affects crossings. If you have crossings (diamonds) defined, you will need to load your panel into designer and be sure the tracks in the crossing are included in different detection blocks. Double and single slips should not be affected because the switch points ensure that the crossing tracks are included in blocks.
  • added filled circles in designer to mark block boundaries with intermediate signals.
  • whenever a section repaints, the sections on either side also repaint because some of the section contents hang out into adjacent sections.
  • use JMRI SignalHeads.
  • added a Format when writing XML files so that they contain indentation and line feeds.
  • fixed a bug when an intermediate protects an OS section, advance did not propagate through the OS.
  • fixed a bug when an intermediate protects an OS section, the intermediate would attempt to set a reservation, even if the intermediate was red. If the reservation was through the diverging route, the green and arrow would appear on the normal route.
  • added control-T short cut to CATS to pull up trains table. Bug 27.
  • added control-J short cut to CATS to pull up jobs table.
  • added control-C short cut to CATS to pull up crew table. Bug 28.
January 13, 2008 2.0 2.0  
  • modified both programs to use jdom.jar instead of jdk-jdom11.jar. The latter was really old and created for Java 1.1. JMRI moved to the former with JMRI 2.
October 7, 2007 0.40 0.27  
  • added "Stop and Proceed" indication. It will be used in the future to protect leaving signaled territory to unsignaled (including end of layout).
  • reworked the aspect definition table layout in designer so that it would fit better on a small screen.
  • added "Advance Approach", "Advance Limited Approach", "Advance Medium Approach", and "Advance Slow Approach". These are optional, enabled by checking a checkbox in the Advance column in the aspect definition table. If there is no closer indication, they tell an engineer that he will see a Stop two signals after the one showing Advance.
  • added a trace flag on decoder locks to CATS.
  • fixed a bug in fleeting where each occupy/unoccupy would add a lock to a decoder when the reservation was renewed, but only one lock would be cleared when the reservation was removed.
July 31, 2007 0.39 0.26  
  • fixed a bug where if the first block in a route is occupied, then unoccupied, clicking on the signal yields a "reservation conflict".
July 13, 2007 0.38 0.26  
  • reworked how a layout is loaded. There was a race condition when a screen size was included in a layout description. The Swing tried to resize the window before the internal data structures were initialized and a Null Pointer Exception resulted.
  • corrected how signals work. Intermediates are on the layout, but not the panel. Control Points are on the panel and do not have to protect interlocking plant. Route reservations flow between control points, not interlocking plants.
  • added a "traffic stick" to virtual signals and intermediates, so that trains can follow each other.
  • JMRI user names are added to NamedBeans (sensors, lights, etc.), but CATS still needs JMRI system names for defining beans.
  • fixed a bug seen by Mac users that prohibited the session log from being saved because the "showOpenDialog" was called, rather than the "showSaveDialog".
  • fixed a bug where an error would be thrown if a file with a panel signal with 0 heads was saved. This resulted in a 0 length file.
  • fixed a bug when loading an XML file from the command file. The load routine was not running in the Swing Event Dispatch Thread, but was altering Swing objects. The bug manifested itself as "out of memory".
  • reset the default refresh delay in CATS back to 0 msec. Setting it higher did not resolve any flow control problems and only made the panel load more slowly.
  • fixed a bug in the format of how sessions are logged. If a train symbol or crew had a space in the name, the replay code would get confused. Conseqently, spaces are no longer accepted as field separators in recordings. Only tabs are accepted as field separators. This means that old recordings can not be loaded into this version of CATS.
  • fixed a bug in initialization. All metered lights were set to the default (thrown) when the light was created. This caused turnouts to be "thrown" when the panel loaded.
  • fixed a bug when a turnout was thrown locally, the "selected" track in CATS was not updated. Consequently, the dispatcher might have to throw the turnout twice.
  • added a menu item to CATS under Appearance->Test Layout to set all computer controlled turnouts ("automatic switches") to the straight route.
April 20, 2007 0.37 0.25  
  • added an option to paint the base of light signal icons as an inverted tee.
  • added an option to turn off train direction arrows.
  • added an option to turn off horizontal shrinking.
  • conditioned the generation of a route with APB to control points.
  • added an option to turn off automatic determination of where to break a row of tracks in CATS. The row goes to the edge of the window.
  • added decoder locking in CATS, so that if two turnouts drive the same decoder address and one is locked (route, occupied, OOS, track authority), the other cannot be selected either.
  • fixed a bug when listening to a JMRI Turnout where the previous value was read, rather that the latest.
  • fixed a bug for sensors where throw and closed were reversed between adapters and monitors.
  • changed the order in throwing points where the decoder command was sent before the screen was updated. If a selected report listened for the decoder message, it would be executed immediately after the command was sent, which would update the screen.
  • fixed a bug in reading the layout files (both CATS and designer). A space in the middle of a text block would sometimes be removed. Also, objects would sometimes recive only the first segment of a text block.
  • fixed a bug in replay causing a null pointer exception when a crew member was reassigned.
  • fixed a bug in replay so that a train would be marked as tied down when the crew was assigned to no train.
  • doubled the delay range for refreshing the screen and on the Loconet metering.
  • added updateAll() to MeterLnSensorManager so that the update request is put in the queue, behind outstanding commands. This could help spread out the Loconet traffic when loading CATS and refreshing the layout.
March 30, 2007 0.36 0.24  
  • changed the structure for holding layout items from a Vector to an ArrayList.
  • added layout items at the front of the ArrayList to give train labels first shot at being selected by the mouse.
  • added setting and clearing OOS to the session log.
  • added granting and releasing track authority to the session log.
  • added replay for playing back session recordings.
  • fixed a bug where a 0 length file could overwrite the backup file.
  • fixed a bug where "LT" decoders were misnamed "LN" decoders in both designer and CATS.
  • enhanced APB so that when a block is unoccupied, it checks the connecting block where the train entered from for another route. This permits a dispatcher to run one train behind another without panel signals.
February 9, 2007 0.35 0.23  
  • fixed a bug in monitoring a JMRI Memory Object - the trigger (new value) was incorrect.
  • fixed a bug in requesting that a turnout be thrown. The Section was not informed that a new Track was selected.
  • added MeterLnReporter for OPC_SW_REP messages.
  • fixed up MeterLnLight so that it can listen for OPC_SW_REQ messages.
  • fixed a bug where MsgFilter was always created. Now it is created only when needed.
  • changed the "adjustments" from 1 millisecond intervals to 5. Most OS timers have a minimal resolution of 5 mSec.
  • fixed bugs in deleting a row from the decoder definition table and the Chain table.
  • added a warning when CATS encounters switch points for which no normal route is defined.
  • fixed a bug in the designer Crew and Job tables causing a Class Cast Exception when adding a new crew (job) to a blank table.
  • fixed a bug in designer when changing the type of a field would cause a class cast exception.
  • fixed a bug in designer where a change to a font would be saved the first time the layout was saved, but the change would be lost after subsequent saves.
  • fixed a bug in designer when editing a new file, opening another, and not saving, which appeared as "HOURSLIMIT" not known and an NPE.
  • adjustments (e.g. debounce) can be set in designer and stored in the XML configuration file.
  • the size and location of the dispatcher panel can be specified in designer and honored in CATS.
October 16, 2006 0.34 0.22  
  • completed the code for supporting software flashing. The rate was not being saved by designer.
  • fixed a bug where the metering of Loconet messages when using MeterSensor of MeterLight was bypassed.
September 25, 2006 0.33 0.21  
  • fixed a bug introduced in CATS 0.32 when a signal was not on the frog of an OS section.
  • fixed some bugs that have been around for a long time where the protected speed to not propagate through an OS section.
  • added keyboard shortcuts to bring up Crew, Job, and Train windows.
August 9, 2006 0.32 0.21  
  • fixed a bug in color when tying down an unassigned train.
  • made engine numbers an alternative to train symbols for train labels.
  • added confirmation dialog when exiting or closing the CTC JFrame.
  • renamed IOSPecList to IOSpecChain and generalized it so any output can trigger a chain of decoders firing.
  • added a variable delay between firing decoders in a chain.
  • added software flashing of lights to supplement hardware flashing
  • added a master setting for flash rate.
  • added approach lighting.
  • added ability to load a JMRI XML file when loading CATS file.
  • fixed a bug where a reservation would not propagate down a string of blocks without signals.
  • fixed a bug that permitted conflicting reservations across a crossing.
  • reworked how JMRI prefixes are recognized. This should be more user friendly and make it easier to add or change the prefix. It also makes CATS less dependent upon a particular version of a JMRI library. In the process, the AbstractLnLight, LnLight, LnLightManager classes were removed because they were no longer needed.
  • added reading of the layout when an AbstractSensor (e.g. LnSensor) is defined. This initializes the state of the panel.
  • when saving a panel under the designer, if a file with the same name exists and is non-zero in size and "overwrite" is selected, the existing file is renamed to the same name with".bak" appended. Thus, the existing file is backed up. There is only one level of backup and the current file is backed up on every save.
  • added some keystroke shortcuts to designer.
July 1, 2006 0.31 0.20  
  • added Station attribute to Block, so that CATS can take files created by the latest (20) designer version.
  • N Scale convention version.
April 26, 2006 0.30 0.20  
  • fixed a minor bug in CATS where crew was not removed from a terminated train.
  • fixed a class exception bug in designer involving adding new records with boolean or integer fields.
  • added station to Block, in preparation for Train Status.
April 6, 2006 0.29 0.19  
  • fixed a minor bug where the Block a train enters is not recorded (though the section coordinates are)
  • rewrote train tracking
  • added manual tests to throw and close the decoders for each turnout and restore them in "refresh layout"
  • put a GridLayout on the edit menus so now they can be resized
February 5, 2006 0.28 0.19  
  • scrubbed through Eclipse
  • fixed bug where crew cannot be deleted through crew screen
  • fixed null pointer bug in designer when an existing table is loaded, a field is added, and the table is saved
November 20, 2005 0.27 0.18  
  • CrewStore was not being written in saving file.
  • added a time on duty field to the Crew record.
  • added routines for computing minutes after midnight.
  • added Crew Hours support.
  • saved under CVS and distributed
November 11, 2005 0.26 0.17  
  • removed the artificial LL prefix and replaced it with LH.
  • added an indeterminate state for turnouts.
  • reworked JTable menus so that headings could be changed, fields could be reordered, fields could be hidden, and fields could be added.
  • changed default value on Loconet governor from 0 to 10.
  • made all visible signals a control point under DTC.
  • removed track reservations on a block when the layout reported that a turnout in the block moved.
  • beefed up train tracking by looking at the reservation state of the block edge, as well as the reservation state of the adjoining block edge.
September 8, 2005 0.25 0.16  
  • added turn off for an IOSpec.
  • disabled LOCKOFFCMD and UNLOCKOFFCMD because they are handled by the above fix.
  • added PropertyChangeSupport to Adjuster.
  • reworked Logger so that it timestamps when it is created; it has a method for asking if it is enabled; it has some global tags for identifying what is being saved.
  • hid the LogQue, so all queuing goes through timestamp, which timestamps the message.
  • added support for job assignments.
  • made the metered devices defaults when no JMRI prefix is seen.
  • refresh screen also restores the default cursor.
  • made the file menus start in the directory the command is invoked in.
  • added XML file name filter for those file choosers requiring an XML file.
  • added DTC.
  • added a fast clock selection option in appearances for logging using the fast clock timestamp.
  • fixed a bug in receiving Loconet messages where CATS was looking at the old value in a property change event.
  • Rocky Ops 2005.
July 29, 2005 0.24 0.15  
  • added job positions to the XML file.
  • checked XML file format version and pop up a warning if CATS cannot handle the format.
  • created a metered interface to the Loconet.
  • restored the Loconet message distributor.
  • added creation of jobs screens.
July 1, 2005 0.23 0.14  
  • opened a gap on the current route through a turnout while waiting for the selected report.
  • increased the sleep value when refreshing the layout.
  • added an error popup in CPEdge when a reservation could not be made.
  • added a factory for creating trace flags.
  • added a factory for creating numeric variables that can be set from the menu bar.
  • made the delay between sending commands when refreshing the layout to be variable.
June 17, 2005 0.22 0.14  
  • replaced custom XML writer with XMLOutputter so special characters are handled properly.
  • added separate callboards.
  • added separate lineups.
  • batched up screen updates to fix delayed painting problems.
  • implemented fleeting.
  • enabled train tracking as a default.
  • changing the appearance of something (except tile size) does an automatic screen refresh.
  • CTC signal icons without physical signals are colored "dark" to distinguish them from those with physical signals.
  • default for "dark" is grey, not dark grey.
  • accepted APPROACH as an AspectMap attribute.
May 29, 2005 0.21 0.13  
  • The sense of LnLight was backwards. "Closed" should generate the same Loconet message as "ON".
  • The LightMonitor was looking at the old value, not the new.
May 17, 2005 0.20 0.13  
  • cleaned up IOSpecs for generalized JMRI system names.
May 6, 2005 0.19 0.12  
  • generalized I/O specifications to include recognized JMRI system names.
February 27, 2005 0.18 0.11  
  • fixed bug where Track and Time was being superceded by other blocking conditions.
  • completed crossings, single slips, and double slips.
  • fixed bug in arrow heads on vertical lines.
  • copies to John Parker, Patrick Tillery, and Bruce Faulkner.
February 20, 2005 0.17 0.10  
  • fixed CATS to set the blocks on a crossing correctly.
  • changed title of JMRI Panel to "JMRI Panel".
  • copy to John Parker
January 23, 2005 0.16 0.10  
  • fixed a bug in designer where Block definitions were not propagating completely
  • added the concept of a crossing to designer so any section with both a horizontal and vertical track contains a crossing.
  • copy to Patrick Tillery
  • copy to Pat Lana
December 23, 2004 0.15 0.9  
  • fixed null pointer bugs in expectingTrain and notExpecting Train.
  • added test in automatically moving a train when two occupied reports are received for a block without an intervening unoccupied. Without this, the train label would move backwards.
November 24, 2004 0.14 0.9  
  • fixed bug in placing pop up Dialogs so they stay on the screen.
  • added signal test
  • fixed bug where screen size was computed from wrong component.
  • added APB.
  • added train tracking.
October 4, 2004 0.13 0.9  
  • activated speed indications
  • reworked turnout route messages (made only commands a list)
  • added support for local turnout requests and reports
  • sent to John Parker
September 11, 2004 0.12 0.8  
  • put block name on title bar of block menu pop up
  • removed mouse release debug message in Screen
  • added a menu item to refresh the signals on the layout
  • slowed down the rate messages were sent during startup
September 9, 2004 0.11 0.8  
  • converted crew list to an array for call to JListDialog so that the JDialog would be smaller
  • added another JListDialog for an array of fixed strings - I couldn't get ToolTips to work right without redoing mouse handling
  • can double click on JListDialog pop-ups
  • reworked recording train movements. Record by block name, then Section information. Record position and drag and drop movements.
  • fixed bug in logger where LThread was not created
August 10, 2004 0.10 0.8  
  • added Version identification in XML files
July 24, 2004 0.9 0.7  
  • added Routes
  • fixed up coloring of occupied dark blocks
  • added complexity to Indications
July 10, 2004 0.8 0.7  
  • send decoder commands to move turnouts
  • send decoder commands to control lock/unlock lights
  • converted text to JLabels
  • train labels occupy/unoccupy blocks in dark territory
  • copy to Patrick Tillery
  • copy to Bob Jacobson
May 28, 2004 0.7 0.7  
  • ABS and CTC signals
  • detection
  • train roster
  • crew
  • used at RMR convention
  • copy to Patrick Tillery
  • copy with Pat to NMRA national in Seattle

Things to do...

Items in Italics have been fixed.
  1. ArrayIndexOutOfBoundsException 1 - Screen.paint() line 515, Screen.inBand() line 433.
  2. Need to paint background after menus disappear, Window moves, etc.
  3. add appearance items for fixed width, best fit on width, and fixed height. Implemented as ScrollPane.
  4. figure out how to paint when opened
  5. add a test for not set in PanelSignal::setIndication() when CTC.
  6. some items (SecSignals) containing Frills are not initialized, so I see null pointer exceptions when painting. Because they are hidden?
  7. convert to speed signals.
  8. signal on intermediate is not going back to empty when reservation is cleared by hand.
  9. when reservation is made through the diverging route of an OS section, the main signal icon is being colored.
  10. track and time not giving flashing red.
  11. add tool tip to show signal information when mouse is over a signal.
  12. the logo paints on simple screens, but not complex ones.
  13. left hand reservations are not working well: frog signal is not changing from empty; CP signal is CLEAR until something happens in the righthand direction.
  14. reservation is not being set if intermediate is STOP. Reservation should go as far as intermediate.
  15. add "one click startup" - pick up XML file from command arguments.
  16. panel signals around track and time are yellow.
  17. run key events thtough the RREvent queue.
  18. make labels Swing JLabels
  19. fix up menu pull downs under Appearance to use AcceptDialog
  20. fix up JFrame so JMRI disppears when dispatcher panel closer is selected.
  21. add back Open option when no file was specified in Crandic.
  22. add keystroke shortcuts
  23. fix up train labels in dark territory so that they color the track - could be fixed when track probing is fixed
  24. fix up train labels so that more than one train can be in a block and the block remains occupied until the last one in dark territory exits
  25. remove gap on turnouts without position reports (except locked OS)
  26. support double clicks on JList items to select an item.
  27. provide a pop up of the current lineup
  28. provide a pop up of current crew assignments
  29. train labels are not disappearing when removed
  30. after track and time is supported, add a countdown clock for the time
  31. distinguish assigned crew somehow in Trains->Change Crew
  32. create a clear route button for those cases where it can't be cleared because a later block is occupied.
  33. hid panel signals in the center block in staging. I could set traffic into one end when the other end was occupied, but the traffic direction crossed the block boundary and I had an arrow on the occupied block.
  34. honor insets on frames
  35. next speed is not being picked up through turnouts
  36. gap is sometimes too large when arrow removed
  37. removing a train doesn't always remove the label.
  38. complete implementing turnout position reports.
  39. implement lock/unlock reports.
  40. add test mode to turn all signals on or off or caution.
  41. the exit end of a CTC route will turn green, then back to red.
  42. track and time is not setting restricting signals.
  43. arrow heads on vertical lines are diagonal.
  44. initialize turnouts and lock lights.
  45. create the low level objects - lights.
  46. extend the low level object to metered output.
  47. extend the low level input object to debounced input.
  48. changing a turnout should clear the route reservation.
  49. make trains lineup a separate file.
  50. add way to read in call board.
  51. remove the initialization of turnouts and lock LEDs, so they do not move when CATS is started up, but provide a menu item to set all to the main or diverging.
  52. add levels of debugging (light messages, turnout messages, etc.)
  53. screen painting problem. Sometimes arrows are delayed on being added or removed. Refreshing the screen seems to paint correctly.
  54. add automatic screen refresh to Appearance menu items.
  55. fix up moving train labels - remove recursion, and break dependencies between Trains, Sections, and Blocks.
  56. ABS should honor no reservation when other end is CTC?
  57. add sound when train enters OS section.
  58. add field for train call time and for crew on duty time.
  59. handle dead on hours time. Show time remaining and pop up out of time.
  60. add crew positions and record assignments.
  61. make the Adjuster a listener so that when its value changes, it can fire PropertyChanges.
  62. remove SwitchPoints messages for LOCKOFFCMD and UNLOCKOFFCMD because they have been replaced by the "ExitCmd" flag in IOSPec.
  63. add a DTC signaling discipline.
  64. add a fast clock selection button.
  65. crew was not removed from the call board when moved from a trains job to a non-train job.
  66. routes should not be reserved while a turnout is in motion.
  67. clear routes should clear all reservations in a turnout - even if turned the wrong way.
  68. cannot delete a crew member.
  69. refresh layout should set turnouts.
  70. turnout test should support normal and diverging.
  71. some train labels did not change color when tied down through trains drop down - also crew did not release. I plan to fix this when the train screen is reworked to look prototypical.
  72. allow another CATS panel to be loaded without restarting
  73. the drop down editor seems to be fragile. It is easy to get class exceptions by changing the format of a drop down, accepting it, then changing it again.
  74. the adjustment timers may have too fine of resolution. XP has a minimum of 5 ms.
  75. make adjustment timers persistent.
  76. NPE when CATS loads a file which has switch points without a normal selection. NPE is not elmininated, but an error message is printed.
  77. MS doesn't work for sending commands to a turnout. First message appears to be dropped. Could not duplicate after reworking MeterLnSensor.
  78. bug in editing JMRI devices when editing a layout that already has them. Old devices are defined which results in duplicates.
  79. Cannot delete a device - Index Out of Bounds at JmriNameModel, line 253.
  80. fix up library links in Linux scripts.
  81. a MsgFilter is created in apps.Crandic whenever CATS starts up. It should be created when needed.
  82. add ".xml" to file name when layout is saved. I looked at this and the logic gets too confusing.
  83. add default signal aspects for major RRs.
  84. figure out how to do a crossover. Use facing spurs? Derive crossing edge from PtsEdge? A rail joint for each route? Put checkbox on switch points definition when points touch on an edge?
  85. cannot clear a route in which there is a route going in the same direction, in a block after the block controlled by the signal.
  86. use MouseListeners rather than look for specific keys.
  87. implement "Call On" by clicking on a red signal (CPEdge:EdgeMouse).
  88. implement a "playback" mode to rerun a saved session.
  89. be sure train labels have highest priority on seeing mouse clicks.
  90. check what happens when a train label is moved to a block with a train label.
  91. keep a list of recently used files somewhere.
  92. make file saving in designer more robust so 0 length files don't overwrite good file.
  93. making non-adjacent connections seems to be very fragile and contributes to 0 length files.
  94. created a decoder with an "MS" sensor name and saved the file. Loaded it and changed the name to "LS". In the XML JMRI name, "LS" was linked to MeterSensor.
  95. add ability to indicate where row break should be.
  96. use canned icons from files, rather than draw the signals.
  97. add flashing to indicate fleeting. Leave signal base in white?
  98. add an option for more prototypical signal icons - shapes and colors.
  99. add OOS and Track Authority to logs.
  100. add "occupancy valid" decoder address for each block.
  101. add font attributes to labels.
  102. add option to record train movements to a JMRI recorder.
  103. do something different about the default discipline under designer. Block names are dropped if it is "Unknown". Could use "Unknown" to indicate unsignaled blocks.
  104. allow NamedBeans (sensors, lights, etc.) to be defined by JMRI User Name only, as well as system name.
  105. in designer, a signal with 0 heads generates an exception of some form when saving the file.
  106. CATS does not resynchronize well when a turnout is moved by local control, even with feedback.
  107. add the identity of the train holding track authority to the screen.
  108. assist in generating track authorizations (train identity, limits, time, authority number).
  109. signals protecting complex crossings (e.g. single slips) with ABS, do not drop to red when the perpendicular route is reserved.
  110. when the first block in a reservation is cleared by occupy/unoccupy, later blocks cannot be cleared by setting the signal.
  111. designer.csh has some bad class paths for Linux.
  112. fix .bat and .csh files for JMRI 1.8.
  113. set Retricting indication to protect the edge of the layout and unsignaled blocks.
  114. resizing grid squares does not work. The size is not saved from designer. The horizontal width is not adjusted.
  115. if the "orientation" of a signal is not set in designer and the file is saved, it cannot be reloaded.
  116. a bug exists with advance indications when going through a turnout. The advance flag does not clear.
  117. cleared, then deleleted two columns in designer. Some dangling rail joints (to -1) were left that hung things on being loaded.
  118. because some Section decorations hang out into adjacent sections, increase the amount of screen painted when a section changes.
  119. some decoders still lock up and have to be cleared by hand. Not fixed, but minimized.
  120. intermediates are not propagating a route reservation when there is no reservation through the block and the block becomes unoccupied.
  121. sort columns in tables by clicking on title.
  122. cannot load ML, MS, and MR devices from JMRI panel loader. Unknown prefix?
  123. fix up SWSignalHead and HWSignalHead so that systemname is generated from signal name, which exists in PhysicalSignal.
  124. in CATS, click on a label to bring up an image.
  125. qualify JMRI system names so that the "address" is not restricted to being an integer for those devices that allow more free form names.
  126. sometimes CATS refuses to accept an entry in a table field until "Enter" is pushed. Check JTextComponent and JTextField, see VK_ENTER and action listeners.
  127. add Swing components to the panel, such as a text field, for additional comments.
  128. restore cursor when closing a pop up window.
  129. points can be added to a block boundary by simply adding track.
  130. occupancy does not propagate across a crossing if the crossing tracks have the same detection address.
  131. train labels are still hard to grab. That is because they are only a standard grid tile wide, from the left edge. When centered over a grid, the hot zone is smaller (to disappearing) for wider labels.
  132. add a keyboard shortcut for switching between train symbols and lead engine.
  133. fix some JDOM problems with class paths under Windows
  134. null pointer exception (CATS 2.12) at BlkEdge, line 467.
  135. all crew can be added by loading a crew into CATS, but only extras are listed in edit Crew.
  136. remove white space around the buttons on CATS edit pop-ups (crew, jobs, trains).
  137. it is hard to select some signals because they overhang into adjacent tiles. The mousePressedAction method tries to isolate the tile and checks its contents only.
  138. figure out way to move train information from one train record to another (e.g. a train turns).
  139. fix the title on the CATS crew edit pop up.
  140. implement locking of turnouts like JMRI does and undo any point moves while locked. Make this optional.
  141. beef up recording so state is saved when started. This will require fixing up restore so that duplicates are eliminated.
  142. change the "Save" menu item label in CATS to something like "Start Recording".
  143. changing the job of an extra assigned to a train to a non-extra does not remove the train assignment.
  144. somehow, by using the train pop-up in CATS, I was able to assign a crew to two trains.
  145. In TrainStat, provide filter: all trains, current trains, trains with crew.
  146. Clean up how to handle Loconet OPC_SW_REP messages to distinguish between turnout and aux sources.
  147. Remove restoreRoute call when turnouts move.
  148. Fix bug introduced in 2.13 involving signals around OS sections.
  149. Remove duplicates when using Loconet decoders (LT and LS).
  150. Add text alignment for cells in tables (setHorizontalAlignment()).
  151. Remove restriction in designer on decoder addresses being integers.
  152. Fix bug in creating Chains - invalid address 0.
  153. provide coloring in TrainStat in response to events.
  154. Create a "Version numbers" file that all applications reference, to keep them consistent.
  155. Moving the points while a turnout with shared decoder address is occupied can keep the decoder locked.
  156. Changing the font color on one of the TrainStat bands does not update immediately, but only after the window is minimized and reopened. Changing the specifics of a font works. Changing the font that is the target of the binding doesn't work.
  157. CATS should not clear a reservation when a turnout in the reservation changes and CATS is set to countermand the change.
  158. CATS should restore spurs to their normal position when track authority is released.
  159. When saving a TrainStat file, the band sizes are not saved.
  160. The network connection should be the last element in a TrainStat file.
  161. NPE when setting a reservation through hidden track
  162. Implement spring switches.
  163. Editing only a trains file in designer does not work right.
  164. add a clock to TrainStat synchronized from CATS.
  165. nullpointer exception when editing a Chain in designer.
  166. Java cast error after changing any column width by editing a table format in designer.
  167. Trains with user defined fields have to be loaded twice under designer for the field contents to show up.
  168. In designer, saving a crossing and continuing to edit wipes out the crossing preference.
  169. In CATS, fixed a bug in software controlled signal flashing, where the signal would stay on, if the off state was not defined.
  170. In CATS, highlight points in motion better, for example, enclose them in a box.
  171. In CATS, prevent double clicking on switch points - give the first click time to do something.
  172. Include correct log4j in TrainStat.
  173. Make a CTC signal on CATS that is not involved in a route a separate definable color.
  174. Correct calls to log4j in all three programs.
  175. Setting a route through a turnout not in correspondence does not work right. The route goes up to the turnout.
  176. CATS fonts chew up 100% of the CPU occupancy.
  177. Colors cannot be set reliably through the pull down menus in TrainStat.
  178. The library files (jdom.jar, log4j.jar, etc.) moved to lib/ with JMRI 2.7.7.
  179. JMRI added some new libraries in JMRI 2.7.5.
  180. JMRI reworked communications libraries for 2.10
  181. MacOS launcher does not work under Snow Leopard
  182. Add the ability to stack routes.
  183. Add running time on switches in CATS; plus, options to set it and save it.
  184. Add memory on file directories for CATS.
  185. Refreshing CATS duplicates trains in TrainStat.
  186. Sign in on CATS for the dispatcher.
  187. Replay may duplicate trains in lineup.
  188. Did a replay in CATS, then loaded a lineup. TrainStat caught some cast errors.
  189. Add screen position to TrainStat.
  190. Add margins to CTC panel.
  191. Introduced a bug in designer 2.09 in which shared edges are lost upon being read in from a file.
  192. Introduced a bug in designer 2.09 in which s station will disappear when the station dialog is invoked.
  193. Make images and labels more active so that they can accept mouse clicks and generate events.
  194. Make images and labels respond to events and change presentation.
  195. Add protection to stations and labels against missing location specifications.
  196. CATS - conflicts when a single switch machine controls multiple turnouts (with feedback) and "Reverse Local Operations" is checked.
  197. CATS - gaps are not removed on one end of a single track with points at both ends.
  198. designer - some Strings use "isEmpty()" - a Java 1.6 construct.
  199. All 3: add formula type for real time calculations in tables
  200. All 3: add table type
  201. All 3: add clock type that updates once per minute
  202. CATS: local switch requests do not require track authority
  203. CATS and designer: add lunar and flashing lunar aspects
  204. CATS: add some intermediate animation when setting routes to simulate commands being coded.
  205. CATS: lost registration of key handler - arrow keys do not work.
  206. designer: copied and pasted track with intermediate signal icon. Icon position changed.
  207. designer: does not allow block discipline to be UNDEFINED.
  208. designer: silently ignored normal route box on points definition
  209. designer: cannot add new names to sections
  210. designer: pasting a track with an intermediate adds a signal base
  211. designer: create some way to see the details of Tracks, Blocks, Signals, and Points without having to drill down through layers of menus. Could paint track speed by color. Could provide a table format for Blocks, Signals, and Points. Could use tool tips?
  212. designer and CATS: must specify a decoder address; cannot use user name to find the decoder
  213. Complete the coding for recognizing that a user unlocked a turnout in CATS.
  214. Add a "local turnout unlocked" icon in CATS.
  215. Save the size of the designer pane so it can be restored when designer is next run.
  216. Rework CATS screen painting - images should be at a higher frame level so they are not overwritten.
  217. Check threading on TrainStat.
  218. Checkboxes on TrainStat are not colored correctly.
  219. Check adding additional crew after resuming a CATS session.
  220. Fix up CATS launcher - remove simpleConfig2 and correctly receive layout file name.
  221. CATS - righthand arrows on one section Blocks do not work right.
  222. CATS - JMRI 3.3.1 introduced changes to configuration manager, which broke CATS. CATS is affected only when a JMRI panel is loaded automatically (i.e. in designer, Appearance->Include File).
  223. JMRI renamed log4j.jar which causes CATS to fail on startup
  224. Problems starting CATS under Windows 7 - need to rework .bat file
  225. Problems starting designer under Windows 8 - need to rework .bat file
  226. JMRI changed the interface to managers. CATS will not compile without changes, but runs OK.
  227. Create a Schema to verify a layout description and provide a way to use XSLT to transform elements.
  228. Provide a way to import accessory decoder information.
  229. Update JMRI devices in designer (especially MRC)
  230. JMRI 4.3.5 introduced a problem that prevents CATS from terminating completely.
  231. Somewhere around JMRI 4.3.5, CATS stopped initializing Logix when included in a CTC panel.
  232. In CATS, pick up font settings from JMRI
  233. In CATS, note on the console when a file is included.
  234. Changes after JMRI 4.8 broke several interfaces. Thus CATS won't work with anything after 4.8.
  235. Sometime after JMRI 4.6, JMRI changed something so the CATS close box doesn't work. This cannot be fixed without using a different Java Swing component.
  236. The arrow keys do not move train labels across crossings consistently.
  237. The COLORDEFINITION XML tag is not recognized in CATS with some versions of Java. It explicitly needs to be instantiated.
  238. Changes after JMRI 4.12 broke the fast clock interface. The change prevents CATS from loading
  239. Changes to designer.csh do not work under MacOS. The classpath command option is not supported.
  240. Between 2.36 and 2.37, approach lighting was disabled. I don't remember why.
  241. The JMRI XML format for saving SignalHeads changed, so saving a JMRI panel from CATS results in invalid XML
  242. Deprecated methods in JMRI for locating a single LoconetController for metered devices were removed.
  243. Add an option to change track color for slow orders.
  244. Add an option to CATS to record and playback all external events without operator interaction for automated testing.
  245. Add an option to import Operations train data into designer/CATS
  246. JMRI (after 4.16) changed the constructor signatures for deriving Loconet device managers (e.g. LnLightManager), breaking how CATS creates Metered Sensors, Turnouts, and Lights.
  247. the JMRI distribution (around 4.19) replaced the jdom jar with a newer version.
  248. designer sometimes drops the user name on a SignalHead.
  249. JMRI (after 4.14) changed how system prefixes are found, breaking how CATS creates DecoderChains.
  250. JMRI (after 4.18) changed how messages exchanged with Operations are found, breaking how CATS moves trains.
  251. In CATS/designer, add a Network client mode so that multiple instances of CATS can work together, one with the trains/cars/crew master database and the others clients to it.
  252. CATS crashes with points defined with Release report and no Command.
  253. Make "current file name" visible in designer.