mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
diff: commander: mirgate to new diff
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="openapi" />
|
||||
<orderEntry type="module" module-name="java-impl" />
|
||||
<orderEntry type="module" module-name="diff-impl" />
|
||||
</component>
|
||||
<component name="copyright">
|
||||
<Base>
|
||||
|
||||
@@ -29,11 +29,11 @@ import com.intellij.openapi.components.PersistentStateComponent;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.components.State;
|
||||
import com.intellij.openapi.components.Storage;
|
||||
import com.intellij.openapi.diff.actions.CompareFiles;
|
||||
import com.intellij.openapi.keymap.KeymapManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Splitter;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.diff.actions.CompareFilesAction;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.openapi.wm.FocusWatcher;
|
||||
@@ -493,7 +493,7 @@ public class Commander extends JPanel implements PersistentStateComponent<Elemen
|
||||
final Object element = parentElement.getValue();
|
||||
return element instanceof PsiElement && ((PsiElement)element).isValid()? element : null;
|
||||
}
|
||||
else if (CompareFiles.DIFF_REQUEST.is(dataId)) {
|
||||
else if (CompareFilesAction.DIFF_REQUEST.is(dataId)) {
|
||||
PsiElement primary = getActivePanel().getSelectedElement();
|
||||
PsiElement secondary = getInactivePanel().getSelectedElement();
|
||||
if (primary != null && secondary != null &&
|
||||
|
||||
@@ -16,12 +16,19 @@
|
||||
package com.intellij.ide.commander;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.diff.*;
|
||||
import com.intellij.openapi.diff.DiffBundle;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.diff.actions.DocumentFragmentContent;
|
||||
import com.intellij.openapi.util.diff.contents.DiffContent;
|
||||
import com.intellij.openapi.util.diff.contents.DocumentContent;
|
||||
import com.intellij.openapi.util.diff.impl.DiffContentFactory;
|
||||
import com.intellij.openapi.util.diff.requests.DiffRequest;
|
||||
import com.intellij.openapi.util.diff.requests.SimpleDiffRequest;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.util.text.ElementPresentation;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
@@ -34,25 +41,26 @@ public class PsiDiffContentFactory {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static DiffContent fromPsiElement(PsiElement psiElement) {
|
||||
private static DiffContent fromPsiElement(@NotNull PsiElement psiElement) {
|
||||
if (psiElement instanceof PsiFile) {
|
||||
return DiffContent.fromFile(psiElement.getProject(), ((PsiFile)psiElement).getVirtualFile());
|
||||
} else if (psiElement instanceof PsiDirectory) {
|
||||
return DiffContent.fromFile(psiElement.getProject(), ((PsiDirectory)psiElement).getVirtualFile());
|
||||
return DiffContentFactory.create(psiElement.getProject(), ((PsiFile)psiElement).getVirtualFile());
|
||||
}
|
||||
else if (psiElement instanceof PsiDirectory) {
|
||||
return DiffContentFactory.create(psiElement.getProject(), ((PsiDirectory)psiElement).getVirtualFile());
|
||||
}
|
||||
PsiFile containingFile = psiElement.getContainingFile();
|
||||
if (containingFile == null) {
|
||||
String text = psiElement.getText();
|
||||
return text != null ? new SimpleContent(text) : null;
|
||||
if (text == null) return null;
|
||||
return DiffContentFactory.create(text, psiElement.getLanguage().getAssociatedFileType());
|
||||
}
|
||||
DiffContent wholeFileContent = DiffContent.fromFile(psiElement.getProject(), containingFile.getVirtualFile());
|
||||
if (wholeFileContent == null || wholeFileContent.getDocument() == null) return null;
|
||||
Project project = psiElement.getProject();
|
||||
return new FragmentContent(wholeFileContent, psiElement.getTextRange(), project);
|
||||
DocumentContent wholeFileContent = DiffContentFactory.createDocument(psiElement.getProject(), containingFile.getVirtualFile());
|
||||
if (wholeFileContent == null) return null;
|
||||
return new DocumentFragmentContent(psiElement.getProject(), wholeFileContent, psiElement.getTextRange());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static SimpleDiffRequest comparePsiElements(PsiElement psiElement1, PsiElement psiElement2) {
|
||||
public static DiffRequest comparePsiElements(@NotNull PsiElement psiElement1, @NotNull PsiElement psiElement2) {
|
||||
if (!psiElement1.isValid() || !psiElement2.isValid()) return null;
|
||||
Project project = psiElement1.getProject();
|
||||
LOG.assertTrue(project == psiElement2.getProject());
|
||||
@@ -61,11 +69,9 @@ public class PsiDiffContentFactory {
|
||||
if (content1 == null || content2 == null) return null;
|
||||
final ElementPresentation presentation1 = ElementPresentation.forElement(psiElement1);
|
||||
final ElementPresentation presentation2 = ElementPresentation.forElement(psiElement2);
|
||||
String title = DiffBundle.message("diff.element.qualified.name.vs.element.qualified.name.dialog.title",
|
||||
presentation1.getQualifiedName(), presentation2.getQualifiedName());
|
||||
SimpleDiffRequest diffRequest = new SimpleDiffRequest(project, title);
|
||||
diffRequest.setContents(content1, content2);
|
||||
diffRequest.setContentTitles(presentation1.getQualifiedName(), presentation2.getQualifiedName());
|
||||
return diffRequest;
|
||||
String title = DiffBundle
|
||||
.message("diff.element.qualified.name.vs.element.qualified.name.dialog.title",
|
||||
presentation1.getQualifiedName(), presentation2.getQualifiedName());
|
||||
return new SimpleDiffRequest(title, content1, content2, presentation1.getQualifiedName(), presentation2.getQualifiedName());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user