From 5b71ecc99eab2cd646125feadd1ce88842b5d507 Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Mon, 27 Jul 2015 12:29:32 +0300 Subject: [PATCH] Refactored JBTable - methods extracted --- .../src/com/intellij/ui/table/JBTable.java | 50 ++++++++++++------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/platform/platform-api/src/com/intellij/ui/table/JBTable.java b/platform/platform-api/src/com/intellij/ui/table/JBTable.java index 762eef1dea8e..4ce8c9bc4466 100644 --- a/platform/platform-api/src/com/intellij/ui/table/JBTable.java +++ b/platform/platform-api/src/com/intellij/ui/table/JBTable.java @@ -94,12 +94,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component final TableModelListener modelListener = new TableModelListener() { @Override public void tableChanged(@NotNull final TableModelEvent e) { - if (!myRowHeightIsExplicitlySet) { - myRowHeight = -1; - } - if (e.getType() == TableModelEvent.DELETE && isEmpty() || e.getType() == TableModelEvent.INSERT && !isEmpty()) { - repaintViewport(); - } + onTableChanged(e); } }; @@ -123,6 +118,15 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component new MyCellEditorRemover(); } + protected void onTableChanged(@NotNull TableModelEvent e) { + if (!myRowHeightIsExplicitlySet) { + myRowHeight = -1; + } + if (e.getType() == TableModelEvent.DELETE && isEmpty() || e.getType() == TableModelEvent.INSERT && !isEmpty()) { + repaintViewport(); + } + } + @Override public int getRowHeight() { if (myRowHeightIsComputing) { @@ -132,19 +136,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component if (myRowHeight < 0) { try { myRowHeightIsComputing = true; - for (int row = 0; row < Math.min(getRowCount(), myMaxItemsForSizeCalculation); row++) { - for (int column = 0; column < Math.min(getColumnCount(), myMaxItemsForSizeCalculation); column++) { - final TableCellRenderer renderer = getCellRenderer(row, column); - if (renderer != null) { - final Object value = getValueAt(row, column); - final Component component = renderer.getTableCellRendererComponent(this, value, true, true, row, column); - if (component != null) { - final Dimension size = component.getPreferredSize(); - myRowHeight = Math.max(size.height, myRowHeight); - } - } - } - } + myRowHeight = calculateRowHeight(); } finally { myRowHeightIsComputing = false; @@ -158,6 +150,26 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component return Math.max(myRowHeight, myMinRowHeight); } + protected int calculateRowHeight() { + int result = -1; + + for (int row = 0; row < Math.min(getRowCount(), myMaxItemsForSizeCalculation); row++) { + for (int column = 0; column < Math.min(getColumnCount(), myMaxItemsForSizeCalculation); column++) { + final TableCellRenderer renderer = getCellRenderer(row, column); + if (renderer != null) { + final Object value = getValueAt(row, column); + final Component component = renderer.getTableCellRendererComponent(this, value, true, true, row, column); + if (component != null) { + final Dimension size = component.getPreferredSize(); + result = Math.max(size.height, result); + } + } + } + } + + return result; + } + public void setShowColumns(boolean value) { JTableHeader tableHeader = getTableHeader(); tableHeader.setVisible(value);