JAL-1432 updated copyright notices
[jalview.git] / src / jalview / javascript / MouseOverListener.java
index 05fc57e..cb3fee7 100644 (file)
@@ -1,46 +1,94 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.javascript;
 
 import jalview.appletgui.AlignFrame;
 import jalview.bin.JalviewLite;
 import jalview.datamodel.SequenceI;
 import jalview.structure.VamsasListener;
-import netscape.javascript.JSObject;
+import jalview.structure.VamsasSource;
 
-public class MouseOverListener implements VamsasListener,JsCallBack
+public class MouseOverListener extends JSFunctionExec implements
+        VamsasListener, JsCallBack
 {
-  JalviewLite jvlite;
   AlignFrame _af;
+
   String _listener;
+
   SequenceI last = null;
 
   int i = -1;
 
-  public void mouseOver(SequenceI seq, int index)
+  public void mouseOver(SequenceI seq, int index, VamsasSource source)
   {
     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)
+      // this should really be a trace message.
+      // Cache.log.debug("Mouse over " + v.getId() + " bound to "
+      // + seq + " at " + index);
+      last = seq;
+      i = index;
+      AlignFrame src = null;
+      try
+      {
+        if (source != null)
+        {
+          if (source instanceof jalview.appletgui.AlignViewport
+                  && ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame.viewport == source)
+          {
+            // should be valid if it just generated an event!
+            src = ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame;
+
+          }
+          // TODO: ensure that if '_af' is specified along with a handler
+          // function, then only events from that alignFrame are sent to that
+          // function
+        }
+        executeJavascriptFunction(
+                _listener,
+                new Object[]
+                { src, seq.getDisplayId(false), "" + (1 + i),
+                    "" + seq.findPosition(i) });
+      } catch (Exception ex)
+      {
+
+        System.err
+                .println("JalviewLite javascript error: Couldn't send mouseOver with handler '"
+                        + _listener + "'");
+        if (ex instanceof netscape.javascript.JSException)
         {
-          System.err.println("JalviewLite javascript error: Couldn't send mouseOver with handler '"+_listener+"'");
-          ex.printStackTrace();
+          System.err.println("Javascript Exception: "
+                  + ((netscape.javascript.JSException) ex).getMessage());
+        }
+        ex.printStackTrace();
       }
     }
   }
-  
-  public MouseOverListener(JalviewLite applet, AlignFrame af, String listener)
+
+  public MouseOverListener(JalviewLite applet, AlignFrame af,
+          String listener)
   {
-    this.jvlite = applet;
+    super(applet);
     _af = af;
     _listener = listener;
   }
+
   @Override
   public AlignFrame getAlignFrame()
   {
@@ -53,5 +101,4 @@ public class MouseOverListener implements VamsasListener,JsCallBack
     return _listener;
   }
 
-
 }