diff options
author | Simon Rettberg | 2015-08-27 15:26:44 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-08-27 15:26:44 +0200 |
commit | ad5fb20262bb43dc004177446fbfdbbd86762d6c (patch) | |
tree | ad554fec1dd462b7de6da9ad75b2a4f637181df0 /dozentenmodul/src/main/java/org/openslx | |
parent | [client] ListTable: Support showing and hiding columns; set sorter through Co... (diff) | |
download | tutor-module-ad5fb20262bb43dc004177446fbfdbbd86762d6c.tar.gz tutor-module-ad5fb20262bb43dc004177446fbfdbbd86762d6c.tar.xz tutor-module-ad5fb20262bb43dc004177446fbfdbbd86762d6c.zip |
[client] TableColumnAdjuster: Use weighted scaling, so one very wide entry won't make the column too wide
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableColumnAdjuster.java | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableColumnAdjuster.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableColumnAdjuster.java index 9b1ca7d6..2066791f 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableColumnAdjuster.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/TableColumnAdjuster.java @@ -113,19 +113,32 @@ public class TableColumnAdjuster implements PropertyChangeListener, TableModelLi * column. */ private int getColumnDataWidth(int column) { - if (!isColumnDataIncluded) + if (!isColumnDataIncluded || table.getRowCount() == 0) return 0; int preferredWidth = 0; int maxWidth = table.getColumnModel().getColumn(column).getMaxWidth(); + int[] colWidth = new int[table.getRowCount()]; + int avg = 0; - for (int row = 0; row < table.getRowCount(); row++) { - preferredWidth = Math.max(preferredWidth, getCellDataWidth(row, column)); + for (int row = 0; row < colWidth.length; row++) { + colWidth[row] = getCellDataWidth(row, column); + avg += colWidth[row]; + } + avg /= colWidth.length; + int upperCap = avg * 3 + 20; + for (int row = 0; row < colWidth.length; row++) { + if (colWidth[row] > upperCap) { + return upperCap; + } + if (colWidth[row] > preferredWidth) { + preferredWidth = colWidth[row]; + } // We've exceeded the maximum width, no need to check other rows - - if (preferredWidth >= maxWidth) + if (preferredWidth >= maxWidth) { break; + } } return preferredWidth; @@ -321,7 +334,8 @@ public class TableColumnAdjuster implements PropertyChangeListener, TableModelLi /* * Update the input and action maps with new ToggleAction */ - private void installToggleAction(boolean isToggleDynamic, boolean isToggleLarger, String key, String keyStroke) { + private void installToggleAction(boolean isToggleDynamic, boolean isToggleLarger, String key, + String keyStroke) { Action action = new ToggleAction(isToggleDynamic, isToggleLarger); KeyStroke ks = KeyStroke.getKeyStroke(keyStroke); table.getInputMap().put(ks, key); |