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