*/
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
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 :");
Desktop.instance.setVamsasUpdate(b);
}
private boolean joinedSession=false;
+ private VamsasListener picker=null;
private void startSession()
{
if (inSession())
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);
+ }
}
}
}