1 19 package org.lucane.applications.administrator.gui; 20 21 import java.util.*; 22 import java.awt.*; 23 import java.awt.event.*; 24 import javax.swing.*; 25 26 import org.lucane.applications.administrator.AdministratorPlugin; 27 import org.lucane.client.widgets.DialogBox; 28 import org.lucane.common.concepts.*; 29 30 public class GroupPanel extends JPanel 31 implements MouseListener, ActionListener 32 { 33 private transient AdministratorPlugin plugin; 34 35 private JTextField groupName; 36 private JTextArea groupDescription; 37 38 private ConceptTable groupParents; 39 private ConceptTable groupChildren; 40 private ConceptTable groupUsers; 41 private ConceptTable groupPlugins; 42 private ConceptTable groupServices; 43 44 private JButton btnUpdate; 45 private JButton btnRemove; 46 47 private JButton addParent; 48 private JButton removeParent; 49 private JButton addUser; 50 private JButton removeUser; 51 private JButton addService; 52 private JButton removeService; 53 private JButton addPlugin; 54 private JButton removePlugin; 55 56 private ConceptPanel panel; 57 58 public GroupPanel(AdministratorPlugin plugin, ConceptPanel panel) 59 { 60 super(new BorderLayout()); 61 this.plugin = plugin; 62 this.panel = panel; 63 64 JPanel subbuttonsContainer; 66 JPanel subbuttons; 67 68 groupName = new JTextField(); 70 groupName.setEnabled(false); 71 groupDescription = new JTextArea(); 72 groupParents = new ConceptTable(plugin, tr("parents")); 73 groupParents.addMouseListener(this); 74 groupChildren = new ConceptTable(plugin, tr("children")); 75 groupChildren.addMouseListener(this); 76 groupUsers = new ConceptTable(plugin, tr("users")); 77 groupUsers.addMouseListener(this); 78 groupPlugins = new ConceptTable(plugin, tr("plugins")); 79 groupPlugins.addMouseListener(this); 80 groupServices = new ConceptTable(plugin, tr("services")); 81 groupServices.addMouseListener(this); 82 83 JPanel nameAndVersion = new JPanel(new BorderLayout()); 85 nameAndVersion.add(new JLabel(tr("name")), BorderLayout.WEST); 86 nameAndVersion.add(groupName, BorderLayout.CENTER); 87 88 JPanel description = new JPanel(new BorderLayout()); 90 description.add(new JLabel(tr("description")), BorderLayout.NORTH); 91 description.add(new JScrollPane(groupDescription), BorderLayout.CENTER); 92 93 JPanel parents = new JPanel(new BorderLayout()); 95 parents.add(new JLabel(tr("group.parents")), BorderLayout.NORTH); 96 parents.add(new JScrollPane(groupParents)); 97 subbuttonsContainer = new JPanel(new BorderLayout()); 98 subbuttons = new JPanel(new GridLayout(2, 1)); 99 addParent = new JButton(tr("btn.add")); 100 addParent.addActionListener(this); 101 subbuttons.add(addParent); 102 removeParent = new JButton(tr("btn.remove")); 103 removeParent.addActionListener(this); 104 subbuttons.add(removeParent); 105 subbuttonsContainer.add(subbuttons, BorderLayout.NORTH); 106 parents.add(subbuttonsContainer, BorderLayout.EAST); 107 108 JPanel children = new JPanel(new BorderLayout()); 110 children.add(new JLabel(tr("group.children")), BorderLayout.NORTH); 111 children.add(new JScrollPane(groupChildren)); 112 113 JPanel users = new JPanel(new BorderLayout()); 115 users.add(new JLabel(tr("users")), BorderLayout.NORTH); 116 users.add(new JScrollPane(groupUsers)); 117 subbuttonsContainer = new JPanel(new BorderLayout()); 118 subbuttons = new JPanel(new GridLayout(2, 1)); 119 addUser = new JButton(tr("btn.add")); 120 addUser.addActionListener(this); 121 subbuttons.add(addUser); 122 removeUser = new JButton(tr("btn.remove")); 123 removeUser.addActionListener(this); 124 subbuttons.add(removeUser); 125 subbuttonsContainer.add(subbuttons, BorderLayout.NORTH); 126 users.add(subbuttonsContainer, BorderLayout.EAST); 127 128 JPanel plugins = new JPanel(new BorderLayout()); 130 plugins.add(new JLabel(tr("plugins")), BorderLayout.NORTH); 131 plugins.add(new JScrollPane(groupPlugins)); 132 subbuttonsContainer = new JPanel(new BorderLayout()); 133 subbuttons = new JPanel(new GridLayout(2, 1)); 134 addPlugin = new JButton(tr("btn.add")); 135 addPlugin.addActionListener(this); 136 subbuttons.add(addPlugin); 137 removePlugin = new JButton(tr("btn.remove")); 138 removePlugin.addActionListener(this); 139 subbuttons.add(removePlugin); 140 subbuttonsContainer.add(subbuttons, BorderLayout.NORTH); 141 plugins.add(subbuttonsContainer, BorderLayout.EAST); 142 143 JPanel services = new JPanel(new BorderLayout()); 145 services.add(new JLabel(tr("services")), BorderLayout.NORTH); 146 services.add(new JScrollPane(groupServices)); 147 subbuttonsContainer = new JPanel(new BorderLayout()); 148 subbuttons = new JPanel(new GridLayout(2, 1)); 149 addService = new JButton(tr("btn.add")); 150 addService.addActionListener(this); 151 subbuttons.add(addService); 152 removeService = new JButton(tr("btn.remove")); 153 removeService.addActionListener(this); 154 subbuttons.add(removeService); 155 subbuttonsContainer.add(subbuttons, BorderLayout.NORTH); 156 services.add(subbuttonsContainer, BorderLayout.EAST); 157 158 JPanel blocks = new JPanel(new GridLayout(6, 1)); 160 blocks.add(description); 161 blocks.add(parents); 162 blocks.add(children); 163 blocks.add(users); 164 blocks.add(plugins); 165 blocks.add(services); 166 167 JPanel buttonsContainer = new JPanel(new BorderLayout()); 169 JPanel buttons = new JPanel(new GridLayout(1, 2)); 170 btnRemove = new JButton(tr("btn.remove")); 171 btnRemove.addActionListener(this); 172 buttons.add(btnRemove); 173 btnUpdate = new JButton(tr("btn.save")); 174 btnUpdate.addActionListener(this); 175 buttons.add(btnUpdate); 176 buttonsContainer.add(buttons, BorderLayout.EAST); 177 178 this.add(nameAndVersion, BorderLayout.NORTH); 180 this.add(blocks, BorderLayout.CENTER); 181 this.add(buttonsContainer, BorderLayout.SOUTH); 182 } 183 184 public void showConcept(GroupConcept concept) 185 { 186 groupName.setText(concept.getName()); 187 groupDescription.setText(concept.getDescription()); 188 setParents(concept); 189 setChildren(concept); 190 setUsers(concept); 191 setPlugins(concept); 192 setServices(concept); 193 } 194 195 private void setParents(GroupConcept group) 196 { 197 ArrayList groups = new ArrayList(); 198 Iterator parents = group.getParents(); 199 200 while(parents.hasNext()) 201 { 202 GroupConcept g = (GroupConcept)parents.next(); 203 groups.add(g); 204 } 205 206 groupParents.setConcepts(groups); 207 } 208 209 private void setChildren(GroupConcept group) 210 { 211 ArrayList groups = new ArrayList(); 212 Iterator allGroups = plugin.getAllGroups(false).iterator(); 213 214 while(allGroups.hasNext()) 215 { 216 GroupConcept g = (GroupConcept)allGroups.next(); 217 if(g.hasParent(group)) 218 groups.add(g); 219 } 220 221 groupChildren.setConcepts(groups); 222 } 223 224 private void setUsers(GroupConcept group) 225 { 226 ArrayList users = new ArrayList(); 227 Iterator i = group.getUsers(); 228 229 while(i.hasNext()) 230 users.add(i.next()); 231 232 groupUsers.setConcepts(users); 233 } 234 235 private void setPlugins(GroupConcept group) 236 { 237 ArrayList plugins = new ArrayList(); 238 Iterator i = group.getPlugins(); 239 240 while(i.hasNext()) 241 plugins.add(i.next()); 242 243 groupPlugins.setConcepts(plugins); 244 } 245 246 private void setServices(GroupConcept group) 247 { 248 ArrayList services = new ArrayList(); 249 Iterator i = group.getServices(); 250 251 while(i.hasNext()) 252 services.add(i.next()); 253 254 groupServices.setConcepts(services); 255 } 256 257 private String tr(String s) 258 { 259 return plugin.tr(s); 260 } 261 262 264 public void mouseEntered(MouseEvent e) {} 265 public void mouseExited(MouseEvent e) {} 266 public void mousePressed(MouseEvent e) {} 267 public void mouseReleased(MouseEvent e) {} 268 public void mouseClicked(MouseEvent e) 269 { 270 if(e.getClickCount() < 2) 271 return; 272 273 ConceptTable table = (ConceptTable)e.getSource(); 274 int row = table.getSelectedRow(); 275 if(row < 0) 276 return; 277 278 panel.showConcept(table.getConceptAt(row)); 279 } 280 281 public void actionPerformed(ActionEvent ae) 283 { 284 GroupConcept concept = new GroupConcept(groupName.getText()); 285 286 if(ae.getSource() == btnUpdate) 288 { 289 concept.setDescription(groupDescription.getText()); 290 concept.setParents(((ConceptTableModel)groupParents.getModel()).getConceptList()); 291 concept.setUsers(((ConceptTableModel)groupUsers.getModel()).getConceptList()); 292 concept.setPlugins(((ConceptTableModel)groupPlugins.getModel()).getConceptList()); 293 concept.setServices(((ConceptTableModel)groupServices.getModel()).getConceptList()); 294 plugin.updateConcept(concept); 295 panel.refresh(); 296 } 297 else if(ae.getSource() == btnRemove) 298 { 299 plugin.removeConcept(concept); 300 panel.refresh(); 301 panel.showConcept(null); 302 } 303 304 else if(ae.getSource() == addParent) 306 { 307 Vector list = new Vector(); 308 ArrayList parents = ((ConceptTableModel)groupParents.getModel()).getConceptList(); 309 Iterator allGroups = plugin.getAllGroups(false).iterator(); 310 while(allGroups.hasNext()) 311 { 312 GroupConcept group = (GroupConcept)allGroups.next(); 313 if(group.getName().equals(groupName.getText())) 314 ; else if(parents.contains(group)) 316 ; else 318 list.add(group); 319 320 } 321 322 if(list.size() > 0) 323 { 324 int index = DialogBox.list(null, tr("msg.addParent"), tr("msg.selectParentToAdd"), list); 325 if(index >= 0) 326 { 327 GroupConcept group = (GroupConcept)list.elementAt(index); 328 ((ConceptTableModel)groupParents.getModel()).addConcept(group); 329 } 330 } 331 else 332 DialogBox.info(tr("msg.allGroupsAreParents")); 333 } 334 else if(ae.getSource() == removeParent) 336 { 337 int row = groupParents.getSelectedRow(); 338 ((ConceptTableModel)groupParents.getModel()).removeAt(row); 339 } 340 341 else if(ae.getSource() == addUser) 343 { 344 Vector list = new Vector(); 345 ArrayList users = ((ConceptTableModel)groupUsers.getModel()).getConceptList(); 346 Iterator allUsers = plugin.getAllUsers(false).iterator(); 347 while(allUsers.hasNext()) 348 { 349 UserConcept user = (UserConcept)allUsers.next(); 350 if(users.contains(user)) 351 ; else 353 list.add(user); 354 355 } 356 357 if(list.size() > 0) 358 { 359 int index = DialogBox.list(null, tr("msg.addUser"), tr("msg.selectUserToAdd"), list); 360 if(index >= 0) 361 { 362 UserConcept user = (UserConcept)list.elementAt(index); 363 ((ConceptTableModel)groupUsers.getModel()).addConcept(user); 364 } 365 } 366 else 367 DialogBox.info(tr("msg.allUsersAreContained")); 368 } 369 else if(ae.getSource() == removeUser) 371 { 372 int row = groupUsers.getSelectedRow(); 373 ((ConceptTableModel)groupUsers.getModel()).removeAt(row); 374 } 375 376 else if(ae.getSource() == addPlugin) 378 { 379 Vector list = new Vector(); 380 ArrayList plugins = ((ConceptTableModel)groupPlugins.getModel()).getConceptList(); 381 Iterator allPlugins = plugin.getAllPlugins(false).iterator(); 382 while(allPlugins.hasNext()) 383 { 384 PluginConcept pc = (PluginConcept)allPlugins.next(); 385 if(plugins.contains(pc)) 386 ; else 388 list.add(pc); 389 } 390 391 if(list.size() > 0) 392 { 393 int index = DialogBox.list(null, tr("msg.addPlugin"), tr("selectPluginToAdd"), list); 394 if(index >= 0) 395 { 396 PluginConcept pc = (PluginConcept)list.elementAt(index); 397 ((ConceptTableModel)groupPlugins.getModel()).addConcept(pc); 398 } 399 } 400 else 401 DialogBox.info(tr("msg.allPluginsAreContained")); 402 } 403 else if(ae.getSource() == removePlugin) 405 { 406 int row = groupPlugins.getSelectedRow(); 407 ((ConceptTableModel)groupPlugins.getModel()).removeAt(row); 408 } 409 410 else if(ae.getSource() == addService) 412 { 413 Vector list = new Vector(); 414 ArrayList services = ((ConceptTableModel)groupServices.getModel()).getConceptList(); 415 Iterator allServices = plugin.getAllServices(false).iterator(); 416 while(allServices.hasNext()) 417 { 418 ServiceConcept service = (ServiceConcept)allServices.next(); 419 if(services.contains(service)) 420 ; else 422 list.add(service); 423 } 424 425 if(list.size() > 0) 426 { 427 int index = DialogBox.list(null, tr("addService"), tr("selectServiceToAdd"), list); 428 if(index >= 0) 429 { 430 ServiceConcept service = (ServiceConcept)list.elementAt(index); 431 ((ConceptTableModel)groupServices.getModel()).addConcept(service); 432 } 433 } 434 else 435 DialogBox.info(tr("msg.allServicesAreContained")); 436 } 437 else if(ae.getSource() == removeService) 439 { 440 int row = groupServices.getSelectedRow(); 441 ((ConceptTableModel)groupServices.getModel()).removeAt(row); 442 } 443 } 444 } | Popular Tags |