JAL-1503 update version in GPL header
[jalview.git] / src / jalview / appletgui / AnnotationLabels.java
index 1a6400d..7d4c38c 100755 (executable)
@@ -1,19 +1,20 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1)
+ * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- * 
+ *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.appletgui;
 
@@ -21,9 +22,10 @@ import java.util.*;
 
 import java.awt.*;
 import java.awt.event.*;
-import java.awt.image.BufferedImage;
 
 import jalview.datamodel.*;
+import jalview.util.MessageManager;
+import jalview.util.ParseHtmlBodyAndLinks;
 
 public class AnnotationLabels extends Panel implements ActionListener,
         MouseListener, MouseMotionListener
@@ -106,7 +108,8 @@ public class AnnotationLabels extends Panel implements ActionListener,
   int getSelectedRow(int y)
   {
     int row = -2;
-    AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation();
+    AlignmentAnnotation[] aa = ap.av.getAlignment()
+            .getAlignmentAnnotation();
 
     if (aa == null)
     {
@@ -133,20 +136,20 @@ public class AnnotationLabels extends Panel implements ActionListener,
 
   public void actionPerformed(ActionEvent evt)
   {
-    AlignmentAnnotation[] aa = av.alignment.getAlignmentAnnotation();
+    AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
 
     if (evt.getActionCommand().equals(ADDNEW))
     {
       AlignmentAnnotation newAnnotation = new AlignmentAnnotation("", null,
-              new Annotation[ap.av.alignment.getWidth()]);
+              new Annotation[ap.av.getAlignment().getWidth()]);
 
       if (!editLabelDescription(newAnnotation))
       {
         return;
       }
 
-      ap.av.alignment.addAnnotation(newAnnotation);
-      ap.av.alignment.setAnnotationIndex(newAnnotation, 0);
+      ap.av.getAlignment().addAnnotation(newAnnotation);
+      ap.av.getAlignment().setAnnotationIndex(newAnnotation, 0);
     }
     else if (evt.getActionCommand().equals(EDITNAME))
     {
@@ -227,17 +230,17 @@ public class AnnotationLabels extends Panel implements ActionListener,
 
     if (row > -1)
     {
+      ParseHtmlBodyAndLinks phb = new ParseHtmlBodyAndLinks(
+              av.getAlignment().getAlignmentAnnotation()[row]
+                      .getDescription(true),
+              true, "\n");
       if (tooltip == null)
       {
-        tooltip = new Tooltip(
-                ap.av.alignment.getAlignmentAnnotation()[row]
-                        .getDescription(true),
-                this);
+        tooltip = new Tooltip(phb.getNonHtmlContent(), this);
       }
       else
       {
-        tooltip.setTip(ap.av.alignment.getAlignmentAnnotation()[row]
-                .getDescription(true));
+        tooltip.setTip(phb.getNonHtmlContent());
       }
     }
     else if (tooltip != null)
@@ -292,7 +295,7 @@ public class AnnotationLabels extends Panel implements ActionListener,
         ap.annotationPanelHolder.setSize(new Dimension(d.width, d.height
                 - dif));
         ap.apvscroll.setValues(ap.apvscroll.getValue(), d.height - dif, 0,
-                ap.annotationPanel.calcPanelHeight());
+                av.calcPanelHeight());
         f.height += dif;
         ap.seqPanelHolder.setPreferredSize(f);
         ap.setScrollValues(av.getStartRes(), av.getStartSeq());
@@ -336,20 +339,20 @@ public class AnnotationLabels extends Panel implements ActionListener,
 
       int end = getSelectedRow(evt.getY() + scrollOffset);
 
-      if (start>-1 && start != end)
+      if (start > -1 && start != end)
       {
         // Swap these annotations
-        AlignmentAnnotation startAA = ap.av.alignment
+        AlignmentAnnotation startAA = ap.av.getAlignment()
                 .getAlignmentAnnotation()[start];
         if (end == -1)
         {
-          end = ap.av.alignment.getAlignmentAnnotation().length - 1;
+          end = ap.av.getAlignment().getAlignmentAnnotation().length - 1;
         }
-        AlignmentAnnotation endAA = ap.av.alignment
+        AlignmentAnnotation endAA = ap.av.getAlignment()
                 .getAlignmentAnnotation()[end];
 
-        ap.av.alignment.getAlignmentAnnotation()[end] = startAA;
-        ap.av.alignment.getAlignmentAnnotation()[start] = endAA;
+        ap.av.getAlignment().getAlignmentAnnotation()[end] = startAA;
+        ap.av.getAlignment().getAlignmentAnnotation()[start] = endAA;
       }
     }
     resizePanel = false;
@@ -393,17 +396,18 @@ public class AnnotationLabels extends Panel implements ActionListener,
     {
       return;
     }
-    dragCancelled=false;
+    dragCancelled = false;
     // todo: move below to mouseClicked ?
     selectedRow = getSelectedRow(evt.getY() + scrollOffset);
 
-    AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation();
+    AlignmentAnnotation[] aa = ap.av.getAlignment()
+            .getAlignmentAnnotation();
 
     // DETECT RIGHT MOUSE BUTTON IN AWT
     if ((evt.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK)
     {
 
-      PopupMenu popup = new PopupMenu("Annotations");
+      PopupMenu popup = new PopupMenu(MessageManager.getString("label.annotations"));
 
       MenuItem item = new MenuItem(ADDNEW);
       item.addActionListener(this);
@@ -507,7 +511,28 @@ public class AnnotationLabels extends Panel implements ActionListener,
                   // ap.annotationPanel.paint(ap.annotationPanel.getGraphics());
                 }
               });
