Skip to content

@mgarin mgarin released this Aug 5, 2019

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 and SkinExtensions and set into StyleManager
  • All current Skin and SkinExtension 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 changes
  • StyleListener 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 coming soon ]

  • Support for convenient use of SVG icons have been added through SvgIcon and IconSets
  • Most icons used across the L&F can be modified through IconSets and set into IconManager
  • 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 and DarkSkin - basically light & dark themes
  • There are currently two icon sets available - WebIconSet and DarkIconSet - for light & dark themes

Animation [ wiki guide coming soon ]

  • First iteration of the AnimationManager have been added with this update
  • AnimationManager provides unified API for playing various Transitions through AnimationPipelines
  • Each AnimationPipeline is used to unify multiple Transitions to improve overall performance
  • Each Transition instance represents transition from value A to B of the same type
  • TransitionListeners can be used to receive Transition events
  • TransitionType implementations define types for which transitions are supported
  • EventHandler implementation can be provided into AnimationManager to define thread used for events
  • Easing and FrameRate implementations can be used to define Transition settings

WebStyledLabel [ wiki guide ]

  • WebStyledLabel is a brand new component that supports styled text display
  • WebStyledLabel is now the preferred option for rendering simple styled text instead of HTML content
  • WebStyledLabel supports both text style syntax and custom style ranges set from the code
  • WebStyledLabel style can be fully customized
  • StyledLabelText and AbstractStyledTextContent are core of styled label and also IContent 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 customized
  • WebLink is now based on WebStyledLabel and thus supports styled text content
  • WebLink can now perform custom actions provided through LinkAction implementations
  • UrlLinkAction, FileLinkAction and EmailLinkAction are default LinkAction implementations

