mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
jar diff in history and change lists
This commit is contained in:
@@ -32,7 +32,11 @@ public abstract class DirDiffManager {
|
||||
return ServiceManager.getService(project, DirDiffManager.class);
|
||||
}
|
||||
|
||||
public abstract void showDiff(@NotNull DiffElement dir1, @NotNull DiffElement dir2, DirDiffSettings settings, WindowListener windowListener);
|
||||
public abstract void showDiff(@NotNull DiffElement dir1, @NotNull DiffElement dir2, DirDiffSettings settings, @Nullable WindowListener windowListener);
|
||||
|
||||
public abstract void showDiff(@NotNull DiffElement dir1, @NotNull DiffElement dir2, DirDiffSettings settings);
|
||||
|
||||
public abstract void showDiff(@NotNull DiffElement dir1, @NotNull DiffElement dir2);
|
||||
|
||||
public abstract boolean canShow(@NotNull DiffElement dir1, @NotNull DiffElement dir2);
|
||||
|
||||
|
||||
+15
-1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.openapi.diff.impl.external;
|
||||
|
||||
import com.intellij.ide.diff.DiffElement;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.diff.*;
|
||||
import com.intellij.openapi.fileEditor.FileEditorProvider;
|
||||
@@ -79,6 +80,15 @@ public class BinaryDiffTool implements DiffTool {
|
||||
}
|
||||
}.show();
|
||||
return;
|
||||
} else {
|
||||
final DirDiffManager diffManager = DirDiffManager.getInstance(project);
|
||||
final DiffElement before = diffManager.createDiffElement(src);
|
||||
final DiffElement after = diffManager.createDiffElement(trg);
|
||||
|
||||
if (before != null && after != null && diffManager.canShow(after, before)) {
|
||||
diffManager.showDiff(before, after);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -111,6 +121,10 @@ public class BinaryDiffTool implements DiffTool {
|
||||
}
|
||||
|
||||
public static boolean canShow(@NotNull Project project, VirtualFile file) {
|
||||
return file != null && FileEditorProviderManager.getInstance().getProviders(project, file).length > 0;
|
||||
if (file == null) return false;
|
||||
if (FileEditorProviderManager.getInstance().getProviders(project, file).length > 0) return true;
|
||||
|
||||
final DirDiffManager diffManager = DirDiffManager.getInstance(project);
|
||||
return diffManager.createDiffElement(file) != null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,6 +62,16 @@ public class DirDiffManagerImpl extends DirDiffManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showDiff(@NotNull DiffElement dir1, @NotNull DiffElement dir2, DirDiffSettings settings) {
|
||||
showDiff(dir1, dir2, settings, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showDiff(@NotNull DiffElement dir1, @NotNull DiffElement dir2) {
|
||||
showDiff(dir1, dir2, new DirDiffSettings());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canShow(@NotNull DiffElement dir1, @NotNull DiffElement dir2) {
|
||||
return dir1.isContainer() && dir2.isContainer();
|
||||
|
||||
Reference in New Issue
Block a user