KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > sellwin > gui > LeadsDialog


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 // SellWin http://sourceforge.net/projects/sellwincrm
12
//Contact support@open-app.com for commercial help with SellWin
13
//This software is provided "AS IS", without a warranty of any kind.
14

15 /**
16  * This class implements the dialog that shows the
17  * sales leads and lets users convert leads to
18  * opportunities. This dialog is visible when a
19  * user selects the leads menu item from the Admin
20  * menu pull down from the main window.
21  */

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; //campaigns
28
private ArrayList campaignLeads; //leads for the currently selected campaign
29

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     /**
44      * construct a leads dialog
45      */

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; //ignore these
135
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; //ignore these
150
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     /**
168      * load the campaigns into this dialog
169      */

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     /**
184      * load the leads for a given campaign into
185      * this dialog
186      * @param campIndex the index of the campaign to
187      * find leads for
188      */

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     /**
202      * disable or enable all the components on the screen
203      * @param true if enable
204      */

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     /**
212      * convert a lead into an opportunity
213      */

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 JavaDoc 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 JavaDoc[] groupNamesList = groupNames.toArray();
247             String JavaDoc gName = (String JavaDoc)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 JavaDoc(true));
259             LeadTableModel leadsModel = (LeadTableModel)(leads.getModel());
260             leads.tableChanged(new TableModelEvent(leadsModel));
261             wb.updateLead(camp.getPK(), l);
262             wb.setCurrentOpportunity(newOpp); //make the new opp show
263
MainWindow.refreshOpportunity();
264         } catch (Exception JavaDoc 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     /**
275      * set the dialog's colors
276      */

277     public final void setColors() {
278         label1.setForeground(Color.black);
279         label2.setForeground(Color.black);
280     }
281
282     /**
283      * set the screen's fonts
284      */

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     /**
296      * set the screen's language
297      */

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