Weblaf Versions Save

WebLaF is a fully open-source Look & Feel and component library written in pure Java for cross-platform desktop Swing applications.

v1.2.13

3 years ago

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's Font is now properly inherited by all Tabs [ #631 ]

JSpinner

  • Fixed error that could appear with JSpinner using NumberEditor under Java 9+ [ #612 ]

JComboBox

  • Fixed combobox popup positioning under Java 9+ [ #630 ]

PluginManager

  • Removed usage of DirectoriesFilter from PluginManager due to FileSystemView 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 convenient FontUIResource retrieval and UIResource 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 classes
  • weblaf-ui - Module containing all components, UIs, painters, skins, managers and related classes
  • weblaf-plugin - Module containing PluginManager [ wiki guide ]
  • weblaf-ninepatch-editor - Module containing NinePatchEditor
  • weblaf-demo - Module containing DemoApplication

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.

v1.2.12

4 years ago

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 of IShape 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 to Styleable.getPainterShape () to avoid clashing with JDK7+ methods in Window components, this also fixes recently introduced problem with decorated Web-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 in WebMemoryBar 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-like Files
  • Added Clone.nonNullClone ( ... ) method allowing to always receive non-null result or an exception, adjusted all classes using Clone to use nonNullClone ( ... ) method if necessary
  • Added Merge.nonNullMerge ( ... ) methods for merging non-null objects and retrieving non-null merge result, adjusted all classes using Merge to use nonNullMerge ( ... ) 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 Painters
  • Streamlined all UI implementations to use PainterSupport instead of custom code and calls
  • UI implementations do not own Painter instance anymore, those are stored in JComponent's client properties only
  • Removed some unnecessary method bridges from UI implementations
  • Streamlined all SpecificPainter implementations to implement ParameterizedPaint use PaintParameters 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 new Painter usage
  • WebFrame.java, WebDialog.java, WebWindow.java - Changed custom JRootPane implementations to use StyleId.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 classes
  • weblaf-ui - Module containing all components, UIs, painters, skins, managers and related classes
  • weblaf-plugin - Module containing PluginManager [ wiki guide ]
  • weblaf-ninepatch-editor - Module containing NinePatchEditor
  • weblaf-demo - Module containing DemoApplication

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 from Merge constructor, ClonePolicy replaces it as one of constructor options
  • SkipClonePolicy and PerformClonePolicy are two basic implementations of ClonePolicy available
  • SkipClonePolicy is now used in Merge by default instead of null provided as Clone before
  • NodesDragViewHandler is not abstract anymore, nodesViewLimit can now simply be provided in constructor

Renamed:

  • Styleable.getShape () method have been renamed to Styleable.getPainterShape () to avoid clashing with JDK7+ methods in Window components, this also fixes recently introduced problem with decorated Web-windows not being properly displayed on the screen under JDK7+

Removed:

  • ShapeUtils rounded shape creation method have been removed as inconsistent and replaced with createBorderShape ( ... ) and createFillShape ( ... ) 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

v1.2.11

4 years ago

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 in AbstractDecorationPainter which change can be fired on JComponent 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 an IShape implementation for simple custom progress shapes
  • Renamed WebSkin to WebLightSkin and DarkSkin to WebDarkSkin for consistency
  • WebLightSkin identifier changed from weblaf.web.skin to weblaf.light.skin for consistency
  • All XML files of different skins and extensions renamed from skin.xml and extension.xml to more specific names

IconManager [ wiki guide ]

  • Added support for replaceable icons [ #348 ]
  • Simplified IconSet addition and removal in IconManager
  • Any find* methods in IconManager can now return null, while any get* 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 of AbstractIconSet
  • Added new RuntimeIconSet for convenient runtime icon set creation
  • Renamed IconData to IconSource for consistency
  • Renamed ImageIconData to ImageIconSource and SvgIconData to SvgIconSource for consistency
  • Added various constructors to ImageIconSource and SvgIconSource for convenient runtime icon data creation
  • Added IconSetExtension for providing skin-related IconSets 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 TaskGroup is an object with unique identifier that represents a specific group of tasks
  • Multiple classes like ThumbnailGenerator or AsyncTreeModel now use TaskManager for concurrent tasks execution

General API

  • Added new Resource interface for any custom resource that can provide InputStream
  • Fully replaced old inconvenient Resource class, all related places across the code have been adjusted accordingly
  • Added DisabledCopySupplier and TransparentCopySupplier interfaces for convenient modified Icons retrieval
  • Added SvgGrayscale, SvgOpacity and AbstractSvgAdjustment adjustments for SvgIcon
  • Changed SVG Salamander Maven dependency to v1.1.2.2 release from my own fork (see mgarin/svgSalamander)

SVG

  • Removed universe setting from all SvgIcons, completely separate SVGUniverse will be used for each SvgIcon
  • 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 start
  • LazyState represents all possible data and UI states
  • LazyContentListener can be used for listening to data and UI events

LazyPanel [ #577 ]

  • This is a custom Container that provides means for more convenient LazyContent feature usage

Overlay [ #568 ]

  • WebOverlay was fully reworked and now has more convenient API for custom overlay locations and styling support
  • Overlay is a new interface for overlays to be added to WebOverlay component
  • FillOverlay and AlignedOverlay are two basic Overlay implementations for most common use cases
  • WebProgressOverlay have also been reworked, it is based on new WebOverlay 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 and transparent-hovering-extending with both bars in extending mode
  • Fixed styles initialization order and incorrect corners removal [ #563 ]
  • Fixed issues with hovering and extending 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 new compact flat style that uses it
  • Multiple WebDockablePane layout improvements to size distribution across visible frames
  • Added support for areaPainter in WebDockablePane style, it allows restyling nine different areas of dockable pane
  • Maximized WebDockableFrame will now cover the whole WebDockablePane 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 StyleIds for each particular tab in JTabbedPane [ #578 ]
  • Added tabSize setting in TabContainerLayout that can be used to equalize sizes of all tabs [ #554 ]
  • Added new equal style for tabbedpane that keeps all tab sizes equal [ #554 ]
  • Renamed rotated style to vertical for consistency with other components
  • TabMenuItem now extends WebRadioButtonMenuItem instead of WebMenuItem 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 and JMenuBar layout was adjusted to offset first menu
  • Added default child style popupmenu for all JPopupMenus created by JMenu
  • Added base styled style for styled text support in all menu item components

ProgressBar

  • Added new ProgressShape for JProgressBar progress based on AbstractProgressShape
  • Removed hardcoded progress bounds from ProgressBarPainter

StyledLabel

  • Added maximum preferred text width setting support

Link

  • Fixed WebLink translation of LinkAction text if it is a language key [ #547 ]

Accordion

  • Added support for expanded, expanding, collapsed and collapsing states in AccordionPane and it's header
  • WebAccordion animations can now be disabled through new animated 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 and collapsing states in WebCollapsiblePane and it's header [ #552 ]
  • WebCollapsiblePane animations can now be disabled through new animated 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 and setForeground are now forwarded from WebDateField 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 selected Date when requested to avoid dealing with it's modification [ #579 ]
  • Replaced raster hardcoded button icon with configurable calendar and calendar-hover icons from IconManager
  • Displayed date text will now be properly adjusted upon pattern change
  • Fixed possible NPEs upon initialization and null date usage

Calendar

  • Replaced raster hardcoded button icons with configurable double-left-big, left-big, right-big and double-right-big icons from IconManager

Switch

  • ActionListener will not fire upon selection change from the code anymore, it will only fire evens when user is interacting with the component [ #400 ]
  • ItemListener can be used to detect all selection change events instead of ActionListener [ #400 ] [ #587 ]

ColorChooser

  • Now uses Color.RED in case null color is passed through, old color will be displayed as none in that case
  • Added support for either color being null in DoubleColorField, null colors will have a special representation
  • Added support for null color in WebColorChooserField, it can be set as null or user can erase text in the field to change color to null
  • WebColorChooserField default selected color is now null instead of Color.WHITE
  • Added support for color's alpha in WebColorChooserField, popup chooser will have that support added later
  • Added a small fix for picker window disposal exceptions in WebColorChooserField

ComboBox

  • Fixed wide popup width not calculating correctly when combobox preferred size is fixed [ #588 ]
  • Replaced widePopup UI property with client property usage, it can now be easily applied to JComboBox as well
  • Improved popup menu size and location calculations

FileChooser

  • Fixed missing "cancel" button

TextArea

  • Fixed size calculation issue in AbstractTextEditorPainter for JDK 9+ [ #558 ]

SyntaxArea

  • Added fix for opacity preservation upon theme change (see bobbylight/RSyntaxTextArea#320 for more information)
  • Renamed transparent preset to nonOpaque for consistency, removed unnecessary colors provision from it
  • Added syntaxarea-scroll-transparent-hovering style and slightly adjusted overall style structure

OptionPane

  • Fixed some inconsistencies between light and dark skins

MultiSplitPane

  • Added orientation state support

InterfaceInspector

  • Fixed some issues with InterfaceInspector behavior

PluginManager

  • Replaced ImageIcon usage with simple Icon for wider icon types support

WebLookAndFeel

  • Simplified disabled icon retrieval, cache is now implemented in revamped ImageUtils class

Utilities

  • Completely revamped ImageUtils and removed a lot of outdated methods and features, streamlined work with Icons and Images
  • Converted NetUtils to fail-fast approach to avoid hiding any exceptions
  • Removed redundant color cache from ColorUtils, there is no point to cache colors as it only makes their usage slower
  • Added new ClientProperty and NullableClientProperty utilities for convenient JComponent client property usage
  • Improved VisibilityBehavior API to provide tracked Component of generic type and have no abstract methods
  • ArrayListAggregator have been replaced with ArrayListBuilder that is a slightly better implementation
  • Added HashSetBuilder similar to ArrayListBuilder and abstract CollectionBuilder as their base class
  • Added new ColorIcon to be used instead of static ImageUtils methods
  • Added new data class Scale for convenient use of double X/Y axis scale values

Clone

  • Added new preconfigured reflective option for cloning any chaotic object structures, Cloneable or not
  • Removed preconfigured adaptive option as redundant

JavaDoc

  • Fixed JavaDoc incorrect and inner class references [ #518 ]

You can find full list of issues resolved in this updated here: https://github.com/mgarin/weblaf/milestone/22?closed=1

Modules

There were no module changes in this update. Here is a full list of modules available in v1.2.11:

  • weblaf-core - Module containing all basic managers, interfaces and classes
  • weblaf-ui - Module containing all components, UIs, painters, skins, managers and related classes
  • weblaf-plugin - Module containing PluginManager [ wiki guide ]
  • weblaf-ninepatch-editor - Module containing NinePatchEditor
  • weblaf-demo - Module containing DemoApplication

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.11</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.11 update here: https://github.com/mgarin/weblaf/tree/v1.2.11/lib

Migration notes [ v1.2.10 -> v1.2.11 ]

There were a few changes in v1.2.11 that break API.

Renamed:

  • com.alee.skin.web.WebSkin was renamed & moved to com.alee.skin.light.WebLightSkin
  • com.alee.skin.dark.DarkSkin was renamed to com.alee.skin.dark.WebDarkSkin
  • com.alee.extended.dock.SidebarVisibility was renamed to com.alee.extended.dock.SidebarButtonVisibility

Removed/replaced:

  • com.alee.utils.xml.Resource class have been replaced with com.alee.api.resource.Resource interface that is now used for any resource-dependent features like Dictionary or XmlSkin, and it also has three new basic implementations - ClassResource, FileResource and UrlResource

Other changes:

  • WebLightSkin identifier was changed from weblaf.web.skin to weblaf.light.skin for consistency

v1.2.10

4 years ago

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 and JDesktopIcon 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 and in-hovered-parent states support for all components [ #519 ]
  • New HoverManager have been added to provide support for hover states [ wiki guide ]

Table

  • JTableHeader now supports custom WebLaF tooltips [ #202 #471 ]

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 ActionListeners support for WebLink 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 classes
  • weblaf-ui - Module containing all components, UIs, painters, skins, managers and anything related to them
  • weblaf-plugin - Module containing PluginManager [ wiki guide ]
  • weblaf-ninepatch-editor - Module containing NinePatchEditor
  • weblaf-demo - Module containing DemoApplication

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

v1.2.9

4 years ago

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 ]

  • 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

  • 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 ]

  • 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 ]

  • 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

  • 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

  • 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 ]

  • 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

  • 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/v1.2.9/lib

v1.28

9 years ago

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.

Release notes v1.28

Project

  • WebLaF sources separated into three modules: core, ui and demo
  • 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

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

v1.27

10 years ago

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

v1.26

10 years ago

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

v1.25

10 years ago

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

v1.24

10 years ago

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