From 8f321966210e3ebf658a5e6ed894f01856601c7f Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Tue, 21 Feb 2012 16:14:34 +0100 Subject: [PATCH] support for zip files in dir diff --- .../openapi/diff/actions/CompareJarsAction.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/actions/CompareJarsAction.java b/platform/platform-impl/src/com/intellij/openapi/diff/actions/CompareJarsAction.java index c6ff42153029..19d371db26b6 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/actions/CompareJarsAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/actions/CompareJarsAction.java @@ -42,21 +42,21 @@ public class CompareJarsAction extends AnAction { if (project != null && files != null) { VirtualFileDiffElement src = null; VirtualFileDiffElement trg = null; - if (files.length == 2 && isJar(files[0]) && isJar(files[1])) { + if (files.length == 2 && isJarOrZip(files[0]) && isJarOrZip(files[1])) { src = new JarFileDiffElement(files[0]); trg = new JarFileDiffElement(files[1]); - } else if (files.length == 1 && isJar(files[0])) { + } else if (files.length == 1 && isJarOrZip(files[0])) { src = new JarFileDiffElement(files[0]); final FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, true, true, false, false) { @Override public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) { return file.isDirectory() - || (!file.isDirectory() && JarFileSystem.PROTOCOL.equalsIgnoreCase(file.getExtension())); + || (!file.isDirectory() && isJarOrZip(file)); } }; final VirtualFile[] result = FileChooserFactory.getInstance() .createFileChooser(descriptor, project).choose(project.getBaseDir(), project); - if (result.length == 1 && result[0] != null && isJar(result[0])) { + if (result.length == 1 && result[0] != null && isJarOrZip(result[0])) { trg = new JarFileDiffElement(result[0]); } } @@ -71,10 +71,10 @@ public class CompareJarsAction extends AnAction { public void update(AnActionEvent e) { final VirtualFile[] files = e.getData(PlatformDataKeys.VIRTUAL_FILE_ARRAY); if (files != null && files.length > 0 && files.length < 3) { - if (isJar(files[0]) && (files.length == 1 || isJar(files[1]))) { + if (isJarOrZip(files[0]) && (files.length == 1 || isJarOrZip(files[1]))) { e.getPresentation().setEnabled(true); e.getPresentation().setVisible(true); - e.getPresentation().setText(files.length == 1 ? "Compare Jar File with..." : "Compare Jar Files"); + e.getPresentation().setText(files.length == 1 ? "Compare Archive File with..." : "Compare Archives"); return; } } @@ -83,7 +83,8 @@ public class CompareJarsAction extends AnAction { e.getPresentation().setVisible(false); } - private static boolean isJar(VirtualFile file) { - return JarFileSystem.PROTOCOL.equalsIgnoreCase(file.getExtension()); + private static boolean isJarOrZip(VirtualFile file) { + final String ext = file.getExtension(); + return JarFileSystem.PROTOCOL.equalsIgnoreCase(ext) || "zip".equalsIgnoreCase(ext); } }