Changeset 183 in tmcsimulator for trunk/src/tmcsim/client/ATMSBatchViewer.java


Ignore:
Timestamp:
10/28/2017 03:51:23 PM (9 years ago)
Author:
jdalbey
Message:

ATMSBatchDriver.java Enhanced to automatically sort events chronologically (using new class TrafficEvent?).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/tmcsim/client/ATMSBatchViewer.java

    r168 r183  
    1  
    21package tmcsim.client; 
    32 
     3import atmsdriver.model.TrafficEvent; 
     4import java.text.ParseException; 
    45import java.util.ArrayList; 
    5 import java.util.HashSet; 
    66import java.util.LinkedList; 
    77import java.util.List; 
    8 import java.util.Queue; 
    9 import java.util.Set; 
    10 import java.util.Vector; 
     8import java.util.logging.Level; 
     9import java.util.logging.Logger; 
    1110import javax.swing.AbstractListModel; 
    12 import javax.swing.JLabel; 
    13 import javax.swing.JList; 
    1411import javax.swing.JOptionPane; 
    15 import tmcsim.cadsimulator.CADServer; 
    1612 
    1713/** 
     
    1915 * @author jdalbey 
    2016 */ 
    21 public class ATMSBatchViewer extends javax.swing.JFrame  
     17public class ATMSBatchViewer extends javax.swing.JFrame 
    2218{ 
    23     /** Reference to the driver associated with this GUI */ 
    24     private ATMSBatchDriver driver;  
     19 
     20    /** 
     21     * Reference to the driver associated with this GUI 
     22     */ 
     23    private ATMSBatchDriver driver; 
    2524    private final List<String> incidents; 
     25 
    2626    /** 
    2727     * Creates new form ATMSBatchViewer. 
     28     * 
    2829     * @param incidents a list of incidents to show in a list. 
    2930     */ 
    30     public ATMSBatchViewer(ATMSBatchDriver driver, List<String> incidentList)  
     31    public ATMSBatchViewer(ATMSBatchDriver driver, List<String> incidentList) 
    3132    { 
    3233        initComponents(); 
    33         this.driver = driver;  
     34        this.driver = driver; 
    3435        this.incidents = incidentList; 
    3536        lstIncidents.setModel(new javax.swing.AbstractListModel<String>() 
    3637        { 
    37             public int getSize() { return incidents.size(); } 
    38             public String getElementAt(int i) { return incidents.get(i); } 
    39         });         
     38            public int getSize() 
     39            { 
     40                return incidents.size(); 
     41            } 
     42 
     43            public String getElementAt(int i) 
     44            { 
     45                return incidents.get(i); 
     46            } 
     47        }); 
    4048    } 
    4149 
    42     public void update(String currentTime, String atmsTime, Queue<String> events) 
     50    public void update(String currentTime, String atmsTime, List<TrafficEvent> events) 
    4351    { 
    4452        lstEvents.setModel(new MyListModel(events)); 
    45         txtClockTime.setText(currentTime + " / " +atmsTime); 
     53        txtClockTime.setText(currentTime + " / " + atmsTime); 
    4654    } 
     55 
    4756    class MyListModel extends AbstractListModel<String> 
    4857    { 
    49             String[] strings = { "item 1", "item 2" }; 
    50             public MyListModel(Queue<String> events) 
    51             { 
    52                 strings = events.toArray(new String[events.size()]);                
    53             } 
    54             public int getSize() { return strings.length; } 
    55             public String getElementAt(int i) { return strings[i]; }         
     58 
     59        TrafficEvent[] strings;// = { "item 1", "item 2" }; 
     60 
     61        public MyListModel(List<TrafficEvent> events) 
     62        { 
     63            strings = events.toArray(new TrafficEvent[events.size()]); 
     64        } 
     65 
     66        public int getSize() 
     67        { 
     68            return strings.length; 
     69        } 
     70 
     71        public String getElementAt(int i) 
     72        { 
     73            return strings[i].rawString; 
     74        } 
    5675    } 
     76 
    5777    /** 
    5878     * This method is called from within the constructor to initialize the form. 
     
    7090        txtClockTime = new javax.swing.JLabel(); 
    7191        pnlIncidents = new javax.swing.JPanel(); 
    72         btnClear = new javax.swing.JButton(); 
    7392        jScrollPane1 = new javax.swing.JScrollPane(); 
    7493        lstIncidents = new javax.swing.JList<>(); 
     94        btnClear = new javax.swing.JButton(); 
    7595 
    7696        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
     
    112132        ); 
    113133 
     134        lstIncidents.setFont(new java.awt.Font("Noto Mono", 0, 15)); // NOI18N 
     135        lstIncidents.setModel(new javax.swing.AbstractListModel<String>() 
     136        { 
     137            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; 
     138            public int getSize() { return strings.length; } 
     139            public String getElementAt(int i) { return strings[i]; } 
     140        }); 
     141        lstIncidents.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); 
     142        jScrollPane1.setViewportView(lstIncidents); 
     143 
    114144        btnClear.setText("Clear Incident"); 
    115145        btnClear.addActionListener(new java.awt.event.ActionListener() 
     
    126156            pnlIncidentsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
    127157            .addGroup(pnlIncidentsLayout.createSequentialGroup() 
    128                 .addComponent(btnClear) 
     158                .addGroup(pnlIncidentsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     159                    .addComponent(btnClear) 
     160                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 211, javax.swing.GroupLayout.PREFERRED_SIZE)) 
    129161                .addGap(0, 0, Short.MAX_VALUE)) 
    130162        ); 
     
    132164            pnlIncidentsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
    133165            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlIncidentsLayout.createSequentialGroup() 
    134                 .addGap(185, 185, 185) 
     166                .addContainerGap() 
     167                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) 
     168                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
    135169                .addComponent(btnClear) 
    136170                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    137171        ); 
    138  
    139         lstIncidents.setFont(new java.awt.Font("Noto Mono", 0, 15)); // NOI18N 
    140         lstIncidents.setModel(new javax.swing.AbstractListModel<String>() 
    141         { 
    142             String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; 
    143             public int getSize() { return strings.length; } 
    144             public String getElementAt(int i) { return strings[i]; } 
    145         }); 
    146         lstIncidents.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); 
    147         jScrollPane1.setViewportView(lstIncidents); 
    148172 
    149173        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     
    152176            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
    153177            .addGroup(layout.createSequentialGroup() 
    154                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) 
    155                     .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() 
    156                         .addContainerGap() 
    157                         .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 211, javax.swing.GroupLayout.PREFERRED_SIZE) 
    158                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
     178                .addGap(1, 1, 1) 
     179                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
     180                    .addGroup(layout.createSequentialGroup() 
     181                        .addGap(12, 12, 12) 
    159182                        .addComponent(pnlIncidents, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    160183                    .addComponent(pnlEvents, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
    161                 .addGap(0, 27, Short.MAX_VALUE)) 
     184                .addGap(0, 26, Short.MAX_VALUE)) 
    162185        ); 
    163186        layout.setVerticalGroup( 
     
    166189                .addComponent(pnlEvents, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
    167190                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
    168                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
    169                     .addComponent(pnlIncidents, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
    170                     .addGroup(layout.createSequentialGroup() 
    171                         .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) 
    172                         .addGap(0, 0, Short.MAX_VALUE))) 
     191                .addComponent(pnlIncidents, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
    173192                .addContainerGap()) 
    174193        ); 
     
    179198    private void btnClearActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnClearActionPerformed 
    180199    {//GEN-HEADEREND:event_btnClearActionPerformed 
    181         String selectedItem =  lstIncidents.getSelectedValue(); 
     200        String selectedItem = lstIncidents.getSelectedValue(); 
    182201        if (selectedItem == null) 
    183202        { 
     
    187206        { 
    188207            System.out.println("Clicked Incident:" + selectedItem); 
    189             if (driver != null) driver.clearIncident(selectedItem); 
     208            if (driver != null) 
     209            { 
     210                driver.clearIncident(selectedItem); 
     211            } 
    190212            lstIncidents.clearSelection(); 
    191213            // Remove selectedItem from list model; 
     
    201223     * @param args the command line arguments 
    202224     */ 
    203     public static void main(String args[]) { 
     225    public static void main(String args[]) 
     226    { 
    204227        /* Set the Nimbus look and feel */ 
    205228        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
     
    207230         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html  
    208231         */ 
    209         try { 
    210             for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
    211                 if ("Nimbus".equals(info.getName())) { 
     232        try 
     233        { 
     234            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) 
     235            { 
     236                if ("Nimbus".equals(info.getName())) 
     237                { 
    212238                    javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
    213239                    break; 
    214240                } 
    215241            } 
    216         } catch (ClassNotFoundException ex) { 
     242        } 
     243        catch (ClassNotFoundException ex) 
     244        { 
    217245            java.util.logging.Logger.getLogger(ATMSBatchViewer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    218         } catch (InstantiationException ex) { 
     246        } 
     247        catch (InstantiationException ex) 
     248        { 
    219249            java.util.logging.Logger.getLogger(ATMSBatchViewer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    220         } catch (IllegalAccessException ex) { 
     250        } 
     251        catch (IllegalAccessException ex) 
     252        { 
    221253            java.util.logging.Logger.getLogger(ATMSBatchViewer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    222         } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
     254        } 
     255        catch (javax.swing.UnsupportedLookAndFeelException ex) 
     256        { 
    223257            java.util.logging.Logger.getLogger(ATMSBatchViewer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    224258        } 
     
    226260 
    227261        /* Create and display the form */ 
    228         java.awt.EventQueue.invokeLater(new Runnable() { 
    229             public void run() { 
    230                 Queue<String> sample = new LinkedList<String>(); 
    231                 sample.add("Greetings"); 
    232                 sample.add("Earthling"); 
    233                 List<String> items = new ArrayList<String>(); 
    234                 items.add("Able"); items.add("Baker"); 
    235                 ATMSBatchViewer view = new ATMSBatchViewer(null,items); 
    236                 view.setVisible(true); 
    237                 view.update("01", "02", sample); 
    238                  
     262        java.awt.EventQueue.invokeLater(new Runnable() 
     263        { 
     264            public void run() 
     265            { 
     266                try 
     267                { 
     268                    TrafficEvent alpha = new TrafficEvent("181 00:01:30 405 S 0.6 11.0 G"); 
     269                    TrafficEvent beta = new TrafficEvent("183 00:12:30 405 S 0.6 11.0 G"); 
     270                    TrafficEvent charly = new TrafficEvent("181 00:22:00 5 S 0.6 11.0 G"); 
     271                    LinkedList<TrafficEvent> sample = new LinkedList<TrafficEvent>(); 
     272                    sample.add(alpha); 
     273                    sample.add(beta); 
     274                    List<String> items = new ArrayList<String>(); 
     275                    items.add("180"); 
     276                    items.add("1291"); 
     277                    ATMSBatchViewer view = new ATMSBatchViewer(null, items); 
     278                    view.setVisible(true); 
     279                    view.update("01", "02", sample); 
     280                } 
     281                catch (ParseException ex) 
     282                { 
     283                    Logger.getLogger(ATMSBatchViewer.class.getName()).log(Level.SEVERE, null, ex); 
     284                } 
     285 
    239286            } 
    240287        }); 
Note: See TracChangeset for help on using the changeset viewer.