X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjavascript%2FMouseOverListener.java;h=82fd6a43839c415f584300aed87d26c8b9582dff;hb=ed3945c9051ab14090b5012e4a8ef528df734ddb;hp=462092e391acdcdaddb61aba4dfc249fd0fd2e35;hpb=25ef96b8920057588effd6ccff12a256d957e762;p=jalview.git diff --git a/src/jalview/javascript/MouseOverListener.java b/src/jalview/javascript/MouseOverListener.java index 462092e..82fd6a4 100644 --- a/src/jalview/javascript/MouseOverListener.java +++ b/src/jalview/javascript/MouseOverListener.java @@ -1,53 +1,74 @@ package jalview.javascript; +import java.util.Vector; + import jalview.appletgui.AlignFrame; import jalview.bin.JalviewLite; import jalview.datamodel.SequenceI; import jalview.structure.VamsasListener; +import jalview.structure.VamsasSource; import netscape.javascript.JSObject; -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) { - - System.err.println("JalviewLite javascript error: Couldn't send mouseOver with handler '"+_listener+"'"); - if (ex instanceof netscape.javascript.JSException) + if (source instanceof jalview.appletgui.AlignViewport + && ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame.viewport == source) { - System.err.println("Javascript Exception: "+((netscape.javascript.JSException)ex).getMessage()); + // should be valid if it just generated an event! + src = ((jalview.appletgui.AlignViewport) source).applet.currentAlignFrame; + } - else { - ex.printStackTrace(); - }; + // 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("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() { @@ -60,5 +81,4 @@ public class MouseOverListener implements VamsasListener,JsCallBack return _listener; } - }