// pairs
- public void mouseOverSequence(SequenceI seq, int index)
+ public void mouseOverSequence(SequenceI seq, int indexpos, int index)
{
boolean hasSequenceListeners = handlingVamsasMo || seqmappings != null;
SearchResults results = null;
+ if (index==-1)
+ index=seq.findPosition(indexpos);
StructureListener sl;
int atomNo = 0;
for (int i = 0; i < listeners.size(); i++)
for (int j = 0; j < mappings.length; j++)
{
- if (mappings[j].sequence == seq)
+ if (mappings[j].sequence == seq || mappings[j].sequence==seq.getDatasetSequence())
{
atomNo = mappings[j].getAtomNum(index);
// hasSequenceListeners = results.getSize() > 0;
if (handlingVamsasMo)
{
+ // maybe have to resolve seq to a dataset seqeunce...
// add in additional direct sequence and/or dataset sequence
// highlighting
results.addResult(seq, index, index);
// DEBUG
//System.err.println("Vamsas from Seq " + seq.getDisplayId(false) + " " +
// index);
- // pass the mouse over onto the VamsasListener(s)
- ((VamsasListener) listeners.elementAt(i)).mouseOver(seq, index);
+ // pass the mouse over and absolute position onto the VamsasListener(s)
+ ((VamsasListener) listeners.elementAt(i)).mouseOver(seq, indexpos);
}
}
}
* handled
*/
boolean handlingVamsasMo = false;
-
+ long lastmsg=0;
/**
* as mouseOverSequence but only route event to SequenceListeners
*
* @param sequenceI
- * @param position
+ * @param position in an alignment sequence
*/
public void mouseOverVamsasSequence(SequenceI sequenceI, int position)
{
handlingVamsasMo = true;
- mouseOverSequence(sequenceI, position);
- handlingVamsasMo = false;
+ long msg = sequenceI.hashCode()*(1+position);
+ if (lastmsg!=msg)
+ {
+ lastmsg = msg;
+ mouseOverSequence(sequenceI, position, -1);
+ }
+ handlingVamsasMo = false;
}
public Annotation[] colourSequenceFromStructure(SequenceI seq,