efficiency, and ensure mouseover messages originating from a source are not broadcast...
authorjprocter <jprocter@compbio.dundee.ac.uk>
Fri, 2 Mar 2012 12:23:06 +0000 (12:23 +0000)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Fri, 2 Mar 2012 12:23:06 +0000 (12:23 +0000)
src/jalview/structure/StructureSelectionManager.java

index 870a800..35e0ea5 100644 (file)
@@ -433,9 +433,14 @@ public class StructureSelectionManager
     int atomNo = 0;
     for (int i = 0; i < listeners.size(); i++)
     {
-      if (listeners.elementAt(i) instanceof StructureListener)
+      Object listener=listeners.elementAt(i);
+      if (listener==source)
       {
-        sl = (StructureListener) listeners.elementAt(i);
+        continue;
+      }
+      if (listener instanceof StructureListener)
+      {
+        sl = (StructureListener) listener;
         if (mappings == null)
         {
           continue;
@@ -458,7 +463,7 @@ public class StructureSelectionManager
       else
       {
         if (relaySeqMappings && hasSequenceListeners
-                && listeners.elementAt(i) instanceof SequenceListener)
+                && listener instanceof SequenceListener)
         {
           // DEBUG
           // System.err.println("relay Seq " + seq.getDisplayId(false) + " " +
@@ -493,11 +498,11 @@ public class StructureSelectionManager
           }
           if (hasSequenceListeners)
           {
-            ((SequenceListener) listeners.elementAt(i))
+            ((SequenceListener) listener)
                     .highlightSequence(results);
           }
         }
-        else if (listeners.elementAt(i) instanceof VamsasListener
+        else if (listener instanceof VamsasListener
                 && !handlingVamsasMo)
         {
           // DEBUG
@@ -506,11 +511,11 @@ public class StructureSelectionManager
           // index);
           // pass the mouse over and absolute position onto the
           // VamsasListener(s)
-          ((VamsasListener) listeners.elementAt(i)).mouseOver(seq,
+          ((VamsasListener) listener).mouseOver(seq,
                   indexpos, source);
         }
-        else if(listeners.elementAt(i) instanceof SecondaryStructureListener){
-               ((SecondaryStructureListener) listeners.elementAt(i)).mouseOverSequence(seq,indexpos);
+        else if(listener instanceof SecondaryStructureListener){
+               ((SecondaryStructureListener) listener).mouseOverSequence(seq,indexpos);
         }
       }
     }