JAL-1645 Version-Rel Version 2.9 Year-Rel 2015 Licensing glob
[jalview.git] / src / jalview / appletgui / AnnotationPanel.java
index 7ae6b90..2dfa480 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
+ * Copyright (C) 2015 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  */
 package jalview.appletgui;
 
-import java.util.*;
-
-import java.awt.*;
-import java.awt.event.*;
-
-import jalview.datamodel.*;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
 import jalview.renderer.AnnotationRenderer;
 import jalview.renderer.AwtRenderPanelI;
 import jalview.util.MessageManager;
 
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.MenuItem;
+import java.awt.Panel;
+import java.awt.PopupMenu;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.AdjustmentEvent;
+import java.awt.event.AdjustmentListener;
+import java.awt.event.InputEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+
 public class AnnotationPanel extends Panel implements AwtRenderPanelI,
         AdjustmentListener, ActionListener, MouseListener,
         MouseMotionListener
@@ -40,8 +54,6 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
 
   int activeRow = -1;
 
-  Vector activeRes;
-
   final String HELIX = "Helix";
 
   final String SHEET = "Sheet";
@@ -140,7 +152,9 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
     if (av.getColumnSelection() != null
             && av.getColumnSelection().size() > 0
             && anot[av.getColumnSelection().getMin()] != null)
+    {
       label = anot[av.getColumnSelection().getMin()].displayCharacter;
+    }
 
     if (evt.getActionCommand().equals(REMOVE))
     {
@@ -168,7 +182,9 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
         int index = av.getColumnSelection().columnAt(i);
 
         if (!av.getColumnSelection().isVisible(index))
+        {
           continue;
+        }
 
         if (anot[index] == null)
         {
@@ -190,7 +206,9 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
         int index = av.getColumnSelection().columnAt(i);
 
         if (!av.getColumnSelection().isVisible(index))
+        {
           continue;
+        }
 
         if (anot[index] == null)
         {
@@ -240,7 +258,7 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
         aa[activeRow].hasText = true;
         if (evt.getActionCommand().equals(STEM))
         {
-          aa[activeRow].showAllColLabels=true;
+          aa[activeRow].showAllColLabels = true;
         }
       }
 
@@ -249,14 +267,17 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
         int index = av.getColumnSelection().columnAt(i);
 
         if (!av.getColumnSelection().isVisible(index))
+        {
           continue;
+        }
 
         if (anot[index] == null)
         {
           anot[index] = new Annotation(label, "", type, 0);
         }
 
-        anot[index].secondaryStructure = type;
+        anot[index].secondaryStructure = type != 'S' ? type : label
+                .length() == 0 ? ' ' : label.charAt(0);
         anot[index].displayCharacter = label;
       }
     }
@@ -276,9 +297,13 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
             ap.alignFrame, "Enter Label", 400, 200, true);
 
     if (dialog.accept)
+    {
       return dialog.getName();
+    }
     else
+    {
       return null;
+    }
   }
 
   @Override
@@ -325,7 +350,8 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
         return;
       }
 
-      PopupMenu pop = new PopupMenu(MessageManager.getString("label.structure_type"));
+      PopupMenu pop = new PopupMenu(
+              MessageManager.getString("label.structure_type"));
       MenuItem item;
       /*
        * Just display the needed structure options
@@ -360,11 +386,6 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
       return;
     }
 
-    if (aa == null)
-    {
-      return;
-    }
-
     ap.scalePanel.mousePressed(evt);
   }
 
@@ -510,15 +531,6 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
         }
       }
     }
-
-    if (activeRes == null)
-    {
-      activeRes = new Vector();
-      activeRes.addElement(String.valueOf(i));
-      return;
-    }
-
-    activeRes.addElement(String.valueOf(i));
   }
 
   @Override
@@ -571,13 +583,13 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
       return;
     }
 
-    gg.copyArea(0, 0, imgWidth, getSize().height, -horizontal
-            * av.charWidth, 0);
+    gg.copyArea(0, 0, imgWidth, getSize().height,
+            -horizontal * av.getCharWidth(), 0);
     int sr = av.startRes, er = av.endRes + 1, transX = 0;
 
     if (horizontal > 0) // scrollbar pulled right, image to the left
     {
-      transX = (er - sr - horizontal) * av.charWidth;
+      transX = (er - sr - horizontal) * av.getCharWidth();
       sr = er - horizontal;
     }
     else if (horizontal < 0)
@@ -611,7 +623,8 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
     g.setFont(ofont);
 
     g.setColor(Color.white);
-    g.fillRect(0, 0, (endRes - startRes) * av.charWidth, getSize().height);
+    g.fillRect(0, 0, (endRes - startRes) * av.getCharWidth(),
+            getSize().height);
 
     if (fm == null)
     {
@@ -626,7 +639,8 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
       g.setColor(Color.black);
       if (av.validCharWidth)
       {
-        g.drawString(MessageManager.getString("label.alignment_has_no_annotations"), 20, 15);
+        g.drawString(MessageManager
+                .getString("label.alignment_has_no_annotations"), 20, 15);
       }
 
       return;
@@ -664,16 +678,23 @@ public class AnnotationPanel extends Panel implements AwtRenderPanelI,
   {
     return imgWidth;
   }
+
   private int[] bounds = new int[2];
+
   @Override
   public int[] getVisibleVRange()
   {
-    if (ap!=null && ap.alabels!=null)
+    if (ap != null && ap.alabels != null)
+    {
+      int sOffset = -ap.alabels.scrollOffset;
+      int visHeight = sOffset + ap.annotationPanelHolder.getHeight();
+      bounds[0] = sOffset;
+      bounds[1] = visHeight;
+      return bounds;
+    }
+    else
     {
-    int sOffset=-ap.alabels.scrollOffset;
-    int visHeight = sOffset+ap.annotationPanelHolder.getHeight();
-    bounds[0] = sOffset; bounds[1]=visHeight;
-    return bounds;
-    } else return null;
+      return null;
+    }
   }
 }