43 Commits

Author SHA1 Message Date
palexdev
de25cb9180 👷 Import build scripts from rewrite branch
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2023-10-17 10:50:32 +02:00
palexdev
156dc9713b ⬆️ Upgrade Gradle to v8.4 and some dependencies
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2023-10-17 10:23:23 +02:00
Alessadro Parisi
3a03b8190d 🚧 Switched to gradle.properties for dependencies
⬆️ Upgraded JavaFX to version 19.0.2
⬆️ Upgraded ikonli to version 12.3.1
⬆️ Upgraded Junit to version 5.9.1
2023-03-15 12:09:24 +01:00
Alessadro Parisi
676190e033 🔖 Version 11.13.9
🍱 Import and update resources from MFXResources
2023-01-17 15:47:33 +01:00
palexdev
963db6187c 🔖 Version 11.13.8
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2023-01-04 14:39:38 +01:00
palexdev
456ae66d04 🔖 Version 11.13.7
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2023-01-04 13:32:48 +01:00
Alessadro Parisi
27446093db 🔖 Version 11.13.6
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>
2023-01-02 12:31:02 +01:00
palexdev
dee6071d70 🔖 Version 11.13.5
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>
2022-04-11 10:14:41 +02:00
palexdev
fa039ffff3 🔖 Version 11.13.4
🐛 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>
2022-03-31 13:01:05 +02:00
palexdev
def0636cef 🐛 Properly fix Maven POM for #168 and #170
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2022-03-31 12:52:15 +02:00
palexdev
cef28778eb 🔖 Version 11.13.3
⬆️ Update Gradle plugins
⬆️ Update VirtualizedFX to 11.2.5
📝 Improve ROADMAP
📝 Update Text Fields wiki

 MFXTextField added a label to specify the unit of measure (optional, leave blank string to remove)

Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2022-03-10 22:26:13 +01:00
palexdev
39f5ceaa07 Merge remote-tracking branch 'origin/main' into staging
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2022-02-09 21:45:39 +01:00
palexdev
4f34a303ac 🔖 Bump version to 11.13.1
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2022-02-09 12:55:59 +01:00
palexdev
ed1545c6d0 🌐 Internationalize MaterialFX
 Partially revert commit e5d8e31058564b44a367d182077bab3f55a1c490 as it breaks the Demo

Skins Package
🐛 MFXComboBoxSkin: ensure the caret position is at 0 if the combo box is not selectable
♻️ MFXFilterPaneSkin: properly compute the minimum width
♻️ MFXTableViewSkin: allow to drag the filter dialog
🐛 MFXTableViewSkin: ensure the dialog is on foreground

Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2022-02-03 19:41:29 +01:00
palexdev
584f850a10 Minor changes
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2022-01-27 23:28:22 +01:00
palexdev
e5d8e31058 💚 Fix GitHub actions (temporary workaround)
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2022-01-22 18:36:35 +01:00
palexdev
fcdad3ca03 📝 Reformat code
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2022-01-16 22:49:19 +01:00
palexdev
f43edf8ee7 💥 Prepare for version 11.13.0 release
New demo finally available
README.md updated

Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2022-01-15 22:16:26 +01:00
palexdev
0fd0e6bf45 💥 MFXCircleToggleNode, MFXRectangleToggleNode have been reworked
Project
⬆️ Upgraded JavaFX to 17.0.1
⬆️ Upgraded VirtualizedFX to 11.2.3
♻️ Make JavaFX dependencies transitive as a consequence/request of PR #116

Controls Package
💥 AbstractMFXToggleNode, MFXCircleToggleNode, MFXRectangleToggleNode have been reworked
♻️ MFXTextField whoops
♻️ MFXPopup, adapt to new changes of MFXCSSBridge

CSS Package
🚚 Renamed and moved CSSBridge to separate class

Skins Package
💥 MFXCircleToggleNodeSkin and MFXRectangleToggleNodeSkin have been slightly changed too

Resources
💥 MFXCircleToggleNode.css, MFXRectangleToggleNode.css have been reviewed too

🔥 Completed the removal of MFXLabel

Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2021-12-01 10:58:48 +01:00
palexdev
160bc46473 💥 Huge Update [Part 2]
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>
2021-11-02 21:28:07 +01:00
Alessadro Parisi
9dc00340a2 💥 Huge Update [Part 1]
💥 Ditched Flowless and ReactFX in favor of VirtualizedFX

⬆️ Upgraded Gradle to version 7.2
⬆️ Upgraded JavaFX to version 17
⬆️ Upgraded plugins
⬆️ Upgraded to JUnit 5
🔥 Removed jcenter() as it is deprecated

