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 customizedWebScrollPane
have been revamped and it's style can now be fully customizedWebProgressBar
have been revamped and it's style can now be fully customizedWebSplitPaneDivider
have been added and it's style can be fully customizedWebSplitPane
have been revamped and it's style can now be fully customizedWebMultiSplitPaneDivider
have been added and it's style can be fully customizedWebMultiSplitPane
have been added and it's style can be fully customizedWebSeparator
have been revamped and it's style can now be fully customizedWebSlider
have been adjusted, but it's style isn't fully customizable yetWebMenuBar
have been revamped and it's style can now be fully customizedWebMenu
have been revamped and it's style can now be fully customizedWebMenuItem
have been revamped and it's style can now be fully customizedWebCheckBoxMenuItem
have been revamped and it's style can now be fully customizedWebRadioButtonMenuItem
have been revamped and it's style can now be fully customizedWebPopupMenu
have been adjusted, but it's style isn't fully customizable yetWebPopupMenuSeparator
have been revamped and it's style can now be fully customizedWebTextField
have been adjusted, but it's style isn't fully customizable yetWebPasswordField
have been adjusted, but it's style isn't fully customizable yetWebFormattedTextField
have been adjusted, but it's style isn't fully customizable yetWebPathField
haven't been changed, but it's style can now be fully customizedWebColorChooserField
haven't been changed, but it's style can now be partially customizedWebFileChooserField
haven't been changed, but it's style can now be fully customizedWebSpinner
have been revamped and it's style can now be fully customizedWebTextArea
have been adjusted, but it's style isn't fully customizable yetWebEditorPane
have been adjusted, but it's style isn't fully customizable yetWebTextPane
have been adjusted, but it's style isn't fully customizable yetWebList
have been revamped and it's style can now be fully customizedWebFileList
haven't been changed, but it's style can now be fully customizedWebComboBox
have been revamped and it's style can now be fully customizedWebRootPane
have been revamped and it's style can now be fully customizedWebPopOver
have been adjusted, but it's style isn't fully customizable yetWebCalendar
have been adjusted, but it's style isn't fully customizable yetWebDateField
have been revamped and it's style can now be fully customizedWebTableHeader
have been adjusted, but it's style isn't fully customizable yetWebTable
have been revamped and it's style can now be fully customizedWebFileTable
have been adjusted and it's style can now be fully customizedWebTree
have been revamped and it's style can now be fully customizedWebExTree
have been revamped and it's style can now be fully customizedWebAsyncTree
have been revamped and it's style can now be fully customizedWebFileTree
have been adjusted and it's style can now be fully customizedWebToolBar
have been adjusted, but it's style isn't fully customizable yetWebToolBarSeparator
have been revamped and it's style can now be fully customizedWebStatusBar
have been revamped and it's style can now be fully customizedWebMemoryBar
have been adjusted and it's style can now be fully customizedWebDesktopPane
have been revamped and it's style can now be fully customizedWebInternalFrame
have been revamped and it's style can now be fully customizedWebDesktopIcon
have been revamped and it's style can now be fully customizedWebPopup
have been added and it's style can be fully customizedWebNotification
have been adjusted and it's style can now be fully customizedWebWindow
have been revamped and it's style can now be fully customizedWebDialog
have been revamped and it's style can now be fully customizedWebFrame
have been revamped and it's style can now be fully customizedWebOptionPane
have been revamped and it's style can now be fully customizedWebColorChoserPanel
have been adjusted, but it's style isn't fully customizable yetWebColorChoser
have been adjusted, but it's style isn't fully customizable yetWebFileChooser
have been adjusted, but it's style isn't fully customizable yetWebTabbedPane
have been adjusted, but it's style isn't fully customizable yetWebDocumentPane
have been adjusted, but it's style isn't fully customizable yetWebHotkeyLabel
have been adjusted and it's style can now be fully customizedWebHotkeyLabel
have been adjusted, but it's style isn't fully customizable yetWebSwitch
have been adjusted, but it's style isn't fully customizable yetWebLanguageChooser
have been added and it's style can be fully customizedWebTreeFilterField
have been revamped, but it's style isn't fully customizable yetWebCheckBoxList
have been adjusted and it's style can now be fully customizedWebCheckBoxTree
have been adjusted and it's style can now be fully customizedWebExCheckBoxTree
have been adjusted and it's style can now be fully customizedWebFileDrop
have been adjusted, but it's style isn't fully customizable yetWebCollapsiblePane
have been revamped and it's style can now be fully customizedWebAccordion
have been revamped and it's style can now be fully customizedWebSyntaxArea
have been adjusted, but it's style isn't fully customizable yetWebSyntaxPanel
have been adjusted, but it's style isn't fully customizable yetWebComponentPane
have been adjusted, but it's style isn't fully customizable yetWebDirectoryChooser
have been adjusted and it's style can now be fully customizedWebDockablePane
have been added and it's style can be fully customizedWebDockableFrame
have been added and it's style can be fully customizedInterfaceTree
have been added, but it's style isn't fully customizable yetInterfaceInspector
have been added, but it's style isn't fully customizable yetNinePatchEditor
have been adjusted, but it's style isn't fully customizable yetStyleEditor
have been adjusted, but it's style isn't fully customizable yetWebBreadcrumb
have been revamped and it's style can now be fully customized
Modules
WebLaF is now split into a few basic modules that you will have to include to make sure it works properly (along with all of the dependencies).
core
- Module containing all basic managers, interfaces and classesui
- Module containing all the UI-related code (components, UIs, painters, skins, managers etc)plugin
- Module containingPluginManager
[ wiki guide ]demo
- Module containingDemoApplication
and all related classes
Most commonly you will need core
and ui
modules to use WebLaF in your application.
Dependencies
Since there have been some major changes in project structure and tools used - there won't be anymore unified JARs that contain all modules and dependencies.
That being said, I do understand that not everyone are using Maven, so I will keep all necessary dependencies available in /lib
folder for all future updates.
You can find all necessary dependencies for v1.2.9 update here:
https://github.com/mgarin/weblaf/tree/v1.2.9/lib