a403088fb2cd03cd78fa637ffe4a603dfd5c5e5d
[jalview.git] / src / jalview / jbgui / GRestServiceEditorPane.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
3  * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
10  *  
11  * Jalview is distributed in the hope that it will be useful, but 
12  * WITHOUT ANY WARRANTY; without even the implied warranty 
13  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14  * PURPOSE.  See the GNU General Public License for more details.
15  * 
16  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
17  */
18 package jalview.jbgui;
19
20 import jalview.gui.JvSwingUtils;
21
22 import java.awt.BorderLayout;
23 import java.awt.event.ActionEvent;
24 import java.awt.event.ActionListener;
25 import java.awt.event.MouseEvent;
26 import java.awt.event.MouseListener;
27
28 import javax.swing.JButton;
29 import javax.swing.JCheckBox;
30 import javax.swing.JComboBox;
31 import javax.swing.JLabel;
32 import javax.swing.JList;
33 import javax.swing.JPanel;
34 import javax.swing.JScrollPane;
35 import javax.swing.JTabbedPane;
36 import javax.swing.JTextArea;
37 import javax.swing.ListSelectionModel;
38 import javax.swing.border.TitledBorder;
39
40 import net.miginfocom.swing.MigLayout;
41
42 public class GRestServiceEditorPane extends JPanel
43 {
44
45   protected JTabbedPane panels;
46
47   protected JPanel details, inputs, paste;
48
49   protected JTextArea urldesc, url, urlsuff, name, descr, parseRes;
50
51   protected JComboBox action, gapChar;
52
53   JLabel acttype;
54
55   protected JButton okButton;
56
57   protected JButton cancelButton;
58
59   JPanel svcattribs;
60
61   JPanel status;
62
63   protected JList iprms;
64
65   protected JList rdata;
66
67   JScrollPane iprmVp, rdataVp, parseResVp, urlVp, descrVp, urldescVp;
68
69   JButton rdataAdd, rdataRem, rdataNdown, rdataNup;
70
71   JButton iprmsAdd, iprmsRem;
72
73   protected JCheckBox hSeparable;
74
75   protected JCheckBox vSeparable;
76
77   protected JPanel parseWarnings;
78
79   public GRestServiceEditorPane()
80   {
81     jbInit();
82   }
83
84   protected void jbInit()
85   {
86     details = new JPanel();
87     details.setName("Details");
88     details.setLayout(new MigLayout());
89     inputs = new JPanel();
90     inputs.setName("Input/Output");
91     inputs.setLayout(new MigLayout("", "[grow 85,fill][]", ""));
92     paste = new JPanel();
93     paste.setName("Cut'n'Paste");
94     paste.setLayout(new MigLayout("", "[grow 100, fill]",
95             "[][grow 100,fill]"));
96
97     panels = new JTabbedPane();
98     panels.addTab(details.getName(), details);
99     panels.addTab(inputs.getName(), inputs);
100     panels.addTab(paste.getName(), paste);
101
102     JPanel cpanel;
103
104     // Name and URL Panel
105     cpanel = details;
106     name = new JTextArea(1, 12);
107
108     JvSwingUtils.mgAddtoLayout(cpanel,
109             "Short descriptive name for service", new JLabel("Name:"),
110             name, "wrap");
111     action = new JComboBox();
112     JvSwingUtils
113             .mgAddtoLayout(
114                     cpanel,
115                     "What kind of function the service performs (e.g. alignment, analysis, search, etc).",
116                     new JLabel("Service Action:"), action, "wrap");
117     descr = new JTextArea(4, 60);
118     descrVp = new JScrollPane();
119     descrVp.setViewportView(descr);
120     JvSwingUtils.mgAddtoLayout(cpanel, "Brief description of service",
121             new JLabel("Description:"), descrVp, "wrap");
122
123     url = new JTextArea(2, 60);
124     urlVp = new JScrollPane();
125     urlVp.setViewportView(url);
126     JvSwingUtils
127             .mgAddtoLayout(
128                     cpanel,
129                     "URL to post data to service. Include any special parameters needed here",
130                     new JLabel("POST URL:"), urlVp, "wrap");
131
132     urlsuff = new JTextArea();
133     urlsuff.setColumns(60);
134
135     JvSwingUtils
136             .mgAddtoLayout(
137                     cpanel,
138                     "Optional suffix added to URL when retrieving results from service",
139                     new JLabel("URL Suffix:"), urlsuff, "wrap");
140
141     // input options
142     // details.add(cpanel = new JPanel(), BorderLayout.CENTER);
143     // cpanel.setLayout(new FlowLayout());
144     hSeparable = new JCheckBox("per Sequence");
145     hSeparable
146             .setToolTipText("<html>"
147                     + JvSwingUtils
148                             .wrapTooltip("When checked, a job is created for every sequence in the current selection.")
149                     + "<html>");
150     hSeparable.addActionListener(new ActionListener()
151     {
152
153       @Override
154       public void actionPerformed(ActionEvent arg0)
155       {
156         hSeparable_actionPerformed(arg0);
157
158       }
159     });
160     vSeparable = new JCheckBox("Results are vertically separable");
161     vSeparable
162             .setToolTipText("<html>"
163                     + JvSwingUtils
164                             .wrapTooltip("When checked, a single job is created for the visible region and results"
165                                     + " mapped back onto their location in the alignment. Otherwise, a job would be"
166                                     + " created for every contiguous region visible in the alignment or current"
167                                     + " selection (e.g. a multiple alignment).")
168                     + "</html>");
169     vSeparable.addActionListener(new ActionListener()
170     {
171
172       @Override
173       public void actionPerformed(ActionEvent arg0)
174       {
175         vSeparable_actionPerformed(arg0);
176
177       }
178     });
179     gapChar = new JComboBox();
180     JvSwingUtils.mgAddtoLayout(cpanel,
181             "Which gap character does this service prefer ?", new JLabel(
182                     "Gap Character:"), gapChar, "wrap");
183
184     cpanel.add(hSeparable);
185     cpanel.add(vSeparable);
186
187     // Input and Output lists
188     // Inputparams
189     JPanel iprmsList = new JPanel();
190     iprmsList.setBorder(new TitledBorder("Data input parameters"));
191     iprmsList.setLayout(new MigLayout("", "[grow 90, fill][]"));
192     iprmVp = new JScrollPane();
193     iprmVp.getViewport().setView(iprms = new JList());
194     iprmsList.add(iprmVp);
195     iprms.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
196     iprms.addMouseListener(new MouseListener()
197     {
198
199       @Override
200       public void mouseReleased(MouseEvent e)
201       {
202         // TODO Auto-generated method stub
203
204       }
205
206       @Override
207       public void mousePressed(MouseEvent e)
208       {
209         // TODO Auto-generated method stub
210
211       }
212
213       @Override
214       public void mouseExited(MouseEvent e)
215       {
216         // TODO Auto-generated method stub
217
218       }
219
220       @Override
221       public void mouseEntered(MouseEvent e)
222       {
223         // TODO Auto-generated method stub
224
225       }
226
227       @Override
228       public void mouseClicked(MouseEvent e)
229       {
230         if (e.getClickCount() > 1)
231         {
232           iprmListSelection_doubleClicked();
233         }
234
235       }
236     });
237     JPanel iprmButs = new JPanel();
238     iprmButs.setLayout(new MigLayout());
239
240     iprmsAdd = JvSwingUtils.makeButton("+", "Add input parameter",
241             new ActionListener()
242             {
243
244               @Override
245               public void actionPerformed(ActionEvent e)
246               {
247                 iprmsAdd_actionPerformed(e);
248
249               }
250             });
251     iprmsRem = JvSwingUtils.makeButton("-",
252             "Remove selected input parameter", new ActionListener()
253             {
254
255               @Override
256               public void actionPerformed(ActionEvent e)
257               {
258                 iprmsRem_actionPerformed(e);
259
260               }
261             });
262
263     iprmButs.add(iprmsAdd, "wrap");
264     iprmButs.add(iprmsRem, "wrap");
265     iprmsList.add(iprmButs, "wrap");
266     inputs.add(iprmsList, "wrap");
267
268     // Return Parameters
269
270     rdataAdd = JvSwingUtils.makeButton("+", "Add return datatype",
271             new ActionListener()
272             {
273
274               @Override
275               public void actionPerformed(ActionEvent e)
276               {
277                 rdataAdd_actionPerformed(e);
278
279               }
280             });
281     rdataRem = JvSwingUtils.makeButton("-", "Remove return datatype",
282             new ActionListener()
283             {
284
285               @Override
286               public void actionPerformed(ActionEvent e)
287               {
288                 rdataRem_actionPerformed(e);
289
290               }
291             });
292     rdataNup = JvSwingUtils.makeButton("Move Up",
293             "Move return type up order", new ActionListener()
294             {
295
296               @Override
297               public void actionPerformed(ActionEvent e)
298               {
299                 rdataNup_actionPerformed(e);
300
301               }
302             });
303     rdataNdown = JvSwingUtils.makeButton("Move Down",
304             "Move return type down order", new ActionListener()
305             {
306
307               @Override
308               public void actionPerformed(ActionEvent e)
309               {
310                 rdataNdown_actionPerformed(e);
311
312               }
313             });
314
315     JPanel rparamList = new JPanel();
316     rparamList.setBorder(new TitledBorder("Data returned by service"));
317     rparamList.setLayout(new MigLayout("", "[grow 90, fill][]"));
318     rdata = new JList();
319     rdata.setToolTipText("Right click to edit currently selected parameter.");
320     rdata.addMouseListener(new MouseListener()
321     {
322
323       @Override
324       public void mouseReleased(MouseEvent arg0)
325       {
326         // TODO Auto-generated method stub
327
328       }
329
330       @Override
331       public void mousePressed(MouseEvent arg0)
332       {
333
334       }
335
336       @Override
337       public void mouseExited(MouseEvent arg0)
338       {
339         // TODO Auto-generated method stub
340
341       }
342
343       @Override
344       public void mouseEntered(MouseEvent arg0)
345       {
346         // TODO Auto-generated method stub
347
348       }
349
350       @Override
351       public void mouseClicked(MouseEvent arg0)
352       {
353         if (arg0.getButton() == MouseEvent.BUTTON3)
354         {
355           rdata_rightClicked(arg0);
356         }
357
358       }
359     });
360     rdataVp = new JScrollPane();
361     rdataVp.getViewport().setView(rdata);
362     rparamList.add(rdataVp);
363     JPanel rparamButs = new JPanel();
364     rparamButs.setLayout(new MigLayout());
365     rparamButs.add(rdataAdd, "wrap");
366     rparamButs.add(rdataRem, "wrap");
367     rparamButs.add(rdataNup, "wrap");
368     rparamButs.add(rdataNdown, "wrap");
369     rparamList.add(rparamButs, "wrap");
370     inputs.add(rparamList, "wrap");
371
372     // Parse flat-text to a service
373
374     urldesc = new JTextArea(4, 60);
375     urldesc.setEditable(true);
376     urldesc.setWrapStyleWord(true);
377     urldescVp = new JScrollPane();
378     urldescVp.setViewportView(urldesc);
379     JPanel urldescPane = new JPanel();
380     urldescPane.setLayout(new MigLayout("", "[grow 100, fill]",
381             "[grow 100, fill]"));
382     urldescPane.setBorder(new TitledBorder("RSBS Encoded Service"));
383     urldescPane.add(urldescVp, "span");
384     paste.add(urldescPane, "span");
385     urldescPane
386             .setToolTipText("<html>"
387                     + JvSwingUtils
388                             .wrapTooltip("Flat file representation of this rest service using the Really Simple Bioinformatics Service formalism"));
389
390     parseRes = new JTextArea();
391     parseResVp = new JScrollPane();
392     parseResVp.setViewportView(parseRes);
393     parseRes.setWrapStyleWord(true);
394     parseRes.setColumns(60);
395     parseWarnings = new JPanel(new MigLayout("", "[grow 100, fill]",
396             "[grow 100, fill]"));
397     parseWarnings.setBorder(new TitledBorder("Parsing errors"));
398     parseWarnings
399             .setToolTipText("<html>"
400                     + JvSwingUtils
401                             .wrapTooltip("Results of parsing the RSBS representation")
402                     + "</html>");
403     parseWarnings.add(parseResVp, "center");
404     parseRes.setEditable(false);
405     paste.add(parseWarnings, "span");
406     setLayout(new BorderLayout());
407     add(panels, BorderLayout.CENTER);
408     okButton = JvSwingUtils.makeButton("OK", "", new ActionListener()
409     {
410
411       @Override
412       public void actionPerformed(ActionEvent e)
413       {
414         ok_actionPerformed();
415       }
416     });
417     cancelButton = JvSwingUtils.makeButton("Cancel", "",
418             new ActionListener()
419             {
420
421               @Override
422               public void actionPerformed(ActionEvent e)
423               {
424                 cancel_actionPerformed();
425               }
426             });
427
428   }
429
430   protected void rdata_rightClicked(MouseEvent arg0)
431   {
432     // TODO Auto-generated method stub
433
434   }
435
436   protected void iprmListSelection_doubleClicked()
437   {
438     // TODO Auto-generated method stub
439
440   }
441
442   protected void hSeparable_actionPerformed(ActionEvent arg0)
443   {
444     // TODO Auto-generated method stub
445
446   }
447
448   protected void vSeparable_actionPerformed(ActionEvent arg0)
449   {
450     // TODO Auto-generated method stub
451
452   }
453
454   protected void cancel_actionPerformed()
455   {
456     // TODO Auto-generated method stub
457
458   }
459
460   protected void ok_actionPerformed()
461   {
462     // TODO Auto-generated method stub
463
464   }
465
466   protected void iprmsAdd_actionPerformed(ActionEvent e)
467   {
468     // TODO Auto-generated method stub
469
470   }
471
472   protected void iprmsRem_actionPerformed(ActionEvent e)
473   {
474     // TODO Auto-generated method stub
475
476   }
477
478   protected void rdataAdd_actionPerformed(ActionEvent e)
479   {
480     // TODO Auto-generated method stub
481
482   }
483
484   protected void rdataRem_actionPerformed(ActionEvent e)
485   {
486     // TODO Auto-generated method stub
487
488   }
489
490   protected void rdataNup_actionPerformed(ActionEvent e)
491   {
492     // TODO Auto-generated method stub
493
494   }
495
496   protected void rdataNdown_actionPerformed(ActionEvent e)
497   {
498     // TODO Auto-generated method stub
499
500   }
501
502   protected void ok_actionPerformed(ActionEvent e)
503   {
504     // TODO Auto-generated method stub
505
506   }
507
508   protected void cancel_actionPerformed(ActionEvent e)
509   {
510     // TODO Auto-generated method stub
511
512   }
513
514 }