Add remove seq from multiple views, must fire alignmentChange from originating source
[jalview.git] / src / jalview / appletgui / AlignFrame.java
index ff7646f..e99c27f 100755 (executable)
@@ -700,29 +700,68 @@ public void itemStateChanged(ItemEvent evt)
     }\r
   }\r
 \r
+  /**\r
+   * DOCUMENT ME!\r
+   *\r
+   * @param e DOCUMENT ME!\r
+   */\r
   protected void undoMenuItem_actionPerformed()\r
   {\r
     CommandI command = (CommandI)viewport.historyList.pop();\r
     viewport.redoList.push(command);\r
     command.undoCommand();\r
 \r
-    viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null;\r
+    AlignViewport originalSource = getOriginatingSource(command);\r
+\r
+    originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null;\r
     updateEditMenuBar();\r
-    viewport.firePropertyChange("alignment", null,\r
-                                viewport.getAlignment().getSequences());\r
+    originalSource.firePropertyChange("alignment", null,null);\r
   }\r
 \r
+  /**\r
+   * DOCUMENT ME!\r
+   *\r
+   * @param e DOCUMENT ME!\r
+   */\r
   protected void redoMenuItem_actionPerformed()\r
   {\r
     CommandI command = (CommandI) viewport.redoList.pop();\r
     viewport.historyList.push(command);\r
     command.doCommand();\r
-    viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns()!=null;\r
+\r
+    AlignViewport originalSource = getOriginatingSource(command);\r
+    originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns()!=null;\r
 \r
     updateEditMenuBar();\r
-    viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences());\r
+    originalSource.firePropertyChange("alignment", null, null);\r
   }\r
 \r
+  AlignViewport getOriginatingSource(CommandI command)\r
+  {\r
+    AlignViewport originalSource = viewport;\r
+    //For sequence removal and addition, we need to fire\r
+   //the property change event FROM the viewport where the\r
+   //original alignment was altered\r
+    if (command instanceof EditCommand)\r
+    {\r
+      EditCommand editCommand = (EditCommand) command;\r
+      AlignmentI al = editCommand.getAlignment();\r
+      Vector comps = (Vector) PaintRefresher.components\r
+          .get(viewport.getSequenceSetId());\r
+      for (int i = 0; i < comps.size(); i++)\r
+      {\r
+        if (comps.elementAt(i) instanceof AlignmentPanel)\r
+        {\r
+          if (al == ( (AlignmentPanel) comps.elementAt(i)).av.alignment)\r
+          {\r
+            originalSource = ( (AlignmentPanel) comps.elementAt(i)).av;\r
+            break;\r
+          }\r
+        }\r
+      }\r
+    }\r
+    return originalSource;\r
+  }\r
 \r
   public void moveSelectedSequences(boolean up)\r
   {\r