JAL-2077 - reinstate popups on osx
[jalview.git] / src / jalview / gui / AnnotationPanel.java
index e735e44..bb311ef 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -54,7 +54,6 @@ import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
 import javax.swing.Scrollable;
-import javax.swing.SwingUtilities;
 import javax.swing.ToolTipManager;
 
 /**
@@ -139,7 +138,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
   public AnnotationPanel(AlignmentPanel ap)
   {
 
-    MAC = new jalview.util.Platform().isAMac();
+    MAC = jalview.util.Platform.isAMac();
 
     ToolTipManager.sharedInstance().registerComponent(this);
     ToolTipManager.sharedInstance().setInitialDelay(0);
@@ -289,14 +288,14 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
 
     if (evt.getActionCommand().equals(REMOVE))
     {
-      for (int i = 0; i < av.getColumnSelection().size(); i++)
+      for (int sel : av.getColumnSelection().getSelected())
       {
-        anot[av.getColumnSelection().columnAt(i)] = null;
+        anot[sel] = null;
       }
     }
     else if (evt.getActionCommand().equals(LABEL))
     {
-      String exMesg = collectAnnotVals(anot, av.getColumnSelection(), LABEL);
+      String exMesg = collectAnnotVals(anot, LABEL);
       String label = JOptionPane.showInputDialog(this,
               MessageManager.getString("label.enter_label"), exMesg);
 
@@ -310,10 +309,8 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
         aa[activeRow].hasText = true;
       }
 
-      for (int i = 0; i < av.getColumnSelection().size(); i++)
+      for (int index : av.getColumnSelection().getSelected())
       {
-        int index = av.getColumnSelection().columnAt(i);
-
         if (!av.getColumnSelection().isVisible(index))
         {
           continue;
@@ -335,12 +332,11 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
     else if (evt.getActionCommand().equals(COLOUR))
     {
       Color col = JColorChooser.showDialog(this,
-              MessageManager.getString("label.select_foreground_colour"), Color.black);
+              MessageManager.getString("label.select_foreground_colour"),
+              Color.black);
 
-      for (int i = 0; i < av.getColumnSelection().size(); i++)
+      for (int index : av.getColumnSelection().getSelected())
       {
-        int index = av.getColumnSelection().columnAt(i);
-
         if (!av.getColumnSelection().isVisible(index))
         {
           continue;
@@ -398,10 +394,8 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
           aa[activeRow].showAllColLabels = true;
         }
       }
-      for (int i = 0; i < av.getColumnSelection().size(); i++)
+      for (int index : av.getColumnSelection().getSelected())
       {
-        int index = av.getColumnSelection().columnAt(i);
-
         if (!av.getColumnSelection().isVisible(index))
         {
           continue;
@@ -412,7 +406,6 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
           anot[index] = new Annotation(label, "", type, 0);
         }
 
-        
         anot[index].secondaryStructure = type != 'S' ? type : label
                 .length() == 0 ? ' ' : label.charAt(0);
         anot[index].displayCharacter = label;
@@ -428,16 +421,14 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
     return;
   }
 
-  private String collectAnnotVals(Annotation[] anot,
-          ColumnSelection columnSelection, String label2)
+  private String collectAnnotVals(Annotation[] anot, String label2)
   {
     String collatedInput = "";
     String last = "";
     ColumnSelection viscols = av.getColumnSelection();
     // TODO: refactor and save av.getColumnSelection for efficiency
-    for (int i = 0; i < columnSelection.size(); i++)
+    for (int index : viscols.getSelected())
     {
-      int index = columnSelection.columnAt(i);
       // always check for current display state - just in case
       if (!viscols.isVisible(index))
       {
@@ -519,7 +510,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
       }
     }
 
-    if (SwingUtilities.isRightMouseButton(evt) && activeRow != -1)
+    if (evt.isPopupTrigger() && activeRow != -1)
     {
       if (av.getColumnSelection() == null)
       {
@@ -709,8 +700,8 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
               && aa[row].annotations[res].description != null
               && aa[row].annotations[res].description.length() > 0)
       {
-        this.setToolTipText(JvSwingUtils
-                        .wrapTooltip(true, aa[row].annotations[res].description));
+        this.setToolTipText(JvSwingUtils.wrapTooltip(true,
+                aa[row].annotations[res].description));
       }
       else
       {
@@ -757,10 +748,10 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
   public void drawCursor(Graphics graphics, SequenceI seq, int res, int x1,
           int y1)
   {
-    int pady = av.charHeight / 5;
+    int pady = av.getCharHeight() / 5;
     int charOffset = 0;
     graphics.setColor(Color.black);
-    graphics.fillRect(x1, y1, av.charWidth, av.charHeight);
+    graphics.fillRect(x1, y1, av.getCharWidth(), av.getCharHeight());
 
     if (av.validCharWidth)
     {
@@ -768,9 +759,9 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
 
       char s = seq.getCharAt(res);
 
-      charOffset = (av.charWidth - fm.charWidth(s)) / 2;
+      charOffset = (av.getCharWidth() - fm.charWidth(s)) / 2;
       graphics.drawString(String.valueOf(s), charOffset + x1,
-              (y1 + av.charHeight) - pady);
+              (y1 + av.getCharHeight()) - pady);
     }
 
   }
@@ -799,7 +790,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
         return;
       }
     }
-    imgWidth = (av.endRes - av.startRes + 1) * av.charWidth;
+    imgWidth = (av.endRes - av.startRes + 1) * av.getCharWidth();
     if (imgWidth < 1)
     {
       return;
@@ -809,8 +800,8 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
     {
       try
       {
-        image = new BufferedImage(imgWidth, ap.getAnnotationPanel().getHeight(),
-                BufferedImage.TYPE_INT_RGB);
+        image = new BufferedImage(imgWidth, ap.getAnnotationPanel()
+                .getHeight(), BufferedImage.TYPE_INT_RGB);
       } catch (OutOfMemoryError oom)
       {
         try
@@ -867,7 +858,8 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
       return;
     }
     long stime = System.currentTimeMillis();
-    gg.copyArea(0, 0, imgWidth, getHeight(), -horizontal * av.charWidth, 0);
+    gg.copyArea(0, 0, imgWidth, getHeight(),
+            -horizontal * av.getCharWidth(), 0);
     long mtime = System.currentTimeMillis();
     int sr = av.startRes;
     int er = av.endRes + 1;
@@ -875,7 +867,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
 
     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)
@@ -960,7 +952,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
     }
 
     g.setColor(Color.white);
-    g.fillRect(0, 0, (endRes - startRes) * av.charWidth, getHeight());
+    g.fillRect(0, 0, (endRes - startRes) * av.getCharWidth(), getHeight());
 
     g.setFont(av.getFont());
     if (fm == null)