Search in sources :

Example 16 with SimpleDiffRequest

use of com.intellij.diff.requests.SimpleDiffRequest in project intellij-community by JetBrains.

the class MemoryDiskConflictResolver method askReloadFromDisk.

boolean askReloadFromDisk(VirtualFile file, Document document) {
    String message = UIBundle.message("file.cache.conflict.message.text", file.getPresentableUrl());
    final DialogBuilder builder = new DialogBuilder();
    builder.setCenterPanel(new JLabel(message, Messages.getQuestionIcon(), SwingConstants.CENTER));
    builder.addOkAction().setText(UIBundle.message("file.cache.conflict.load.fs.changes.button"));
    builder.addCancelAction().setText(UIBundle.message("file.cache.conflict.keep.memory.changes.button"));
    builder.addAction(new AbstractAction(UIBundle.message("file.cache.conflict.show.difference.button")) {

        @Override
        public void actionPerformed(ActionEvent e) {
            final ProjectEx project = (ProjectEx) ProjectLocator.getInstance().guessProjectForFile(file);
            FileType fileType = file.getFileType();
            String fsContent = LoadTextUtil.loadText(file).toString();
            DocumentContent content1 = DiffContentFactory.getInstance().create(project, fsContent, fileType);
            DocumentContent content2 = DiffContentFactory.getInstance().create(project, document, file);
            String title = UIBundle.message("file.cache.conflict.for.file.dialog.title", file.getPresentableUrl());
            String title1 = UIBundle.message("file.cache.conflict.diff.content.file.system.content");
            String title2 = UIBundle.message("file.cache.conflict.diff.content.memory.content");
            DiffRequest request = new SimpleDiffRequest(title, content1, content2, title1, title2);
            request.putUserData(DiffUserDataKeys.GO_TO_SOURCE_DISABLE, true);
            DialogBuilder diffBuilder = new DialogBuilder(project);
            DiffRequestPanel diffPanel = DiffManager.getInstance().createRequestPanel(project, diffBuilder, diffBuilder.getWindow());
            diffPanel.setRequest(request);
            diffBuilder.setCenterPanel(diffPanel.getComponent());
            diffBuilder.setDimensionServiceKey("FileDocumentManager.FileCacheConflict");
            diffBuilder.addOkAction().setText(UIBundle.message("file.cache.conflict.save.changes.button"));
            diffBuilder.addCancelAction();
            diffBuilder.setTitle(title);
            if (diffBuilder.show() == DialogWrapper.OK_EXIT_CODE) {
                builder.getDialogWrapper().close(DialogWrapper.CANCEL_EXIT_CODE);
            }
        }
    });
    builder.setTitle(UIBundle.message("file.cache.conflict.dialog.title"));
    builder.setButtonsAlignment(SwingConstants.CENTER);
    builder.setHelpId("reference.dialogs.fileCacheConflict");
    return builder.show() == 0;
}
Also used : ProjectEx(com.intellij.openapi.project.ex.ProjectEx) SimpleDiffRequest(com.intellij.diff.requests.SimpleDiffRequest) DiffRequestPanel(com.intellij.diff.DiffRequestPanel) FileType(com.intellij.openapi.fileTypes.FileType) ActionEvent(java.awt.event.ActionEvent) DocumentContent(com.intellij.diff.contents.DocumentContent) DiffRequest(com.intellij.diff.requests.DiffRequest) SimpleDiffRequest(com.intellij.diff.requests.SimpleDiffRequest) DialogBuilder(com.intellij.openapi.ui.DialogBuilder)

Aggregations

SimpleDiffRequest (com.intellij.diff.requests.SimpleDiffRequest)16 DiffContent (com.intellij.diff.contents.DiffContent)13 NotNull (org.jetbrains.annotations.NotNull)7 DiffRequest (com.intellij.diff.requests.DiffRequest)5 DocumentContent (com.intellij.diff.contents.DocumentContent)4 Nullable (org.jetbrains.annotations.Nullable)4 FileType (com.intellij.openapi.fileTypes.FileType)3 Project (com.intellij.openapi.project.Project)3 IOException (java.io.IOException)3 DiffContentFactory (com.intellij.diff.DiffContentFactory)2 Editor (com.intellij.openapi.editor.Editor)2 Ref (com.intellij.openapi.util.Ref)2 FilePath (com.intellij.openapi.vcs.FilePath)2 VirtualFile (com.intellij.openapi.vfs.VirtualFile)2 ArrayList (java.util.ArrayList)2 JsonReader (com.google.gson.stream.JsonReader)1 DiffRequestPanel (com.intellij.diff.DiffRequestPanel)1 DiffRequestProducerException (com.intellij.diff.chains.DiffRequestProducerException)1 ErrorDiffRequest (com.intellij.diff.requests.ErrorDiffRequest)1 LoadingDiffRequest (com.intellij.diff.requests.LoadingDiffRequest)1