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
{\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
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
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
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
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
}\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