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 static String OUTPUT_TEXT="Show Values In Textbox";
\r
19 int selectedRow = 0;
\r
20 int scrollOffset = 0;
\r
22 public AnnotationLabels(AlignmentPanel ap)
\r
26 addMouseListener(new MouseAdapter()
\r
27 {public void mousePressed(MouseEvent evt)
\r
29 doMousePressed(evt);
\r
34 public void setScrollOffset(int y)
\r
40 public void actionPerformed(ActionEvent evt)
\r
42 AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation();
\r
44 if(evt.getActionCommand().equals(HIDE))
\r
46 aa[selectedRow].visible = false;
\r
48 else if(evt.getActionCommand().equals(SHOWALL))
\r
50 for(int i=0; i<aa.length; i++)
\r
51 aa[i].visible = true;
\r
53 else if (evt.getActionCommand().equals(OUTPUT_TEXT))
\r
55 CutAndPasteTransfer cap = new CutAndPasteTransfer(false);
\r
56 Frame frame = new Frame();
\r
58 jalview.bin.JalviewLite.addFrame(frame,
\r
59 ap.alignFrame.getTitle() + " - " +
\r
60 aa[selectedRow].label, 500, 100);
\r
61 cap.setText(aa[selectedRow].toString());
\r
64 ap.annotationPanel.adjustPanelHeight();
\r
65 setSize(getSize().width,ap.annotationPanel.getSize().height);
\r
70 public void doMousePressed(MouseEvent evt)
\r
72 int y = evt.getY() - scrollOffset;
\r
73 AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation();
\r
75 for (int i = 0; i < aa.length; i++)
\r
80 height += aa[i].height;
\r
88 PopupMenu pop = new PopupMenu("Annotations");
\r
89 MenuItem item = new MenuItem(HIDE);
\r
90 item.addActionListener(this);
\r
92 item = new MenuItem(SHOWALL);
\r
93 item.addActionListener(this);
\r
96 item = new MenuItem(OUTPUT_TEXT);
\r
97 item.addActionListener(this);
\r
99 pop.show(this, evt.getX(), evt.getY());
\r
103 public void paint(Graphics g)
\r
108 public void drawComponent(Graphics g)
\r
110 FontMetrics fm = g.getFontMetrics(g.getFont());
\r
111 g.setColor(Color.white);
\r
112 g.fillRect(0,0, getSize().width, getSize().height);
\r
114 g.translate(0, scrollOffset);
\r
115 g.setColor(Color.black);
\r
117 AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation();
\r
118 int y = g.getFont().getSize();
\r
122 for(int i=0; i<aa.length; i++)
\r
127 x = getSize().width - fm.stringWidth(aa[i].label)-3;
\r
130 y+=(aa[i].height/3);
\r
132 g.drawString(aa[i].label, x, y);
\r
135 y+=(2*aa[i].height/3);
\r