maxChain.transferRESNUMFeatures(sequence[s], null);
- int[][] mapping = new int[sequence[s].getEnd() + 2][2];
+ // allocate enough slots to store the mapping from positions in
+ // sequence[s] to the associated chain
+ int[][] mapping = new int[maxChain.sequence.getEnd() + 2][2];
int resNum = -10000;
int index = 0;
{
boolean hasSequenceListeners = handlingVamsasMo || seqmappings != null;
SearchResults results = null;
+ SequenceI lastseq = null;
+ int lastipos = -1, indexpos;
for (int i = 0; i < listeners.size(); i++)
{
if (listeners.elementAt(i) instanceof SequenceListener)
{
results = new SearchResults();
}
- int indexpos;
if (mappings != null)
{
for (int j = 0; j < mappings.length; j++)
&& mappings[j].pdbchain.equals(chain))
{
indexpos = mappings[j].getSeqPos(pdbResNum);
- results.addResult(mappings[j].sequence, indexpos, indexpos);
- // construct highlighted sequence list
- if (seqmappings != null)
+ if (lastipos != indexpos && lastseq != mappings[j].sequence)
{
+ results.addResult(mappings[j].sequence, indexpos, indexpos);
+ lastipos = indexpos;
+ lastseq = mappings[j].sequence;
+ // construct highlighted sequence list
+ if (seqmappings != null)
+ {
- Enumeration e = seqmappings.elements();
- while (e.hasMoreElements())
+ Enumeration e = seqmappings.elements();
+ while (e.hasMoreElements())
- {
- ((AlignedCodonFrame) e.nextElement()).markMappedRegion(
- mappings[j].sequence, indexpos, results);
+ {
+ ((AlignedCodonFrame) e.nextElement()).markMappedRegion(
+ mappings[j].sequence, indexpos, results);
+ }
}
}
+
}
}
}
* the sequence position (if -1, seq.findPosition is called to
* resolve the residue number)
*/
- public void mouseOverSequence(SequenceI seq, int indexpos, int index, VamsasSource source)
+ public void mouseOverSequence(SequenceI seq, int indexpos, int index,
+ VamsasSource source)
{
boolean hasSequenceListeners = handlingVamsasMo || seqmappings != null;
SearchResults results = null;
// index);
// pass the mouse over and absolute position onto the
// VamsasListener(s)
- ((VamsasListener) listeners.elementAt(i))
- .mouseOver(seq, indexpos, source);
+ ((VamsasListener) listeners.elementAt(i)).mouseOver(seq,
+ indexpos, source);
}
}
}
* @param position
* in an alignment sequence
*/
- public void mouseOverVamsasSequence(SequenceI sequenceI, int position, VamsasSource source)
+ public void mouseOverVamsasSequence(SequenceI sequenceI, int position,
+ VamsasSource source)
{
handlingVamsasMo = true;
long msg = sequenceI.hashCode() * (1 + position);