/** * */ package jalview.gui; import jalview.analysis.Conservation; import jalview.datamodel.Annotation; import java.awt.Color; class ConservationThread extends Thread { /** * */ private AlignViewport alignViewport; AlignmentPanel ap; public ConservationThread(AlignViewport alignViewport, AlignmentPanel ap) { this.alignViewport = alignViewport; this.ap = ap; } public void run() { try { this.alignViewport.updatingConservation = true; while (AlignViewport.UPDATING_CONSERVATION) { try { if (ap != null) { ap.paintAlignment(false); } Thread.sleep(200); } catch (Exception ex) { ex.printStackTrace(); } } AlignViewport.UPDATING_CONSERVATION = true; int alWidth = this.alignViewport.alignment.getWidth(); if (alWidth < 0) { return; } Conservation cons = new jalview.analysis.Conservation("All", jalview.schemes.ResidueProperties.propHash, 3, this.alignViewport.alignment .getSequences(), 0, alWidth - 1); cons.calculate(); cons.verdict(false, this.alignViewport.ConsPercGaps); if (this.alignViewport.quality != null) { cons.findQuality(); } cons.completeAnnotations(alignViewport.conservation,alignViewport.quality, 0, alWidth); } catch (OutOfMemoryError error) { new OOMWarning("calculating conservation", error); this.alignViewport.conservation = null; this.alignViewport.quality = null; } AlignViewport.UPDATING_CONSERVATION = false; this.alignViewport.updatingConservation = false; if (ap != null) { ap.paintAlignment(true); } } }