Merge branch 'features/JAL-1714_specify-mulitple-id_PDB-query' into Release_2_9_Branch
authortcofoegbu <tcnofoegbu@dundee.ac.uk>
Tue, 28 Apr 2015 10:50:01 +0000 (11:50 +0100)
committertcofoegbu <tcnofoegbu@dundee.ac.uk>
Tue, 28 Apr 2015 10:50:01 +0000 (11:50 +0100)
RELEASE
src/jalview/gui/AlignmentPanel.java
src/jalview/gui/PDBSearchPanel.java
src/jalview/gui/SeqPanel.java
src/jalview/jbgui/GPDBSearchPanel.java
src/jalview/viewmodel/AlignmentViewport.java

diff --git a/RELEASE b/RELEASE
index 433e646..235344f 100644 (file)
--- a/RELEASE
+++ b/RELEASE
@@ -1,2 +1,2 @@
-jalview.release=Release_2_8_3_Branch
-jalview.version=2.8.3
+jalview.release=Release_2_9_Branch
+jalview.version=2.9
index c7ef3ce..80f568d 100644 (file)
@@ -397,14 +397,16 @@ public class AlignmentPanel extends GAlignmentPanel implements
           /*
            * Scroll left to make start of search results visible
            */
-          setScrollValues(start - 1, seqIndex);
+          // setScrollValues(start - 1, seqIndex); // plus one residue
+          setScrollValues(start, seqIndex);
         }
         else if ((endv = av.getEndRes()) <= end)
         {
           /*
            * Scroll right to make end of search results visible
            */
-          setScrollValues(startv + 1 + end - endv, seqIndex);
+          // setScrollValues(startv + 1 + end - endv, seqIndex); // plus one
+          setScrollValues(startv + end - endv, seqIndex);
         }
         else if ((starts = av.getStartSeq()) > seqIndex)
         {
index 514406a..7762605 100644 (file)
@@ -33,6 +33,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.HashSet;
 import java.util.List;
 
 import javax.swing.table.DefaultTableModel;
@@ -60,6 +61,7 @@ public class PDBSearchPanel extends GPDBSearchPanel
   @Override
   public void txt_search_ActionPerformed()
   {
+    btn_ok.setEnabled(false);
     boolean allowEmptySequence = false;
     mainFrame.setTitle(MessageManager
             .getString("label.pdb_sequence_getcher"));
@@ -165,20 +167,24 @@ public class PDBSearchPanel extends GPDBSearchPanel
   {
     mainFrame.dispose();
     StringBuilder selectedIds = new StringBuilder();
+    HashSet<String> selectedIdsSet = new HashSet<String>();
     int pdbIdCol = PDBRestClient.getPDBIdColumIndex(wantedFields, false);
     int[] selectedRows = tbl_summary.getSelectedRows();
     for (int summaryRow : selectedRows)
     {
       String pdbIdStr = tbl_summary.getValueAt(summaryRow, pdbIdCol)
               .toString();
-
       String searchTerm = txt_search.getText();
-      selectedIds.append(getPDBIdwithSpecifiedChain(pdbIdStr, searchTerm))
-              .append(";");
+      selectedIdsSet.add(getPDBIdwithSpecifiedChain(pdbIdStr, searchTerm));
+    }
+
+    for (String selectedId : selectedIdsSet)
+    {
+      selectedIds.append(selectedId).append(";");
     }
 
     String ids = selectedIds.toString();
-    // System.out.println(">>>>>>>>>>>>>>>> selected Ids: " + ids);
+    System.out.println(">>>>>>>>>>>>>>>> selected Ids: " + ids);
     seqFetcher.textArea.setText(ids);
     Thread worker = new Thread(seqFetcher);
     worker.start();
index 791a371..e34a864 100644 (file)
@@ -167,6 +167,13 @@ public class SeqPanel extends JPanel implements MouseListener,
 
   int wrappedBlock = -1;
 
+  /**
+   * Returns the aligned sequence position (base 0) at the mouse position, or
+   * the closest visible one
+   * 
+   * @param evt
+   * @return
+   */
   int findRes(MouseEvent evt)
   {
     int res = 0;
@@ -203,13 +210,18 @@ public class SeqPanel extends JPanel implements MouseListener,
     }
     else
     {
-      if (x > seqCanvas.getWidth() + seqCanvas.getWidth())
+      if (x > seqCanvas.getX() + seqCanvas.getWidth())
       {
         // make sure we calculate relative to visible alignment, rather than
         // right-hand gutter
         x = seqCanvas.getX() + seqCanvas.getWidth();
       }
       res = (x / av.getCharWidth()) + av.getStartRes();
+      if (res > av.getEndRes())
+      {
+        // moused off right
+        res = av.getEndRes();
+      }
     }
 
     if (av.hasHiddenColumns())
@@ -650,7 +662,7 @@ public class SeqPanel extends JPanel implements MouseListener,
     if (av.isFollowHighlight())
     {
       /*
-       * if scrollToPosition requires scroll adjustment, this flag prevents
+       * if scrollToPosition requires a scroll adjustment, this flag prevents
        * another scroll event being propagated back to the originator
        * 
        * @see AlignmentPanel#adjustmentValueChanged
index 29a0014..e74f0ef 100644 (file)
@@ -30,6 +30,8 @@ import java.awt.BorderLayout;
 import java.awt.Dimension;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
 
 import javax.swing.JButton;
 import javax.swing.JComboBox;
@@ -108,6 +110,21 @@ tbl_summary);
   private void jbInit() throws Exception
   {
     tbl_summary.setAutoCreateRowSorter(true);
+    tbl_summary.addMouseListener(new MouseAdapter()
+    {
+      public void mouseClicked(MouseEvent e)
+      {
+        if (tbl_summary.getSelectedRows().length > 0)
+        {
+          btn_ok.setEnabled(true);
+        }
+        else
+        {
+          btn_ok.setEnabled(false);
+        }
+      }
+    });
+
     btn_back.setFont(new java.awt.Font("Verdana", 0, 12));
     btn_back.setText(MessageManager.getString("action.back"));
     btn_back.addActionListener(new java.awt.event.ActionListener()
@@ -117,6 +134,8 @@ tbl_summary);
         btn_back_ActionPerformed();
       }
     });
+
+    btn_ok.setEnabled(false);
     btn_ok.setFont(new java.awt.Font("Verdana", 0, 12));
     btn_ok.setText(MessageManager.getString("action.ok"));
     btn_ok.addActionListener(new java.awt.event.ActionListener()
@@ -136,6 +155,7 @@ tbl_summary);
       }
     });
 
+
     scrl_searchResult.setPreferredSize(new Dimension(500, 300));
     scrl_searchResult
             .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
index d6aa400..d8ade26 100644 (file)
@@ -2549,6 +2549,11 @@ public abstract class AlignmentViewport implements AlignViewportI,
      */
     int seqOffset = 0;
     SequenceI sequence = null;
+
+    /*
+     * locate 'middle' column (true middle if an odd number visible, left of
+     * middle if an even number visible)
+     */
     int middleColumn = getStartRes() + (getEndRes() - getStartRes()) / 2;
     final HiddenSequences hiddenSequences = getAlignment()
             .getHiddenSequences();