summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-27 15:26:44 +0200
committerSimon Rettberg2015-08-27 15:26:44 +0200
commitad5fb20262bb43dc004177446fbfdbbd86762d6c (patch)
treead554fec1dd462b7de6da9ad75b2a4f637181df0 /dozentenmodul/src/main/java/org/openslx
parent[client] ListTable: Support showing and hiding columns; set sorter through Co... (diff)
downloadtutor-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.java26
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);