1 package sellwin.gui; 2 3 import sellwin.domain.*; 4 import javax.swing.*; 5 import javax.swing.event.*; 6 import javax.swing.border.*; 7 import java.awt.*; 8 import java.awt.event.*; 9 import java.util.*; 10 11 15 22 public class LeadsDialog extends JDialog implements GUIChars { 23 private int currentLeadIndex, currentCampaignIndex; 24 private Whiteboard wb; 25 private JScrollPane scrollPane, scroller; 26 27 private ArrayList camps; private ArrayList campaignLeads; 30 private JDialog thisDialog; 31 private final static int STRUT_LEN = 3; 32 33 private JLabel label1 = new JLabel("Campaigns:"); 34 private JTable campaigns = new JTable(); 35 private JButton detailsButton = new JButton("Show Leads"); 36 private JButton closeButton = new JButton("Close"); 37 private JLabel label2 = new JLabel("Leads:"); 38 private JTable leads = new JTable(); 39 private JButton makeButton = new JButton("Convert to Opportunity"); 40 private CampaignTableModel campaignModel; 41 private LeadTableModel leadsModel; 42 43 46 public LeadsDialog() { 47 super(); 48 49 thisDialog = this; 50 wb = MainWindow.getWhiteboard(); 51 setTitle(wb.getLang().getString("salesLeads")); 52 setFonts(); 53 setColors(); 54 55 56 getContentPane().setLayout(new BorderLayout()); 57 58 GridBagLayout gbl = new GridBagLayout(); 59 GridBagConstraints gbc = new GridBagConstraints(); 60 JPanel mainPanel = new JPanel(); 61 mainPanel.setBorder(new EtchedBorder()); 62 mainPanel.setLayout(gbl); 63 64 mainPanel.add(Box.createHorizontalStrut(STRUT_LEN)); 65 gbc.gridwidth = GridBagConstraints.REMAINDER; 66 gbc.anchor = GridBagConstraints.WEST; 67 scrollPane = new JScrollPane(campaigns); 68 scrollPane.setBorder(new TitledBorder("Campaigns")); 69 scrollPane.setPreferredSize(new Dimension(600,125)); 70 scrollPane.setMinimumSize(new Dimension(600,125)); 71 mainPanel.add(scrollPane, gbc); 72 73 mainPanel.add(Box.createHorizontalStrut(STRUT_LEN)); 74 gbc.gridwidth = GridBagConstraints.REMAINDER; 75 gbc.anchor = GridBagConstraints.WEST; 76 scroller = new JScrollPane(leads); 77 scroller.setPreferredSize(new Dimension(600,125)); 78 scroller.setMinimumSize(new Dimension(600,125)); 79 scroller.setBorder(new TitledBorder("Leads")); 80 mainPanel.add(scroller, gbc); 81 82 JPanel buttonPanel = new JPanel(); 83 buttonPanel.add(makeButton); 84 buttonPanel.add(detailsButton); 85 buttonPanel.add(closeButton); 86 87 getContentPane().add(mainPanel, BorderLayout.CENTER); 88 getContentPane().add(buttonPanel, BorderLayout.SOUTH); 89 90 makeButton.addActionListener( 91 new ActionListener() { 92 public void actionPerformed(ActionEvent e) { 93 if (campaigns.getSelectedRow() < 0) { 94 JOptionPane.showMessageDialog( 95 thisDialog, "Please select a campaign first.", 96 "Error", JOptionPane.INFORMATION_MESSAGE); 97 return; 98 } 99 if (leads.getSelectedRow() < 0) { 100 JOptionPane.showMessageDialog( 101 thisDialog, "Please select a lead first.", 102 "Error", JOptionPane.INFORMATION_MESSAGE); 103 return; 104 } 105 convert(); 106 107 } 108 } 109 ); 110 111 detailsButton.addActionListener( 112 new ActionListener() { 113 public void actionPerformed(ActionEvent e) { 114 loadLeads(currentCampaignIndex); 115 } 116 } 117 ); 118 119 closeButton.addActionListener( 120 new ActionListener() { 121 public void actionPerformed(ActionEvent e) { 122 setVisible(false); 123 dispose(); 124 } 125 } 126 ); 127 128 campaigns.setPreferredScrollableViewportSize( 129 new Dimension(500,70)); 130 campaigns.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 131 campaigns.getSelectionModel().addListSelectionListener( 132 new ListSelectionListener() { 133 public void valueChanged(ListSelectionEvent e) { 134 if (e.getValueIsAdjusting()) return; ListSelectionModel lsm = (ListSelectionModel)e.getSource(); 136 137 if (!lsm.isSelectionEmpty()) 138 currentCampaignIndex = lsm.getMinSelectionIndex(); 139 } 140 } 141 ); 142 143 leads.setPreferredScrollableViewportSize( 144 new Dimension(500,70)); 145 leads.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 146 leads.getSelectionModel().addListSelectionListener( 147 new ListSelectionListener() { 148 public void valueChanged(ListSelectionEvent e) { 149 if (e.getValueIsAdjusting()) return; ListSelectionModel lsm = (ListSelectionModel)e.getSource(); 151 152 if (!lsm.isSelectionEmpty()) 153 currentLeadIndex = lsm.getMinSelectionIndex(); 154 } 155 } 156 ); 157 158 getRootPane().setDefaultButton(makeButton); 159 campaignModel = new CampaignTableModel(new ArrayList()); 160 campaigns.setModel(campaignModel); 161 leadsModel = new LeadTableModel(new ArrayList()); 162 leads.setModel(leadsModel); 163 setLang(); 164 setSize(661,320); 165 } 166 167 170 public final void loadCampaigns() { 171 try { 172 camps = wb.getCampaigns(); 173 if ((camps == null) || (camps.size() <= 0)) return; 174 campaignModel = new CampaignTableModel(camps); 175 campaigns.setModel(campaignModel); 176 if (camps.size() > 0) 177 campaigns.setRowSelectionInterval(0,0); 178 } catch (AngError e) { 179 ErrorHandler.show(thisDialog, e); 180 } 181 } 182 183 189 public final void loadLeads(int campIndex) { 190 Campaign c = (Campaign)camps.get(campIndex); 191 try { 192 campaignLeads = wb.getCampaignLeads(c.getPK()); 193 if ((campaignLeads == null) || (campaignLeads.size() <= 0)) return; 194 leadsModel = new LeadTableModel(campaignLeads); 195 leads.setModel(leadsModel); 196 } catch (AngError e) { 197 ErrorHandler.show(thisDialog, e); 198 } 199 } 200 201 205 public final void setEnabled(boolean f) { 206 Component[] children = getComponents(); 207 for (int i=0;i<children.length;i++) 208 children[i].setEnabled(f); 209 } 210 211 214 public final void convert() { 215 CampaignTableModel model = (CampaignTableModel)(campaigns.getModel()); 216 Campaign camp = model.getCampaign(campaigns.getSelectedRow()); 217 Lead l = (Lead)campaignLeads.get(currentLeadIndex); 218 if (l.getConverted().booleanValue()) { 219 JOptionPane.showMessageDialog( 220 thisDialog, 221 "Lead already converted, please select another campaign.", 222 "Error", JOptionPane.INFORMATION_MESSAGE); 223 return; 224 } 225 226 String val = JOptionPane.showInputDialog( 227 wb.getLang().getString("enterOpp")); 228 229 Opportunity newOpp = new Opportunity(val, wb.getCurrentUser().getID()); 230 newOpp.setLeadPK(l.getPK()); 231 newOpp.setStage(Opportunity.STAGE_IDENTIFIED); 232 newOpp.setPrimeSalesPerson(l.getContactedBy()); 233 Customer cust = new Customer(); 234 cust.setName(l.getCompany()); 235 Address contact = l.getAddress(); 236 cust.setContact(contact); 237 newOpp.setCustomer(cust); 238 try { 239 ArrayList groups = wb.getGroupsForUser(); 240 UserGroup ug; 241 ArrayList groupNames = new ArrayList(); 242 for (int x=0;x<groups.size();x++) { 243 ug = (UserGroup)groups.get(x); 244 groupNames.add(ug.getName()); 245 } 246 Object [] groupNamesList = groupNames.toArray(); 247 String gName = (String )JOptionPane.showInputDialog( 248 thisDialog, 249 wb.getLang().getString("chooseGroup"), 250 wb.getLang().getString("selectGroup"), 251 JOptionPane.PLAIN_MESSAGE, 252 null, 253 groupNamesList, 254 groupNamesList[0]); 255 newOpp.setGroupName(gName); 256 257 newOpp.setPK(wb.addOpportunity(newOpp)); 258 l.setConverted(new Boolean (true)); 259 LeadTableModel leadsModel = (LeadTableModel)(leads.getModel()); 260 leads.tableChanged(new TableModelEvent(leadsModel)); 261 wb.updateLead(camp.getPK(), l); 262 wb.setCurrentOpportunity(newOpp); MainWindow.refreshOpportunity(); 264 } catch (Exception e) { 265 e.printStackTrace(); 266 } 267 JOptionPane.showMessageDialog( 268 thisDialog, 269 "Lead successfully converted to Opportunity!", 270 "Success", 271 JOptionPane.INFORMATION_MESSAGE); 272 } 273 274 277 public final void setColors() { 278 label1.setForeground(Color.black); 279 label2.setForeground(Color.black); 280 } 281 282 285 public final void setFonts() { 286 label1.setFont(MainWindow.LABEL_FONT); 287 campaigns.setFont(MainWindow.FIELD_FONT); 288 detailsButton.setFont(MainWindow.LABEL_FONT); 289 closeButton.setFont(MainWindow.LABEL_FONT); 290 label2.setFont(MainWindow.LABEL_FONT); 291 leads.setFont(MainWindow.FIELD_FONT); 292 makeButton.setFont(MainWindow.LABEL_FONT); 293 } 294 295 298 public final void setLang() { 299 campaignModel.setLang(); 300 leadsModel.setLang(); 301 setTitle(wb.getLang().getString("salesLeads")); 302 scrollPane.setBorder( 303 new TitledBorder( 304 null, 305 wb.getLang().getString("campaigns"), 306 TitledBorder.DEFAULT_JUSTIFICATION, 307 TitledBorder.DEFAULT_POSITION, 308 MainWindow.LABEL_FONT, 309 MainWindow.LETTERS 310 ) 311 ); 312 closeButton.setText(wb.getLang().getString("close")); 313 detailsButton.setText(wb.getLang().getString("showLeads")); 314 makeButton.setText(wb.getLang().getString("convert")); 315 scroller.setBorder( 316 new TitledBorder( 317 null, 318 wb.getLang().getString("leads"), 319 TitledBorder.DEFAULT_JUSTIFICATION, 320 TitledBorder.DEFAULT_POSITION, 321 MainWindow.LABEL_FONT, 322 MainWindow.LETTERS 323 ) 324 ); 325 } 326 } 327 | Popular Tags |