Warning: Can't use blame annotator:
svn blame failed on trunk/src/tmcsim/cadsimulator/viewer/TrafficModelViewPanel.java: ("Can't find a temporary directory: Internal error", 20014)

source: tmcsimulator/trunk/src/tmcsim/cadsimulator/viewer/TrafficModelViewPanel.java @ 231

Revision 231, 11.1 KB checked in by jdalbey, 8 years ago (diff)

Fix font problem in CADserver tabbed panels. Now uses Courier New correctly.

RevLine 
1package tmcsim.cadsimulator.viewer;
2
3import atmsdriver.model.TrafficEvent;
4import java.util.LinkedList;
5import java.util.List;
6import java.util.Observable;
7import java.util.Observer;
8import java.util.Vector;
9import javax.swing.AbstractListModel;
10import javax.swing.JOptionPane;
11import tmcsim.cadsimulator.managers.TrafficModelManager;
12
13/**
14 * Viewer for the Traffic Model that displays the event queue and the incident
15 * list.
16 *
17 * @author jdalbey
18 */
19public class TrafficModelViewPanel extends javax.swing.JPanel implements Observer
20{
21
22    /**
23     * Reference to the driver associated with this GUI
24     */
25    private TrafficModelManager driver;
26    private List<String> incidents;
27
28    /**
29     * Creates new form TrafficModelViewPanel
30     */
31    public TrafficModelViewPanel()
32    {
33        initComponents();
34    }
35
36    @Override
37    /**
38     * Refresh the display.
39     */
40    public void update(Observable obs, Object obj)
41    {
42        if (obs == null)
43        {
44            return;
45        }
46        if (obs instanceof TrafficModelManager)
47        {
48            // save reference to the model for use by button handlers
49            driver = (TrafficModelManager) obs;
50        }
51        if (obj == null)
52        {
53            return;
54        }
55        // Determine what needs updating; time, events, or incidents
56        if (obj instanceof String)
57        {
58            String currentTime = (String) obj;
59            txtClockTime.setText(currentTime);
60        }
61        if (obj instanceof Vector)
62        {
63            lstIncidents.setListData((Vector) obj);
64        }
65        if (obj instanceof LinkedList)
66        {
67            lstEvents.setModel(new MyListModel((LinkedList) obj));
68        }
69    }
70
71    /**
72     * This method is called from within the constructor to initialize the form.
73     * WARNING: Do NOT modify this code. The content of this method is always
74     * regenerated by the Form Editor.
75     */
76    @SuppressWarnings("unchecked")
77    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
78    private void initComponents()
79    {
80
81        pnlEvents = new javax.swing.JPanel();
82        scrollEvents = new javax.swing.JScrollPane();
83        lstEvents = new javax.swing.JList<>();
84        txtClockTime = new javax.swing.JLabel();
85        btnReload = new javax.swing.JButton();
86        pnlIncidents = new javax.swing.JPanel();
87        jScrollPane1 = new javax.swing.JScrollPane();
88        lstIncidents = new javax.swing.JList<>();
89        btnClear = new javax.swing.JButton();
90
91        lstEvents.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N
92        lstEvents.setModel(new javax.swing.AbstractListModel<String>()
93        {
94            String[] strings = { "item 1", "item 2" };
95            public int getSize() { return strings.length; }
96            public String getElementAt(int i) { return strings[i]; }
97        });
98        scrollEvents.setViewportView(lstEvents);
99
100        txtClockTime.setFont(new java.awt.Font("Noto Sans", 1, 14)); // NOI18N
101        txtClockTime.setText("0:00:00");
102
103        btnReload.setText("Reload");
104        btnReload.addActionListener(new java.awt.event.ActionListener()
105        {
106            public void actionPerformed(java.awt.event.ActionEvent evt)
107            {
108                btnReloadActionPerformed(evt);
109            }
110        });
111
112        javax.swing.GroupLayout pnlEventsLayout = new javax.swing.GroupLayout(pnlEvents);
113        pnlEvents.setLayout(pnlEventsLayout);
114        pnlEventsLayout.setHorizontalGroup(
115            pnlEventsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
116            .addGroup(pnlEventsLayout.createSequentialGroup()
117                .addContainerGap()
118                .addComponent(scrollEvents, javax.swing.GroupLayout.PREFERRED_SIZE, 430, javax.swing.GroupLayout.PREFERRED_SIZE)
119                .addContainerGap(20, Short.MAX_VALUE))
120            .addGroup(pnlEventsLayout.createSequentialGroup()
121                .addGap(112, 112, 112)
122                .addComponent(txtClockTime, javax.swing.GroupLayout.PREFERRED_SIZE, 225, javax.swing.GroupLayout.PREFERRED_SIZE)
123                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
124                .addComponent(btnReload)
125                .addGap(32, 32, 32))
126        );
127        pnlEventsLayout.setVerticalGroup(
128            pnlEventsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
129            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlEventsLayout.createSequentialGroup()
130                .addGroup(pnlEventsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
131                    .addComponent(txtClockTime, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
132                    .addComponent(btnReload))
133                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
134                .addComponent(scrollEvents, javax.swing.GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE)
135                .addContainerGap())
136        );
137
138        lstIncidents.setFont(new java.awt.Font("Courier New", 0, 15)); // NOI18N
139        lstIncidents.setModel(new javax.swing.AbstractListModel<String>()
140        {
141            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
142            public int getSize() { return strings.length; }
143            public String getElementAt(int i) { return strings[i]; }
144        });
145        lstIncidents.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
146        jScrollPane1.setViewportView(lstIncidents);
147
148        btnClear.setText("Clear Incident");
149        btnClear.addActionListener(new java.awt.event.ActionListener()
150        {
151            public void actionPerformed(java.awt.event.ActionEvent evt)
152            {
153                btnClearActionPerformed(evt);
154            }
155        });
156
157        javax.swing.GroupLayout pnlIncidentsLayout = new javax.swing.GroupLayout(pnlIncidents);
158        pnlIncidents.setLayout(pnlIncidentsLayout);
159        pnlIncidentsLayout.setHorizontalGroup(
160            pnlIncidentsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
161            .addGroup(pnlIncidentsLayout.createSequentialGroup()
162                .addGroup(pnlIncidentsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
163                    .addComponent(btnClear)
164                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 211, javax.swing.GroupLayout.PREFERRED_SIZE))
165                .addGap(0, 0, Short.MAX_VALUE))
166        );
167        pnlIncidentsLayout.setVerticalGroup(
168            pnlIncidentsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
169            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlIncidentsLayout.createSequentialGroup()
170                .addContainerGap()
171                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)
172                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
173                .addComponent(btnClear)
174                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
175        );
176
177        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
178        this.setLayout(layout);
179        layout.setHorizontalGroup(
180            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
181            .addGroup(layout.createSequentialGroup()
182                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
183                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
184                    .addGroup(layout.createSequentialGroup()
185                        .addGap(12, 12, 12)
186                        .addComponent(pnlIncidents, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
187                    .addComponent(pnlEvents, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
188        );
189        layout.setVerticalGroup(
190            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
191            .addGroup(layout.createSequentialGroup()
192                .addComponent(pnlEvents, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
193                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
194                .addComponent(pnlIncidents, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
195                .addContainerGap())
196        );
197    }// </editor-fold>//GEN-END:initComponents
198
199    private void btnReloadActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnReloadActionPerformed
200    {//GEN-HEADEREND:event_btnReloadActionPerformed
201        String message = "Reload will delete all events in the queue and reload the events file.\n"
202                + "This will not effect the simulation manager, and will run all events up to\n"
203                + "current simulation time.";
204        String title = "Please Confirm";
205        // display a confirmation message for the user
206        int reply = JOptionPane.showConfirmDialog(this, message, title, JOptionPane.YES_NO_OPTION);
207        if (reply == JOptionPane.YES_OPTION)
208        {
209            if (driver != null)
210            {
211                driver.loadEvents();
212            }
213        }
214    }//GEN-LAST:event_btnReloadActionPerformed
215
216    private void btnClearActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnClearActionPerformed
217    {//GEN-HEADEREND:event_btnClearActionPerformed
218        String selectedItem = lstIncidents.getSelectedValue();
219        if (selectedItem == null)
220        {
221            JOptionPane.showMessageDialog(this, "No Incident Selected", "Warning", JOptionPane.INFORMATION_MESSAGE);
222        } else
223        {
224            System.out.println("Clicked Incident:" + selectedItem);
225            if (driver != null)
226            {
227                driver.clearIncident(selectedItem);
228            }
229            lstIncidents.clearSelection();
230        }
231    }//GEN-LAST:event_btnClearActionPerformed
232
233    class MyListModel extends AbstractListModel<String>
234    {
235
236        TrafficEvent[] strings;// = { "item 1", "item 2" };
237
238        public MyListModel(List<TrafficEvent> events)
239        {
240            strings = events.toArray(new TrafficEvent[events.size()]);
241        }
242
243        public int getSize()
244        {
245            return strings.length;
246        }
247
248        public String getElementAt(int i)
249        {
250            return strings[i].rawString;
251        }
252    }
253
254
255    // Variables declaration - do not modify//GEN-BEGIN:variables
256    private javax.swing.JButton btnClear;
257    private javax.swing.JButton btnReload;
258    private javax.swing.JScrollPane jScrollPane1;
259    private javax.swing.JList<String> lstEvents;
260    private javax.swing.JList<String> lstIncidents;
261    private javax.swing.JPanel pnlEvents;
262    private javax.swing.JPanel pnlIncidents;
263    private javax.swing.JScrollPane scrollEvents;
264    private javax.swing.JLabel txtClockTime;
265    // End of variables declaration//GEN-END:variables
266}
Note: See TracBrowser for help on using the repository browser.