KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > sellwin > gui > SalesGroupDialog


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 Sales Group Admin
17  * dialog. This screen pops up when a user
18  * selects the 'Group Admin' menu option from
19  * the MainWindow.
20  */

21 public class SalesGroupDialog extends JDialog implements GUIChars {
22     private final static int TABLE_WIDTH = 300;
23     private final static int TABLE_HEIGHT = 120;
24
25     private TreeMap members=null;
26     private TreeMap currentUsers=null;
27     private JDialog thisDialog = null;
28
29     private JPanel groupPanel = new JPanel();
30     private JScrollPane groupListScrollPane = null;
31     private JList groupList = new JList();
32
33     private JPanel userGroupPanel = new JPanel();
34     private JScrollPane userGroupListScrollPane = null;
35     private JList userGroupList = new JList();
36
37     private JPanel userSystemPanel = new JPanel();
38     private JScrollPane userSystemListScrollPane = null;
39     private JList userSystemList = new JList();
40
41     private JMenuItem addGroupMenuItem = new JMenuItem("Add");
42     private JMenuItem addUserMenuItem = new JMenuItem("Add");
43     private JMenuItem deleteUserMenuItem = new JMenuItem("Delete");
44     private JMenuItem deleteGroupMenuItem = new JMenuItem("Delete");
45     private JButton closeButton = new JButton("Close");
46     private JPopupMenu groupListPopup = new JPopupMenu();
47     private JPopupMenu userListPopup = new JPopupMenu();
48     
49     private Whiteboard wb;
50
51     private TreeMap allGroups = null;
52
53     private DefaultListModel groupListModel = null;
54     private DefaultListModel usersInSystemListModel = null;
55     private DefaultListModel usersInGroupListModel = null;
56     
57
58     /**
59      * construct a Sales Group Dialog
60      */

61     public SalesGroupDialog() {
62         super();
63         thisDialog = this;
64         wb = MainWindow.getWhiteboard();
65
66         setFonts();
67         setColors();
68
69         groupListPopup.add(addGroupMenuItem);
70         groupListPopup.add(deleteGroupMenuItem);
71
72         userListPopup.add(addUserMenuItem);
73         userListPopup.add(deleteUserMenuItem);
74
75
76         setTitle(wb.getLang().getString("salesGroupDialog"));
77         setSize(350, 575);
78         getContentPane().setLayout(new BorderLayout());
79
80         GridBagLayout gbl = new GridBagLayout();
81         GridBagConstraints gbc = new GridBagConstraints();
82         JPanel mainPanel = new JPanel();
83         mainPanel.setBorder(new EtchedBorder());
84         mainPanel.setLayout(gbl);
85  
86         gbc.gridwidth = GridBagConstraints.REMAINDER;
87         groupList.setVisibleRowCount(3);
88         groupList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
89         groupList.setPrototypeCellValue("XXXXXXXXXXXXXXXX");
90         groupList.addMouseListener(
91             new MouseAdapter() {
92                 public void mouseClicked(MouseEvent e) {
93                     if (e.getClickCount() == 1) {
94                         String JavaDoc key = (String JavaDoc)groupList.getSelectedValue();
95                         UserGroup g = null;
96                         try {
97                             allGroups = wb.getAllGroups();
98                             g = (UserGroup)(allGroups.get(key));
99                             wb.setCurrentGroup(g);
100                             setUsersInGroup(g);
101                         } catch (AngError f) {
102                             ErrorHandler.show(thisDialog, f);
103                         }
104                     }
105                 }
106             }
107         );
108         groupListScrollPane = new JScrollPane(groupList);
109         groupListScrollPane.setMinimumSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));
110         groupListScrollPane.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));
111         groupListScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
112         groupPanel.add(groupListScrollPane);
113         mainPanel.add(groupPanel, gbc);
114
115         gbc.gridwidth = GridBagConstraints.REMAINDER;
116         userGroupList.setVisibleRowCount(3);
117         userGroupList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
118         userGroupList.setPrototypeCellValue("XXXXXXXXXXXXXXXX");
119         userGroupListScrollPane = new JScrollPane(userGroupList);
120         userGroupListScrollPane.setMinimumSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));
121         userGroupListScrollPane.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));
122         userGroupListScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
123         userGroupPanel.add(userGroupListScrollPane);
124         mainPanel.add(userGroupPanel, gbc);
125
126         gbc.gridwidth = GridBagConstraints.REMAINDER;
127         userSystemList.setVisibleRowCount(3);
128         userSystemList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
129         userSystemList.setPrototypeCellValue("XXXXXXXXXXXXXXXX");
130         userSystemListScrollPane = new JScrollPane(userSystemList);
131         userSystemListScrollPane.setMinimumSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));
132         userSystemListScrollPane.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));
133         userSystemListScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
134         userSystemPanel.add(userSystemListScrollPane);
135         mainPanel.add(userSystemPanel, gbc);
136
137         getContentPane().add(mainPanel, BorderLayout.CENTER);
138
139         WindowListener l = new WindowAdapter() {
140             public void windowClosed(WindowEvent e) {
141             }
142
143             public void windowClosing(WindowEvent e) {
144                 hide();
145             }
146         };
147  
148         addWindowListener(l);
149
150         JPanel buttonPanel = new JPanel();
151         buttonPanel.add(closeButton);
152         getContentPane().add(buttonPanel, BorderLayout.SOUTH);
153
154
155         addUserMenuItem.addActionListener(
156            new ActionListener() {
157                 public void actionPerformed(ActionEvent e) {
158                     String JavaDoc selectedUserName = (String JavaDoc)userSystemList.getSelectedValue();
159                     String JavaDoc selectedGroup = (String JavaDoc)groupList.getSelectedValue();
160                     int option = JOptionPane.showConfirmDialog(thisDialog, "Add " + selectedUserName + " to " + selectedGroup + " ?");
161                     if (option != JOptionPane.YES_OPTION)
162                         return;
163
164                     UserGroup g = null;
165                     try {
166                         allGroups = wb.getAllGroups();
167                         String JavaDoc key = (String JavaDoc)groupList.getSelectedValue();
168                         g = (UserGroup)(allGroups.get(key));
169                         SalesPerson selectedUser = (SalesPerson)(currentUsers.get(userSystemList.getSelectedValue()));
170                         int i = UserGroup.findUser(g, selectedUser.getPK());
171                         if (i == -1) {
172                             wb.addUserToGroup(selectedUser, g);
173                             g.addUser(new Long JavaDoc(selectedUser.getPK()));
174                             setUsersInGroup(g);
175                         } else {
176                             JOptionPane.showMessageDialog(
177                                 thisDialog,
178                                 "The selected user was already in the group.",
179                                 "Error",
180                                 JOptionPane.ERROR_MESSAGE);
181                         }
182
183                     } catch (AngError f) {
184                         ErrorHandler.show(thisDialog, f);
185                     }
186                 }
187             }
188         );
189
190         deleteUserMenuItem.addActionListener(
191            new ActionListener() {
192                 public void actionPerformed(ActionEvent e) {
193                     deleteUserFromGroup((String JavaDoc)userGroupList.getSelectedValue());
194                 }
195             }
196         );
197
198         closeButton.addActionListener(
199            new ActionListener() {
200                 public void actionPerformed(ActionEvent e) {
201                     thisDialog.hide();
202                 }
203             }
204         );
205
206         addGroupMenuItem.addActionListener(
207            new ActionListener() {
208                 public void actionPerformed(ActionEvent e) {
209                     String JavaDoc newGroup = JOptionPane.showInputDialog("Please enter a Group name.");
210                     if ((newGroup == null) || (newGroup.length() == 0)) return;
211
212                     UserGroup g = new UserGroup(newGroup);
213                     try {
214                         wb.addUserGroup(g);
215                         updateGroups();
216                         JOptionPane.showMessageDialog(
217                                 thisDialog,
218                                 "Group Add Successful",
219                                 "Information",
220                                 JOptionPane.INFORMATION_MESSAGE);
221
222                     } catch (AngError f) {
223                         ErrorHandler.show(thisDialog, f);
224                     }
225                 }
226             }
227         );
228
229         deleteGroupMenuItem.addActionListener(
230             new ActionListener() {
231                 public void actionPerformed(ActionEvent e) {
232             
233                     String JavaDoc selected = (String JavaDoc)(groupList.getSelectedValue());
234                     int option = JOptionPane.showConfirmDialog(thisDialog, "Continue with Delete?");
235                     if (option == JOptionPane.YES_OPTION) {
236                         try {
237                             wb.deleteUserGroup(selected);
238                             DefaultListModel model = (DefaultListModel)(groupList.getModel());
239                             model.removeElement(selected);
240                         } catch (AngError f) {
241                             ErrorHandler.show(thisDialog, f);
242                         }
243                     }
244                 }
245             }
246         );
247
248         groupList.addMouseListener(new MouseAdapter() {
249             public void mousePressed(MouseEvent e) {
250                 if (e.isPopupTrigger())
251                     groupListPopup.show(groupList, e.getX(), e.getY());
252             }
253             public void mouseReleased(MouseEvent e) {
254                 if (e.isPopupTrigger())
255                     groupListPopup.show(groupList, e.getX(), e.getY());
256             }
257             public void mouseClicked(MouseEvent e) {
258                 if (e.isPopupTrigger())
259                     groupListPopup.show(groupList, e.getX(), e.getY());
260             }
261
262         });
263
264         userGroupList.addMouseListener(new MouseAdapter() {
265             public void mousePressed(MouseEvent e) {
266                 if (e.isPopupTrigger())
267                     userListPopup.show(userGroupList, e.getX(), e.getY());
268             }
269             public void mouseReleased(MouseEvent e) {
270                 if (e.isPopupTrigger())
271                     userListPopup.show(userGroupList, e.getX(), e.getY());
272             }
273             public void mouseClicked(MouseEvent e) {
274                 if (e.isPopupTrigger())
275                     userListPopup.show(userGroupList, e.getX(), e.getY());
276             }
277
278         });
279
280         setLang();
281         loadData();
282     }
283
284     /**
285      * load some data into this dialog
286      */

