mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
few major fixes for Db Diff
This commit is contained in:
@@ -22,13 +22,12 @@
|
||||
<border type="none"/>
|
||||
<children/>
|
||||
</grid>
|
||||
<scrollpane id="90582" class="com.intellij.ui.components.JBScrollPane">
|
||||
<scrollpane id="90582" class="com.intellij.ui.components.JBScrollPane" binding="myScrollPane">
|
||||
<constraints>
|
||||
<splitpane position="left"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<minimumSize width="456" height="200"/>
|
||||
<preferredSize width="456" height="200"/>
|
||||
<minimumSize width="21" height="200"/>
|
||||
</properties>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
@@ -36,8 +35,6 @@
|
||||
<constraints/>
|
||||
<properties>
|
||||
<intercellSpacing width="0" height="0"/>
|
||||
<minimumSize width="30" height="32"/>
|
||||
<preferredSize width="150" height="32"/>
|
||||
<showHorizontalLines value="false"/>
|
||||
<showVerticalLines value="false"/>
|
||||
</properties>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
+6
-7
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user