Merge branch 'Release_2_8_0b1_Branch' into try_r20b1_merge
[jalview.git] / src / jalview / jbgui / GRestServiceEditorPane.java
index 74b1463..14c03bf 100644 (file)
@@ -1,15 +1,32 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.jbgui;
 
 import jalview.gui.JvSwingUtils;
+import jalview.util.MessageManager;
 
 import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.GridLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
 
-import javax.swing.BoxLayout;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
@@ -19,17 +36,13 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTabbedPane;
 import javax.swing.JTextArea;
-import javax.swing.JViewport;
-import javax.swing.UIManager;
+import javax.swing.ListSelectionModel;
 import javax.swing.border.TitledBorder;
-import javax.swing.event.CaretEvent;
-import javax.swing.event.CaretListener;
-import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
 
 import net.miginfocom.swing.MigLayout;
 
-public class GRestServiceEditorPane extends JPanel {
+public class GRestServiceEditorPane extends JPanel
+{
 
   protected JTabbedPane panels;
 
@@ -77,10 +90,11 @@ public class GRestServiceEditorPane extends JPanel {
     details.setLayout(new MigLayout());
     inputs = new JPanel();
     inputs.setName("Input/Output");
-    inputs.setLayout(new MigLayout("","[grow 85,fill][]",""));
+    inputs.setLayout(new MigLayout("", "[grow 85,fill][]", ""));
     paste = new JPanel();
     paste.setName("Cut'n'Paste");
-    paste.setLayout(new MigLayout());
+    paste.setLayout(new MigLayout("", "[grow 100, fill]",
+            "[][grow 100,fill]"));
 
     panels = new JTabbedPane();
     panels.addTab(details.getName(), details);
@@ -93,43 +107,43 @@ public class GRestServiceEditorPane extends JPanel {
     cpanel = details;
     name = new JTextArea(1, 12);
 
-    JvSwingUtils
-            .mgAddtoLayout(cpanel, "Short descriptive name for service",
-                    new JLabel("Name:"), name,"wrap");
+    JvSwingUtils.mgAddtoLayout(cpanel,
+            "Short descriptive name for service", new JLabel(MessageManager.getString("label.name")),
+            name, "wrap");
     action = new JComboBox();
     JvSwingUtils
             .mgAddtoLayout(
                     cpanel,
                     "What kind of function the service performs (e.g. alignment, analysis, search, etc).",
-                    new JLabel("Service Action:"), action,"wrap");
-    descr = new JTextArea(4, 40);
+                    new JLabel(MessageManager.getString("label.service_action")), action, "wrap");
+    descr = new JTextArea(4, 60);
     descrVp = new JScrollPane();
     descrVp.setViewportView(descr);
     JvSwingUtils.mgAddtoLayout(cpanel, "Brief description of service",
-            new JLabel("Description:"), descrVp,"wrap");
+            new JLabel("Description:"), descrVp, "wrap");
 
-    url = new JTextArea(2, 20);
+    url = new JTextArea(2, 60);
     urlVp = new JScrollPane();
     urlVp.setViewportView(url);
     JvSwingUtils
             .mgAddtoLayout(
                     cpanel,
                     "URL to post data to service. Include any special parameters needed here",
-                    new JLabel("POST URL:"), urlVp,"wrap");
+                    new JLabel(MessageManager.getString("label.post_url")), urlVp, "wrap");
 
     urlsuff = new JTextArea();
-    urlsuff.setColumns(20);
+    urlsuff.setColumns(60);
 
     JvSwingUtils
             .mgAddtoLayout(
                     cpanel,
                     "Optional suffix added to URL when retrieving results from service",
-                    new JLabel("URL Suffix:"), urlsuff,"wrap");
+                    new JLabel(MessageManager.getString("label.url_suffix")), urlsuff, "wrap");
 
     // input options
     // details.add(cpanel = new JPanel(), BorderLayout.CENTER);
     // cpanel.setLayout(new FlowLayout());
