mouse listeners added
authoramwaterhouse <Andrew Waterhouse>
Wed, 4 May 2005 15:59:27 +0000 (15:59 +0000)
committeramwaterhouse <Andrew Waterhouse>
Wed, 4 May 2005 15:59:27 +0000 (15:59 +0000)
src/jalview/appletgui/AnnotationLabels.java
src/jalview/appletgui/AnnotationPanel.java

index f51f465..2e47b05 100755 (executable)
@@ -5,10 +5,9 @@ import java.awt.event.*;
 import java.awt.*;\r
 import jalview.datamodel.*;\r
 \r
-public class AnnotationLabels extends Panel\r
+public class AnnotationLabels extends Panel implements ActionListener\r
 {\r
   boolean active = false;\r
-  Image image;\r
   AlignmentPanel ap ;\r
   boolean resizing = false;\r
   int oldY, mouseX;\r
@@ -23,18 +22,12 @@ public class AnnotationLabels extends Panel
   {\r
     this.ap = ap;\r
     setLayout(null);\r
-\r
-    java.net.URL url = getClass().getResource("/images/idwidth.gif");\r
-    if (url != null)\r
-      image = java.awt.Toolkit.getDefaultToolkit().getImage(url);\r
-\r
-    try\r
-    {\r
-      MediaTracker mt = new MediaTracker(this);\r
-      mt.addImage(image, 0);\r
-      mt.waitForID(0);\r
-    }\r
-    catch (Exception ex) {}\r
+    addMouseListener(new MouseAdapter()\r
+    {public void mousePressed(MouseEvent evt)\r
+      {\r
+        doMousePressed(evt);\r
+      }\r
+    });\r
   }\r
 \r
   public void setScrollOffset(int y)\r
@@ -43,6 +36,55 @@ public class AnnotationLabels extends Panel
     repaint();\r
   }\r
 \r
+  public void actionPerformed(ActionEvent evt)\r
+  {\r
+    AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation();\r
+\r
+   if(evt.getActionCommand().equals(HIDE))\r
+   {\r
+     aa[selectedRow].visible = false;\r
+   }\r
+   else if(evt.getActionCommand().equals(SHOWALL))\r
+   {\r
+       for(int i=0; i<aa.length; i++)\r
+         aa[i].visible = true;\r
+   }\r
+   ap.annotationPanel.adjustPanelHeight();\r
+   setSize(getSize().width,ap.annotationPanel.getSize().height);\r
+   ap.validate();\r
+   ap.repaint();\r
+  }\r
+\r
+  public void doMousePressed(MouseEvent evt)\r
+  {\r
+    int y = evt.getY() - scrollOffset;\r
+    AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation();\r
+    int height = 0;\r
+    for (int i = 0; i < aa.length; i++)\r
+    {\r
+      if (!aa[i].visible)\r
+        continue;\r
+\r
+      height += aa[i].height;\r
+      if (y < height)\r
+      {\r
+        selectedRow = i;\r
+        break;\r
+      }\r
+    }\r
+\r
+    PopupMenu pop = new PopupMenu("Annotations");\r
+    MenuItem item = new MenuItem(HIDE);\r
+    item.addActionListener(this);\r
+    pop.add(item);\r
+    item = new MenuItem(SHOWALL);\r
+    item.addActionListener(this);\r
+    pop.add(item);\r
+    this.add(pop);\r
+    pop.show(this, evt.getX(), evt.getY());\r
+\r
+  }\r
+\r
   public void paint(Graphics g)\r
   {\r
     drawComponent(g);\r
@@ -79,21 +121,6 @@ public class AnnotationLabels extends Panel
     else\r
        y+=aa[i].height;\r
    }\r
-\r
-   if (active)\r
-   {\r
-     if (image != null)\r
-       g.drawImage(image, 2, 0, this);\r
-   }\r
-\r
-   if (aa == null || aa.length<1)\r
-   {\r
-     g.drawString("Right click", 2, 8);\r
-     g.drawString("to add annotation", 2, 18);\r
-   }\r
-\r
-\r
-\r
   }\r
 \r
 }\r
index 78b9a51..fb146f9 100755 (executable)
@@ -40,6 +40,10 @@ public class AnnotationPanel extends Panel implements AdjustmentListener
     this.setLayout(null);\r
     adjustPanelHeight();\r
 \r
+    addMouseMotionListener(new MouseMotionAdapter()\r
+    {public void mouseMoved(MouseEvent evt)\r
+          { doMouseMoved(evt); }\r
+    });\r
 \r
     ap.annotationScroller.getVAdjustable().addAdjustmentListener( this );\r
   }\r
@@ -75,7 +79,13 @@ public class AnnotationPanel extends Panel implements AdjustmentListener
       height += aa[i].height;\r
     }\r
   else height=20;\r
-   this.setSize(new Dimension(1, height));\r
+\r
+   this.setSize(getSize().width, height);\r
+   ap.annotationScroller.setSize(getSize().width, height);\r
+\r
+//  ap.annotationSpaceFillerHolder.setSize(d.width,annotationPanel.getSize().height);\r
+\r
+   repaint();\r
 \r
   }\r
 \r
@@ -100,9 +110,41 @@ public class AnnotationPanel extends Panel implements AdjustmentListener
     }\r
 \r
     activeRes.addElement(String.valueOf(i));\r
-\r
   }\r
 \r
+ public void doMouseMoved(MouseEvent evt)\r
+ {\r
+   AlignmentAnnotation [] aa = av.alignment.getAlignmentAnnotation();\r
+   if(aa==null)\r
+     return;\r
+\r
+   int row = -1;\r
+   int height=0;\r
+   for(int i=0; i<aa.length; i++)\r
+   {\r
+\r
+     if( aa[i].visible )\r
+       height += aa[i].height;\r
+\r
+     if(evt.getY()<height)\r
+     {\r
+       row = i;\r
+       break;\r
+     }\r
+   }\r
+\r
+   int res = evt.getX() / av.getCharWidth() + av.getStartRes();\r
+   if(row>-1 && res<aa[row].annotations.length && aa[row].annotations[res]!=null)\r
+   {\r
+     StringBuffer text = new StringBuffer("Sequence position " + (res + 1) +\r
+                                          "  " +\r
+                                          aa[row].annotations[res].description);\r
+     ap.alignFrame.statusBar.setText(text.toString());\r
+   }\r
+ }\r
+\r
+\r
+\r
   public void update(Graphics g)\r
   {\r
     paint(g);\r