IDEA-80492 Run tool window: generic UI: Restore Layout places logs view into not...
authorDennis Ushakov <dennis.ushakov@gmail.com>
Sat, 28 Jan 2012 20:00:20 +0000 (00:00 +0400)
committerDennis Ushakov <dennis.ushakov@gmail.com>
Sun, 29 Jan 2012 07:51:40 +0000 (11:51 +0400)
platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java

index f15e151ab7f5b0aed5b7a95485e26b7193e43cd8..d47221459564da3b2224d1a2fbf517dc6bf1f468 100644 (file)
@@ -431,7 +431,6 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
           getStateFor(content).assignTab(getTabFor(getSelectedGrid()));
           getStateFor(content).setPlaceInGrid(myLayoutSettings.getDefaultGridPlace(content));
         } else if (contents.size() == 1 && !wasRestoring) {
-          getStateFor(content).assignTab(myLayoutSettings.createNewTab());
           getStateFor(content).setPlaceInGrid(myLayoutSettings.getDefaultGridPlace(content));
         }
         getStateFor(content).setWindow(myWindow);
@@ -616,7 +615,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
     if (myCurrentOver != null || myOriginal != null) {
       Integer forcedDropIndex = content.getUserData(RunnerLayout.DROP_INDEX);
       final int index = myTabs.getDropInfoIndex() + (myOriginal != null ? myOriginal.getTabOffsetFor(this) : 0);
-      final TabImpl tab = myLayoutSettings.getOrCreateTab(-1);
+      final TabImpl tab = myLayoutSettings.getOrCreateTab(forcedDropIndex != null ? forcedDropIndex : -1);
       final Integer defaultIndex = content.getUserData(RunnerLayout.DEFAULT_INDEX);
       tab.setDefaultIndex(defaultIndex != null ? defaultIndex : -1);
       tab.setIndex(forcedDropIndex != null ? forcedDropIndex : index);
@@ -834,7 +833,7 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
     for (TabInfo each : tabs.getTabs()) {
       final int index = tabs.getIndexOf(each);
       final TabImpl tab = getTabFor(each);
-      if (tab != null) tab.setIndex(index + offset);
+      if (tab != null) tab.setIndex(index >= 0 ? index + offset : index);
     }
     return offset + tabs.getTabCount();
   }
@@ -979,7 +978,15 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
       Collections.addAll(contents, child.myManager.getContents());
     }
     Content[] all = contents.toArray(new Content[contents.size()]);
-
+    Arrays.sort(all, new Comparator<Content>() {
+      @Override
+      public int compare(Content content, Content content1) {
+        final int i = getStateFor(content).getTab().getDefaultIndex();
+        final int i1 = getStateFor(content1).getTab().getDefaultIndex();
+        return i - i1;
+      }
+    });
+    
     setStateIsBeingRestored(true, this);
     try {
       for (RunnerContentUi child : children) {
@@ -996,7 +1003,6 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac
     for (Content each : all) {
       myManager.addContent(each);
     }
-    restoreLastUiState();
 
     updateTabsUI(true);
   }