Dockable Framework [ #37 ] [ wiki guide ]

  • WebDockablePane and WebDockableFrame are the first implementation of dockable framework
  • WebDockablePane supports saving and lazily restoring it's state
  • WebDockablePane and WebDockableFrame styles can be fully customized
  • DockableFrameListener can be used to track frame state changes

Multi Split Pane [ #477 ] [ wiki guide coming soon ]

  • WebMultiSplitPane is the first implementation of multi-split pane
  • WebMultiSplitPane supports saving and restoring it's state
  • WebMultiSplitPane style can be fully customized
  • MultiSplitResizeListener can be used to track view resize events
  • MultiSplitExpansionListener can be used to track view expansion events

Collapsible Pane & Accordion [ #494 ] [ wiki guide coming soon ]

  • WebCollapsiblePane have been revamped and it's style can now be fully customized
  • WebCollapsiblePane now supports saving and restoring it's state
  • CollapsiblePaneListener can be used to track expansion and collapse events
  • WebAccordion have been revamped and it's style can now be fully customized
  • WebAccordion now supports saving and lazily restoring it's state
  • AccordionListener can be used to track expansion and collapse events

Popup [ wiki guide ]

  • WebPopup is a brand new implementation of popup window made for convenient use
  • WebPopup style can be fully customized
  • PopupListener can be used to listen to popup window events

WebCanvas [ wiki guide coming soon ]

  • WebCanvas is a brand new light component that can be used for any custom purposes
  • WebCanvas extends Swing JComponent unlike java.awt.Canvas which extends AWT Component
  • WebCanvas supports customizable Painter and has easily modifiable decoration states

WebDateField [ wiki guide coming soon ]

  • WebDateField have been revamped and it's style can now be fully customized
  • DateListener 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 runtime
  • PluginManager is implemented in a separate plugin module
  • Plugins can be loaded from JAR files or provided directly in the code if already loaded

Language Manager [ #272 ] [ wiki guide coming soon ]

  • LanguageManager now supports different Locales
  • Language instances can now be used to simultaneously translate to multiple languages
  • LanguageManager will not adjust JVM Locale by default anymore [ #457 #68 ]
  • LanguageLocaleUpdater can be used to automatically adjust JVM Locale [ #457 ]
  • LanguageManager have been revamped and optimized to increase startup and overall performance

Notification Manager [ wiki guide coming soon ]

  • NotificationManager have been revamped to separate notification types and fix memory leaks
  • NotificationManager can now display notifications either outside or inside of the application window
  • WebNotification have been revamped and now extends WebPopup
  • WebNotification style can now be fully customized

Utilities

  • Clone is a new configurable utility class that provides advanced options for cloning various objects
  • Merge 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 separate demo module that contains multiple code examples
  • DemoApplication now showcases source code and styles of presented examples in separate dockable frames
  • DemoApplication 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 customized
  • WebImage have been revamped and it's style can now be fully customized
  • WebLabel have been revamped and it's style can now be fully customized
  • WebStyledLabel have been revamped and it's style can now be fully customized
  • WebToolTip have been revamped and it's style can now be fully customized
  • WebLink have been revamped and it's style can now be fully customized
  • WebButton have been revamped and it's style can now be fully customized
  • WebSplitButton have been revamped and it's style can now be partially customized
  • WebToggleButton have been revamped and it's style can now be fully customized
  • WebCheckBox have been revamped and it's style can now be fully customized
  • WebRadioButton have been revamped and it's style can now be fully customized
  • WebTristateCheckBox have been revamped and it's style can now be fully customized
  • WebPanel have been revamped and it's style can now be fully customized
  • GroupPane have been added and it's style can be fully customized
  • WebInnerPopup haven't been changed, but it's style can now be fully customized
  • WebScrollBar have been revamped and it's style can now be fully customized
  • WebViewport have been revamped and it's style can now be fully customized
  • WebScrollPane have been revamped and it's style can now be fully customized
  • WebProgressBar have been revamped and it's style can now be fully customized
  • WebSplitPaneDivider have been added and it's style can be fully customized
  • WebSplitPane have been revamped and it's style can now be fully customized
  • WebMultiSplitPaneDivider have been added and it's style can be fully customized
  • WebMultiSplitPane have been added and it's style can be fully customized
  • WebSeparator have been revamped and it's style can now be fully customized
  • WebSlider have been adjusted, but it's style isn't fully customizable yet
  • WebMenuBar have been revamped and it's style can now be fully customized
  • WebMenu have been revamped and it's style can now be fully customized
  • WebMenuItem have been revamped and it's style can now be fully customized
  • WebCheckBoxMenuItem have been revamped and it's style can now be fully customized
  • WebRadioButtonMenuItem have been revamped and it's style can now be fully customized
  • WebPopupMenu have been adjusted, but it's style isn't fully customizable yet
  • WebPopupMenuSeparator have been revamped and it's style can now be fully customized
  • WebTextField have been adjusted, but it's style isn't fully customizable yet
  • WebPasswordField have been adjusted, but it's style isn't fully customizable yet
  • WebFormattedTextField have been adjusted, but it's style isn't fully customizable yet
  • WebPathField haven't been changed, but it's style can now be fully customized
  • WebColorChooserField haven't been changed, but it's style can now be partially customized
  • WebFileChooserField haven't been changed, but it's style can now be fully customized
  • WebSpinner have been revamped and it's style can now be fully customized
  • WebTextArea have been adjusted, but it's style isn't fully customizable yet
  • WebEditorPane have been adjusted, but it's style isn't fully customizable yet
  • WebTextPane have been adjusted, but it's style isn't fully customizable yet
  • WebList have been revamped and it's style can now be fully customized
  • WebFileList haven't been changed, but it's style can now be fully customized
  • WebComboBox have been revamped and it's style can now be fully customized
  • WebRootPane have been revamped and it's style can now be fully customized
  • WebPopOver have been adjusted, but it's style isn't fully customizable yet
  • WebCalendar have been adjusted, but it's style isn't fully customizable yet
  • WebDateField have been revamped and it's style can now be fully customized
  • WebTableHeader have been adjusted, but it's style isn't fully customizable yet
  • WebTable have been revamped and it's style can now be fully customized
  • WebFileTable have been adjusted and it's style can now be fully customized
  • WebTree have been revamped and it's style can now be fully customized
  • WebExTree have been revamped and it's style can now be fully customized
  • WebAsyncTree have been revamped and it's style can now be fully customized
  • WebFileTree have been adjusted and it's style can now be fully customized
  • WebToolBar have been adjusted, but it's style isn't fully customizable yet
  • WebToolBarSeparator have been revamped and it's style can now be fully customized
  • WebStatusBar have been revamped and it's style can now be fully customized
  • WebMemoryBar have been adjusted and it's style can now be fully customized
  • WebDesktopPane have been revamped and it's style can now be fully customized
  • WebInternalFrame have been revamped and it's style can now be fully customized
  • WebDesktopIcon have been revamped and it's style can now be fully customized
  • WebPopup have been added and it's style can be fully customized
  • WebNotification have been adjusted and it's style can now be fully customized
  • WebWindow have been revamped and it's style can now be fully customized
  • WebDialog have been revamped and it's style can now be fully customized
  • WebFrame have been revamped and it's style can now be fully customized
  • WebOptionPane have been revamped and it's style can now be fully customized
  • WebColorChoserPanel have been adjusted, but it's style isn't fully customizable yet
  • WebColorChoser have been adjusted, but it's style isn't fully customizable yet
  • WebFileChooser have been adjusted, but it's style isn't fully customizable yet
  • WebTabbedPane have been adjusted, but it's style isn't fully customizable yet
  • WebDocumentPane have been adjusted, but it's style isn't fully customizable yet
  • WebHotkeyLabel have been adjusted and it's style can now be fully customized
  • WebHotkeyLabel have been adjusted, but it's style isn't fully customizable yet
  • WebSwitch have been adjusted, but it's style isn't fully customizable yet
  • WebLanguageChooser have been added and it's style can be fully customized
  • WebTreeFilterField have been revamped, but it's style isn't fully customizable yet
  • WebCheckBoxList have been adjusted and it's style can now be fully customized
  • WebCheckBoxTree have been adjusted and it's style can now be fully customized
  • WebExCheckBoxTree have been adjusted and it's style can now be fully customized
  • WebFileDrop have been adjusted, but it's style isn't fully customizable yet
  • WebCollapsiblePane have been revamped and it's style can now be fully customized
  • WebAccordion have been revamped and it's style can now be fully customized
  • WebSyntaxArea have been adjusted, but it's style isn't fully customizable yet
  • WebSyntaxPanel have been adjusted, but it's style isn't fully customizable yet
  • WebComponentPane have been adjusted, but it's style isn't fully customizable yet
  • WebDirectoryChooser have been adjusted and it's style can now be fully customized
  • WebDockablePane have been added and it's style can be fully customized
  • WebDockableFrame have been added and it's style can be fully customized
  • InterfaceTree have been added, but it's style isn't fully customizable yet
  • InterfaceInspector have been added, but it's style isn't fully customizable yet
  • NinePatchEditor have been adjusted, but it's style isn't fully customizable yet
  • StyleEditor have been adjusted, but it's style isn't fully customizable yet
  • WebBreadcrumb 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 classes
  • ui - Module containing all the UI-related code (components, UIs, painters, skins, managers etc)
  • plugin - Module containing PluginManager [ wiki guide ]
  • demo - Module containing DemoApplication 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/4faefd1aae173c02dd534e4b708cc0408f4a3667/lib

Assets 15
You can’t perform that action at this time.