mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs-log] if a model with zero rows is set (eg after initializing new repo without any commits) wait until some commits appear and init column sizes only then IDEA-135308
This commit is contained in:
@@ -57,10 +57,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import sun.swing.table.DefaultTableCellHeaderRenderer;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.CellEditorListener;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import javax.swing.event.TableModelEvent;
|
||||
import javax.swing.event.*;
|
||||
import javax.swing.table.*;
|
||||
import java.awt.*;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
@@ -86,6 +83,14 @@ public class VcsLogGraphTable extends JBTable implements TypeSafeDataProvider, C
|
||||
private final GraphCommitCellRender myGraphCommitCellRender;
|
||||
private final MyDummyTableCellEditor myDummyEditor = new MyDummyTableCellEditor();
|
||||
@NotNull private final TableCellRenderer myDummyRenderer = new DefaultTableCellRenderer();
|
||||
private final TableModelListener myColumnSizeInitializer = new TableModelListener() {
|
||||
@Override
|
||||
public void tableChanged(TableModelEvent e) {
|
||||
if (initColumnSize()) {
|
||||
getModel().removeTableModelListener(this);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private boolean myColumnsSizeInitialized = false;
|
||||
|
||||
@@ -132,14 +137,24 @@ public class VcsLogGraphTable extends JBTable implements TypeSafeDataProvider, C
|
||||
@Override
|
||||
public void setModel(@NotNull TableModel model) {
|
||||
super.setModel(model);
|
||||
// initialize sizes once, when the real non-empty model is set
|
||||
if (!myColumnsSizeInitialized && model.getRowCount() > 0) {
|
||||
if (getModel().getRowCount() > 0) {
|
||||
initColumnSize();
|
||||
}
|
||||
else {
|
||||
model.addTableModelListener(myColumnSizeInitializer);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean initColumnSize() {
|
||||
if (!myColumnsSizeInitialized && getModel().getRowCount() > 0) {
|
||||
myColumnsSizeInitialized = true;
|
||||
setColumnPreferredSize();
|
||||
setAutoCreateColumnsFromModel(false); // otherwise sizes are recalculated after each TableColumn re-initialization
|
||||
|
||||
getColumnModel().getColumn(GraphTableModel.ROOT_COLUMN).setHeaderRenderer(new RootHeaderRenderer());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void setColumnPreferredSize() {
|
||||
|
||||
Reference in New Issue
Block a user