Renaming viewNames
authoramwaterhouse <Andrew Waterhouse>
Wed, 22 Nov 2006 14:58:49 +0000 (14:58 +0000)
committeramwaterhouse <Andrew Waterhouse>
Wed, 22 Nov 2006 14:58:49 +0000 (14:58 +0000)
src/jalview/gui/AlignFrame.java

index d891b52..3adc725 100755 (executable)
@@ -381,7 +381,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
 
       expandViews.setEnabled(true);
       gatherViews.setEnabled(true);
-      tabbedPane.addTab(ap.av.viewName==null?"Original":ap.av.viewName, ap);
+      tabbedPane.addTab(ap.av.viewName, ap);
 
       ap.setVisible(false);
     }
@@ -401,7 +401,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
     gatherViews.setEnabled(true);
     tabbedPane.setVisible(true);
     AlignmentPanel first = (AlignmentPanel) alignPanels.firstElement();
-    tabbedPane.addTab(first.av.viewName==null?"Original":first.av.viewName,first);
+    tabbedPane.addTab(first.av.viewName,first);
     this.getContentPane().add(tabbedPane, BorderLayout.CENTER);
   }
 
@@ -890,13 +890,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
         {
           int index = tabbedPane.getSelectedIndex();
 
-          tabbedPane.removeTabAt(index);
           alignPanels.removeElement(alignPanel);
           PaintRefresher.RemoveComponent(alignPanel.seqPanel.seqCanvas);
           PaintRefresher.RemoveComponent(alignPanel.idPanel.idCanvas);
           PaintRefresher.RemoveComponent(alignPanel);
           alignPanel = null;
           viewport = null;
+
+          tabbedPane.removeTabAt(index);
           tabbedPane.validate();
 
           if(index==tabbedPane.getTabCount())
@@ -1729,12 +1730,32 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener
         new Jalview2XML().copyAlignPanel(alignPanel, true);
 
     if (viewport.viewName == null)
-      viewport.viewName = "View 1";
+      viewport.viewName = "Original";
 
     newap.av.historyList = viewport.historyList;
     newap.av.redoList = viewport.redoList;
-    newap.av.viewName = "View " +
-        (Desktop.getViewCount(viewport.getSequenceSetId()) + 1);
+
+    int index = Desktop.getViewCount(viewport.getSequenceSetId());
+    String newViewName = "View " +index;
+
+    Vector comps = (Vector)PaintRefresher.components.get(viewport.getSequenceSetId());
+    Vector existingNames = new Vector();
+    for(int i=0; i<comps.size(); i++)
+    {
+      if(comps.elementAt(i) instanceof AlignmentPanel)
+      {
+        AlignmentPanel ap = (AlignmentPanel)comps.elementAt(i);
+        if(!existingNames.contains(ap.av.viewName))
+          existingNames.addElement(ap.av.viewName);
+      }
+    }
+
+    while(existingNames.contains(newViewName))
+    {
+      newViewName = "View "+ (++index);
+    }
+
+    newap.av.viewName = newViewName;
 
     addAlignmentPanel(newap, false);
 
@@ -3289,4 +3310,4 @@ public void drop(DropTargetDropEvent evt)
   {
     return viewport;
   }
-}
\ No newline at end of file
+}