JAL-1355 (basic i18n support)
[jalview.git] / src / jalview / gui / AnnotationPanel.java
index 93647a8..92cd407 100755 (executable)
@@ -20,11 +20,13 @@ package jalview.gui;
 import java.awt.*;
 import java.awt.event.*;
 import java.awt.image.*;
+
 import javax.swing.*;
 
 import jalview.datamodel.*;
 import jalview.renderer.AnnotationRenderer;
 import jalview.renderer.AwtRenderPanelI;
+import jalview.util.MessageManager;
 
 /**
  * AnnotationPanel displays visible portion of annotation rows below unwrapped
@@ -266,7 +268,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
     else if (evt.getActionCommand().equals(LABEL))
     {
       String exMesg = collectAnnotVals(anot, av.getColumnSelection(), LABEL);
-      String label = JOptionPane.showInputDialog(this, "Enter label",
+      String label = JOptionPane.showInputDialog(this, MessageManager.getString("label.enter_label"),
               exMesg);
 
       if (label == null)
@@ -348,7 +350,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
       }
 
       String label = JOptionPane.showInputDialog(
-              "Enter a label for the structure?", symbol);
+              MessageManager.getString("label.enter_label_for_the_structure"), symbol);
 
       if (label == null)
       {
@@ -376,10 +378,10 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
         anot[index].displayCharacter = label;
       }
     }
-    aa[activeRow].validateRangeAndDisplay();
-
-    adjustPanelHeight();
+    av.getAlignment().validateAnnotation(aa[activeRow]);
     ap.alignmentChanged();
+    
+    adjustPanelHeight();
     repaint();
 
     return;
@@ -481,7 +483,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
         return;
       }
 
-      JPopupMenu pop = new JPopupMenu("Structure type");
+      JPopupMenu pop = new JPopupMenu(MessageManager.getString("label.structure_type"));
       JMenuItem item;
       /*
        * Just display the needed structure options
@@ -663,7 +665,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
               && aa[row].annotations[res].description != null
               && aa[row].annotations[res].description.length() > 0)
       {
-        this.setToolTipText(aa[row].annotations[res].description);
+        this.setToolTipText("<html>"+JvSwingUtils.wrapTooltip(aa[row].annotations[res].description)+"</html>");
       }
       else
       {
@@ -699,16 +701,11 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
   @Override
   public void mouseClicked(MouseEvent evt)
   {
-    if (activeRow != -1)
-    {
-      AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
-      AlignmentAnnotation anot = aa[activeRow];
-
-      if (anot.description.equals("secondary structure"))
-      {
-        // System.out.println(anot.description+" "+anot.getRNAStruc());
-      }
-    }
+//    if (activeRow != -1)
+//    {
+//      AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
+//      AlignmentAnnotation anot = aa[activeRow];
+//    }
   }
 
   // TODO mouseClicked-content and drawCursor are quite experimental!
@@ -800,7 +797,10 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
     imageFresh = false;
     g.drawImage(image, 0, 0, this);
   }
-
+  /**
+   * set true to enable redraw timing debug output on stderr
+   */
+  private final boolean debugRedraw = false;
   /**
    * non-Thread safe repaint
    * 
@@ -809,7 +809,6 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
    */
   public void fastPaint(int horizontal)
   {
-
     if ((horizontal == 0) || gg == null
             || av.getAlignment().getAlignmentAnnotation() == null
             || av.getAlignment().getAlignmentAnnotation().length < 1
@@ -818,8 +817,9 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
       repaint();
       return;
     }
+    long stime=System.currentTimeMillis();
     gg.copyArea(0, 0, imgWidth, getHeight(), -horizontal * av.charWidth, 0);
-
+    long mtime=System.currentTimeMillis();
     int sr = av.startRes;
     int er = av.endRes + 1;
     int transX = 0;
@@ -839,9 +839,13 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
     drawComponent(gg, sr, er);
 
     gg.translate(-transX, 0);
-
+    long dtime=System.currentTimeMillis();
     fastPaint = true;
     repaint();
+    long rtime=System.currentTimeMillis();
+    if (debugRedraw) {
+      System.err.println("Scroll:\t"+horizontal+"\tCopyArea:\t"+(mtime-stime)+"\tDraw component:\t"+(dtime-mtime)+"\tRepaint call:\t"+(rtime-dtime));
+    }
 
   }
 
@@ -920,7 +924,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
       g.setColor(Color.black);
       if (av.validCharWidth)
       {
-        g.drawString("Alignment has no annotations", 20, 15);
+        g.drawString(MessageManager.getString("label.alignment_has_no_annotations"), 20, 15);
       }
 
       return;
@@ -950,4 +954,16 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
   {
     return imgWidth;
   }
+  private int[] bounds = new int[2];
+  @Override
+  public int[] getVisibleVRange()
+  {
+    if (ap!=null && ap.alabels!=null)
+    {
+    int sOffset=-ap.alabels.scrollOffset;
+    int visHeight = sOffset+ap.annotationSpaceFillerHolder.getHeight();
+    bounds[0] = sOffset; bounds[1]=visHeight;
+    return bounds;
+    } else return null;
+  }
 }