JAL-1860 only allow enter key when valid selection are made and the veiew/ok button...
[jalview.git] / src / jalview / jbgui / GPDBSearchPanel.java
index 473f634..58ec25e 100644 (file)
@@ -72,11 +72,11 @@ public abstract class GPDBSearchPanel extends JPanel
   protected JButton btn_ok = new JButton();
 
   protected JButton btn_back = new JButton();
-  
+
   protected JButton btn_cancel = new JButton();
-  
+
   protected JTextField txt_search = new JTextField(20);
-  
+
   protected JTable tbl_summary = new JTable()
   {
     public String getToolTipText(MouseEvent evt)
@@ -93,22 +93,29 @@ public abstract class GPDBSearchPanel extends JPanel
       {
         e.printStackTrace();
       }
-      toolTipText = (toolTipText == null ? null : JvSwingUtils.wrapTooltip(
-              true, toolTipText));
+      toolTipText = (toolTipText == null ? null
+              : (toolTipText.length() > 500 ? JvSwingUtils.wrapTooltip(
+                      true, toolTipText.subSequence(0, 500) + "...")
+                      : JvSwingUtils.wrapTooltip(true, toolTipText)));
+
       return toolTipText;
     }
   };
 
   protected StringBuilder errorWarning = new StringBuilder();
 
-  protected JScrollPane scrl_searchResult = new JScrollPane(
-tbl_summary);
+  protected JScrollPane scrl_searchResult = new JScrollPane(tbl_summary);
 
   protected ImageIcon warningImage = new ImageIcon(getClass().getResource(
           "/images/warning.gif"));
 
+  protected ImageIcon loadingImage = new ImageIcon(getClass().getResource(
+          "/images/loading.gif"));
+
   protected JLabel lbl_warning = new JLabel(warningImage);
 
+  protected JLabel lbl_loading = new JLabel(loadingImage);
+
   private JTabbedPane tabbedPane = new JTabbedPane();
 
   private PDBDocFieldPreferences pdbDocFieldPrefs = new PDBDocFieldPreferences(
@@ -146,6 +153,8 @@ tbl_summary);
   {
     lbl_warning.setVisible(false);
     lbl_warning.setFont(new java.awt.Font("Verdana", 0, 12));
+    lbl_loading.setVisible(false);
+    lbl_loading.setFont(new java.awt.Font("Verdana", 0, 12));
 
     tbl_summary.setAutoCreateRowSorter(true);
     tbl_summary.getTableHeader().setReorderingAllowed(false);
@@ -155,11 +164,36 @@ tbl_summary);
       {
         validateSelection();
       }
+
       public void mouseReleased(MouseEvent e)
       {
         validateSelection();
       }
     });
+    tbl_summary.addKeyListener(new KeyAdapter()
+    {
+      @Override
+      public void keyPressed(KeyEvent evt)
+      {
+        validateSelection();
+        switch (evt.getKeyCode())
+        {
+        case KeyEvent.VK_ESCAPE: // escape key
+          btn_back_ActionPerformed();
+          break;
+        case KeyEvent.VK_ENTER: // enter key
+          if (btn_ok.isEnabled())
+          {
+            btn_ok_ActionPerformed();
+          }
+          break;
+        case KeyEvent.VK_TAB: // tab key
+          btn_back.requestFocus();
+        default:
+          return;
+        }
+      }
+    });
 
     btn_back.setFont(new java.awt.Font("Verdana", 0, 12));
     btn_back.setText(MessageManager.getString("action.back"));
@@ -170,6 +204,17 @@ tbl_summary);
         btn_back_ActionPerformed();
       }
     });
+    btn_back.addKeyListener(new KeyAdapter()
+    {
+      @Override
+      public void keyPressed(KeyEvent evt)
+      {
+        if (evt.getKeyCode() == KeyEvent.VK_ENTER)
+        {
+          btn_back_ActionPerformed();
+        }
+      }
+    });
 
     btn_ok.setEnabled(false);
     btn_ok.setFont(new java.awt.Font("Verdana", 0, 12));
@@ -181,6 +226,18 @@ tbl_summary);
         btn_ok_ActionPerformed();
       }
     });
+    btn_ok.addKeyListener(new KeyAdapter()
+    {
+      @Override
+      public void keyPressed(KeyEvent evt)
+      {
+        if (evt.getKeyCode() == KeyEvent.VK_ENTER)
+        {
+          btn_ok_ActionPerformed();
+        }
+      }
+    });
+
     btn_cancel.setFont(new java.awt.Font("Verdana", 0, 12));
     btn_cancel.setText(MessageManager.getString("action.cancel"));
     btn_cancel.addActionListener(new java.awt.event.ActionListener()
@@ -190,7 +247,17 @@ tbl_summary);
         btn_cancel_ActionPerformed();
       }
     });
-
+    btn_cancel.addKeyListener(new KeyAdapter()
+    {
+      @Override
+      public void keyPressed(KeyEvent evt)
+      {
+        if (evt.getKeyCode() == KeyEvent.VK_ENTER)
+        {
+          btn_cancel_ActionPerformed();
+        }
+      }
+    });
 
     scrl_searchResult.setPreferredSize(new Dimension(500, 300));
     scrl_searchResult
@@ -217,8 +284,9 @@ tbl_summary);
         else
         {
           tooltipText = MessageManager.formatMessage(
-                  "label.separate_multiple_query_values", new Object[]
-                  { getCmbSearchTarget().getSelectedItem().toString() });
+                  "label.separate_multiple_query_values",
+                  new Object[] { getCmbSearchTarget().getSelectedItem()
+                          .toString() });
         }
         txt_search.setToolTipText(JvSwingUtils.wrapTooltip(true,
                 tooltipText));
@@ -228,7 +296,6 @@ tbl_summary);
 
     populateCmbSearchTargetOptions();
 
-
     txt_search.setFont(new java.awt.Font("Verdana", 0, 12));
 
     txt_search.addKeyListener(new KeyAdapter()
@@ -275,7 +342,8 @@ tbl_summary);
 
     final String searchTabTitle = MessageManager
             .getString("label.search_result");
-    final String configureCols = MessageManager.getString("label.configure_displayed_columns");
+    final String configureCols = MessageManager
+            .getString("label.configure_displayed_columns");
     ChangeListener changeListener = new ChangeListener()
     {
       public void stateChanged(ChangeEvent changeEvent)
@@ -318,6 +386,7 @@ tbl_summary);
     pnl_results.add(tabbedPane);
     pnl_inputs.add(cmb_searchTarget);
     pnl_inputs.add(txt_search);
+    pnl_inputs.add(lbl_loading);
     pnl_inputs.add(lbl_warning);
 
     this.setLayout(mainLayout);
@@ -342,6 +411,7 @@ tbl_summary);
             : true;
 
   }
+
   public void validateSelection()
   {
     if (tbl_summary.getSelectedRows().length > 0)
@@ -353,6 +423,7 @@ tbl_summary);
       btn_ok.setEnabled(false);
     }
   }
+
   public JComboBox<PDBDocField> getCmbSearchTarget()
   {
     return cmb_searchTarget;