source: tmcsimulator/trunk/src/tmcsim/client/ATMSBatchViewer.java @ 152

Revision 152, 11.6 KB checked in by jdalbey, 9 years ago (diff)

Coordinator.java: new method getATMStime added for use by ATMSBatchDriver.

Line 
1
2package tmcsim.client;
3
4import java.util.ArrayList;
5import java.util.HashSet;
6import java.util.LinkedList;
7import java.util.List;
8import java.util.Queue;
9import java.util.Set;
10import java.util.Vector;
11import javax.swing.AbstractListModel;
12import javax.swing.JLabel;
13import javax.swing.JList;
14import javax.swing.JOptionPane;
15import tmcsim.cadsimulator.CADServer;
16
17/**
18 *
19 * @author jdalbey
20 */
21public class ATMSBatchViewer extends javax.swing.JFrame 
22{
23    /** Reference to the driver associated with this GUI */
24    private ATMSBatchDriver driver; 
25    private final List<String> incidents;
26    /**
27     * Creates new form ATMSBatchViewer.
28     * @param incidents a list of incidents to show in a list.
29     */
30    public ATMSBatchViewer(ATMSBatchDriver driver, List<String> incidentList) 
31    {
32        initComponents();
33        this.driver = driver; 
34        this.incidents = incidentList;
35        lstIncidents.setModel(new javax.swing.AbstractListModel<String>()
36        {
37            public int getSize() { return incidents.size(); }
38            public String getElementAt(int i) { return incidents.get(i); }
39        });       
40    }
41
42    public void update(String currentTime, String atmsTime, Queue<String> events)
43    {
44        lstEvents.setModel(new MyListModel(events));
45        txtClockTime.setText(currentTime + " / " +atmsTime);
46    }
47    class MyListModel extends AbstractListModel<String>
48    {
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]; }       
56    }
57    /**
58     * This method is called from within the constructor to initialize the form.
59     * WARNING: Do NOT modify this code. The content of this method is always
60     * regenerated by the Form Editor.
61     */
62    @SuppressWarnings("unchecked")
63    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
64    private void initComponents()
65    {
66
67        pnlEvents = new javax.swing.JPanel();
68        scrollEvents = new javax.swing.JScrollPane();
69        lstEvents = new javax.swing.JList<>();
70        txtClockTime = new javax.swing.JLabel();
71        pnlIncidents = new javax.swing.JPanel();
72        btnClear = new javax.swing.JButton();
73        jScrollPane1 = new javax.swing.JScrollPane();
74        lstIncidents = new javax.swing.JList<>();
75
76        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
77
78        lstEvents.setFont(new java.awt.Font("Noto Mono", 0, 12)); // NOI18N
79        lstEvents.setModel(new javax.swing.AbstractListModel<String>()
80        {
81            String[] strings = { "item 1", "item 2" };
82            public int getSize() { return strings.length; }
83            public String getElementAt(int i) { return strings[i]; }
84        });
85        scrollEvents.setViewportView(lstEvents);
86
87        txtClockTime.setFont(new java.awt.Font("Noto Sans", 1, 14)); // NOI18N
88        txtClockTime.setText("0:00:00");
89
90        javax.swing.GroupLayout pnlEventsLayout = new javax.swing.GroupLayout(pnlEvents);
91        pnlEvents.setLayout(pnlEventsLayout);
92        pnlEventsLayout.setHorizontalGroup(
93            pnlEventsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
94            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlEventsLayout.createSequentialGroup()
95                .addContainerGap(74, Short.MAX_VALUE)
96                .addComponent(scrollEvents, javax.swing.GroupLayout.PREFERRED_SIZE, 354, javax.swing.GroupLayout.PREFERRED_SIZE)
97                .addGap(59, 59, 59))
98            .addGroup(pnlEventsLayout.createSequentialGroup()
99                .addGap(112, 112, 112)
100                .addComponent(txtClockTime, javax.swing.GroupLayout.PREFERRED_SIZE, 225, javax.swing.GroupLayout.PREFERRED_SIZE)
101                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
102        );
103        pnlEventsLayout.setVerticalGroup(
104            pnlEventsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
105            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlEventsLayout.createSequentialGroup()
106                .addComponent(txtClockTime, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
107                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
108                .addComponent(scrollEvents, javax.swing.GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE)
109                .addContainerGap())
110        );
111
112        btnClear.setText("Clear Incident");
113        btnClear.addActionListener(new java.awt.event.ActionListener()
114        {
115            public void actionPerformed(java.awt.event.ActionEvent evt)
116            {
117                btnClearActionPerformed(evt);
118            }
119        });
120
121        lstIncidents.setFont(new java.awt.Font("Noto Mono", 0, 15)); // NOI18N
122        lstIncidents.setModel(new javax.swing.AbstractListModel<String>()
123        {
124            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
125            public int getSize() { return strings.length; }
126            public String getElementAt(int i) { return strings[i]; }
127        });
128        lstIncidents.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
129        jScrollPane1.setViewportView(lstIncidents);
130
131        javax.swing.GroupLayout pnlIncidentsLayout = new javax.swing.GroupLayout(pnlIncidents);
132        pnlIncidents.setLayout(pnlIncidentsLayout);
133        pnlIncidentsLayout.setHorizontalGroup(
134            pnlIncidentsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
135            .addGroup(pnlIncidentsLayout.createSequentialGroup()
136                .addGroup(pnlIncidentsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
137                    .addComponent(btnClear)
138                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 211, javax.swing.GroupLayout.PREFERRED_SIZE))
139                .addGap(0, 173, Short.MAX_VALUE))
140        );
141        pnlIncidentsLayout.setVerticalGroup(
142            pnlIncidentsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
143            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlIncidentsLayout.createSequentialGroup()
144                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)
145                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
146                .addComponent(btnClear)
147                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
148        );
149
150        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
151        getContentPane().setLayout(layout);
152        layout.setHorizontalGroup(
153            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
154            .addGroup(layout.createSequentialGroup()
155                .addComponent(pnlEvents, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
156                .addContainerGap())
157            .addGroup(layout.createSequentialGroup()
158                .addGap(76, 76, 76)
159                .addComponent(pnlIncidents, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
160                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
161        );
162        layout.setVerticalGroup(
163            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
164            .addGroup(layout.createSequentialGroup()
165                .addComponent(pnlEvents, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
166                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
167                .addComponent(pnlIncidents, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
168                .addContainerGap())
169        );
170
171        pack();
172    }// </editor-fold>//GEN-END:initComponents
173
174    private void btnClearActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnClearActionPerformed
175    {//GEN-HEADEREND:event_btnClearActionPerformed
176        String selectedItem =  lstIncidents.getSelectedValue();
177        if (selectedItem == null)
178        {
179            JOptionPane.showMessageDialog(this, "No Incident Selected", "Warning", JOptionPane.INFORMATION_MESSAGE);
180        }
181        else
182        {
183            System.out.println("Clicked Incident:" + selectedItem);
184            if (driver != null) driver.clearIncident(selectedItem);
185            lstIncidents.clearSelection();
186            // Remove selectedItem from list model;
187            incidents.remove(selectedItem);
188            // Update the list displayed
189            String[] array = new String[incidents.size()];
190            array = incidents.toArray(array);
191            lstIncidents.setListData(array);
192        }
193    }//GEN-LAST:event_btnClearActionPerformed
194
195    /**
196     * @param args the command line arguments
197     */
198    public static void main(String args[]) {
199        /* Set the Nimbus look and feel */
200        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
201        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
202         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
203         */
204        try {
205            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
206                if ("Nimbus".equals(info.getName())) {
207                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
208                    break;
209                }
210            }
211        } catch (ClassNotFoundException ex) {
212            java.util.logging.Logger.getLogger(ATMSBatchViewer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
213        } catch (InstantiationException ex) {
214            java.util.logging.Logger.getLogger(ATMSBatchViewer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
215        } catch (IllegalAccessException ex) {
216            java.util.logging.Logger.getLogger(ATMSBatchViewer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
217        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
218            java.util.logging.Logger.getLogger(ATMSBatchViewer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
219        }
220        //</editor-fold>
221
222        /* Create and display the form */
223        java.awt.EventQueue.invokeLater(new Runnable() {
224            public void run() {
225                Queue<String> sample = new LinkedList<String>();
226                sample.add("Greetings");
227                sample.add("Earthling");
228                List<String> items = new ArrayList<String>();
229                items.add("Able"); items.add("Baker");
230                ATMSBatchViewer view = new ATMSBatchViewer(null,items);
231                view.setVisible(true);
232                view.update("01", "02", sample);
233               
234            }
235        });
236    }
237
238    // Variables declaration - do not modify//GEN-BEGIN:variables
239    private javax.swing.JButton btnClear;
240    private javax.swing.JScrollPane jScrollPane1;
241    private javax.swing.JList<String> lstEvents;
242    private javax.swing.JList<String> lstIncidents;
243    private javax.swing.JPanel pnlEvents;
244    private javax.swing.JPanel pnlIncidents;
245    private javax.swing.JScrollPane scrollEvents;
246    private javax.swing.JLabel txtClockTime;
247    // End of variables declaration//GEN-END:variables
248}
Note: See TracBrowser for help on using the repository browser.