source: tmcsimulator-scriptbuilder/trunk/src/event/editor/WitnessPanel.java @ 140

Revision 140, 6.7 KB checked in by bmcguffin, 8 years ago (diff)

Fixed defect #67. Removing an event and then closing the event editor window no longer causes the program to hang; a null check for the event is encountered before taking action upon close of the window.

Line 
1package event.editor;
2
3import java.awt.event.*;
4import java.util.Observable;
5import java.util.StringTokenizer;
6import scriptbuilder.structures.events.I_ScriptEvent;
7import scriptbuilder.structures.events.WitnessEvent;
8
9/**
10 *
11 * @author nathaniellehrer
12 */
13public class WitnessPanel extends javax.swing.JPanel implements I_ScriptEventEditorPanel
14{
15
16    private ActionListener removeListener;
17    private WitnessEvent event;
18
19    /**
20     * Creates new form WitnessPanel
21     */
22    public WitnessPanel()
23    {
24        initComponents();
25    }
26
27    @Override
28    public void getEventObject(I_ScriptEvent sei)
29    {
30        event = (WitnessEvent) sei;
31        StringTokenizer st = new StringTokenizer(event.witnessName);
32        if (st.hasMoreTokens())
33        {
34            txtFirstName.setText(st.nextToken());
35        }
36
37        txtLastName.setText("");
38        while (st.hasMoreTokens())
39        {
40            txtLastName.setText(txtLastName.getText() + st.nextToken());
41        }
42
43        txtPhoneNumber.setText("" + event.witnessNum);
44
45        txtAddress.setText(event.witnessAddress);
46
47    }
48
49    @Override
50    public void update(Observable o, Object arg)
51    {
52        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
53    }
54
55    @Override
56    public boolean removeAssociatedEvent()
57    {
58        event.removeThis();
59        event = null;
60        return true;
61    }
62
63    @Override
64    public void uponClose()
65    {
66        if (event != null)
67        {
68            event.witnessName = txtFirstName.getText() + " " + txtLastName.getText();
69            event.witnessNum = txtPhoneNumber.getText();
70            event.witnessAddress = txtAddress.getText();
71        }
72    }
73
74    /**
75     * This method is called from within the constructor to initialize the form.
76     * WARNING: Do NOT modify this code. The content of this method is always
77     * regenerated by the Form Editor.
78     */
79    @SuppressWarnings("unchecked")
80    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
81    private void initComponents()
82    {
83
84        jLabel1 = new javax.swing.JLabel();
85        txtFirstName = new javax.swing.JTextField();
86        jLabel2 = new javax.swing.JLabel();
87        txtLastName = new javax.swing.JTextField();
88        jLabel3 = new javax.swing.JLabel();
89        txtAddress = new javax.swing.JTextField();
90        jLabel4 = new javax.swing.JLabel();
91        txtPhoneNumber = new javax.swing.JFormattedTextField();
92
93        jLabel1.setText("First Name");
94
95        jLabel2.setText("Last Name");
96
97        jLabel3.setText("Street Address");
98
99        jLabel4.setText("Phone Number");
100
101        txtPhoneNumber.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("(###)###-####"))));
102
103        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
104        this.setLayout(layout);
105        layout.setHorizontalGroup(
106            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
107            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
108                .addContainerGap()
109                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
110                    .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
111                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
112                            .add(jLabel3)
113                            .add(jLabel1)
114                            .add(jLabel2))
115                        .add(15, 15, 15)
116                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
117                            .add(org.jdesktop.layout.GroupLayout.TRAILING, txtLastName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 547, Short.MAX_VALUE)
118                            .add(txtAddress, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 547, Short.MAX_VALUE)
119                            .add(org.jdesktop.layout.GroupLayout.TRAILING, txtFirstName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 547, Short.MAX_VALUE)))
120                    .add(org.jdesktop.layout.GroupLayout.LEADING, layout.createSequentialGroup()
121                        .add(jLabel4)
122                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
123                        .add(txtPhoneNumber, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 547, Short.MAX_VALUE)))
124                .addContainerGap())
125        );
126        layout.setVerticalGroup(
127            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
128            .add(layout.createSequentialGroup()
129                .add(47, 47, 47)
130                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
131                    .add(txtFirstName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
132                    .add(jLabel1))
133                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
134                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
135                    .add(txtLastName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
136                    .add(jLabel2))
137                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
138                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
139                    .add(txtAddress, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
140                    .add(jLabel3))
141                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
142                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
143                    .add(jLabel4)
144                    .add(txtPhoneNumber, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
145                .addContainerGap(168, Short.MAX_VALUE))
146        );
147    }// </editor-fold>//GEN-END:initComponents
148
149
150    // Variables declaration - do not modify//GEN-BEGIN:variables
151    private javax.swing.JLabel jLabel1;
152    private javax.swing.JLabel jLabel2;
153    private javax.swing.JLabel jLabel3;
154    private javax.swing.JLabel jLabel4;
155    private javax.swing.JTextField txtAddress;
156    private javax.swing.JTextField txtFirstName;
157    private javax.swing.JTextField txtLastName;
158    private javax.swing.JFormattedTextField txtPhoneNumber;
159    // End of variables declaration//GEN-END:variables
160
161}
Note: See TracBrowser for help on using the repository browser.