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
WebMemoryBar
descriptor icon [ #608 ]
JTabbedPane
- Default
JTabbedPane
'sFont
is now properly inherited by allTab
s [ #631 ]
JSpinner
- Fixed error that could appear with
JSpinner
usingNumberEditor
under Java 9+ [ #612 ]
JComboBox
- Fixed combobox popup positioning under Java 9+ [ #630 ]
PluginManager
- Removed usage of
DirectoriesFilter
fromPluginManager
due toFileSystemView
usage 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
FontUtils
for convenientFontUIResource
retrieval andUIResource
Font
replacement
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 containingNinePatchEditor
weblaf-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
WebShape
implementations ofIShape
have 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 inWindow
components, this also fixes recently introduced problem with decoratedWeb
-windows not being properly displayed on the screen under JDK7+
Dockable framework
- Fixed
WebDockableFrame
sidebar button border color for default style [ #596 ] - Minor translation adjustments for
WebDockableFrame
header buttons [ #601 ]
PopupMenu
- Fixed
JPopupMenu
window shape cleanup on menu becoming invisible, this should fix a set of issues that could appear on Linux and even Windows systems [ #602 ] - Setting
popupMenuWay
will now be preserved across multiple popup menu displays [ #603 ]
MemoryBar
- Added support for
MemoryBarListener
inWebMemoryBar
to provide a way to execute pre- and post- GC actions
HotkeyLabel
- Improved dark skin colors
Calendar
- Improved days separator gradient colors and positioning
ButtonPopup
ButtonPopup
have 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
NonHiddenFilter
implementation - Fixed vertical fill property usage in
AlignLayout
- Improved
DirectoriesFilter
to accept any directory-likeFile
s - Added
Clone.nonNullClone ( ... )
method allowing to always receive non-null
result or an exception, adjusted all classes usingClone
to usenonNullClone ( ... )
method if necessary - Added
Merge.nonNullMerge ( ... )
methods for merging non-null
objects and retrieving non-null
merge result, adjusted all classes usingMerge
to usenonNullMerge ( ... )
method if necessary - Added
TextUtils.collectionToString ( ... )
method
JavaDoc
- ColorChooserListener.java - Removed reference to missing generic
- Cleaned up some
StyleId
mentions 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
Painter
s - Streamlined all UI implementations to use
PainterSupport
instead of custom code and calls - UI implementations do not own
Painter
instance anymore, those are stored inJComponent
's client properties only - Removed some unnecessary method bridges from UI implementations
- Streamlined all
SpecificPainter
implementations to implementParameterizedPaint
usePaintParameters
instead 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
Styleable
API, also these methods might be changed soon - ShapeSupport.java, ShapeMethods.java, ShapeMethodsImpl.java - Removed and merged methods into
Styleable
API - MarginSupport.java, MarginMethods.java, MarginMethodsImpl.java - Removed and merged methods into
Styleable
API - PaddingSupport.java, PaddingMethods.java, PaddingMethodsImpl.java - Removed and merged methods into
Styleable
API - 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 newPainter
usage - WebFrame.java, WebDialog.java, WebWindow.java - Changed custom
JRootPane
implementations to useStyleId.auto
for 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
size
setting - 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
@NotNull
and@Nullable
annotations 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 containingNinePatchEditor
weblaf-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:
Clone
usage removed fromMerge
constructor,ClonePolicy
replaces it as one of constructor optionsSkipClonePolicy
andPerformClonePolicy
are two basic implementations ofClonePolicy
availableSkipClonePolicy
is now used inMerge
by default instead ofnull
provided asClone
beforeNodesDragViewHandler
is not abstract anymore,nodesViewLimit
can now simply be provided in constructor
Renamed:
Styleable.getShape ()
method have been renamed toStyleable.getPainterShape ()
to avoid clashing with JDK7+ methods inWindow
components, this also fixes recently introduced problem with decoratedWeb
-windows not being properly displayed on the screen under JDK7+
Removed:
ShapeUtils
rounded shape creation method have been removed as inconsistent and replaced withcreateBorderShape ( ... )
andcreateFillShape ( ... )
methods [ #598 ]ButtonPopup
have 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
decorationBorder
property used inAbstractDecorationPainter
which change can be fired onJComponent
to 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
AbstractProgressShape
which is anIShape
implementation for simple custom progress shapes - Renamed
WebSkin
toWebLightSkin
andDarkSkin
toWebDarkSkin
for consistency WebLightSkin
identifier changed fromweblaf.web.skin
toweblaf.light.skin
for consistency- All XML files of different skins and extensions renamed from
skin.xml
andextension.xml
to more specific names
IconManager [ wiki guide ]
- Added support for replaceable icons [ #348 ]
- Simplified
IconSet
addition and removal inIconManager
- Any
find*
methods inIconManager
can now returnnull
, while anyget*
methods will either return non-null
value or throw an exception - Changed
IconSet
into a proper base interface for any icon sets, it is now used across all related classes instead ofAbstractIconSet
- Added new
RuntimeIconSet
for convenient runtime icon set creation - Renamed
IconData
toIconSource
for consistency - Renamed
ImageIconData
toImageIconSource
andSvgIconData
toSvgIconSource
for consistency - Added various constructors to
ImageIconSource
andSvgIconSource
for convenient runtime icon data creation - Added
IconSetExtension
for providing skin-relatedIconSet
s 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
TaskGroup
s available that are used by various WebLaF parts, but they can be reconfigured - Each
TaskGroup
is an object with unique identifier that represents a specific group of tasks - Multiple classes like
ThumbnailGenerator
orAsyncTreeModel
now useTaskManager
for concurrent tasks execution
General API
- Added new
Resource
interface for any custom resource that can provideInputStream
- Fully replaced old inconvenient
Resource
class, all related places across the code have been adjusted accordingly - Added
DisabledCopySupplier
andTransparentCopySupplier
interfaces for convenient modifiedIcon
s retrieval - Added
SvgGrayscale
,SvgOpacity
andAbstractSvgAdjustment
adjustments forSvgIcon
- Changed SVG Salamander Maven dependency to v1.1.2.2 release from my own fork (see mgarin/svgSalamander)
SVG
- Removed
universe
setting from allSvgIcon
s, completely separateSVGUniverse
will 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
LazyLoadTrigger
represents trigger types for data and UI loading startLazyState
represents all possible data and UI statesLazyContentListener
can be used for listening to data and UI events
LazyPanel [ #577 ]
- This is a custom
Container
that provides means for more convenientLazyContent
feature usage
Overlay [ #568 ]
WebOverlay
was fully reworked and now has more convenient API for custom overlay locations and styling supportOverlay
is a new interface for overlays to be added toWebOverlay
componentFillOverlay
andAlignedOverlay
are two basicOverlay
implementations for most common use casesWebProgressOverlay
have also been reworked, it is based on newWebOverlay
and it can display indeterminate progress on a custom canvas overlay
MemoryBar [ #589 ]
WebMemoryBar
was fully reworked and now fully supports styling
ScrollPane
- Added two new styles
hovering-extending
andtransparent-hovering-extending
with both bars in extending mode - Fixed styles initialization order and incorrect corners removal [ #563 ]
- Fixed issues with
hovering
andextending
scroll pane options - Fixed issues with layout when RTL component orientation is used
DockablePane
WebDockablePane
now supports grouping between it's frames and has a newcompact
flat style that uses it- Multiple
WebDockablePane
layout improvements to size distribution across visible frames - Added support for
areaPainter
inWebDockablePane
style, it allows restyling nine different areas of dockable pane - Maximized
WebDockableFrame
will now cover the wholeWebDockablePane
area including sidebars WebDockableFrame
cannot be dragged anymore when maximized- Added support for RTL orientation in all dockable elements
TabbedPane
- Added support for leading and trailing
TabArea
components [ #539 ] - Added possibility to hide single tab in
JTabbedPane
[ #74 ] - Added support for custom
StyleId
s for each particular tab inJTabbedPane
[ #578 ] - Added
tabSize
setting inTabContainerLayout
that can be used to equalize sizes of all tabs [ #554 ] - Added new
equal
style fortabbedpane
that keeps all tab sizes equal [ #554 ] - Renamed
rotated
style tovertical
for consistency with other components TabMenuItem
now extendsWebRadioButtonMenuItem
instead ofWebMenuItem
and 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
null
tab component - Added forceful hide for other tab components when tab with
null
component 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 ]
JMenuBar
now uses a fully custom UI class as base -WMenuBarUI
- instead of the basic Swing one- Solved
JMenuBar
disappearance issue on newer JDK issues [ #545 ] JPopupMenu
shadow have been slightly reduced andJMenuBar
layout was adjusted to offset first menu- Added default child style
popupmenu
for allJPopupMenu
s created byJMenu
- Added base
styled
style for styled text support in all menu item components
ProgressBar
- Added new
ProgressShape
forJProgressBar
progress based onAbstractProgressShape
- Removed hardcoded progress bounds from
ProgressBarPainter
StyledLabel
- Added maximum preferred text width setting support
Link
- Fixed
WebLink
translation ofLinkAction
text if it is a language key [ #547 ]
Accordion
- Added support for
expanded
,expanding
,collapsed
andcollapsing
states inAccordionPane
and it's header WebAccordion
animations can now be disabled through newanimated
setting- Added QoL constructors and methods to
WebAccordion
component - Fixed issues appearing when incomplete states are being provided into
WebAccordionModel
CollapsiblePane
- Added support for
expanded
,expanding
,collapsed
andcollapsing
states inWebCollapsiblePane
and it's header [ #552 ] WebCollapsiblePane
animations can now be disabled through newanimated
setting
Tree
- Massively improved performance of tree state restoration in
TreeUtils
for large trees - Added some missing
WebTree
node-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
,setBackground
andsetForeground
are now forwarded fromWebDateField
to 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
Date
and returns a copy of selectedDate
when 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
JTabbedPane
UI implementation have been revamped and now fully supports new styling system [ #35 #476 ]JTabbedPane
now supports custom WebLaF tooltips [ #202 ]
Desktop Pane
JDesktopPane
,JInternalFrame
andJDesktopIcon
UI implementations have been revamped and now fully support new styling system [ #523 #476 ]JInternalFrame
resize affecting glass pane have been fixed [ #461 ]JInternalFrame
styling issues should now all bex fixed [ #383 ]
Styling
- Added support for
hover
andin-hovered-parent
states support for all components [ #519 ] - New
HoverManager
have 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
JLabel
mnemonic functionality have been restored [ #542 ]
Collapsible Pane
WebCollapsiblePane
initial state issues have been fixed [ #527 ]
Dockable Pane
- Workaround for
DockablePaneGlassLayer
have been added to better support AWT components [ #528 ]
Popup
- Improvements have been made to the way
WebPopup
tracks it's close events [ #538 ]
Link
- Added
ActionListener
s support forWebLink
component [ #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 containingNinePatchEditor
weblaf-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
Skin
s andSkinExtension
s and set intoStyleManager
- All current
Skin
andSkinExtension
implementations are XML-based - Each
Skin
contains styles for all existing component types and can contain custom ones as well - Each
SkinExtension
can only contain custom styles that are not used by default components SkinListener
can be used to listen to global skin changesStyleListener
can 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
SvgIcon
andIconSet
s - Most icons used across the L&F can be modified through
IconSet
s and set intoIconManager
- All current
IconSet
implementations are XML-based and mostly use SVG icons - Current
IconManager
implementation 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 -
WebSkin
andDarkSkin
- basically light & dark themes - There are currently two icon sets available -
WebIconSet
andDarkIconSet
- for light & dark themes
Animation
- First iteration of the
AnimationManager
have been added with this update AnimationManager
provides unified API for playing variousTransition
s throughAnimationPipeline
s- Each
AnimationPipeline
is used to unify multipleTransitions
to improve overall performance - Each
Transition
instance represents transition from value A to B of the same type TransitionListener
s can be used to receiveTransition
eventsTransitionType
implementations define types for which transitions are supportedEventHandler
implementation can be provided intoAnimationManager
to define thread used for eventsEasing
andFrameRate
implementations can be used to defineTransition
settings
WebStyledLabel [ wiki guide ]
WebStyledLabel
is a brand new component that supports styled text displayWebStyledLabel
is now the preferred option for rendering simple styled text instead of HTML contentWebStyledLabel
supports both text style syntax and custom style ranges set from the codeWebStyledLabel
style can be fully customizedStyledLabelText
andAbstractStyledTextContent
are core of styled label and alsoIContent
implementations therefore they can be used in other components to provide styled text support
Link [ wiki guide ]
WebLink
have been revamped and it's style can now be fully customizedWebLink
is now based onWebStyledLabel
and thus supports styled text contentWebLink
can now perform custom actions provided throughLinkAction
implementationsUrlLinkAction
,FileLinkAction
andEmailLinkAction
are defaultLinkAction
implementations
Dockable Framework [ #37 ] [ wiki guide ]
WebDockablePane
andWebDockableFrame
are the first implementation of dockable frameworkWebDockablePane
supports saving and lazily restoring it's stateWebDockablePane
andWebDockableFrame
styles can be fully customizedDockableFrameListener
can be used to track frame state changes
Multi Split Pane [ #477 ]
WebMultiSplitPane
is the first implementation of multi-split paneWebMultiSplitPane
supports saving and restoring it's stateWebMultiSplitPane
style can be fully customizedMultiSplitResizeListener
can be used to track view resize eventsMultiSplitExpansionListener
can be used to track view expansion events
Collapsible Pane & Accordion [ #494 ]
WebCollapsiblePane
have been revamped and it's style can now be fully customizedWebCollapsiblePane
now supports saving and restoring it's stateCollapsiblePaneListener
can be used to track expansion and collapse eventsWebAccordion
have been revamped and it's style can now be fully customizedWebAccordion
now supports saving and lazily restoring it's stateAccordionListener
can be used to track expansion and collapse events
Popup [ wiki guide ]
WebPopup
is a brand new implementation of popup window made for convenient useWebPopup
style can be fully customizedPopupListener
can be used to listen to popup window events
WebCanvas
WebCanvas
is a brand new light component that can be used for any custom purposesWebCanvas
extends SwingJComponent
unlikejava.awt.Canvas
which extends AWTComponent
WebCanvas
supports customizablePainter
and has easily modifiable decoration states
WebDateField
WebDateField
have been revamped and it's style can now be fully customizedDateListener
can be used to track date selection events
Plugin Manager [ wiki guide ]
PluginManager
is a new feature allowing you to conveniently load custom plugins in runtimePluginManager
is implemented in a separateplugin
modulePlugin
s can be loaded from JAR files or provided directly in the code if already loaded
Language Manager [ #272 ] [ wiki guide ]
LanguageManager
now supports differentLocale
sLanguage
instances can now be used to simultaneously translate to multiple languagesLanguageManager
will not adjust JVMLocale
by default anymore [ #457 #68 ]LanguageLocaleUpdater
can be used to automatically adjust JVMLocale
[ #457 ]LanguageManager
have been revamped and optimized to increase startup and overall performance
Notification Manager
NotificationManager
have been revamped to separate notification types and fix memory leaksNotificationManager
can now display notifications either outside or inside of the application windowWebNotification
have been revamped and now extendsWebPopup
WebNotification
style can now be fully customized
Utilities
Clone
is a new configurable utility class that provides advanced options for cloning various objectsMerge
is a new configurable utility class that provides advanced options for merging various object together- Added
@NotNull
and@Nullable
annotations for code writing and usage convenience - Added multiple JDK8 classes like
Objects
,Supplier
,Consumer
etc, they will be replaced in v2.0.0
Demo Application
- Brand new
DemoApplication
is available in a separatedemo
module that contains multiple code examples DemoApplication
now showcases source code and styles of presented examples in separate dockable framesDemoApplication
uses it's own skin extensions for various components and icon sets
Components State
WebCanvas
have been added and it's style can be fully customizedWebImage
have been revamped and it's style can now be fully customizedWebLabel
have been revamped and it's style can now be fully customizedWebStyledLabel
have been revamped and it's style can now be fully customizedWebToolTip
have been revamped and it's style can now be fully customizedWebLink
have been revamped and it's style can now be fully customizedWebButton
have been revamped and it's style can now be fully customizedWebSplitButton
have been revamped and it's style can now be partially customizedWebToggleButton
have been revamped and it's style can now be fully customizedWebCheckBox
have been revamped and it's style can now be fully customizedWebRadioButton
have been revamped and it's style can now be fully customizedWebTristateCheckBox
have been revamped and it's style can now be fully customizedWebPanel
have been revamped and it's style can now be fully customizedGroupPane
have been added and it's style can be fully customizedWebInnerPopup
haven't been changed, but it's style can now be fully customizedWebScrollBar
have been revamped and it's style can now be fully customizedWebViewport
have 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
,ui
anddemo
- 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
repeat
methods 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