Index: trunk/src/tmcsim/client/ATMSBatchDriver.java
===================================================================
--- trunk/src/tmcsim/client/ATMSBatchDriver.java	(revision 129)
+++ trunk/src/tmcsim/client/ATMSBatchDriver.java	(revision 135)
@@ -155,7 +155,8 @@
         readBatchFile();
         // Launch the display
-        theView = new ATMSBatchViewer();
+        theView = new ATMSBatchViewer(this, new ArrayList<String>(incidents.keySet()));
         theView.setVisible(true);
-        theView.update("0:00", eventQueue);        
+        theView.update("0:00", eventQueue);
+
         // Create a timer that fetches the simulation time every second.
         Timer timer = new Timer(ONE_SECOND, new ActionListener()
@@ -201,5 +202,4 @@
                     }
                     //System.out.println("Next event will be launched at: " + formatter.format(eventTime));
-                    theView.update(currentClock, eventQueue);
                     // Check the queue of events to see if the first
                     // item should be launched.  IF so, 
@@ -230,4 +230,5 @@
                         }
                     }
+                    theView.update(currentClock, eventQueue);
                 }
             }
@@ -236,5 +237,6 @@
 
         // Start the FEP thread (to update ATMS every 30 sec). (See class def below)
-        new WriteToFEPThread().run();
+        Thread wtfep = new WriteToFEPThread();
+        wtfep.start();
 
         ensureProperShutdown();
@@ -277,4 +279,46 @@
     }
     
+    /** Clear an incident.  For each event associated with an incident,
+     * turn the dots in its range Green and remove it from the event queue.
+     * @param incidentNumber incident to be cleared.
+     */
+    public void clearIncident(String incidentNumber)
+    {
+        boolean ok = incidents.containsKey(incidentNumber);
+        if (!ok) 
+        {
+            System.out.println("Sorry, that incident number isn't found.");
+            return;
+        }
+        System.out.println("Clearing incident " + incidentNumber);
+        List<String> events = incidents.get(incidentNumber);
+        // Process each event associated with this incident 
+        for (String event: events)
+        {
+            System.out.println("Event: " + event + " cleared.");
+            eventQueue.remove(event);
+            // Extract fields from event and prepare them 
+            Scanner lineScan = new Scanner(event);
+            try
+            {
+                lineScan.next(); // skip incident number field
+                lineScan.next(); // skip time field
+                int routeNumber = lineScan.nextInt();
+                Station.DIRECTION dir = Station.DIRECTION.toDirection(lineScan.next());
+                double postmile = lineScan.nextDouble();
+                int range = lineScan.nextInt();
+                // apply colorization to highways, forcing to green, indicating cleared
+                console.applyColorToHighwayStretch(routeNumber, dir, postmile, range, ConsoleDriver.DOTCOLOR.GREEN);
+            }
+            catch (InputMismatchException ex)
+            {
+                System.out.println("Internal error, please report to programmers." + event);
+            }
+            
+        }
+        // Now refresh the view with the updated queue of events
+        theView.update("0:00", eventQueue);
+    }
+    
     /**
      * Connect to the Coordinator's RMI object, and register this object for
