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;
21 import jalview.util.MessageManager;
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;
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;
41 import net.miginfocom.swing.MigLayout;
43 public class GRestServiceEditorPane extends JPanel
46 protected JTabbedPane panels;
48 protected JPanel details, inputs, paste;
50 protected JTextArea urldesc, url, urlsuff, name, descr, parseRes;
52 protected JComboBox action, gapChar;
56 protected JButton okButton;
58 protected JButton cancelButton;
64 protected JList iprms;
66 protected JList rdata;
68 JScrollPane iprmVp, rdataVp, parseResVp, urlVp, descrVp, urldescVp;
70 JButton rdataAdd, rdataRem, rdataNdown, rdataNup;
72 JButton iprmsAdd, iprmsRem;
74 protected JCheckBox hSeparable;
76 protected JCheckBox vSeparable;
78 protected JPanel parseWarnings;
80 public GRestServiceEditorPane()
85 protected void jbInit()
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][]", ""));
94 paste.setName("Cut'n'Paste");
95 paste.setLayout(new MigLayout("", "[grow 100, fill]",
96 "[][grow 100,fill]"));
98 panels = new JTabbedPane();
99 panels.addTab(details.getName(), details);
100 panels.addTab(inputs.getName(), inputs);
101 panels.addTab(paste.getName(), paste);
105 // Name and URL Panel
107 name = new JTextArea(1, 12);
109 JvSwingUtils.mgAddtoLayout(cpanel,
110 "Short descriptive name for service", new JLabel(MessageManager.getString("label.name")),
112 action = new JComboBox();
116 "What kind of function the service performs (e.g. alignment, analysis, search, etc).",
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, "Brief description of service",
122 new JLabel("Description:"), descrVp, "wrap");
124 url = new JTextArea(2, 60);
125 urlVp = new JScrollPane();
126 urlVp.setViewportView(url);
130 "URL to post data to service. Include any special parameters needed here",
131 new JLabel(MessageManager.getString("label.post_url")), urlVp, "wrap");
133 urlsuff = new JTextArea();
134 urlsuff.setColumns(60);
139 "Optional suffix added to URL when retrieving results from service",
140 new JLabel(MessageManager.getString("label.url_suffix")), urlsuff, "wrap");
143 // details.add(cpanel = new JPanel(), BorderLayout.CENTER);
144 // cpanel.setLayout(new FlowLayout());
145 hSeparable = new JCheckBox(MessageManager.getString("label.per_seq"));
147 .setToolTipText("<html>"
149 .wrapTooltip("When checked, a job is created for every sequence in the current selection.")
151 hSeparable.addActionListener(new ActionListener()
155 public void actionPerformed(ActionEvent arg0)
157 hSeparable_actionPerformed(arg0);
161 vSeparable = new JCheckBox(MessageManager.getString("label.result_vertically_separable"));
163 .setToolTipText("<html>"
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).")
170 vSeparable.addActionListener(new ActionListener()
174 public void actionPerformed(ActionEvent arg0)
176 vSeparable_actionPerformed(arg0);
180 gapChar = new JComboBox();
181 JvSwingUtils.mgAddtoLayout(cpanel,
182 "Which gap character does this service prefer ?", new JLabel(
183 "Gap Character:"), gapChar, "wrap");
185 cpanel.add(hSeparable);
186 cpanel.add(vSeparable);
188 // Input and Output lists
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()
201 public void mouseReleased(MouseEvent e)
203 // TODO Auto-generated method stub
208 public void mousePressed(MouseEvent e)
210 // TODO Auto-generated method stub
215 public void mouseExited(MouseEvent e)
217 // TODO Auto-generated method stub
222 public void mouseEntered(MouseEvent e)
224 // TODO Auto-generated method stub
229 public void mouseClicked(MouseEvent e)
231 if (e.getClickCount() > 1)
233 iprmListSelection_doubleClicked();
238 JPanel iprmButs = new JPanel();
239 iprmButs.setLayout(new MigLayout());
241 iprmsAdd = JvSwingUtils.makeButton("+", "Add input parameter",
246 public void actionPerformed(ActionEvent e)
248 iprmsAdd_actionPerformed(e);
252 iprmsRem = JvSwingUtils.makeButton("-",
253 "Remove selected input parameter", new ActionListener()
257 public void actionPerformed(ActionEvent e)
259 iprmsRem_actionPerformed(e);
264 iprmButs.add(iprmsAdd, "wrap");
265 iprmButs.add(iprmsRem, "wrap");
266 iprmsList.add(iprmButs, "wrap");
267 inputs.add(iprmsList, "wrap");
271 rdataAdd = JvSwingUtils.makeButton("+", "Add return datatype",
276 public void actionPerformed(ActionEvent e)
278 rdataAdd_actionPerformed(e);
282 rdataRem = JvSwingUtils.makeButton("-", "Remove return datatype",
287 public void actionPerformed(ActionEvent e)
289 rdataRem_actionPerformed(e);
293 rdataNup = JvSwingUtils.makeButton("Move Up",
294 "Move return type up order", new ActionListener()
298 public void actionPerformed(ActionEvent e)
300 rdataNup_actionPerformed(e);
304 rdataNdown = JvSwingUtils.makeButton("Move Down",
305 "Move return type down order", new ActionListener()
309 public void actionPerformed(ActionEvent e)
311 rdataNdown_actionPerformed(e);
316 JPanel rparamList = new JPanel();
317 rparamList.setBorder(new TitledBorder("Data returned by service"));
318 rparamList.setLayout(new MigLayout("", "[grow 90, fill][]"));
320 rdata.setToolTipText("Right click to edit currently selected parameter.");
321 rdata.addMouseListener(new MouseListener()
325 public void mouseReleased(MouseEvent arg0)
327 // TODO Auto-generated method stub
332 public void mousePressed(MouseEvent arg0)
338 public void mouseExited(MouseEvent arg0)
340 // TODO Auto-generated method stub
345 public void mouseEntered(MouseEvent arg0)
347 // TODO Auto-generated method stub
352 public void mouseClicked(MouseEvent arg0)
354 if (arg0.getButton() == MouseEvent.BUTTON3)
356 rdata_rightClicked(arg0);
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");
373 // Parse flat-text to a service
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");
387 .setToolTipText("<html>"
389 .wrapTooltip("Flat file representation of this rest service using the Really Simple Bioinformatics Service formalism"));
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"));
400 .setToolTipText("<html>"
402 .wrapTooltip("Results of parsing the RSBS representation")
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()
413 public void actionPerformed(ActionEvent e)
415 ok_actionPerformed();
418 cancelButton = JvSwingUtils.makeButton("Cancel", "",
423 public void actionPerformed(ActionEvent e)
425 cancel_actionPerformed();
431 protected void rdata_rightClicked(MouseEvent arg0)
433 // TODO Auto-generated method stub
437 protected void iprmListSelection_doubleClicked()
439 // TODO Auto-generated method stub
443 protected void hSeparable_actionPerformed(ActionEvent arg0)
445 // TODO Auto-generated method stub
449 protected void vSeparable_actionPerformed(ActionEvent arg0)
451 // TODO Auto-generated method stub
455 protected void cancel_actionPerformed()
457 // TODO Auto-generated method stub
461 protected void ok_actionPerformed()
463 // TODO Auto-generated method stub
467 protected void iprmsAdd_actionPerformed(ActionEvent e)
469 // TODO Auto-generated method stub
473 protected void iprmsRem_actionPerformed(ActionEvent e)
475 // TODO Auto-generated method stub
479 protected void rdataAdd_actionPerformed(ActionEvent e)
481 // TODO Auto-generated method stub
485 protected void rdataRem_actionPerformed(ActionEvent e)
487 // TODO Auto-generated method stub
491 protected void rdataNup_actionPerformed(ActionEvent e)
493 // TODO Auto-generated method stub
497 protected void rdataNdown_actionPerformed(ActionEvent e)
499 // TODO Auto-generated method stub
503 protected void ok_actionPerformed(ActionEvent e)
505 // TODO Auto-generated method stub
509 protected void cancel_actionPerformed(ActionEvent e)
511 // TODO Auto-generated method stub