+ 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);
+ }