X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=7984991493213e2ec273905968792d4bd9af4626;hb=246746e55bd02c66746d5cd872f49890cbae206a;hp=ba9237b00933ca6cb8c70cfcb9596c95ac54c166;hpb=9be70e5fd6d8a50a4989ca230dda0f7c6e7d2852;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index ba9237b..7984991 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -68,6 +68,17 @@ public class AlignFrame { viewport = new AlignViewport(al); + if(viewport.vconsensus==null) + { + //Out of memory caluclating consensus. + BLOSUM62Colour.setEnabled(false); + PIDColour.setEnabled(false); + conservationMenuItem.setEnabled(false); + modifyConservation.setEnabled(false); + abovePIDThreshold.setEnabled(false); + modifyPID.setEnabled(false); + } + alignPanel = new AlignmentPanel(this, viewport); alignPanel.annotationPanel.adjustPanelHeight(); alignPanel.annotationSpaceFillerHolder.setPreferredSize(alignPanel. @@ -96,6 +107,7 @@ public class AlignFrame } }); + addServiceListeners(); } @@ -732,7 +744,6 @@ public class AlignFrame */ protected void delete_actionPerformed(ActionEvent e) { - boolean seqsdeleted = false; if (viewport.getSelectionGroup() == null) { @@ -764,7 +775,6 @@ public class AlignFrame if (seq.getSequence().length() < 1) { - seqsdeleted = true; viewport.getAlignment().deleteSequence(seq); } else @@ -993,7 +1003,7 @@ public class AlignFrame { seqs = viewport.getSelectionGroup().sequences; start = viewport.getSelectionGroup().getStartRes(); - end = viewport.getSelectionGroup().getEndRes(); + end = viewport.getSelectionGroup().getEndRes()+1; } else { @@ -1005,32 +1015,63 @@ 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); - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); } public void alignmentChanged() { - viewport.updateConsensus(); - viewport.updateConservation(); + if(viewport.vconsensus!=null) + { + viewport.updateConsensus(); + viewport.updateConservation(); + } resetAllColourSchemes(); + if(alignPanel.overviewPanel!=null) + alignPanel.overviewPanel.updateOverviewImage(); + alignPanel.repaint(); } @@ -1808,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); - } } /** @@ -2004,17 +2035,6 @@ public class AlignFrame } ; }); - viewport.addPropertyChangeListener(new java.beans.PropertyChangeListener() - { - public void propertyChange(PropertyChangeEvent evt) - { - if (evt.getPropertyName().equals("alignment")) - { - treePanel.getTree().UpdatePlaceHolders( (Vector) evt.getNewValue()); - treePanel.repaint(); - } - } - }); } /**