Jalview Imported Sources
[jalview.git] / src / jalview / gui / ScorePanel.java
1 package jalview.gui;\r
2 \r
3 import jalview.jbgui.*;\r
4 import java.util.*;\r
5 import javax.swing.*;\r
6 import java.awt.*;\r
7 import java.awt.event.*;\r
8 \r
9 public class ScorePanel extends JPanel\r
10 {\r
11   AlignViewport av;\r
12 \r
13   public ScorePanel(AlignViewport a)\r
14   {\r
15     av = a;\r
16     setPreferredSize(new Dimension(500,80));\r
17     addMouseMotionListener(new MouseMotionAdapter()\r
18     { public void mouseMoved(MouseEvent evt)\r
19       {\r
20         doMouseMoved(evt);\r
21       }\r
22     });\r
23 \r
24     ToolTipManager.sharedInstance().registerComponent(this);\r
25   }\r
26 \r
27   public void doMouseMoved(MouseEvent evt)\r
28   {\r
29      Vector freq = av.getConsensus(false);\r
30 \r
31      int col = (int)(evt.getX()/av.charWidth) +av.getStartRes();\r
32 \r
33      if(col >= av.getEndRes() || col >= freq.size())\r
34        return;\r
35 \r
36      Hashtable hash = (Hashtable) freq.elementAt( col );\r
37 \r
38      String characters = hash.get("maxResidue").toString();\r
39 \r
40      if (characters.length()>1)\r
41        this.setToolTipText(characters);\r
42      else\r
43        this.setToolTipText(null);\r
44   }\r
45 \r
46   public void paintComponent(Graphics g)\r
47   {\r
48     setPreferredSize(new Dimension( this.getWidth(), 80));\r
49    g.setColor(Color.white);\r
50    g.fillRect(0, 0, this.getWidth(), 80);\r
51    g.setColor(Color.blue);\r
52    g.setFont(av.getFont());\r
53 \r
54    Vector freq = av.getConsensus(false);\r
55 \r
56    int value, charOffset;\r
57    String characters;\r
58    char character;\r
59 \r
60 \r
61    int i=0, iSize = av.getChunkWidth();\r
62    if(iSize > freq.size())\r
63      iSize=freq.size();\r
64 \r
65    for (i = 0; i < iSize; i++)\r
66    {\r
67      g.setColor(Color.blue);\r
68 \r
69      Hashtable hash = (Hashtable) freq.elementAt(i+av.getStartRes());\r
70      if(hash.containsKey("maxResidue"))\r
71             characters = hash.get("maxResidue").toString();\r
72      else\r
73        characters="@";\r
74      character = characters.charAt(0);\r
75      value = Integer.parseInt(hash.get("maxCount").toString());\r
76 \r
77      if (characters.length() > 1)\r
78        character = '+';\r
79 \r
80      charOffset = (int) (av.charWidth -\r
81                          g.getFontMetrics().charWidth(character)) / 2;\r
82      g.drawString(character + "", charOffset + (int) (i * av.charWidth),\r
83                   60 + (int) av.charWidth);\r
84 \r
85      value = (int) ( (float) value /\r
86                     Float.parseFloat(hash.get("size").toString()) * 55);\r
87 \r
88      if (character != ' ' && character != '.' && character != '-')\r
89        g.fillRect( (int) (i * av.charWidth),\r
90                   60 - value,\r
91                   (int) av.charWidth,\r
92                   value\r
93                   );\r
94    }\r
95   }\r
96 \r
97 }\r