public EditorWindow getOrCreateCurrentWindow(final VirtualFile file) {
   final List<EditorWindow> windows = findWindows(file);
   if (getCurrentWindow() == null) {
     final Iterator<EditorWindow> iterator = myWindows.iterator();
     if (!windows.isEmpty()) {
       setCurrentWindow(windows.get(0), false);
     } else if (iterator.hasNext()) {
       setCurrentWindow(iterator.next(), false);
     } else {
       createCurrentWindow();
     }
   } else if (!windows.isEmpty()) {
     if (!windows.contains(getCurrentWindow())) {
       setCurrentWindow(windows.get(0), false);
     }
   }
   return getCurrentWindow();
 }