X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjavascript%2FMouseOverStructureListener.java;h=78f383ad34eb588632664f1a55e92afca23f4336;hb=9876fdccf311378e690c1f9e18db52675d427b89;hp=d829d020a0d1d8af830619b6f36b7508933cab33;hpb=b57a02c25e335d033c97f8a6bacd6b54f62bd2b6;p=jalview.git diff --git a/src/jalview/javascript/MouseOverStructureListener.java b/src/jalview/javascript/MouseOverStructureListener.java index d829d02..78f383a 100644 --- a/src/jalview/javascript/MouseOverStructureListener.java +++ b/src/jalview/javascript/MouseOverStructureListener.java @@ -1,25 +1,25 @@ -/******************************************************************************* - * 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 - * +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) + * Copyright (C) 2015 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. - * + * 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 . - *******************************************************************************/ + * + * 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 java.awt.Color; -import java.util.ArrayList; - import jalview.api.AlignmentViewPanel; import jalview.api.FeatureRenderer; import jalview.api.SequenceRenderer; @@ -27,11 +27,15 @@ import jalview.appletgui.AlignFrame; import jalview.bin.JalviewLite; import jalview.datamodel.SequenceI; import jalview.ext.jmol.JmolCommands; +import jalview.structure.AtomSpec; import jalview.structure.StructureListener; import jalview.structure.StructureMapping; import jalview.structure.StructureMappingcommandSet; import jalview.structure.StructureSelectionManager; +import java.util.ArrayList; +import java.util.List; + /** * Propagate events involving PDB structures associated with sequences to a * javascript function. Generally, the javascript handler is called with a @@ -41,7 +45,7 @@ import jalview.structure.StructureSelectionManager; *
  • mouseover: javascript function called with arguments * *
    - * ['mouseover',String(pdb file URI), String(pdb file chain ID), String(residue
    + * ['mouseover',String(pdb file URI), String(pdb file chain ID), String(residue
      * number moused over), String(atom index corresponding to residue)]
      * 
    * @@ -49,8 +53,8 @@ import jalview.structure.StructureSelectionManager; *
  • colourstruct: javascript function called with arguments * *
    - * ['colourstruct',String(alignment view id),String(number of javascript message
    - * chunks to collect),String(length of first chunk in set of messages - or zero
    + * ['colourstruct',String(alignment view id),String(number of javascript message
    + * chunks to collect),String(length of first chunk in set of messages - or zero
      * for null message)]
      * 
    * @@ -130,7 +134,6 @@ public class MouseOverStructureListener extends JSFunctionExec implements return modelSet; } - @Override public void mouseOverStructure(int atomIndex, String strInfo) { @@ -141,24 +144,27 @@ public class MouseOverStructureListener extends JSFunctionExec implements } @Override - public void highlightAtom(int atomIndex, int pdbResNum, String chain, - String pdbId) + public void highlightAtoms(List atoms) { - String[] st = new String[0]; - try - { - executeJavascriptFunction(_listenerfn, st = new String[] - { "mouseover", "" + pdbId, "" + chain, "" + (pdbResNum), - "" + atomIndex }); - } catch (Exception ex) + for (AtomSpec atom : atoms) { - System.err.println("Couldn't execute callback with " + _listenerfn - + " using args { " + st[0] + ", " + st[1] + ", " + st[2] - + "," + st[3] + "\n"); - ex.printStackTrace(); - + try + { + // TODO is this right? StructureSelectionManager passes pdbFile as the + // field that is interpreted (in 2.8.2) as pdbId? + // JBPComment: yep - this is right! the Javascript harness uses the + // absolute pdbFile URI to locate the PDB file in the external viewer + executeJavascriptFunction(_listenerfn, + new String[] { "mouseover", "" + atom.getPdbFile(), + "" + atom.getChain(), "" + (atom.getPdbResNum()), + "" + atom.getAtomIndex() }); + } catch (Exception ex) + { + System.err.println("Couldn't execute callback with " + _listenerfn + + " for atomSpec: " + atom); + ex.printStackTrace(); + } } - } @Override @@ -167,10 +173,14 @@ public class MouseOverStructureListener extends JSFunctionExec implements final Object source = srce; StructureSelectionManager ssm = StructureSelectionManager .getStructureSelectionManager(jvlite); - // if (jvlite.debug) - // { - // ssm.reportMapping(); - // } + + if (JalviewLite.debug) + { + System.err.println(this.getClass().getName() + " modelSet[0]: " + + modelSet[0]); + ssm.reportMapping(); + } + if (source instanceof jalview.api.AlignmentViewPanel) { SequenceI[][] sequence = new SequenceI[modelSet.length][]; @@ -199,7 +209,7 @@ public class MouseOverStructureListener extends JSFunctionExec implements SequenceRenderer sr = ((jalview.appletgui.AlignmentPanel) source) .getSequenceRenderer(); FeatureRenderer fr = ((jalview.appletgui.AlignmentPanel) source).av - .getShowSequenceFeatures() ? new jalview.appletgui.FeatureRenderer( + .isShowSequenceFeatures() ? new jalview.appletgui.FeatureRenderer( ((jalview.appletgui.AlignmentPanel) source).av) : null; if (fr != null) { @@ -243,8 +253,7 @@ public class MouseOverStructureListener extends JSFunctionExec implements { jvlite.setJsMessageSet(mclass, mhandle, ccomandset); // and notify javascript handler - String st[] = new String[] - { + String st[] = new String[] { "colourstruct", "" + ((jalview.appletgui.AlignmentPanel) source).av.getViewId(), "" + ccomandset.length, @@ -280,13 +289,6 @@ public class MouseOverStructureListener extends JSFunctionExec implements } @Override - public Color getColour(int atomIndex, int pdbResNum, String chain, - String pdbId) - { - return null; - } - - @Override public AlignFrame getAlignFrame() { // associated with all alignframes, always. @@ -313,4 +315,10 @@ public class MouseOverStructureListener extends JSFunctionExec implements } + @Override + public boolean isListeningFor(SequenceI seq) + { + return true; + } + }