Releases: mgarin/weblaf
WebLaF v1.2.13
Release Notes
This update mostly includes minor bug fixes for a few issues reported by users and some small internal changes.
You can find full list of issues resolved in this updated here:
https://github.com/mgarin/weblaf/milestone/24?closed=1
One of the issues is still open because there will be more related changes coming in the future.
Styling
- Added workaround to fix decorated windows style application [ #604 ]
MemoryBar
- Added missing
WebMemoryBardescriptor icon [ #608 ]
JTabbedPane
- Default
JTabbedPane'sFontis now properly inherited by allTabs [ #631 ]
JSpinner
- Fixed error that could appear with
JSpinnerusingNumberEditorunder Java 9+ [ #612 ]
JComboBox
- Fixed combobox popup positioning under Java 9+ [ #630 ]
PluginManager
- Removed usage of
DirectoriesFilterfromPluginManagerdue toFileSystemViewusage that causes exceptions in some rare cases
Look and Feel
- Fixed L&F initialization through
UIManager[ #621 ]
Utilities
- Fixed selection being incorrectly cleared upon deselecting already deselected button that uses
UnselectableButtonGroup - Additional selection change events will not be thrown anymore for buttons using
UnselectableButtonGroup - Added method in
FontUtilsfor convenientFontUIResourceretrieval andUIResourceFontreplacement
Modules
There were no module changes in this update.
Here is a full list of modules available in v1.2.13:
weblaf-core- Module containing all basic managers, interfaces and classesweblaf-ui- Module containing all components, UIs, painters, skins, managers and related classesweblaf-plugin- Module containingPluginManager[ wiki guide ]weblaf-ninepatch-editor- Module containingNinePatchEditorweblaf-demo- Module containingDemoApplication
To use WebLaF as your application L&F you will need weblaf-core and weblaf-ui modules. Other modules are just extras for now.
Dependencies
To WebLaF in your Maven project you can use this dependency:
<dependency>
<groupId>com.weblookandfeel</groupId>
<artifactId>weblaf-ui</artifactId>
<version>1.2.13</version>
</dependency>It will automatically resolve all module and 3rd-party library dependencies.
Also WebLaF Maven artifact identifiers are equal to module names mentioned above, so if you need any of the optional modules - you can simply use them by their module name in Maven dependency.
If you're not using Maven - you can find all necessary dependencies for this update here:
https://github.com/mgarin/weblaf/tree/v1.2.13/lib
Migration notes [ v1.2.12 -> v1.2.13 ]
There were no major changes in v1.2.13 that break API.
WebLaF v1.2.12
Release Notes
This update mostly includes internal code refactoring and polishing, minor visual improvements for various components and bug fixes for a few issues that were uncovered in previous updates.
You can find full list of issues resolved in this updated here:
https://github.com/mgarin/weblaf/milestone/23?closed=1
Styling
WebShapeimplementations ofIShapehave been reworked and will now properly support separate round values for different component corners for both border and background [ #598 ]Styleable.getShape ()method have been renamed toStyleable.getPainterShape ()to avoid clashing with JDK7+ methods inWindowcomponents, this also fixes recently introduced problem with decoratedWeb-windows not being properly displayed on the screen under JDK7+
Dockable framework
- Fixed
WebDockableFramesidebar button border color for default style [ #596 ] - Minor translation adjustments for
WebDockableFrameheader buttons [ #601 ]
PopupMenu
- Fixed
JPopupMenuwindow shape cleanup on menu becoming invisible, this should fix a set of issues that could appear on Linux and even Windows systems [ #602 ] - Setting
popupMenuWaywill now be preserved across multiple popup menu displays [ #603 ]
MemoryBar
- Added support for
MemoryBarListenerinWebMemoryBarto provide a way to execute pre- and post- GC actions
HotkeyLabel
- Improved dark skin colors
Calendar
- Improved days separator gradient colors and positioning
ButtonPopup
ButtonPopuphave been completely removed from the library due to conflicts with existing features and overall poor functioning of the component, it might get reworked and added back to the library in the future but for now I don't have any actual plans for that
Utilities
- Fixed an issue with drives being identified as hidden in
NonHiddenFilterimplementation - Fixed vertical fill property usage in
AlignLayout - Improved
DirectoriesFilterto accept any directory-likeFiles - Added
Clone.nonNullClone ( ... )method allowing to always receive non-nullresult or an exception, adjusted all classes usingCloneto usenonNullClone ( ... )method if necessary - Added
Merge.nonNullMerge ( ... )methods for merging non-nullobjects and retrieving non-nullmerge result, adjusted all classes usingMergeto usenonNullMerge ( ... )method if necessary - Added
TextUtils.collectionToString ( ... )method
JavaDoc
- ColorChooserListener.java - Removed reference to missing generic
- Cleaned up some
StyleIdmentions across all classes - Fixed a few typos in JavaDoc of different classes
Internal changes
- All component descriptors have been updated with complete information about component's
Painters - Streamlined all UI implementations to use
PainterSupportinstead of custom code and calls - UI implementations do not own
Painterinstance anymore, those are stored inJComponent's client properties only - Removed some unnecessary method bridges from UI implementations
- Streamlined all
SpecificPainterimplementations to implementParameterizedPaintusePaintParametersinstead of custom setup methods - PainterSupport.java - Can now be used to access painter settings (padding, margin, shape etc) of any particular component
- PainterSupport.java - Added some of the missing margin and padding methods
- Paintable.java - Removed and merged methods into
StyleableAPI, also these methods might be changed soon - ShapeSupport.java, ShapeMethods.java, ShapeMethodsImpl.java - Removed and merged methods into
StyleableAPI - MarginSupport.java, MarginMethods.java, MarginMethodsImpl.java - Removed and merged methods into
StyleableAPI - PaddingSupport.java, PaddingMethods.java, PaddingMethodsImpl.java - Removed and merged methods into
StyleableAPI - Removed shape, padding and margin bridge methods from all UI implementations as redundant, similar bridge methods remain in components API
- ComponentStyle.java, ComponentStyleConverter.java - Adjusted margin and padding read and application
- AbstractDecorationPainter.java, WebBreadcrumb.java - Replaced old way of retrieving component
Painter - StyleManager.java - Simplified descriptor methods due to generics not being used
- WebRootPaneUI.java - Removed unnecessary check from
installWindowDecorations ()method that caused issues with newPainterusage - WebFrame.java, WebDialog.java, WebWindow.java - Changed custom
JRootPaneimplementations to useStyleId.autofor simplicity - WebFileChooserUI.java - Removed duplicate property check
- WebOptionPaneUI.java - Simplified and refactored code
- CheckIcon.java, CheckIcon.xsd, RadioIcon.java, RadioIcon.xsd, MixedIcon.java, MixedIcon.xsd - Removed redundant duplicate
sizesetting - TextRanges.java - Removed redundant part of ranges parsing
- AbstractMenuGenerator.java - Made grouping methods more strict
- AbstractTextureBackground.java - Removed redundant check method, made texture availability as a requirement
- AbstractTextureBackground.java - Fixed texture caching
- ListMergeBehavior.java - Simplified internal merge condition
- HotkeyLabelBackground.xsd, Backgrounds.xsd - Added missing XSD
- TableHeaderPainter.java - Proper cleanup of renderer pane in some edge cases
- PopupMenuPainter.java - Cleaned up the code and comments for future convenience
- Added
@NotNulland@Nullableannotations across all modified classes
Modules
There were no module changes in this update.
Here is a full list of modules available in v1.2.12:
weblaf-core- Module containing all basic managers, interfaces and classesweblaf-ui- Module containing all components, UIs, painters, skins, managers and related classesweblaf-plugin- Module containingPluginManager[ wiki guide ]weblaf-ninepatch-editor- Module containingNinePatchEditorweblaf-demo- Module containingDemoApplication
To use WebLaF as your application L&F you will need weblaf-core and weblaf-ui modules. Other modules are just extras for now.
Dependencies
To WebLaF in your Maven project you can use this dependency:
<dependency>
<groupId>com.weblookandfeel</groupId>
<artifactId>weblaf-ui</artifactId>
<version>1.2.12</version>
</dependency>It will automatically resolve all module and 3rd-party library dependencies.
Also WebLaF Maven artifact identifiers are equal to module names mentioned above, so if you need any of the optional modules - you can simply use them by their module name in Maven dependency.
If you're not using Maven - you can find all necessary dependencies for this update here:
https://github.com/mgarin/weblaf/tree/v1.2.12/lib
Migration notes [ v1.2.11 -> v1.2.12 ]
There were a few changes in v1.2.12 that break API.
Changed:
Cloneusage removed fromMergeconstructor,ClonePolicyreplaces it as one of constructor optionsSkipClonePolicyandPerformClonePolicyare two basic implementations ofClonePolicyavailableSkipClonePolicyis now used inMergeby default instead ofnullprovided asClonebeforeNodesDragViewHandleris not abstract anymore,nodesViewLimitcan now simply be provided in constructor
Renamed:
Styleable.getShape ()method have been renamed toStyleable.getPainterShape ()to avoid clashing with JDK7+ methods inWindowcomponents, this also fixes recently introduced problem with decoratedWeb-windows not being properly displayed on the screen under JDK7+
Removed:
ShapeUtilsrounded shape creation method have been removed as inconsistent and replaced withcreateBorderShape ( ... )andcreateFillShape ( ... )methods [ #598 ]ButtonPopuphave been completely removed from the library due to conflicts with existing features and overall poor functioning of the component, it might get reworked and added back to the library in the future but for now I don't have any actual plans for that
WebLaF v1.2.11
Release Notes
Styling
- Any padding or margin set from code won't ever be replaced by the styles now [ #546 ]
- Any background or foreground colors set from code won't ever be replaced by the styles now [ #562 ]
- Added new
decorationBorderproperty used inAbstractDecorationPainterwhich change can be fired onJComponentto forcefully update borders - Fixed NPEs and rendering issues for
<hr>and possibly some other HTML elements [ #561 ] - Fixed style application for cases when previous component skin is different from uninstalled one [ #591 ]
- Added new
AbstractProgressShapewhich is anIShapeimplementation for simple custom progress shapes - Renamed
WebSkintoWebLightSkinandDarkSkintoWebDarkSkinfor consistency WebLightSkinidentifier changed fromweblaf.web.skintoweblaf.light.skinfor consistency- All XML files of different skins and extensions renamed from
skin.xmlandextension.xmlto more specific names
IconManager [ wiki guide ]
- Added support for replaceable icons [ #348 ]
- Simplified
IconSetaddition and removal inIconManager - Any
find*methods inIconManagercan now returnnull, while anyget*methods will either return non-nullvalue or throw an exception - Changed
IconSetinto a proper base interface for any icon sets, it is now used across all related classes instead ofAbstractIconSet - Added new
RuntimeIconSetfor convenient runtime icon set creation - Renamed
IconDatatoIconSourcefor consistency - Renamed
ImageIconDatatoImageIconSourceandSvgIconDatatoSvgIconSourcefor consistency - Added various constructors to
ImageIconSourceandSvgIconSourcefor convenient runtime icon data creation - Added
IconSetExtensionfor providing skin-relatedIconSets exclusively
TaskManager [ #576 ]
- This is a new manager that handles all concurrent tasks within library except for animation which is currently handled by
AnimationManager - There are a few predefined
TaskGroups available that are used by various WebLaF parts, but they can be reconfigured - Each
TaskGroupis an object with unique identifier that represents a specific group of tasks - Multiple classes like
ThumbnailGeneratororAsyncTreeModelnow useTaskManagerfor concurrent tasks execution
General API
- Added new
Resourceinterface for any custom resource that can provideInputStream - Fully replaced old inconvenient
Resourceclass, all related places across the code have been adjusted accordingly - Added
DisabledCopySupplierandTransparentCopySupplierinterfaces for convenient modifiedIcons retrieval - Added
SvgGrayscale,SvgOpacityandAbstractSvgAdjustmentadjustments forSvgIcon - Changed SVG Salamander Maven dependency to v1.1.2.2 release from my own fork (see mgarin/svgSalamander)
SVG
- Removed
universesetting from allSvgIcons, completely separateSVGUniversewill be used for eachSvgIcon - Added method for attribute removal in
SvgIcon
LazyContent [ #577 ]
- This a new custom utility allowing convenient UI initialization involving heavy data loading
LazyLoadTriggerrepresents trigger types for data and UI loading startLazyStaterepresents all possible data and UI statesLazyContentListenercan be used for listening to data and UI events
LazyPanel [ #577 ]
- This is a custom
Containerthat provides means for more convenientLazyContentfeature usage
Overlay [ #568 ]
WebOverlaywas fully reworked and now has more convenient API for custom overlay locations and styling supportOverlayis a new interface for overlays to be added toWebOverlaycomponentFillOverlayandAlignedOverlayare two basicOverlayimplementations for most common use casesWebProgressOverlayhave also been reworked, it is based on newWebOverlayand it can display indeterminate progress on a custom canvas overlay
MemoryBar [ #589 ]
WebMemoryBarwas fully reworked and now fully supports styling
ScrollPane
- Added two new styles
hovering-extendingandtransparent-hovering-extendingwith both bars in extending mode - Fixed styles initialization order and incorrect corners removal [ #563 ]
- Fixed issues with
hoveringandextendingscroll pane options - Fixed issues with layout when RTL component orientation is used
DockablePane
WebDockablePanenow supports grouping between it's frames and has a newcompactflat style that uses it- Multiple
WebDockablePanelayout improvements to size distribution across visible frames - Added support for
areaPainterinWebDockablePanestyle, it allows restyling nine different areas of dockable pane - Maximized
WebDockableFramewill now cover the wholeWebDockablePanearea including sidebars WebDockableFramecannot be dragged anymore when maximized- Added support for RTL orientation in all dockable elements
TabbedPane
- Added support for leading and trailing
TabAreacomponents [ #539 ] - Added possibility to hide single tab in
JTabbedPane[ #74 ] - Added support for custom
StyleIds for each particular tab inJTabbedPane[ #578 ] - Added
tabSizesetting inTabContainerLayoutthat can be used to equalize sizes of all tabs [ #554 ] - Added new
equalstyle fortabbedpanethat keeps all tab sizes equal [ #554 ] - Renamed
rotatedstyle toverticalfor consistency with other components TabMenuItemnow extendsWebRadioButtonMenuIteminstead ofWebMenuItemand is now checked if represented tab is selected- Improved tab menu style for better representation of available and selected tabs
- Modified tab background and foreground colors will now be properly used for tab titles
- Added workaround for endless revalidation loop when tabbed pane is used in some custom layouts like
MigLayout - Fixed issue with adding new tab when there are existing tabs with
nulltab component - Added forceful hide for other tab components when tab with
nullcomponent is selected - Fixed exception that occurs when using mouse wheel on top of tabbed pane with zero tabs
- Disabled icons will only receive updates if tab is disabled to avoid preemptively generating them
Menus
- Added support for check box and radio button menu item icons separate from the state icon [ #573 ]
JMenuBarnow uses a fully custom UI class as base -WMenuBarUI- instead of the basic Swing one- Solved
JMenuBardisappearance issue on newer JDK issues [ #545 ] JPopupMenushadow have been slightly reduced andJMenuBarlayout was adjusted to offset first menu- Added default child style
popupmenufor allJPopupMenus created byJMenu - Added base
styledstyle for styled text support in all menu item components
ProgressBar
- Added new
ProgressShapeforJProgressBarprogress based onAbstractProgressShape - Removed hardcoded progress bounds from
ProgressBarPainter
StyledLabel
- Added maximum preferred text width setting support
Link
- Fixed
WebLinktranslation ofLinkActiontext if it is a language key [ #547 ]
Accordion
- Added support for
expanded,expanding,collapsedandcollapsingstates inAccordionPaneand it's header WebAccordionanimations can now be disabled through newanimatedsetting- Added QoL constructors and methods to
WebAccordioncomponent - Fixed issues appearing when incomplete states are being provided into
WebAccordionModel
CollapsiblePane
- Added support for
expanded,expanding,collapsedandcollapsingstates inWebCollapsiblePaneand it's header [ #552 ] WebCollapsiblePaneanimations can now be disabled through newanimatedsetting
Tree
- Massively improved performance of tree state restoration in
TreeUtilsfor large trees - Added some missing
WebTreenode-related methods and streamlined expand and collapse methods - Fixed various issues with drop location painting that appeared on edge cases
- Node selection will not occur on disabled tree with line selection mode anymore
- Removed redundand renderer disabled icon logic, it will now be provided by Look and Feel implementation
DateField
- Methods
setFont,setBackgroundandsetForegroundare now forwarded fromWebDateFieldto it's text field [ #580 ] - Added a better calculation of potential preferred field size [ #580 ]
- Calendar popup will not be closed anymore when date or date format is changed while it's open [ #579 ]
- Now creates a copy of provided
Dateand returns a copy of selectedDatewhen requested to avoid dealing with it's modification [ #579 ] - Re...
WebLaF v1.2.10
Release Notes
Focus of this update was bringing full styling support for JTabbedPane, JDesktopPane, JInternalFrame and JDesktopIcon components, providing proper hover and in-hovered-parent states support and some minor fixes and improvements to the styling system and various components.
Tabbed Pane
JTabbedPaneUI implementation have been revamped and now fully supports new styling system [ #35 #476 ]JTabbedPanenow supports custom WebLaF tooltips [ #202 ]
Desktop Pane
JDesktopPane,JInternalFrameandJDesktopIconUI implementations have been revamped and now fully support new styling system [ #523 #476 ]JInternalFrameresize affecting glass pane have been fixed [ #461 ]JInternalFramestyling issues should now all bex fixed [ #383 ]
Styling
- Added support for
hoverandin-hovered-parentstates support for all components [ #519 ] - New
HoverManagerhave been added to provide support for hover states [ wiki guide ]
Table
Tooltips
- Custom tooltip providers can now be provided through client properties in J-components [ #520 ]
Label
JLabelmnemonic functionality have been restored [ #542 ]
Collapsible Pane
WebCollapsiblePaneinitial state issues have been fixed [ #527 ]
Dockable Pane
- Workaround for
DockablePaneGlassLayerhave been added to better support AWT components [ #528 ]
Popup
- Improvements have been made to the way
WebPopuptracks it's close events [ #538 ]
Link
- Added
ActionListeners support forWebLinkcomponent [ #517 ]
You can find full list of issues resolved in this updated here:
https://github.com/mgarin/weblaf/milestone/21?closed=1
Modules
In this update I've separated 9-patch editor into a separate module as it is mostly used as a standalone app. While extra classes in the library do not affect it's performance anyhow - extra styles do affect the initial loading time of each skin. I'm going to move all other extra components that are not related to the core L&F into separate modules as well, StyleEditor is most probably next in the line.
Here is a full list of modules available in v1.2.10:
weblaf-core- Module containing all basic managers, interfaces and classesweblaf-ui- Module containing all components, UIs, painters, skins, managers and anything related to themweblaf-plugin- Module containingPluginManager[ wiki guide ]weblaf-ninepatch-editor- Module containingNinePatchEditorweblaf-demo- Module containingDemoApplication
To use WebLaF as your application L&F you will need weblaf-core and weblaf-ui modules. Other modules are just extras for now.
Dependencies
To WebLaF in your Maven project you can use this dependency:
<dependency>
<groupId>com.weblookandfeel</groupId>
<artifactId>weblaf-ui</artifactId>
<version>1.2.10</version>
</dependency>It will automatically resolve all module and 3rd-party library dependencies.
Also WebLaF Maven artifact identifiers are equal to module names mentioned above, so if you need any of the optional modules - you can simply use them by their module name in Maven dependency.
If you're not using Maven - you can find all necessary dependencies for v1.2.10 update here:
https://github.com/mgarin/weblaf/tree/v1.2.10/lib
WebLaF v1.2.9
Release Notes
This update brings first look at brand new styling system that is now used by most components allowing agile configuration of their styles through XML-based style files. Components that are not yet fully supported will be updated in next few smaller updates.
Due to the size of the update - it's approximately 800 commits away from previous version - I'll only be listing major and most noticeable changes and added features.
Also a lot of APIs have been changed or completely replaced, some of the features have been replaced or even removed, so you can consider this update as an almost fresh start for the library.
While I generally do recommend moving over to this new version - it might take time and extra effort to port from older ones. But if you have any questions about how to migrate from previous versions - feel free to submit a question to issue tracker, ask me online in our gitter chat or write an email directly to me.
Styling [ wiki guide ]
- New styling system have been implemented and available for most components
- Styles can be modified through custom
Skins andSkinExtensions and set intoStyleManager - All current
SkinandSkinExtensionimplementations are XML-based - Each
Skincontains styles for all existing component types and can contain custom ones as well - Each
SkinExtensioncan only contain custom styles that are not used by default components SkinListenercan be used to listen to global skin changesStyleListenercan be used to listen to component instance style changes- XSD schemes are available for skin and extension XML files validation
Icons [ #348 ] [ wiki guide ]
- Support for convenient use of SVG icons have been added through
SvgIconandIconSets - Most icons used across the L&F can be modified through
IconSets and set intoIconManager - All current
IconSetimplementations are XML-based and mostly use SVG icons - Current
IconManagerimplementation is just a preview and it will receive major improvements - XSD schemes are available for icon set XML files validation
Skins & IconSets
- There are currently two skins available -
WebSkinandDarkSkin- basically light & dark themes - There are currently two icon sets available -
WebIconSetandDarkIconSet- for light & dark themes
Animation
- First iteration of the
AnimationManagerhave been added with this update AnimationManagerprovides unified API for playing variousTransitions throughAnimationPipelines- Each
AnimationPipelineis used to unify multipleTransitionsto improve overall performance - Each
Transitioninstance represents transition from value A to B of the same type TransitionListeners can be used to receiveTransitioneventsTransitionTypeimplementations define types for which transitions are supportedEventHandlerimplementation can be provided intoAnimationManagerto define thread used for eventsEasingandFrameRateimplementations can be used to defineTransitionsettings
WebStyledLabel [ wiki guide ]
WebStyledLabelis a brand new component that supports styled text displayWebStyledLabelis now the preferred option for rendering simple styled text instead of HTML contentWebStyledLabelsupports both text style syntax and custom style ranges set from the codeWebStyledLabelstyle can be fully customizedStyledLabelTextandAbstractStyledTextContentare core of styled label and alsoIContentimplementations therefore they can be used in other components to provide styled text support
Link [ wiki guide ]
WebLinkhave been revamped and it's style can now be fully customizedWebLinkis now based onWebStyledLabeland thus supports styled text contentWebLinkcan now perform custom actions provided throughLinkActionimplementationsUrlLinkAction,FileLinkActionandEmailLinkActionare defaultLinkActionimplementations
Dockable Framework [ #37 ] [ wiki guide ]
WebDockablePaneandWebDockableFrameare the first implementation of dockable frameworkWebDockablePanesupports saving and lazily restoring it's stateWebDockablePaneandWebDockableFramestyles can be fully customizedDockableFrameListenercan be used to track frame state changes
Multi Split Pane [ #477 ]
WebMultiSplitPaneis the first implementation of multi-split paneWebMultiSplitPanesupports saving and restoring it's stateWebMultiSplitPanestyle can be fully customizedMultiSplitResizeListenercan be used to track view resize eventsMultiSplitExpansionListenercan be used to track view expansion events
Collapsible Pane & Accordion [ #494 ]
WebCollapsiblePanehave been revamped and it's style can now be fully customizedWebCollapsiblePanenow supports saving and restoring it's stateCollapsiblePaneListenercan be used to track expansion and collapse eventsWebAccordionhave been revamped and it's style can now be fully customizedWebAccordionnow supports saving and lazily restoring it's stateAccordionListenercan be used to track expansion and collapse events
Popup [ wiki guide ]
WebPopupis a brand new implementation of popup window made for convenient useWebPopupstyle can be fully customizedPopupListenercan be used to listen to popup window events
WebCanvas
WebCanvasis a brand new light component that can be used for any custom purposesWebCanvasextends SwingJComponentunlikejava.awt.Canvaswhich extends AWTComponentWebCanvassupports customizablePainterand has easily modifiable decoration states
WebDateField
WebDateFieldhave been revamped and it's style can now be fully customizedDateListenercan be used to track date selection events
Plugin Manager [ wiki guide ]
PluginManageris a new feature allowing you to conveniently load custom plugins in runtimePluginManageris implemented in a separatepluginmodulePlugins can be loaded from JAR files or provided directly in the code if already loaded
Language Manager [ #272 ] [ wiki guide ]
LanguageManagernow supports differentLocalesLanguageinstances can now be used to simultaneously translate to multiple languagesLanguageManagerwill not adjust JVMLocaleby default anymore [ #457 #68 ]LanguageLocaleUpdatercan be used to automatically adjust JVMLocale[ #457 ]LanguageManagerhave been revamped and optimized to increase startup and overall performance
Notification Manager
NotificationManagerhave been revamped to separate notification types and fix memory leaksNotificationManagercan now display notifications either outside or inside of the application windowWebNotificationhave been revamped and now extendsWebPopupWebNotificationstyle can now be fully customized
Utilities
Cloneis a new configurable utility class that provides advanced options for cloning various objectsMergeis a new configurable utility class that provides advanced options for merging various object together- Added
@NotNulland@Nullableannotations for code writing and usage convenience - Added multiple JDK8 classes like
Objects,Supplier,Consumeretc, they will be replaced in v2.0.0
Demo Application
- Brand new
DemoApplicationis available in a separatedemomodule that contains multiple code examples DemoApplicationnow showcases source code and styles of presented examples in separate dockable framesDemoApplicationuses it's own skin extensions for various components and icon sets
Components State
WebCanvashave been added and it's style can be fully customizedWebImagehave been revamped and it's style can now be fully customizedWebLabelhave been revamped and it's style can now be fully customizedWebStyledLabelhave been revamped and it's style can now be fully customizedWebToolTiphave been revamped and it's style can now be fully customizedWebLinkhave been revamped and it's style can now be fully customizedWebButtonhave been revamped and it's style can now be fully customizedWebSplitButtonhave been revamped and it's style can now be partially customizedWebToggleButtonhave been revamped and it's style can now be fully customizedWebCheckBoxhave been revamped and it's style can now be fully customizedWebRadioButtonhave been revamped and it's style can now be fully customizedWebTristateCheckBoxhave been revamped and it's style can now be fully customizedWebPanelhave been revamped and it's style can now be fully customizedGroupPanehave been added and it's style can be fully customizedWebInnerPopuphaven't been changed, but it's style can now be fully customizedWebScrollBarhave been revamped and it's style can now be fully customizedWebViewporthave been revamped and it's style can now be fully customized- **`WebScrollPa...
WebLaF v1.28
Release Notes
Starting with this release all release notes will be included into a big update posts which will be added on WebLaF official site the same day or on the next day after the release.
Project
- WebLaF sources separated into three modules:
core,uianddemo - WebLaF ANT build script redesigned for new structure and improved with more options
- StyleEditor moved into extended package
- Array utilities moved into a separate class
Libraries
- Slf4j and its simple implementation libraries added
- XStream library updated to newest version
- XStream deprecated dependencies removed
Features
- WebDocumentPane custom component added
- PluginManager added to support hot-loadable plugins within your application
- WebDynamicMenu component added
- WebHeavyWeightPopup component added
- DragManager preview version added
- PopupMenuGenerator preview version added
- Log feature added to simplify application logging scheme
- EnumLazyIconProvider state-dependant icons retrieval feature added
Improvements
- Additional switch to enable per-pixel window transparency on Linux systems [ #126 ]
- PopupManager modal methods improvements [ #122 ]
- PopupManager exceptions improvements [ #125 ]
- WebCollapsiblePane focus improvements [ #124 ]
- ReflectUtils major improvements [ #122 ]
- Ignored properties can now be included in component/ui/painter properties lists [ #110 ]
- WebNotificationPopup default icon position changed to center
- Tree multiselector bounds limitation added
- Major performance improvements for ReflectUtils methods
- StyleEditor visual representation slightly improved
- SizeMethods is now implemented by WebToolBar
- WebTextArea input prompt text support added
- Improved WebComboBox.getSelectedIndex method so it now properly handles model null value
- Removed unnecessary CompareUtils methods
- WebAsyncTree node structure update methods added
- Additional CollectionUtils methods added
- VerticalFlowLayout minor improvement
- PreferredCardLayout added
- WebTimer additional
repeatmethods added - Language keys can now be used as WebOptionPane option strings and will be translated properly
- Clicks to edit added into AbstractListCellEditor
- WebDockableFrame language updater added
- Language switch method added to allow switching between supported languages
- PopOverListener added to enable some of pop-over events listening
- WebProgressBarUI visual improvements for indeterminate state
Bug fixes
- Combobox rendering for null and empty values fixed [ #136 ]
- setCurrentFile now properly sets selected file even if that file doesn't exist [ #135 ]
- Hotkey tooltips display style fixed [ #127 ]
- WebPopOver dialog-like decoration with laf-decorated frame fixed [ #126 ]
- Directional WebPopOver location fixes [ #116 ]
- WebButtonPopup font copy fix [ #124 ]
- FileUtils.getDiskRoots() method fix [ #121 ]
- Minor style reference issue fix [ #119 ]
- JSpinner issue workaround added [ #118 ]
- WebFileDrop visual and functional fixes [ #86 ]
- Window transparency fix for Mac OS X for JDK 7 and 8 [ #79 ]
- WebCollapsiblePane content update fix (thanks to Roc Zhao)
- A few critical bugfixes and improvements for StyleManager skin behavior made
- WebColorChooserField pipette popup location update fix
- Major AsyncTreeTransferHandler fixes for some drop operations
- WebPopupMenu XML skin fix
Demo application
- WebDocumentPane example added into demo application
- WebDynamicMenu example added into demo application
WebLaF v1.27
Release Notes
It might seem that not a lot of work was done in the last few months, but its not true. I have completed the hardest part of components styling - I was able to solve all the problems I have encountered without making any "stinky" workarounds in the code. So in the end - there will be a few styling layers for each component and you can modify each of them to alter component's view.
So this update introduces first beta version of StyleManager and affects a lot of aspects of WebLaF library. Be aware that it might make your projects non-compilable as some of deprecated features were removed or replaced with their updated versions. Such changes might occur a few times more until the final stable release. To make things clear i have posted a large separate guide about new styling system and included features: https://github.com/mgarin/weblaf/wiki/How-to-use-StyleManager
This update does not provide a fully-functional StyleManager version but gives you a brief preview of WebLaF styling system and helps you to prepare for upcoming changes. In next few updates i am going to release all of the rest specific Painter implementations for Swing and WebLaF components to complete StyleManager, so WebLaF will finally become fully stylable and flexible. Futher updates will include the rest of the features everyone requested a lot of times like Dark theme and additional components.
So hold tight and be ready for more exciting updates!
Features
- StyleManager core functionality added
- Skins (aka themes) support added
- Default WebLaF skin added
- Alpha version of StyleEditor tool added
- NinePatchEditor image rotation features added
Improvements
- WebInternalFrame buttons made non-focusable [ #90 ]
- WebScrollPane method to hide scroll bar buttons added [ #95 ]
- WebButtonGroup style updates and component add improvements [ #96 ]
- WebButton decoration improvements for WebButtonGroup [ #105 ]
- JScrollBarSettingsProcessor added for JScrollBar value auto-save possibility
- All default painters are now custom and moved into separate skin package
- Redundant PainterMethods interface removed
- All specific style settings are now contained inside painters only
- Text representation for UniqueNode improved
Bug fixes
- Option "OptionPane.isYesLast" is now set to true for Mac OS X [ #55 ]
- PainterSupport and FocusManager memory leak fixed [ #80 ]
- WebCalendar month/year switch for last days of month fixed [ #82 ]
- Focus tracking issues for various component fixed [ #83 ]
- Maximize function for decorated windows fixed [ #85 ]
- WebFileDrop settings and selected files fixed [ #86 ]
- WebPopupPainter fixed for zero shadeWidth/round case [ #87 ]
- WebPopupMenuUI NullPointerException fixed [ #91 ](thanks to @Sciss)
- WebPopupPainter bottom side corner fixed [ #93 ]
- Checkbox animation can now be disabled by default [ #99 ](thanks to @jordeu)
- Fixed window transparency update for later versions of JDK 7 [ #72 #79 #104 ]
- WebDirectoryChooser roots filtering and display fixed [ #107 ]
- Checkbox state is now updated when checkbox model is changed (thanks to @jordeu)
- Popup menu margin properly used within PopupMenuPainter to draw corner fill now
- NinePatchIcon painting within custom bounds fixed
- WebScrollBarUI preferred size fixed
- WebAsyncTree root sorting/filtering exception fixed
- WebButtonUI margin for hidden sides fixed
- NinePatchIcon cache initialization fixed
- WebListUI rollover cell highlight fixed
- Default SettingsProcessors a few minor issues fixed
Demo application
- Improvements made to some demo examples affected by StyleManager
- Heavy animation switch fixed
WebLaF v1.26
Release Notes
Within next few updates i will add a lot of custom component painters and other StyleManager-related stuff (including the StyleManager itself) as this is the most requested feature so far and i will try to finish it as fast as it is possible. With this update first full custom painters support was added into WebPopupMenuUI and WebScrollBarUI classes.
Features
- WebPopOver dialog added
- WebSplitButton component added
- WebTreeUI drop location painting added
- AsyncTreeTransferHandler added for quick DnD implementation in async trees
- Full painter support implemented for WebScrollBarUI and WebPopupMenuUI
- ShapeCache added to simplify Shape objects caching depending on shape settings
- PainterShapeProvider interface added to allow painters provide their base shape
- InnerShadePainter added
- FormLayout added
- SingleAlignPanel added
- WebPopupMenuSeparator component added
- DoubleMap added
Improvements
- Improved support for runtime LaF switching [ #77 ]
- Added property to honor non-UIResource component borders ( thanks to @bobbylight )
- Precomputed OS name and type added into SystemUtils ( thanks to @ianp )
- Major improvements made to Painter interface
- Disabled icons caching added to improve performance
- Empty title and max title width added into WebRootPaneUI style settings
- Supported languages can now be read from dictionary and record
- Enumeration list->string and string->list conversion methods added into TextUtils
- JTabbedPane language updater added
- WebCollapsiblePane language updater added
- ProxyManager proxy autodetection is now disabled by default
- WebCheckBoxList checked elements retrieval method added
- WebPanel provideShape method can now provide painter shape if one specified
- WebPopup shape is now determined by mouse events and properly handled
- WebAsyncTreeCellRenderer failed state icon generation simplified
- PopupMenuAdapter added to simplify PopupMenuListener usage
- WebAsyncTree nodes can now be retrieved using their ID
- Massive nodes removal method added into WebAsyncTree
- AsyncTreeModel improvements made for asynchronous data update
- WebTree multiply/single selection switch method added
- WebTreeUI selection behavior improved for full-line selection mode
- TableLayout constructors and methods improved
- TableLayout class moved to com.alee.extended.layout package
- File name length limit added into WebFileChooserPanel history list
- FocusManager thread-safe trackers iteration
Bug fixes
- WebRootPaneUI decoration with empty title fixed [ #70 ]
- Notification display with no focused window fixed [ #66 ]
- WebComboBoxUI wheel scrolling through choices fixed
- Window "resizable" property changes are now properly listened in WebRootPaneUI
- ReflectUtils type check for null arguments fix
- LanguageManager keys caching fixed
- WindowSettingsProcessor settings load fixed
- AbstractLayoutManager default behavior fixed
- WebDateField null date value case fixed
- WebListUI rollover cell update fixed
- WebImage disabled state fixed
- FocusManager focus tracking fixed
- WebTreeUI selection now properly uses tree border insets
- WebTreeUI horizontal and vertical lines repainting fixed
- WebAsyncTree sorter and filter update right on initialization fixed
- WebAsyncTree listeners removal method fixed
- AsyncTreeModel listeners removal method fixed
- AsyncTreeModel now properly stops tree editing on node reload
- AsyncTreeModel child reload fixed
- AsyncTreeModel child requests threading fixed
- WebToolBarUI incorrect buttons border updates fixed
- WebFileTreeCellRenderer icon fixed
Demo application
- WebSplitButton demo examples added
- WebPopOver demo examples added
WebLaF v1.25
Features
- Tree data can now be provided asynchronously inside AsyncTreeDataProvider
- Child nodes load failed state added into async tree structure
- WebCheckBoxTree check state change listener added
- DataRunnable interface added
Improvements
- ProxyManager proxy auto-detection can now be switched off
- Cell editor listener can now be set directly into the tree
- AsyncUniqueNode memory usage improvements
- Optimized checked nodes list retrieval method added
- FileUtils writeStringToFile method added
Bug fixes
- WebFileChooser size issue with empty initial folder fixed [ #49 ]
- ImageTransition without effects NullPointerException fix
- Small French translation fixes
- Default language initialization fix
- HotkeysManager concurrent modification fixes
- WebMemoryBar tooltip position fix
- AlignLayout vertical alignment fix
- MenuBarStyle class file name fix
- LanguageManager setLanguage method fix
WebLaF v1.24
Features
- Each WebCheckBoxTree checkbox can now be hidden and disabled separately
- WebCheckBoxTree recursive checking option added
- Painter and margin support added for WebSliderUI
- Painters are able to force component updates now
- CustomFileFilter class added to simplify new filters creation
Improvements
- WebAsyncTreeFilterField translation added
- DefaultTreeCheckingModel performance improved
- Default check and radio menu item icons added
- Check and radio menu item checked background can now be disabled
- Demo application code links highlight improvements
- RSyntaxTextArea library updated to 2.5.0 version
Bug fixes
- WebFileChooserUI filters and hidden files display fixed [ #46 ]
- WebFileChooserUI initial orientation fixed
- WebTreeUI.java initial orientation fixed
- WebLinkLabel url/email/file link types fixed
- Popup menu dropdown corner position fix for RTL orientation
- File filter description display fixed
- Language dictionaries merging fixed
- DefaultFileFilter renamed to AbstractFileFilter