Ejemplo n.º 1
0
 @SuppressWarnings("IOResourceOpenedButNotSafelyClosed")
 public static VirtualFile flushWindows(TaskFile taskFile, VirtualFile file) {
   VirtualFile taskDir = file.getParent();
   VirtualFile fileWindows = null;
   final Document document = FileDocumentManager.getInstance().getDocument(file);
   if (document == null) {
     LOG.debug("Couldn't flush windows");
     return null;
   }
   if (taskDir != null) {
     String name = file.getNameWithoutExtension() + "_windows";
     PrintWriter printWriter = null;
     try {
       fileWindows = taskDir.createChildData(taskFile, name);
       printWriter = new PrintWriter(new FileOutputStream(fileWindows.getPath()));
       for (TaskWindow taskWindow : taskFile.getTaskWindows()) {
         if (!taskWindow.isValid(document)) {
           continue;
         }
         int start = taskWindow.getRealStartOffset(document);
         String windowDescription =
             document.getText(new TextRange(start, start + taskWindow.getLength()));
         printWriter.println("#study_plugin_window = " + windowDescription);
       }
       ApplicationManager.getApplication()
           .runWriteAction(
               new Runnable() {
                 @Override
                 public void run() {
                   FileDocumentManager.getInstance().saveDocument(document);
                 }
               });
     } catch (IOException e) {
       LOG.error(e);
     } finally {
       closeSilently(printWriter);
       synchronize();
     }
   }
   return fileWindows;
 }