1
2
3
4
5
6 package net.kwfgrid.gwui.taskframework;
7
8 import java.awt.*;
9 import net.kwfgrid.gwui.gui.*;
10 import net.kwfgrid.gwui.*;
11 import net.kwfgrid.gworkflowdl.structure.*;
12 import net.kwfgrid.gworkflowdl.protocol.structure.*;
13 import javax.swing.*;
14 import javax.swing.JPopupMenu.*;
15 import net.kwfgrid.gwui.taskframework.InputTask4WCTRefinementFailed.*;
16
17 public class SimpleDataInputForm extends PlaceTokenEditor implements Form {
18 protected Place _inputplace;
19 protected Place _outputplace;
20 protected Token _inputtoken;
21 protected JFrame _frame;
22 protected String _title;
23
24 private static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(SimpleDataInputForm.class);
25
26 public SimpleDataInputForm(org.glassbox.executor.Executor executor,
27 ProtocolWorkflow workflow,
28 String title,
29 ProtocolPlace inputplace,
30 ProtocolToken inputtoken,
31 ProtocolPlace outputplace) {
32 super(executor, workflow, outputplace);
33 _inputplace = inputplace;
34 _inputtoken = inputtoken;
35 _outputplace = outputplace;
36 _title = title;
37 _view = null;
38 _frame = null;
39 }
40
41 protected void performAddToken() {
42 setPerformingTask(true);
43 final String xml = _tokenarea.getText();
44 getExecutor().execute(new GUIMethodCallTask("Inserting data into workflow...", getExecutor(), this) {
45 protected void execute() throws CapacityException, WorkflowFormatException {
46 Data d = Factory.newData();
47 d.fromXML(xml);
48 Token t = Factory.newToken(d);
49 _inputplace.removeToken(_inputtoken);
50 _outputplace.addToken(t);
51 }
52 });
53 }
54
55 public JComponent getView() {
56 if (_view == null) {
57 _chooser = SwingFactory2.getFileChooser(GWUI.TOKEN_FILE_CHOOSER);
58
59 JMenuItem upload = new JMenuItem("new Token from File ...");
60 upload.addActionListener(ACTION_LISTENER);
61 upload.setActionCommand(UPLOAD_COMMAND);
62 _mitem_controltoken_true = new JMenuItem("new control Token 'true'");
63 _mitem_controltoken_true.addActionListener(ACTION_LISTENER);
64 _mitem_controltoken_true.setActionCommand(CONTROL_TOKEN_TRUE_COMMAND);
65 _mitem_controltoken_false = new JMenuItem("new control Token 'false'");
66 _mitem_controltoken_false.addActionListener(ACTION_LISTENER);
67 _mitem_controltoken_false.setActionCommand(CONTROL_TOKEN_FALSE_COMMAND);
68 _mitem_save = new JMenuItem("save current ...");
69 _mitem_save.addActionListener(ACTION_LISTENER);
70 _mitem_save.setActionCommand(SAVE_COMMAND);
71 _popup = new JPopupMenu("Content of Token");
72 _popup.add(upload);
73 _popup.add(_mitem_controltoken_true);
74 _popup.add(_mitem_controltoken_false);
75 _popup.add(new Separator());
76 _popup.pack();
77
78 _button_add_clone = new JButton("ok");
79 _button_add_clone.addActionListener(ACTION_LISTENER);
80 _button_remove = new JButton("remove");
81 _button_remove.addActionListener(ACTION_LISTENER);
82 _button_remove.setActionCommand(REMOVE_COMMAND);
83 _tokenbox = new JComboBox(new PlaceTokenEditor.TokenBoxModel(((Place)getElement()).getTokens()));
84 _tokenbox.addItemListener(ITEM_LISTENER);
85 _tokenarea = new JTextArea(10, 40);
86 if (_tokenbox.getSelectedItem() instanceof Token) {
87 Token token = (Token)_tokenbox.getSelectedItem();
88 if (token.getData() != null) {
89
90 _tokenarea.setText(token.getData().toXML());
91 } else {
92
93 Boolean control = token.getControl();
94 _tokenarea.setText(control.booleanValue() ? "<control>true</control>" : "<control>false</control>");
95 }
96 }
97 _tokenarea.addMouseListener(MOUSE_LISTENER);
98 _tokenarea.getDocument().addDocumentListener(INPUT_LISTENER);
99 _label_token_num = new JLabel("0 Tokens");
100
101 GridBagLayout gridbag = new GridBagLayout();
102 GridBagConstraints c = new GridBagConstraints();
103
104 _view = new JPanel();
105 _view.setLayout(gridbag);
106
107 c.fill = GridBagConstraints.BOTH;
108 c.insets = new Insets(5, 5, 0, 5);
109 c.weightx = 0.0;
110 c.weighty = 0.0;
111 c.gridx = 0;
112 c.gridy = 0;
113 c.gridwidth = GridBagConstraints.REMAINDER;
114
115 _view.add(new JLabel(_title), c);
116
117 c.weightx = 1.0;
118 c.gridx = 0;
119 c.gridy = 1;
120 c.fill = GridBagConstraints.BOTH;
121 c.anchor = GridBagConstraints.CENTER;
122 c.weighty = 1.0;
123 c.gridwidth = GridBagConstraints.REMAINDER;
124
125 _view.add(new JScrollPane(_tokenarea), c);
126
127 c.weightx = 0.0;
128 c.weighty = 0.0;
129 c.insets = new Insets(5, 5, 5, 5);
130 c.anchor = GridBagConstraints.WEST;
131 c.gridwidth = 1;
132 c.fill = GridBagConstraints.NONE;
133 c.gridy = 4;
134 c.gridx = 0;
135
136 c.anchor = GridBagConstraints.EAST;
137 c.gridwidth = GridBagConstraints.REMAINDER;
138 c.gridx = 2;
139
140 _view.add(_button_add_clone, c);
141
142 updateView();
143 }
144 return _view;
145 }
146
147 public void dispose() {
148 if (_frame!=null) {
149 _frame.hide();
150 _frame = null;
151 _view = null;
152 }
153 super.dispose();
154 }
155
156 public void show() {
157 if (_frame == null) {
158 _frame = new JFrame("Data input");
159 _frame.getContentPane().add(getView(), BorderLayout.CENTER);
160 _frame.getContentPane().setSize(_frame.getContentPane().getLayout().preferredLayoutSize(_frame.getContentPane()));
161 _frame.getContentPane().validate();
162 setEnabled(true);
163 setEditable(true);
164 _frame.pack();
165 }
166 if (!_frame.isVisible()) {
167 _frame.show();
168 } else {
169 _frame.toFront();
170 }
171 }
172 }
173