X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=7984991493213e2ec273905968792d4bd9af4626;hb=e1124a62486322d2d28482529d2d6b850ce1719b;hp=da4f93b033f8bf1c06fc222ccac899a4011eecdf;hpb=d7b15f85f8a1f1440e011116b5aa0d31306c217c;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index da4f93b..7984991 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -744,7 +744,6 @@ public class AlignFrame */ protected void delete_actionPerformed(ActionEvent e) { - boolean seqsdeleted = false; if (viewport.getSelectionGroup() == null) { @@ -776,7 +775,6 @@ public class AlignFrame if (seq.getSequence().length() < 1) { - seqsdeleted = true; viewport.getAlignment().deleteSequence(seq); } else @@ -1005,7 +1003,7 @@ public class AlignFrame { seqs = viewport.getSelectionGroup().sequences; start = viewport.getSelectionGroup().getStartRes(); - end = viewport.getSelectionGroup().getEndRes(); + end = viewport.getSelectionGroup().getEndRes()+1; } else { @@ -1017,19 +1015,45 @@ public class AlignFrame current = (SequenceI) seqs.elementAt(i); jSize = current.getLength(); + // Removing a range is much quicker than removing gaps + // one by one for long sequences int j = start; + int rangeStart=-1, rangeEnd=-1; do { if (jalview.util.Comparison.isGap(current.getCharAt(j))) { - current.deleteCharAt(j); - j--; - jSize--; + if(rangeStart==-1) + { + rangeStart = j; + rangeEnd = j+1; + } + else + { + rangeEnd++; + } + j++; + } + else + { + if(rangeStart>-1) + { + current.deleteChars(rangeStart, rangeEnd); + j-=rangeEnd-rangeStart; + jSize-=rangeEnd-rangeStart; + rangeStart = -1; + rangeEnd = -1; + } + else + j++; } - j++; } while (j < end && j < jSize); + if(rangeStart>-1) + { + current.deleteChars(rangeStart, rangeEnd); + } } viewport.setStartRes(seq.findIndex(startRes)-1); @@ -1045,6 +1069,9 @@ public class AlignFrame viewport.updateConservation(); } resetAllColourSchemes(); + if(alignPanel.overviewPanel!=null) + alignPanel.overviewPanel.updateOverviewImage(); + alignPanel.repaint(); } @@ -1822,21 +1849,11 @@ public class AlignFrame return; } - try - { PCAPanel pcaPanel = new PCAPanel(viewport, null); JInternalFrame frame = new JInternalFrame(); frame.setContentPane(pcaPanel); Desktop.addInternalFrame(frame, "Principal component analysis", 400, 400); - } - catch (java.lang.OutOfMemoryError ex) - { - JOptionPane.showInternalMessageDialog(this, - "Too many sequences selected\nfor Principal Component Analysis!!", - "Out of memory", - JOptionPane.WARNING_MESSAGE); - } } /**