From: tcofoegbu Date: Tue, 28 Apr 2015 10:50:01 +0000 (+0100) Subject: Merge branch 'features/JAL-1714_specify-mulitple-id_PDB-query' into Release_2_9_Branch X-Git-Tag: Jalview_2_9~40^2~1 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=5f41f83d0c156c08b3d4c550760b971cd5a6cc27;hp=d26d84a079b512973f50703ff2367a62da9efc2e;p=jalview.git Merge branch 'features/JAL-1714_specify-mulitple-id_PDB-query' into Release_2_9_Branch --- diff --git a/RELEASE b/RELEASE index 433e646..235344f 100644 --- 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 diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index c7ef3ce..80f568d 100644 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -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) { diff --git a/src/jalview/gui/PDBSearchPanel.java b/src/jalview/gui/PDBSearchPanel.java index 514406a..7762605 100644 --- a/src/jalview/gui/PDBSearchPanel.java +++ b/src/jalview/gui/PDBSearchPanel.java @@ -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 selectedIdsSet = new HashSet(); 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(); diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 791a371..e34a864 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -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 diff --git a/src/jalview/jbgui/GPDBSearchPanel.java b/src/jalview/jbgui/GPDBSearchPanel.java index 29a0014..e74f0ef 100644 --- a/src/jalview/jbgui/GPDBSearchPanel.java +++ b/src/jalview/jbgui/GPDBSearchPanel.java @@ -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); diff --git a/src/jalview/viewmodel/AlignmentViewport.java b/src/jalview/viewmodel/AlignmentViewport.java index d6aa400..d8ade26 100644 --- a/src/jalview/viewmodel/AlignmentViewport.java +++ b/src/jalview/viewmodel/AlignmentViewport.java @@ -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();