public void openFiles() {
   if (mySplittersElement != null) {
     Ref<EditorWindow> currentWindow = new Ref<EditorWindow>();
     final JPanel comp = readExternalPanel(mySplittersElement, getTopPanel(), currentWindow);
     if (comp != null) {
       removeAll();
       add(comp, BorderLayout.CENTER);
       mySplittersElement = null;
     }
     // clear empty splitters
     for (EditorWindow window : getWindows()) {
       if (window.getEditors().length == 0) {
         for (EditorWindow sibling : window.findSiblings()) {
           sibling.unsplit(false);
         }
       }
     }
     if (!currentWindow.isNull()) {
       setCurrentWindow(currentWindow.get(), true);
     }
   }
 }
 void closeFile(VirtualFile file, boolean moveFocus) {
   final List<EditorWindow> windows = findWindows(file);
   if (!windows.isEmpty()) {
     final VirtualFile nextFile = findNextFile(file);
     for (final EditorWindow window : windows) {
       LOG.assertTrue(window.getSelectedEditor() != null);
       window.closeFile(file, false, moveFocus);
       if (window.getTabCount() == 0 && nextFile != null && myManager.getProject().isOpen()) {
         EditorWithProviderComposite newComposite = myManager.newEditorComposite(nextFile);
         window.setEditor(newComposite, moveFocus); // newComposite can be null
       }
     }
     // cleanup windows with no tabs
     for (final EditorWindow window : windows) {
       if (window.isDisposed()) {
         // call to window.unsplit() which might make its sibling disposed
         continue;
       }
       if (window.getTabCount() == 0) {
         window.unsplit(false);
       }
     }
   }
 }