Persist table layouts just after changing the real used sizes and show truncated cell tooltips in the whole applications tables v2

This commit is contained in:
Marc Froehlich
2026-09-03 00:26:16 +02:00
parent 9eb0550106
commit 595fb84362
2 changed files with 38 additions and 3 deletions
@@ -22,8 +22,8 @@ import java.util.OptionalDouble;
*/ */
public final class TableLayoutManager { public final class TableLayoutManager {
private static final double CELL_HORIZONTAL_PADDING = 28.0; private static final double CELL_HORIZONTAL_PADDING = 16.0;
private static final double DEFAULT_MINIMUM_WIDTH = 42.0; private static final double DEFAULT_MINIMUM_WIDTH = 24.0;
private TableLayoutManager() { private TableLayoutManager() {
} }
@@ -139,7 +139,11 @@ public final class TableLayoutManager {
measure(String.valueOf(value.getValue()), measurement) measure(String.valueOf(value.getValue()), measurement)
); );
} }
return clamp(requiredWidth + CELL_HORIZONTAL_PADDING, spec.minimumWidth, spec.maximumInitialWidth); return calculateInitialContentWidth(
requiredWidth,
spec.minimumWidth,
spec.maximumInitialWidth
);
} }
private static <S> double flexibleInitialWidth(TableView<S> table, ColumnSpec spec) { private static <S> double flexibleInitialWidth(TableView<S> table, ColumnSpec spec) {
@@ -223,6 +227,18 @@ public final class TableLayoutManager {
return Math.max(minimum, Math.min(value, maximum)); return Math.max(minimum, Math.min(value, maximum));
} }
/**
* Calculates a compact content width. Package-private for focused sizing tests.
*/
@SuppressWarnings("PMD.CommentDefaultAccessModifier")
static double calculateInitialContentWidth(
final double measuredWidth,
final double minimum,
final double maximum
) {
return clamp(measuredWidth + CELL_HORIZONTAL_PADDING, minimum, maximum);
}
public static final class ColumnSpec { public static final class ColumnSpec {
private final String id; private final String id;
private final TableColumn<?, String> column; private final TableColumn<?, String> column;
@@ -0,0 +1,19 @@
package kst4contest.view;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class TableLayoutManagerTest {
@Test
void contentWidthUsesCompactPadding() {
assertEquals(116.0, TableLayoutManager.calculateInitialContentWidth(100.0, 24.0, 200.0));
}
@Test
void contentWidthStillHonorsMinimumAndMaximum() {
assertEquals(24.0, TableLayoutManager.calculateInitialContentWidth(0.0, 24.0, 200.0));
assertEquals(200.0, TableLayoutManager.calculateInitialContentWidth(250.0, 24.0, 200.0));
}
}