added PropertyChangeListeners for alignviewport.alignment.sequences
[jalview.git] / src / jalview / gui / AlignFrame.java
index ac9aa91..3bf43f0 100755 (executable)
@@ -26,7 +26,7 @@ import jalview.io.*;
 import jalview.jbgui.*;
 import jalview.schemes.*;
 import jalview.ws.*;
-
+import java.beans.PropertyChangeEvent;
 
 public class AlignFrame extends GAlignFrame
 {
@@ -254,13 +254,13 @@ public class AlignFrame extends GAlignFrame
             viewport.alignment.deleteSequence(i);
         }
       }
+      viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());
+      updateEditMenuBar();
 
-       updateEditMenuBar();
-
-       viewport.updateConsensus();
-       viewport.updateConservation();
-       alignPanel.repaint();
-   }
+      viewport.updateConsensus();
+      viewport.updateConservation();
+      alignPanel.repaint();
+  }
 
   public void moveSelectedSequences(boolean up)
   {
@@ -419,6 +419,7 @@ public class AlignFrame extends GAlignFrame
 
   protected void delete_actionPerformed(ActionEvent e)
   {
+    boolean seqsdeleted=false;
     addHistoryItem(new HistoryItem("Delete Sequences", viewport.alignment, HistoryItem.HIDE));
 
     if (viewport.getSelectionGroup() == null)
@@ -431,14 +432,18 @@ public class AlignFrame extends GAlignFrame
        int index = viewport.getAlignment().findIndex(seq);
        seq.deleteChars(sg.getStartRes(),sg.getEndRes()+1);
 
-       if(seq.getSequence().length()<1)
-          viewport.getAlignment().deleteSequence(seq);
-      else
-          viewport.getAlignment().getSequences().setElementAt(seq, index);
+       if(seq.getSequence().length()<1) {
+         seqsdeleted=true;
+         viewport.getAlignment().deleteSequence(seq);
+        } else {
+         viewport.getAlignment().getSequences().setElementAt(seq, index);
+       }
      }
 
      viewport.setSelectionGroup(null);
      viewport.alignment.deleteGroup(sg);
+     if (seqsdeleted)
+       viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());
      viewport.resetSeqLimits( alignPanel.seqPanel.seqCanvas.getHeight());
      if(viewport.getAlignment().getHeight()<1)
      try
@@ -447,9 +452,8 @@ public class AlignFrame extends GAlignFrame
      }catch(Exception ex){}
    viewport.updateConservation();
    viewport.updateConsensus();
-     alignPanel.repaint();
-
-  }
+   alignPanel.repaint();
+ }
 
 
   protected void deleteGroups_actionPerformed(ActionEvent e)
@@ -1137,7 +1141,17 @@ public class AlignFrame extends GAlignFrame
           sort.remove(sortByTreeMenu);
       };
     });
+    viewport.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
+      public void propertyChange(PropertyChangeEvent evt)
+      {
+        if (evt.getPropertyName().equals("alignment")) {
+          treePanel.getTree().UpdatePlaceHolders( (Vector) evt.getNewValue());
+          treePanel.repaint();
+        }
+      }
 
+    }
+    );
   }