KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > lucane > applications > administrator > gui > GroupPanel


1 /*
2  * Lucane - a collaborative platform
3  * Copyright (C) 2003 Vincent Fiack <vfiack@mail15.com>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  */

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         //-- temp
65
JPanel subbuttonsContainer;
66         JPanel subbuttons;
67         
68         //-- attributes
69
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         //-- name and version
84
JPanel nameAndVersion = new JPanel(new BorderLayout());
85         nameAndVersion.add(new JLabel(tr("name")), BorderLayout.WEST);
86         nameAndVersion.add(groupName, BorderLayout.CENTER);
87         
88         //-- description
89
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         //-- parents
94
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         //-- children
109
JPanel children = new JPanel(new BorderLayout());
110         children.add(new JLabel(tr("group.children")), BorderLayout.NORTH);
111         children.add(new JScrollPane(groupChildren));
112         
113         //-- users
114
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         //-- plugins
129
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         //-- services
144
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         //-- blocks
159
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         //buttons
168
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         //-- complete
179
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 JavaDoc tr(String JavaDoc s)
258     {
259         return plugin.tr(s);
260     }
261     
262     //-- mouse listener
263

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     //-- action listener
282
public void actionPerformed(ActionEvent ae)
283    {
284       GroupConcept concept = new GroupConcept(groupName.getText());
285        
286        // general buttons
287
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         // add parent
305
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                     ;//zap, same group
315
else if(parents.contains(group))
316                     ;//zap, already parent
317
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         // remove parent
335
else if(ae.getSource() == removeParent)
336         {
337             int row = groupParents.getSelectedRow();
338             ((ConceptTableModel)groupParents.getModel()).removeAt(row);
339         }
340     
341         // add user
342
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                     ;//zap, already contained
352
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         // remove user
370
else if(ae.getSource() == removeUser)
371         {
372             int row = groupUsers.getSelectedRow();
373             ((ConceptTableModel)groupUsers.getModel()).removeAt(row);
374         }
375     
376         // add plugin
377
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                     ;//zap, already contained
387
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         // remove plugin
404
else if(ae.getSource() == removePlugin)
405         {
406             int row = groupPlugins.getSelectedRow();
407             ((ConceptTableModel)groupPlugins.getModel()).removeAt(row);
408         }
409
410         // add service
411
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                     ;//zap, already contained
421
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         // remove service
438
else if(ae.getSource() == removeService)
439         {
440             int row = groupServices.getSelectedRow();
441             ((ConceptTableModel)groupServices.getModel()).removeAt(row);
442         }
443    }
444 }
Popular Tags