X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fstructure%2FStructureSelectionManager.java;h=35e0ea528872ec706ed2384ce077ea3ad6c71e5a;hb=9c00e25bfdf274009a471eba895f39e2fac4c0ac;hp=880f72a419a63f803a515fd92faf4fd5e86b5166;hpb=a0a45f042ee77368a0ff6c82caccb1b93d9e0f72;p=jalview.git diff --git a/src/jalview/structure/StructureSelectionManager.java b/src/jalview/structure/StructureSelectionManager.java index 880f72a..35e0ea5 100644 --- a/src/jalview/structure/StructureSelectionManager.java +++ b/src/jalview/structure/StructureSelectionManager.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle * * This file is part of Jalview. * @@ -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); } } } @@ -792,13 +797,24 @@ public class StructureSelectionManager */ public static void release(StructureSelectionManagerProvider jalviewLite) { - StructureSelectionManager mnger=(instances.get(jalviewLite)); - if (mnger!=null) +// synchronized (instances) { - instances.remove(jalviewLite); - try { - mnger.finalize(); - } catch (Throwable x){}; + if (instances == null) + { + return; + } + StructureSelectionManager mnger = (instances.get(jalviewLite)); + if (mnger != null) + { + instances.remove(jalviewLite); + try + { + mnger.finalize(); + } catch (Throwable x) + { + } + ; + } } }