From 7862c5049583b995d773778e628783b937d4523c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Bungartz?= Date: Fri, 26 Aug 2022 12:10:11 +0200 Subject: [PATCH] Fixes #432. Distance between groups is now implemented through top margins, not bottom margins of previous groups. As a result, distances are also correct when elements or groups are hidden. --- .../renderer/PreferencesFxGroupRenderer.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/preferencesfx/src/main/java/com/dlsc/preferencesfx/formsfx/view/renderer/PreferencesFxGroupRenderer.java b/preferencesfx/src/main/java/com/dlsc/preferencesfx/formsfx/view/renderer/PreferencesFxGroupRenderer.java index 827fe9af..de5f74c8 100644 --- a/preferencesfx/src/main/java/com/dlsc/preferencesfx/formsfx/view/renderer/PreferencesFxGroupRenderer.java +++ b/preferencesfx/src/main/java/com/dlsc/preferencesfx/formsfx/view/renderer/PreferencesFxGroupRenderer.java @@ -78,6 +78,10 @@ public void layoutParts() { grid.add(titleLabel, 0, nextRow++, 2, 1); styleClass.append("-title"); titleLabel.getStyleClass().add("group-title"); + // Set margin for all but first group titles to visually separate groups + if (nextRow > 1) { + GridPane.setMargin(titleLabel, new Insets(SPACING * 4, 0, 0, 0)); + } } List elements = preferencesGroup.getElements().stream() @@ -90,8 +94,8 @@ public void layoutParts() { // add to GridPane Element element = elements.get(i); if (element instanceof Field) { - SimpleControl c = (SimpleControl) ((Field)element).getRenderer(); - c.setField((Field)element); + SimpleControl c = (SimpleControl) ((Field) element).getRenderer(); + c.setField((Field) element); grid.add(c.getFieldLabel(), 0, i + rowAmount, 1, 1); grid.add(c.getNode(), 1, i + rowAmount, 1, 1); @@ -100,13 +104,14 @@ public void layoutParts() { GridPane.setValignment(c.getNode(), VPos.CENTER); GridPane.setValignment(c.getFieldLabel(), VPos.CENTER); - Insets margin; + Insets margin = new Insets(SPACING * 2, 0, 0, 0); if (i == elements.size() - 1) { // additional styling for the last setting styleClass.append("-last"); - margin = new Insets(SPACING * 2, 0, SPACING * 4, 0); - } else { - margin = new Insets(SPACING * 2, 0, 0, 0); + } + if ((preferencesGroup.getTitle() == null) && (i == 0) && (nextRow > 0)) { + // when there is no group title and this is the first element, add margin to top + margin = new Insets(SPACING * 6, 0, 0, 0); } GridPane.setMargin(c.getNode(), margin);