X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjavascript%2FMouseOverListener.java;h=4115a9eab7f7454f23118afb4325b32957f94229;hb=b2f9a8d7bce642ff4011bc6d49e02bb0569fbb11;hp=c2ae6ef4801e387c28b68b31677c1d5530b44d3a;hpb=b97119fa4abbda0ef3d8e6e36f4634a06d79d411;p=jalview.git diff --git a/src/jalview/javascript/MouseOverListener.java b/src/jalview/javascript/MouseOverListener.java index c2ae6ef..4115a9e 100644 --- a/src/jalview/javascript/MouseOverListener.java +++ b/src/jalview/javascript/MouseOverListener.java @@ -1,49 +1,94 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1) + * 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 extends JSFunctionExec implements VamsasListener,JsCallBack +public class MouseOverListener extends JSFunctionExec implements + VamsasListener, JsCallBack { 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 { - executeJavascriptFunction(_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; + } - 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) { super(applet); _af = af; _listener = listener; } + @Override public AlignFrame getAlignFrame() { @@ -56,5 +101,4 @@ public class MouseOverListener extends JSFunctionExec implements VamsasListener, return _listener; } - }