import java.awt.*;
import jalview.analysis.*;
+import jalview.api.AlignCalcManagerI;
import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
+import jalview.api.OOMHandlerI;
import jalview.bin.*;
import jalview.structure.SelectionSource;
import jalview.structure.StructureSelectionManager;
import jalview.structure.VamsasSource;
+import jalview.workers.AlignCalcManager;
+import jalview.workers.ConservationThread;
/**
* DOCUMENT ME!
* @author $author$
* @version $Revision: 1.141 $
*/
-public class AlignViewport implements SelectionSource, VamsasSource, AlignViewportI
+public class AlignViewport extends AlignmentViewport implements SelectionSource, VamsasSource, AlignViewportI
{
private static final int RIGHT_JUSTIFY = 1;
boolean autoCalculateStrucConsensus = true;
- /** DOCUMENT ME!! */
- public int ConsPercGaps = 25; // JBPNote : This should be a scalable property!
-
// JBPNote Prolly only need this in the applet version.
private java.beans.PropertyChangeSupport changeSupport = new java.beans.PropertyChangeSupport(
this);
if (!alignment.isNucleotide())
{
conservation = new AlignmentAnnotation("Conservation",
- "Conservation of total alignment less than " + ConsPercGaps
+ "Conservation of total alignment less than " + getConsPercGaps()
+ "% gaps", new Annotation[1], 0f, 11f,
AlignmentAnnotation.BAR_GRAPH);
conservation.hasText = true;
{
return showSequenceFeatures;
}
-
- ConservationThread conservationThread;
+
+ AlignCalcManagerI calculator=new AlignCalcManager();
ConsensusThread consensusThread;
/**
* trigger update of conservation annotation
*/
- public void updateConservation(final AlignmentPanel ap)
+ public void updateConservation(final AlignmentViewPanel ap)
{
// see note in mantis : issue number 8585
if (alignment.isNucleotide() || conservation == null
{
return;
}
-
- conservationThread = new ConservationThread(this, ap);
- conservationThread.start();
+
+ calculator.startWorker(new jalview.workers.ConservationThread(this, ap));
}
/**
class ConsensusThread extends Thread
{
- AlignmentPanel ap;
-
+ AlignmentViewPanel ap;
public ConsensusThread(AlignmentPanel ap)
{
this.ap = ap;
alignment.deleteAnnotation(consensus);
consensus = null;
- hconsensus = null;
- new OOMWarning("calculating consensus", error);
+ hconsensus = null;
+ ap.raiseOOMWarning("calculating consensus", error);
}
UPDATING_CONSENSUS = false;
updatingConsensus = false;
cs.setConsensus(hconsensus);
if (cs.conservationApplied())
{
- Alignment al = (Alignment) alignment;
+ AlignmentI al = (Alignment) alignment;
Conservation c = new Conservation("All",
ResidueProperties.propHash, 3, al.getSequences(), 0, al
.getWidth() - 1);
c.calculate();
- c.verdict(false, ConsPercGaps);
+ c.verdict(false, getConsPercGaps());
cs.setConservation(c);
}
{
return hStrucConsensus;
}
+
+ @Override
+ public AlignmentAnnotation getAlignmentQualityAnnot()
+ {
+ return quality;
+ }
+
+ @Override
+ public AlignmentAnnotation getAlignmentConservationAnnotation()
+ {
+ return conservation;
+ }
+
+ @Override
+ public boolean isClosed()
+ {
+ // TODO: check that this isClosed is only true after panel is closed, not before it is fully constructed.
+ return alignment==null;
+ }
+
+ @Override
+ public AlignCalcManagerI getCalcManager()
+ {
+ return calculator;
+ }
}