1
2
3
4
5
6 package net.kwfgrid.gwui.taskframework;
7
8 import java.util.*;
9 import javax.swing.*;
10
11 import net.kwfgrid.gwui.gui.*;
12 import net.kwfgrid.gwui.*;
13 import net.kwfgrid.gwui.workflow.*;
14 import net.kwfgrid.gworkflowdl.structure.*;
15 import net.kwfgrid.gworkflowdl.protocol.structure.*;
16
17 public class InputTask4Decision implements UserTask {
18 protected String _title;
19 protected String _tooltip;
20 protected Form _form;
21 protected Place _place;
22 protected Transition[] _transitions;
23 protected UAA _uaa;
24 protected InputTaskProducer4Decision _producer;
25 protected boolean _valid;
26 protected boolean _done;
27 protected String _decisionkey;
28
29 public InputTask4Decision(InputTaskProducer4Decision producer,
30 String title,
31 String tooltip,
32 Form form,
33 String decisionkey,
34 Place place,
35 Transition[] transitions,
36 UAA uaa) {
37 _producer = producer;
38 _title = title;
39 _tooltip = tooltip;
40 _form = form;
41 _place = place;
42 _transitions = transitions;
43 _uaa = uaa;
44 _valid = true;
45 _done = false;
46 _decisionkey = decisionkey;
47 }
48
49 protected Transition[] getTransitions() {
50 return _transitions;
51 }
52
53 protected Place getPlace() {
54 return _place;
55 }
56
57 private void setValid(boolean valid) {
58 _valid = valid;
59 if (!valid) _producer.setTaskInvalid(this);
60 }
61
62 private void setDone(boolean done) {
63 _done = done;
64 if (done) _producer.setTaskDone(this);
65 }
66
67 private boolean containsOneOf(Collection container, Object[] objects) {
68 for (int i=0; i<objects.length; i++) {
69 if (container.contains(objects[i])) return true;
70 }
71 return false;
72 }
73
74 public boolean isValid() {
75 return _valid;
76 }
77
78 public boolean isDone() {
79 return _done;
80 }
81
82 public void execute() {
83 _form.show();
84 }
85
86 public String getTitle() {
87 return _title;
88 }
89
90 public Icon getIcon() {
91 return InputTaskProducer4Decision.TASK_ICON;
92 }
93
94 public String getToolTipText() {
95 return _tooltip;
96 }
97
98 public void dispose() {
99 if (_form != null) _form.dispose();
100 _form = null;
101 }
102
103
104
105
106
107
108 public void objectsAdded(IStructureObject parent, String namespace, String name, List objects) {
109 }
110
111 public void objectsRemoved(IStructureObject parent, String namespace, String name, List objects) {
112 Workflow wf = (Workflow)parent.getRoot();
113 String dprop = wf.getProperties().get(_decisionkey);
114 setDone(dprop == null || "".equals(dprop.trim()));
115 setValid(isValid() && !objects.contains(_place));
116 if (isValid() &&
117 ProtocolTransition.NAME.equals(name) &&
118 XMLUtilities.equalNamespace(namespace, ProtocolTransition.NAMESPACE)) {
119 setValid(!containsOneOf(objects, _transitions));
120 }
121 }
122
123 public void propertyChanged(IStructureObject parent, String namespace, String name, Object newvalue) {
124 Workflow wf = (Workflow)parent.getRoot();
125 String dprop = wf.getProperties().get(_decisionkey);
126 setDone(dprop == null || "".equals(dprop.trim()));
127 }
128 }
129