+ protected void initAutoAnnotation()
+ {
+ // TODO: add menu option action that nulls or creates consensus object
+ // depending on if the user wants to see the annotation or not in a
+ // specific alignment
+
+ if (hconsensus == null && !isDataset)
+ {
+ if (!alignment.isNucleotide())
+ {
+ if (showConservation)
+ {
+ if (conservation == null)
+ {
+ conservation = new AlignmentAnnotation("Conservation",
+ "Conservation of total alignment less than "
+ + getConsPercGaps() + "% gaps",
+ new Annotation[1], 0f, 11f,
+ AlignmentAnnotation.BAR_GRAPH);
+ conservation.hasText = true;
+ conservation.autoCalculated = true;
+ alignment.addAnnotation(conservation);
+ }
+ }
+ if (showQuality)
+ {
+ if (quality == null)
+ {
+ quality = new AlignmentAnnotation("Quality",
+ "Alignment Quality based on Blosum62 scores",
+ new Annotation[1], 0f, 11f,
+ AlignmentAnnotation.BAR_GRAPH);
+ quality.hasText = true;
+ quality.autoCalculated = true;
+ alignment.addAnnotation(quality);
+ }
+ }
+ }
+ else
+ {
+ if (alignment.hasRNAStructure())
+ {
+ strucConsensus = new AlignmentAnnotation("StrucConsensus", "PID",
+ new Annotation[1], 0f, 100f,
+ AlignmentAnnotation.BAR_GRAPH);
+ strucConsensus.hasText = true;
+ strucConsensus.autoCalculated = true;
+ }
+ }
+
+ consensus = new AlignmentAnnotation("Consensus", "PID",
+ new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
+ consensus.hasText = true;
+ consensus.autoCalculated = true;
+
+ if (showConsensus)
+ {
+ alignment.addAnnotation(consensus);
+ if (strucConsensus != null)
+ {
+ alignment.addAnnotation(strucConsensus);
+ }
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see jalview.api.AlignViewportI#calcPanelHeight()
+ */
+ public int calcPanelHeight()
+ {
+ // setHeight of panels
+ AlignmentAnnotation[] aa = getAlignment().getAlignmentAnnotation();
+ int height = 0;
+ int charHeight=getCharHeight();
+ if (aa != null)
+ {
+ boolean graphgrp[] = null;
+ for (int i = 0; i < aa.length; i++)
+ {
+ if (aa[i] == null)
+ {
+ System.err.println("Null annotation row: ignoring.");
+ continue;
+ }
+ if (!aa[i].visible)
+ {
+ continue;
+ }
+ if (aa[i].graphGroup > -1)
+ {
+ if (graphgrp == null)
+ {
+ graphgrp = new boolean[aa.length];
+ }
+ if (graphgrp[aa[i].graphGroup])
+ {
+ continue;
+ }
+ else
+ {
+ graphgrp[aa[i].graphGroup] = true;
+ }
+ }
+ aa[i].height = 0;
+
+ if (aa[i].hasText)
+ {
+ aa[i].height += charHeight;
+ }
+
+ if (aa[i].hasIcons)
+ {
+ aa[i].height += 16;
+ }
+
+ if (aa[i].graph > 0)
+ {
+ aa[i].height += aa[i].graphHeight;
+ }
+
+ if (aa[i].height == 0)
+ {
+ aa[i].height = 20;
+ }
+
+ height += aa[i].height;
+ }
+ }
+ if (height == 0)
+ {
+ // set minimum
+ height = 20;
+ }
+ return height;
+ }