debug dialog
[jalview.git] / src / jalview / jbgui / GRestServiceEditorPane.java
1 package jalview.jbgui;
2
3 import jalview.gui.JvSwingUtils;
4
5 import java.awt.BorderLayout;
6 import java.awt.Dimension;
7 import java.awt.FlowLayout;
8 import java.awt.GridLayout;
9 import java.awt.event.ActionEvent;
10 import java.awt.event.ActionListener;
11
12 import javax.swing.BoxLayout;
13 import javax.swing.JButton;
14 import javax.swing.JCheckBox;
15 import javax.swing.JComboBox;
16 import javax.swing.JLabel;
17 import javax.swing.JList;
18 import javax.swing.JPanel;
19 import javax.swing.JScrollPane;
20 import javax.swing.JTabbedPane;
21 import javax.swing.JTextArea;
22 import javax.swing.JViewport;
23 import javax.swing.UIManager;
24 import javax.swing.border.TitledBorder;
25 import javax.swing.event.CaretEvent;
26 import javax.swing.event.CaretListener;
27 import javax.swing.event.DocumentEvent;
28 import javax.swing.event.DocumentListener;
29
30 import net.miginfocom.swing.MigLayout;
31
32 public class GRestServiceEditorPane extends JPanel {
33
34   protected JTabbedPane panels;
35
36   protected JPanel details, inputs, paste;
37
38   protected JTextArea urldesc, url, urlsuff, name, descr, parseRes;
39
40   protected JComboBox action, gapChar;
41
42   JLabel acttype;
43
44   protected JButton okButton;
45
46   protected JButton cancelButton;
47
48   JPanel svcattribs;
49
50   JPanel status;
51
52   protected JList iprms;
53
54   protected JList rdata;
55
56   JScrollPane iprmVp, rdataVp, parseResVp, urlVp, descrVp, urldescVp;
57
58   JButton rdataAdd, rdataRem, rdataNdown, rdataNup;
59
60   JButton iprmsAdd, iprmsRem;
61
62   protected JCheckBox hSeparable;
63
64   protected JCheckBox vSeparable;
65
66   protected JPanel parseWarnings;
67
68   public GRestServiceEditorPane()
69   {
70     jbInit();
71   }
72
73   protected void jbInit()
74   {
75     details = new JPanel();
76     details.setName("Details");
77     details.setLayout(new MigLayout());
78     inputs = new JPanel();
79     inputs.setName("Input/Output");
80     inputs.setLayout(new MigLayout("","[grow 85,fill][]",""));
81     paste = new JPanel();
82     paste.setName("Cut'n'Paste");
83     paste.setLayout(new MigLayout("","[grow 100, fill]","[][grow 100,fill]"));
84
85     panels = new JTabbedPane();
86     panels.addTab(details.getName(), details);
87     panels.addTab(inputs.getName(), inputs);
88     panels.addTab(paste.getName(), paste);
89
90     JPanel cpanel;
91
92     // Name and URL Panel
93     cpanel = details;
94     name = new JTextArea(1, 12);
95
96     JvSwingUtils
97             .mgAddtoLayout(cpanel, "Short descriptive name for service",
98                     new JLabel("Name:"), name,"wrap");
99     action = new JComboBox();
100     JvSwingUtils
101             .mgAddtoLayout(
102                     cpanel,
103                     "What kind of function the service performs (e.g. alignment, analysis, search, etc).",
104                     new JLabel("Service Action:"), action,"wrap");
105     descr = new JTextArea(4, 40);
106     descrVp = new JScrollPane();
107     descrVp.setViewportView(descr);
108     JvSwingUtils.mgAddtoLayout(cpanel, "Brief description of service",
109             new JLabel("Description:"), descrVp,"wrap");
110
111     url = new JTextArea(2, 20);
112     urlVp = new JScrollPane();
113     urlVp.setViewportView(url);
114     JvSwingUtils
115             .mgAddtoLayout(
116                     cpanel,
117                     "URL to post data to service. Include any special parameters needed here",
118                     new JLabel("POST URL:"), urlVp,"wrap");
119
120     urlsuff = new JTextArea();
121     urlsuff.setColumns(20);
122
123     JvSwingUtils
124             .mgAddtoLayout(
125                     cpanel,
126                     "Optional suffix added to URL when retrieving results from service",
127                     new JLabel("URL Suffix:"), urlsuff,"wrap");
128
129     // input options
130     // details.add(cpanel = new JPanel(), BorderLayout.CENTER);
131     // cpanel.setLayout(new FlowLayout());
132     hSeparable = new JCheckBox("per Sequence");
133     hSeparable
134             .setToolTipText("<html>"
135                     + JvSwingUtils
136                             .wrapTooltip("When checked, a job is created for every sequence in the current selection.")
137                     + "<html>");
138     hSeparable.addActionListener(new ActionListener()
139     {
140
141       @Override
142       public void actionPerformed(ActionEvent arg0)
143       {
144         hSeparable_actionPerformed(arg0);
145
146       }
147     });
148     vSeparable = new JCheckBox("Results are vertically separable");
149     vSeparable
150             .setToolTipText("<html>"
151                     + JvSwingUtils
152                             .wrapTooltip("When checked, a single job is created for the visible region and results"
153                                     + " mapped back onto their location in the alignment. Otherwise, a job would be"
154                                     + " created for every contiguous region visible in the alignment or current"
155                                     + " selection (e.g. a multiple alignment).")
156                     + "</html>");
157     vSeparable.addActionListener(new ActionListener()
158     {
159
160       @Override
161       public void actionPerformed(ActionEvent arg0)
162       {
163         vSeparable_actionPerformed(arg0);
164
165       }
166     });
167     gapChar = new JComboBox();
168     JvSwingUtils
169             .mgAddtoLayout(
170                     cpanel,
171                     "Which gap character does this service prefer ?",
172                     new JLabel("Gap Character:"), gapChar,"wrap");
173     
174
175     cpanel.add(hSeparable);
176     cpanel.add(vSeparable);
177
178     // Input and Output lists
179     // Inputparams
180     JPanel iprmsList = new JPanel();
181     iprmsList.setBorder(new TitledBorder("Data input parameters"));
182     iprmsList.setLayout(new MigLayout());
183     iprmVp = new JScrollPane();
184     iprmVp.getViewport().setView(iprms = new JList());
185     iprmsList.add(iprmVp);
186     JPanel iprmButs = new JPanel();
187     iprmButs.setLayout(new MigLayout());
188
189     iprmsAdd = JvSwingUtils.makeButton("+", "Add input parameter",
190             new ActionListener()
191             {
192
193               @Override
194               public void actionPerformed(ActionEvent e)
195               {
196                 iprmsAdd_actionPerformed(e);
197
198               }
199             });
200     iprmsRem = JvSwingUtils.makeButton("-",
201             "Remove selected input parameter", new ActionListener()
202             {
203
204               @Override
205               public void actionPerformed(ActionEvent e)
206               {
207                 iprmsRem_actionPerformed(e);
208
209               }
210             });
211
212     iprmButs.add(iprmsAdd,"wrap");
213     iprmButs.add(iprmsRem,"wrap");
214     iprmsList.add(iprmButs, "wrap");
215     inputs.add(iprmsList, "wrap");
216
217     // Return Parameters
218     
219     rdataAdd = JvSwingUtils.makeButton("+", "Add return datatype",
220             new ActionListener()
221             {
222
223               @Override
224               public void actionPerformed(ActionEvent e)
225               {
226                 rdataAdd_actionPerformed(e);
227
228               }
229             });
230     rdataRem = JvSwingUtils.makeButton("-", "Remove return datatype",
231             new ActionListener()
232             {
233
234               @Override
235               public void actionPerformed(ActionEvent e)
236               {
237                 rdataRem_actionPerformed(e);
238
239               }
240             });
241     rdataNup = JvSwingUtils.makeButton("Move Up",
242             "Move return type up order", new ActionListener()
243             {
244
245               @Override
246               public void actionPerformed(ActionEvent e)
247               {
248                 rdataNup_actionPerformed(e);
249
250               }
251             });
252     rdataNdown = JvSwingUtils.makeButton("Move Down",
253             "Move return type down order", new ActionListener()
254             {
255
256               @Override
257               public void actionPerformed(ActionEvent e)
258               {
259                 rdataNdown_actionPerformed(e);
260
261               }
262             });
263
264     JPanel rparamList = new JPanel();
265     rparamList.setBorder(new TitledBorder("Data returned by service"));
266     rparamList.setLayout(new MigLayout());
267     rdata = new JList();
268     rdataVp = new JScrollPane();
269     rdataVp.getViewport().setView(rdata);
270     rparamList.add(rdataVp);
271     JPanel rparamButs = new JPanel();
272     rparamButs.setLayout(new MigLayout());
273     rparamButs.add(rdataAdd,"wrap");
274     rparamButs.add(rdataRem,"wrap");
275     rparamButs.add(rdataNup,"wrap");
276     rparamButs.add(rdataNdown,"wrap");
277     rparamList.add(rparamButs,"wrap");
278     inputs.add(rparamList,"wrap");
279  
280     // Parse flat-text to a service
281
282     
283     urldesc = new JTextArea(4,50);
284     urldesc.setEditable(true);
285     urldesc.setWrapStyleWord(true);
286     urldescVp = new JScrollPane();
287     urldescVp.setViewportView(urldesc);
288     JPanel urldescPane = new JPanel();
289     urldescPane.setLayout(new MigLayout("","[grow 100, fill]", "[grow 100, fill]"));
290     urldescPane.setBorder(new TitledBorder("RSBS Encoded Service"));
291     urldescPane.add(urldescVp, "span");
292     paste.add(urldescPane,"span");
293     urldescPane.setToolTipText("<html>"+JvSwingUtils.wrapTooltip("Flat file representation of this rest service using the Really Simple Bioinformatics Service formalism"));
294     
295     parseRes = new JTextArea();
296     parseResVp = new JScrollPane();
297     parseResVp.setViewportView(parseRes);
298     parseRes.setWrapStyleWord(true);
299     parseRes.setColumns(40);
300     parseWarnings = new JPanel(new MigLayout("","[grow 100, fill]", "[grow 100, fill]"));
301     parseWarnings.setBorder(new TitledBorder("Parsing errors"));
302     parseWarnings.setToolTipText("<html>"+JvSwingUtils.wrapTooltip("Results of parsing the RSBS representation")+"</html>");
303     parseWarnings.add(parseResVp, "center");
304     parseRes.setEditable(false);
305     paste.add(parseWarnings, "span");
306     setLayout(new BorderLayout());
307     add(panels, BorderLayout.CENTER);
308     okButton = JvSwingUtils.makeButton("OK", "", new ActionListener()
309     {
310
311       @Override
312       public void actionPerformed(ActionEvent e)
313       {
314         ok_actionPerformed();
315       }
316     });
317     cancelButton = JvSwingUtils.makeButton("Cancel", "",
318             new ActionListener()
319             {
320
321               @Override
322               public void actionPerformed(ActionEvent e)
323               {
324                 cancel_actionPerformed();
325               }
326             });
327
328   }
329
330   protected void hSeparable_actionPerformed(ActionEvent arg0)
331   {
332     // TODO Auto-generated method stub
333
334   }
335
336   protected void vSeparable_actionPerformed(ActionEvent arg0)
337   {
338     // TODO Auto-generated method stub
339
340   }
341
342   protected void cancel_actionPerformed()
343   {
344     // TODO Auto-generated method stub
345
346   }
347
348   protected void ok_actionPerformed()
349   {
350     // TODO Auto-generated method stub
351
352   }
353
354   protected void iprmsAdd_actionPerformed(ActionEvent e)
355   {
356     // TODO Auto-generated method stub
357
358   }
359
360   protected void iprmsRem_actionPerformed(ActionEvent e)
361   {
362     // TODO Auto-generated method stub
363
364   }
365
366   protected void rdataAdd_actionPerformed(ActionEvent e)
367   {
368     // TODO Auto-generated method stub
369
370   }
371
372   protected void rdataRem_actionPerformed(ActionEvent e)
373   {
374     // TODO Auto-generated method stub
375
376   }
377
378   protected void rdataNup_actionPerformed(ActionEvent e)
379   {
380     // TODO Auto-generated method stub
381
382   }
383
384   protected void rdataNdown_actionPerformed(ActionEvent e)
385   {
386     // TODO Auto-generated method stub
387
388   }
389
390   protected void ok_actionPerformed(ActionEvent e)
391   {
392     // TODO Auto-generated method stub
393
394   }
395
396   protected void cancel_actionPerformed(ActionEvent e)
397   {
398     // TODO Auto-generated method stub
399
400   }
401
402 }