Application tools should save settings

This commit is contained in:
Konstantin Bulenkov
2012-05-05 21:39:01 +02:00
parent 42687e97fe
commit da70363cc7
4 changed files with 20 additions and 10 deletions
@@ -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);
}
@@ -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();
}
}
}
@@ -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();
}
}
@@ -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);
}
}
}
});