🏗️ Added shadowJar plugin to also build a shadow jar which contains needed dependencies. This jar works only for non-modular projects tough as the plugin removes the module-info.class from the produced jar

Demo
ListViewsDemoController:
♻️ Make the listviews show huge amount of items to also showcase the performance
♻️ Added method to get random FontAwesome icons

 Added tests for the new Binding classes
 Added tests to check comboboxes selection/text bindings behavior
 Added tests for the new properties
 Added tests for the new selection models

MaterialFX
Beans Package
 Introduced synchronized properties. Synchronized properties are specialized properties that allow you to set a value and wait for another property to change as well before firing a change event, this can be useful for mimicking "atomic" behaviors. You can even chain multiple synchronized property, the only conditions are that a synchronized property can wait for at most one other property, and the other property must not be already waiting for some other property (check testChain() methods in SynchronizedIntegerTests for some examples)

Bindings Package
🚚 Moved BooleanListBinding to this package
 Added helper classes for bindings. Unidirectional bindings and Bidirectional bindings are managed by the BindingManager class, it is mostly relevant for synchronized properties because those properties override the default bindings mechanism but since it uses JavaFX base classes (Property and ObservableValue) it should be usable for everything

Controls Package
🔥 Removed flowless package
🔥 Removed all classes related to Flowless, this means that listviews have been remade
🚚 Renamed MFXListView and MFXListCell to MFXLegacyListView and MFXLegacyListCell, resource file are also affected, moved to legacy packages
♻️ Remade the abstract class for all listviews
♻️ Refactored the IListView interface
♻️ Remade the abstract class for all list cells
♻️ Remade both simple cells (MFXListCells) and cells with checkboxes (MFXCheckListCell)

MFXAnimationFactory:
♻️ Make interpolators global constants

MFXContextMenuItem:
📝 Update documentation for more clarity on accelerator property

MFXTextField:
🔥 Removed workaround for MFXContextMenu and selection being cleared
♻️ Improved the event dispatcher to solve the above issue in a better way. Now the right click event will be consumed only if the MFXContextMenu is not null and the selection is not empty. I have a better understanding of the EventDispatchers now :)

Filter Package
MFXFilterDialog:
♻️ Use the new MFXListView instead of the legacy one
♻️ Make evaluation boxes take all the space left in the cell

Selection Package
💥 Huge changes for the selection API
💥 Comboboxes, do not rely on a "mock" selection model anymore but use a SingleSelectionModel. This allows also to bind per index or per item (make sure to read the documentation for the new binding mechanism)
💥 Single selection models now allow to bind the selected index or item, they also offer method to easily bind to other selection models. You can even customize how to compute the updates, be sure to check the documentation
💥 Single selection models now use SynchronizedProperties, this means that when index changes and you have a listener to the index property the selected item will be already updated too (works the other way around too)

Skins Package
🚚 Moved MFXLegacyListViewSkin to legacy package

