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 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 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 key = (String )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 selectedUserName = (String )userSystemList.getSelectedValue(); 159 String selectedGroup = (String )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 key = (String )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 (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 )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 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 selected = (String )(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 287 public final void loadData() { 288 setSecurity(); 289 try { 290 setUsersInSystem(wb.getSalesPersons()); 291 updateGroups(); 292 } catch (Exception e) { 293 e.printStackTrace(); 294 } 295 } 296 297 301 public final void setUsersInGroup(UserGroup g) { 302 try { 303 members = wb.getGroupMembers(g.getName()); 304 Object [] keys = members.keySet().toArray(); 305 userGroupList.setListData(keys); 306 } catch (AngError e) { 307 ErrorHandler.show(thisDialog, e); 308 } 309 } 310 311 315 public final void setUsersInSystem(TreeMap users) { 316 317 DefaultListModel model = new DefaultListModel(); 318 String userName = null; 319 SalesPerson user=null; 320 currentUsers = users; 321 322 Object [] keys = users.keySet().toArray(); 323 324 for (int i=0;i<keys.length;i++) { 325 model.addElement((String )keys[i]); 326 } 327 userSystemList.setModel(model); 328 if (keys.length > 0) 329 userSystemList.setSelectedIndex(0); 330 } 331 332 335 public final void updateGroups() { 336 337 setGroupList(); 338 339 String firstKey = (String )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 361 public final void deleteUserFromGroup(String selectedUserId) { 362 SalesPerson selectedUser = (SalesPerson)(currentUsers.get(selectedUserId)); 364 ArrayList usersInGroup = wb.getCurrentGroup().getUsers(); 365 Long nextPK = null; 366 for (int i=0;i<usersInGroup.size();i++) { 367 nextPK = (Long )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 e) { 378 e.printStackTrace(); 379 } 380 } 381 382 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 400 public void setColors() { 401 } 402 403 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 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 |