Make sure annots are alignment width
[jalview.git] / src / jalview / gui / AlignFrame.java
index 8ba8628..58650cb 100755 (executable)
@@ -142,7 +142,7 @@ public class AlignFrame
    }
 
    setMenusFromViewport(viewport);
-
+   buildSortByAnnotationScoresMenu();
    if (viewport.wrapAlignment)
    {
      wrapMenuItem_actionPerformed(null);
@@ -1592,6 +1592,7 @@ public class AlignFrame
        if (annotationAdded)
        {
          alignPanel.annotationPanel.adjustPanelHeight();
+         buildSortByAnnotationScoresMenu();
        }
        viewport.firePropertyChange("alignment", null, alignment.getSequences());
      } else {
@@ -2293,21 +2294,35 @@ public class AlignFrame
     contents.append("<br>Maximum Sequence Length: "+max);
     contents.append("<br>Average Length: "+(int)avg);
 
-    if (((Alignment)viewport.alignment).alignmentProperties != null)
+    if (((Alignment)viewport.alignment).getProperties() != null)
     {
-      Hashtable props = ((Alignment)viewport.alignment).alignmentProperties;
+      Hashtable props = ((Alignment)viewport.alignment).getProperties();
       Enumeration en = props.keys();
       contents.append("<br><br><table border=\"1\">");
       while(en.hasMoreElements())
       {
         String key = en.nextElement().toString();
-        contents.append("<tr><td>"+key+"</td><td>"+props.get(key)+"</td></tr>");
+        StringBuffer val = new StringBuffer();
+        String vals = props.get(key).toString();
+        int pos=0, npos;
+        do {
+          npos = vals.indexOf("\n",pos);
+          if (npos==-1)
+          {
+            val.append(vals.substring(pos));
+          } else {
+            val.append(vals.substring(pos, npos));
+            val.append("<br>");
+          }
+          pos = npos+1;
+        } while (npos!=-1);
+        contents.append("<tr><td>"+key+"</td><td>"+val+"</td></tr>");
       }
       contents.append("</table>");
     }
     editPane.setText(contents.toString()+"</html>");
     JInternalFrame frame = new JInternalFrame();
-    frame.getContentPane().add(editPane);
+    frame.getContentPane().add(new JScrollPane(editPane));
 
     Desktop.instance.addInternalFrame(frame,"Alignment Properties: "+getTitle(),500,400);
   }
@@ -3073,12 +3088,17 @@ public class AlignFrame
       sortByAnnotScore.removeAll();
       // almost certainly a quicker way to do this - but we keep it simple
       Hashtable scoreSorts=new Hashtable();
-      AlignmentAnnotation aann[] = viewport.alignment.getAlignmentAnnotation();
-      for (int i=0;i<aann.length; i++)
+      AlignmentAnnotation aann[];
+      Enumeration sq = viewport.alignment.getSequences().elements();
+      while (sq.hasMoreElements())
       {
-        if (aann[i].hasScore() && aann[i].sequenceRef!=null)
+        aann = ((SequenceI) sq.nextElement()).getAnnotation();
+        for (int i=0;aann!=null && i<aann.length; i++)
         {
-          scoreSorts.put(aann[i].label, aann[i].label);
+          if (aann[i].hasScore() && aann[i].sequenceRef!=null)
+          {
+            scoreSorts.put(aann[i].label, aann[i].label);
+          }
         }
       }
       Enumeration labels = scoreSorts.keys();
@@ -3660,6 +3680,7 @@ public void drop(DropTargetDropEvent evt)
       {
         // (isAnnotation)
         alignPanel.adjustAnnotationHeight();
+        buildSortByAnnotationScoresMenu();
       }
 
     }