X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FSequenceGroup.java;fp=src%2Fjalview%2Fdatamodel%2FSequenceGroup.java;h=06cdec48bdff0ad6e88166a700a239ce70fe228d;hb=9a72e919f5f39f03f62d384a907ade3e279d884e;hp=46c802f9c4e17a108524c35ea802b78e162a50fe;hpb=8f11fde42942229be12283a3b82ac2405dbbdd8f;p=jalview.git diff --git a/src/jalview/datamodel/SequenceGroup.java b/src/jalview/datamodel/SequenceGroup.java index 46c802f..06cdec4 100755 --- a/src/jalview/datamodel/SequenceGroup.java +++ b/src/jalview/datamodel/SequenceGroup.java @@ -27,6 +27,8 @@ import jalview.renderer.ResidueShaderI; import jalview.schemes.ColourSchemeI; import java.awt.Color; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -39,6 +41,26 @@ import java.util.Map; */ public class SequenceGroup implements AnnotatedCollectionI { + // TODO ideally this event notification functionality should be separated into + // a + // subclass of ViewportProperties similarly to ViewportRanges. Done here as + // quick fix for JAL-2665 + public static final String SEQ_GROUP_CHANGED = "Sequence group changed"; + + protected PropertyChangeSupport changeSupport = new PropertyChangeSupport( + this); + + public void addPropertyChangeListener(PropertyChangeListener listener) + { + changeSupport.addPropertyChangeListener(listener); + } + + public void removePropertyChangeListener(PropertyChangeListener listener) + { + changeSupport.removePropertyChangeListener(listener); + } + // end of event notification functionality initialisation + String groupName; String description; @@ -495,7 +517,10 @@ public class SequenceGroup implements AnnotatedCollectionI { if (s != null && !sequences.contains(s)) { + List before = sequences; sequences.add(s); + changeSupport.firePropertyChange(SEQ_GROUP_CHANGED, before, + sequences); } if (recalc) @@ -688,7 +713,10 @@ public class SequenceGroup implements AnnotatedCollectionI { synchronized (sequences) { + List before = sequences; sequences.remove(s); + changeSupport.firePropertyChange(SEQ_GROUP_CHANGED, before, + sequences); if (recalc) { @@ -725,7 +753,9 @@ public class SequenceGroup implements AnnotatedCollectionI */ public void setStartRes(int i) { + int before = startRes; startRes = i; + changeSupport.firePropertyChange(SEQ_GROUP_CHANGED, before, startRes); } /** @@ -735,7 +765,9 @@ public class SequenceGroup implements AnnotatedCollectionI */ public void setEndRes(int i) { + int before = endRes; endRes = i; + changeSupport.firePropertyChange(SEQ_GROUP_CHANGED, before, endRes); } /** @@ -1344,7 +1376,10 @@ public class SequenceGroup implements AnnotatedCollectionI { synchronized (sequences) { + List before = sequences; sequences.clear(); + changeSupport.firePropertyChange(SEQ_GROUP_CHANGED, before, + sequences); } }