Some changes for PR #227🐛 The listeners for the centering should be handled by the property otherwise disabling the centering would not work anymore
✏️ Made some code style changes
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
Beans Package
♻️ SizeBean: override toString() method
Controls Package
💥 Implement an API for controls that can be styled (almost all MFX controls). This API also allows SceneBuilder support for the new styling system introduced by version 11.14.0
Utils Package
✨ Improved When, OnChanged and OnInvalidated constructs by importing them from the latest version of MFXCore
✨ Added utility to detect SceneBuilder at runtime
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
This minor version includes a bunch of kindly submitted PRs and some minor refactor.
Also, Gradle has been updated to version 7.6
Signed-off-by: Alessadro Parisi <alessandro.parisi406@gmail.com>
Controls Package
🐛 MFXTextField: fixed TextFormatter not working. It must be added on the BoundTextField, for this reason, added a delegate property (Fix for #174)
CSS Package
♻️ MFXCSSBridge: do not take into account the Region's user agent stylesheet. If it's needed to specify the user agent the popup's getUserAgentStylesheet() method should be overridden inline, as well as for any other component that mey require it (see MFXComboBoxSkin as an example) (Fix for #173)
Selection Package
♻️ Adds a method to retrieve the selection values as a List (rather than getSelection().values() which returns a generic Collection). Also make MultipleSelectionManager use LinkedHashSet and LinkedHashMap (TreeMap was used, oversight sorry) to keep insertion order for selection, this also ensures that building the values List returns the selected values in the same exact order as in the selection Map (Enhancement for #161)
Skins Package
🐛 MFXComboBoxSkin, MFXFilterComboBoxSkin: fixed an issue that prevented the combo box's popup from being fully customizable with CSS (Fix for #173)
🐛 MFXDatePickerSkin: initialize the picker's text if the initial date is not null (Fix for #172)
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
🐛 Fixed Maven POM once and for all
🐛 MFXTextFieldSkin: fixed bug which caused improper text fill in specific occasions
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
Disclaimer: I recently switched to Linux for production because I was tired of Bugdows but because they use different line endings IntelliJ is showing me that all files are changed, also the ones with identical content. I re-normalized the project and added a .gitattributes file. I'm not sure how GitHub will visualize this commit, if it's messed sorry in advance... but don't worry, as always all changes are listed here 😉⬆️ Upgraded VirtualizedFX to version 11.2.1
Demo
🚧 Temporarily "disabled" or non-functional some showcases
✅ Added new tests
MaterialFX
Beans Package
✨ Added convenience properties for Java's functions
✨ Added convenience property to represent a NumberRange
✨ Added many new beans
♻️ NumberRange: implemented hashCode, equals and toString, added two new methods to convert a range on integers to a List or a Set
🚚 Renamed RipplePosition ti PositionBean and moved to this package
Collections Package
✨ TransformableList is a new kind of ObservableList that combines JavaFX's FilteredList and SortedList functionalities into one
✨ TransformableListWrapper is an ObservableList which wraps both the source list and the transformable list in the same class. This makes using TransformableLists less verbose as modifications to the source list can be made directly from this wrapper
Controls Package
🔥 Removed AbstractMFXNotificationPane
🔥 Removed MFXNotification
🔥 Removed SimpleMFXNotificationPane
✨ Added a new cell to contain notifications
✨ FilterPane, a new control that allows to build Predicate filters interactively
✨ MFXNotificationCenter, a new control that allows to display multiple notifications. It is basically an icon that opens a popup which contains not only the list of notifications but also controls to manage them
✨ MFXPopup, extension of PopupControl to easily set the popup's content and position it by using HPos and VPos enumerations. It also introduces a hover functionality
✨ MFXSimpleNotification, a simple implementation of INotification
Effects Package
✨ ConsumerTransition, an implementation of Transition that uses a consumer to perform some action when the interpolate method is called
✨ Interpolators, a new enumerator that offers some new interpolators for JavaFX's animations
Enums Package
♻️ Moved all MaterialFX enumerators to this top level package
✨ ChainMode, a new enumerator mainly used by PredicateUtils to chain two predicates
✨ NotificationCounterStyle, a new enumerator to specify MFXNotificationCenter's counter style
✨ NotificationPos, a new enumerator to specify at which position a notification system should place the notification
✨ NotificationState, a new enumerator to represent the read state of a notification
Factories Package
♻️ Moved all MaterialFX factories to this top level package
✨ InsetsFactory, a new factory tp build JavaFX's Insets objects
Filter Package
💥 The filter API has been completely remade and now it's super flexible, super useful, super amazin haha. I won't describe it here as there are a LOT of new classes and concepts to be described so I recommend you to read AbstractFilter, FilterBean and BiPredicateBean documentations, usage examples can be also found in the demo (not yet at time of writing) and in the documentation of MFXFilterPane
🚧 MFXFilterDialog has been completely commented, will be reworked for the new API
Font Package
✨ Added new resources
Notifications Package
💥 The notification API has been completely remade. Now there are to notification systems, one is very similar to the old one but it is limited to one notification at a time at a given position. This restriction helper to keep the system simple and efficient. To show multiple notifications at one time I recommend the usage of MFXNotificationCenterSystem which uses a MFXNotificationCenter to show the notifications. Or, you could implement you own notification system since the notification API now offers some base classes to build on top.
AbstractMFXNotificationSystem and INotificationSystem specify the base features all notification systems should have, INotification specifies the base features all notifications should have
Skin Package
No notable change aside from new skins for the new controls and minor changes due to classes renamed/moved
Utils Package
✨ FunctionalStringConverter, a functional alternative to JavaFX's StringConverter
✨ ReusableScheduledExecutor, a wrapper class to make a ScheduledExecutorService reusable. To stop/restart a ScheduledExecutorService it's needed to keep a reference to the ScheduledFuture task but this often result in boilerplate code, this wrapper fixes this
✨ EnumStringConverter, an implementation of JavaFX's StringConverter to work with enumerators
✨ Added a new method to ExecutionUtils
✨ FXCollectors, a class that contains some new collectors for JavaFX's observable collections
✨ PredicateUtils, utils for Predicates
✨ StringUtils, added a new method to convert an elapsed time in seconds to a String
♻️ AnimationUtils, added some new methods to PauseTransitionBuilder and KeyFrames classes
🐛 ExceptionUtils, fixed getStackTraceString method as StringWriters are not reusable
Resources
✨ Added new CSS files for new controls
♻️ MFXColors.css, added a new color
Signed-off-by: Alessadro Parisi <alessandro.parisi406@gmail.com>
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
♻️ Minor changes and improvements to the demo
🐛 Fixed editor regression in MFXLabelSkin and little behavior improvement
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
Demo
FontResourcesDemoController:
♻️ Align list labels to CENTER_LEFT
ListViewsDemo, ListViewsDemoController:
♻️ Layout remade with an AnchorPane as root
MaterialFX
IListCheckModel, ListCheckModel, MFXFlowlessCheckListCell:
♻️✨ Added a way to specify if the check list view should also allow selection. If it is not allowed the selection method of the cell is skipped. If it is allowed selection will be kept only if no checkbox is pressed, e.g if you select some cells and then check a cell with the checkbox the selection will be cleared
MFXComboBox:
📝 Added warning for selection using the context menu not working if the data is or contains a node (dunno if it can be fixed)
MFXDatePicker, MFXDatePickerContent:
♻️ Do not set LocalDate.EPOCH if the property needs to be "force-updated", use null instead. As a result in many parts of the code we need null checks
✨ Added the possibility of closing the popup when enter is pressed
MFXFilterComboBoxSkin:
🐛 Fixed validate label icon having wrong color is scene is switched
MFXLabelSkin:
🐛 Fixed inconsistencies between label and editor focus
MFXTextField:
✨ Added redo and undo to the context menu
MFXTextFieldSkin:
🐛 Fixed selection being cleared when context menu was opened
MFXFilterComboBox.css, MFXLabelStyles(all).css:
🐛 Remove the text fields lines, files changed to reflect recent changes
FontResources:
♻️ Added new resources
README.md:
✨ Added preview GIFs
✨ Added ROADMAP.md
LoaderUtils, MFXHLoader, MFXVLoader, MFXLoaderBean: migrated type from Node to Parent.
Introduced caching mechanism which vastly improves the performance of the views switching.
MFXComboBoxSkin, MFXFilterComboBoxSkin: fixed occasional NullPointerException
MFXFlowlessCheckListCell: the pseudo class should be accessible to sub classes.
MFXFlowlessListView, MFXFlowlessCheckListView (css): fixed scrollbars' thumb not showing properly in case of many cells
TreeCheckModel: fixed scanTree
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
AbstractMFXDialog, MFXDialogFactory: switch from single close button to a list of generic Nodes, this allows to have much more flexibility.
MFXStageDialog: added more wrapper methods.
AbstractMFXTreeItem: added setItems method (forgot oops).
MFXTableColumnCell, MFXTableColumnCellSkin: added tooltip.
MFXLabel: added text fill property.
MFXLabelSkin: fixed and significantly improved the editor behaviour, now you can open the editor by double clicking on the whole control, the icons are excluded. Now if the editor looses focus the editor is hidden and any changes are confirmed. The width and position are now computed more accurately. Now when the editor is shown it acquires the focus.
MFXIconWrapper: setIcon method fixed once and for all (I hope).
Added new resources.
mfx-dialog.css: fixed dialog title appearing a little blurry.
Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
Added new MFXComboBoxes to Demo.
Added MFXLabel, MFXLegacyTableView and MFXTableView previews to Demo.
MFXTableView: forgot to add setItems method.
MFXTableViewSkin: filter dialog use automatic centering, it's more accurate than using screen coordinates.
Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
Updated plugins and libraries.
Demo: added previews for tree views and progress spinners.
MFXTreeView and MFXCheckTreeView: added no-arg constructors for usage in SceneBuilder and refactored the control initialization to allow no-arg.
Added bottom padding to root thus fixing selection of bottom items.
SelectionModel: scanTree added condition to check if element is already selected.
mfx-treeview.css: must set viewport background color, otherwise it will appear grey when items are expanded.
Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>