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
5 * This file is part of Jalview.
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.
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.
16 * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
18 package jalview.jbgui;
20 import jalview.gui.JvSwingUtils;
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;
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;
40 import net.miginfocom.swing.MigLayout;
42 public class GRestServiceEditorPane extends JPanel
45 protected JTabbedPane panels;
47 protected JPanel details, inputs, paste;
49 protected JTextArea urldesc, url, urlsuff, name, descr, parseRes;
51 protected JComboBox action, gapChar;
55 protected JButton okButton;
57 protected JButton cancelButton;
63 protected JList iprms;
65 protected JList rdata;
67 JScrollPane iprmVp, rdataVp, parseResVp, urlVp, descrVp, urldescVp;
69 JButton rdataAdd, rdataRem, rdataNdown, rdataNup;
71 JButton iprmsAdd, iprmsRem;
73 protected JCheckBox hSeparable;
75 protected JCheckBox vSeparable;
77 protected JPanel parseWarnings;
79 public GRestServiceEditorPane()
84 protected void jbInit()
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][]", ""));
93 paste.setName("Cut'n'Paste");
94 paste.setLayout(new MigLayout("", "[grow 100, fill]",
95 "[][grow 100,fill]"));
97 panels = new JTabbedPane();
98 panels.addTab(details.getName(), details);
99 panels.addTab(inputs.getName(), inputs);
100 panels.addTab(paste.getName(), paste);
104 // Name and URL Panel
106 name = new JTextArea(1, 12);
108 JvSwingUtils.mgAddtoLayout(cpanel,
109 "Short descriptive name for service", new JLabel("Name:"),
111 action = new JComboBox();
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");
123 url = new JTextArea(2, 60);
124 urlVp = new JScrollPane();
125 urlVp.setViewportView(url);
129 "URL to post data to service. Include any special parameters needed here",
130 new JLabel("POST URL:"), urlVp, "wrap");
132 urlsuff = new JTextArea();
133 urlsuff.setColumns(60);
138 "Optional suffix added to URL when retrieving results from service",
139 new JLabel("URL Suffix:"), urlsuff, "wrap");
142 // details.add(cpanel = new JPanel(), BorderLayout.CENTER);
143 // cpanel.setLayout(new FlowLayout());
144 hSeparable = new JCheckBox("per Sequence");
146 .setToolTipText("<html>"
148 .wrapTooltip("When checked, a job is created for every sequence in the current selection.")
150 hSeparable.addActionListener(new ActionListener()
154 public void actionPerformed(ActionEvent arg0)
156 hSeparable_actionPerformed(arg0);
160 vSeparable = new JCheckBox("Results are vertically separable");
162 .setToolTipText("<html>"
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).")
169 vSeparable.addActionListener(new ActionListener()
173 public void actionPerformed(ActionEvent arg0)
175 vSeparable_actionPerformed(arg0);
179 gapChar = new JComboBox();
180 JvSwingUtils.mgAddtoLayout(cpanel,
181 "Which gap character does this service prefer ?", new JLabel(
182 "Gap Character:"), gapChar, "wrap");
184 cpanel.add(hSeparable);
185 cpanel.add(vSeparable);
187 // Input and Output lists
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()
200 public void mouseReleased(MouseEvent e)
202 // TODO Auto-generated method stub
207 public void mousePressed(MouseEvent e)
209 // TODO Auto-generated method stub
214 public void mouseExited(MouseEvent e)
216 // TODO Auto-generated method stub
221 public void mouseEntered(MouseEvent e)
223 // TODO Auto-generated method stub
228 public void mouseClicked(MouseEvent e)
230 if (e.getClickCount() > 1)
232 iprmListSelection_doubleClicked();
237 JPanel iprmButs = new JPanel();
238 iprmButs.setLayout(new MigLayout());
240 iprmsAdd = JvSwingUtils.makeButton("+", "Add input parameter",
245 public void actionPerformed(ActionEvent e)
247 iprmsAdd_actionPerformed(e);
251 iprmsRem = JvSwingUtils.makeButton("-",
252 "Remove selected input parameter", new ActionListener()
256 public void actionPerformed(ActionEvent e)
258 iprmsRem_actionPerformed(e);
263 iprmButs.add(iprmsAdd, "wrap");
264 iprmButs.add(iprmsRem, "wrap");
265 iprmsList.add(iprmButs, "wrap");
266 inputs.add(iprmsList, "wrap");
270 rdataAdd = JvSwingUtils.makeButton("+", "Add return datatype",
275 public void actionPerformed(ActionEvent e)
277 rdataAdd_actionPerformed(e);
281 rdataRem = JvSwingUtils.makeButton("-", "Remove return datatype",
286 public void actionPerformed(ActionEvent e)
288 rdataRem_actionPerformed(e);
292 rdataNup = JvSwingUtils.makeButton("Move Up",
293 "Move return type up order", new ActionListener()
297 public void actionPerformed(ActionEvent e)
299 rdataNup_actionPerformed(e);
303 rdataNdown = JvSwingUtils.makeButton("Move Down",
304 "Move return type down order", new ActionListener()
308 public void actionPerformed(ActionEvent e)
310 rdataNdown_actionPerformed(e);
315 JPanel rparamList = new JPanel();
316 rparamList.setBorder(new TitledBorder("Data returned by service"));
317 rparamList.setLayout(new MigLayout("", "[grow 90, fill][]"));
319 rdata.setToolTipText("Right click to edit currently selected parameter.");
320 rdata.addMouseListener(new MouseListener()
324 public void mouseReleased(MouseEvent arg0)
326 // TODO Auto-generated method stub
331 public void mousePressed(MouseEvent arg0)
337 public void mouseExited(MouseEvent arg0)
339 // TODO Auto-generated method stub
344 public void mouseEntered(MouseEvent arg0)
346 // TODO Auto-generated method stub
351 public void mouseClicked(MouseEvent arg0)
353 if (arg0.getButton() == MouseEvent.BUTTON3)
355 rdata_rightClicked(arg0);
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");
372 // Parse flat-text to a service
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");
386 .setToolTipText("<html>"
388 .wrapTooltip("Flat file representation of this rest service using the Really Simple Bioinformatics Service formalism"));
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"));
399 .setToolTipText("<html>"
401 .wrapTooltip("Results of parsing the RSBS representation")
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()
412 public void actionPerformed(ActionEvent e)
414 ok_actionPerformed();
417 cancelButton = JvSwingUtils.makeButton("Cancel", "",
422 public void actionPerformed(ActionEvent e)
424 cancel_actionPerformed();
430 protected void rdata_rightClicked(MouseEvent arg0)
432 // TODO Auto-generated method stub
436 protected void iprmListSelection_doubleClicked()
438 // TODO Auto-generated method stub
442 protected void hSeparable_actionPerformed(ActionEvent arg0)
444 // TODO Auto-generated method stub
448 protected void vSeparable_actionPerformed(ActionEvent arg0)
450 // TODO Auto-generated method stub
454 protected void cancel_actionPerformed()
456 // TODO Auto-generated method stub
460 protected void ok_actionPerformed()
462 // TODO Auto-generated method stub
466 protected void iprmsAdd_actionPerformed(ActionEvent e)
468 // TODO Auto-generated method stub
472 protected void iprmsRem_actionPerformed(ActionEvent e)
474 // TODO Auto-generated method stub
478 protected void rdataAdd_actionPerformed(ActionEvent e)
480 // TODO Auto-generated method stub
484 protected void rdataRem_actionPerformed(ActionEvent e)
486 // TODO Auto-generated method stub
490 protected void rdataNup_actionPerformed(ActionEvent e)
492 // TODO Auto-generated method stub
496 protected void rdataNdown_actionPerformed(ActionEvent e)
498 // TODO Auto-generated method stub
502 protected void ok_actionPerformed(ActionEvent e)
504 // TODO Auto-generated method stub
508 protected void cancel_actionPerformed(ActionEvent e)
510 // TODO Auto-generated method stub