MFXComboBoxSkin and MFXFilterComboBoxSkin:
♻️ Adapted to the new listviews and cells
♻️ Allow binding selection or text (Fix for issue #84)
♻️ Make the popup autohide instead of manually managing all possible events, this is also better because as far as I know there's no way in JavaFX to easily check if the mouse was pressed on the window frame or the window was moved (can be detected but very inconvenient to do), all cases that must close the popup. Setting is to autohide fixes also this cases (probably internal APIs)
♻️ Specific to MFXFilterComboBoxSkin. Removed the filtered list in favor of a Map, this helps with duplicates too, of course because of this change the FilterListCell must be adapted as well

MFXListViewSkin:
♻️ Pretty much the same to be fair, but there's a difference though. The VirtualFlow is not a member of the skin anymore but it's a field of the control (passed to the skin with the constructor), this allows to easily expose some methods of the VirtualFlow, like manual scrolling or the Features class to customize the VirtualFlow, also allows to set the speed of the scroll bars

Utils Package
 Added a helper class, ListChangeProcessor, to easily compute changes in ObservableList, especially useful is combined with ListChangeHelper from VirtualizedFX
 Added TriConsumer interface

ExecutionUtils:
 Added new method to listen to a generic observable changes

NodeUtils:
 Added new inHierarchy method and replace usages where convenient
♻️ waitForScene() allow passing generic Nodes rather than just Controls

ScrollUtils:
🔥 Removed methods for Flowless listviews

Resources
🚚 Moves css files for legacy listviews to legacy package

MFXListView.css and MFXCheckListView.css:
♻️ Keep the -mfx-thumb-hover-color if the mouse is not of the scrollbar's thumb anymore but it is still pressed

MFXCheckListCell.css:
♻️ Hide the ripple of checkboxes

MFXFilterDialog.css:
♻️ Set cells' background on hover to be transparent

Signed-off-by: Alessadro Parisi <alessandro.parisi406@gmail.com>
2021-09-18 12:56:59 +02:00
palexdev
4bd4f201e6 🔖 Version 11.12.0
♻️ Minor changes and improvements to the demo

🐛 Fixed editor regression in MFXLabelSkin and little behavior improvement

Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2021-07-13 22:29:13 +02:00
palexdev
34ce0713dc ♻️ Minor changes and improvements
Demo:
♻️ Updated some controls' demo
 Added a splash screen with logo, animations and even sound

MFXSlider:
♻️ Instead of having three new pseudo classes that activate only when a the slider reaches certain values, you can now specify three separate lists of ranges. For example, in the first list you could add ranges from 0 to 25 and from 50 to 75, then in the second list from 26 to 49 and from 76 to 80, then in the third list from 81 to 100. When the value changes the slider checks in which range the value is, in CSS you can customize the slider according to those ranges with the following pseudo classes: ":range1", ":range2", ":range3".
You can also specify the same value for both bounds in the range, this will act as before this change, but still with much more flexibility.
For an example see the SlidersDemoController class.

MFXProgressBar,
MFXProgressSpinner:
 Added the same css system described above to these controls

NumberRange:
 Added a new method to create a new NumberRange from a single value, min and max bounds are the same.
 Added four new static methods to check if a given value is contained in a given NumberRange
 Added four new static methods to check if a given value is contained at least in one of the given NumberRanges (in a list of ranges)
2021-07-12 21:40:05 +02:00
PAlex404
e850bee706 🔖 Version 11.1.1 2021-06-11 14:02:52 +02:00
palexdev
5c4a93c98f Version 11.11.0 2021-06-07 13:12:53 +02:00
palexdev
4fc8e19c3c 💥 Huge update [Part 1]
 New Controls: MFXStepper, MFXStepperToggle, MFXExceptionDialog

Gradle:
⬆️ Updated JavaFX plugin to version 0.0.10
⬆️ Updated JavaFX to version 16
🔥 Workaround for modularity should not be necessary anymore

Demo:
DemoController:
♻️ Make the demo pane request focus on mouse pressed

TextfieldsDemoController:
♻️ Refactor validation properties for the validated field to use the new BindingsUtils class

MaterialFX:
💥 Huge review of the Validation API

IMFXValidator:
♻️ Renamed listeners methods

AbstractMFXValidator:
💥 Implemented the possibility to make a validator depend on other validators. Each validator has its conditions which are evaluated by a BooleanListBinding property
💥 Added a new read only boolean property that represents the state of validator, valid/invalid(true/false). The value of this property is computed by evaluating the conditions of the validator and the conditions of all other validators(dependencies). The value is computed automatically when the validator's or its dependencies' conditions change, but you can also force the it by calling the update() method
♻️ Added a new boolean flag to allow controls to be validated as soon as they are laid out in the scene

MFXPriorityValidator:
 New validator class
The priority validator is a validator which changes its message automatically depending on its state/conditions. When its state changes, gets the first invalid condition in its messageMap and sets its message accordingly, more info in the documentation

MFXDialogValidator:
♻️ Refactored to extend MFXPriorityValidator rather than AbstractMFXValidator
♻️ Added listener to the title property to change the dialog's title as well

Validated:
 New interface of the Validation API
All controls that need validation should implement this interface

MFXTextField:
♻️ Implement the Validated interface
♻️ Refactored the setupValidator() method, the dialog type is set to ERROR rather than WARNING, added code to update the "invalid" pseudo class state
♻️ lines' stroke width set to 2.0
 Added a PseudoClass, "invalid", for the validator state and customize the control accordingly
 Added a new styleable property to specify the lines' stroke cap

MFXTextFieldSkin:
♻️ Added validator init flag check to constructor
♻️ Force validator update when focus changes
♻️ Refactored the lines' code, use bindings rather than listeners. Compute their position using the relocate() method rather than using the translateY property
♻️ Switched to MFXLabel, compute its position and location using the resizeRelocate() method. The position strategy has changed too, if the label is bigger than the text field then it is positioned to be centered
♻️ Using the showModal() method rather than show()
🐛 When the cursor is on the validate label its shape should be the DEFAULT
🐛 When the validate label's text changes it's required to recompute the layout

mfx-textfield.css:
♻️ Switched to MFXLabel, set the text fill to "red" by default
 Added new section that specifies the control look when "invalid"

MFXLegacyComboBox:
♻️ Implement the Validated interface
♻️ Refactored the setupValidator() method, the dialog type is set to ERROR rather than WARNING, added code to update the "invalid" pseudo class state, removed the selected item condition now it's up to the user's decision
♻️ lines' stroke width set to 2.0
 Added a PseudoClass, "invalid", for the validator state and customize the control accordingly
 Added a new styleable property to specify the lines' stroke cap
🐛 Fixed line color mismatch between styleable property and css meta data

MFXLegacyComboBoxSkin:
♻️ Added validator init flag check to constructor
♻️ Force validator update when focus changes
♻️ Refactored the lines' code, use bindings rather than listeners. Compute their position using the relocate() method rather than using the translateY property, changed their name accordingly to other similar controls
♻️ Switched to MFXLabel, compute its position and location using the resizeRelocate() method. The position strategy has changed too, if the label is bigger than the text field then it is positioned to be centered
💫 Minor changes to the lines animation
🐛 When the validate label's text changes it's required to recompute the layout

mfx-combobox.css:
♻️ Switched to MFXLabel, set the text fill to "red" by default
 Added new section that specifies the control look when "invalid"

MFXDatePicker:
♻️ Reviewed the layout strategy
 Added styleable properties for the line's stroke width and stroke cap
🐛 Line and calendar icon colors should not change if the control is disabled
🐛 Fixed calendar icon not being gray if the control was disabled

 New Utils:
BindingUtils: utils class to convert JavaFX expressions/bindings to properties
DialogUtils: ported from one of my personal projects. Utils class to quickly get any sort of stage dialog, including more specific dialogs.
ExceptionUtils: ported from one of my personal project. Utils class to convert a throwable/exception to a String using a StringWriter and a PrintWriter.

📝 Added and updated documentation

Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
2021-05-13 23:50:14 +02:00
palexdev
86ce432ac4 Version 11.10.1
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>
2021-04-09 22:38:42 +02:00
PAlex404
40fa76fc48 Version 11.10.0
Updated the demo

Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2021-03-30 12:02:54 +02:00
PAlex404
b1e924a346 Version 11.9.0
Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2021-03-22 11:48:41 +01:00
PAlex404
0837c6c942 Bump version to 11.8.0
Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2021-03-19 14:17:47 +01:00
PAlex404
4ca98ea43c Version 11.7.1
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>
2021-03-01 20:17:02 +01:00
PAlex404
3466817b37 Version 11.7.0
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>
2021-02-21 21:47:12 +01:00
PAlex404
5d237c197a New control: MFXTableView
Added ScenicView to demo module for debugging purposes.

Corrected names for TreeCheckModel and TreeSelectionModel.
MFXStageDialog: it's now possible to block drag and set the manual position of the Stage.
RippleGenerator: fixed memory leak, the shape used for the background animation must also be removed at the end of the animation.

MFXComboBoxSkin: close the popup when the focus is lost.
Use computed sizes and unbind the properties in case maxPopupHeightProperty and maxPopupWidthProperty are set to -1.

MFXLabelSkin: minWidth should be correctly calculated now.

NodeUtils: added new method to calculate the minWidth of a Label given the Font and the text.
StringUtils: added new method to check if a CharSequence contains another CharSequence ignoring case.

mfx-scrollpane.css: fixed viewport background color.

Added IFilterable, MFXFilterDialog for filtering MFXTableView, note that the interface is optional, in case the Object doesn't implement it, toString will be used instead.
Added selection model for MFXTableView.
Added DragResizer for resizing nodes at runtime using the cursor.

Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2021-02-20 17:10:58 +01:00
PAlex404
6e3ad2866b Update Gradle to 6.8.1
Little refactor here and there, copyright update

Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2021-02-11 17:03:29 +01:00
PAlex404
75f9b11573 Version 11.6.0
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>
2021-02-03 18:04:27 +01:00
PAlex404
1e2c183f6e Version 11.5.6
Some improvements and bug fixes:
Moved cells to separate package.
MFXAnimationFactory added null check to resetNode().
MFXFontIcon added no-arg constructors for usage in SceneBuilder,
use Paint interface because SceneBuilder is stupid.
MFXTextFieldSkin, mfx-textfield.css fixed strange font size bug when clicking on the validation label.
mfx-dialog.css fixed font.

Added new resources

Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2021-01-08 18:17:39 +01:00
PAlex404
0090c31ac1 Version 11.5.5-staging
Added 2 new controls: MFXDatePicker and MFXTextField.

Added custom implementation of DateCell, MFXDateCell.
Added MaterialFX font, FontHandler, FontResources and MFXFontIcon for better managing SVG resources.
Added new methods to NodeUtils, used for positioning MFXDatePicker's popup.
Added new method to StringUtils.
Added new method to MFXResourcesLoader.
Added new SVG resources to MFXResourcesManager.

Fixed getClassCssMetaDataList() method in many controls, if I'm not wrong it should be static.
MFXButton, moved RippleGenerator initialization in separate protected method for overriding.
Ripples clip, using factory pattern which is more flexible than just an enum.
RippleGenerator, use clip from factory for background animation instead of Rectangle.
MFXListViewSkin, fixed scrollbars not being initially hidden if hideScrollBars is set to true.
AbstractMFXValidator, always initialize properties.
MFXDialogValidator, use mapping for messages rather than relying on list indexes.
Fixed font.css
Fixed MFXScrollpane's bars not being completely hidden.

Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2020-12-27 21:26:20 +01:00
PAlex404
b56ba251f1 Version 11.4.4
Added 3 new controls: MFXComboBox, MFXListView and MFXRadioButton.
Demo: added smooth scrolling, re-organized css files.

Added custom binding, BooleanListBinding to observe a list of boolean properties.
Added validation api.
Added new method to StringUtils.

MFXButton, depthLevel changed to Styleable property for usage in CSS.
MFXStageDialog ignore exception for owner and modality.
Refactored some skin classes to make use of getSkinnable().
MFXCheckboxSkin fixed updateColors() not being called in SceneBuilder if selected/indeterminate was checked.

Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2020-12-11 18:08:16 +01:00
PAlex404
86fc4476d7 Version 11.3.3
Demo completely redone, turn out that wrapping MFXHLoader and MFXVLoader in a ScrollPane is the way to go if there will be lot of buttons in them.
Cleaned up some CSS files.

AbstractMFXDialog/MFXDialog are now visible by default, this is a workaround for using MFXDialog in SceneBuilder.
Added MFXScrollPaneSkin for MFXScrollPane, for many years there is a known bug that makes the content of a ScrollPane blurry, I didn't notice it, for some reason the bug appeared on my laptop.
MFXVLoader forgot to change thread countdown.
MFXHLoader and MFXVLoader, fixed exception for not being on JavaFX Thread.
MFXNotifications are rounded by default now and have borders to distinguish them in case of white background.
Added new SVG resources.

Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2020-12-03 02:07:06 +01:00
PAlex404
b946fcffc5 Version 11.3.2
Added notifications, scroll pane and tooltips
Added new utils classes, LabelUtils, LoggingUtils, StringUtils
Added custom implementation of a circular fifo queue, CircularQueue
Added missing documentation here and there
Added logging capabilities, using log4j2
MFXHLoader and MFXVLoader, threads timeout decreased, thread names set to "MFXHLoaderThread" and "MFXVLoaderThread"
MFXCheckboxSkin removed unnecessary variables

HexToRGBColor renamed to ColorUtils, fixed rgba method and added a new method to get random colors
Loader renamed to LoaderUtils
NodeUtils, added method to make a region circular
MFXResourcesManager added new SVGPath

Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2020-12-01 13:08:05 +01:00
PAlex404
a94854da04 Version 11.2.1
Demo completely redone
4 new controls: MFXDialog, MFXStageDialog, MFXHLoader and MFXVLoader
Completely redone MFXToggleNode
Added some animations
Added new effect: MFXScrimEffect, see MaterialDesign guidelines
Added new util class ToggleButtonsUtil
Added new class MFXResourcesManager for storing library resources

Minor changes:
Renamed MFXResources to MFXResourcesLoader
MFXButton, set better ripple radius and color on initialization
RippleGenerator, added flag for background animation, fix cast warning
RippleClipType, implemented circle
NodeUtils, added method to center node in AnchorPanes

Resources:
MFXButton, set focused color to white
MFXToggleNode, set default opacity and selected opacity for a better feedback on user interaction
Added new fonts

Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2020-11-15 15:58:58 +01:00
PAlex404
c921c309fb Published on Maven Central, changed group name
Updated README, added LICENSE

Signed-off-by: PAlex404 <alessandro.parisi406@gmail.com>
2020-11-01 21:20:42 +01:00
PAlex404
a16d2431a5 Add new material control: MFXButton 2020-10-19 23:15:09 +02:00