287     public final void loadData() {
288         setSecurity();
289         try {
290             setUsersInSystem(wb.getSalesPersons());
291             updateGroups();
292         } catch (Exception JavaDoc e) {
293             e.printStackTrace();
294         }
295     }
296
297     /**
298      * set the list of group members in the dialog list
299      * @param g the UserGroup to load the list with
300      */

301     public final void setUsersInGroup(UserGroup g) {
302         try {
303             members = wb.getGroupMembers(g.getName());
304             Object JavaDoc[] keys = members.keySet().toArray();
305             userGroupList.setListData(keys);
306         } catch (AngError e) {
307             ErrorHandler.show(thisDialog, e);
308         }
309     }
310
311     /**
312      * set the list of users in the system user's list
313      * @param users a list of SalesPersons to load with
314      */

315     public final void setUsersInSystem(TreeMap users) {
316
317         DefaultListModel model = new DefaultListModel();
318         String JavaDoc userName = null;
319         SalesPerson user=null;
320         currentUsers = users;
321
322         Object JavaDoc[] keys = users.keySet().toArray();
323
324         for (int i=0;i<keys.length;i++) {
325             model.addElement((String JavaDoc)keys[i]);
326         }
327         userSystemList.setModel(model);
328         if (keys.length > 0)
329             userSystemList.setSelectedIndex(0);
330     }
331     
332     /**
333      * update the list of user groups
334      */

