From: jprocter Date: Sun, 17 Jun 2007 13:08:15 +0000 (+0000) Subject: vamsas mouseOvers X-Git-Tag: Release_2_4~367 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=b517fc8871278d128b0e172d607d80c83c1cd908;p=jalview.git vamsas mouseOvers --- diff --git a/src/jalview/gui/VamsasApplication.java b/src/jalview/gui/VamsasApplication.java index cead1e3..5ede8fe 100644 --- a/src/jalview/gui/VamsasApplication.java +++ b/src/jalview/gui/VamsasApplication.java @@ -3,25 +3,31 @@ */ package jalview.gui; +import jalview.bin.Cache; +import jalview.datamodel.SequenceI; +import jalview.io.VamsasAppDatastore; +import jalview.structure.StructureSelectionManager; +import jalview.structure.VamsasListener; + import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; import java.util.Hashtable; import java.util.IdentityHashMap; -import java.util.Vector; -import java.util.jar.JarOutputStream; import javax.swing.JInternalFrame; -import jalview.bin.Cache; -import jalview.io.VamsasAppDatastore; - -import uk.ac.vamsas.client.*; -import uk.ac.vamsas.*; -import uk.ac.vamsas.objects.*; +import uk.ac.vamsas.client.ClientHandle; +import uk.ac.vamsas.client.IClient; +import uk.ac.vamsas.client.IClientDocument; +import uk.ac.vamsas.client.NoDefaultSessionException; +import uk.ac.vamsas.client.UserHandle; +import uk.ac.vamsas.client.VorbaId; +import uk.ac.vamsas.client.picking.IMessageHandler; +import uk.ac.vamsas.client.picking.IPickManager; +import uk.ac.vamsas.client.picking.Message; +import uk.ac.vamsas.client.picking.MouseOverMessage; import uk.ac.vamsas.objects.core.Entry; /** * @author jimp @@ -277,16 +283,43 @@ public class VamsasApplication Cache.log.debug("Updating jalview from changed vamsas document."); disableGui(true); try { + long time = System.currentTimeMillis(); IClientDocument cdoc = vclient.getClientDocument(); + if (Cache.log.isDebugEnabled()) + { + Cache.log.debug("Time taken to get ClientDocument = "+(System.currentTimeMillis()-time)); + time = System.currentTimeMillis(); + } if (fromJalview) { this.updateVamsasDocument(cdoc); + if (Cache.log.isDebugEnabled()) + { + Cache.log.debug("Time taken to update Vamsas Document from jalview\t= "+(System.currentTimeMillis()-time)); + time = System.currentTimeMillis(); + } cdoc.setVamsasRoots(cdoc.getVamsasRoots()); + if (Cache.log.isDebugEnabled()) + { + Cache.log.debug("Time taken to set Document Roots\t\t= "+(System.currentTimeMillis()-time)); + time = System.currentTimeMillis(); + } } else { updateJalview(cdoc); + if (Cache.log.isDebugEnabled()) + { + Cache.log.debug("Time taken to update Jalview from vamsas document Roots\t= "+(System.currentTimeMillis()-time)); + time = System.currentTimeMillis(); + } + } vclient.updateDocument(cdoc); + if (Cache.log.isDebugEnabled()) + { + Cache.log.debug("Time taken to update Session Document\t= "+(System.currentTimeMillis()-time)); + time = System.currentTimeMillis(); + } cdoc=null; } catch (Exception ee) { System.err.println("Exception whilst updating :"); @@ -313,6 +346,7 @@ public class VamsasApplication Desktop.instance.setVamsasUpdate(b); } private boolean joinedSession=false; + private VamsasListener picker=null; private void startSession() { if (inSession()) @@ -327,6 +361,56 @@ public class VamsasApplication Cache.log.error("Failed to join vamsas session.",e); vclient=null; } + try { + final IPickManager pm = vclient.getPickManager(); + final StructureSelectionManager ssm = StructureSelectionManager.getStructureSelectionManager(); + pm.registerMessageHandler(new IMessageHandler() { + String last=null; + public void handleMessage(Message message) + { + if (message instanceof MouseOverMessage && vobj2jv!=null) + { + MouseOverMessage mm = (MouseOverMessage) message; + String mstring = mm.getVorbaID()+" "+mm.getPosition(); + if (last!=null && mstring.equals(last)) + { + return; + } + Object jvobj = vobj2jv.get(mm.getVorbaID()); + if (jvobj != null && jvobj instanceof SequenceI) + { + last = mstring; + // Cache.log.debug("Handling Mouse over "+mm.getVorbaID()+" bound to "+jvobj+" at "+mm.getPosition()); + // position is in sequence or in aligned sequence ??????? + ssm.mouseOverVamsasSequence((SequenceI) jvobj, mm.getPosition()); + } + } + } + }); + picker = new VamsasListener() { + SequenceI last=null; + int i=-1; + public void mouseOver(SequenceI seq, int index) + { + if (seq!=last || i!=index) + { + VorbaId v = (VorbaId) jv2vobj.get(seq); + if (v!=null) + { + // Cache.log.debug("Mouse over "+v.getId()+" bound to "+seq+" at "+index); + last = seq; + i=index; + MouseOverMessage message = new MouseOverMessage(v.getId(), index); + pm.sendMessage(message); + } + } + } + }; + ssm.addStructureViewerListener(picker); // better method here + } catch (Exception e) + { + Cache.log.error("Failed to init Vamsas Picking",e); + } } } }