b4bb3c9d6cdbecaedd61815e41d3e9974a491191
[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 \r
47 \r
48   public void paintComponent(Graphics g)\r
49   {\r
50    setPreferredSize(new Dimension( this.getWidth(), 80));\r
51    drawScorePanel(g, getWidth(), av.getStartRes(),  av.getChunkWidth());\r
52   }\r
53 \r
54   public void drawScorePanel(Graphics g, int width, int startRes, int length)\r
55   {\r
56    g.setColor(Color.white);\r
57    g.fillRect(0, 0,width, 80);\r
58    g.setColor(Color.blue);\r
59    g.setFont(av.getFont());\r
60 \r
61    Vector freq = av.getConsensus(false);\r
62 \r
63    int value, charOffset;\r
64    String characters;\r
65    char character;\r
66 \r
67 \r
68    int i=0, iSize = length;\r
69    if(iSize > freq.size())\r
70      iSize=freq.size();\r
71 \r
72    for (i = 0; i < iSize; i++)\r
73    {\r
74      g.setColor(Color.blue);\r
75 \r
76      Hashtable hash = (Hashtable) freq.elementAt(i+startRes);\r
77      if(hash.containsKey("maxResidue"))\r
78             characters = hash.get("maxResidue").toString();\r
79      else\r
80        characters="@";\r
81      character = characters.charAt(0);\r
82      value = Integer.parseInt(hash.get("maxCount").toString());\r
83 \r
84      if (characters.length() > 1)\r
85        character = '+';\r
86 \r
87      charOffset = (int) (av.charWidth -\r
88                          g.getFontMetrics().charWidth(character)) / 2;\r
89      g.drawString(character + "", charOffset + (int) (i * av.charWidth),\r
90                   60 + (int) av.charWidth);\r
91 \r
92      value = (int) ( (float) value /\r
93                     Float.parseFloat(hash.get("size").toString()) * 55);\r
94 \r
95      if (character != ' ' && character != '.' && character != '-')\r
96        g.fillRect( (int) (i * av.charWidth),\r
97                   60 - value,\r
98                   (int) av.charWidth,\r
99                   value\r
100                   );\r
101    }\r
102   }\r
103 \r
104 }\r