--- /dev/null
+/**
+ *
+ */
+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, 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);
+ }
+
+ }
+}
\ No newline at end of file