[vcs-log] calculate row height so that labels could nicely fit

This commit is contained in:
Julia Beliaeva
2015-08-27 17:54:12 +03:00
parent 92a54c928d
commit a0e26af3c8
2 changed files with 19 additions and 2 deletions
@@ -91,6 +91,7 @@ public class VcsLogGraphTable extends JBTable implements TypeSafeDataProvider, C
}
}
};
private final GraphCommitCellRender myGraphCommitCellRenderer;
private boolean myColumnsSizeInitialized = false;
@@ -112,12 +113,12 @@ public class VcsLogGraphTable extends JBTable implements TypeSafeDataProvider, C
super();
myUI = UI;
myLogDataHolder = logDataHolder;
myGraphCommitCellRenderer = new GraphCommitCellRender(myUI.getColorManager(), logDataHolder, myGraphCellPainter, this);
setDefaultRenderer(VirtualFile.class, new RootCellRenderer(myUI));
setDefaultRenderer(GraphCommitCell.class, new GraphCommitCellRender(myUI.getColorManager(), logDataHolder, myGraphCellPainter, this));
setDefaultRenderer(GraphCommitCell.class, myGraphCommitCellRenderer);
setDefaultRenderer(String.class, new StringCellRenderer());
setRowHeight(22);
setShowHorizontalLines(false);
setIntercellSpacing(JBUI.emptySize());
@@ -750,6 +751,11 @@ public class VcsLogGraphTable extends JBTable implements TypeSafeDataProvider, C
return myDummyEditor;
}
@Override
public int getRowHeight() {
return myGraphCommitCellRenderer.getPreferredHeight();
}
private class StringCellRenderer extends ColoredTableCellRenderer {
@Override
protected void customizeCellRenderer(JTable table, Object value, boolean selected, boolean hasFocus, int row, int column) {
@@ -49,6 +49,17 @@ public class GraphCommitCellRender extends ColoredTableCellRenderer {
myIssueLinkRenderer = new IssueLinkRenderer(dataHolder.getProject(), this);
}
@NotNull
@Override
public Dimension getPreferredSize() {
Dimension preferredSize = super.getPreferredSize();
return new Dimension(preferredSize.width, getPreferredHeight());
}
public int getPreferredHeight() {
return myLabelPainter.calculateSize("", getFontMetrics(LabelPainters.getFont())).height + 4;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);