335     public final void updateGroups() {
336
337         setGroupList();
338
339         String JavaDoc firstKey = (String JavaDoc)allGroups.firstKey();
340         if (firstKey != null) {
341             groupList.setSelectedIndex(0);
342             UserGroup ug = (UserGroup)allGroups.get(firstKey);
343             setUsersInGroup(ug);
344         }
345     }
346
347     private void setGroupList() {
348         try {
349             allGroups = wb.getAllGroups();
350             groupList.setListData(allGroups.keySet().toArray());
351         } catch (AngError e) {
352             ErrorHandler.show(thisDialog, e);
353         }
354     }
355     
356     /**
357      * delete a user from the group members list
358      * @param selectedUserIndex the index into the user list to
359      * delete
360      */

361     public final void deleteUserFromGroup(String JavaDoc selectedUserId) {
362         //remove it from the current selected UserGroup object
363
SalesPerson selectedUser = (SalesPerson)(currentUsers.get(selectedUserId));
364         ArrayList usersInGroup = wb.getCurrentGroup().getUsers();
365         Long JavaDoc nextPK = null;
366         for (int i=0;i<usersInGroup.size();i++) {
367             nextPK = (Long JavaDoc)usersInGroup.get(i);
368             if (selectedUser.getPK() == nextPK.longValue()) {
369                 usersInGroup.remove(i);
370                 break;
371             }
372         }
373
374         try {
375             setUsersInGroup(wb.getCurrentGroup());
376             wb.deleteUserInGroup(wb.getCurrentGroup(), selectedUser);
377         } catch (Exception JavaDoc e) {
378             e.printStackTrace();
379         }
380     }
381
382     /**
383      * set the dialog's fonts
384      */

