f6ff4182335cc9f9918d228d08e31ad753a0f2ba
[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 import jalview.util.MessageManager;
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(MessageManager.getString("label.details"));
89     details.setLayout(new MigLayout());
90     inputs = new JPanel();
91     inputs.setName(MessageManager.getString("label.input_output"));
92     inputs.setLayout(new MigLayout("", "[grow 85,fill][]", ""));
93     paste = new JPanel();
94     paste.setName(MessageManager.getString("label.cut_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             MessageManager.getString("label.short_descriptive_name_for_service"), new JLabel(MessageManager.getString("label.name")),
111             name, "wrap");
112     action = new JComboBox();
113     JvSwingUtils
114             .mgAddtoLayout(
115                     cpanel,
116                     MessageManager.getString("label.function_service_performs"),
117                     new JLabel(MessageManager.getString("label.service_action")), action, "wrap");
118     descr = new JTextArea(4, 60);
119     descrVp = new JScrollPane();
120     descrVp.setViewportView(descr);
121     JvSwingUtils.mgAddtoLayout(cpanel, MessageManager.getString("label.brief_description_service"),
122             new JLabel(MessageManager.getString("label.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                     MessageManager.getString("label.url_post_data_service"),
131                     new JLabel(MessageManager.getString("label.post_url")), urlVp, "wrap");
132
133     urlsuff = new JTextArea();
134     urlsuff.setColumns(60);
135
136     JvSwingUtils
137             .mgAddtoLayout(
138                     cpanel,
139                     MessageManager.getString("label.optional_suffix"),
140                     new JLabel(MessageManager.getString("label.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(MessageManager.getString("label.per_seq"));
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(MessageManager.getString("label.result_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             MessageManager.getString("label.preferred_gap_character"), new JLabel(
183                     MessageManager.getString("label.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(MessageManager.getString("label.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("+", MessageManager.getString("action.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             MessageManager.getString("action.remove_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("+", MessageManager.getString("action.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("-", MessageManager.getString("action.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(MessageManager.getString("action.move_up"),
294             MessageManager.getString("label.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(MessageManager.getString("action.move_down"),
305             MessageManager.getString("label.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(MessageManager.getString("label.data_returned_by_service")));
318     rparamList.setLayout(new MigLayout("", "[grow 90, fill][]"));
319     rdata = new JList();
320     rdata.setToolTipText(MessageManager.getString("label.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(MessageManager.getString("label.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(MessageManager.getString("label.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(MessageManager.getString("action.ok"), "", new ActionListener()
410     {
411
412       @Override
413       public void actionPerformed(ActionEvent e)
414       {
415         ok_actionPerformed();
416       }
417     });
418     cancelButton = JvSwingUtils.makeButton(MessageManager.getString("action.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 }