3 import jalview.gui.JvSwingUtils;
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;
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;
34 import net.miginfocom.swing.MigLayout;
36 public class GRestServiceEditorPane extends JPanel {
38 protected JTabbedPane panels;
40 protected JPanel details, inputs, paste;
42 protected JTextArea urldesc, url, urlsuff, name, descr, parseRes;
44 protected JComboBox action, gapChar;
48 protected JButton okButton;
50 protected JButton cancelButton;
56 protected JList iprms;
58 protected JList rdata;
60 JScrollPane iprmVp, rdataVp, parseResVp, urlVp, descrVp, urldescVp;
62 JButton rdataAdd, rdataRem, rdataNdown, rdataNup;
64 JButton iprmsAdd, iprmsRem;
66 protected JCheckBox hSeparable;
68 protected JCheckBox vSeparable;
70 protected JPanel parseWarnings;
72 public GRestServiceEditorPane()
77 protected void jbInit()
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][]",""));
86 paste.setName("Cut'n'Paste");
87 paste.setLayout(new MigLayout("","[grow 100, fill]","[][grow 100,fill]"));
89 panels = new JTabbedPane();
90 panels.addTab(details.getName(), details);
91 panels.addTab(inputs.getName(), inputs);
92 panels.addTab(paste.getName(), paste);
98 name = new JTextArea(1, 12);
101 .mgAddtoLayout(cpanel, "Short descriptive name for service",
102 new JLabel("Name:"), name,"wrap");
103 action = new JComboBox();
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");
115 url = new JTextArea(2, 60);
116 urlVp = new JScrollPane();
117 urlVp.setViewportView(url);
121 "URL to post data to service. Include any special parameters needed here",
122 new JLabel("POST URL:"), urlVp,"wrap");
124 urlsuff = new JTextArea();
125 urlsuff.setColumns(60);
130 "Optional suffix added to URL when retrieving results from service",
131 new JLabel("URL Suffix:"), urlsuff,"wrap");
134 // details.add(cpanel = new JPanel(), BorderLayout.CENTER);
135 // cpanel.setLayout(new FlowLayout());
136 hSeparable = new JCheckBox("per Sequence");
138 .setToolTipText("<html>"
140 .wrapTooltip("When checked, a job is created for every sequence in the current selection.")
142 hSeparable.addActionListener(new ActionListener()
146 public void actionPerformed(ActionEvent arg0)
148 hSeparable_actionPerformed(arg0);
152 vSeparable = new JCheckBox("Results are vertically separable");
154 .setToolTipText("<html>"
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).")
161 vSeparable.addActionListener(new ActionListener()
165 public void actionPerformed(ActionEvent arg0)
167 vSeparable_actionPerformed(arg0);
171 gapChar = new JComboBox();
175 "Which gap character does this service prefer ?",
176 new JLabel("Gap Character:"), gapChar,"wrap");
179 cpanel.add(hSeparable);
180 cpanel.add(vSeparable);
182 // Input and Output lists
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()
195 public void mouseReleased(MouseEvent e)
197 // TODO Auto-generated method stub
202 public void mousePressed(MouseEvent e)
204 // TODO Auto-generated method stub
209 public void mouseExited(MouseEvent e)
211 // TODO Auto-generated method stub
216 public void mouseEntered(MouseEvent e)
218 // TODO Auto-generated method stub
223 public void mouseClicked(MouseEvent e)
225 if (e.getClickCount()>1) {
226 iprmListSelection_doubleClicked();
231 JPanel iprmButs = new JPanel();
232 iprmButs.setLayout(new MigLayout());
234 iprmsAdd = JvSwingUtils.makeButton("+", "Add input parameter",
239 public void actionPerformed(ActionEvent e)
241 iprmsAdd_actionPerformed(e);
245 iprmsRem = JvSwingUtils.makeButton("-",
246 "Remove selected input parameter", new ActionListener()
250 public void actionPerformed(ActionEvent e)
252 iprmsRem_actionPerformed(e);
257 iprmButs.add(iprmsAdd,"wrap");
258 iprmButs.add(iprmsRem,"wrap");
259 iprmsList.add(iprmButs, "wrap");
260 inputs.add(iprmsList, "wrap");
264 rdataAdd = JvSwingUtils.makeButton("+", "Add return datatype",
269 public void actionPerformed(ActionEvent e)
271 rdataAdd_actionPerformed(e);
275 rdataRem = JvSwingUtils.makeButton("-", "Remove return datatype",
280 public void actionPerformed(ActionEvent e)
282 rdataRem_actionPerformed(e);
286 rdataNup = JvSwingUtils.makeButton("Move Up",
287 "Move return type up order", new ActionListener()
291 public void actionPerformed(ActionEvent e)
293 rdataNup_actionPerformed(e);
297 rdataNdown = JvSwingUtils.makeButton("Move Down",
298 "Move return type down order", new ActionListener()
302 public void actionPerformed(ActionEvent e)
304 rdataNdown_actionPerformed(e);
309 JPanel rparamList = new JPanel();
310 rparamList.setBorder(new TitledBorder("Data returned by service"));
311 rparamList.setLayout(new MigLayout("","[grow 90, fill][]"));
313 rdata.setToolTipText("Right click to edit currently selected parameter.");
314 rdata.addMouseListener(new MouseListener()
318 public void mouseReleased(MouseEvent arg0)
320 // TODO Auto-generated method stub
325 public void mousePressed(MouseEvent arg0)
331 public void mouseExited(MouseEvent arg0)
333 // TODO Auto-generated method stub
338 public void mouseEntered(MouseEvent arg0)
340 // TODO Auto-generated method stub
345 public void mouseClicked(MouseEvent arg0)
347 if (arg0.getButton()==MouseEvent.BUTTON3)
349 rdata_rightClicked(arg0);
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");
366 // Parse flat-text to a service
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"));
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()
398 public void actionPerformed(ActionEvent e)
400 ok_actionPerformed();
403 cancelButton = JvSwingUtils.makeButton("Cancel", "",
408 public void actionPerformed(ActionEvent e)
410 cancel_actionPerformed();
416 protected void rdata_rightClicked(MouseEvent arg0)
418 // TODO Auto-generated method stub
422 protected void iprmListSelection_doubleClicked()
424 // TODO Auto-generated method stub
428 protected void hSeparable_actionPerformed(ActionEvent arg0)
430 // TODO Auto-generated method stub
434 protected void vSeparable_actionPerformed(ActionEvent arg0)
436 // TODO Auto-generated method stub
440 protected void cancel_actionPerformed()
442 // TODO Auto-generated method stub
446 protected void ok_actionPerformed()
448 // TODO Auto-generated method stub
452 protected void iprmsAdd_actionPerformed(ActionEvent e)
454 // TODO Auto-generated method stub
458 protected void iprmsRem_actionPerformed(ActionEvent e)
460 // TODO Auto-generated method stub
464 protected void rdataAdd_actionPerformed(ActionEvent e)
466 // TODO Auto-generated method stub
470 protected void rdataRem_actionPerformed(ActionEvent e)
472 // TODO Auto-generated method stub
476 protected void rdataNup_actionPerformed(ActionEvent e)
478 // TODO Auto-generated method stub
482 protected void rdataNdown_actionPerformed(ActionEvent e)
484 // TODO Auto-generated method stub
488 protected void ok_actionPerformed(ActionEvent e)
490 // TODO Auto-generated method stub
494 protected void cancel_actionPerformed(ActionEvent e)
496 // TODO Auto-generated method stub