import java.util.Enumeration;
import java.util.HashMap;
import java.util.IdentityHashMap;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.Vector;
import MCview.Atom;
/*
* Set of any registered mappings between (dataset) sequences.
*/
- public Set<AlignedCodonFrame> seqmappings = new LinkedHashSet<AlignedCodonFrame>();
+ private List<AlignedCodonFrame> seqmappings = new ArrayList<AlignedCodonFrame>();
private List<CommandListener> commandListeners = new ArrayList<CommandListener>();
* the sequence that the mouse over occurred on
* @param indexpos
* the absolute position being mouseovered in seq (0 to seq.length())
- * @param index
+ * @param seqPos
* the sequence position (if -1, seq.findPosition is called to
* resolve the residue number)
*/
- public void mouseOverSequence(SequenceI seq, int indexpos, int index,
+ public void mouseOverSequence(SequenceI seq, int indexpos, int seqPos,
VamsasSource source)
{
boolean hasSequenceListeners = handlingVamsasMo
|| !seqmappings.isEmpty();
SearchResults results = null;
- if (index == -1)
+ if (seqPos == -1)
{
- index = seq.findPosition(indexpos);
+ seqPos = seq.findPosition(indexpos);
}
for (int i = 0; i < listeners.size(); i++)
{
}
if (listener instanceof StructureListener)
{
- highlightStructure((StructureListener) listener, seq, index);
+ highlightStructure((StructureListener) listener, seq, seqPos);
}
else
{
{
if (results == null)
{
- results = MappingUtils.buildSearchResults(seq, index,
+ results = MappingUtils.buildSearchResults(seq, seqPos,
seqmappings);
}
if (handlingVamsasMo)
{
- results.addResult(seq, index, index);
+ results.addResult(seq, seqPos, seqPos);
}
if (!results.isEmpty())
else if (listener instanceof SecondaryStructureListener)
{
((SecondaryStructureListener) listener).mouseOverSequence(seq,
- indexpos, index);
+ indexpos, seqPos);
}
}
}
/**
* Send suitable messages to a StructureListener to highlight atoms
- * corresponding to the given sequence position.
+ * corresponding to the given sequence position(s)
*
* @param sl
* @param seq
- * @param index
+ * @param positions
*/
- protected void highlightStructure(StructureListener sl, SequenceI seq,
- int index)
+ public void highlightStructure(StructureListener sl, SequenceI seq,
+ int... positions)
{
if (!sl.isListeningFor(seq))
{
{
if (sm.sequence == seq || sm.sequence == seq.getDatasetSequence())
{
- atomNo = sm.getAtomNum(index);
-
- if (atomNo > 0)
+ for (int index : positions)
{
- atoms.add(new AtomSpec(sm.pdbfile, sm.pdbchain, sm
- .getPDBResNum(index), atomNo));
+ atomNo = sm.getAtomNum(index);
+
+ if (atomNo > 0)
+ {
+ atoms.add(new AtomSpec(sm.pdbfile, sm.pdbchain, sm
+ .getPDBResNum(index), atomNo));
+ }
}
}
}
/**
* Add each of the given codonFrames to the stored set, if not aready present.
*
- * @param set
+ * @param mappings
*/
- public void registerMappings(Set<AlignedCodonFrame> set)
+ public void registerMappings(List<AlignedCodonFrame> mappings)
{
- if (set != null)
+ if (mappings != null)
{
- for (AlignedCodonFrame acf : set)
+ for (AlignedCodonFrame acf : mappings)
{
registerMapping(acf);
}
progressIndicator.setProgressBar(message, progressSessionId);
}
+ public List<AlignedCodonFrame> getSequenceMappings()
+ {
+ return seqmappings;
+ }
+
}