+/**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @author $author$\r
+ * @version $Revision$\r
+ */\r
+public class IdPanel extends JPanel implements MouseListener,\r
+ MouseMotionListener\r
+{\r
+ protected IdCanvas idCanvas;\r
+ protected AlignViewport av;\r
+ protected AlignmentPanel alignPanel;\r
+ ScrollThread scrollThread = null;\r
+ int offy;\r
+ int width;\r
+ int lastid = -1;\r
+ boolean mouseDragging = false;\r
+\r
+ /**\r
+ * Creates a new IdPanel object.\r
+ *\r
+ * @param av DOCUMENT ME!\r
+ * @param parent DOCUMENT ME!\r
+ */\r
+ public IdPanel(AlignViewport av, AlignmentPanel parent)\r
+ {\r
+ this.av = av;\r
+ alignPanel = parent;\r
+ idCanvas = new IdCanvas(av);\r
+ setLayout(new BorderLayout());\r
+ add(idCanvas, BorderLayout.CENTER);\r
+ addMouseListener(this);\r
+ addMouseMotionListener(this);\r
+ ToolTipManager.sharedInstance().registerComponent(this);\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param e DOCUMENT ME!\r
+ */\r
+ public void mouseMoved(MouseEvent e)\r
+ {\r
+ int seq = Math.max(0, alignPanel.seqPanel.findSeq(e));\r
+ if(seq>-1 && seq<av.alignment.getHeight())\r
+ {\r
+ SequenceI sequence = av.alignment.getSequenceAt(seq);\r
+ StringBuffer tip = new StringBuffer("<html>");\r
+ tip.append(sequence.getDisplayId(true));\r
+ if (av.alignment.getSequenceAt(seq).getDescription() != null)\r
+ {\r
+ tip.append("<table width=250 border=0><tr><td><i>");\r
+ tip.append(av.alignment.getSequenceAt(seq).getDescription());\r
+\r
+ //ADD NON POSITIONAL SEQUENCE INFO\r
+ SequenceFeature [] features = sequence.getDatasetSequence().getSequenceFeatures();\r
+ if(features!=null)\r
+ {\r
+ for(int i=0; i<features.length; i++)\r
+ {\r
+ if(features[i].begin == 0 && features[i].end ==0)\r
+ {\r
+ tip.append("<br>"+features[i].featureGroup\r
+ +" "+ features[i].getType()+" "+features[i].description);\r
+ }\r
+ }\r
+ }\r
+ tip.append("</i></td></tr></table>");\r
+ }\r
+\r
+ DBRefEntry[] dbrefs = sequence.getDatasetSequence().getDBRef();\r
+ if (dbrefs != null)\r
+ {\r
+ tip.append("<i>");\r
+ for (int i = 0; i < dbrefs.length; i++)\r
+ {\r
+ tip.append("<br>");\r
+ tip.append(dbrefs[i].getSource() + " "\r
+ + dbrefs[i].getAccessionId());\r
+ }\r
+ tip.append("</i>");\r
+ }\r