385     public final void setFonts() {
386     
387         groupList.setFont(MainWindow.FIELD_FONT);
388         userGroupList.setFont(MainWindow.FIELD_FONT);
389         userSystemList.setFont(MainWindow.FIELD_FONT);
390
391         addGroupMenuItem.setFont(MainWindow.LABEL_FONT);
392         addUserMenuItem.setFont(MainWindow.LABEL_FONT);
393         deleteGroupMenuItem.setFont(MainWindow.LABEL_FONT);
394         deleteUserMenuItem.setFont(MainWindow.LABEL_FONT);
395     }
396
397     /**
398      * set the dialog's colors
399      */

400     public void setColors() {
401     }
402
403     /**
404      * set the dialog's fields visibility based
405      * upon the user's security creditials
406      */

407     private final void setSecurity() {
408         try {
409             if (wb.getLogin().userAdminWritable()) {
410                 addGroupMenuItem.setEnabled(true);
411                 addUserMenuItem.setEnabled(true);
412                 deleteUserMenuItem.setEnabled(true);
413                 deleteGroupMenuItem.setEnabled(true);
414             } else {
415                 addGroupMenuItem.setEnabled(false);
416                 addUserMenuItem.setEnabled(false);
417                 deleteUserMenuItem.setEnabled(false);
418                 deleteGroupMenuItem.setEnabled(false);
419             }
420         } catch (AngError e) {
421             ErrorHandler.show(thisDialog, e);
422         }
423     }
424
425     /**
426      * set the dialog's language
427      */

428     public final void setLang() {
429         setTitle(wb.getLang().getString("salesGroupDialog"));
430         addGroupMenuItem.setText(wb.getLang().getString("add"));
431         addUserMenuItem.setText(wb.getLang().getString("add"));
432         deleteUserMenuItem.setText(wb.getLang().getString("delete"));
433         deleteGroupMenuItem.setText(wb.getLang().getString("delete"));
434         closeButton.setText(wb.getLang().getString("close"));
435         userGroupPanel.setBorder(
436             new TitledBorder(
437                 null,
438                 wb.getLang().getString("groupMembers"),
439                 TitledBorder.DEFAULT_JUSTIFICATION,
440                 TitledBorder.DEFAULT_POSITION,
441                 MainWindow.LABEL_FONT,
442                 MainWindow.LETTERS
443             )
444         );
445         groupPanel.setBorder(
446             new TitledBorder(
447                 null,
448                 wb.getLang().getString("groups"),
449                 TitledBorder.DEFAULT_JUSTIFICATION,
450                 TitledBorder.DEFAULT_POSITION,
451                 MainWindow.LABEL_FONT,
452                 MainWindow.LETTERS
453             )
454         );
455         userSystemPanel.setBorder(
456             new TitledBorder(
457                 null,
458                 wb.getLang().getString("usersInSystem"),
459                 TitledBorder.DEFAULT_JUSTIFICATION,
460                 TitledBorder.DEFAULT_POSITION,
461                 MainWindow.LABEL_FONT,
462                 MainWindow.LETTERS
463             )
464         );
465     }
466 }
467
Popular Tags