-    hSeparable = new JCheckBox("per Sequence");
+    hSeparable = new JCheckBox(MessageManager.getString("label.per_seq"));
     hSeparable
             .setToolTipText("<html>"
                     + JvSwingUtils
@@ -145,7 +159,7 @@ public class GRestServiceEditorPane extends JPanel {
 
       }
     });
-    vSeparable = new JCheckBox("Results are vertically separable");
+    vSeparable = new JCheckBox(MessageManager.getString("label.result_vertically_separable"));
     vSeparable
             .setToolTipText("<html>"
                     + JvSwingUtils
@@ -165,12 +179,9 @@ public class GRestServiceEditorPane extends JPanel {
       }
     });
     gapChar = new JComboBox();
-    JvSwingUtils
-            .mgAddtoLayout(
-                    cpanel,
-                    "Which gap character does this service prefer ?",
-                    new JLabel("Gap Character:"), gapChar,"wrap");
-    
+    JvSwingUtils.mgAddtoLayout(cpanel,
+            "Which gap character does this service prefer ?", new JLabel(
+                    "Gap Character:"), gapChar, "wrap");
 
     cpanel.add(hSeparable);
     cpanel.add(vSeparable);
@@ -179,10 +190,52 @@ public class GRestServiceEditorPane extends JPanel {
     // Inputparams
     JPanel iprmsList = new JPanel();
     iprmsList.setBorder(new TitledBorder("Data input parameters"));
-    iprmsList.setLayout(new MigLayout());
+    iprmsList.setLayout(new MigLayout("", "[grow 90, fill][]"));
     iprmVp = new JScrollPane();
     iprmVp.getViewport().setView(iprms = new JList());
     iprmsList.add(iprmVp);
+    iprms.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+    iprms.addMouseListener(new MouseListener()
+    {
+
+      @Override
+      public void mouseReleased(MouseEvent e)
+      {
+        // TODO Auto-generated method stub
+
+      }
+
+      @Override
+      public void mousePressed(MouseEvent e)
+      {
+        // TODO Auto-generated method stub
+
+      }
+
+      @Override
+      public void mouseExited(MouseEvent e)
+      {
+        // TODO Auto-generated method stub
+
+      }
+
+      @Override
+      public void mouseEntered(MouseEvent e)
+      {
+        // TODO Auto-generated method stub
+
+      }
+
+      @Override
+      public void mouseClicked(MouseEvent e)
+      {
+        if (e.getClickCount() > 1)
+        {
+          iprmListSelection_doubleClicked();
+        }
+
+      }
+    });
     JPanel iprmButs = new JPanel();
     iprmButs.setLayout(new MigLayout());
 
@@ -209,13 +262,13 @@ public class GRestServiceEditorPane extends JPanel {
               }
             });
 
-    iprmButs.add(iprmsAdd,"wrap");
-    iprmButs.add(iprmsRem,"wrap");
+    iprmButs.add(iprmsAdd, "wrap");
+    iprmButs.add(iprmsRem, "wrap");
     iprmsList.add(iprmButs, "wrap");
     inputs.add(iprmsList, "wrap");
 
     // Return Parameters
