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