Index: trunk/src/tmcsim/application.properties
===================================================================
--- trunk/src/tmcsim/application.properties	(revision 59)
+++ trunk/src/tmcsim/application.properties	(revision 64)
@@ -1,5 +1,5 @@
-#Wed, 15 Mar 2017 11:18:58 -0700
+#Thu, 16 Mar 2017 08:26:10 -0700
 
-Application.revision=58
+Application.revision=63
 
-Application.buildnumber=33
+Application.buildnumber=44
Index: trunk/src/tmcsim/client/ClockView.java
===================================================================
--- trunk/src/tmcsim/client/ClockView.java	(revision 64)
+++ trunk/src/tmcsim/client/ClockView.java	(revision 64)
@@ -0,0 +1,59 @@
+package tmcsim.client;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.util.logging.Logger;
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.WindowConstants;
+
+/**
+ * The CADClientView class is the view component to the CAD Client application.
+ *
+ * @author jdalbey
+ */
+@SuppressWarnings("serial")
+public class ClockView extends JFrame
+{
+    /**
+     * Error Logger.
+     */
+    private static Logger cadLogger = Logger.getLogger("tmcsim.client");
+    private JPanel mainPane;
+    private JLabel currentTime;
+    private final static Dimension SCREEN_SIZE = new Dimension(1100, 255);
+
+    /**
+     * Constructor. Build panes, add key listeners, and set up observer
+     * relationship between the footer and main panes. TODO: Consider having
+     * screen size and font size in properties file.
+     */
+    public ClockView()
+    {
+        super("Simulation Clock");
+        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+        currentTime = new JLabel("00:00:00");
+        currentTime.setAlignmentX(Box.CENTER_ALIGNMENT);
+        currentTime.setFont(new Font("Geneva", Font.BOLD, 200));
+        mainPane = new JPanel();
+        setSize(SCREEN_SIZE);
+        setMaximumSize(SCREEN_SIZE);
+        setMinimumSize(SCREEN_SIZE);
+        mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));
+        mainPane.setBorder(BorderFactory.createLineBorder(Color.black));
+        mainPane.setBackground(new Color(230, 230, 230));  // #E6E6E6
+        mainPane.add(currentTime);
+        add(mainPane);
+        pack();
+    }
+
+    public void updateTime(String msg)
+    {
+        currentTime.setText(msg);
+    }
+}
Index: trunk/src/tmcsim/client/ClockClient.java
===================================================================
--- trunk/src/tmcsim/client/ClockClient.java	(revision 64)
+++ trunk/src/tmcsim/client/ClockClient.java	(revision 64)
@@ -0,0 +1,261 @@
+package tmcsim.client;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.FileInputStream;
+import java.rmi.Naming;
+import java.rmi.RemoteException;
+import java.rmi.server.UnicastRemoteObject;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.JOptionPane;
+import javax.swing.JWindow;
+import javax.swing.Timer;
+import javax.swing.UIManager;
+import tmcsim.common.SimulationException;
+import tmcsim.interfaces.CADClientInterface;
+import tmcsim.interfaces.CoordinatorInterface;
+
+/**
+ * ClockClient shows the simulation clock time. It operates as a client of the
+ * CAD server, using RMI to poll the server every second for the current
+ * simulation clock time.
+ *
+ * @author jdalbey
+ */
+public class ClockClient extends UnicastRemoteObject implements
+        CADClientInterface
+{
+    /**
+     * Error logger.
+     */
+    private static Logger cadClientLogger = Logger.getLogger("tmcsim.client");
+
+    @Override
+    public void refresh() throws RemoteException
+    {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    /**
+     * Enumeration containing properties name values. See CADClient class
+     * description for more information.
+     *
+     * @author Matthew Cechini
+     * @see CADClient
+     */
+    private static enum PROPERTIES
+    {
+        CAD_SIM_HOST("CADSimulatorHost"), CAD_SIM_PORT("CADSimulatorSocketPort"), CAD_RMI_PORT(
+        "CADRmiPort"), CLIENT_CAD_POS("CADPosition"), CLIENT_USER_ID(
+        "CADUserID"), KEYBOARD_TYPE("KeyboardType"), DISPLAY_TYPE(
+        "DisplayType");
+        public String name;
+
+        private PROPERTIES(String n)
+        {
+            name = n;
+        }
+    }
+    /**
+     * CADClientSocket Object to handle socket communication between the Client
+     * and CAD Simulator.
+     */
+    private CADClientSocket theClientSocket;
+    /**
+     * Instance of the ClockView.
+     */
+    private ClockView theView;
+    /**
+     * Properties object for the CADClient class.
+     */
+    private Properties cadClientProp;
+    /**
+     * RMI interface for communication with the remote Coordinator.
+     */
+    private static CoordinatorInterface theCoorInt;
+    /**
+     * reference to itself to be used for disconnecting from CADSimulator
+     */
+    private CADClientInterface client = this;
+    private static final String CONFIG_FILE_NAME = "cad_client_config.properties";
+    private final static int ONE_SECOND = 1000;
+
+    /**
+     * Constructor. Initialize data from parsed properties file. Create a socket
+     * connection to the CADSimulator.
+     *
+     * @param propertiesFile File path (absolute or relative) to the properties
+     * file containing configuration data.
+     */
+    public ClockClient(String propertiesFile) throws SimulationException,
+            RemoteException
+    {
+        if (!verifyProperties(propertiesFile))
+        {
+            System.exit(0);
+        }
+
+        connect(cadClientProp.getProperty(PROPERTIES.CAD_SIM_HOST.name).trim(),
+                cadClientProp.getProperty(PROPERTIES.CAD_RMI_PORT.name).trim());
+
+        theView = new ClockView();
+        theView.setVisible(true);
+
+        // Create a timer that fetches the simulation time every second.
+        Timer timer = new Timer(ONE_SECOND, new ActionListener()
+        {
+            public void actionPerformed(ActionEvent e)
+            {
+                try
+                {
+                    long simtime = theCoorInt.getCurrentSimulationTime();
+                    theView.updateTime("" + formatInterval(simtime));
+                } catch (RemoteException ex)
+                {
+                    Logger.getLogger(ClockClient.class.getName()).log(Level.SEVERE, null, ex);
+                }
+            }
+        });
+        timer.start();
+
+        ensureProperShutdown();
+    }
+
+    /**
+     * Connect to the Coordinator's RMI object, and register this object for
+     * callback with the Coordinator.
+     *
+     * @param hostname Host name of the CAD Simulator.
+     * @param portNumber Port number of the CAD Simulator RMI communication.
+     * @throws SimulationException if there is an error creating the RMI
+     * connection.
+     */
+    protected void connect(String hostname, String portNumber)
+            throws SimulationException
+    {
+
+        String coorIntURL = "";
+
+        try
+        {
+            coorIntURL = "rmi://" + hostname + ":" + portNumber
+                    + "/coordinator";
+            theCoorInt = (CoordinatorInterface) Naming.lookup(coorIntURL);
+            theCoorInt.registerForCallback(this);
+        } catch (Exception e)
+        {
+            throw new SimulationException(SimulationException.CAD_SIM_CONNECT,
+                    e);
+        }
+    }
+
+    /**
+     * This method verifies that the CAD Simulator Host and Port values are not
+     * null. Also, if a CAD Position or User ID do not exist in the properties
+     * file, the user is prompted to enter values. These values are written to
+     * the properties file. If the user cancels the process of entering these
+     * values, the verification fails.
+     *
+     * @param propertiesFile File path (absolute or relative) to the properties
+     * file containing configuration data.
+     * @return True if the properties file is valid, false if not.
+     * @throws SimulationException if there is an exception in verifying the
+     * properties file, or if the user cancels input.
+     */
+    private boolean verifyProperties(String propertiesFile)
+            throws SimulationException
+    {
+
+        // Load the properties file.
+        try
+        {
+            cadClientProp = new Properties();
+            cadClientProp.load(new FileInputStream(propertiesFile));
+        } catch (Exception e)
+        {
+            cadClientLogger.logp(Level.SEVERE, "SimulationManager",
+                    "Constructor", "Exception in reading properties file.", e);
+
+            throw new SimulationException(SimulationException.INITIALIZE_ERROR,
+                    e);
+        }
+
+
+        // Ensure that the properties file does not have null values for the
+        // CAD Simulator's connection information.
+        if (cadClientProp.getProperty(PROPERTIES.CAD_SIM_HOST.name) == null
+                || cadClientProp.getProperty(PROPERTIES.CAD_SIM_PORT.name) == null)
+        {
+            cadClientLogger.logp(Level.SEVERE, "SimulationManager",
+                    "Constructor", "Null value in properties file.");
+            throw new SimulationException(SimulationException.INITIALIZE_ERROR);
+        }
+
+        return true;
+    }
+
+    /**
+     * Format a time in seconds as HH:MM:SS
+     *
+     * @param l
+     * @return
+     */
+    private String formatInterval(final long l)
+    {
+        final long hr = TimeUnit.SECONDS.toHours(l);
+        final long min = TimeUnit.SECONDS.toMinutes(l - TimeUnit.HOURS.toSeconds(hr));
+        final long sec = TimeUnit.SECONDS.toSeconds(l - TimeUnit.HOURS.toSeconds(hr) - TimeUnit.MINUTES.toSeconds(min));
+        return String.format("%02d:%02d:%02d", hr, min, sec);
+    }
+
+    public void ensureProperShutdown()
+    {
+        Runtime.getRuntime().addShutdownHook(new Thread()
+        {
+            public void run()
+            {
+                try
+                {
+                    theCoorInt.unregisterForCallback(client);
+                } catch (RemoteException e)
+                {
+                    e.printStackTrace();
+                }
+            }
+        });
+    }
+
+    /**
+     * Construct the CADClient with the properties file path, either from the
+     * command line arguments or default.
+     *
+     * @param args Command line arguments.
+     */
+    public static void main(String[] args)
+    {
+        if (System.getProperty("CONFIG_DIR") == null)
+        {
+            System.setProperty("CONFIG_DIR", "config");
+        }
+
+        try
+        {
+            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+            new ClockClient(System.getProperty("CONFIG_DIR") + System.getProperty("file.separator") + CONFIG_FILE_NAME);
+
+        } catch (Exception e)
+        {
+            cadClientLogger.logp(Level.SEVERE, "SimulationManager", "Main",
+                    "Error initializing application.");
+
+            JOptionPane.showMessageDialog(new JWindow(), e.getMessage(),
+                    "Error - Program Exiting", JOptionPane.ERROR_MESSAGE);
+
+            System.exit(-1);
+        }
+
+    }
+}
Index: trunk/src/tmcsim/client/cadclientgui/screens/UnitStatus.java
===================================================================
--- trunk/src/tmcsim/client/cadclientgui/screens/UnitStatus.java	(revision 63)
+++ trunk/src/tmcsim/client/cadclientgui/screens/UnitStatus.java	(revision 64)
@@ -18,4 +18,6 @@
 import java.rmi.RemoteException;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.swing.Box;
 import javax.swing.BoxLayout;
@@ -48,5 +50,6 @@
 public class UnitStatus extends JFrame
 {
-    private final int ONE_SECOND = 1000;
+    private final static int ONE_SECOND = 1000;
+    private static Logger clientLogger = Logger.getLogger("tmcsim.client");
     private final String SCREEN_TITLE = "(Shift + F4)  Unit Status";
     private final Dimension SCREEN_DIMENSIONS = new Dimension(1400, 250);
@@ -152,8 +155,10 @@
                 {
                     comp = super.prepareRenderer(renderer, row, column);
-                } catch (ArrayIndexOutOfBoundsException ex)
-                {
-                    // our workaround is to just return a dummy value
-                    // all will be redrawn in the next one second interval
+                } catch (Exception ex)
+                {
+                    clientLogger.logp(Level.INFO, "UnitStatus",
+                            "prepareRenderer", "row=" + row + " col=" + column, ex);
+                    // Our workaround is to just return a dummy value.
+                    // It will be erased in the next one second refresh
                     return new JLabel("?");
                 }
Index: trunk/src/tmcsim/client/cadclientgui/screens/AssignedIncidents.java
===================================================================
--- trunk/src/tmcsim/client/cadclientgui/screens/AssignedIncidents.java	(revision 63)
+++ trunk/src/tmcsim/client/cadclientgui/screens/AssignedIncidents.java	(revision 64)
@@ -15,4 +15,6 @@
 import java.rmi.RemoteException;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.swing.Box;
 import javax.swing.BoxLayout;
@@ -62,4 +64,5 @@
     // labels for the drop down menu
     private JLabel[] dropDownLabels = new JLabel[LABELS.length];
+    private static Logger clientLogger = Logger.getLogger("tmcsim.client");
     private long lastLeftClick;// used for double clicking feature
 
@@ -110,8 +113,11 @@
                 {
                     comp = super.prepareRenderer(renderer, row, column);
-                } catch (ArrayIndexOutOfBoundsException ex)
-                {
-                    // our workaround is to just return a dummy value
-                    // all will be redrawn in the next one second interval
+                } catch (Exception ex)
+                {
+                    clientLogger.logp(Level.INFO, "AssignedIncidents",
+                            "prepareRenderer", "row=" + row + " col=" + column, ex);
+
+                    // Our workaround is to just return a dummy value.
+                    // It will be erased in the next one second refresh
                     return new JLabel("?");
                 }
Index: trunk/src/tmcsim/client/CADClockDisplay.java
===================================================================
--- trunk/src/tmcsim/client/CADClockDisplay.java	(revision 62)
+++ 	(revision )
@@ -1,428 +1,0 @@
-package tmcsim.client;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.rmi.Naming;
-import java.rmi.RemoteException;
-import java.rmi.server.UnicastRemoteObject;
-import java.util.Properties;
-import java.util.Vector;
-import java.util.concurrent.TimeUnit;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.swing.JOptionPane;
-import javax.swing.JWindow;
-import javax.swing.Timer;
-import javax.swing.UIManager;
-import tmcsim.client.cadclientgui.CADClientGUI;
-import tmcsim.common.SimulationException;
-import tmcsim.interfaces.CADClientInterface;
-import tmcsim.interfaces.CoordinatorInterface;
-
-/**
- * CADClockDisplay shows the simulation clock time. It operates as a client of
- * the CAD server, using RMI to poll the server every second for the current
- * simulation clock time.
- */
-public class CADClockDisplay extends UnicastRemoteObject implements
-        CADClientInterface
-{
-    /**
-     * Error logger.
-     */
-    private static Logger cadClientLogger = Logger.getLogger("tmcsim.client");
-
-    /**
-     * Enumeration containing properties name values. See CADClient class
-     * description for more information.
-     *
-     * @author Matthew Cechini
-     * @see CADClient
-     */
-    private static enum PROPERTIES
-    {
-        CAD_SIM_HOST("CADSimulatorHost"), CAD_SIM_PORT("CADSimulatorSocketPort"), CAD_RMI_PORT(
-        "CADRmiPort"), CLIENT_CAD_POS("CADPosition"), CLIENT_USER_ID(
-        "CADUserID"), KEYBOARD_TYPE("KeyboardType"), DISPLAY_TYPE(
-        "DisplayType");
-        public String name;
-
-        private PROPERTIES(String n)
-        {
-            name = n;
-        }
-    }
-    /**
-     * CADClientSocket Object to handle socket communication between the Client
-     * and CAD Simulator.
-     */
-    private CADClientSocket theClientSocket;
-    /**
-     * Instance of the CADClientModel.
-     */
-    private CADClientModel theClientScreenModel;
-    /**
-     * Instance of the CADClockView.
-     */
-    private CADClockView theClientScreenView;
-    /**
-     * Instance of the CADCLientGUI Replaces CADClockView
-     */
-    private CADClientGUI theClientGUI;
-    /**
-     * Properties object for the CADClient class.
-     */
-    private Properties cadClientProp;
-    /**
-     * RMI interface for communication with the remote Coordinator.
-     */
-    private static CoordinatorInterface theCoorInt;
-    /**
-     * reference to itself to be used for disconnecting from CADSimulator
-     */
-    private CADClientInterface client = this;
-    private static final String CONFIG_FILE_NAME = "cad_client_config.properties";
-    private final static int ONE_SECOND = 1000;
-
-    /**
-     * Constructor. Initialize data from parsed properties file. Create a socket
-     * connection to the CADSimulator.
-     *
-     * @param propertiesFile File path (absolute or relative) to the properties
-     * file containing configuration data.
-     */
-    public CADClockDisplay(String propertiesFile) throws SimulationException,
-            RemoteException
-    {
-        if (!verifyProperties(propertiesFile))
-        {
-            System.exit(0);
-        }
-
-        connect(cadClientProp.getProperty(PROPERTIES.CAD_SIM_HOST.name).trim(),
-                cadClientProp.getProperty(PROPERTIES.CAD_RMI_PORT.name).trim());
-
-        theClientScreenView = new CADClockView();
-        theClientScreenView.setVisible(true);
-
-        // Create a timer that fetches the simulation time every second.
-        Timer timer = new Timer(ONE_SECOND, new ActionListener()
-        {
-            public void actionPerformed(ActionEvent e)
-            {
-                try
-                {
-                    long simtime = theCoorInt.getCurrentSimulationTime();
-                    theClientScreenView.updateTime("" + formatInterval(simtime));
-                } catch (RemoteException ex)
-                {
-                    Logger.getLogger(CADClockDisplay.class.getName()).log(Level.SEVERE, null, ex);
-                }
-            }
-        });
-        timer.start();
-
-        ensureProperShutdown();
-    }
-
-    /**
-     * Connect to the Coordinator's RMI object, and register this object for
-     * callback with the Coordinator.
-     *
-     * @param hostname Host name of the CAD Simulator.
-     * @param portNumber Port number of the CAD Simulator RMI communication.
-     * @throws SimulationException if there is an error creating the RMI
-     * connection.
-     */
-    protected void connect(String hostname, String portNumber)
-            throws SimulationException
-    {
-
-        String coorIntURL = "";
-
-        try
-        {
-            coorIntURL = "rmi://" + hostname + ":" + portNumber
-                    + "/coordinator";
-            theCoorInt = (CoordinatorInterface) Naming.lookup(coorIntURL);
-            theCoorInt.registerForCallback(this);
-        } catch (Exception e)
-        {
-            throw new SimulationException(SimulationException.CAD_SIM_CONNECT,
-                    e);
-        }
-    }
-
-    /**
-     * This method verifies that the CAD Simulator Host and Port values are not
-     * null. Also, if a CAD Position or User ID do not exist in the properties
-     * file, the user is prompted to enter values. These values are written to
-     * the properties file. If the user cancels the process of entering these
-     * values, the verification fails.
-     *
-     * @param propertiesFile File path (absolute or relative) to the properties
-     * file containing configuration data.
-     * @return True if the properties file is valid, false if not.
-     * @throws SimulationException if there is an exception in verifying the
-     * properties file, or if the user cancels input.
-     */
-    private boolean verifyProperties(String propertiesFile)
-            throws SimulationException
-    {
-
-        // Load the properties file.
-        try
-        {
-            cadClientProp = new Properties();
-            cadClientProp.load(new FileInputStream(propertiesFile));
-        } catch (Exception e)
-        {
-            cadClientLogger.logp(Level.SEVERE, "SimulationManager",
-                    "Constructor", "Exception in reading properties file.", e);
-
-            throw new SimulationException(SimulationException.INITIALIZE_ERROR,
-                    e);
-        }
-
-
-        // Ensure that the properties file does not have null values for the
-        // CAD Simulator's connection information.
-        if (cadClientProp.getProperty(PROPERTIES.CAD_SIM_HOST.name) == null
-                || cadClientProp.getProperty(PROPERTIES.CAD_SIM_PORT.name) == null)
-        {
-            cadClientLogger.logp(Level.SEVERE, "SimulationManager",
-                    "Constructor", "Null value in properties file.");
-            throw new SimulationException(SimulationException.INITIALIZE_ERROR);
-        }
-
-        try
-        {
-            // If the properties file does not specify a CAD position, prompt
-            // the
-            // user to select one. If the user selects a position, write the
-            // new properties values to the file. If the user cancels, else
-            // throw an exception.
-            if (cadClientProp.getProperty(PROPERTIES.CLIENT_CAD_POS.name) == null)
-            {
-                if (getCADPosition())
-                {
-                    cadClientProp.store(new FileOutputStream(propertiesFile),
-                            "");
-                }
-                else
-                {
-                    throw new SimulationException(
-                            SimulationException.INITIALIZE_ERROR);
-                }
-            }
-
-            // If the properties file does not specifiy a CAD User ID, prompt
-            // the
-            // user to enter a value. If the user enters a valid ID, write the
-            // new properties values to the file. If the user cancels, else
-            // throw an exception.
-            if (cadClientProp.getProperty(PROPERTIES.CLIENT_USER_ID.name) == null)
-            {
-                if (getUserID())
-                {
-                    cadClientProp.store(new FileOutputStream(propertiesFile),
-                            "");
-                }
-                else
-                {
-                    throw new SimulationException(
-                            SimulationException.INITIALIZE_ERROR);
-                }
-            }
-        } catch (IOException ioe)
-        {
-            cadClientLogger.logp(Level.SEVERE, "SimulationManager",
-                    "Constructor",
-                    "Exception in writing to the properties file.");
-            throw new SimulationException(SimulationException.INITIALIZE_ERROR);
-        }
-
-        // Ensure that the properties file has a valid display type
-        if (cadClientProp.getProperty(PROPERTIES.DISPLAY_TYPE.name) == null
-                || (!cadClientProp.getProperty(PROPERTIES.DISPLAY_TYPE.name)
-                .equals("FULL_SCREEN") && !cadClientProp.getProperty(
-                PROPERTIES.DISPLAY_TYPE.name).equals("FRAME")))
-        {
-            cadClientLogger.logp(Level.SEVERE, "SimulationManager",
-                    "Constructor", "Invalid display type.");
-            throw new SimulationException(SimulationException.INITIALIZE_ERROR);
-        }
-
-        return true;
-    }
-
-    /**
-     * This method prompts the user to select a value for the CAD position. If
-     * the user cancels the method returns false, else the Properties object is
-     * updated and true is returned.
-     *
-     * @return True if the user successfully selected a CAD position, false if
-     * not.
-     */
-    private boolean getCADPosition()
-    {
-
-        Vector<Integer> positions = new Vector<Integer>();
-        for (int i = 0; i < 10; i++)
-        {
-            positions.add(i);
-        }
-
-        Object cadPos = null;
-
-        while (true)
-        {
-            cadPos = JOptionPane.showInputDialog(null,
-                    "Please assign this workstation a CAD position number.",
-                    "CAD Position Asignment", JOptionPane.QUESTION_MESSAGE,
-                    null, positions.toArray(), positions.get(0));
-
-            // If the user pressed cancel, confirm the exit and return false.
-            if (cadPos == null)
-            {
-                if (JOptionPane
-                        .showConfirmDialog(
-                        null,
-                        "CAD Client cannot load until a valid CAD "
-                        + "position has been selected.  Do you wish to "
-                        + "cancel loading the CAD Client?",
-                        "Confirm Exit", JOptionPane.YES_NO_OPTION,
-                        JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION)
-                {
-                    return false;
-                }
-            } // Else the user selected a CAD position, exit the loop.
-            else
-            {
-                break;
-            }
-        }
-
-        cadClientProp.setProperty(PROPERTIES.CLIENT_CAD_POS.name,
-                cadPos.toString());
-        return true;
-    }
-
-    /**
-     * This method prompts the user to enter a 5-character User ID. If the user
-     * cancels the method returns false, else the Properties object is updated
-     * and true is returned.
-     *
-     * @return True if the user successfully selected a CAD position, false if
-     * not.
-     */
-    private boolean getUserID()
-    {
-        String cadUID = null;
-
-        while (true)
-        {
-            cadUID = JOptionPane.showInputDialog(null,
-                    "Please assign this workstation a 6-character CAD "
-                    + "User ID.", "CAD User ID Asignment",
-                    JOptionPane.QUESTION_MESSAGE);
-
-            // /If the user pressed cancel, confirm the exit and return false.
-            if (cadUID == null)
-            {
-                if (JOptionPane.showConfirmDialog(null,
-                        "CAD Client cannot load until a valid User ID "
-                        + "has been entered.  Do you wish to "
-                        + "cancel loading the CAD Client?",
-                        "Confirm Exit", JOptionPane.YES_NO_OPTION,
-                        JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION)
-                {
-                    return false;
-                }
-            } // If the user does not enter a valid User ID, notify and reprompt.
-            else if (cadUID.length() != 6)
-            {
-                JOptionPane.showMessageDialog(null,
-                        "The User ID must be 6 characters.", "Invalid User ID",
-                        JOptionPane.WARNING_MESSAGE);
-            } // Else the user entered a valid value, exit the loop.
-            else
-            {
-                break;
-            }
-        }
-
-        cadClientProp.setProperty(PROPERTIES.CLIENT_USER_ID.name, cadUID);
-        return true;
-    }
-
-    /**
-     * Construct the CADClient with the properties file path, either from the
-     * command line arguments or default.
-     *
-     * @param args Command line arguments.
-     */
-    public static void main(String[] args)
-    {
-        if (System.getProperty("CONFIG_DIR") == null)
-        {
-            System.setProperty("CONFIG_DIR", "config");
-        }
-
-        try
-        {
-            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
-            new CADClockDisplay(System.getProperty("CONFIG_DIR") + System.getProperty("file.separator") + CONFIG_FILE_NAME);
-
-        } catch (Exception e)
-        {
-            cadClientLogger.logp(Level.SEVERE, "SimulationManager", "Main",
-                    "Error initializing application.");
-
-            JOptionPane.showMessageDialog(new JWindow(), e.getMessage(),
-                    "Error - Program Exiting", JOptionPane.ERROR_MESSAGE);
-
-            System.exit(-1);
-        }
-
-    }
-
-    public void refresh()
-    {
-        theClientGUI.screen.refreshScreens();
-    }
-
-    public void ensureProperShutdown()
-    {
-        Runtime.getRuntime().addShutdownHook(new Thread()
-        {
-            public void run()
-            {
-                try
-                {
-                    theCoorInt.unregisterForCallback(client);
-                } catch (RemoteException e)
-                {
-                    e.printStackTrace();
-                }
-            }
-        });
-    }
-
-    /**
-     * Format a time in seconds as HH:MM:SS
-     *
-     * @param l
-     * @return
-     */
-    private String formatInterval(final long l)
-    {
-        final long hr = TimeUnit.SECONDS.toHours(l);
-        final long min = TimeUnit.SECONDS.toMinutes(l - TimeUnit.HOURS.toSeconds(hr));
-        final long sec = TimeUnit.SECONDS.toSeconds(l - TimeUnit.HOURS.toSeconds(hr) - TimeUnit.MINUTES.toSeconds(min));
-        return String.format("%02d:%02d:%02d", hr, min, sec);
-    }
-}
Index: trunk/src/tmcsim/client/CADClockView.java
===================================================================
--- trunk/src/tmcsim/client/CADClockView.java	(revision 62)
+++ 	(revision )
@@ -1,58 +1,0 @@
-package tmcsim.client;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.util.logging.Logger;
-import javax.swing.BorderFactory;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.WindowConstants;
-
-/**
- * The CADClientView class is the view component to the CAD Client application.
- *
- */
-@SuppressWarnings("serial")
-public class CADClockView extends JFrame
-{
-    /**
-     * Error Logger.
-     */
-    private static Logger cadLogger = Logger.getLogger("tmcsim.client");
-    private JPanel mainPane;
-    private JLabel currentTime;
-
-    /**
-     * Constructor. Build panes, add key listeners, and set up observer
-     * relationship between the footer and main panes.
-     *
-     * @param position The CAD position for this client terminal.
-     */
-    public CADClockView()
-    {
-        super("Simulation Clock");
-        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
-        currentTime = new JLabel("00:00:00");
-        currentTime.setAlignmentX(Box.CENTER_ALIGNMENT);
-        currentTime.setFont(new Font("Geneva", Font.BOLD, 200));
-        mainPane = new JPanel();
-        setSize(new Dimension(1100, 255));
-        setMaximumSize(new Dimension(1100, 255));
-        setMinimumSize(new Dimension(1100, 255));
-        mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS));
-        mainPane.setBorder(BorderFactory.createLineBorder(Color.black));
-        mainPane.setBackground(new Color(230, 230, 230));  // #E6E6E6
-        mainPane.add(currentTime);
-        add(mainPane);
-        pack();
-    }
-
-    public void updateTime(String msg)
-    {
-        currentTime.setText(msg);
-    }
-}
