X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjavascript%2FMouseOverListener.java;h=cb3fee70994814c8b7776994ede7dfeb55d88c7c;hb=865a855a4ca87eadb3e5ff284ed32ed307d9c34b;hp=05fc57e151d947a6d812288762f7d18fdd4e11c7;hpb=1786b6dbaf15f405c2e364f84891612ed0da3405;p=jalview.git diff --git a/src/jalview/javascript/MouseOverListener.java b/src/jalview/javascript/MouseOverListener.java index 05fc57e..cb3fee7 100644 --- a/src/jalview/javascript/MouseOverListener.java +++ b/src/jalview/javascript/MouseOverListener.java @@ -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 . + * 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; } - }