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