safer retrieval of groovy scripts from URLs
[jalview.git] / src / jalview / datamodel / AlignmentAnnotation.java
index b59417a..40d2b7e 100755 (executable)
@@ -118,10 +118,9 @@ public class AlignmentAnnotation
   /**
    * Creates a new AlignmentAnnotation object.
    *
-   * @param label DOCUMENT ME!
-   * @param description DOCUMENT ME!
-   * @param annotations DOCUMENT ME!about:blank
-Loading...
+   * @param label short label shown under sequence labels
+   * @param description text displayed on mouseover
+   * @param annotations set of positional annotation elements
    */
   public AlignmentAnnotation(String label, String description,
                              Annotation[] annotations)
@@ -138,6 +137,7 @@ Loading...
   void areLabelsSecondaryStructure()
   {
     boolean nonSSLabel = false;
+    char firstChar=0;
     for (int i = 0; i < annotations.length; i++)
     {
       if (annotations[i] == null)
@@ -154,25 +154,32 @@ Loading...
       {
         continue;
       }
-
-      if (annotations[i].displayCharacter.length() == 1
-          && !annotations[i].displayCharacter.equals("H")
-          && !annotations[i].displayCharacter.equals("E")
-          && !annotations[i].displayCharacter.equals("-")
-          && !annotations[i].displayCharacter.equals("."))
+      if (annotations[i].displayCharacter.length() == 1)
+      {      
+        firstChar = annotations[i].displayCharacter.charAt(0);
+        // check to see if it looks like a sequence or is secondary structure labelling.
+        if (
+                // Uncomment to only catch case where displayCharacter==secondary Structure 
+              // to correctly redisplay SS annotation imported from Stockholm, exported to JalviewXML and read back in again.
+          // && annotations[i].displayCharacter.charAt(0)==annotations[i].secondaryStructure
+          firstChar!='H'
+          && firstChar!='E'
+          && firstChar!='-'
+          && firstChar!='-' && firstChar<jalview.schemes.ResidueProperties.aaIndex.length)
         {
           if (jalview.schemes.ResidueProperties.aaIndex
-                  [annotations[i].displayCharacter.charAt(0)] < 23)
+                  [firstChar] < 23)
           {
             nonSSLabel = true;
           }
         }
+      }
 
-        if (annotations[i].displayCharacter.length() > 0)
-        {
-          hasText = true;
-        }
+      if (annotations[i].displayCharacter.length() > 0)
+      {
+        hasText = true;
       }
+    }
 
     if (nonSSLabel)
     {
@@ -357,6 +364,11 @@ Loading...
    */
   public void restrict(int startRes, int endRes)
   {
+    if (annotations==null)
+    {
+      // non-positional
+      return;
+    }
     if (startRes<0)
       startRes=0;
     if (startRes>=annotations.length)