JAL-629 don’t complain for Unary args
[jalview.git] / src / jalview / renderer / AnnotationRenderer.java
index c61606e..eb83f31 100644 (file)
@@ -30,6 +30,8 @@ import jalview.datamodel.Annotation;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.HiddenColumns;
 import jalview.datamodel.ProfilesI;
+import jalview.renderer.api.AnnotationRendererFactoryI;
+import jalview.renderer.api.AnnotationRowRendererI;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.NucleotideColourScheme;
 import jalview.schemes.ResidueProperties;
@@ -149,11 +151,13 @@ public class AnnotationRenderer
    */
   public void dispose()
   {
+    hiddenColumns = null;
     hconsensus = null;
     complementConsensus = null;
     hStrucConsensus = null;
     fadedImage = null;
     annotationPanel = null;
+    rendererFactoryI = null;
   }
 
   void drawStemAnnot(Graphics g, Annotation[] row_annotations, int lastSSX,
@@ -312,6 +316,7 @@ public class AnnotationRenderer
       useClip = false;
     }
 
+    rendererFactoryI = AnnotationRendererFactory.getRendererFactory();
     updateFromAlignViewport(av);
   }
 
@@ -416,6 +421,10 @@ public class AnnotationRenderer
     return null;
   }
 
+  boolean rna = false;
+
+  private AnnotationRendererFactoryI rendererFactoryI;
+
   /**
    * Render the annotation rows associated with an alignment.
    * 
@@ -459,8 +468,8 @@ public class AnnotationRenderer
     boolean validRes = false;
     boolean validEnd = false;
     boolean labelAllCols = false;
-//    boolean centreColLabels;
-//    boolean centreColLabelsDef = av.isCentreColumnLabels();
+    // boolean centreColLabels;
+    // boolean centreColLabelsDef = av.isCentreColumnLabels();
     boolean scaleColLabel = false;
     final AlignmentAnnotation consensusAnnot = av
             .getAlignmentConsensusAnnotation();
@@ -506,7 +515,7 @@ public class AnnotationRenderer
       {
         continue;
       }
-//      centreColLabels = row.centreColLabels || centreColLabelsDef;
+      // centreColLabels = row.centreColLabels || centreColLabelsDef;
       labelAllCols = row.showAllColLabels;
       scaleColLabel = row.scaleColLabel;
       lastSS = ' ';
@@ -1062,6 +1071,32 @@ public class AnnotationRenderer
                     row.graphMin, row.graphMax, y, renderHistogram,
                     renderProfile, normaliseProfile);
           }
+          else
+          {
+            AnnotationRowRendererI renderer = rendererFactoryI
+                    .getRendererFor(row);
+            if (renderer != null)
+            {
+              renderer.renderRow(g, charWidth, charHeight,
+                      hasHiddenColumns, av, hiddenColumns, columnSelection,
+                      row, row_annotations, startRes, endRes, row.graphMin,
+                      row.graphMax, y);
+            }
+            if (debugRedraw)
+            {
+              if (renderer == null)
+              {
+                System.err.println("No renderer found for "
+                        + row.toString());
+              }
+              else
+              {
+                System.err.println("rendered with "
+                        + renderer.getClass().toString());
+              }
+            }
+
+          }
         }
       }
       else
@@ -1515,6 +1550,8 @@ public class AnnotationRenderer
                       .deriveFont(AffineTransform.getScaleInstance(sx, sy));
               g.setFont(font);
               g.drawChars(dc, 0, dc.length, x * charWidth, hght);
+              g.setFont(ofont);
+
               ht += newHeight;
             }
           }