java side javascript callback enactors JAL-469
[jalview.git] / src / jalview / javascript / MouseOverListener.java
diff --git a/src/jalview/javascript/MouseOverListener.java b/src/jalview/javascript/MouseOverListener.java
new file mode 100644 (file)
index 0000000..05fc57e
--- /dev/null
@@ -0,0 +1,57 @@
+package jalview.javascript;
+
+import jalview.appletgui.AlignFrame;
+import jalview.bin.JalviewLite;
+import jalview.datamodel.SequenceI;
+import jalview.structure.VamsasListener;
+import netscape.javascript.JSObject;
+
+public class MouseOverListener implements VamsasListener,JsCallBack
+{
+  JalviewLite jvlite;
+  AlignFrame _af;
+  String _listener;
+  SequenceI last = null;
+
+  int i = -1;
+
+  public void mouseOver(SequenceI seq, int index)
+  {
+    if (seq != last || i != index)
+    {
+        // this should really be a trace message.
+        // Cache.log.debug("Mouse over " + v.getId() + " bound to "
+        // + seq + " at " + index);
+        last = seq;
+        i = index;
+        try {
+        JSObject js = JSObject.getWindow(jvlite);
+        js.call(_listener, new Object[] { _af, seq.getDisplayId(false), ""+(1+i)});
+        } catch (Exception ex)
+        {
+          System.err.println("JalviewLite javascript error: Couldn't send mouseOver with handler '"+_listener+"'");
+          ex.printStackTrace();
+      }
+    }
+  }
+  
+  public MouseOverListener(JalviewLite applet, AlignFrame af, String listener)
+  {
+    this.jvlite = applet;
+    _af = af;
+    _listener = listener;
+  }
+  @Override
+  public AlignFrame getAlignFrame()
+  {
+    return _af;
+  }
+
+  @Override
+  public String getListenerFunction()
+  {
+    return _listener;
+  }
+
+
+}