+
               popup.add(cprofl);
+              final CheckboxMenuItem cprofn = new CheckboxMenuItem(
+                      "Normalise Group Logo",
+                      aa[selectedRow].groupRef.isNormaliseSequenceLogo());
+              cprofn.addItemListener(new ItemListener()
+              {
+                public void itemStateChanged(ItemEvent e)
+                {
+                  // TODO: pass on reference
+                  // to ap
+                  // so the
+                  // view
+                  // can be
+                  // updated.
+                  aaa.groupRef.setshowSequenceLogo(true);
+                  aaa.groupRef.setNormaliseSequenceLogo(cprofn.getState());
+                  ap.repaint();
+                  // ap.annotationPanel.paint(ap.annotationPanel.getGraphics());
+                }
+              });
+              popup.add(cprofn);
             }
             else
             {
@@ -524,6 +549,10 @@ public class AnnotationLabels extends Panel implements ActionListener,
                   // can be
                   // updated.
                   av.setShowConsensusHistogram(chist.getState());
+                  ap.alignFrame.showConsensusHistogram.setState(chist
+                          .getState()); // TODO: implement
+                                        // ap.updateGUI()/alignFrame.updateGUI
+                                        // for applet
                   ap.repaint();
                   // ap.annotationPanel.paint(ap.annotationPanel.getGraphics());
                 }
@@ -542,11 +571,40 @@ public class AnnotationLabels extends Panel implements ActionListener,
                   // can be
                   // updated.
                   av.setShowSequenceLogo(cprof.getState());
+                  ap.alignFrame.showSequenceLogo.setState(cprof.getState()); // TODO:
+                                                                             // implement
+                                                                             // ap.updateGUI()/alignFrame.updateGUI
+                                                                             // for
+                                                                             // applet
                   ap.repaint();
                   // ap.annotationPanel.paint(ap.annotationPanel.getGraphics());
                 }
               });
               popup.add(cprof);
+              final CheckboxMenuItem cprofn = new CheckboxMenuItem(
+                      "Normalise Logo", av.isNormaliseSequenceLogo());
+              cprofn.addItemListener(new ItemListener()
+              {
+                public void itemStateChanged(ItemEvent e)
+                {
+                  // TODO: pass on reference
+                  // to ap
+                  // so the
+                  // view
+                  // can be
+                  // updated.
+                  av.setShowSequenceLogo(true);
+                  ap.alignFrame.normSequenceLogo.setState(cprofn.getState()); // TODO:
+                                                                              // implement
+                                                                              // ap.updateGUI()/alignFrame.updateGUI
+                                                                              // for
+                                                                              // applet
+                  av.setNormaliseSequenceLogo(cprofn.getState());
+                  ap.repaint();
+                  // ap.annotationPanel.paint(ap.annotationPanel.getGraphics());
+                }
+              });
+              popup.add(cprofn);
             }
 
             item = new MenuItem(COPYCONS_SEQ);
@@ -624,7 +682,7 @@ public class AnnotationLabels extends Panel implements ActionListener,
     jalview.appletgui.AlignFrame.copiedSequences.append(sq.getName() + "\t"
             + sq.getStart() + "\t" + sq.getEnd() + "\t"
             + sq.getSequenceAsString() + "\n");
-    if (av.hasHiddenColumns)
+    if (av.hasHiddenColumns())
     {
       jalview.appletgui.AlignFrame.copiedHiddenColumns = new Vector();
       for (int i = 0; i < av.getColumnSelection().getHiddenColumns().size(); i++)
@@ -648,7 +706,8 @@ public class AnnotationLabels extends Panel implements ActionListener,
   {
     int w = getSize().width;
     int h = getSize().height;
-    if (image == null || w != image.getWidth(this) || h!=image.getHeight(this) )
+    if (image == null || w != image.getWidth(this)
+            || h != image.getHeight(this))
     {
       image = createImage(w, ap.annotationPanel.getSize().height);
     }
@@ -667,7 +726,7 @@ public class AnnotationLabels extends Panel implements ActionListener,
     g.translate(0, -scrollOffset);
     g.setColor(Color.black);
 
-    AlignmentAnnotation[] aa = av.alignment.getAlignmentAnnotation();
+    AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
     int y = 0, fy = g.getFont().getSize();
     int x = 0, offset;
 
@@ -705,11 +764,11 @@ public class AnnotationLabels extends Panel implements ActionListener,
               dragEvent.getY());
     }
 
-    if ((aa == null) || (aa.length < 1))
+    if (!av.wrapAlignment && ((aa == null) || (aa.length < 1)))
     {
       g.setColor(Color.black);
-      g.drawString("Right click", 2, 8);
-      g.drawString("to add annotation", 2, 18);
+      g.drawString(MessageManager.getString("label.right_click"), 2, 8);
+      g.drawString(MessageManager.getString("label.to_add_annotation"), 2, 18);
     }
   }
 }