KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > enhydra > shark > corbaclient > workflowadmin > worklist > WorklistManagement


1 package org.enhydra.shark.corbaclient.workflowadmin.worklist;
2
3 import java.awt.*;
4 import java.awt.event.*;
5 import java.util.*;
6
7 import javax.swing.*;
8
9 import org.omg.WfBase.*;
10 import org.omg.WorkflowModel.WfResource;
11 import org.enhydra.shark.corbaclient.*;
12 import org.enhydra.shark.corbaclient.workflowadmin.*;
13 import org.enhydra.shark.corbaclient.workflowadmin.user.*;
14 import org.enhydra.shark.corbaclient.workflowadmin.worklist.actions.*;
15 import org.enhydra.shark.corbaclient.worklist.*;
16
17 /**
18  * Implements the user interface and program logic to manage the
19  * worklists of different users.
20  *
21  * @author Sasa Bojanic
22  * @version 1.0
23  */

24 public class WorklistManagement extends ActionPanel {
25    private static Dimension comboFieldDimension=new Dimension(200,20);
26
27    private SharkAdmin workflowAdmin;
28    private Worklist worklist;
29    private JComboBox users;
30    private JLabel isLogged=new JLabel();
31    // action taken upon the selection change within the users combo
32
private ActionListener usersAL;
33
34    private ArrayList existingUsers=new ArrayList();
35
36    public WorklistManagement (SharkAdmin wa) {
37       super();
38       // It is important to set workflowAdmin before initing
39
this.workflowAdmin=wa;
40
41       super.init();
42
43       add(createControlPanel(),BorderLayout.NORTH,0);
44    }
45
46    protected void createActions () {
47       defaultActions=new Action[] {
48          new ReassignWorkitem(this)
49       };
50    }
51
52    protected Component createCenterComponent () {
53       worklist=new Worklist(workflowAdmin,false);
54       return worklist;
55    }
56
57    public SharkAdmin getWorkflowAdmin () {
58       return workflowAdmin;
59    }
60
61    public Worklist getWorklist () {
62       return worklist;
63    }
64
65    private Component createControlPanel () {
66       JPanel p=new JPanel();
67       p.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
68       p.setLayout(new BoxLayout(p,BoxLayout.X_AXIS));
69
70       p.add(new JLabel(ResourceManager.getLanguageDependentString("SelectUserKey")+": "));
71
72       users=new JComboBox();
73       users.setMinimumSize(new Dimension(comboFieldDimension));
74       users.setMaximumSize(new Dimension(comboFieldDimension));
75       users.setPreferredSize(new Dimension(comboFieldDimension));
76       usersAL=new ActionListener() {
77          public void actionPerformed(ActionEvent ae) {
78             WfResource choosen=getResource(users.getSelectedItem());
79             worklist.setResource(choosen);
80             /*try {
81                boolean currentUser=choosen.resource_key().equals(workflowAdmin.getService().getResourceObject().resource_key());
82
83                if (currentUser) {
84                   worklist.setButtonPanelEnabled(true);
85                } else {
86                   worklist.setButtonPanelEnabled(false);
87                }
88             } catch (Exception ex) {
89                worklist.setButtonPanelEnabled(false);
90              }*/

91             if (choosen==null) {
92                isLogged.setText("");
93             } else {
94                LoggedUsersManagement lum=workflowAdmin.
95                   getUserManagement().getLoggedUsersManagement();
96                String JavaDoc uname=null;
97                try {
98                   uname=choosen.resource_key();
99                } catch (Exception JavaDoc ex) {}
100                if (lum.isLogged(uname)) {
101                   isLogged.setText(" ---> "+
102                      ResourceManager.getLanguageDependentString("LoggedKey"));
103                } else {
104                   isLogged.setText(" ---> "+
105                      ResourceManager.getLanguageDependentString("NotLoggedKey"));
106                }
107             }
108          }
109       };
110       users.addActionListener(usersAL);
111       p.add(users);
112
113       p.add(isLogged);
114
115       JButton reassign=(JButton)BarFactory.
116          createButton(Utils.getUnqualifiedClassName(ReassignWorkitem.class),commands,true);
117       JPanel bp=new JPanel();
118       bp.setLayout(new BorderLayout());
119       bp.add(reassign,BorderLayout.EAST);
120
121       p.add(bp);
122
123       return p;
124    }
125
126    public void clear () {
127       existingUsers.clear();
128       users.removeActionListener(usersAL);
129       users.removeAllItems();
130       users.addActionListener(usersAL);
131       isLogged.setText("");
132       worklist.clear();
133    }
134
135    public synchronized void refresh (boolean mandatoryRefreshing) {
136       if (!(mandatoryRefreshing || isShowing())) return;
137       ArrayList oldEU=new ArrayList(existingUsers);
138       existingUsers.clear();
139       try {
140          existingUsers=new ArrayList(Arrays.asList(SharkAdmin.getExecAmin().get_sequence_resource(0)));
141       } catch (Exception JavaDoc ex) {
142          ex.printStackTrace();
143       }
144
145       ArrayList toAdd=new ArrayList(existingUsers);
146       toAdd.removeAll(oldEU);
147       ArrayList toRemove=new ArrayList(oldEU);
148       toRemove.removeAll(existingUsers);
149
150       if (toAdd.size()>0 || toRemove.size()>0) {
151          // remember previously selected resource
152
String JavaDoc toSelectId=null;
153          try {
154             toSelectId=worklist.getResource().resource_key();
155          } catch (Exception JavaDoc ex) {}
156
157          // remove combo listener
158
users.removeActionListener(usersAL);
159          // add newly added resources to the table
160
users.removeAllItems();
161          Iterator it=existingUsers.iterator();
162          while (it.hasNext()) {
163             WfResource res=(WfResource)it.next();
164             try {
165                users.addItem(res.resource_key());
166             } catch (Exception JavaDoc ex) {
167                // ex.printStackTrace();
168
}
169          }
170          users.setSelectedItem(toSelectId);
171          Object JavaDoc selItem=users.getSelectedItem();
172          if ((selItem!=null) && (!selItem.equals(toSelectId))) {
173             worklist.setResource(getResource(selItem));
174          } else {
175             worklist.refresh();
176          }
177          /*try {
178             if (worklist.getResource().resource_key().equals(workflowAdmin.getService().getResourceObject().resource_key())) {
179                worklist.setButtonPanelEnabled(true);
180             } else {
181                worklist.setButtonPanelEnabled(false);
182             }
183          } catch (Exception ex) {
184             worklist.setButtonPanelEnabled(false);
185          }*/

186          // add back combo listener
187
users.addActionListener(usersAL);
188       } else {
189          worklist.refresh();
190       }
191    }
192
193    private WfResource getResource (Object JavaDoc key) {
194       if (key==null) return null;
195       String JavaDoc un=(String JavaDoc)key;
196       Iterator it=existingUsers.iterator();
197       while (it.hasNext()) {
198          WfResource res=(WfResource)it.next();
199          try {
200             if (res.resource_key().equals(un)) {
201                return res;
202             }
203          } catch (Exception JavaDoc ex) {
204            // ex.printStackTrace();
205
}
206       }
207       return null;
208    }
209
210 }
211
Popular Tags