From d5b89ba31f138bd41035989218803c124f733e5f Mon Sep 17 00:00:00 2001 From: gjourdain Date: Wed, 6 Jun 2018 10:32:52 +0200 Subject: [PATCH 1/2] #858 Enables custom Category sort for PropertySheet --- .../controlsfx/skin/PropertySheetSkin.java | 5 +-- .../org/controlsfx/control/PropertySheet.java | 34 ++++++++++++++++++- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/controlsfx/src/main/java/impl/org/controlsfx/skin/PropertySheetSkin.java b/controlsfx/src/main/java/impl/org/controlsfx/skin/PropertySheetSkin.java index f050288b4..7a3dd7139 100644 --- a/controlsfx/src/main/java/impl/org/controlsfx/skin/PropertySheetSkin.java +++ b/controlsfx/src/main/java/impl/org/controlsfx/skin/PropertySheetSkin.java @@ -136,6 +136,7 @@ public PropertySheetSkin(final PropertySheet control) { registerChangeListener(searchField.textProperty(), "FILTER-UI"); //$NON-NLS-1$ registerChangeListener(control.modeSwitcherVisibleProperty(), "TOOLBAR-MODE"); //$NON-NLS-1$ registerChangeListener(control.searchBoxVisibleProperty(), "TOOLBAR-SEARCH"); //$NON-NLS-1$ + registerChangeListener(control.categoryComparatorProperty(), "CATEGORY-COMPARATOR"); //$NON-NLS-1$ control.getItems().addListener((ListChangeListener) change -> refreshProperties()); @@ -154,7 +155,7 @@ public PropertySheetSkin(final PropertySheet control) { @Override protected void handleControlPropertyChanged(String p) { super.handleControlPropertyChanged(p); - if (p == "MODE" || p == "EDITOR-FACTORY" || p == "FILTER") { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + if (p == "MODE" || p == "EDITOR-FACTORY" || p == "FILTER" || p == "CATEGORY-COMPARATOR") { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ refreshProperties(); } else if (p == "FILTER-UI") { //$NON-NLS-1$ getSkinnable().setTitleFilter(searchField.getText()); @@ -192,7 +193,7 @@ private Node buildPropertySheetContainer() { switch( getSkinnable().modeProperty().get() ) { case CATEGORY: { // group by category - Map> categoryMap = new TreeMap<>(); + Map> categoryMap = new TreeMap(getSkinnable().getcategoryComparator()); for( Item p: getSkinnable().getItems()) { String category = p.getCategory(); List list = categoryMap.get(category); diff --git a/controlsfx/src/main/java/org/controlsfx/control/PropertySheet.java b/controlsfx/src/main/java/org/controlsfx/control/PropertySheet.java index 2675b7c24..bfa1dda38 100644 --- a/controlsfx/src/main/java/org/controlsfx/control/PropertySheet.java +++ b/controlsfx/src/main/java/org/controlsfx/control/PropertySheet.java @@ -28,6 +28,7 @@ import impl.org.controlsfx.skin.PropertySheetSkin; +import java.util.Comparator; import java.util.Optional; import javafx.beans.property.SimpleBooleanProperty; @@ -204,7 +205,6 @@ default public boolean isEditable() { private final ObservableList items; - /************************************************************************** * * Constructors @@ -439,6 +439,38 @@ public final void setTitleFilter( String filter ) { titleFilterProperty.set(filter); } + // --- categoryComparatorProperty + private final SimpleObjectProperty> categoryComparatorProperty = + new SimpleObjectProperty<>(this, "categoryComparator", null); //$NON-NLS-1$ + + /** + * Used to represent how the categories should be laid out in + * the PropertySheet when using the Category mode (see {@link Mode}). + * Thus allowing user to sort categories by other ways than alphabetical + * or numerical order. + * @return A SimpleObjectproperty. + */ + public final SimpleObjectProperty> categoryComparatorProperty() { + return categoryComparatorProperty; + } + + /** + * @see Mode + * @return how the categories should be laid out in + * the PropertySheet. + */ + public final Comparator getcategoryComparator() { + return categoryComparatorProperty.get(); + } + + /** + * Set how the categories should be laid out in + * the PropertySheet. + * @param mode + */ + public final void setcategoryComparatorProperty(Comparator categoryComparator) { + categoryComparatorProperty.set(categoryComparator); + } /*************************************************************************** From 6763765fe9d03ccb9454cde59bb3916513b28c71 Mon Sep 17 00:00:00 2001 From: gjourdain Date: Wed, 6 Jun 2018 14:22:19 +0200 Subject: [PATCH 2/2] #858 Applies changes asked by PR reviewer. --- .../java/impl/org/controlsfx/skin/PropertySheetSkin.java | 2 +- .../main/java/org/controlsfx/control/PropertySheet.java | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/controlsfx/src/main/java/impl/org/controlsfx/skin/PropertySheetSkin.java b/controlsfx/src/main/java/impl/org/controlsfx/skin/PropertySheetSkin.java index 7a3dd7139..110d62318 100644 --- a/controlsfx/src/main/java/impl/org/controlsfx/skin/PropertySheetSkin.java +++ b/controlsfx/src/main/java/impl/org/controlsfx/skin/PropertySheetSkin.java @@ -193,7 +193,7 @@ private Node buildPropertySheetContainer() { switch( getSkinnable().modeProperty().get() ) { case CATEGORY: { // group by category - Map> categoryMap = new TreeMap(getSkinnable().getcategoryComparator()); + Map> categoryMap = new TreeMap(getSkinnable().getCategoryComparator()); for( Item p: getSkinnable().getItems()) { String category = p.getCategory(); List list = categoryMap.get(category); diff --git a/controlsfx/src/main/java/org/controlsfx/control/PropertySheet.java b/controlsfx/src/main/java/org/controlsfx/control/PropertySheet.java index bfa1dda38..338c92767 100644 --- a/controlsfx/src/main/java/org/controlsfx/control/PropertySheet.java +++ b/controlsfx/src/main/java/org/controlsfx/control/PropertySheet.java @@ -440,7 +440,7 @@ public final void setTitleFilter( String filter ) { } // --- categoryComparatorProperty - private final SimpleObjectProperty> categoryComparatorProperty = + private final SimpleObjectProperty> categoryComparatorProperty = new SimpleObjectProperty<>(this, "categoryComparator", null); //$NON-NLS-1$ /** @@ -450,7 +450,7 @@ public final void setTitleFilter( String filter ) { * or numerical order. * @return A SimpleObjectproperty. */ - public final SimpleObjectProperty> categoryComparatorProperty() { + public final SimpleObjectProperty> categoryComparatorProperty() { return categoryComparatorProperty; } @@ -459,7 +459,7 @@ public final SimpleObjectProperty> categoryComparatorProperty() { * @return how the categories should be laid out in * the PropertySheet. */ - public final Comparator getcategoryComparator() { + public final Comparator getCategoryComparator() { return categoryComparatorProperty.get(); } @@ -468,7 +468,7 @@ public final Comparator getcategoryComparator() { * the PropertySheet. * @param mode */ - public final void setcategoryComparatorProperty(Comparator categoryComparator) { + public final void setCategoryComparator(Comparator categoryComparator) { categoryComparatorProperty.set(categoryComparator); }