X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=3e574301956abf72f4dd3ce5529199b968395330;hb=aff93619ba53584f9b01970832558331951d9dbf;hp=679d736d7eada06c68b9ebb8876a0a7d9a10bf0f;hpb=c16d6b192b294503d2bd16294454cfe136426e7d;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 679d736..3e57430 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -406,71 +406,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { boolean toggleSeqs = !evt.isControlDown(); boolean toggleCols = !evt.isShiftDown(); - - boolean hide = false; - SequenceGroup sg = viewport.getSelectionGroup(); - // TODO: document ctrl-shift-h for show visible selected area and fix hack so columns for the current selected region get transferred. - if (!toggleSeqs && !toggleCols) - { - // Hide everything by the current selection - this is a hack - we do the invert and then hide - // first check that there will be visible columns after the invert. - if ((viewport.colSel!=null && viewport.colSel.getSelected()!=null && viewport.colSel.getSelected().size()>0) || (sg!=null && sg.getSize()>0 && sg.getStartRes()<=sg.getEndRes())) - { - // now invert the sequence set, if required - empty selection implies that no hiding is required. - if (sg!=null) { - invertSequenceMenuItem_actionPerformed(null); - sg = viewport.getSelectionGroup(); - toggleSeqs = true; - - } - - if (sg!=null && sg.getStartRes()>=0 && sg.getStartRes()<=sg.getEndRes()&& (viewport.colSel==null || viewport.colSel.getSelected()==null || viewport.colSel.getSelected().size()==0)) - { - // synthesize a column selection if none exists. this happens if a single region has been selected rather than whole columns. - if (viewport.colSel==null) - { - viewport.colSel = new ColumnSelection(); - } - for (int cspos = sg.getStartRes(); cspos<=sg.getEndRes(); cspos++) { - viewport.colSel.addElement(cspos); - } - } - // finally invert the column selection and get the new sequence selection. - invertColSel_actionPerformed(null); - toggleCols = true; - } - } - - if (toggleSeqs) - { - if (sg != null - && sg.getSize() != viewport.alignment.getHeight()) - { - hideSelSequences_actionPerformed(null); - hide = true; - } - else if (!(toggleCols && viewport.colSel.getSelected().size() > 0)) - { - showAllSeqs_actionPerformed(null); - } - } - - if (toggleCols) - { - if (viewport.colSel.getSelected().size() > 0) - { - hideSelColumns_actionPerformed(null); - if (!toggleSeqs) - { - viewport.selectionGroup = sg; - } - } - else if (!hide) - { - showAllColumns_actionPerformed(null); - } - } - break; + toggleHiddenRegions(toggleSeqs,toggleCols); + break; } case KeyEvent.VK_PAGE_UP: if (viewport.wrapAlignment) @@ -2417,6 +2354,97 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.hideAllSelectedSeqs(); alignPanel.paintAlignment(true); } + /** + * called by key handler and the hide all/show all menu items + * @param toggleSeqs + * @param toggleCols + */ + private void toggleHiddenRegions(boolean toggleSeqs, + boolean toggleCols) + { + + boolean hide = false; + SequenceGroup sg = viewport.getSelectionGroup(); + if (!toggleSeqs && !toggleCols) + { + // Hide everything by the current selection - this is a hack - we do the invert and then hide + // first check that there will be visible columns after the invert. + if ((viewport.colSel!=null && viewport.colSel.getSelected()!=null && viewport.colSel.getSelected().size()>0) || (sg!=null && sg.getSize()>0 && sg.getStartRes()<=sg.getEndRes())) + { + // now invert the sequence set, if required - empty selection implies that no hiding is required. + if (sg!=null) { + invertSequenceMenuItem_actionPerformed(null); + sg = viewport.getSelectionGroup(); + toggleSeqs = true; + + } + viewport.expandColSelection(sg,true); + // finally invert the column selection and get the new sequence selection. + invertColSel_actionPerformed(null); + toggleCols = true; + } + } + + if (toggleSeqs) + { + if (sg != null + && sg.getSize() != viewport.alignment.getHeight()) + { + hideSelSequences_actionPerformed(null); + hide = true; + } + else if (!(toggleCols && viewport.colSel.getSelected().size() > 0)) + { + showAllSeqs_actionPerformed(null); + } + } + + if (toggleCols) + { + if (viewport.colSel.getSelected().size() > 0) + { + hideSelColumns_actionPerformed(null); + if (!toggleSeqs) + { + viewport.selectionGroup = sg; + } + } + else if (!hide) + { + showAllColumns_actionPerformed(null); + } + } + } + + /* (non-Javadoc) + * @see jalview.jbgui.GAlignFrame#hideAllButSelection_actionPerformed(java.awt.event.ActionEvent) + */ + public void hideAllButSelection_actionPerformed(ActionEvent e) + { + toggleHiddenRegions(false, false); + } + + /* (non-Javadoc) + * @see jalview.jbgui.GAlignFrame#hideAllSelection_actionPerformed(java.awt.event.ActionEvent) + */ + public void hideAllSelection_actionPerformed(ActionEvent e) + { + SequenceGroup sg = viewport.getSelectionGroup(); + viewport.expandColSelection(sg,false); + viewport.hideAllSelectedSeqs(); + viewport.hideSelectedColumns(); + alignPanel.paintAlignment(true); + } + + /* (non-Javadoc) + * @see jalview.jbgui.GAlignFrame#showAllhidden_actionPerformed(java.awt.event.ActionEvent) + */ + public void showAllhidden_actionPerformed(ActionEvent e) + { + viewport.showAllHiddenColumns(); + viewport.showAllHiddenSeqs(); + alignPanel.paintAlignment(true); + } public void hideSelColumns_actionPerformed(ActionEvent e) {