-    
+
     rdataAdd = JvSwingUtils.makeButton("+", "Add return datatype",
             new ActionListener()
             {
@@ -263,38 +316,95 @@ public class GRestServiceEditorPane extends JPanel {
 
     JPanel rparamList = new JPanel();
     rparamList.setBorder(new TitledBorder("Data returned by service"));
-    rparamList.setLayout(new MigLayout());
+    rparamList.setLayout(new MigLayout("", "[grow 90, fill][]"));
     rdata = new JList();
+    rdata.setToolTipText("Right click to edit currently selected parameter.");
+    rdata.addMouseListener(new MouseListener()
+    {
+
+      @Override
+      public void mouseReleased(MouseEvent arg0)
+      {
+        // TODO Auto-generated method stub
+
+      }
+
+      @Override
+      public void mousePressed(MouseEvent arg0)
+      {
+
+      }
+
+      @Override
+      public void mouseExited(MouseEvent arg0)
+      {
+        // TODO Auto-generated method stub
+
+      }
+
+      @Override
+      public void mouseEntered(MouseEvent arg0)
+      {
+        // TODO Auto-generated method stub
+
+      }
+
+      @Override
+      public void mouseClicked(MouseEvent arg0)
+      {
+        if (arg0.getButton() == MouseEvent.BUTTON3)
+        {
+          rdata_rightClicked(arg0);
+        }
+
+      }
+    });
     rdataVp = new JScrollPane();
     rdataVp.getViewport().setView(rdata);
     rparamList.add(rdataVp);
     JPanel rparamButs = new JPanel();
     rparamButs.setLayout(new MigLayout());
-    rparamButs.add(rdataAdd,"wrap");
-    rparamButs.add(rdataRem,"wrap");
-    rparamButs.add(rdataNup,"wrap");
-    rparamButs.add(rdataNdown,"wrap");
-    rparamList.add(rparamButs,"wrap");
-    inputs.add(rparamList,"wrap");
+    rparamButs.add(rdataAdd, "wrap");
+    rparamButs.add(rdataRem, "wrap");
+    rparamButs.add(rdataNup, "wrap");
+    rparamButs.add(rdataNdown, "wrap");
+    rparamList.add(rparamButs, "wrap");
+    inputs.add(rparamList, "wrap");
+
     // Parse flat-text to a service
 
-    
-    urldesc = new JTextArea(2,40);
+    urldesc = new JTextArea(4, 60);
     urldesc.setEditable(true);
+    urldesc.setWrapStyleWord(true);
     urldescVp = new JScrollPane();
     urldescVp.setViewportView(urldesc);
-    JvSwingUtils.mgAddtoLayout(paste,"Flat file representation of this rest service using the Really Simple Bioinformatics Service formalism", new JLabel("RSBS Encoded Service:"), urldescVp,"wrap");
+    JPanel urldescPane = new JPanel();
+    urldescPane.setLayout(new MigLayout("", "[grow 100, fill]",
+            "[grow 100, fill]"));
+    urldescPane.setBorder(new TitledBorder("RSBS Encoded Service"));
+    urldescPane.add(urldescVp, "span");
+    paste.add(urldescPane, "span");
+    urldescPane
+            .setToolTipText("<html>"
+                    + JvSwingUtils
+                            .wrapTooltip("Flat file representation of this rest service using the Really Simple Bioinformatics Service formalism"));
 
-    parseRes = new JTextArea(5,40);
+    parseRes = new JTextArea();
     parseResVp = new JScrollPane();
     parseResVp.setViewportView(parseRes);
-    parseWarnings = new JPanel(new MigLayout());
+    parseRes.setWrapStyleWord(true);
+    parseRes.setColumns(60);
+    parseWarnings = new JPanel(new MigLayout("", "[grow 100, fill]",
+            "[grow 100, fill]"));
     parseWarnings.setBorder(new TitledBorder("Parsing errors"));
-    parseWarnings.setToolTipText("<html>"+JvSwingUtils.wrapTooltip("Results of parsing the RSBS representation")+"</html>");
-    parseWarnings.add(parseResVp, "wrap");
+    parseWarnings
+            .setToolTipText("<html>"
+                    + JvSwingUtils
+                            .wrapTooltip("Results of parsing the RSBS representation")
+                    + "</html>");
+    parseWarnings.add(parseResVp, "center");
     parseRes.setEditable(false);
-    
+    paste.add(parseWarnings, "span");
     setLayout(new BorderLayout());
     add(panels, BorderLayout.CENTER);
     okButton = JvSwingUtils.makeButton("OK", "", new ActionListener()
@@ -319,6 +429,18 @@ public class GRestServiceEditorPane extends JPanel {
 
   }
 
+  protected void rdata_rightClicked(MouseEvent arg0)
+  {
+    // TODO Auto-generated method stub
+
+  }
+
+  protected void iprmListSelection_doubleClicked()
+  {
+    // TODO Auto-generated method stub
+
+  }
+
   protected void hSeparable_actionPerformed(ActionEvent arg0)
   {
     // TODO Auto-generated method stub