2 package jalview.appletgui;
\r
4 import java.awt.event.*;
\r
6 import jalview.datamodel.*;
\r
8 public class AnnotationLabels extends Panel implements ActionListener
\r
10 boolean active = false;
\r
12 boolean resizing = false;
\r
14 static String ADDNEW = "Add new row";
\r
15 static String HIDE = "Hide this row";
\r
16 static String DELETE = "Delete this row";
\r
17 static String SHOWALL="Show all hidden rows";
\r
18 int selectedRow = 0;
\r
19 int scrollOffset = 0;
\r
21 public AnnotationLabels(AlignmentPanel ap)
\r
25 addMouseListener(new MouseAdapter()
\r
26 {public void mousePressed(MouseEvent evt)
\r
28 doMousePressed(evt);
\r
33 public void setScrollOffset(int y)
\r
39 public void actionPerformed(ActionEvent evt)
\r
41 AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation();
\r
43 if(evt.getActionCommand().equals(HIDE))
\r
45 aa[selectedRow].visible = false;
\r
47 else if(evt.getActionCommand().equals(SHOWALL))
\r
49 for(int i=0; i<aa.length; i++)
\r
50 aa[i].visible = true;
\r
52 ap.annotationPanel.adjustPanelHeight();
\r
53 setSize(getSize().width,ap.annotationPanel.getSize().height);
\r
58 public void doMousePressed(MouseEvent evt)
\r
60 int y = evt.getY() - scrollOffset;
\r
61 AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation();
\r
63 for (int i = 0; i < aa.length; i++)
\r
68 height += aa[i].height;
\r
76 PopupMenu pop = new PopupMenu("Annotations");
\r
77 MenuItem item = new MenuItem(HIDE);
\r
78 item.addActionListener(this);
\r
80 item = new MenuItem(SHOWALL);
\r
81 item.addActionListener(this);
\r
84 pop.show(this, evt.getX(), evt.getY());
\r
88 public void paint(Graphics g)
\r
93 public void drawComponent(Graphics g)
\r
95 FontMetrics fm = g.getFontMetrics(g.getFont());
\r
96 g.setColor(Color.white);
\r
97 g.fillRect(0,0, getSize().width, getSize().height);
\r
99 g.translate(0, scrollOffset);
\r
100 g.setColor(Color.black);
\r
102 AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation();
\r
103 int y = g.getFont().getSize();
\r
107 for(int i=0; i<aa.length; i++)
\r
112 x = getSize().width - fm.stringWidth(aa[i].label)-3;
\r
115 y+=(aa[i].height/3);
\r
117 g.drawString(aa[i].label, x, y);
\r
120 y+=(2*aa[i].height/3);
\r