1 package sellwin.gui; 2 3 import sellwin.domain.*; 4 import sellwin.utils.*; 5 6 import javax.swing.*; 7 import javax.swing.event.*; 8 import javax.swing.border.*; 9 import java.awt.*; 10 import java.awt.event.*; 11 import java.util.*; 12 13 17 21 public class ContactsPanel extends JPanel implements GUIChars { 22 private Whiteboard wb = null; 23 private Opportunity currentOpp = null; 24 private ContactsPanel thisPanel = null; 25 private JPopupMenu popup = new JPopupMenu(); 26 27 private javax.swing.JPanel buttonPanel; 28 private javax.swing.JMenuItem deleteMenuItem; 29 private javax.swing.JButton addButton; 30 private javax.swing.JButton applyButton; 31 private final javax.swing.JPanel mainPanel = new JPanel(); 32 private javax.swing.JLabel contactsLabel; 33 private AddressPanel addressPanel = new AddressPanel(); 34 private javax.swing.JScrollPane jScrollPane1; 35 private javax.swing.JList contactsList; 36 private javax.swing.JComboBox stateCombo; 37 private javax.swing.JTextField miField; 38 private javax.swing.JTextField firstNameField; 39 40 43 public ContactsPanel() { 44 super(); 45 46 thisPanel = this; 47 48 wb = MainWindow.getWhiteboard(); 49 initComponents(); 50 51 setFonts(); 52 setColors(); 53 setLang(); 54 55 applyButton.addActionListener( 56 new ActionListener() { 57 public void actionPerformed(ActionEvent e) { 58 Contact c = getContactFromScreen(); 59 60 Contact existingContact; 61 62 int index = contactsList.getSelectedIndex(); 63 64 if (index >= 0) { 65 ArrayList contacts = wb.getCurrentOpportunity().getContacts(); 66 existingContact = (Contact)(contacts.get(index)); 67 } else { 68 JOptionPane.showMessageDialog(thisPanel, 69 "Select a contact first.", "Error", 70 JOptionPane.ERROR_MESSAGE); 71 return; 72 } 73 74 try { 75 76 if (existingContact != null) { 77 Contact.copyFields(existingContact, c); 78 wb.updateContact(existingContact); 79 refreshOpportunity(); JOptionPane.showMessageDialog(thisPanel, 81 "Success", "Contact Updated", 82 JOptionPane.INFORMATION_MESSAGE); 83 } 84 } catch (Exception x) { 85 ErrorHandler.show(thisPanel, x); 86 } 87 } 88 } 89 ); 90 91 addButton.addActionListener( 92 new ActionListener() { 93 public void actionPerformed(ActionEvent e) { 94 try { 95 Opportunity opp = wb.getCurrentOpportunity(); 96 if (opp == null) { 97 JOptionPane.showMessageDialog(thisPanel, 98 wb.getLang().getString("selectOpp"), 99 wb.getLang().getString("error"), 100 JOptionPane.INFORMATION_MESSAGE); 101 return; 102 } 103 Contact c = getContactFromScreen(); 104 wb.addContact(c); 105 currentOpp.addContact(c); 106 refreshOpportunity(); 107 JOptionPane.showMessageDialog(thisPanel, 108 wb.getLang().getString("contactAdded"), 109 wb.getLang().getString("success"), 110 JOptionPane.INFORMATION_MESSAGE); 111 addressPanel.clear(); 112 } catch (AngError x) { 113 ErrorHandler.show(thisPanel, x); 114 } 115 } 116 } 117 ); 118 119 deleteMenuItem.addActionListener( 120 new ActionListener() { 121 public void actionPerformed(ActionEvent e) { 122 try { 123 int index = contactsList.getSelectedIndex(); 124 if (index >= 0) { 125 ArrayList contacts = wb.getCurrentOpportunity().getContacts(); 126 Contact currentContact = (Contact)(contacts.get(index)); 127 wb.deleteContact(currentContact.getPK()); 128 contacts.remove(index); 129 refreshOpportunity(); 130 } 131 } catch (Exception f) { 132 ErrorHandler.show(thisPanel, f); 133 } 134 } 135 } 136 ); 137 138 139 140 contactsList.addMouseListener( 141 new MouseAdapter() { 142 public void mousePressed(MouseEvent e) { 143 if (e.isPopupTrigger()) 144 popup.show(contactsList, e.getX(), e.getY()); 145 } 146 147 public void mouseReleased(MouseEvent e) { 148 if (e.isPopupTrigger()) 149 popup.show(contactsList, e.getX(), e.getY()); 150 } 151 152 public void mouseClicked(MouseEvent e) { 153 if (e.isPopupTrigger()) { 154 popup.show(contactsList, e.getX(), e.getY()); 155 return; 156 } 157 158 159 switch (e.getClickCount()) { 160 case 1: 161 int index = contactsList.getSelectedIndex(); 162 if (index < 0) return; 163 ArrayList contacts = wb.getCurrentOpportunity().getContacts(); 164 Contact x = (Contact)(contacts.get(index)); 165 if (x != null) 166 displayContact(x); 167 else 168 System.out.println("invalid contact lookup"); 169 break; 170 default: 171 break; 172 } 173 } 174 } 175 ); 176 177 createPopup(this); 178 } 179 180 184 private final void createPopup(Component c) { 185 popup.add(deleteMenuItem); 186 187 c.addMouseListener(new MouseAdapter() { 188 public void mousePressed(MouseEvent e) { 189 if (e.isPopupTrigger()) 190 popup.show(mainPanel, e.getX(), e.getY()); 191 } 192 193 public void mouseClicked(MouseEvent e) { 194 if (e.isPopupTrigger()) 195 popup.show(mainPanel, e.getX(), e.getY()); 196 } 197 198 public void mouseReleased(MouseEvent e) { 199 if (e.isPopupTrigger()) 200 popup.show(mainPanel, e.getX(), e.getY()); 201 } 202 }); 203 } 204 205 209 public final void displayContact(Contact x) { 210 clearContact(); 211 addressPanel.setAddress(x.getAddress()); 212 } 213 214 217 public final void clearContact() { 218 Component[] children = getComponents(); 219 for (int i=0;i<children.length;i++) { 220 if (children[i] instanceof JTextField) 221 ((JTextField)children[i]).setText(""); 222 } 223 } 224 225 229 public final Contact getContactFromScreen() { 230 Address c = addressPanel.getAddress(); 231 Contact contact = new Contact(); 232 contact.setAddress(c); 233 return contact; 234 } 235 236 239 public final void refreshOpportunity() { 240 currentOpp = wb.getCurrentOpportunity(); 241 DefaultListModel mod = new DefaultListModel(); 242 ArrayList contacts = currentOpp.getContacts(); 243 244 Contact contact = null; 245 for (int i=0;i<contacts.size();i++) { 246 contact = (Contact)(contacts.get(i)); 247 mod.addElement(contact.getAddress().getFormattedName()); 248 } 249 250 contactsList.setModel(mod); 251 252 if (contacts.size() > 0) { 253 contactsList.setSelectedIndex(0); 254 displayContact((Contact)contacts.get(0)); 255 } 256 } 257 258 261 public final void setColors() { 262 contactsLabel.setForeground(MainWindow.LETTERS); 263 } 264 265 268 public final void setFonts() { 269 contactsLabel.setFont(MainWindow.LABEL_FONT); 270 contactsList.setFont(MainWindow.FIELD_FONT); 271 addButton.setFont(MainWindow.LABEL_FONT); 272 deleteMenuItem.setFont(MainWindow.LABEL_FONT); 273 applyButton.setFont(MainWindow.LABEL_FONT); 274 } 275 276 279 private final void initComponents() { 280 buttonPanel = new JPanel(); 281 addButton = new JButton(); 282 deleteMenuItem = new JMenuItem(); 283 applyButton = new JButton(); 284 contactsLabel = new JLabel(); 285 jScrollPane1 = new JScrollPane(); 286 contactsList = new JList(); 287 288 setLayout(new java.awt.BorderLayout ()); 289 290 291 deleteMenuItem.setText("Delete"); 292 293 addButton.setText("Add"); 294 applyButton.setText("Apply"); 295 buttonPanel.add(addButton); 296 buttonPanel.add(applyButton); 297 298 add(buttonPanel, java.awt.BorderLayout.SOUTH); 299 300 mainPanel.setLayout(new java.awt.GridBagLayout ()); 301 java.awt.GridBagConstraints gridBagConstraints1; 302 303 mainPanel.setBorder(new javax.swing.border.EtchedBorder ()); 304 305 jScrollPane1.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 306 jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 307 jScrollPane1.setMinimumSize(new Dimension(300, 100)); 308 jScrollPane1.setViewportView(contactsList); 309 310 gridBagConstraints1 = new java.awt.GridBagConstraints (); 311 gridBagConstraints1.gridwidth = 3; 312 gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL; 313 gridBagConstraints1.insets = new Insets(Prefs.I_TOP,Prefs.I_LF,Prefs.I_BOTT,Prefs.I_RT); 314 gridBagConstraints1.gridx = 1; 315 gridBagConstraints1.gridy = 0; 316 mainPanel.add(jScrollPane1, gridBagConstraints1); 317 318 addressPanel.setBorder(new TitledBorder("Contact Address")); 319 gridBagConstraints1 = new java.awt.GridBagConstraints (); 320 gridBagConstraints1.gridx = 1; 321 gridBagConstraints1.gridy = 1; 322 mainPanel.add(addressPanel, gridBagConstraints1); 323 324 add(mainPanel, java.awt.BorderLayout.CENTER); 325 326 } 327 328 334 private final Contact checkInList(Contact c) { 335 ArrayList contacts = wb.getCurrentOpportunity().getContacts(); 336 Contact contact = null; 337 for (int i=0;i<contacts.size();i++) { 338 contact = (Contact)(contacts.get(i)); 339 if (contact.getAddress().getFormattedName().equals( c.getAddress().getFormattedName())) { 340 return contact; 341 } 342 } 343 return null; 344 } 345 346 349 public final void clearOpportunity() { 350 DefaultListModel mod = new DefaultListModel(); 351 contactsList.setModel(mod); 352 } 353 354 357 public final void setLang() { 358 addButton.setText(wb.getLang().getString("add")); 359 deleteMenuItem.setText(wb.getLang().getString("delete")); 360 applyButton.setText(wb.getLang().getString("apply")); 361 addressPanel.setBorder( 362 new TitledBorder( 363 null, 364 wb.getLang().getString("contactAddress"), 365 TitledBorder.DEFAULT_JUSTIFICATION, 366 TitledBorder.DEFAULT_POSITION, 367 MainWindow.LABEL_FONT, 368 MainWindow.LETTERS 369 ) 370 ); 371 } 372 } 373 | Popular Tags |