mgarin / weblaf

WebLaF is a fully open-source Look & Feel and component library written in pure Java for cross-platform desktop Swing applications.
http://weblookandfeel.com
GNU General Public License v3.0
1.14k stars 235 forks source link

Component styling support and UI class revamp #476

Open mgarin opened 6 years ago

mgarin commented 6 years ago

Some of the existing components have to be "moved" to the new Component-UI-Painter structure with all classes (except base Swing components themselves like JLabel) having 100% WebLaF implementation. That is very important to avoid any unnecessary interference from Swing code, for instance from basic UI classes like BasicButtonUI and to allow multiple performance optimizations to be made (like removing unnecessary settings changes and/or listeners).

Currently there only a few components left that haven't gone through major revamp and are still solely backed by UI class implementation:

Some other components also still need major adjustments or even complete revamps:


There are also quite a few components that are still using basic Swing UI classes instead of fully-custom WebLaF implementations, but which were already switched to new styling system:

Just to emphasize - these are components that are already fully styleable and work 100% correctly in the new versions. The only downside is the UI implementation that partially uses basic Swing UI which is quite dirty and does some unnecessary operations upon installation that are later overwritten by WebLaF anyway. While I do want to eventually get rid of all Swing UI implementations completely - it is a lot of work and it is quite low on priority list, so I'll only do it once necessary for some particular feature or improvement.

Eventually I will move all components to new UI implementations but they are already reasonably stable at this point which is why that task is not critical and low on priority list.

mgarin commented 6 years ago

JSplitPane got a major update and is now fully supported by styling system.

mgarin commented 6 years ago

WebBreadcrumb got a major update and is now fully supported by styling system.

mgarin commented 5 years ago

WebCollapsiblePane and WebAccordion got revamped and are now fully supported by styling system. Also all changes are now available in v1.2.9 update: https://github.com/mgarin/weblaf/releases/tag/v1.2.9

mgarin commented 5 years ago

JTabbedPane revamp will become available in v1.2.10 [ #35 ] JSlider revamp will become available in v1.2.11 [ #493 ] WebCustomTooltip revamp will become available in v1.2.11 [ #520 ]

mgarin commented 5 years ago

Updated information in the main post. I plan to finish all stuff planned on this issue by the time I get to v1.3.0. Also some of the components might stay backed by Swing UI implementations until project is moved to newer JDK as rewriting the UI might be unnecessary for those components in the first place.

mgarin commented 5 years ago

JDesktopPane, JInternalFrame and JDesktopIcon revamps have been pushed into master branch and will be available in v1.2.10 update.

mgarin commented 4 years ago

Added WebComponentPane and WebOverlay to the list of components for revamp.

mokun commented 4 years ago

Having WebSpinner and WebSlider with UI customization would be really great !

mgarin commented 4 years ago

@mokun WebSpinner is already fully customizable through style: spinner.xml WebSlider is not yet though, will be coming in either v1.2.11 or v1.2.12 update.

mgarin commented 4 years ago

WebOverlay now has brand new API, is properly styleable and it's code if fully documented.