82fd6a43839c415f584300aed87d26c8b9582dff
[jalview.git] / src / jalview / javascript / MouseOverListener.java
1 package jalview.javascript;
2
3 import java.util.Vector;
4
5 import jalview.appletgui.AlignFrame;
6 import jalview.bin.JalviewLite;
7 import jalview.datamodel.SequenceI;
8 import jalview.structure.VamsasListener;
9 import jalview.structure.VamsasSource;
10 import netscape.javascript.JSObject;
11
12 public class MouseOverListener extends JSFunctionExec implements
13         VamsasListener, JsCallBack
14 {
15   AlignFrame _af;
16
17   String _listener;
18
19   SequenceI last = null;
20
21   int i = -1;
22
23   public void mouseOver(SequenceI seq, int index, VamsasSource source)
24   {
25     if (seq != last || i != index)
26     {
27       // this should really be a trace message.
28       // Cache.log.debug("Mouse over " + v.getId() + " bound to "
29       // + seq + " at " + index);
30       last = seq;
31       i = index;
32       AlignFrame src = null;
33       try
34       {
35         if (source != null)
36         {
37           if (source instanceof jalview.appletgui.AlignViewport
38                   && ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame.viewport == source)
39           {
40             // should be valid if it just generated an event!
41             src = ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame;
42
43           }
44           // TODO: ensure that if '_af' is specified along with a handler function, then only events from that alignFrame are sent to that function
45         }
46         executeJavascriptFunction(_listener, new Object[]
47         { src, seq.getDisplayId(false), "" + (1 + i), ""+seq.findPosition(i) });
48       } catch (Exception ex)
49       {
50
51         System.err
52                 .println("JalviewLite javascript error: Couldn't send mouseOver with handler '"
53                         + _listener + "'");
54         if (ex instanceof netscape.javascript.JSException)
55         {
56           System.err.println("Javascript Exception: "
57                   + ((netscape.javascript.JSException) ex).getMessage());
58         }
59         ex.printStackTrace();
60       }
61     }
62   }
63
64   public MouseOverListener(JalviewLite applet, AlignFrame af,
65           String listener)
66   {
67     super(applet);
68     _af = af;
69     _listener = listener;
70   }
71
72   @Override
73   public AlignFrame getAlignFrame()
74   {
75     return _af;
76   }
77
78   @Override
79   public String getListenerFunction()
80   {
81     return _listener;
82   }
83
84 }