diff --git a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.form b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.form
index dde268b4b3e9..5fe7a42a6536 100644
--- a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.form
+++ b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.form
@@ -22,13 +22,12 @@
-
+
-
-
+
@@ -36,8 +35,6 @@
-
-
diff --git a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.java b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.java
index 8849338c9002..c0598d1a1de2 100644
--- a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.java
+++ b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffPanel.java
@@ -23,8 +23,8 @@ import com.intellij.openapi.diff.impl.dir.actions.DirDiffToolbarActions;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.ui.components.JBLabel;
+import com.intellij.ui.components.JBScrollPane;
import com.intellij.ui.table.JBTable;
-import com.intellij.util.Icons;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
@@ -51,6 +51,7 @@ public class DirDiffPanel {
private JPanel myActionsCenterPanel;
private JComboBox myFileFilter;
private JPanel myToolBarPanel;
+ private JBScrollPane myScrollPane;
private final DirDiffTableModel myModel;
public JLabel myErrorLabel;
private final DirDiffDialog myDialog;
@@ -59,12 +60,13 @@ public class DirDiffPanel {
private DiffElement myCurrentElement;
public DirDiffPanel(DirDiffTableModel model, DirDiffDialog dirDiffDialog, DirDiffSettings settings) {
+ mySplitPanel.setDividerLocation(0.5);
myModel = model;
myDialog = dirDiffDialog;
mySourceDirField.setText(model.getSourceDir().getPath());
myTargetDirField.setText(model.getTargetDir().getPath());
- mySourceDirLabel.setIcon(Icons.FOLDER_ICON);
- myTargetDirLabel.setIcon(Icons.FOLDER_ICON);
+ mySourceDirLabel.setIcon(model.getSourceDir().getIcon());
+ myTargetDirLabel.setIcon(model.getTargetDir().getIcon());
myTable.setModel(myModel);
final DirDiffTableCellRenderer renderer = new DirDiffTableCellRenderer(myTable);
myTable.setDefaultRenderer(Object.class, renderer);
@@ -165,9 +167,6 @@ public class DirDiffPanel {
myDiffPanel.remove(getErrorLabel());
}
- private void createUIComponents() {
- }
-
public JComponent getPanel() {
return myComponent;
}
diff --git a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableCellRenderer.java b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableCellRenderer.java
index 7eea4fc10f16..904bc326a145 100644
--- a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableCellRenderer.java
+++ b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableCellRenderer.java
@@ -18,7 +18,6 @@ package com.intellij.openapi.diff.impl.dir;
import com.intellij.openapi.vcs.FileStatus;
import com.intellij.ui.table.JBTable;
import com.intellij.util.IconUtil;
-import com.intellij.util.Icons;
import com.intellij.util.containers.HashMap;
import com.intellij.util.ui.UIUtil;
@@ -65,7 +64,7 @@ public class DirDiffTableCellRenderer extends DefaultTableCellRenderer {
}
int width = columnModel.getColumn(column).getWidth();
int height = table.getRowHeight(row);
- final BufferedImage image = getOrCreate(element.getName());
+ final BufferedImage image = getOrCreate(element.getName(), element.getIcon());
g.drawImage(image, 0, 0, width, height, offset, 0, offset + width, height, null);
}
};
@@ -92,7 +91,6 @@ public class DirDiffTableCellRenderer extends DefaultTableCellRenderer {
label.setHorizontalAlignment(CENTER);
} else if (DirDiffTableModel.COLUMN_SIZE.equals(name)) {
label.setHorizontalAlignment(RIGHT);
- label.setText(label.getText() + " ");
} else {
label.setHorizontalAlignment(LEFT);
final String text = label.getText();
@@ -110,7 +108,7 @@ public class DirDiffTableCellRenderer extends DefaultTableCellRenderer {
? FileStatus.COLOR_ADDED : FileStatus.COLOR_MODIFIED;
}
- private BufferedImage getOrCreate(String path) {
+ private BufferedImage getOrCreate(String path, Icon icon) {
final BufferedImage image = cache.get(path);
if (image != null) {
return image;
@@ -118,11 +116,12 @@ public class DirDiffTableCellRenderer extends DefaultTableCellRenderer {
final int w = myTable.getWidth();
final int h = myTable.getRowHeight();
final BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
- final Icon icon = Icons.FOLDER_ICON;
final Graphics g = img.getGraphics();
- g.drawImage(IconUtil.toImage(icon), 2, (h - icon.getIconHeight()) / 2, null);
+ if (icon != null) {
+ g.drawImage(IconUtil.toImage(icon), 2, (h - icon.getIconHeight()) / 2, null);
+ }
g.setColor(Color.BLACK);
- g.drawString(path, 2 + icon.getIconWidth() + 2, h - 2);
+ g.drawString(path, 2 + (icon == null ? 0 : icon.getIconWidth()) + 2, h - 2);
cache.put(path, img);
return img;
}
diff --git a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java
index 5c9cebd83e93..bd85826e5af5 100644
--- a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java
+++ b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java
@@ -87,9 +87,9 @@ public class DirDiffTableModel extends AbstractTableModel {
final DiffElement srcFile = mySrcPaths.get(path);
final DiffElement trgFile = myTrgPaths.get(path);
if (srcFile == null && trgFile != null) {
- myElements.add(DirDiffElement.createTargetOnly(trgFile));
+ myElements.add(trgFile.isContainer() ? DirDiffElement.createDirElement(srcFile, trgFile, path) : DirDiffElement.createTargetOnly(trgFile));
} else if (srcFile != null && trgFile == null) {
- myElements.add(DirDiffElement.createSourceOnly(srcFile));
+ myElements.add(srcFile.isContainer() ? DirDiffElement.createDirElement(srcFile, trgFile, path) : DirDiffElement.createSourceOnly(srcFile));
} else if (srcFile != null && trgFile != null) {
indicator.setText2("Comparing " + path);
if (srcFile.isContainer() && trgFile.isContainer()) {
@@ -117,15 +117,15 @@ public class DirDiffTableModel extends AbstractTableModel {
boolean prevItemIsSeparator = true;
for (int i = tmp.length - 1; i >= 0; i--) {
final boolean isSeparator = tmp[i].isSeparator();
- if (isSeparator) {
- if (prevItemIsSeparator) {
- elements.remove(i);
+ if (isSeparator) {
+ if (prevItemIsSeparator) {
+ elements.remove(i);
+ }
+ prevItemIsSeparator = true;
+ } else {
+ prevItemIsSeparator = false;
}
- prevItemIsSeparator = true;
- } else {
- prevItemIsSeparator = false;
}
- }
}
private static boolean isEqual(DiffElement file1, DiffElement file2) {