From da70363cc761efaf8271bc592dbb6f9a9aeec85f Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Sat, 5 May 2012 21:39:01 +0200 Subject: [PATCH] Application tools should save settings --- .../openapi/diff/ApplicationStarterBase.java | 15 ++++++++++++++- .../intellij/openapi/diff/DiffApplication.java | 2 -- .../intellij/openapi/diff/MergeApplication.java | 5 +---- .../openapi/diff/impl/mergeTool/MergeVersion.java | 8 +++++--- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/platform/platform-api/src/com/intellij/openapi/diff/ApplicationStarterBase.java b/platform/platform-api/src/com/intellij/openapi/diff/ApplicationStarterBase.java index c1c934d4c33d..a3e2a9a1abe0 100644 --- a/platform/platform-api/src/com/intellij/openapi/diff/ApplicationStarterBase.java +++ b/platform/platform-api/src/com/intellij/openapi/diff/ApplicationStarterBase.java @@ -15,7 +15,9 @@ */ package com.intellij.openapi.diff; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ApplicationStarterEx; +import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.io.StreamUtil; import com.intellij.openapi.util.text.StringUtil; @@ -62,6 +64,14 @@ public abstract class ApplicationStarterBase implements ApplicationStarterEx { StringUtil.toTitleCase(getCommandName()), Messages.getErrorIcon()); } + finally { + saveAll(); + } + } + + private static void saveAll() { + FileDocumentManager.getInstance().saveAllDocuments(); + ApplicationManager.getApplication().saveSettings(); } private boolean checkArguments(String[] args) { @@ -86,13 +96,16 @@ public abstract class ApplicationStarterBase implements ApplicationStarterEx { processCommand(args); } catch (Exception e) { - System.err.println(e.getMessage()); + e.printStackTrace(); System.exit(1); } catch (Throwable t) { t.printStackTrace(); System.exit(2); } + finally { + saveAll(); + } System.exit(0); } diff --git a/platform/platform-api/src/com/intellij/openapi/diff/DiffApplication.java b/platform/platform-api/src/com/intellij/openapi/diff/DiffApplication.java index bc91b00e3c0c..ceb075a17095 100644 --- a/platform/platform-api/src/com/intellij/openapi/diff/DiffApplication.java +++ b/platform/platform-api/src/com/intellij/openapi/diff/DiffApplication.java @@ -18,7 +18,6 @@ package com.intellij.openapi.diff; import com.intellij.ide.diff.DiffElement; import com.intellij.ide.diff.DirDiffSettings; import com.intellij.openapi.application.ApplicationNamesInfo; -import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileTypes.UnknownFileType; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.vfs.VirtualFile; @@ -77,7 +76,6 @@ public class DiffApplication extends ApplicationStarterBase { SimpleDiffRequest request = SimpleDiffRequest.compareFiles(file1, file2, ProjectManager.getInstance().getDefaultProject()); request.addHint(DiffTool.HINT_SHOW_MODAL_DIALOG); DiffManager.getInstance().getIdeaDiffTool().show(request); - FileDocumentManager.getInstance().saveAllDocuments(); } } } diff --git a/platform/platform-api/src/com/intellij/openapi/diff/MergeApplication.java b/platform/platform-api/src/com/intellij/openapi/diff/MergeApplication.java index b8053f0f2dbc..2ce8927cb5c3 100644 --- a/platform/platform-api/src/com/intellij/openapi/diff/MergeApplication.java +++ b/platform/platform-api/src/com/intellij/openapi/diff/MergeApplication.java @@ -16,8 +16,6 @@ package com.intellij.openapi.diff; import com.intellij.openapi.application.ApplicationNamesInfo; -import com.intellij.openapi.fileEditor.FileDocumentManager; -import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.vfs.VirtualFile; /** @@ -43,13 +41,12 @@ public class MergeApplication extends ApplicationStarterBase { MergeRequest request = DiffRequestFactory.getInstance() .createMergeRequest(getText(left), getText(right), getText(middle), result, - ProjectManager.getInstance().getDefaultProject(), + null, ActionButtonPresentation.APPLY, ActionButtonPresentation.CANCEL_WITH_PROMPT); request.addHint(DiffTool.HINT_SHOW_MODAL_DIALOG); request.setWindowTitle("Merge"); request.setVersionTitles(new String[]{left.getPresentableUrl(), result.getPresentableUrl(), middle.getPresentableUrl()}); DiffManager.getInstance().getDiffTool().show(request); - FileDocumentManager.getInstance().saveAllDocuments(); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java index 5240d9cfca6e..83685e38baf5 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/mergeTool/MergeVersion.java @@ -76,9 +76,11 @@ public interface MergeVersion { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { setDocumentText(workingDocument, myOriginalText, DiffBundle.message("merge.init.merge.content.command.name"), project); - final UndoManager undoManager = UndoManager.getInstance(project); - if (undoManager != null) { //idea.sh merge command - undoManager.nonundoableActionPerformed(ref, false); + if (project != null) { + final UndoManager undoManager = UndoManager.getInstance(project); + if (undoManager != null) { //idea.sh merge command + undoManager.nonundoableActionPerformed(ref, false); + } } } });