X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjavascript%2FMouseOverListener.java;h=c62d48d2ad6e96850bf0972ea11d8e40a069e2d3;hb=a79f9e113c51c032070c670e45ce3eb464691166;hp=462092e391acdcdaddb61aba4dfc249fd0fd2e35;hpb=25ef96b8920057588effd6ccff12a256d957e762;p=jalview.git diff --git a/src/jalview/javascript/MouseOverListener.java b/src/jalview/javascript/MouseOverListener.java index 462092e..c62d48d 100644 --- a/src/jalview/javascript/MouseOverListener.java +++ b/src/jalview/javascript/MouseOverListener.java @@ -1,53 +1,91 @@ +/******************************************************************************* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle + * + * 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 . + *******************************************************************************/ 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 +98,4 @@ public class MouseOverListener implements VamsasListener,JsCallBack return _listener; } - }