X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fjavascript%2FMouseOverStructureListener.java;h=28e2ced1d2ccde94fa027564eb09efc4d786f359;hb=0b6324afbf67fd0fc672b60f4f4988e6e1f4390e;hp=e25f47c0a33166e0bc5d8987d84cd498c75c36c5;hpb=838e4f91d4a53dd315640dbc9ff6ef7a815ee576;p=jalview.git diff --git a/src/jalview/javascript/MouseOverStructureListener.java b/src/jalview/javascript/MouseOverStructureListener.java index e25f47c..28e2ced 100644 --- a/src/jalview/javascript/MouseOverStructureListener.java +++ b/src/jalview/javascript/MouseOverStructureListener.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b1) - * Copyright (C) 2015 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -20,11 +20,11 @@ */ package jalview.javascript; +import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; -import jalview.api.FeatureRenderer; +import jalview.api.JalviewApp; import jalview.api.SequenceRenderer; import jalview.appletgui.AlignFrame; -import jalview.bin.JalviewLite; import jalview.datamodel.SequenceI; import jalview.ext.jmol.JmolCommands; import jalview.structure.AtomSpec; @@ -70,18 +70,18 @@ import java.util.List; * @author Jim Procter (jprocter) * */ -public class MouseOverStructureListener extends JSFunctionExec implements - JsCallBack, StructureListener +public class MouseOverStructureListener extends JSFunctionExec + implements JsCallBack, StructureListener { String _listenerfn; - String[] modelSet; + public String[] modelSet; - public MouseOverStructureListener(JalviewLite jalviewLite, - String listener, String[] modelList) + public MouseOverStructureListener(JalviewApp app, String listener, + String[] modelList, boolean debug) { - super(jalviewLite); + super(app, debug); _listenerfn = listener; modelSet = modelList; if (modelSet != null) @@ -126,7 +126,7 @@ public class MouseOverStructureListener extends JSFunctionExec implements } @Override - public String[] getPdbFile() + public String[] getStructureFiles() { return modelSet; } @@ -152,9 +152,9 @@ public class MouseOverStructureListener extends JSFunctionExec implements // 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() }); + new String[] + { "mouseover", "" + atom.getPdbFile(), "" + atom.getChain(), + "" + (atom.getPdbResNum()), "" + atom.getAtomIndex() }); } catch (Exception ex) { System.err.println("Couldn't execute callback with " + _listenerfn @@ -165,21 +165,22 @@ public class MouseOverStructureListener extends JSFunctionExec implements } @Override - public synchronized void updateColours(Object srce) + public synchronized void updateColours(Object source) { - final Object source = srce; StructureSelectionManager ssm = StructureSelectionManager - .getStructureSelectionManager(jvlite); + .getStructureSelectionManager( + jvlite.getStructureSelectionManagerProvider()); - if (JalviewLite.debug) + if (debug) { - System.err.println(this.getClass().getName() + " modelSet[0]: " - + modelSet[0]); + System.err.println( + this.getClass().getName() + " modelSet[0]: " + modelSet[0]); ssm.reportMapping(); } - if (source instanceof jalview.api.AlignmentViewPanel) + if (source instanceof AlignmentViewPanel) { + AlignmentViewPanel panel = (AlignmentViewPanel) source; SequenceI[][] sequence = new SequenceI[modelSet.length][]; for (int m = 0; m < modelSet.length; m++) { @@ -203,26 +204,23 @@ public class MouseOverStructureListener extends JSFunctionExec implements // } } - SequenceRenderer sr = ((jalview.appletgui.AlignmentPanel) source) - .getSequenceRenderer(); - FeatureRenderer fr = ((jalview.appletgui.AlignmentPanel) source).av - .isShowSequenceFeatures() ? new jalview.appletgui.FeatureRenderer( - ((jalview.appletgui.AlignmentPanel) source).av) : null; + SequenceRenderer sr = panel.getSequenceRenderer(); + AlignViewportI vp = panel.getAlignViewport(); + jalview.renderer.seqfeatures.FeatureRenderer fr = vp + .isShowSequenceFeatures() ? jvlite.getNewFeatureRenderer(vp) + : null; if (fr != null) { - ((jalview.appletgui.FeatureRenderer) fr) - .transferSettings(((jalview.appletgui.AlignmentPanel) source) - .getFeatureRenderer()); + fr.transferSettings(panel.getFeatureRenderer()); } - ; // Form a colour command from the given alignment panel for each distinct // structure - ArrayList ccomands = new ArrayList(); - ArrayList pdbfn = new ArrayList(); + ArrayList ccomands = new ArrayList<>(); + ArrayList pdbfn = new ArrayList<>(); StructureMappingcommandSet[] colcommands = JmolCommands - .getColourBySequenceCommand(ssm, modelSet, sequence, sr, fr, - ((AlignmentViewPanel) source).getAlignment()); + .getColourBySequenceCommand(ssm, modelSet, sequence, sr, + (AlignmentViewPanel) source); if (colcommands == null) { return; @@ -235,7 +233,6 @@ public class MouseOverStructureListener extends JSFunctionExec implements pdbfn.add(ccset.mapping); } - String mclass, mhandle; String ccomandset[] = new String[sz]; sz = 0; for (String[] ccset : ccomands) @@ -243,30 +240,16 @@ public class MouseOverStructureListener extends JSFunctionExec implements System.arraycopy(ccset, 0, ccomandset, sz, ccset.length); sz += ccset.length; } - if (jvlite.isJsMessageSetChanged( - mclass = "colourstruct", - mhandle = ((jalview.appletgui.AlignmentPanel) source).av - .getViewId(), ccomandset)) + String mclass = "colourstruct"; + String mhandle = vp.getViewId(); + if (isJsMessageSetChanged(mclass, mhandle, ccomandset, jvlite)) { - jvlite.setJsMessageSet(mclass, mhandle, ccomandset); + setJsMessageSet(mclass, mhandle, ccomandset, jvlite); // and notify javascript handler - String st[] = new String[] { - "colourstruct", - "" + ((jalview.appletgui.AlignmentPanel) source).av.getViewId(), - "" + ccomandset.length, - jvlite.arrayToSeparatorList(pdbfn.toArray(new String[pdbfn - .size()])) }; - try - { - executeJavascriptFunction(true, _listenerfn, st); - } catch (Exception ex) - { - System.err.println("Couldn't execute callback with " - + _listenerfn + " using args { " + st[0] + ", " + st[1] - + ", " + st[2] + "," + st[3] + "}"); // + ","+st[4]+"\n"); - ex.printStackTrace(); - - } + String st[] = new String[] { mclass, mhandle, + "" + ccomandset.length, jvlite.arrayToSeparatorList( + pdbfn.toArray(new String[pdbfn.size()])) }; + executeJavascriptFunction(true, st); } /* * new Thread(new Runnable() { public void run() { // and send to @@ -283,6 +266,7 @@ public class MouseOverStructureListener extends JSFunctionExec implements */ } + jvlite.updateColoursFromMouseOver(source, this); } @Override @@ -298,12 +282,6 @@ public class MouseOverStructureListener extends JSFunctionExec implements return _listenerfn; } - public void finalise() - { - jvlite = null; - super.finalize(); - } - @Override public void releaseReferences(Object svl) { @@ -318,4 +296,19 @@ public class MouseOverStructureListener extends JSFunctionExec implements return true; } + public void executeJavascriptFunction(boolean b, String[] st) + { + try + { + executeJavascriptFunction(true, _listenerfn, st); + } catch (Exception ex) + { + System.err.println("Couldn't execute callback with " + _listenerfn + + " using args { " + st[0] + ", " + st[1] + ", " + st[2] + "," + + st[3] + "}"); // + ","+st[4]+"\n"); + ex.printStackTrace(); + + } + } + }