From cca9707f6b3982b3cdac9faaef431b939a0deb17 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sat, 25 Jan 2025 06:55:37 +0100 Subject: [PATCH 01/36] Popup: on Windows 10, update drop shadow of heavy-weight popup if popup moved/resized (issue #942) --- CHANGELOG.md | 2 + .../flatlaf/ui/FlatDropShadowBorder.java | 2 +- .../formdev/flatlaf/ui/FlatPopupFactory.java | 69 ++++++++-- .../flatlaf/testing/FlatPopupTest.java | 123 +++++++++++++++++- .../formdev/flatlaf/testing/FlatPopupTest.jfd | 44 ++++++- 5 files changed, 218 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f86e20c..77d9561b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,8 @@ FlatLaf Change Log - FileChooser: Improved performance when navigating to large directories with thousands of files. (issue #953) - PopupFactory: Fixed NPE on Windows 10 when `owner` is `null`. (issue #952) +- Popup: On Windows 10, drop shadow of heavy-weight popup was not updated if + popup moved/resized. (issue #942) - FlatLaf window decorations: Minimize and maximize icons were not shown for custom scale factors less than 100% (e.g. `-Dflatlaf.uiScale=75%`). (issue #951) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatDropShadowBorder.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatDropShadowBorder.java index 6914daf9..25f09c6d 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatDropShadowBorder.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatDropShadowBorder.java @@ -74,7 +74,7 @@ public class FlatDropShadowBorder this.shadowColor = shadowColor; this.shadowInsets = shadowInsets; - this.shadowOpacity = shadowOpacity; + this.shadowOpacity = Math.min( Math.max( shadowOpacity, 0f ), 1f ); shadowSize = maxInset( shadowInsets ); } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java index 9b14bab2..553695d8 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java @@ -709,6 +709,7 @@ public class FlatPopupFactory private class DropShadowPopup extends NonFlashingPopup + implements ComponentListener { // light weight private JComponent lightComp; @@ -768,7 +769,7 @@ public class FlatPopupFactory } // Windows 11: reset corner preference on reused heavy weight popups - if( isWindows11BorderSupported() ) { + if( SystemInfo.isWindows_11_orLater && FlatNativeWindowsLibrary.isLoaded() ) { resetWindows11Border( popupWindow ); if( dropShadowWindow != null ) resetWindows11Border( dropShadowWindow ); @@ -838,10 +839,18 @@ public class FlatPopupFactory if( insets.left != 0 || insets.top != 0 ) lightComp.setLocation( lightComp.getX() - insets.left, lightComp.getY() - insets.top ); } + + if( popupWindow != null ) { + removeAllPopupWindowComponentListeners(); + popupWindow.addComponentListener( this ); + } } @Override void hideImpl() { + if( popupWindow != null ) + removeAllPopupWindowComponentListeners(); + if( dropShadowDelegate != null ) { dropShadowDelegate.hide(); dropShadowDelegate = null; @@ -941,23 +950,55 @@ public class FlatPopupFactory @Override void reset( Component contents, int ownerX, int ownerY ) { + if( popupWindow != null ) + removeAllPopupWindowComponentListeners(); + super.reset( contents, ownerX, ownerY ); - if( dropShadowWindow != null ) { - // set preferred size of drop shadow panel - Dimension prefSize = popupWindow.getPreferredSize(); - Insets insets = dropShadowPanel2.getInsets(); - int w = prefSize.width + insets.left + insets.right; - int h = prefSize.height + insets.top + insets.bottom; - dropShadowPanel2.setPreferredSize( new Dimension( w, h ) ); - dropShadowPanel2.invalidate(); - dropShadowWindow.pack(); + updateDropShadowWindowBounds(); + } - // update drop shadow popup window location - int x = popupWindow.getX() - insets.left; - int y = popupWindow.getY() - insets.top; - dropShadowWindow.setLocation( x, y ); + private void updateDropShadowWindowBounds() { + if( dropShadowWindow == null ) + return; + + // calculate size of drop shadow window + Dimension size = popupWindow.getSize(); + Insets insets = dropShadowPanel2.getInsets(); + int w = size.width + insets.left + insets.right; + int h = size.height + insets.top + insets.bottom; + + // update drop shadow popup window bounds + int x = popupWindow.getX() - insets.left; + int y = popupWindow.getY() - insets.top; + dropShadowWindow.setBounds( x, y, w, h ); + dropShadowWindow.validate(); + } + + private void removeAllPopupWindowComponentListeners() { + // make sure that there is no old component listener + // necessary because this class is cloned if reusing popup windows + for( ComponentListener l : popupWindow.getComponentListeners() ) { + if( l instanceof DropShadowPopup ) + popupWindow.removeComponentListener( l ); } } + + //---- interface ComponentListener ---- + + @Override + public void componentResized( ComponentEvent e ) { + if( e.getSource() == popupWindow ) + updateDropShadowWindowBounds(); + } + + @Override + public void componentMoved( ComponentEvent e ) { + if( e.getSource() == popupWindow ) + updateDropShadowWindowBounds(); + } + + @Override public void componentShown( ComponentEvent e ) {} + @Override public void componentHidden( ComponentEvent e ) {} } } diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPopupTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPopupTest.java index e2776ba6..3f97c6a4 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPopupTest.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPopupTest.java @@ -21,6 +21,10 @@ import java.awt.event.MouseEvent; import java.util.Random; import javax.swing.*; import javax.swing.border.*; +import javax.swing.event.PopupMenuEvent; +import javax.swing.event.PopupMenuListener; +import com.formdev.flatlaf.FlatClientProperties; +import com.formdev.flatlaf.FlatSystemProperties; import com.formdev.flatlaf.util.Animator; import com.formdev.flatlaf.util.UIScale; import net.miginfocom.swing.*; @@ -43,6 +47,8 @@ public class FlatPopupTest FlatPopupTest() { initComponents(); + addPopupMenuListener( popupMenu1, "popupMenu1" ); + addPopupMenuListener( popupMenu2, "popupMenu2" ); } private void showPopupMenu() { @@ -114,6 +120,46 @@ public class FlatPopupTest } } + private void showDirectPopup() { + DirectPopupContent content = new DirectPopupContent(); + content.putClientProperty( FlatClientProperties.POPUP_FORCE_HEAVY_WEIGHT, true ); + Point pt = showDirectPopupButton.getLocationOnScreen(); + + System.setProperty( FlatSystemProperties.USE_ROUNDED_POPUP_BORDER, "false" ); + UIManager.put( "Popup.dropShadowColor", Color.red ); + UIManager.put( "Popup.dropShadowInsets", new Insets( 5, 5, 5, 5 ) ); + UIManager.put( "Popup.dropShadowOpacity", 1f ); + + Popup popup = PopupFactory.getSharedInstance().getPopup( showDirectPopupButton, + content, pt.x, pt.y + showDirectPopupButton.getHeight() + 10 ); + content.popup = popup; + popup.show(); + + System.clearProperty( FlatSystemProperties.USE_ROUNDED_POPUP_BORDER ); + UIManager.put( "Popup.dropShadowColor", null ); + UIManager.put( "Popup.dropShadowInsets", null ); + UIManager.put( "Popup.dropShadowOpacity", null ); + } + + private void addPopupMenuListener( JPopupMenu popupMenu, String name ) { + popupMenu.addPopupMenuListener( new PopupMenuListener() { + @Override + public void popupMenuWillBecomeVisible( PopupMenuEvent e ) { + System.out.println( "popupMenuWillBecomeVisible " + name ); + } + + @Override + public void popupMenuWillBecomeInvisible( PopupMenuEvent e ) { + System.out.println( "popupMenuWillBecomeInvisible " + name ); + } + + @Override + public void popupMenuCanceled( PopupMenuEvent e ) { + System.out.println( "popupMenuCanceled " + name ); + } + } ); + } + @Override public void updateUI() { super.updateUI(); @@ -128,15 +174,12 @@ public class FlatPopupTest } } - private void countChanged() { - // TODO add your code here - } - private void initComponents() { // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents label1 = new JLabel(); label2 = new JLabel(); showPopupMenuButton = new JButton(); + showDirectPopupButton = new JButton(); showLargePopupMenuButton = new JButton(); showPopupButton = new JButton(); hidePopupButton = new JButton(); @@ -209,6 +252,11 @@ public class FlatPopupTest showPopupMenuButton.addActionListener(e -> showPopupMenu()); add(showPopupMenuButton, "cell 0 2"); + //---- showDirectPopupButton ---- + showDirectPopupButton.setText("show direct move/resize popup"); + showDirectPopupButton.addActionListener(e -> showDirectPopup()); + add(showDirectPopupButton, "cell 2 2 2 1"); + //---- showLargePopupMenuButton ---- showLargePopupMenuButton.setText("show heavy-weight JPopupMenu"); showLargePopupMenuButton.addActionListener(e -> showLargePopupMenu()); @@ -240,7 +288,6 @@ public class FlatPopupTest //---- countField ---- countField.setModel(new SpinnerNumberModel(1, 1, null, 1)); - countField.addChangeListener(e -> countChanged()); add(countField, "cell 5 4"); //---- label4 ---- @@ -366,6 +413,7 @@ public class FlatPopupTest private JLabel label1; private JLabel label2; private JButton showPopupMenuButton; + private JButton showDirectPopupButton; private JButton showLargePopupMenuButton; private JButton showPopupButton; private JButton hidePopupButton; @@ -444,4 +492,69 @@ public class FlatPopupTest private JLabel label6; // JFormDesigner - End of variables declaration //GEN-END:variables @formatter:on } + + //---- class MyPopupContent ----------------------------------------------- + + private static class DirectPopupContent + extends JPanel + { + Popup popup; + + DirectPopupContent() { + initComponents(); + } + + private void resizePopup() { + Window popupWindow = SwingUtilities.windowForComponent( this ); + popupWindow.setSize( popupWindow.getWidth() + 20, popupWindow.getHeight() + 50 ); + } + + private void movePopup() { + Window popupWindow = SwingUtilities.windowForComponent( this ); + popupWindow.setLocation( popupWindow.getX() + 20, popupWindow.getY() + 50 ); + } + + private void hidePopup() { + popup.hide(); + } + + private void initComponents() { + // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents @formatter:off + resizeButton = new JButton(); + moveButton = new JButton(); + hideButton = new JButton(); + + //======== this ======== + setLayout(new MigLayout( + "hidemode 3", + // columns + "[fill]" + + "[fill]" + + "[fill]", + // rows + "[]")); + + //---- resizeButton ---- + resizeButton.setText("Resize"); + resizeButton.addActionListener(e -> resizePopup()); + add(resizeButton, "cell 0 0"); + + //---- moveButton ---- + moveButton.setText("Move"); + moveButton.addActionListener(e -> movePopup()); + add(moveButton, "cell 1 0"); + + //---- hideButton ---- + hideButton.setText("Hide"); + hideButton.addActionListener(e -> hidePopup()); + add(hideButton, "cell 2 0"); + // JFormDesigner - End of component initialization //GEN-END:initComponents @formatter:on + } + + // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables @formatter:off + private JButton resizeButton; + private JButton moveButton; + private JButton hideButton; + // JFormDesigner - End of variables declaration //GEN-END:variables @formatter:on + } } diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPopupTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPopupTest.jfd index d6739f69..42f369de 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPopupTest.jfd +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPopupTest.jfd @@ -1,4 +1,4 @@ -JFDML JFormDesigner: "8.2.3.0.386" Java: "21" encoding: "UTF-8" +JFDML JFormDesigner: "8.3" encoding: "UTF-8" new FormModel { contentType: "form/swing" @@ -30,6 +30,13 @@ new FormModel { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 0 2" } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "showDirectPopupButton" + "text": "show direct move/resize popup" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showDirectPopup", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 2 2 1" + } ) add( new FormComponent( "javax.swing.JButton" ) { name: "showLargePopupMenuButton" "text": "show heavy-weight JPopupMenu" @@ -77,7 +84,6 @@ new FormModel { minimum: 1 value: 1 } - addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "countChanged", false ) ) }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 5 4" } ) @@ -215,5 +221,39 @@ new FormModel { }, new FormLayoutConstraints( null ) { "location": new java.awt.Point( 5, 505 ) } ) + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) { + "$layoutConstraints": "hidemode 3" + "$columnConstraints": "[fill][fill][fill]" + "$rowConstraints": "[]" + } ) { + name: "panel1" + auxiliary() { + "JavaCodeGenerator.className": "DirectPopupContent" + } + add( new FormComponent( "javax.swing.JButton" ) { + name: "resizeButton" + "text": "Resize" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "resizePopup", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 0" + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "moveButton" + "text": "Move" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "movePopup", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 0" + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "hideButton" + "text": "Hide" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "hidePopup", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 0" + } ) + }, new FormLayoutConstraints( null ) { + "location": new java.awt.Point( 180, 395 ) + "size": new java.awt.Dimension( 270, 100 ) + } ) } } From 6c49b8bc4d9da9cda7dace50f5b80ed72bfcf1ef Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sat, 25 Jan 2025 09:48:52 +0100 Subject: [PATCH 02/36] Linux: hide popups when window is moved, resized, maximized, restored, iconified or switched to another window (issue #962) --- CHANGELOG.md | 3 + .../java/com/formdev/flatlaf/FlatLaf.java | 11 ++ .../flatlaf/LinuxPopupMenuCanceler.java | 164 ++++++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 flatlaf-core/src/main/java/com/formdev/flatlaf/LinuxPopupMenuCanceler.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 77d9561b..db86cd40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,9 @@ FlatLaf Change Log - FlatLaf window decorations: Minimize and maximize icons were not shown for custom scale factors less than 100% (e.g. `-Dflatlaf.uiScale=75%`). (issue #951) +- Linux: Popups (menus and combobox lists) were not hidden when window is moved, + resized, maximized, restored, iconified or switched to another window. (issue + #962) ## 3.5.4 diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index 1fd3aef9..bba4d829 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -111,6 +111,7 @@ public abstract class FlatLaf private PopupFactory oldPopupFactory; private MnemonicHandler mnemonicHandler; private boolean subMenuUsabilityHelperInstalled; + private LinuxPopupMenuCanceler linuxPopupMenuCanceler; private Consumer postInitialization; private List> uiDefaultsGetters; @@ -305,6 +306,10 @@ public abstract class FlatLaf // install submenu usability helper subMenuUsabilityHelperInstalled = SubMenuUsabilityHelper.install(); + // install Linux popup menu canceler + if( SystemInfo.isLinux ) + linuxPopupMenuCanceler = new LinuxPopupMenuCanceler(); + // listen to desktop property changes to update UI if system font or scaling changes if( SystemInfo.isWindows ) { // Windows 10 allows increasing font size independent of scaling: @@ -397,6 +402,12 @@ public abstract class FlatLaf subMenuUsabilityHelperInstalled = false; } + // uninstall Linux popup menu canceler + if( linuxPopupMenuCanceler != null ) { + linuxPopupMenuCanceler.uninstall(); + linuxPopupMenuCanceler = null; + } + // restore default link color new HTMLEditorKit().getStyleSheet().addRule( "a, address { color: blue; }" ); postInitialization = null; diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/LinuxPopupMenuCanceler.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/LinuxPopupMenuCanceler.java new file mode 100644 index 00000000..0c097781 --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/LinuxPopupMenuCanceler.java @@ -0,0 +1,164 @@ +/* + * Copyright 2025 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf; + +import java.awt.Component; +import java.awt.Window; +import java.awt.event.ComponentEvent; +import java.awt.event.ComponentListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import javax.swing.JPopupMenu; +import javax.swing.MenuElement; +import javax.swing.MenuSelectionManager; +import javax.swing.SwingUtilities; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +/** + * Cancels (hides) popup menus on Linux. + *

+ * On Linux, popups are not hidden under following conditions, which results in + * misplaced popups: + *

    + *
  • window moved or resized + *
  • window maximized or restored + *
  • window iconified + *
  • window deactivated (e.g. activated other application) + *
+ * + * On Windows and macOS, popups are automatically hidden. + *

+ * The implementation is similar to what's done in + * {@code javax.swing.plaf.basic.BasicPopupMenuUI.MouseGrabber}, + * but only hides popup in some conditions. + * + * @author Karl Tauber + */ +class LinuxPopupMenuCanceler + extends WindowAdapter + implements ChangeListener, ComponentListener +{ + private MenuElement[] lastPathSelectedPath; + private Window window; + + LinuxPopupMenuCanceler() { + MenuSelectionManager msm = MenuSelectionManager.defaultManager(); + msm.addChangeListener( this ); + + lastPathSelectedPath = msm.getSelectedPath(); + if( lastPathSelectedPath.length > 0 ) + addWindowListeners( lastPathSelectedPath[0] ); + } + + void uninstall() { + MenuSelectionManager.defaultManager().removeChangeListener( this ); + } + + private void addWindowListeners( MenuElement selected ) { + // see BasicPopupMenuUI.MouseGrabber.grabWindow() + Component invoker = selected.getComponent(); + if( invoker instanceof JPopupMenu ) + invoker = ((JPopupMenu)invoker).getInvoker(); + window = (invoker instanceof Window) + ? (Window) invoker + : SwingUtilities.windowForComponent( invoker ); + + if( window != null ) { + window.addWindowListener( this ); + window.addComponentListener( this ); + } + } + + private void removeWindowListeners() { + if( window != null ) { + window.removeWindowListener( this ); + window.removeComponentListener( this ); + window = null; + } + } + + private void cancelPopupMenu() { + try { + MenuSelectionManager msm = MenuSelectionManager.defaultManager(); + MenuElement[] selectedPath = msm.getSelectedPath(); + for( MenuElement e : selectedPath ) { + if( e instanceof JPopupMenu ) + ((JPopupMenu)e).putClientProperty( "JPopupMenu.firePopupMenuCanceled", true ); + } + msm.clearSelectedPath(); + } catch( RuntimeException ex ) { + removeWindowListeners(); + throw ex; + } catch( Error ex ) { + removeWindowListeners(); + throw ex; + } + } + + //---- ChangeListener ---- + + @Override + public void stateChanged( ChangeEvent e ) { + MenuElement[] selectedPath = MenuSelectionManager.defaultManager().getSelectedPath(); + + if( selectedPath.length == 0 ) + removeWindowListeners(); + else if( lastPathSelectedPath.length == 0 ) + addWindowListeners( selectedPath[0] ); + + lastPathSelectedPath = selectedPath; + } + + //---- WindowListener ---- + + @Override + public void windowIconified( WindowEvent e ) { + cancelPopupMenu(); + } + + @Override + public void windowDeactivated( WindowEvent e ) { + cancelPopupMenu(); + } + + @Override + public void windowClosing( WindowEvent e ) { + cancelPopupMenu(); + } + + //---- ComponentListener ---- + + @Override + public void componentResized( ComponentEvent e ) { + cancelPopupMenu(); + } + + @Override + public void componentMoved( ComponentEvent e ) { + cancelPopupMenu(); + } + + @Override + public void componentShown( ComponentEvent e ) { + } + + @Override + public void componentHidden( ComponentEvent e ) { + cancelPopupMenu(); + } +} From 3a8a55a545cc3fd795ed849104a6cf536b04f43e Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sun, 26 Jan 2025 13:59:46 +0100 Subject: [PATCH 03/36] Linux with FlatLaf window decorations: right and bottom window resize drag areas were 2px smaller than at left and top sides --- .../java/com/formdev/flatlaf/ui/FlatWindowResizer.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java index a7a77b08..99f0817e 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java @@ -119,9 +119,10 @@ public abstract class FlatWindowResizer int x = 0; int y = 0; - int width = resizeComp.getWidth(); - int height = resizeComp.getHeight(); - if( width == 0 || height == 0 ) + Container cont = topDragComp.getParent(); + int width = cont.getWidth(); + int height = cont.getHeight(); + if( width <= 0 || height <= 0 ) return; Insets resizeInsets = getResizeInsets(); From c32c00a5eb90b681e594f59d39ccb227d19963d6 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sun, 26 Jan 2025 17:48:19 +0100 Subject: [PATCH 04/36] Linux with FlatLaf window decorations: - moved window resizer components from layered pane to rootpane so that border is included in area where user can resize window - scale border thickness --- .../formdev/flatlaf/ui/FlatRootPaneUI.java | 7 ++-- .../formdev/flatlaf/ui/FlatWindowResizer.java | 35 ++++++++----------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java index 3cb17f34..d5b77bfa 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java @@ -684,7 +684,7 @@ public class FlatRootPaneUI * Window border used for non-native window decorations. */ public static class FlatWindowBorder - extends BorderUIResource.EmptyBorderUIResource + extends FlatEmptyBorder { protected final Color activeBorderColor = UIManager.getColor( "RootPane.activeBorderColor" ); protected final Color inactiveBorderColor = UIManager.getColor( "RootPane.inactiveBorderColor" ); @@ -717,7 +717,10 @@ public class FlatRootPaneUI } private void paintImpl( Graphics2D g, int x, int y, int width, int height, double scaleFactor ) { - g.drawRect( x, y, width - 1, height - 1 ); + Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g ); + float lineWidth = (float) (UIScale.scale( 1f ) * scaleFactor); + g.fill( FlatUIUtils.createRectangle( x, y, width, height, lineWidth ) ); + FlatUIUtils.resetRenderingHints( g, oldRenderingHints ); } protected boolean isWindowMaximized( Component c ) { diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java index 99f0817e..06f75a2e 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java @@ -41,7 +41,6 @@ import java.util.function.Supplier; import javax.swing.DesktopManager; import javax.swing.JComponent; import javax.swing.JInternalFrame; -import javax.swing.JLayeredPane; import javax.swing.JPanel; import javax.swing.JRootPane; import javax.swing.SwingUtilities; @@ -60,8 +59,6 @@ import com.formdev.flatlaf.util.UIScale; public abstract class FlatWindowResizer implements PropertyChangeListener, ComponentListener { - protected final static Integer WINDOW_RESIZER_LAYER = JLayeredPane.DRAG_LAYER + 1; - protected final JComponent resizeComp; protected final int borderDragThickness = FlatUIUtils.getUIInt( "RootPane.borderDragThickness", 5 ); @@ -82,12 +79,12 @@ public abstract class FlatWindowResizer leftDragComp = createDragBorderComponent( NW_RESIZE_CURSOR, W_RESIZE_CURSOR, SW_RESIZE_CURSOR ); rightDragComp = createDragBorderComponent( NE_RESIZE_CURSOR, E_RESIZE_CURSOR, SE_RESIZE_CURSOR ); - Container cont = (resizeComp instanceof JRootPane) ? ((JRootPane)resizeComp).getLayeredPane() : resizeComp; - Object cons = (cont instanceof JLayeredPane) ? WINDOW_RESIZER_LAYER : null; - cont.add( topDragComp, cons, 0 ); - cont.add( bottomDragComp, cons, 1 ); - cont.add( leftDragComp, cons, 2 ); - cont.add( rightDragComp, cons, 3 ); + // for rootpanes, add after glasspane + int insertIndex = (resizeComp instanceof JRootPane) ? 1 : 0; + resizeComp.add( topDragComp, insertIndex++ ); + resizeComp.add( bottomDragComp, insertIndex++ ); + resizeComp.add( leftDragComp, insertIndex++ ); + resizeComp.add( rightDragComp, insertIndex++ ); resizeComp.addComponentListener( this ); resizeComp.addPropertyChangeListener( "ancestor", this ); @@ -106,11 +103,10 @@ public abstract class FlatWindowResizer resizeComp.removeComponentListener( this ); resizeComp.removePropertyChangeListener( "ancestor", this ); - Container cont = topDragComp.getParent(); - cont.remove( topDragComp ); - cont.remove( bottomDragComp ); - cont.remove( leftDragComp ); - cont.remove( rightDragComp ); + resizeComp.remove( topDragComp ); + resizeComp.remove( bottomDragComp ); + resizeComp.remove( leftDragComp ); + resizeComp.remove( rightDragComp ); } public void doLayout() { @@ -119,9 +115,8 @@ public abstract class FlatWindowResizer int x = 0; int y = 0; - Container cont = topDragComp.getParent(); - int width = cont.getWidth(); - int height = cont.getHeight(); + int width = resizeComp.getWidth(); + int height = resizeComp.getHeight(); if( width <= 0 || height <= 0 ) return; @@ -252,8 +247,7 @@ public abstract class FlatWindowResizer centerComp = new JPanel(); centerComp.setOpaque( false ); centerComp.setVisible( false ); - Container cont = rootPane.getLayeredPane(); - cont.add( centerComp, WINDOW_RESIZER_LAYER, 4 ); + rootPane.add( centerComp, 5 ); // On Linux, limit window resizing to screen bounds because otherwise // there would be a strange effect when the mouse is moved over a sidebar @@ -263,8 +257,7 @@ public abstract class FlatWindowResizer @Override public void uninstall() { - Container cont = topDragComp.getParent(); - cont.remove( centerComp ); + resizeComp.remove( centerComp ); super.uninstall(); } From 1f594b2ba81ae6c305e7361d9f194f803b84bec0 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Tue, 28 Jan 2025 15:31:13 +0100 Subject: [PATCH 05/36] Linux with FlatLaf window decorations: fixed occasional maximizing of window when single-clicking the window's title bar (issue #637) --- CHANGELOG.md | 8 ++- .../com/formdev/flatlaf/ui/FlatTitlePane.java | 57 +++---------------- 2 files changed, 12 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db86cd40..9c70688d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,9 +27,11 @@ FlatLaf Change Log - PopupFactory: Fixed NPE on Windows 10 when `owner` is `null`. (issue #952) - Popup: On Windows 10, drop shadow of heavy-weight popup was not updated if popup moved/resized. (issue #942) -- FlatLaf window decorations: Minimize and maximize icons were not shown for - custom scale factors less than 100% (e.g. `-Dflatlaf.uiScale=75%`). (issue - #951) +- FlatLaf window decorations: + - Minimize and maximize icons were not shown for custom scale factors less + than 100% (e.g. `-Dflatlaf.uiScale=75%`). (issue #951) + - Linux: Fixed occasional maximizing of window when single-clicking the + window's title bar. (issue #637) - Linux: Popups (menus and combobox lists) were not hidden when window is moved, resized, maximized, restored, iconified or switched to another window. (issue #962) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java index 21c2a800..de7217d7 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java @@ -33,7 +33,6 @@ import java.awt.Image; import java.awt.Insets; import java.awt.Point; import java.awt.Rectangle; -import java.awt.Toolkit; import java.awt.Window; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; @@ -1417,22 +1416,9 @@ debug*/ private Point dragOffset; private boolean linuxNativeMove; - private long lastSingleClickWhen; @Override public void mouseClicked( MouseEvent e ) { - // on Linux, when using native library, the mouse clicked event - // is usually not sent and maximize/restore is done in mouse pressed event - // this check is here for the case that a mouse clicked event comes through for some reason - if( linuxNativeMove && SystemInfo.isLinux && FlatNativeLinuxLibrary.isWMUtilsSupported( window ) ) { - // see comment in mousePressed() - if( lastSingleClickWhen != 0 && (e.getWhen() - lastSingleClickWhen) <= getMultiClickInterval() ) { - lastSingleClickWhen = 0; - maximizeOrRestore(); - } - return; - } - if( e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton( e ) ) { if( SwingUtilities.getDeepestComponentAt( FlatTitlePane.this, e.getX(), e.getY() ) == iconLabel ) { // double-click on icon closes window @@ -1463,42 +1449,6 @@ debug*/ dragOffset = SwingUtilities.convertPoint( mouseLayer, e.getPoint(), window ); linuxNativeMove = false; - - // on Linux, move or maximize/restore window - if( SystemInfo.isLinux && FlatNativeLinuxLibrary.isWMUtilsSupported( window ) ) { - // The fired Java mouse events, when doing a double-click and the first click - // sends a _NET_WM_MOVERESIZE message, are different for various Linux distributions: - // CentOS 7 (GNOME 3.28.2, X11): PRESSED(clickCount=1) PRESSED(clickCount=2) RELEASED(clickCount=2) - // Ubuntu 20.04 (GNOME 3.36.1, X11): PRESSED(clickCount=1) PRESSED(clickCount=2) RELEASED(clickCount=2) - // Ubuntu 22.04 (GNOME 42.2, Wayland): PRESSED(clickCount=1) RELEASED(clickCount=1) CLICKED(clickCount=1) - // Kubuntu 22.04 (KDE 5.24.4, X11): PRESSED(clickCount=1) PRESSED(clickCount=1) RELEASED(clickCount=1) - - // double-click is not always recognized in Java when using _NET_WM_MOVERESIZE message - int clickCount = e.getClickCount(); - if( clickCount == 1 && lastSingleClickWhen != 0 && (e.getWhen() - lastSingleClickWhen) <= getMultiClickInterval() ) - clickCount = 2; - - switch( clickCount ) { - case 1: - // move window via _NET_WM_MOVERESIZE message - e.consume(); - linuxNativeMove = FlatNativeLinuxLibrary.moveOrResizeWindow( window, e, FlatNativeLinuxLibrary.MOVE ); - lastSingleClickWhen = e.getWhen(); - break; - - case 2: - // maximize/restore on double-click - // also done here because no mouse clicked event is sent when using _NET_WM_MOVERESIZE message - lastSingleClickWhen = 0; - maximizeOrRestore(); - break; - } - } - } - - private int getMultiClickInterval() { - Object value = Toolkit.getDefaultToolkit().getDesktopProperty( "awt.multiClickInterval" ); - return (value instanceof Integer) ? (Integer) value : 500; } @Override public void mouseReleased( MouseEvent e ) {} @@ -1521,6 +1471,13 @@ debug*/ if( hasNativeCustomDecoration() ) return; // do nothing if having native window border + // on Linux, move window using window manager + if( SystemInfo.isLinux && FlatNativeLinuxLibrary.isWMUtilsSupported( window ) ) { + linuxNativeMove = FlatNativeLinuxLibrary.moveOrResizeWindow( window, e, FlatNativeLinuxLibrary.MOVE ); + if( linuxNativeMove ) + return; + } + // restore window if it is maximized if( window instanceof Frame ) { Frame frame = (Frame) window; From 072cc3c488e98c9798255a6ab3440db9a26bd94f Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 5 Feb 2025 12:55:12 +0100 Subject: [PATCH 06/36] Styling: MigLayout visual padding was not updated after applying style to Button, ComboBox, Spinner, TextField (and subclasses) and ToggleButton (issue #965) --- CHANGELOG.md | 3 +++ .../com/formdev/flatlaf/ui/FlatButtonUI.java | 17 ++++++++++++++--- .../com/formdev/flatlaf/ui/FlatComboBoxUI.java | 8 ++++---- .../com/formdev/flatlaf/ui/FlatSpinnerUI.java | 8 ++++---- .../com/formdev/flatlaf/ui/FlatTextFieldUI.java | 8 ++++---- .../flatlaf/swingx/ui/FlatDatePickerUI.java | 14 ++++++++++++-- .../flatlaf/testing/swingx/FlatSwingXTest.java | 6 +++--- 7 files changed, 44 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c70688d..528d3f4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,9 @@ FlatLaf Change Log than 100% (e.g. `-Dflatlaf.uiScale=75%`). (issue #951) - Linux: Fixed occasional maximizing of window when single-clicking the window's title bar. (issue #637) +- Styling: MigLayout visual padding was not updated after applying style to + Button, ComboBox, Spinner, TextField (and subclasses) and ToggleButton. (issue + #965) - Linux: Popups (menus and combobox lists) were not hidden when window is moved, resized, maximized, restored, iconified or switched to another window. (issue #962) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java index db9f6838..52379236 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java @@ -280,8 +280,6 @@ public class FlatButtonUI LookAndFeel.installProperty( b, "opaque", false ); LookAndFeel.installProperty( b, "iconTextGap", scale( iconTextGap ) ); - - MigLayoutVisualPadding.install( b ); } @Override @@ -291,10 +289,23 @@ public class FlatButtonUI oldStyleValues = null; borderShared = null; - MigLayoutVisualPadding.uninstall( b ); defaults_initialized = false; } + @Override + protected void installListeners( AbstractButton b ) { + super.installListeners( b ); + + MigLayoutVisualPadding.install( b ); + } + + @Override + protected void uninstallListeners( AbstractButton b ) { + super.uninstallListeners( b ); + + MigLayoutVisualPadding.uninstall( b ); + } + @Override protected BasicButtonListener createButtonListener( AbstractButton b ) { return new FlatButtonListener( b ); diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java index 2976949f..05a4973a 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java @@ -225,6 +225,8 @@ public class FlatComboBoxUI } }; comboBox.addMouseListener( hoverListener ); + + MigLayoutVisualPadding.install( comboBox ); } @Override @@ -233,6 +235,8 @@ public class FlatComboBoxUI comboBox.removeMouseListener( hoverListener ); hoverListener = null; + + MigLayoutVisualPadding.uninstall( comboBox ); } @Override @@ -274,8 +278,6 @@ public class FlatComboBoxUI comboBox.setMaximumRowCount( maximumRowCount ); paddingBorder = new CellPaddingBorder( padding ); - - MigLayoutVisualPadding.install( comboBox ); } @Override @@ -304,8 +306,6 @@ public class FlatComboBoxUI oldStyleValues = null; borderShared = null; - - MigLayoutVisualPadding.uninstall( comboBox ); } @Override diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java index 019f8691..2ba1cc8b 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java @@ -140,8 +140,6 @@ public class FlatSpinnerUI buttonHoverArrowColor = UIManager.getColor( "Spinner.buttonHoverArrowColor" ); buttonPressedArrowColor = UIManager.getColor( "Spinner.buttonPressedArrowColor" ); padding = UIManager.getInsets( "Spinner.padding" ); - - MigLayoutVisualPadding.install( spinner ); } @Override @@ -162,8 +160,6 @@ public class FlatSpinnerUI oldStyleValues = null; borderShared = null; - - MigLayoutVisualPadding.uninstall( spinner ); } @Override @@ -173,6 +169,8 @@ public class FlatSpinnerUI addEditorFocusListener( spinner.getEditor() ); spinner.addFocusListener( getHandler() ); spinner.addPropertyChangeListener( getHandler() ); + + MigLayoutVisualPadding.install( spinner ); } @Override @@ -184,6 +182,8 @@ public class FlatSpinnerUI spinner.removePropertyChangeListener( getHandler() ); handler = null; + + MigLayoutVisualPadding.uninstall( spinner ); } private Handler getHandler() { diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java index 88a178ac..3a2fe0fe 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java @@ -174,8 +174,6 @@ public class FlatTextFieldUI defaultMargin = UIManager.getInsets( prefix + ".margin" ); LookAndFeel.installProperty( getComponent(), "opaque", false ); - - MigLayoutVisualPadding.install( getComponent() ); } @Override @@ -193,8 +191,6 @@ public class FlatTextFieldUI oldStyleValues = null; borderShared = null; - - MigLayoutVisualPadding.uninstall( getComponent() ); } @Override @@ -204,6 +200,8 @@ public class FlatTextFieldUI // necessary to update focus border and background focusListener = new FlatUIUtils.RepaintFocusListener( getComponent(), null ); getComponent().addFocusListener( focusListener ); + + MigLayoutVisualPadding.install( getComponent() ); } @Override @@ -217,6 +215,8 @@ public class FlatTextFieldUI getComponent().getDocument().removeDocumentListener( documentListener ); documentListener = null; } + + MigLayoutVisualPadding.uninstall( getComponent() ); } @Override diff --git a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatDatePickerUI.java b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatDatePickerUI.java index a3a92549..718f28ef 100644 --- a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatDatePickerUI.java +++ b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatDatePickerUI.java @@ -125,8 +125,6 @@ public class FlatDatePickerUI LookAndFeel.installBorder( datePicker, "JXDatePicker.border" ); LookAndFeel.installProperty( datePicker, "opaque", Boolean.TRUE ); - - MigLayoutVisualPadding.install( datePicker ); } @Override @@ -146,6 +144,18 @@ public class FlatDatePickerUI if( datePicker.getBorder() instanceof UIResource ) datePicker.setBorder( null ); + } + + @Override + protected void installListeners() { + super.installListeners(); + + MigLayoutVisualPadding.install( datePicker ); + } + + @Override + protected void uninstallListeners() { + super.uninstallListeners(); MigLayoutVisualPadding.uninstall( datePicker ); } diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.java index cf7b3cbd..aef4ce5d 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.java @@ -354,14 +354,14 @@ public class FlatSwingXTest //---- table ---- table.setModel(new DefaultTableModel( new Object[][] { - {new Date(1574636400000L) /* 25.11.2019, 00:00:00 */}, - {new Date(1517439600000L) /* 01.02.2018, 00:00:00 */}, + {new Date(1574636400000L) /* 2019-11-25 */}, + {new Date(1517439600000L) /* 2018-02-01 */}, }, new String[] { "Date" } ) { - Class[] columnTypes = new Class[] { + Class[] columnTypes = { Date.class }; @Override From 00858002defb0757f150a938d88d2cdbfe8115de Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 5 Feb 2025 14:00:11 +0100 Subject: [PATCH 07/36] Eclipse: updated org.eclipse.jdt.core.prefs using latest Eclipse and buildship versions --- flatlaf-core/.settings/org.eclipse.jdt.core.prefs | 3 +++ flatlaf-demo/.settings/org.eclipse.jdt.core.prefs | 3 +++ flatlaf-extras/.settings/org.eclipse.jdt.core.prefs | 3 +++ flatlaf-intellij-themes/.settings/org.eclipse.jdt.core.prefs | 3 +++ flatlaf-jide-oss/.settings/org.eclipse.jdt.core.prefs | 3 +++ flatlaf-swingx/.settings/org.eclipse.jdt.core.prefs | 3 +++ flatlaf-testing/.settings/org.eclipse.jdt.core.prefs | 3 +++ flatlaf-theme-editor/.settings/org.eclipse.jdt.core.prefs | 3 +++ 8 files changed, 24 insertions(+) diff --git a/flatlaf-core/.settings/org.eclipse.jdt.core.prefs b/flatlaf-core/.settings/org.eclipse.jdt.core.prefs index 71b328aa..373257ca 100644 --- a/flatlaf-core/.settings/org.eclipse.jdt.core.prefs +++ b/flatlaf-core/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,7 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false diff --git a/flatlaf-demo/.settings/org.eclipse.jdt.core.prefs b/flatlaf-demo/.settings/org.eclipse.jdt.core.prefs index 71b328aa..373257ca 100644 --- a/flatlaf-demo/.settings/org.eclipse.jdt.core.prefs +++ b/flatlaf-demo/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,7 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false diff --git a/flatlaf-extras/.settings/org.eclipse.jdt.core.prefs b/flatlaf-extras/.settings/org.eclipse.jdt.core.prefs index 71b328aa..373257ca 100644 --- a/flatlaf-extras/.settings/org.eclipse.jdt.core.prefs +++ b/flatlaf-extras/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,7 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false diff --git a/flatlaf-intellij-themes/.settings/org.eclipse.jdt.core.prefs b/flatlaf-intellij-themes/.settings/org.eclipse.jdt.core.prefs index 71b328aa..373257ca 100644 --- a/flatlaf-intellij-themes/.settings/org.eclipse.jdt.core.prefs +++ b/flatlaf-intellij-themes/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,7 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false diff --git a/flatlaf-jide-oss/.settings/org.eclipse.jdt.core.prefs b/flatlaf-jide-oss/.settings/org.eclipse.jdt.core.prefs index 71b328aa..373257ca 100644 --- a/flatlaf-jide-oss/.settings/org.eclipse.jdt.core.prefs +++ b/flatlaf-jide-oss/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,7 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false diff --git a/flatlaf-swingx/.settings/org.eclipse.jdt.core.prefs b/flatlaf-swingx/.settings/org.eclipse.jdt.core.prefs index 71b328aa..373257ca 100644 --- a/flatlaf-swingx/.settings/org.eclipse.jdt.core.prefs +++ b/flatlaf-swingx/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,7 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false diff --git a/flatlaf-testing/.settings/org.eclipse.jdt.core.prefs b/flatlaf-testing/.settings/org.eclipse.jdt.core.prefs index 71b328aa..373257ca 100644 --- a/flatlaf-testing/.settings/org.eclipse.jdt.core.prefs +++ b/flatlaf-testing/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,7 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false diff --git a/flatlaf-theme-editor/.settings/org.eclipse.jdt.core.prefs b/flatlaf-theme-editor/.settings/org.eclipse.jdt.core.prefs index 71b328aa..373257ca 100644 --- a/flatlaf-theme-editor/.settings/org.eclipse.jdt.core.prefs +++ b/flatlaf-theme-editor/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,7 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false From 5f6cc719ad65eaf4d63d76bd796789bde17ac2d6 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 12 Feb 2025 14:35:35 +0100 Subject: [PATCH 08/36] fixed loading FlatLaf UI delegate classes when using FlatLaf in special application where multiple class loaders are involved; e.g. in Eclipse plugin or in LibreOffice extension (issues #955 and #851) --- CHANGELOG.md | 3 ++ .../java/com/formdev/flatlaf/FlatLaf.java | 50 +++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 528d3f4a..6ce85e1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,9 @@ FlatLaf Change Log - Linux: Popups (menus and combobox lists) were not hidden when window is moved, resized, maximized, restored, iconified or switched to another window. (issue #962) +- Fixed loading FlatLaf UI delegate classes when using FlatLaf in special + application where multiple class loaders are involved. E.g. in Eclipse plugin + or in LibreOffice extension. (issues #955 and #851) ## 3.5.4 diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index bba4d829..dec465d1 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -553,6 +553,9 @@ public abstract class FlatLaf return UIScale.getUserScaleFactor(); } ); + // add lazy UI delegate class loading (if necessary) + addLazyUIdelegateClassLoading( defaults ); + if( postInitialization != null ) { postInitialization.accept( defaults ); postInitialization = null; @@ -750,6 +753,53 @@ public abstract class FlatLaf } } + /** + * Handle UI delegate classes if running in special application where multiple class loaders are involved. + * E.g. in Eclipse plugin or in LibreOffice extension. + *

+ * Problem: Swing runs in Java's system classloader and FlatLaf is loaded in plugin classloader. + * When Swing tries to load UI delegate class in {@link UIDefaults#getUIClass(String, ClassLoader)}, + * invoked from {@link UIDefaults#getUI(JComponent)}, it uses the component's classloader, + * which is Java's system classloader for core Swing components, + * and can not find FlatLaf UI delegates. + *

+ * Solution: Add lazy values for UI delegate class names. + * Those lazy values use FlatLaf classloader to load UI delegate class. + * This is similar to what {@link UIDefaults#getUIClass(String, ClassLoader)} does. + *

+ * Not using {@code defaults.put( "ClassLoader", FlatLaf.class.getClassLoader() )}, + * which would work for FlatLaf UI delegates, but it would break custom + * UI delegates used in other classloaders. + */ + private static void addLazyUIdelegateClassLoading( UIDefaults defaults ) { + if( FlatLaf.class.getClassLoader() == ClassLoader.getSystemClassLoader() ) + return; // not necessary + + Map map = new HashMap<>(); + for( Map.Entry e : defaults.entrySet() ) { + Object key = e.getKey(); + Object value = e.getValue(); + if( key instanceof String && ((String)key).endsWith( "UI" ) && + value instanceof String && !defaults.containsKey( value ) ) + { + String className = (String) value; + map.put( className, (LazyValue) t -> { + try { + Class uiClass = FlatLaf.class.getClassLoader().loadClass( className ); + if( ComponentUI.class.isAssignableFrom( uiClass ) ) + return uiClass; + } catch( ClassNotFoundException ex ) { + // ignore + } + + // let UIDefaults.getUIClass() try to load UI delegate class + return null; + } ); + } + } + defaults.putAll( map ); + } + private void putAATextInfo( UIDefaults defaults ) { if ( SystemInfo.isMacOS && SystemInfo.isJetBrainsJVM ) { // The awt.font.desktophints property suggests sub-pixel anti-aliasing From 6c8f813e539aa9741f61a13a2975a93124f87f54 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Thu, 13 Feb 2025 00:27:44 +0100 Subject: [PATCH 09/36] Testing: added FlatClassLoaderTest.java (used for previous commit) --- .../flatlaf/testing/FlatClassLoaderTest.java | 228 ++++++++++++++++++ .../flatlaf/testing/FlatClassLoaderTest.jfd | 146 +++++++++++ 2 files changed, 374 insertions(+) create mode 100644 flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.java create mode 100644 flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.jfd diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.java new file mode 100644 index 00000000..064a3634 --- /dev/null +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.java @@ -0,0 +1,228 @@ +/* + * Copyright 2025 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.testing; + +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.net.URL; +import java.net.URLClassLoader; +import javax.swing.*; + +/** + * java -classpath "/flatlaf-testing/bin/main" com.formdev.flatlaf.testing.FlatClassLoaderTest + * + * @author Karl Tauber + */ +public class FlatClassLoaderTest + extends JPanel +{ + public static void main( String[] args ) { + try { + Class.forName( "com.formdev.flatlaf.FlatDarkLaf" ); + System.err.println( "Run without FlatLaf on classpath" ); + return; + } catch( ClassNotFoundException ex ) { + // continue + } catch( Exception ex ) { + ex.printStackTrace(); + return; + } + + if( FlatClassLoaderTest.class.getResource( "/META-INF/services/com.formdev.flatlaf.FlatDefaultsAddon" ) != null ) { + System.err.println( "Remove file 'META-INF/services/com.formdev.flatlaf.FlatDefaultsAddon'" ); + return; + } + + try { + @SuppressWarnings( "resource" ) + URLClassLoader cl = new URLClassLoader( new URL[] { + new URL( "file", null, "../flatlaf-core/bin/main/" ) + }, FlatClassLoaderTest.class.getClassLoader() ); + + Class lafClass = cl.loadClass( "com.formdev.flatlaf.FlatDarkLaf" ); + LookAndFeel laf = (LookAndFeel) lafClass.newInstance(); + UIManager.setLookAndFeel( laf ); + + JFrame frame = new JFrame( "FlatClassloaderTest" ); + frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); + frame.add( new FlatClassLoaderTest() ); + frame.setBounds( 100, 100, 600, 400 ); + frame.setVisible( true ); + } catch( Exception ex ) { + ex.printStackTrace(); + } + } + + private FlatClassLoaderTest() { + initComponents(); + } + + private void initComponents() { + // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents + JLabel label1 = new JLabel(); + JTextField textField1 = new JTextField(); + JComboBox comboBox1 = new JComboBox<>(); + JButton button1 = new JButton(); + JCheckBox checkBox1 = new JCheckBox(); + JRadioButton radioButton1 = new JRadioButton(); + JToggleButton toggleButton1 = new JToggleButton(); + JScrollPane scrollPane1 = new JScrollPane(); + JTextArea textArea1 = new JTextArea(); + JFormattedTextField formattedTextField1 = new JFormattedTextField(); + JPasswordField passwordField1 = new JPasswordField(); + JScrollPane scrollPane2 = new JScrollPane(); + JTextPane textPane1 = new JTextPane(); + JScrollPane scrollPane3 = new JScrollPane(); + JEditorPane editorPane1 = new JEditorPane(); + JSpinner spinner1 = new JSpinner(); + JScrollPane scrollPane4 = new JScrollPane(); + JList list1 = new JList<>(); + JScrollPane scrollPane5 = new JScrollPane(); + JTable table1 = new JTable(); + JScrollPane scrollPane6 = new JScrollPane(); + JTree tree1 = new JTree(); + JProgressBar progressBar1 = new JProgressBar(); + JScrollBar scrollBar1 = new JScrollBar(); + JSeparator separator1 = new JSeparator(); + JSlider slider1 = new JSlider(); + JPanel panel1 = new JPanel(); + JTabbedPane tabbedPane1 = new JTabbedPane(); + JSplitPane splitPane1 = new JSplitPane(); + JToolBar toolBar1 = new JToolBar(); + JMenuBar menuBar1 = new JMenuBar(); + JMenu menu1 = new JMenu(); + JMenuItem menuItem1 = new JMenuItem(); + JCheckBoxMenuItem checkBoxMenuItem1 = new JCheckBoxMenuItem(); + JRadioButtonMenuItem radioButtonMenuItem1 = new JRadioButtonMenuItem(); + + //======== this ======== + setLayout(new FlowLayout()); + + //---- label1 ---- + label1.setText("text"); + add(label1); + add(textField1); + add(comboBox1); + + //---- button1 ---- + button1.setText("text"); + add(button1); + + //---- checkBox1 ---- + checkBox1.setText("text"); + add(checkBox1); + + //---- radioButton1 ---- + radioButton1.setText("text"); + add(radioButton1); + + //---- toggleButton1 ---- + toggleButton1.setText("text"); + add(toggleButton1); + + //======== scrollPane1 ======== + { + scrollPane1.setViewportView(textArea1); + } + add(scrollPane1); + add(formattedTextField1); + add(passwordField1); + + //======== scrollPane2 ======== + { + scrollPane2.setViewportView(textPane1); + } + add(scrollPane2); + + //======== scrollPane3 ======== + { + scrollPane3.setViewportView(editorPane1); + } + add(scrollPane3); + add(spinner1); + + //======== scrollPane4 ======== + { + scrollPane4.setViewportView(list1); + } + add(scrollPane4); + + //======== scrollPane5 ======== + { + + //---- table1 ---- + table1.setPreferredScrollableViewportSize(new Dimension(100, 80)); + scrollPane5.setViewportView(table1); + } + add(scrollPane5); + + //======== scrollPane6 ======== + { + + //---- tree1 ---- + tree1.setVisibleRowCount(6); + scrollPane6.setViewportView(tree1); + } + add(scrollPane6); + add(progressBar1); + add(scrollBar1); + add(separator1); + add(slider1); + + //======== panel1 ======== + { + panel1.setLayout(new BoxLayout(panel1, BoxLayout.X_AXIS)); + } + add(panel1); + add(tabbedPane1); + add(splitPane1); + + //======== toolBar1 ======== + { + toolBar1.addSeparator(); + } + add(toolBar1); + + //======== menuBar1 ======== + { + + //======== menu1 ======== + { + menu1.setText("text"); + + //---- menuItem1 ---- + menuItem1.setText("text"); + menu1.add(menuItem1); + + //---- checkBoxMenuItem1 ---- + checkBoxMenuItem1.setText("text"); + menu1.add(checkBoxMenuItem1); + + //---- radioButtonMenuItem1 ---- + radioButtonMenuItem1.setText("text"); + menu1.add(radioButtonMenuItem1); + menu1.addSeparator(); + } + menuBar1.add(menu1); + } + add(menuBar1); + // JFormDesigner - End of component initialization //GEN-END:initComponents + } + + // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables + // JFormDesigner - End of variables declaration //GEN-END:variables +} diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.jfd new file mode 100644 index 00000000..1398601f --- /dev/null +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.jfd @@ -0,0 +1,146 @@ +JFDML JFormDesigner: "8.3" encoding: "UTF-8" + +new FormModel { + contentType: "form/swing" + root: new FormRoot { + auxiliary() { + "JavaCodeGenerator.defaultVariableLocal": true + } + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.FlowLayout ) ) { + name: "this" + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label1" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JTextField" ) { + name: "textField1" + } ) + add( new FormComponent( "javax.swing.JComboBox" ) { + name: "comboBox1" + auxiliary() { + "JavaCodeGenerator.typeParameters": "String" + } + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "button1" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JCheckBox" ) { + name: "checkBox1" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JRadioButton" ) { + name: "radioButton1" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JToggleButton" ) { + name: "toggleButton1" + "text": "text" + } ) + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane1" + add( new FormComponent( "javax.swing.JTextArea" ) { + name: "textArea1" + } ) + } ) + add( new FormComponent( "javax.swing.JFormattedTextField" ) { + name: "formattedTextField1" + } ) + add( new FormComponent( "javax.swing.JPasswordField" ) { + name: "passwordField1" + } ) + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane2" + add( new FormComponent( "javax.swing.JTextPane" ) { + name: "textPane1" + } ) + } ) + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane3" + add( new FormComponent( "javax.swing.JEditorPane" ) { + name: "editorPane1" + } ) + } ) + add( new FormComponent( "javax.swing.JSpinner" ) { + name: "spinner1" + } ) + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane4" + add( new FormComponent( "javax.swing.JList" ) { + name: "list1" + auxiliary() { + "JavaCodeGenerator.typeParameters": "String" + } + } ) + } ) + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane5" + add( new FormComponent( "javax.swing.JTable" ) { + name: "table1" + "preferredScrollableViewportSize": new java.awt.Dimension( 100, 80 ) + } ) + } ) + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane6" + add( new FormComponent( "javax.swing.JTree" ) { + name: "tree1" + "visibleRowCount": 6 + } ) + } ) + add( new FormComponent( "javax.swing.JProgressBar" ) { + name: "progressBar1" + } ) + add( new FormComponent( "javax.swing.JScrollBar" ) { + name: "scrollBar1" + } ) + add( new FormComponent( "javax.swing.JSeparator" ) { + name: "separator1" + } ) + add( new FormComponent( "javax.swing.JSlider" ) { + name: "slider1" + } ) + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class javax.swing.BoxLayout ) { + "axis": 0 + } ) { + name: "panel1" + } ) + add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) { + name: "tabbedPane1" + } ) + add( new FormContainer( "javax.swing.JSplitPane", new FormLayoutManager( class javax.swing.JSplitPane ) ) { + name: "splitPane1" + } ) + add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) { + name: "toolBar1" + add( new FormComponent( "javax.swing.JToolBar$Separator" ) { + name: "separator2" + } ) + } ) + add( new FormContainer( "javax.swing.JMenuBar", new FormLayoutManager( class javax.swing.JMenuBar ) ) { + name: "menuBar1" + add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) { + name: "menu1" + "text": "text" + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem1" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) { + name: "checkBoxMenuItem1" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JRadioButtonMenuItem" ) { + name: "radioButtonMenuItem1" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) { + name: "separator3" + } ) + } ) + } ) + }, new FormLayoutConstraints( null ) { + "location": new java.awt.Point( 0, 0 ) + "size": new java.awt.Dimension( 425, 460 ) + } ) + } +} From 76f436726f8a6865f8fa9ddfbdbfc3802219a6dc Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Thu, 13 Feb 2025 18:55:08 +0100 Subject: [PATCH 10/36] IntelliJ Themes: updated themes to newest versions (used IJThemesUpdater) --- CHANGELOG.md | 1 + .../demo/intellijthemes/IJThemeInfo.java | 12 +- .../demo/intellijthemes/IJThemesManager.java | 7 +- .../demo/intellijthemes/IJThemesPanel.java | 12 +- .../demo/intellijthemes/IJThemesUpdater.java | 3 + .../flatlaf/demo/intellijthemes/themes.json | 85 +- .../intellijthemes/themes/Dracula.theme.json | 2 +- .../themes/Gradianto_Nature_Green.theme.json | 48 +- .../themes/Gradianto_dark_fuchsia.theme.json | 1 + .../themes/HiberbeeDark.theme.json | 301 ++++--- .../intellijthemes/themes/Monocai.theme.json | 1 - .../Arc Dark.theme.json | 749 +++++++++++++---- .../Atom One Dark.theme.json | 753 +++++++++++++---- .../Atom One Light.theme.json | 761 ++++++++++++++---- .../material-theme-ui-lite/Dracula.theme.json | 751 +++++++++++++---- .../GitHub Dark.theme.json | 749 +++++++++++++---- .../material-theme-ui-lite/GitHub.theme.json | 749 +++++++++++++---- .../Light Owl.theme.json | 749 +++++++++++++---- .../Material Darker.theme.json | 749 +++++++++++++---- .../Material Deep Ocean.theme.json | 749 +++++++++++++---- .../Material Lighter.theme.json | 749 +++++++++++++---- .../Material Oceanic.theme.json | 749 +++++++++++++---- .../Material Palenight.theme.json | 749 +++++++++++++---- .../Monokai Pro.theme.json | 749 +++++++++++++---- .../Moonlight.theme.json | 749 +++++++++++++---- .../Night Owl.theme.json | 749 +++++++++++++---- .../Solarized Dark.theme.json | 749 +++++++++++++---- .../Solarized Light.theme.json | 749 +++++++++++++---- 28 files changed, 10426 insertions(+), 2798 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ce85e1e..4d4a2014 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ FlatLaf Change Log - Extras: `FlatSVGIcon` color filters now can access painting component to implement component state based color mappings. (issue #906) - Linux: Added `libflatlaf-linux-arm64.so` for Linux on ARM64. (issue #899) +- IntelliJ Themes: Updated to latest versions. #### Fixed bugs diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemeInfo.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemeInfo.java index 40e0bc03..90913b00 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemeInfo.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemeInfo.java @@ -25,24 +25,32 @@ class IJThemeInfo { final String name; final String resourceName; + final boolean discontinued; final boolean dark; final String license; final String licenseFile; + final String pluginUrl; final String sourceCodeUrl; final String sourceCodePath; final File themeFile; final String lafClassName; - IJThemeInfo( String name, String resourceName, boolean dark, + IJThemeInfo( String name, boolean dark, String lafClassName ) { + this( name, null, false, dark, null, null, null, null, null, null, lafClassName ); + } + + IJThemeInfo( String name, String resourceName, boolean discontinued, boolean dark, String license, String licenseFile, - String sourceCodeUrl, String sourceCodePath, + String pluginUrl, String sourceCodeUrl, String sourceCodePath, File themeFile, String lafClassName ) { this.name = name; this.resourceName = resourceName; + this.discontinued = discontinued; this.dark = dark; this.license = license; this.licenseFile = licenseFile; + this.pluginUrl = pluginUrl; this.sourceCodeUrl = sourceCodeUrl; this.sourceCodePath = sourceCodePath; this.themeFile = themeFile; diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesManager.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesManager.java index ece63854..90194dbb 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesManager.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesManager.java @@ -56,13 +56,16 @@ class IJThemesManager String resourceName = e.getKey(); Map value = (Map) e.getValue(); String name = value.get( "name" ); + boolean discontinued = Boolean.parseBoolean( value.get( "discontinued" ) ); boolean dark = Boolean.parseBoolean( value.get( "dark" ) ); String license = value.get( "license" ); String licenseFile = value.get( "licenseFile" ); + String pluginUrl = value.get( "pluginUrl" ); String sourceCodeUrl = value.get( "sourceCodeUrl" ); String sourceCodePath = value.get( "sourceCodePath" ); - bundledThemes.add( new IJThemeInfo( name, resourceName, dark, license, licenseFile, sourceCodeUrl, sourceCodePath, null, null ) ); + bundledThemes.add( new IJThemeInfo( name, resourceName, discontinued, dark, + license, licenseFile, pluginUrl, sourceCodeUrl, sourceCodePath, null, null ) ); } } @@ -85,7 +88,7 @@ class IJThemesManager String name = fname.endsWith( ".properties" ) ? StringUtils.removeTrailing( fname, ".properties" ) : StringUtils.removeTrailing( fname, ".theme.json" ); - moreThemes.add( new IJThemeInfo( name, null, false, null, null, null, null, f, null ) ); + moreThemes.add( new IJThemeInfo( name, null, false, false, null, null, null, null, null, f, null ) ); lastModifiedMap.put( f, f.lastModified() ); } } diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java index 360ac0a1..3b452434 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java @@ -179,18 +179,18 @@ public class IJThemesPanel // add core themes at beginning categories.put( themes.size(), "Core Themes" ); if( showLight ) - themes.add( new IJThemeInfo( "FlatLaf Light", null, false, null, null, null, null, null, FlatLightLaf.class.getName() ) ); + themes.add( new IJThemeInfo( "FlatLaf Light", false, FlatLightLaf.class.getName() ) ); if( showDark ) - themes.add( new IJThemeInfo( "FlatLaf Dark", null, true, null, null, null, null, null, FlatDarkLaf.class.getName() ) ); + themes.add( new IJThemeInfo( "FlatLaf Dark", true, FlatDarkLaf.class.getName() ) ); if( showLight ) - themes.add( new IJThemeInfo( "FlatLaf IntelliJ", null, false, null, null, null, null, null, FlatIntelliJLaf.class.getName() ) ); + themes.add( new IJThemeInfo( "FlatLaf IntelliJ", false, FlatIntelliJLaf.class.getName() ) ); if( showDark ) - themes.add( new IJThemeInfo( "FlatLaf Darcula", null, true, null, null, null, null, null, FlatDarculaLaf.class.getName() ) ); + themes.add( new IJThemeInfo( "FlatLaf Darcula", true, FlatDarculaLaf.class.getName() ) ); if( showLight ) - themes.add( new IJThemeInfo( "FlatLaf macOS Light", null, false, null, null, null, null, null, FlatMacLightLaf.class.getName() ) ); + themes.add( new IJThemeInfo( "FlatLaf macOS Light", false, FlatMacLightLaf.class.getName() ) ); if( showDark ) - themes.add( new IJThemeInfo( "FlatLaf macOS Dark", null, true, null, null, null, null, null, FlatMacDarkLaf.class.getName() ) ); + themes.add( new IJThemeInfo( "FlatLaf macOS Dark", true, FlatMacDarkLaf.class.getName() ) ); // add themes from directory categories.put( themes.size(), "Current Directory" ); diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesUpdater.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesUpdater.java index c5936919..b3ac899d 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesUpdater.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesUpdater.java @@ -38,6 +38,9 @@ public class IJThemesUpdater themesManager.loadBundledThemes(); for( IJThemeInfo ti : themesManager.bundledThemes ) { + if( ti.discontinued ) + continue; + if( ti.sourceCodeUrl == null || ti.sourceCodePath == null ) { System.out.println( " " + ti.name + " NOT downloaded. Needs manual update from release on JetBrains Plugin portal." ); continue; diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json index 54241237..251a0911 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json @@ -3,6 +3,7 @@ "name": "Arc", "license": "MIT", "licenseFile": "arc-themes.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12451-arc-theme", "sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea", "sourceCodePath": "blob/master/arc-theme-idea-light/resources/arc-theme.theme.json" }, @@ -10,6 +11,7 @@ "name": "Arc - Orange", "license": "MIT", "licenseFile": "arc-themes.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12451-arc-theme", "sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea", "sourceCodePath": "blob/master/arc-theme-idea-light/resources/arc-theme-orange.theme.json" }, @@ -18,6 +20,7 @@ "dark": true, "license": "MIT", "licenseFile": "arc-themes.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/15175-arc-theme-dark", "sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea", "sourceCodePath": "blob/master/arc-theme-idea-dark/resources/arc_theme_dark.theme.json" }, @@ -26,6 +29,7 @@ "dark": true, "license": "MIT", "licenseFile": "arc-themes.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/15175-arc-theme-dark", "sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea", "sourceCodePath": "blob/master/arc-theme-idea-dark/resources/arc_theme_dark_orange.theme.json" }, @@ -34,6 +38,7 @@ "dark": true, "license": "Apache License 2.0", "licenseFile": "arc-themes.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12280-carbon", "sourceCodeUrl": "https://github.com/luisfer0793/theme-carbon", "sourceCodePath": "blob/master/resources/matte_carbon_basics.theme.json" }, @@ -42,6 +47,7 @@ "dark": true, "license": "MIT", "licenseFile": "Cobalt_2.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/10745-cobalt-2", "sourceCodeUrl": "https://github.com/ngehlert/cobalt2", "sourceCodePath": "blob/master/Cobalt2-UI-Theme/resources/Cobalt_2.theme.json" }, @@ -49,6 +55,7 @@ "name": "Cyan light", "license": "MIT", "licenseFile": "Cyan.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12102-cyan-light-theme", "sourceCodeUrl": "https://github.com/OlyaB/CyanTheme", "sourceCodePath": "blob/master/src/Cyan.theme.json" }, @@ -57,6 +64,7 @@ "dark": true, "license": "MIT", "licenseFile": "DarkFlatTheme.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12165-dark-flat-theme", "sourceCodeUrl": "https://github.com/nerzhulart/DarkFlatTheme", "sourceCodePath": "blob/master/src/DarkFlatTheme.theme.json" }, @@ -65,6 +73,7 @@ "dark": true, "license": "MIT", "licenseFile": "DarkPurple.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12100-dark-purple-theme", "sourceCodeUrl": "https://github.com/OlyaB/DarkPurpleTheme", "sourceCodePath": "blob/master/src/DarkPurple.theme.json" }, @@ -73,6 +82,7 @@ "dark": true, "license": "MIT", "licenseFile": "Dracula.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12275-dracula-theme", "sourceCodeUrl": "https://github.com/dracula/jetbrains", "sourceCodePath": "blob/master/src/main/resources/themes/Dracula.theme.json" }, @@ -81,6 +91,7 @@ "dark": true, "license": "MIT", "licenseFile": "Gradianto.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto", "sourceCodeUrl": "https://github.com/thvardhan/Gradianto", "sourceCodePath": "blob/master/src/main/resources/Gradianto_dark_fuchsia.theme.json" }, @@ -89,6 +100,7 @@ "dark": true, "license": "MIT", "licenseFile": "Gradianto.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto", "sourceCodeUrl": "https://github.com/thvardhan/Gradianto", "sourceCodePath": "blob/master/src/main/resources/Gradianto_deep_ocean.theme.json" }, @@ -97,6 +109,7 @@ "dark": true, "license": "MIT", "licenseFile": "Gradianto.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto", "sourceCodeUrl": "https://github.com/thvardhan/Gradianto", "sourceCodePath": "blob/master/src/main/resources/Gradianto_midnight_blue.theme.json" }, @@ -105,6 +118,7 @@ "dark": true, "license": "MIT", "licenseFile": "Gradianto.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto", "sourceCodeUrl": "https://github.com/thvardhan/Gradianto", "sourceCodePath": "blob/master/src/main/resources/Gradianto_Nature_Green.theme.json" }, @@ -112,6 +126,7 @@ "name": "Gray", "license": "MIT", "licenseFile": "Gray.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12103-gray-theme", "sourceCodeUrl": "https://github.com/OlyaB/GreyTheme", "sourceCodePath": "blob/master/src/Gray.theme.json" }, @@ -120,6 +135,7 @@ "dark": true, "license": "MIT", "licenseFile": "gruvbox_theme.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12310-gruvbox-theme", "sourceCodeUrl": "https://github.com/Vincent-P/gruvbox-intellij-theme", "sourceCodePath": "blob/master/src/main/resources/gruvbox_dark_hard.theme.json" }, @@ -128,6 +144,7 @@ "dark": true, "license": "MIT", "licenseFile": "gruvbox_theme.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12310-gruvbox-theme", "sourceCodeUrl": "https://github.com/Vincent-P/gruvbox-intellij-theme", "sourceCodePath": "blob/master/src/main/resources/gruvbox_dark_medium.theme.json" }, @@ -136,6 +153,7 @@ "dark": true, "license": "MIT", "licenseFile": "gruvbox_theme.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12310-gruvbox-theme", "sourceCodeUrl": "https://github.com/Vincent-P/gruvbox-intellij-theme", "sourceCodePath": "blob/master/src/main/resources/gruvbox_dark_soft.theme.json" }, @@ -144,6 +162,7 @@ "dark": true, "license": "MIT", "licenseFile": "Hiberbee.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12118-hiberbee-theme", "sourceCodeUrl": "https://github.com/Hiberbee/themes", "sourceCodePath": "blob/latest/src/intellij/src/main/resources/themes/HiberbeeDark.theme.json" }, @@ -159,6 +178,7 @@ "name": "Light Flat", "license": "MIT", "licenseFile": "LightFlatTheme.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12169-light-flat-theme", "sourceCodeUrl": "https://github.com/nerzhulart/LightFlatTheme", "sourceCodePath": "blob/master/src/LightFlatTheme.theme.json" }, @@ -167,6 +187,7 @@ "dark": true, "license": "MIT", "licenseFile": "MaterialTheme.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12134-material-design-dark-theme", "sourceCodeUrl": "https://github.com/xinkunZ/NotReallyMDTheme", "sourceCodePath": "blob/master/src/main/resources/MaterialTheme.theme.json" }, @@ -175,11 +196,13 @@ "dark": true, "license": "MIT", "licenseFile": "Monocai.LICENSE.txt", - "sourceCodeUrl": "https://github.com/bmikaili/intellij-monocai-theme", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12163-monocai-color-theme", + "sourceCodeUrl": "https://github.com/TheEggi/intellij-monocai-theme", "sourceCodePath": "blob/master/resources/Monocai.theme.json" }, "Monokai_Pro.default.theme.json": { "name": "Monokai Pro", + "discontinued": true, "dark": true, "license": "MIT", "licenseFile": "Monokai_Pro.LICENSE.txt", @@ -190,7 +213,8 @@ "dark": true, "license": "MIT", "licenseFile": "nord.LICENSE.txt", - "sourceCodeUrl": "https://github.com/arcticicestudio/nord-jetbrains", + "pluginUrl": "https://plugins.jetbrains.com/plugin/10321-nord", + "sourceCodeUrl": "https://github.com/nordtheme/jetbrains", "sourceCodePath": "blob/main/src/nord.theme.json" }, "one_dark.theme.json": { @@ -198,11 +222,13 @@ "dark": true, "license": "MIT", "licenseFile": "one_dark.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/11938-one-dark-theme", "sourceCodeUrl": "https://github.com/one-dark/jetbrains-one-dark-theme", "sourceCodePath": "blob/master/buildSrc/templates/oneDark.template.theme.json" }, "SolarizedDark.theme.json": { "name": "Solarized Dark", + "discontinued": true, "dark": true, "license": "The Unlicense", "licenseFile": "Solarized.LICENSE.txt", @@ -211,6 +237,7 @@ }, "SolarizedLight.theme.json": { "name": "Solarized Light", + "discontinued": true, "license": "The Unlicense", "licenseFile": "Solarized.LICENSE.txt", "sourceCodeUrl": "https://github.com/4lex4/intellij-platform-solarized", @@ -221,6 +248,7 @@ "dark": true, "license": "MIT", "licenseFile": "Spacegray.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12122-spacegray-theme", "sourceCodeUrl": "https://github.com/mturlo/intellij-spacegray", "sourceCodePath": "blob/master/src/Spacegray.theme.json" }, @@ -229,6 +257,7 @@ "dark": true, "license": "MIT", "licenseFile": "vuesion_theme.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/12226-vuesion-theme", "sourceCodeUrl": "https://github.com/vuesion/intellij-theme", "sourceCodePath": "blob/master/resources/META-INF/vuesion_theme.theme.json" }, @@ -237,6 +266,7 @@ "dark": true, "license": "MIT", "licenseFile": "Xcode-Dark.LICENSE.txt", + "pluginUrl": "https://plugins.jetbrains.com/plugin/13106-xcode-dark-theme", "sourceCodeUrl": "https://github.com/antelle/intellij-xcode-dark-theme", "sourceCodePath": "blob/master/resources/Xcode-Dark.theme.json" }, @@ -246,7 +276,8 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Arc Dark.theme.json" }, "material-theme-ui-lite/Atom One Dark.theme.json": { @@ -254,14 +285,16 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Atom One Dark.theme.json" }, "material-theme-ui-lite/Atom One Light.theme.json": { "name": "Material Theme UI Lite / Atom One Light", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Atom One Light.theme.json" }, "material-theme-ui-lite/Dracula.theme.json": { @@ -269,14 +302,16 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Dracula.theme.json" }, "material-theme-ui-lite/GitHub.theme.json": { "name": "Material Theme UI Lite / GitHub", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/GitHub.theme.json" }, "material-theme-ui-lite/GitHub Dark.theme.json": { @@ -284,14 +319,16 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/GitHub Dark.theme.json" }, "material-theme-ui-lite/Light Owl.theme.json": { "name": "Material Theme UI Lite / Light Owl", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Light Owl.theme.json" }, "material-theme-ui-lite/Material Darker.theme.json": { @@ -299,7 +336,8 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Material Darker.theme.json" }, "material-theme-ui-lite/Material Deep Ocean.theme.json": { @@ -307,14 +345,16 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Material Deep Ocean.theme.json" }, "material-theme-ui-lite/Material Lighter.theme.json": { "name": "Material Theme UI Lite / Material Lighter", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Material Lighter.theme.json" }, "material-theme-ui-lite/Material Oceanic.theme.json": { @@ -322,7 +362,8 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Material Oceanic.theme.json" }, "material-theme-ui-lite/Material Palenight.theme.json": { @@ -330,7 +371,8 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Material Palenight.theme.json" }, "material-theme-ui-lite/Monokai Pro.theme.json": { @@ -338,7 +380,8 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Monokai Pro.theme.json" }, "material-theme-ui-lite/Moonlight.theme.json": { @@ -346,7 +389,8 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Moonlight.theme.json" }, "material-theme-ui-lite/Night Owl.theme.json": { @@ -354,7 +398,8 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Night Owl.theme.json" }, "material-theme-ui-lite/Solarized Dark.theme.json": { @@ -362,14 +407,16 @@ "dark": true, "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Solarized Dark.theme.json" }, "material-theme-ui-lite/Solarized Light.theme.json": { "name": "Material Theme UI Lite / Solarized Light", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", - "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite", + "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", + "sourceCodeUrl": "https://github.com/AtomMaterialUI/material-theme-ui-lite", "sourceCodePath": "blob/master/src/main/resources/themes/regular/Solarized Light.theme.json" } } diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Dracula.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Dracula.theme.json index ba77bfcf..b0f9df84 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Dracula.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Dracula.theme.json @@ -258,7 +258,7 @@ }, "ToolWindow": { "Button": { - "selectedBackground": "secondaryAccentColor", + "selectedBackground": "hoverBackground", "hoverBackground": "hoverBackground" }, "Header": { diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_Nature_Green.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_Nature_Green.theme.json index c245a7a9..a5b4b2c4 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_Nature_Green.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_Nature_Green.theme.json @@ -1,29 +1,8 @@ { - "author": "thvardhan", - "dark": true, - "editorScheme": "/Gradianto_Nature_Green.xml", - "icons": { - "ColorPalette": { - "Checkbox.Border.Default": "#3f765a", - "Checkbox.Border.Default.Dark": "#3f765a", - "Checkbox.Background.Default.Dark": "#3f765a", - "Checkbox.Foreground.Selected.Dark": "#00d679", - "Checkbox.Background.Disabled": "#274439", - "Checkbox.Background.Disabled.Dark": "#1e3b2f", - "Objects.Grey": "#e3e3e3c0", - "Objects.Blue": "#4fc3f7c0", - "Objects.RedStatus": "#ff5722c0", - "Objects.Red": "#e07483c0", - "Objects.Pink": "#de6dc2c0", - "Objects.Yellow": "#ffca57c0", - "Objects.Green": "#76da84c0", - "Objects.Purple": "#d199ffc0", - "Objects.BlackText": "#2e2e2ec0", - "Objects.YellowDark": "#ffca1ec0", - "Objects.GreenAndroid": "#18e66bc0" - } - }, "name": "Gradianto Nature Green", + "dark": true, + "author": "thvardhan", + "editorScheme": "/Gradianto_Nature_Green.xml", "ui": { "*": { "background": "#20403f", @@ -282,5 +261,26 @@ } }, "EditorPane.inactiveBackground": "#254a39ff" + }, + "icons": { + "ColorPalette": { + "Checkbox.Border.Default": "#3f765a", + "Checkbox.Border.Default.Dark": "#3f765a", + "Checkbox.Background.Default.Dark": "#3f765a", + "Checkbox.Foreground.Selected.Dark": "#00d679", + "Checkbox.Background.Disabled": "#274439", + "Checkbox.Background.Disabled.Dark": "#1e3b2f", + "Objects.Grey": "#e3e3e3c0", + "Objects.Blue": "#4fc3f7c0", + "Objects.RedStatus": "#ff5722c0", + "Objects.Red": "#e07483c0", + "Objects.Pink": "#de6dc2c0", + "Objects.Yellow": "#ffca57c0", + "Objects.Green": "#76da84c0", + "Objects.Purple": "#d199ffc0", + "Objects.BlackText": "#2e2e2ec0", + "Objects.YellowDark": "#ffca1ec0", + "Objects.GreenAndroid": "#18e66bc0" + } } } \ No newline at end of file diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_dark_fuchsia.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_dark_fuchsia.theme.json index ad651e73..a86f81df 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_dark_fuchsia.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_dark_fuchsia.theme.json @@ -31,6 +31,7 @@ "separatorColor": "#4b2665" }, "Tree": { + "selectionInactiveBackground": "#57376d", "hoverBackground": "#71468f", "hoverInactiveBackground": "#71468f" diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HiberbeeDark.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HiberbeeDark.theme.json index 9e6fef9e..061b8fec 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HiberbeeDark.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HiberbeeDark.theme.json @@ -2,45 +2,8 @@ "name": "Hiberbee Dark", "author": "Vlad Volkov", "dark": true, - "editorScheme": "/colors/Dark.icls", - "icons": { - "ColorPalette": { - "#2b2d30": "#323130", - "#3574f0": "#ffb900", - "#3c3f41": "#323130", - "#43494a": "#424140", - "#6B6B6B": "#525150", - "#134d80": "#202635", - "#a1a3a4": "light7", - "#A7A7A7": "light4", - "#3D6185": "#ffb900", - "Actions.GreyInline.Dark": "light4", - "Checkbox.Background.Disabled.Dark": "#323130", - "Checkbox.Background.Default.Dark": "#424140", - "Checkbox.Background.Selected.Dark": "#424140", - "Checkbox.Focus.Thin.Selected.Dark": "#525150", - "Checkbox.Focus.Wide.Dark": "#525150", - "Checkbox.Foreground.Selected.Dark": "#ffb900", - "Checkbox.Border.Selected": "#ffb900", - "Checkbox.Border.Default.Dark": "dark9", - "Checkbox.Border.Disabled.Dark": "dark7", - "Checkbox.Border.Selected.Dark": "dark10", - "Actions.Blue": "blue", - "Actions.Green": "green", - "Actions.Grey": "dark10", - "Actions.Red": "red", - "Actions.Yellow": "yellow", - "Objects.Blue": "blue", - "Objects.Green": "green", - "Objects.Pink": "#ff6188", - "Objects.Purple": "#9380ff", - "Objects.Red": "#e81123", - "Objects.RedStatus": "#e81123", - "Objects.Grey": "#c9c8c7", - "Objects.Yellow": "#FFB900", - "Objects.YellowDark": "#ff8c00" - } - }, + "parentTheme": "Darcula", + "editorScheme": "Hiberbee Dark", "colors": { "dark1": "#070605", "dark2": "#121110", @@ -54,14 +17,20 @@ "dark10": "#525150", "accent": "#ffb900", "green": "#92D923", - "greenDark": "#92D923a0", - "blueDark": "#253047a0", + "greenDark": "#92D923CC", + "blueDark": "#253047CC", "blue": "#409cff", - "red": "#d70751", - "redDark": "#260b08a0", + "red": "#ff5454", + "redDark": "#320f0f", "yellow": "#ffb900", "yellowLight": "#f5d277", "yellowDark": "#ffb900a0", + "redBg": "#320f0f", + "violetBg": "#302030", + "orangeBg": "#403018", + "yellowBg": "#303018", + "blueBg": "#253047", + "greenBg": "#203020", "light1": "#6f6e6d", "light2": "#7f7e7d", "light3": "#8f8e8d", @@ -75,10 +44,12 @@ }, "ui": { "*": { + "shadow": "dark2", + "darkShadow": "dark1", "background": "dark6", "borderColor": "dark8", "disabledBackground": "dark7", - "disabledForeground": "light5", + "disabledForeground": "light7", "disabledText": "light3", "focusedBorderColor": "dark10", "foreground": "light7", @@ -93,7 +64,17 @@ "selectionBackground": "dark4", "selectionForeground": "light8", "selectionInactiveBackground": "dark6", - "separatorColor": "dark10", + "separatorColor": "dark8", + "warningForeground": "light6", + "errorForeground": "light6", + "errorBackground": "redBg", + "errorBorderColor": "#f25022", + "warningBorderColor": "yellow", + "infoBorderColor": "blue", + "successBorderColor": "green", + "warningBackground": "yellowBg", + "successBackground": "greenBg", + "infoBackground": "blueBg", "shortcutForeground": "light10" }, "ActionButton": { @@ -102,6 +83,10 @@ "pressedBackground": "dark4", "pressedBorderColor": "dark7" }, + "Borders": { + "ContrastBorderColor": "dark10", + "color": "dark9" + }, "Button": { "default": { "endBackground": "dark8", @@ -121,12 +106,13 @@ "startBackground": "dark8", "startBorderColor": "dark9" }, - "Borders": { - "ContrastBorderColor": "dark10", - "color": "dark9" + "CheckBox": { + "select": "light10" + }, + "CheckBoxMenuItem": { + "background": "dark6", + "selectionBackground": "dark4" }, - "CheckBox": { "select": "light10" }, - "CheckBoxMenuItem": { "background": "dark7", "selectionBackground": "dark4" }, "ColorChooser": { "foreground": "light6", "background": "dark6" @@ -146,15 +132,19 @@ }, "CompletionPopup": { "Advertiser": { - "background": "dark7", + "background": "dark4", "foreground": "light4" }, - "selectionBackground": "dark4", - "foreground": "light8", + "selectionInnerInsets": "2,4,2,4", + "Body.insets": "1,1,1,1", + "selectionBackground": "dark5", + "foreground": "light6", "matchForeground": "accent" }, "ComplexPopup": { + "TextField.borderInsets": "1,1,1,1", "Header": { + "insets": "4,0,4,0", "background": "dark5" } }, @@ -164,9 +154,11 @@ "errorFocusColor": "red", "iconColor": "accent", "focusColor": "dark10", - "focusedBorderColor": "dark9", - "inactiveErrorFocusColor": "redDark", - "inactiveWarningFocusColor": "yellowDark", + "focusWidth": 2, + "arc": 0, + "focusedBorderColor": "dark10", + "inactiveErrorFocusColor": "#ff545480", + "inactiveWarningFocusColor": "#ffb90080", "infoForeground": "light3", "warningFocusColor": "yellow" }, @@ -190,7 +182,7 @@ "DefaultTabs": { "underlineHeight": 1, "background": "dark7", - "inactiveUnderlineColor": "yellowDark", + "inactiveUnderlineColor": "#ffb90080", "underlineColor": "accent", "underlinedTabBackground": "dark5" }, @@ -220,13 +212,16 @@ "background": "dark6" }, "FileColor": { - "Gray": "dark7", - "Blue": "blueDark", - "Green": "#232d28", - "Orange": "#2d2823", - "Rose": "redDark", - "Violet": "#2D232D", - "Yellow": "#3b3b19" + "Gray": "dark8", + "Blue": "blueBg", + "Green": "greenBg", + "Orange": "orangeBg", + "Rose": "redBg", + "Violet": "violetBg", + "Yellow": "yellowBg" + }, + "Focus": { + "color": "dark10" }, "FormattedTextField": { "background": "dark8", @@ -235,6 +230,8 @@ "inactiveBackground": "dark7", "selectionForeground": "yellow" }, + "FormattedTextField.selectionBackground": "dark4", + "GotItTooltip.arc": 4, "GutterTooltip": { "lineSeparatorColor": "dark9", "infoForeground": "light3" @@ -255,11 +252,11 @@ }, "Label": { "errorForeground": "red", - "successForeground": "green", + "successForeground": "blue", + "infoForeground": "light3", "selectedForeground": "yellow", "foreground": "light6", - "background": "dark7", - "infoForeground": "light3" + "background": "dark6" }, "Link": { "activeForeground": "accent", @@ -269,70 +266,72 @@ "pressedForeground": "light4" }, "List": { - "Tag": { - "background": "dark6" - }, + "Button.leftRightInset": 1, "background": "dark7", "hoverInactiveBackground": "dark6", "hoverBackground": "dark5", "selectionBackground": "dark4", + "Button.separatorColor": "dark6", + "Button.separatorInset": 0, "selectionInactiveBackground": "dark5" }, + "List.Button.separatorColor": "dark6", "MemoryIndicator": { "allocatedBackground": "dark7", - "usedBackground": "redDark" + "usedBackground": "redBg" }, "Menu": { + "Selection.arc": 0, + "Selection.outerInsets": "1,0,1,0", + "Selection.innerInsets": "4,4,4,4", + "background": "dark6", "borderColor": "dark9", - "background": "dark7", - "separatorColor": "dark8", - "disabledBackground": "dark8", - "selectionBackground": "dark5", + "borderInsets": "1,1,1,1", + "separatorColor": "dark9", "acceleratorSelectionForeground": "light10", - "acceleratorForeground": "light10" + "acceleratorForeground": "light9" + }, + "MenuItem": { + "background": "dark6" }, "Notification": { "ToolWindow": { - "errorBackground": "dark5", - "errorBorderColor": "dark10", - "errorForeground": "light6", + "errorBackground": "redBg", + "errorForeground": "light8", + "errorBorderColor": "red", + "warningBackground": "orangeBg", + "warningBorderColor": "yellow", + "warningForeground": "light8", "informativeBackground": "blueDark", "informativeBorderColor": "blue", - "informativeForeground": "light6", - "warningBackground": "yellowDark", - "warningBorderColor": "yellow", - "warningForeground": "light6" + "informativeForeground": "light4" }, - "borderColor": "dark10", + "borderColor": "dark9", "background": "blueDark", - "arc": 12, - "Button.background": "dark8", - - "Button.borderColor": "dark10", + "Button": { + "background": "dark8", + "borderColor": "dark10", + "foreground": "light10" + }, "linkForeground": "accent", - "Button.foreground": "light10", - "errorBackground": "redDark", - "errorBorderColor": "dark10", - "MoreButton.foreground": "light6", - "errorForeground": "light10", - "foreground": "light10" + "errorBackground": "redBg", + "MoreButton.foreground": "blue", + "errorForeground": "light8", + "foreground": "light8" }, "NotificationsToolwindow": { "newNotification.background": "dark5", "Notification.hoverBackground": "dark6", "newNotification.hoverBackground": "dark4" }, - "Panel": { - "background": "dark6", - "foreground": "light6" - }, "ParameterInfo": { "background": "dark5", - "currentOverloadBackground": "light7", - "currentParameterForeground": "light5", + "disabledForeground": "light4", + "currentOverloadBackground": "dark7", + "currentParameterForeground": "light7", "foreground": "light6", "infoForeground": "light3", - "lineSeparatorColor": "dark9" + "lineSeparatorColor": "dark8" }, "PasswordField": { "capsLockIconColor": "red", @@ -368,10 +367,9 @@ "Popup": { "borderColor": "dark9", "inactiveBorderColor": "dark8", - "innerBorderColor": "dark9", "Advertiser": { "background": "dark4", - "borderColor": "dark7", + "borderColor": "dark9", "foreground": "light4" }, "Header": { @@ -380,11 +378,32 @@ "inactiveForeground": "light6", "inactiveBackground": "dark6" }, + "Body": { + "topInsetNoHeader": 2, + "bottomInsetBeforeAd": 2, + "bottomInsetNoAd": 2 + }, + "separatorInsets": "2,0,2,0", + "Selection": { + "arc": 0, + "innerInsets": "4,8,4,8", + "leftRightInset": 1 + }, + "innerBorderColor": "dark9", "separatorColor": "dark8" }, "PopupMenu": { - "background": "dark7", - "foreground": "light7" + "borderWidth": 0, + "Selection.arc": 0, + "Selection.innerInsets": "4,8,4,8", + "Selection.outerInsets": "2,0,2,0", + "background": "dark6", + "borderInsets": "1,1,1,1", + "foreground": "light6" + }, + "PopupMenuSeparator": { + "stripeIndent": 0, + "height": 1 }, "ProgressBar": { "failedColor": "red", @@ -399,34 +418,40 @@ "RadioButtonMenuItem": { "background": "dark9", "foreground": "light6", - "acceleratorForeground": "blueDark", "selectionForeground": "yellow" }, "RunWidget": { - "background": "dark6", - "pressedBackground": "dark4", - "runModeIconColor": "light10", + "pressedBackground": "dark5", + "hoverBackground": "dark4", + "stopBackground": "redBg", + "iconColor": "accent", + "runIconColor": "greenDark", + "runningIconColor": "light10", "runningBackground": "dark5" }, "ScrollBar": { "hoverThumbColor": "dark10" }, + "ScrollPane": { + "background": "dark6", + "foreground": "light6" + }, "SearchEverywhere": { "Advertiser": { "background": "dark4", - "foreground": "light3" + "foreground": "light4" }, "Header": { "background": "dark5" }, "List": { - "separatorForeground": "dark9", + "separatorForeground": "light2", "settingsBackground": "dark5" }, "SearchField": { "background": "dark8", - "borderColor": "dark10", - "infoForeground": "light3" + "borderColor": "dark9", + "infoForeground": "light4" }, "Tab": { "selectedBackground": "dark3", @@ -449,37 +474,50 @@ "SidePanel": { "background": "dark7" }, + "Slider": { + "buttonBorderColor": "dark9", + "focus": "dark10", + "shadow": "dark2", + "buttonColor": "dark7", + "tickColor": "dark10", + "trackColor": "dark8" + }, "SpeedSearch": { "borderColor": "dark9", "errorForeground": "red", "foreground": "yellow" }, "SplitPane": { - "background": "dark", + "background": "dark6", "highlight": "yellow" }, + "ComboPopup.border": "1,1,1,1,525150", "TabbedPane": { "contentAreaColor": "dark7", "disabledForeground": "light3", "disabledUnderlineColor": "light3", - "focusColor": "dark4", "focus": "dark9", + "focusColor": "dark4", "underlineColor": "accent" }, "Table": { - "background": "dark7", "alternativeRowBackground": "dark6", + "background": "dark7", "dropLineColor": "dark10", "dropLineShortColor": "dark10", - "focusCellBackground": "dark5", + "focusCellBackground": "dark4", "focusCellForeground": "yellow", - "lightSelectionBackground": "dark5", "gridColor": "dark9", + "lightSelectionBackground": "dark8", "sortIconColor": "yellow", + "selectionBackground": "dark4", "stripeColor": "dark9" }, "TableHeader": { "background": "dark5", + "separatorColor": "dark9", + "cellBorder": "dark8", + "focusCellBackground": "dark4", "bottomSeparatorColor": "dark9" }, "TextArea": { @@ -501,7 +539,7 @@ "background": "dark6", "inactiveBackground": "dark7", "inactiveForeground": "light3", - "selectionBackground": "dark4" + "selectionBackground": "dark5" }, "TitlePane": { "background": "dark5" @@ -509,10 +547,11 @@ "ToggleButton": { "buttonColor": "dark8", "disabledText": "light2", - "offBackground": "dark4", + "borderColor": "dark9", + "offBackground": "dark6", "offForeground": "light6", "onBackground": "yellow", - "onForeground": "dark1" + "onForeground": "dark2" }, "ToolBar": { "background": "dark5", @@ -522,7 +561,8 @@ "Actions.background": "dark5", "Actions.infoForeground": "light3", "background": "dark5", - "infoForeground": "light2" + "foreground": "light5", + "infoForeground": "light3" }, "ToolWindow": { "Button": { @@ -531,10 +571,12 @@ "selectedForeground": "yellow" }, "Header": { + "padding": "0,1,0,1", "background": "dark4", "inactiveBackground": "dark5" }, "HeaderTab": { + "padding": "0,0,0,0", "underlineHeight": 1, "hoverInactiveBackground": "dark5", "inactiveUnderlineColor": "yellowDark", @@ -544,11 +586,7 @@ }, "background": "dark7" }, - "GotItTooltip.arc": 4, "Tree": { - "Selection": { - "arc": 4 - }, "background": "dark7", "errorForeground": "red", "foreground": "light7", @@ -556,16 +594,12 @@ "hoverInactiveBackground": "dark5", "modifiedItemForeground": "blue", "selectionBackground": "dark5", + "Selection.arc": 0, "selectionInactiveBackground": "dark6" }, - "ScrollPane": { - "background": "dark6", - "foreground": "light6" - }, "ValidationTooltip": { - "errorBackground": "redDark", - "errorBorderColor": "red", - "warningBackground": "yellowDark", + "errorBackground": "dark4", + "warningBackground": "dark4", "warningBorderColor": "yellow" }, "VersionControl": { @@ -597,6 +631,7 @@ }, "Projects": { "actions.selectionBackground": "dark5", + "actions.background": "dark6", "background": "dark7", "actions.selectionBorderColor": "dark10", "selectionBackground": "dark5", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Monocai.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Monocai.theme.json index e86f190b..2a9b2bb4 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Monocai.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Monocai.theme.json @@ -220,7 +220,6 @@ "Header.inactiveBackground": "#7f7e7f", "Advertiser": { "foreground": "#727072", - "background": "#403e42", "borderColor": "#7f7e7f", "borderInsets": "4,8,3,0" } diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark.theme.json index 8aa2b207..c8a56449 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark.theme.json @@ -16,7 +16,7 @@ "second": "#393f4c", "dis": "#a2a2a2", "accent": "#5294E2", - "accent2": "#5294E22", + "acc2": "#f9ee98", "accent50": "#5294E250", "accent70": "#5294E270", "cs": "#262b33", @@ -26,7 +26,7 @@ "hl": "#444A58", "notif": "#262a33", "hc": "#2f343f", - "shadow": "undefined", + "shadow": "#00000020", "white": "#CF6A4C", "blue": "#7587A6", "red": "#CF6A4C", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#5294E2", + "ComboPopup": { + "border": "1,1,1,1,#5294E2" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark.theme.json index 6993b7e2..06439867 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark.theme.json @@ -16,17 +16,17 @@ "second": "#2F333D", "dis": "#6B727D", "accent": "#2979ff", - "accent2": "#2979ff2", + "acc2": "#e5c17c", "accent50": "#2979ff50", "accent70": "#2979ff70", "cs": "#21252B", - "button": "#3A3F4B", + "button": "#353b45", "table": "#383E49", "tree": "#303540", - "hl": "#383D48", + "hl": "#3E4451", "notif": "#282C34", "hc": "#282C34", - "shadow": "undefined", + "shadow": "#00000020", "white": "#D19A66", "blue": "#61AEEF", "red": "#e06c75", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#2979ff", + "ComboPopup": { + "border": "1,1,1,1,#2979ff" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light.theme.json index 66fff94e..95b72315 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light.theme.json @@ -7,26 +7,26 @@ "bg30": "#F4F4F430", "fg": "#232324", "text": "#7f7f7f", - "selBg": "#FFFFFF", - "selBg20": "#FFFFFF20", + "selBg": "#d6e1f1", + "selBg20": "#d6e1f120", "selFg": "#232324", "activeFg": "#232324", "border": "#DBDBDC", "excl": "#CACACB", "second": "#EAEAEB", "dis": "#b8b8b9", - "accent": "#2979ff", - "accent2": "#2979ff2", - "accent50": "#2979ff50", - "accent70": "#2979ff70", + "accent": "#5d70e7", + "acc2": "#e2c08d", + "accent50": "#5d70e750", + "accent70": "#5d70e770", "cs": "#eaeaeb", "button": "#DBDBDC", "table": "#DBDBDC", - "tree": "#e8e8e8", + "tree": "#dbdbdc", "hl": "#FFFFFF", "notif": "#F2F2F2", "hc": "#F4F4F4", - "shadow": "undefined", + "shadow": "#ffffff20", "white": "#986801", "blue": "#4078F2", "red": "#E4564A", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#2979ff", + "ComboPopup": { + "border": "1,1,1,1,#5d70e7" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula.theme.json index 070971f5..ca11af0e 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula.theme.json @@ -9,14 +9,14 @@ "text": "#6272A4", "selBg": "#44475A", "selBg20": "#44475A20", - "selFg": "#8BE9FD", + "selFg": "#FFFFFF", "activeFg": "#FFFFFF", "border": "#21222C", "excl": "#313341", "second": "#282A36", "dis": "#6272A4", "accent": "#FF79C5", - "accent2": "#FF79C52", + "acc2": "#80ffea", "accent50": "#FF79C550", "accent70": "#FF79C570", "cs": "#191A21", @@ -26,7 +26,7 @@ "hl": "#44475a", "notif": "#1D2228", "hc": "#282A36", - "shadow": "undefined", + "shadow": "#00000020", "white": "#F8F8F2", "blue": "#8aff80", "red": "#FF79C5", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#FF79C5", + "ComboPopup": { + "border": "1,1,1,1,#FF79C5" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub Dark.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub Dark.theme.json index be7c0cdf..f689c86f 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub Dark.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub Dark.theme.json @@ -16,7 +16,7 @@ "second": "#2f363d", "dis": "#6a737d", "accent": "#f9826c", - "accent2": "#f9826c2", + "acc2": "#9ecbff", "accent50": "#f9826c50", "accent70": "#f9826c70", "cs": "#1e2428", @@ -26,7 +26,7 @@ "hl": "#444d56", "notif": "#2f363d", "hc": "#24292e", - "shadow": "undefined", + "shadow": "#00000020", "white": "#d1d5da", "blue": "#b392f0", "red": "#85e89d", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#f9826c", + "ComboPopup": { + "border": "1,1,1,1,#f9826c" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub.theme.json index 21060cc9..a91362a4 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub.theme.json @@ -16,7 +16,7 @@ "second": "#F3f3f3", "dis": "#9ba0a3", "accent": "#79CB60", - "accent2": "#79CB602", + "acc2": "#005cc4", "accent50": "#79CB6050", "accent70": "#79CB6070", "cs": "#fafbfc", @@ -26,7 +26,7 @@ "hl": "#CCE5FF", "notif": "#DFECFE", "hc": "#F7F8FA", - "shadow": "undefined", + "shadow": "#ffffff20", "white": "#24292E", "blue": "#6F42C1", "red": "#22863A", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#79CB60", + "ComboPopup": { + "border": "1,1,1,1,#79CB60" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl.theme.json index f5a52d36..65de9ea2 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl.theme.json @@ -16,7 +16,7 @@ "second": "#FBFBFB", "dis": "#93A1A1", "accent": "#2AA298", - "accent2": "#2AA2982", + "acc2": "#aa0982", "accent50": "#2AA29850", "accent70": "#2AA29870", "cs": "#f0f0f0", @@ -26,7 +26,7 @@ "hl": "#CCCCCC", "notif": "#F0F0F0", "hc": "#F0F0F0", - "shadow": "undefined", + "shadow": "#ffffff20", "white": "#4876d6", "blue": "#4876d6", "red": "#994cc3", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#2AA298", + "ComboPopup": { + "border": "1,1,1,1,#2AA298" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker.theme.json index d3abe59c..d388529a 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker.theme.json @@ -16,7 +16,7 @@ "second": "#292929", "dis": "#474747", "accent": "#FF9800", - "accent2": "#FF98002", + "acc2": "#89ddff", "accent50": "#FF980050", "accent70": "#FF980070", "cs": "#1A1A1A", @@ -26,7 +26,7 @@ "hl": "#3F3F3F", "notif": "#1A1A1A", "hc": "#212121", - "shadow": "undefined", + "shadow": "#00000020", "white": "#eeffff", "blue": "#82aaff", "red": "#f07178", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#FF9800", + "ComboPopup": { + "border": "1,1,1,1,#FF9800" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean.theme.json index ffd58616..fb9a48b8 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean.theme.json @@ -16,7 +16,7 @@ "second": "#181A1F", "dis": "#464B5D", "accent": "#84ffff", - "accent2": "#84ffff2", + "acc2": "#F06292", "accent50": "#84ffff50", "accent70": "#84ffff70", "cs": "#090B10", @@ -26,7 +26,7 @@ "hl": "#1F2233", "notif": "#090B10", "hc": "#0F111A", - "shadow": "undefined", + "shadow": "#00000020", "white": "#eeffff", "blue": "#82aaff", "red": "#f07178", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#84ffff", + "ComboPopup": { + "border": "1,1,1,1,#84ffff" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter.theme.json index f5954209..0f6260c6 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter.theme.json @@ -16,7 +16,7 @@ "second": "#FFFFFF", "dis": "#D2D4D5", "accent": "#00BCD4", - "accent2": "#00BCD42", + "acc2": "#D41800", "accent50": "#00BCD450", "accent70": "#00BCD470", "cs": "#EEEEEE", @@ -26,7 +26,7 @@ "hl": "#E7E7E8", "notif": "#eae8e8", "hc": "#FAFAFA", - "shadow": "undefined", + "shadow": "#ffffff20", "white": "#272727", "blue": "#6182B8", "red": "#E53935", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#00BCD4", + "ComboPopup": { + "border": "1,1,1,1,#00BCD4" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic.theme.json index 0dfe4095..44cd8546 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic.theme.json @@ -16,7 +16,7 @@ "second": "#32424A", "dis": "#415967", "accent": "#009688", - "accent2": "#0096882", + "acc2": "#ffcb6b", "accent50": "#00968850", "accent70": "#00968870", "cs": "#1E272C", @@ -26,7 +26,7 @@ "hl": "#425B67", "notif": "#1E272C", "hc": "#263238", - "shadow": "undefined", + "shadow": "#00000020", "white": "#eeffff", "blue": "#82aaff", "red": "#f07178", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#009688", + "ComboPopup": { + "border": "1,1,1,1,#009688" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight.theme.json index a000ee12..d8b56ace 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight.theme.json @@ -16,7 +16,7 @@ "second": "#34324a", "dis": "#515772", "accent": "#ab47bc", - "accent2": "#ab47bc2", + "acc2": "#ffcb6b", "accent50": "#ab47bc50", "accent70": "#ab47bc70", "cs": "#202331", @@ -26,7 +26,7 @@ "hl": "#444267", "notif": "#202331", "hc": "#292D3E", - "shadow": "undefined", + "shadow": "#00000020", "white": "#eeffff", "blue": "#82aaff", "red": "#f07178", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#ab47bc", + "ComboPopup": { + "border": "1,1,1,1,#ab47bc" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro.theme.json index de4f8a8c..f6e3c525 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro.theme.json @@ -16,7 +16,7 @@ "second": "#403E41", "dis": "#5b595c", "accent": "#ffd866", - "accent2": "#ffd8662", + "acc2": "#ff6188", "accent50": "#ffd86650", "accent70": "#ffd86670", "cs": "#221F22", @@ -26,7 +26,7 @@ "hl": "#5b595c", "notif": "#363437", "hc": "#2D2A2E", - "shadow": "undefined", + "shadow": "#00000020", "white": "#FCFCFA", "blue": "#A9DC76", "red": "#FF6188", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#ffd866", + "ComboPopup": { + "border": "1,1,1,1,#ffd866" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Moonlight.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Moonlight.theme.json index 7c3020e0..436084a9 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Moonlight.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Moonlight.theme.json @@ -16,7 +16,7 @@ "second": "#2f334d", "dis": "#828bb8", "accent": "#74a0f1", - "accent2": "#74a0f12", + "acc2": "#ffdb8e", "accent50": "#74a0f150", "accent70": "#74a0f170", "cs": "#191a2a", @@ -26,7 +26,7 @@ "hl": "#444a73", "notif": "#191a2a", "hc": "#222436", - "shadow": "undefined", + "shadow": "#00000020", "white": "#c8d3f5", "blue": "#70b0ff", "red": "#ff757f", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#74a0f1", + "ComboPopup": { + "border": "1,1,1,1,#74a0f1" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl.theme.json index bb64595f..6c1f369e 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl.theme.json @@ -16,7 +16,7 @@ "second": "#0b2942", "dis": "#697098", "accent": "#7e57c2", - "accent2": "#7e57c22", + "acc2": "#89ddff", "accent50": "#7e57c250", "accent70": "#7e57c270", "cs": "#010e1a", @@ -26,7 +26,7 @@ "hl": "#084d81", "notif": "#01111d", "hc": "#011627", - "shadow": "undefined", + "shadow": "#00000020", "white": "#addb67", "blue": "#82aaff", "red": "#7fdbca", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#7e57c2", + "ComboPopup": { + "border": "1,1,1,1,#7e57c2" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark.theme.json index 05bdde3c..44ff15fd 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark.theme.json @@ -16,7 +16,7 @@ "second": "#003745", "dis": "#2E5861", "accent": "#d33682", - "accent2": "#d336822", + "acc2": "#2aa198", "accent50": "#d3368250", "accent70": "#d3368270", "cs": "#00252E", @@ -26,7 +26,7 @@ "hl": "#005a6f", "notif": "#2E4C52", "hc": "#002B36", - "shadow": "undefined", + "shadow": "#00000020", "white": "#268BD2", "blue": "#B58900", "red": "#268BD2", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#d33682", + "ComboPopup": { + "border": "1,1,1,1,#d33682" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light.theme.json index 400cc37e..56a1e959 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light.theme.json @@ -16,7 +16,7 @@ "second": "#F6F0DE", "dis": "#C9CCC3", "accent": "#d33682", - "accent2": "#d336822", + "acc2": "#fede5d", "accent50": "#d3368250", "accent70": "#d3368270", "cs": "#eee8d5", @@ -26,7 +26,7 @@ "hl": "#d1cbb8", "notif": "#EDE8D4", "hc": "#fdf6e3", - "shadow": "undefined", + "shadow": "#ffffff20", "white": "#268BD2", "blue": "#B58900", "red": "#268BD2", @@ -71,19 +71,25 @@ "hoverBorderColor": "accent50", "hoverSeparatorColor": "button", "pressedBackground": "accent50", - "pressedBorderColor": "accent50" + "pressedBorderColor": "accent50", + "separatorColor": "border" }, "ActionsList": { "icon.gap": 12, - "mnemonic.icon.gap": 12 + "mnemonic.icon.gap": 12, + "mnemonicInsets": "0,8,0,8", + "mnemonicsBorderInsets": "0,8,0,8", + "mnemonic.insets": "0,8,0,8" }, "ActionToolbar": { "background": "hc" }, - "AppInspector.GraphNode": { - "background": "second", - "borderColor": "border", - "focusedBorderColor": "accent" + "AppInspector": { + "GraphNode": { + "background": "second", + "borderColor": "border", + "focusedBorderColor": "accent" + } }, "AssignedMnemonic": { "background": "hl", @@ -99,13 +105,26 @@ "borderColor": "button", "foreground": "fg" }, - "BigSpinner.background": "bg", + "Banner": { + "foreground": "fg" + }, + "BigSpinner": { + "background": "bg" + }, "Bookmark": { "iconBackground": "accent", "Mnemonic": { "iconBackground": "hl", "iconBorderColor": "hl", "iconForeground": "fg" + }, + "MnemonicAssigned": { + "background": "table", + "foreground": "fg" + }, + "MnemonicCurrent": { + "background": "selBg", + "foreground": "selFg" } }, "BookmarkMnemonicAssigned": { @@ -128,13 +147,18 @@ "borderColor": "hl", "foreground": "fg" }, - "BookmarkIcon.background": "accent", - "Borders.ContrastBorderColor": "bg", - "Borders.color": "border", - "Breakpoint.iconHoverAlpha": 0.35, + "BookmarkIcon": { + "background": "accent" + }, + "Borders": { + "ContrastBorderColor": "bg", + "color": "border" + }, + "Breakpoint": { + "iconHoverAlpha": 0.35 + }, "Button": { "arc": 8, - "background": "bg", "darcula": { "borderColor": "button", "defaultBorderColor": "button", @@ -175,6 +199,7 @@ "focusedBorderColor": "accent", "foreground": "text", "highlight": "selFg", + "minimumSize": 72, "mt.background": "button", "mt.color1": "button", "mt.color2": "button", @@ -185,6 +210,12 @@ "select": "button", "shadowColor": "shadow", "shadowWidth": 0, + "Split": { + "default": { + "iconColor": "fg", + "separatorColor": "accent" + } + }, "startBackground": "table", "startBorderColor": "button", "ToolWindow": { @@ -195,11 +226,18 @@ "Tooltip.background": "notif", "Tooltip.borderColor": "border" }, + "CellEditor": { + "border": { + "width": 2 + } + }, "CheckBox": { "background": "bg", "background.selected": "accent", "borderColor": "bg", "borderColor.selected": "accent", + "border.width": 3, + "borderInsets": "4,4,4,4", "checkSignColor": "bg", "checkSignColor.selected": "bg", "checkSignColorDisabled": "bg", @@ -297,7 +335,9 @@ "foreground": "fg", "swatchesDefaultRecentColor": "fg" }, - "ComboBoxButton.background": "button", + "ComboBoxButton": { + "background": "button" + }, "ComboBox": { "ArrowButton": { "background": "button", @@ -327,14 +367,16 @@ "selectionBackground": "table", "selectionForeground": "activeFg" }, - "ComboPopup.border": "1,1,1,1,#d33682", + "ComboPopup": { + "border": "1,1,1,1,#d33682" + }, "CompletionPopup": { "Advertiser": { - "background": "bg", - "foreground": "fg", + "background": "second", + "foreground": "text", "borderInsets": "8,12,8,12" }, - "background": "second", + "background": "button", "foreground": "fg", "grayForeground": "text", "grayedForeground": "text", @@ -351,13 +393,20 @@ "selectionInactiveBackground": "hl", "selectionInactiveForeground": "text", "selectionInactiveInfoForeground": "text", - "selectionInfoForeground": "selFg" + "selectionInfoForeground": "selFg", + "selectionInnerInsets": "4,4,4,4" }, "ComplexPopup": { - "Header.background": "notif" + "Header": { + "background": "bg", + "insets": "12,12,12,12" + }, + "TextField": { + "inputInsets": "8,4,8,4" + } }, "Component": { - "arc": 4, + "arc": 6, "focusWidth": 2, "borderColor": "hl", "disabledBorderColor": "dis", @@ -440,7 +489,7 @@ "southPanelDivider": "bg" }, "DragAndDrop": { - "areaBackground": "tree", + "areaBackground": "selBg70", "areaBorderColor": "bg", "areaForeground": "fg", "backgroundBorderColor": "bg", @@ -453,18 +502,37 @@ "Editor": { "background": "hc", "foreground": "fg", + "Notification": { + "borderInsets": "10,12,10,12", + "WithoutStatus.borderInsets": "10,12,10,12" + }, + "ReplaceToolbar": { + "borderInsets": "4,12,4,12" + }, "shortcutForeground": "text", "SearchField": { "background": "cs", "borderInsets": "8,12,8,12" }, + "SearchReplaceModePanel": { + "borderInsets": "4,12,4,12" + }, + "SearchToolbar": { + "borderInsets": "4,12,4,12" + }, "Toolbar": { "borderColor": "border" + }, + "ToolTip": { + "border": "border", + "foreground": "fg", + "iconHoverBackground": "table", + "selectionBackground": "selBg" } }, "EditorGroupsTabs": { "background": "bg", - "borderColor": "second", + "borderColor": "border", "hoverBackground": "hl", "hoverColor": "hl", "inactiveUnderlineColor": "accent", @@ -474,6 +542,7 @@ }, "EditorPane": { "background": "hc", + "borderColor": "border", "caretForeground": "accent", "foreground": "fg", "inactiveBackground": "bg", @@ -483,21 +552,25 @@ "splitBorder": "border" }, "EditorTabs": { - "active.background": "table", - "active.foreground": "fg", - "active.underlineColor": "accent", + "active": { + "background": "table", + "foreground": "fg", + "underlineColor": "accent" + }, "background": "bg", - "borderColor": "second", "foreground": "fg", "hoverBackground": "hl", "hoverColor": "hl", "hoverMaskColor": "hl", "inactive.maskColor": "bg", - "inactiveColoredFileBackground": "bg", + "inactiveColoredFileBackground": "bg70", "inactiveMaskColor": "bg", "inactiveUnderlineColor": "dis", "selectedBackground": "table", "selectedForeground": "fg", + "tabContentInsetsActionsLeft": "0,6,0,6", + "tabContentInsetsActionsNone": "0,6,0,6", + "tabContentInsetsActionsRight": "0,6,0,6", "tabInsets": "-10,10,-10,10", "underlineColor": "accent", "underlineHeight": 3, @@ -515,6 +588,10 @@ "Gray": "excl", "excluded": "excl" }, + "FindPopup": { + "scopesPanelInsets": "4,16,4,16", + "bottomPanelInsets": "4,10,4,10" + }, "FlameGraph": { "JVMBackground": "#89DDF7", "JVMFocusBackground": "#82AAFF", @@ -555,15 +632,34 @@ "selectionForeground.unfocused": "selFg" }, "GotItTooltip": { + "animationBackground": "notif", "background": "notif", "borderColor": "notif", + "Button": { + "contrastBackground": "cs", + "endBackground": "button", + "foreground": "fg", + "startBackground": "button" + }, + "codeBackground": "cs", + "codeBorderColor": "bg", + "codeForeground": "fg", "endBackground": "button", "endBorderColor": "button", "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "imageBorderColor": "notif", "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "shortcutBackground": "notif", + "shortcutBorderColor": "border", "shortcutForeground": "text", "startBackground": "button", - "startBorderColor": "button" + "startBorderColor": "button", + "stepForeground": "text" }, "Group": { "disabledSeparatorColor": "border", @@ -587,7 +683,10 @@ "borderColor": "border", "defaultTextBorderInsets": "16,16,16,16", "foreground": "fg", + "fontSizeDelta": 0, + "horizontalGap": 10, "infoForeground": "text", + "maxWidth": 250, "shortcutForeground": "text", "shortcutTextColor": "text", "smallTextBorderInsets": "8,12,8,12", @@ -601,18 +700,29 @@ "MqTag": "text", "Tag": "text" }, - "Hyperlink.linkColor": "accent", - "IconBadge": { - "infoBackground": "accent" + "Hyperlink": { + "linkColor": "accent" + }, + "IconBadge": { + "infoBackground": "accent", + "newUiBackground": "accent" + }, + "IdeStatusBar": { + "border": "4,4,4,4" + }, + "InformationHint": { + "borderColor": "border" }, - "IdeStatusBar.border": "4,4,4,4", - "InformationHint.borderColor": "border", "inactiveCaption": "second", "inactiveCaptionBorder": "bg", "inactiveCaptionText": "text", "info": "text", "infoPanelForeground": "text", "infoText": "text", + "InlineBanner": { + "hoverBackground": "accent70", + "pressedBackground": "accent70" + }, "InplaceRefactoringPopup": { "background": "bg", "borderColor": "bg" @@ -622,10 +732,13 @@ "foreground": "fg" }, "InternalFrame": { + "activeTitleBackground": "bg", "activeTitleForeground": "fg", "background": "bg", "inactiveTitleBackground": "bg", - "inactiveTitleForeground": "text" + "inactiveTitleForeground": "text", + "optionDialogBackground": "bg", + "paletteBackground": "bg" }, "Label": { "background": "bg", @@ -676,20 +789,22 @@ "hoverBackground": "hl", "leftRightInset": 8, "separatorColor": "border", - "separatorInset": 4 + "separatorInset": 8 }, "foreground": "fg", "hoverBackground": "hl", "hoverInactiveBackground": "table", - "Line.hoverBackground": "selBg", + "Line": { + "hoverBackground": "selBg" + }, "rowHeight": "28", "selectionBackground": "tree", "selectionForeground": "selFg", "selectionInactiveBackground": "table", "selectionInactiveForeground": "activeFg", "Tag": { - "background": "button", - "foreground": "fg" + "foreground": "fg", + "background": "button" } }, "LiveIndicator": { @@ -703,31 +818,60 @@ "background": "hc", "foreground": "fg", "selectionForeground": "activeFg", - "selectionBackground": "selBg" + "selectionBackground": "selBg", + "transparentSelectionBackground": "tree" }, "MainToolbar": { "background": "bg", "Button": { - "buttonInsets": "0,0,0,0" + "buttonInsets": "0,4,0,4", + "iconSize": 20, + "size": "28,28" }, "Dropdown": { "borderInsets": "6,12,6,12", "background": "bg", "foreground": "fg", "hoverBackground": "hl", - "pressedBackground": "table" + "pressedBackground": "table", + "transparentHoverBackground": "accent70" }, + "foreground": "fg", "hoverBackground": "hl", "Icon": { - "borderInsets": "10,10,10,10", + "borderInsets": "4,4,4,4", "background": "bg", "hoverBackground": "hl", + "insets": "5,4,5,4", "pressedBackground": "table" }, "inactiveBackground": "bg", "pressedBackground": "table", - "separatorColor": "border" + "separatorColor": "border", + "SplitDropdown": { + "borderInsets": "6,6,6,6" + } }, + "MainWindow": { + "FullScreeControl": { + "Background": "hl" + }, + "Tab": { + "background": "bg", + "borderColor": "bg", + "foreground": "fg", + "hoverBackground": "hl", + "hoverForeground": "fg", + "selectedBackground": "selBg", + "selectedForeground": "selFg", + "selectedInactiveBackground": "excl", + "separatorColor": "border" + } + }, + "ManagedIdeBadgeBorder": "border", + "ManagedIdeBadgeBackground": "bg", + "ManagedIdeBadgeBackgroundHover": "accent70", + "ManagedIdeMenuItemHover": "selBg", "material": { "background": "bg", "branchColor": "fg", @@ -785,8 +929,12 @@ "disabledBackground": "bg", "disabledForeground": "dis", "foreground": "fg", + "insets": "0,4,0,4", "selectionBackground": "selBg", - "selectionForeground": "activeFg" + "selectionForeground": "activeFg", + "Selection": { + "arc": 8 + } }, "MlModelBinding.Viewer.CodeEditor.background": "bg", "MnemonicIcon": { @@ -797,6 +945,9 @@ "NavBar": { "arrowColor": "fg", "borderColor": "bg", + "Breadcrumbs": { + "itemInsets": "4,2,4,2" + }, "selectedColor": "accent" }, "NewClass": { @@ -806,15 +957,21 @@ "SearchField": { "background": "cs" }, - "separatorWidth": 6 + "separatorWidth": 10 }, "NewPSD.warning": "accent", + "NewUiOnboarding": { + "Dialog": { + "background": "second" + } + }, "Notification": { "arc": 16, "Error.foreground": "accent", "Link.foreground": "accent", "background": "notif", - "borderColor": "notif", + "borderColor": "border", + "borderInsets": "4,4,4,4", "errorBackground": "notif", "errorBorderColor": "notif", "errorForeground": "accent", @@ -855,18 +1012,27 @@ "ToolWindowWarning": { "foreground": "fg", "background": "notifWarn" + }, + "WelcomeScreen": { + "separatorColor": "border" } }, "Notifications": { "background": "notif", - "borderColor": "notif" + "borderColor": "border" }, "NotificationsToolwindow": { - "Notification.hoverBackground": "tree", - "newNotification.background": "notif", - "newNotification.hoverBackground": "tree" + "Notification": { + "hoverBackground": "tree" + }, + "newNotification": { + "background": "notif", + "hoverBackground": "tree" + } + }, + "OnePixelDivider": { + "background": "border" }, - "OnePixelDivider.background": "border", "OptionPane": { "background": "bg", "foreground": "fg", @@ -882,7 +1048,6 @@ "focusedColor": "accent" }, "Panel": { - "background": "bg", "foreground": "fg", "mouseShortcutBackground": "bg" }, @@ -911,16 +1076,6 @@ "Plugins": { "background": "bg", "borderColor": "border", - "disabledForeground": "dis", - "eapTagBackground": "hl", - "hoverBackground": "hl", - "lightSelectionBackground": "table", - "paidTagBackground": "hl", - "selectionBackground": "selBg", - "selectionForeground": "selFg", - "tagBackground": "hl", - "tagForeground": "accent", - "trialTagBackground": "hl", "Button": { "installBackground": "button", "installBorderColor": "button", @@ -928,10 +1083,15 @@ "installFillForeground": "dis", "installFocusedBackground": "hl", "installForeground": "fg", - "updateBackground": "accent", + "updateBackground": "button", "updateBorderColor": "button", "updateForeground": "fg" }, + "disabledForeground": "dis", + "eapTagBackground": "hl", + "hoverBackground": "hl", + "lightSelectionBackground": "table", + "paidTagBackground": "hl", "ScreenshotPagination": { "CurrentImage.fillColor": "accent" }, @@ -943,10 +1103,20 @@ "background": "second", "foreground": "fg" }, + "selectionBackground": "selBg", + "selectionForeground": "selFg", + "suggestedLabelBackground": "button", + "tagBackground": "hl", + "tagForeground": "accent", + "trialTagBackground": "hl", "Tab": { - "active.background": "table", - "active.foreground": "activeFg", - "hover.background": "table", + "active": { + "background": "table", + "foreground": "activeFg" + }, + "hover": { + "background": "table" + }, "hoverBackground": "table", "selectedBackground": "table", "selectedForeground": "selFg" @@ -954,6 +1124,7 @@ }, "Popup": { "Advertiser": { + "borderColor": "border", "borderInsets": "6,20,6,20", "background": "bg", "borderColor": "bg", @@ -968,24 +1139,33 @@ "color": "cs", "inactiveColor": "bg" }, - "background": "notif", + "background": "bg", "borderColor": "cs", "borderWidth": 0, "inactiveBorderColor": "bg", "innerBorderColor": "second", "Header": { "activeBackground": "bg", + "activeForeground": "fg", "inactiveBackground": "cs", - "inactiveForeground": "text" + "inactiveForeground": "dis", + "insets": "12,10,12,10" }, + "mnemonicForeground": "text", "paintBorder": false, "preferences": { "background": "bg", "borderColor": "bg", "foreground": "fg" }, - "Selection.arc": 8, - "Selection.leftRightInset": 8, + "SearchField": { + "borderInsets": "4,4,4,4", + "inputInsets": "4,4,4,4" + }, + "Selection": { + "arc": 8, + "leftRightInset": 8 + }, "Separator": { "foreground": "fg", "color": "border" @@ -1003,8 +1183,14 @@ "background": "bg", "borderWidth": 1, "border": "8,8,8,8", + "borderInsets": "10,10,10,10", "borderCornerRadius": 8, + "borderCornerRadiusX": 8, + "borderCornerRadiusY": 8, + "borderWidth": 1, "foreground": "fg", + "leftBorderWidth": 8, + "rightBorderWidth": 8, "Selection": { "arc": 8, "innerInsets": "8,2,8,2" @@ -1013,12 +1199,35 @@ "translucentBackground": "bg" }, "PopupMenuSeparator": { + "borderCornerRadius": 8, "height": 10, "stripeWidth": 2, "stripeIndent": 5, "withToEdge": 4, "borderCornerRadius": 8 }, + "PresentationAssistant": { + "Bright": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + }, + "Pale": { + "keymapLabel": "text", + "Popup": { + "border": "border", + "foreground": "fg" + }, + "PopupBackground": "notif" + } + }, + "Profiler": { + "neutralLifecycleEvent": "second", + "trackBackground": "button" + }, "ProgressBar": { "background": "bg", "foreground": "accent", @@ -1062,29 +1271,106 @@ "selectionBackground": "selBg", "selectionForeground": "selFg" }, + "Review": { + "Avatar": { + "Border": { + "Status": { + "Accepted": "accent", + "NeedReview": "hl" + } + } + }, + "Branch": { + "Background": "button", + "Background.Hover": "hl" + }, + "ChatItem": { + "BubblePanel": { + "Border": "button" + }, + "Hover": "table" + }, + "Editor": { + "Line": { + "Status": { + "Marker": "accent" + } + } + }, + "MetaInfo": { + "StatusLine": { + "Gray": "excl", + "Blue": "accent" + } + }, + "State": { + "Background": "second", + "Foreground": "fg" + }, + "Timeline": { + "Thread": { + "Diff": { + "AnchorLine": "table" + } + } + } + }, "ReviewList": { "state.background": "second", "state.foreground": "fg" }, + "RunToolbar": { + "Debug": { + "activeBackground": "hl" + }, + "Profile": { + "activeBackground": "hl" + }, + "Run": { + "activeBackground": "hl" + } + }, "RunWidget": { "background": "button", - "Debug.activeBackground": "hl", - "foreground": "fg", - "hoverBackground": "table", - "pressedBackground": "hl", - "Profile.activeBackground": "hl", + "Debug": { + "activeBackground": "hl" + }, + "foreground": "selFg", + "hoverBackground": "hl", + "iconColor": "fg", + "leftPressedBackground": "table", + "leftHoverBackground": "hl", + "pressedBackground": "table", + "Profile": { + "activeBackground": "hl" + }, "runningBackground": "hl", - "runningForeground": "selFg", - "Run.activeBackground": "hl", + "Run": { + "activeBackground": "hl" + }, "Running": { "background": "hl", - "foreground": "selFg", "leftHoverBackground": "hl", - "leftPressedBackground": "hl" + "leftPressedBackground": "table" }, - "separatorColor": "border" + "runningBackground": "hl", + "runningForeground": "selFg", + "runIconColor": "accent", + "separatorColor": "border", + "stopBackground": "second", + "StopButton": { + "leftHoverBackground": "hl", + "leftPressedBackground": "second" + }, + "toolbarHeight": 30, + "toolbarBorderHeight": 4 + }, + "ScreenView": { + "borderColor": "border", + "defaultBorderColor": "border", + "hoveredBorderColor": "hl", + "selectedBorderColor": "selBg" }, - "ScreenView.borderColor": "border", "scrollbar": "bg", "ScrollBar": { "background": "bg", @@ -1186,9 +1472,9 @@ }, "SegmentedButton": { "focusedSelectedButtonColor": "hl", + "selectedEndBorderColor": "accent", "selectedButtonColor": "button", - "selectedStartBorderColor": "border", - "selectedEndBorderColor": "border" + "selectedStartBorderColor": "accent" }, "Separator": { "background": "second", @@ -1198,6 +1484,7 @@ "Settings": { "Spotlight.borderColor": "accent" }, + "shortcutForeground": "text", "SidePanel": { "background": "hc" }, @@ -1222,6 +1509,7 @@ "foreground": "fg" }, "Spinner": { + "arrowButtonInsets": "1,1,1,1", "background": "bg", "border": "4,4,4,4", "disabledBackground": "excl", @@ -1232,11 +1520,16 @@ "background": "bg", "highlight": "hc" }, - "SplitPaneDivider.draggingColor": "second", - "StateWidget.activeBackground": "button", + "SplitPaneDivider": { + "draggingColor": "second" + }, + "StateWidget": { + "activeBackground": "button" + }, "StatusBar": { - "background": "bg", + "background": "bg10", "Breadcrumbs": { + "chevronInset": 0, "floatingBackground": "tree", "floatingForeground": "fg", "floatingToolbarInsets": "8,12,8,12", @@ -1244,6 +1537,7 @@ "hoverBackground": "tree", "hoverForeground": "fg", "itemBackgroundInsets": "2,4,2,4", + "itemInsets": 0, "selectionBackground": "selBg", "selectionForeground": "activeFg", "selectionInactiveBackground": "button", @@ -1264,6 +1558,13 @@ "widgetInsets": "8,12,8,12" } }, + "StripeToolbar": { + "Button": { + "iconSize": 20, + "iconPadding": 8, + "size": "40,40" + } + }, "TabbedPane": { "background": "bg", "borderColor": "hc", @@ -1290,6 +1591,7 @@ "selectedTabPadInsets": "0,0,0,0", "shadow": "hc", "tabHeight": 32, + "tabAreaInsets": 0, "tabInsets": "5,10,5,10", "tabSelectionArc": 4, "tabSelectionHeight": 2, @@ -1385,7 +1687,7 @@ "TitlePane": { "Button": { "hoverBackground": "hl", - "preferredSize": "48,40" + "preferredSize": "42,42" }, "background": "hc", "inactiveBackground": "bg", @@ -1407,15 +1709,23 @@ "onBackground": "accent", "onForeground": "accent" }, - "Toolbar.Floating.background": "button", + "Toolbar": { + "horizontalToolbarInsets": "8,8,8,8", + "Floating": { + "background": "button", + "borderColor": "border" + }, + "verticalToolbarInsets": "8,8,8,8" + }, "ToolBar": { "background": "hc", "borderHandleColor": "text", "comboBoxButtonBackground": "button", "floatingForeground": "text", "foreground": "fg", - "verticalToolbarInsets": "6,6,6,6", - "horizontalToolbarInsets": "6,6,6,6" + "horizontalToolbarInsets": "6,6,6,6", + "separatorColor": "border", + "verticalToolbarInsets": "6,6,6,6" }, "ToolbarComboWidget": { "background": "button", @@ -1426,6 +1736,21 @@ "actions.settings.icon.background.color": "bg", "description.title.text.color": "fg" }, + "Tooltip": { + "Learning": { + "codeBorderColor": "cs", + "foreground": "fg", + "Header": { + "foreground": "fg" + }, + "linkForeground": "accent", + "linkUnderlineHoveredColor": "accent", + "secondaryActionForeground": "text", + "spanBackground": "accent70", + "spanForeground": "fg" + }, + "separatorColor": "border" + }, "ToolTip": { "arc": 6, "actions": { @@ -1445,6 +1770,7 @@ "Learning": { "background": "accent", "borderColor": "accent", + "codeForeground": "fg", "foreground": "fg", "spanBackground": "accent50", "spanForeground": "fg", @@ -1463,25 +1789,44 @@ "Button": { "hoverBackground": "table", "DragAndDrop": { - "stripeBackground": "cs", - "buttonDropBackground": "accent70" + "stripeBackground": "bg", + "buttonDropBackground": "selBg70", + "buttonDropBorderColor": "accent", + "buttonFloatingBackground": "button" }, "selectedBackground": "cs", "selectedForeground": "activeFg" }, + "DragAndDrop": { + "areaBackground": "accent50" + }, "header": { - "active.background": "second", + "active": { + "background": "second" + }, "background": "bg", - "border.background": "second", - "closeButton.background": "bg", - "tab.selected.active.background": "cs", - "tab.selected.background": "cs" + "border": { + "background": "border" + }, + "closeButton": { + "background": "bg" + }, + "tab": { + "selected": { + "active": { + "background": "cs" + }, + "background": "cs" + } + } }, "Header": { "height": 42, "background": "second", - "borderColor": "second", - "inactiveBackground": "bg" + "borderColor": "border", + "inactiveBackground": "bg", + "labelLeftRightInsets": "0,12,0,16", + "toolbarLeftRightInsets": "0,12,0,8" }, "HeaderCloseButton": { "background": "bg" @@ -1506,6 +1851,12 @@ "inactive": { "Header.background": "bg", "HeaderTab.background": "cs" + }, + "Stripe": { + "DragAndDrop": { + "separatorColor": "accent50" + }, + "separatorColor": "table" } }, "Tree": { @@ -1522,13 +1873,17 @@ "selectionForeground": "selFg", "selectionInactiveBackground": "tree", "selectionInactiveForeground": "selFg", - "textBackground": "hc" + "textBackground": "hc", + "leftChildIndent": 10, + "rightChildIndent": 5 }, - "Tree.leftChildIndent": 10, - "Tree.rightChildIndent": 5, "UIDesigner": { - "Activity.borderColor": "border", - "Canvas.background": "cs", + "Activity": { + "borderColor": "border" + }, + "Canvas": { + "background": "cs" + }, "ColorPicker": { "background": "second", "foreground": "fg" @@ -1543,49 +1898,119 @@ "borderColor": "border", "hoverBorderColor": "hl" }, - "Label.foreground": "text", - "highStroke.foreground": "fg", + "Label": { + "foreground": "text" + }, + "highStroke": { + "foreground": "fg" + }, "motion": { "AddConstraintColor": "accent", "AddConstraintPlus": "accent", - "CSPanel.SelectedBackground": "tree", - "CSPanel.SelectedFocusBackground": "selBg", - "Component.foreground": "fg", - "ConstraintSet.background": "second", - "ConstraintSetText.foreground": "text", - "CursorTextColor.foreground": "fg", - "HoverColor.disabledBackground": "dis", - "Key.selectedForeground": "accent", - "Notification.background": "notif", + "Axis": { + "lineSeparatorColor": "fg" + }, + "CSPanel": { + "SelectedBackground": "tree", + "SelectedFocusBackground": "selBg" + }, + "Component": { + "foreground": "fg" + }, + "ConstraintSet": { + "background": "second" + }, + "ConstraintSetText": { + "foreground": "text" + }, + "CursorTextColor": { + "foreground": "fg" + }, + "HoverColor": { + "disabledBackground": "dis" + }, + "Key": { + "selectedForeground": "accent" + }, + "Notification": { + "background": "notif" + }, "PositionMarkColor": "accent", - "PrimaryPanel.background": "cs", - "SecondaryPanel.background": "bg", - "SecondaryPanel.header.background": "cs", - "SecondaryPanel.header.foreground": "text", - "TimeCursor.End.selectedForeground": "accent", - "TimeCursor.Start.selectedForeground": "accent", - "TimeCursor.selectedForeground": "accent", + "PrimaryPanel": { + "background": "cs" + }, + "SecondaryPanel": { + "background": "bg", + "header": { + "background": "cs", + "foreground": "text" + } + }, + "TimeCursor": { + "End": { + "selectedForeground": "accent" + }, + "selectedForeground": "accent", + "Start": { + "selectedForeground": "accent" + } + }, "borderColor": "border", - "cs_FocusText.infoForeground": "text", - "graphLine.lineSeparatorColor": "accent", - "motionGraph.background": "bg", - "ourAvg.background": "second", - "ourCS.background": "second", - "ourCS_Border.borderColor": "border", - "ourCS_SelectedBackground.selectionInactiveBackground": "table", - "ourCS_SelectedBorder.pressedBorderColor": "hl", - "ourCS_SelectedFocusBackground.selectionForeground": "selFg", - "ourCS_SelectedFocusBorder.focusedBorderColor": "accent", - "ourCS_TextColor.foreground": "text", - "ourML_BarColor.separatorColor": "border", - "timeLine.disabledBorderColor": "border" + "cs_FocusText": { + "infoForeground": "text" + }, + "graphLine": { + "lineSeparatorColor": "accent" + }, + "Grid": { + "lineSeparatorColor": "border" + }, + "label": { + "background": "second", + "textColor": "text" + }, + "motionGraph": { + "background": "bg" + }, + "ourAvg": { + "background": "second" + }, + "ourCS": { + "background": "second" + }, + "ourCS_Border": { + "borderColor": "border" + }, + "ourCS_SelectedBackground": { + "selectionInactiveBackground": "table" + }, + "ourCS_SelectedBorder": { + "pressedBorderColor": "hl" + }, + "ourCS_SelectedFocusBackground": { + "selectionForeground": "selFg" + }, + "ourCS_SelectedFocusBorder": { + "focusedBorderColor": "accent" + }, + "ourCS_TextColor": { + "foreground": "text" + }, + "ourML_BarColor": { + "separatorColor": "border" + }, + "timeLine": { + "disabledBorderColor": "border" + } }, "PackageDetails": { "border": "accent", "infoBanner": "accent" }, "PackageSearch": { - "PackagesList.rowHeight": 28, + "PackagesList": { + "rowHeight": 28 + }, "PackageTag": { "background": "excl", "foreground": "fg", @@ -1617,7 +2042,9 @@ "lines3d": "accent", "secondaryGraphLines": "border" }, - "percent.foreground": "fg", + "percent": { + "foreground": "fg" + }, "Placeholder": { "background": "bg", "borderColor": "border", @@ -1634,9 +2061,11 @@ "warningBorderColor": "notif" }, "VersionControl": { - "FileHistory.Commit": { - "otherBranchBackground": "excl", - "selectedBranchBackground": "bg" + "FileHistory": { + "Commit": { + "otherBranchBackground": "excl", + "selectedBranchBackground": "bg" + } }, "GitCommits": { "graphColor": "hl" @@ -1660,8 +2089,13 @@ "Commit": { "currentBranchBackground": "cs", "hoveredBackground": "tree", + "selectionInactiveForeground": "fg", + "Reference": { + "foreground": "text" + }, "rowHeight": 28, - "unmatchedForeground": "text" + "unmatchedForeground": "text", + "verticalPadding": 8 } }, "MarkerPopup": { @@ -1688,30 +2122,39 @@ "foreground": "fg" }, "WelcomeScreen": { - "AssociatedComponent.background": "bg", - "Details.background": "bg", - "List": { - "background": "hc", - "selectionBackground": "selBg", - "selectionInactiveBackground": "hl" + "AssociatedComponent": { + "background": "bg" }, - "SidePanel.background": "second", "background": "bg", "borderColor": "bg", "captionBackground": "cs", "captionForeground": "fg", + "Details": { + "background": "bg" + }, "footerBackground": "cs", "footerForeground": "fg", "groupIconBorderColor": "button", "headerBackground": "bg", "headerForeground": "fg", - "separatorColor": "border", + "List": { + "background": "hc", + "selectionBackground": "selBg", + "selectionInactiveBackground": "hl" + }, "Projects": { - "actions.background": "cs", - "actions.selectionBackground": "hl", + "actions": { + "background": "cs", + "selectionBackground": "hl", + "selectionBorderColor": "accent" + }, "background": "second", "selectionBackground": "selBg", "selectionInactiveBackground": "selBg" + }, + "separatorColor": "border", + "SidePanel": { + "background": "second" } }, "Window.border": "border", From ebacad2d04fa4e8a0478b8644750e4502ba2e3e2 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sun, 16 Feb 2025 16:58:21 +0100 Subject: [PATCH 11/36] UIDefaultsLoader: support `derived` option for `mix()`, `tint()` and `shade()` color functions; added unit tests for color functions --- .../com/formdev/flatlaf/UIDefaultsLoader.java | 30 ++- .../formdev/flatlaf/util/ColorFunctions.java | 49 +++- .../formdev/flatlaf/TestUIDefaultsLoader.java | 220 ++++++++++++++++++ 3 files changed, 290 insertions(+), 9 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java index 59576d14..367858c9 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java @@ -1109,13 +1109,14 @@ class UIDefaultsLoader } /** - * Syntax: mix(color1,color2[,weight]) or - * tint(color[,weight]) or - * shade(color[,weight]) + * Syntax: mix(color1,color2[,weight][,options]) or + * tint(color[,weight][,options]) or + * shade(color[,weight][,options]) * - color1: a color (e.g. #f00) or a color function * - color2: a color (e.g. #f00) or a color function * - weight: the weight (in range 0-100%) to mix the two colors * larger weight uses more of first color, smaller weight more of second color + * - options: [derived] */ private static Object parseColorMix( String color1Str, List params, Function resolver ) throws IllegalArgumentException @@ -1124,18 +1125,31 @@ class UIDefaultsLoader if( color1Str == null ) color1Str = params.get( i++ ); String color2Str = params.get( i++ ); - int weight = (params.size() > i) ? parsePercentage( params.get( i ) ) : 50; + int weight = 50; + boolean derived = false; + + if( params.size() > i ) { + String weightStr = params.get( i ); + if( !weightStr.isEmpty() && Character.isDigit( weightStr.charAt( 0 ) ) ) { + weight = parsePercentage( weightStr ); + i++; + } + } + if( params.size() > i ) { + String options = params.get( i ); + derived = options.contains( "derived" ); + } // parse second color - ColorUIResource color2 = (ColorUIResource) parseColorOrFunction( resolver.apply( color2Str ), resolver ); - if( color2 == null ) + ColorUIResource color1 = (ColorUIResource) parseColorOrFunction( resolver.apply( color1Str ), resolver ); + if( color1 == null ) return null; // create function - ColorFunction function = new ColorFunctions.Mix( color2, weight ); + ColorFunction function = new ColorFunctions.Mix2( color1, weight ); // parse first color, apply function and create mixed color - return parseFunctionBaseColor( color1Str, function, false, resolver ); + return parseFunctionBaseColor( color2Str, function, derived, resolver ); } /** diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java index fc5f58d2..c480cce6 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java @@ -224,6 +224,9 @@ public class ColorFunctions if( functions.length == 1 && functions[0] instanceof Mix ) { Mix mixFunction = (Mix) functions[0]; return mix( color, mixFunction.color2, mixFunction.weight / 100 ); + } else if( functions.length == 1 && functions[0] instanceof Mix2 ) { + Mix2 mixFunction = (Mix2) functions[0]; + return mix( mixFunction.color1, color, mixFunction.weight / 100 ); } // convert RGB to HSL @@ -386,7 +389,11 @@ public class ColorFunctions //---- class Mix ---------------------------------------------------------- /** - * Mix two colors. + * Mix two colors using {@link ColorFunctions#mix(Color, Color, float)}. + * First color is passed to {@link #apply(float[])}. + * Second color is {@link #color2}. + *

+ * Use {@link Mix2} to tint or shade color. * * @since 1.6 */ @@ -420,4 +427,44 @@ public class ColorFunctions return String.format( "mix(#%08x,%.0f%%)", color2.getRGB(), weight ); } } + + //---- class Mix2 --------------------------------------------------------- + + /** + * Mix two colors using {@link ColorFunctions#mix(Color, Color, float)}. + * First color is {@link #color1}. + * Second color is passed to {@link #apply(float[])}. + * + * @since 3.6 + */ + public static class Mix2 + implements ColorFunction + { + public final Color color1; + public final float weight; + + public Mix2( Color color1, float weight ) { + this.color1 = color1; + this.weight = weight; + } + + @Override + public void apply( float[] hsla ) { + // convert from HSL to RGB because color mixing is done on RGB values + Color color2 = HSLColor.toRGB( hsla[0], hsla[1], hsla[2], hsla[3] / 100 ); + + // mix + Color color = mix( color1, color2, weight / 100 ); + + // convert RGB to HSL + float[] hsl = HSLColor.fromRGB( color ); + System.arraycopy( hsl, 0, hsla, 0, hsl.length ); + hsla[3] = (color.getAlpha() / 255f) * 100; + } + + @Override + public String toString() { + return String.format( "mix2(#%08x,%.0f%%)", color1.getRGB(), weight ); + } + } } diff --git a/flatlaf-core/src/test/java/com/formdev/flatlaf/TestUIDefaultsLoader.java b/flatlaf-core/src/test/java/com/formdev/flatlaf/TestUIDefaultsLoader.java index 798daa9a..73f75419 100644 --- a/flatlaf-core/src/test/java/com/formdev/flatlaf/TestUIDefaultsLoader.java +++ b/flatlaf-core/src/test/java/com/formdev/flatlaf/TestUIDefaultsLoader.java @@ -17,6 +17,8 @@ package com.formdev.flatlaf; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; @@ -29,6 +31,13 @@ import javax.swing.UIDefaults.LazyValue; import org.junit.jupiter.api.Test; import com.formdev.flatlaf.ui.FlatEmptyBorder; import com.formdev.flatlaf.ui.FlatLineBorder; +import com.formdev.flatlaf.util.DerivedColor; +import com.formdev.flatlaf.util.ColorFunctions.ColorFunction; +import com.formdev.flatlaf.util.ColorFunctions.Fade; +import com.formdev.flatlaf.util.ColorFunctions.HSLChange; +import com.formdev.flatlaf.util.ColorFunctions.HSLIncreaseDecrease; +import com.formdev.flatlaf.util.ColorFunctions.Mix; +import com.formdev.flatlaf.util.ColorFunctions.Mix2; /** * @author Karl Tauber @@ -180,6 +189,217 @@ public class TestUIDefaultsLoader assertEquals( expected, ((LazyValue)UIDefaultsLoader.parseValue( "dummyIcon", value, null )).createValue( null ) ); } + @Test + void parseColorFunctions() { + // lighten + assertEquals( new Color( 0xff6666 ), parseColor( "lighten(#f00, 20%)" ) ); + assertEquals( new Color( 0xff3333 ), parseColor( "lighten(#f00, 20%, relative)" ) ); + assertEquals( new Color( 0xaaaaaa ), parseColor( "lighten(#ddd, 20%, autoInverse)" ) ); + assertEquals( new Color( 0xb1b1b1 ), parseColor( "lighten(#ddd, 20%, relative autoInverse)" ) ); + + // darken + assertEquals( new Color( 0x990000 ), parseColor( "darken(#f00, 20%)" ) ); + assertEquals( new Color( 0xcc0000 ), parseColor( "darken(#f00, 20%, relative)" ) ); + assertEquals( new Color( 0x555555 ), parseColor( "darken(#222, 20%, autoInverse)" ) ); + assertEquals( new Color( 0x292929 ), parseColor( "darken(#222, 20%, relative autoInverse)" ) ); + + // saturate + assertEquals( new Color( 0xf32e2e ), parseColor( "saturate(#d44, 20%)" ) ); + assertEquals( new Color( 0xec3535 ), parseColor( "saturate(#d44, 20%, relative)" ) ); + assertEquals( new Color( 0xc75a5a ), parseColor( "saturate(#d44, 20%, autoInverse)" ) ); + assertEquals( new Color( 0xce5353 ), parseColor( "saturate(#d44, 20%, relative autoInverse)" ) ); + + // desaturate + assertEquals( new Color( 0x745858 ), parseColor( "desaturate(#844, 20%)" ) ); + assertEquals( new Color( 0x814b4b ), parseColor( "desaturate(#844, 20%, relative)" ) ); + assertEquals( new Color( 0x9c3030 ), parseColor( "desaturate(#844, 20%, autoInverse)" ) ); + assertEquals( new Color( 0x8f3d3d ), parseColor( "desaturate(#844, 20%, relative autoInverse)" ) ); + + // fadein + assertEquals( new Color( 0xddff0000, true ), parseColor( "fadein(#f00a, 20%)" ) ); + assertEquals( new Color( 0xccff0000, true ), parseColor( "fadein(#f00a, 20%, relative)" ) ); + assertEquals( new Color( 0x77ff0000, true ), parseColor( "fadein(#f00a, 20%, autoInverse)" ) ); + assertEquals( new Color( 0x88ff0000, true ), parseColor( "fadein(#f00a, 20%, relative autoInverse)" ) ); + + // fadeout + assertEquals( new Color( 0x11ff0000, true ), parseColor( "fadeout(#f004, 20%)" ) ); + assertEquals( new Color( 0x36ff0000, true ), parseColor( "fadeout(#f004, 20%, relative)" ) ); + assertEquals( new Color( 0x77ff0000, true ), parseColor( "fadeout(#f004, 20%, autoInverse)" ) ); + assertEquals( new Color( 0x52ff0000, true ), parseColor( "fadeout(#f004, 20%, relative autoInverse)" ) ); + + // fade + assertEquals( new Color( 0x33ff0000, true ), parseColor( "fade(#f00, 20%)" ) ); + assertEquals( new Color( 0xccff0000, true ), parseColor( "fade(#ff000010, 80%)" ) ); + + // spin + assertEquals( new Color( 0xffaa00 ), parseColor( "spin(#f00, 40)" ) ); + assertEquals( new Color( 0xff00aa ), parseColor( "spin(#f00, -40)" ) ); + + // changeHue / changeSaturation / changeLightness / changeAlpha + assertEquals( new Color( 0xffaa00 ), parseColor( "changeHue(#f00, 40)" ) ); + assertEquals( new Color( 0xb34d4d ), parseColor( "changeSaturation(#f00, 40%)" ) ); + assertEquals( new Color( 0xcc0000 ), parseColor( "changeLightness(#f00, 40%)" ) ); + assertEquals( new Color( 0x66ff0000, true ), parseColor( "changeAlpha(#f00, 40%)" ) ); + + // mix + assertEquals( new Color( 0x808000 ), parseColor( "mix(#f00, #0f0)" ) ); + assertEquals( new Color( 0xbf4000 ), parseColor( "mix(#f00, #0f0, 75%)" ) ); + + // tint + assertEquals( new Color( 0xff80ff ), parseColor( "tint(#f0f)" ) ); + assertEquals( new Color( 0xffbfff ), parseColor( "tint(#f0f, 75%)" ) ); + + // shade + assertEquals( new Color( 0x800080 ), parseColor( "shade(#f0f)" ) ); + assertEquals( new Color( 0x400040 ), parseColor( "shade(#f0f, 75%)" ) ); + + // contrast + assertEquals( new Color( 0x0000ff ), parseColor( "contrast(#bbb, #00f, #0f0)" ) ); + assertEquals( new Color( 0x00ff00 ), parseColor( "contrast(#444, #00f, #0f0)" ) ); + assertEquals( new Color( 0x00ff00 ), parseColor( "contrast(#bbb, #00f, #0f0, 60%)" ) ); + + // rgb / rgba + assertEquals( new Color( 0x5a8120 ), parseColor( "rgb(90, 129, 32)" ) ); + assertEquals( new Color( 0x5a8120 ), parseColor( "rgb(90, 129, 32)" ) ); + assertEquals( new Color( 0x197fb2 ), parseColor( "rgb(10%,50%,70%)" ) ); + assertEquals( new Color( 0x197f46 ), parseColor( "rgb(10%,50%,70)" ) ); + assertEquals( new Color( 0x405a8120, true ), parseColor( "rgba(90, 129, 32, 64)" ) ); + assertEquals( new Color( 0x335a8120, true ), parseColor( "rgba(90, 129, 32, 20%)" ) ); + + // hsl / hsla + assertEquals( new Color( 0x7fff00 ), parseColor( "hsl(90, 100%, 50%)" ) ); + assertEquals( new Color( 0x337fff00, true ), parseColor( "hsla(90, 100%, 50%, 20%)" ) ); + } + + @Test + void parseDerivedColorFunctions() { + // lighten, darken + + // mix + assertDerivedColorEquals( new Color( 0x808000 ), "mix(#f00, #0f0, derived)", new Mix2( Color.red, 50 ) ); + assertDerivedColorEquals( new Color( 0xbf4000 ), "mix(#f00, #0f0, 75%, derived)", new Mix2( Color.red, 75 ) ); + + // tint + assertDerivedColorEquals( new Color( 0xff80ff ), "tint(#f0f, derived)", new Mix2( Color.white, 50 ) ); + assertDerivedColorEquals( new Color( 0xffbfff ), "tint(#f0f, 75%, derived)", new Mix2( Color.white, 75 ) ); + + // shade + assertDerivedColorEquals( new Color( 0x800080 ), "shade(#f0f, derived)", new Mix2( Color.black, 50 ) ); + assertDerivedColorEquals( new Color( 0x400040 ), "shade(#f0f, 75%, derived)", new Mix2( Color.black, 75 ) ); + + + // lighten + assertDerivedColorEquals( new Color( 0xff6666 ), "lighten(#f00, 20%, derived)", new HSLIncreaseDecrease( 2, true, 20, false, true ) ); + assertDerivedColorEquals( new Color( 0xff3333 ), "lighten(#f00, 20%, derived relative)", new HSLIncreaseDecrease( 2, true, 20, true, true ) ); + assertDerivedColorEquals( new Color( 0xffffff ), "lighten(#ddd, 20%, derived noAutoInverse)", new HSLIncreaseDecrease( 2, true, 20, false, false ) ); + assertDerivedColorEquals( new Color( 0xffffff ), "lighten(#ddd, 20%, derived relative noAutoInverse)", new HSLIncreaseDecrease( 2, true, 20, true, false ) ); + + // darken + assertDerivedColorEquals( new Color( 0x990000 ), "darken(#f00, 20%, derived)", new HSLIncreaseDecrease( 2, false, 20, false, true ) ); + assertDerivedColorEquals( new Color( 0xcc0000 ), "darken(#f00, 20%, derived relative)", new HSLIncreaseDecrease( 2, false, 20, true, true ) ); + assertDerivedColorEquals( new Color( 0x000000 ), "darken(#222, 20%, derived noAutoInverse)", new HSLIncreaseDecrease( 2, false, 20, false, false ) ); + assertDerivedColorEquals( new Color( 0x1b1b1b ), "darken(#222, 20%, derived relative noAutoInverse)", new HSLIncreaseDecrease( 2, false, 20, true, false ) ); + + // saturate + assertDerivedColorEquals( new Color( 0xc75a5a ), "saturate(#d44, 20%, derived)", new HSLIncreaseDecrease( 1, true, 20, false, true ) ); + assertDerivedColorEquals( new Color( 0xce5353 ), "saturate(#d44, 20%, derived relative)", new HSLIncreaseDecrease( 1, true, 20, true, true ) ); + assertDerivedColorEquals( new Color( 0xf32e2e ), "saturate(#d44, 20%, derived noAutoInverse)", new HSLIncreaseDecrease( 1, true, 20, false, false ) ); + assertDerivedColorEquals( new Color( 0xec3535 ), "saturate(#d44, 20%, derived relative noAutoInverse)", new HSLIncreaseDecrease( 1, true, 20, true, false ) ); + + // desaturate + assertDerivedColorEquals( new Color( 0x9c3030 ), "desaturate(#844, 20%, derived)", new HSLIncreaseDecrease( 1, false, 20, false, true ) ); + assertDerivedColorEquals( new Color( 0x8f3d3d ), "desaturate(#844, 20%, derived relative)", new HSLIncreaseDecrease( 1, false, 20, true, true ) ); + assertDerivedColorEquals( new Color( 0x745858 ), "desaturate(#844, 20%, derived noAutoInverse)", new HSLIncreaseDecrease( 1, false, 20, false, false ) ); + assertDerivedColorEquals( new Color( 0x814b4b ), "desaturate(#844, 20%, derived relative noAutoInverse)", new HSLIncreaseDecrease( 1, false, 20, true, false ) ); + + // fadein + assertDerivedColorEquals( new Color( 0x77ff0000, true ), "fadein(#f00a, 20%, derived)", new HSLIncreaseDecrease( 3, true, 20, false, true ) ); + assertDerivedColorEquals( new Color( 0x88ff0000, true ), "fadein(#f00a, 20%, derived relative)", new HSLIncreaseDecrease( 3, true, 20, true, true ) ); + assertDerivedColorEquals( new Color( 0xddff0000, true ), "fadein(#f00a, 20%, derived noAutoInverse)", new HSLIncreaseDecrease( 3, true, 20, false, false ) ); + assertDerivedColorEquals( new Color( 0xccff0000, true ), "fadein(#f00a, 20%, derived relative noAutoInverse)", new HSLIncreaseDecrease( 3, true, 20, true, false ) ); + + // fadeout + assertDerivedColorEquals( new Color( 0x77ff0000, true ), "fadeout(#f004, 20%, derived)", new HSLIncreaseDecrease( 3, false, 20, false, true ) ); + assertDerivedColorEquals( new Color( 0x52ff0000, true ), "fadeout(#f004, 20%, derived relative)", new HSLIncreaseDecrease( 3, false, 20, true, true ) ); + assertDerivedColorEquals( new Color( 0x11ff0000, true ), "fadeout(#f004, 20%, derived noAutoInverse)", new HSLIncreaseDecrease( 3, false, 20, false, false ) ); + assertDerivedColorEquals( new Color( 0x36ff0000, true ), "fadeout(#f004, 20%, derived relative noAutoInverse)", new HSLIncreaseDecrease( 3, false, 20, true, false ) ); + + // fade + assertDerivedColorEquals( new Color( 0x33ff0000, true ), "fade(#f00, 20%, derived)", new Fade( 20 ) ); + assertDerivedColorEquals( new Color( 0xccff0000, true ), "fade(#ff000010, 80%, derived)", new Fade( 80 ) ); + + // spin + assertDerivedColorEquals( new Color( 0xffaa00 ), "spin(#f00, 40, derived)", new HSLIncreaseDecrease( 0, true, 40, false, false ) ); + assertDerivedColorEquals( new Color( 0xff00aa ), "spin(#f00, -40, derived)", new HSLIncreaseDecrease( 0, true, -40, false, false ) ); + + // changeHue / changeSaturation / changeLightness / changeAlpha + assertDerivedColorEquals( new Color( 0xffaa00 ), "changeHue(#f00, 40, derived)", new HSLChange( 0, 40 ) ); + assertDerivedColorEquals( new Color( 0xb34d4d ), "changeSaturation(#f00, 40%, derived)", new HSLChange( 1, 40 ) ); + assertDerivedColorEquals( new Color( 0xcc0000 ), "changeLightness(#f00, 40%, derived)", new HSLChange( 2, 40 ) ); + assertDerivedColorEquals( new Color( 0x66ff0000, true ), "changeAlpha(#f00, 40%, derived)", new HSLChange( 3, 40 ) ); + + // mix + assertDerivedColorEquals( new Color( 0x808000 ), "mix(#f00, #0f0, derived)", new Mix2( new Color( 0xff0000 ), 50 ) ); + assertDerivedColorEquals( new Color( 0xbf4000 ), "mix(#f00, #0f0, 75%, derived)", new Mix2( new Color( 0xff0000 ), 75 ) ); + + // tint + assertDerivedColorEquals( new Color( 0xff80ff ), "tint(#f0f, derived)", new Mix2( new Color( 0xffffff ), 50 ) ); + assertDerivedColorEquals( new Color( 0xffbfff ), "tint(#f0f, 75%, derived)", new Mix2( new Color( 0xffffff ), 75 ) ); + + // shade + assertDerivedColorEquals( new Color( 0x800080 ), "shade(#f0f, derived)", new Mix2( new Color( 0x000000 ), 50 ) ); + assertDerivedColorEquals( new Color( 0x400040 ), "shade(#f0f, 75%, derived)", new Mix2( new Color( 0x000000 ), 75 ) ); + } + + private void assertDerivedColorEquals( Color expectedColor, String actualStyle, ColorFunction... expectedFunctions ) { + Object actual = parseColor( actualStyle ); + assertInstanceOf( DerivedColor.class, actual ); + assertEquals( expectedColor, actual ); + + ColorFunction[] actualFunctions = ((DerivedColor)actual).getFunctions(); + assertEquals( expectedFunctions.length, actualFunctions.length ); + for( int i = 0; i < expectedFunctions.length; i++ ) + assertColorFunctionEquals( expectedFunctions[i], actualFunctions[i] ); + } + + private void assertColorFunctionEquals( ColorFunction expected, ColorFunction actual ) { + assertEquals( expected.getClass(), actual.getClass() ); + + if( expected instanceof HSLIncreaseDecrease ) { + HSLIncreaseDecrease e = (HSLIncreaseDecrease) expected; + HSLIncreaseDecrease a = (HSLIncreaseDecrease) actual; + assertEquals( e.hslIndex, a.hslIndex ); + assertEquals( e.increase, a.increase ); + assertEquals( e.amount, a.amount ); + assertEquals( e.relative, a.relative ); + assertEquals( e.autoInverse, a.autoInverse ); + } else if( expected instanceof HSLChange ) { + HSLChange e = (HSLChange) expected; + HSLChange a = (HSLChange) actual; + assertEquals( e.hslIndex, a.hslIndex ); + assertEquals( e.value, a.value ); + } else if( expected instanceof Fade ) { + Fade e = (Fade) expected; + Fade a = (Fade) actual; + assertEquals( e.amount, a.amount ); + } else if( expected instanceof Mix ) { + Mix e = (Mix) expected; + Mix a = (Mix) actual; + assertEquals( e.color2, a.color2 ); + assertEquals( e.weight, a.weight ); + } else if( expected instanceof Mix2 ) { + Mix2 e = (Mix2) expected; + Mix2 a = (Mix2) actual; + assertEquals( e.color1, a.color1 ); + assertEquals( e.weight, a.weight ); + } else + assertTrue( false ); + } + + private Object parseColor( String value ) { + return UIDefaultsLoader.parseValue( "dummyColor", value, null ); + } + //---- class TestInstance ------------------------------------------------- @SuppressWarnings( "EqualsHashCode" ) // Error Prone From f24b3a602210d680210636654f1775c3aa2e89a0 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sun, 16 Feb 2025 19:21:53 +0100 Subject: [PATCH 12/36] UI defaults: Linux dumps updated on Ubuntu 24.10 --- .../uidefaults/FlatDarkLaf_1.8.0-linux.txt | 127 +++++++++++++++++- .../uidefaults/FlatLightLaf_1.8.0-linux.txt | 127 +++++++++++++++++- 2 files changed, 248 insertions(+), 6 deletions(-) diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0-linux.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0-linux.txt index 1b47b2a5..8bc449d5 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0-linux.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0-linux.txt @@ -1,8 +1,31 @@ - OS Windows 10 + OS Linux +#---- FileChooser ---- + +- FileChooser.useSystemExtensionHiding true ++ FileChooser.useSystemExtensionHiding false + + +#---- JXHeader ---- + +- JXHeader.titleFont [active] Segoe UI bold 12 javax.swing.plaf.FontUIResource [UI] ++ JXHeader.titleFont [active] Liberation Sans bold 15 javax.swing.plaf.FontUIResource [UI] + + +#---- JXTitledPanel ---- + +- JXTitledPanel.titleFont [active] Segoe UI bold 12 javax.swing.plaf.FontUIResource [UI] ++ JXTitledPanel.titleFont [active] Liberation Sans bold 15 javax.swing.plaf.FontUIResource [UI] + + +#---- ProgressBar ---- + - ProgressBar.font [active] Segoe UI plain 10 javax.swing.plaf.FontUIResource [UI] -+ ProgressBar.font [active] Cantarell plain 13 javax.swing.plaf.FontUIResource [UI] ++ ProgressBar.font [active] Liberation Sans plain 13 javax.swing.plaf.FontUIResource [UI] + + +#---- ScrollBar ---- - ScrollBar.minimumThumbSize 10,10 javax.swing.plaf.DimensionUIResource [UI] + ScrollBar.minimumThumbSize 18,18 javax.swing.plaf.DimensionUIResource [UI] @@ -13,6 +36,104 @@ - ScrollBar.thumbInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] + ScrollBar.thumbInsets 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] -- defaultFont Segoe UI plain 12 javax.swing.plaf.FontUIResource [UI] -+ defaultFont Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] +#---- TaskPane ---- + +- TaskPane.font [active] Segoe UI bold 12 javax.swing.plaf.FontUIResource [UI] ++ TaskPane.font [active] Liberation Sans bold 15 javax.swing.plaf.FontUIResource [UI] + + +#---- TitlePane ---- + +- TitlePane.small.font [active] Segoe UI plain 11 javax.swing.plaf.FontUIResource [UI] ++ TitlePane.small.font [active] Liberation Sans plain 14 javax.swing.plaf.FontUIResource [UI] +- defaultFont Segoe UI plain 12 javax.swing.plaf.FontUIResource [UI] ++ defaultFont Liberation Sans plain 15 javax.swing.plaf.FontUIResource [UI] + + + +#---- h0 ---- + +- h0.font [active] Segoe UI plain 30 javax.swing.plaf.FontUIResource [UI] ++ h0.font [active] Liberation Sans plain 33 javax.swing.plaf.FontUIResource [UI] + + +#---- h00 ---- + +- h00.font [active] Segoe UI plain 36 javax.swing.plaf.FontUIResource [UI] ++ h00.font [active] Liberation Sans plain 39 javax.swing.plaf.FontUIResource [UI] + + +#---- h1 ---- + +- h1.font [active] Segoe UI Semibold plain 24 javax.swing.plaf.FontUIResource [UI] ++ h1.font [active] Ubuntu Medium plain 27 javax.swing.plaf.FontUIResource [UI] + +- h1.regular.font [active] Segoe UI plain 24 javax.swing.plaf.FontUIResource [UI] ++ h1.regular.font [active] Liberation Sans plain 27 javax.swing.plaf.FontUIResource [UI] + + +#---- h2 ---- + +- h2.font [active] Segoe UI Semibold plain 18 javax.swing.plaf.FontUIResource [UI] ++ h2.font [active] Ubuntu Medium plain 21 javax.swing.plaf.FontUIResource [UI] + +- h2.regular.font [active] Segoe UI plain 18 javax.swing.plaf.FontUIResource [UI] ++ h2.regular.font [active] Liberation Sans plain 21 javax.swing.plaf.FontUIResource [UI] + + +#---- h3 ---- + +- h3.font [active] Segoe UI Semibold plain 15 javax.swing.plaf.FontUIResource [UI] ++ h3.font [active] Ubuntu Medium plain 18 javax.swing.plaf.FontUIResource [UI] + +- h3.regular.font [active] Segoe UI plain 15 javax.swing.plaf.FontUIResource [UI] ++ h3.regular.font [active] Liberation Sans plain 18 javax.swing.plaf.FontUIResource [UI] + + +#---- h4 ---- + +- h4.font [active] Segoe UI bold 12 javax.swing.plaf.FontUIResource [UI] ++ h4.font [active] Liberation Sans bold 15 javax.swing.plaf.FontUIResource [UI] + + +#---- large ---- + +- large.font [active] Segoe UI plain 14 javax.swing.plaf.FontUIResource [UI] ++ large.font [active] Liberation Sans plain 17 javax.swing.plaf.FontUIResource [UI] + + +#---- light ---- + +- light.font [active] Segoe UI Light plain 12 javax.swing.plaf.FontUIResource [UI] ++ light.font [active] Ubuntu Light plain 15 javax.swing.plaf.FontUIResource [UI] + + +#---- medium ---- + +- medium.font [active] Segoe UI plain 11 javax.swing.plaf.FontUIResource [UI] ++ medium.font [active] Liberation Sans plain 14 javax.swing.plaf.FontUIResource [UI] + + +#---- mini ---- + +- mini.font [active] Segoe UI plain 9 javax.swing.plaf.FontUIResource [UI] ++ mini.font [active] Liberation Sans plain 12 javax.swing.plaf.FontUIResource [UI] + + +#---- monospaced ---- + +- monospaced.font [active] Monospaced plain 12 javax.swing.plaf.FontUIResource [UI] ++ monospaced.font [active] Liberation Mono plain 15 javax.swing.plaf.FontUIResource [UI] + + +#---- semibold ---- + +- semibold.font [active] Segoe UI Semibold plain 12 javax.swing.plaf.FontUIResource [UI] ++ semibold.font [active] Ubuntu Medium plain 15 javax.swing.plaf.FontUIResource [UI] + + +#---- small ---- + +- small.font [active] Segoe UI plain 10 javax.swing.plaf.FontUIResource [UI] ++ small.font [active] Liberation Sans plain 13 javax.swing.plaf.FontUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0-linux.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0-linux.txt index 1b47b2a5..8bc449d5 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0-linux.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0-linux.txt @@ -1,8 +1,31 @@ - OS Windows 10 + OS Linux +#---- FileChooser ---- + +- FileChooser.useSystemExtensionHiding true ++ FileChooser.useSystemExtensionHiding false + + +#---- JXHeader ---- + +- JXHeader.titleFont [active] Segoe UI bold 12 javax.swing.plaf.FontUIResource [UI] ++ JXHeader.titleFont [active] Liberation Sans bold 15 javax.swing.plaf.FontUIResource [UI] + + +#---- JXTitledPanel ---- + +- JXTitledPanel.titleFont [active] Segoe UI bold 12 javax.swing.plaf.FontUIResource [UI] ++ JXTitledPanel.titleFont [active] Liberation Sans bold 15 javax.swing.plaf.FontUIResource [UI] + + +#---- ProgressBar ---- + - ProgressBar.font [active] Segoe UI plain 10 javax.swing.plaf.FontUIResource [UI] -+ ProgressBar.font [active] Cantarell plain 13 javax.swing.plaf.FontUIResource [UI] ++ ProgressBar.font [active] Liberation Sans plain 13 javax.swing.plaf.FontUIResource [UI] + + +#---- ScrollBar ---- - ScrollBar.minimumThumbSize 10,10 javax.swing.plaf.DimensionUIResource [UI] + ScrollBar.minimumThumbSize 18,18 javax.swing.plaf.DimensionUIResource [UI] @@ -13,6 +36,104 @@ - ScrollBar.thumbInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] + ScrollBar.thumbInsets 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] -- defaultFont Segoe UI plain 12 javax.swing.plaf.FontUIResource [UI] -+ defaultFont Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] +#---- TaskPane ---- + +- TaskPane.font [active] Segoe UI bold 12 javax.swing.plaf.FontUIResource [UI] ++ TaskPane.font [active] Liberation Sans bold 15 javax.swing.plaf.FontUIResource [UI] + + +#---- TitlePane ---- + +- TitlePane.small.font [active] Segoe UI plain 11 javax.swing.plaf.FontUIResource [UI] ++ TitlePane.small.font [active] Liberation Sans plain 14 javax.swing.plaf.FontUIResource [UI] +- defaultFont Segoe UI plain 12 javax.swing.plaf.FontUIResource [UI] ++ defaultFont Liberation Sans plain 15 javax.swing.plaf.FontUIResource [UI] + + + +#---- h0 ---- + +- h0.font [active] Segoe UI plain 30 javax.swing.plaf.FontUIResource [UI] ++ h0.font [active] Liberation Sans plain 33 javax.swing.plaf.FontUIResource [UI] + + +#---- h00 ---- + +- h00.font [active] Segoe UI plain 36 javax.swing.plaf.FontUIResource [UI] ++ h00.font [active] Liberation Sans plain 39 javax.swing.plaf.FontUIResource [UI] + + +#---- h1 ---- + +- h1.font [active] Segoe UI Semibold plain 24 javax.swing.plaf.FontUIResource [UI] ++ h1.font [active] Ubuntu Medium plain 27 javax.swing.plaf.FontUIResource [UI] + +- h1.regular.font [active] Segoe UI plain 24 javax.swing.plaf.FontUIResource [UI] ++ h1.regular.font [active] Liberation Sans plain 27 javax.swing.plaf.FontUIResource [UI] + + +#---- h2 ---- + +- h2.font [active] Segoe UI Semibold plain 18 javax.swing.plaf.FontUIResource [UI] ++ h2.font [active] Ubuntu Medium plain 21 javax.swing.plaf.FontUIResource [UI] + +- h2.regular.font [active] Segoe UI plain 18 javax.swing.plaf.FontUIResource [UI] ++ h2.regular.font [active] Liberation Sans plain 21 javax.swing.plaf.FontUIResource [UI] + + +#---- h3 ---- + +- h3.font [active] Segoe UI Semibold plain 15 javax.swing.plaf.FontUIResource [UI] ++ h3.font [active] Ubuntu Medium plain 18 javax.swing.plaf.FontUIResource [UI] + +- h3.regular.font [active] Segoe UI plain 15 javax.swing.plaf.FontUIResource [UI] ++ h3.regular.font [active] Liberation Sans plain 18 javax.swing.plaf.FontUIResource [UI] + + +#---- h4 ---- + +- h4.font [active] Segoe UI bold 12 javax.swing.plaf.FontUIResource [UI] ++ h4.font [active] Liberation Sans bold 15 javax.swing.plaf.FontUIResource [UI] + + +#---- large ---- + +- large.font [active] Segoe UI plain 14 javax.swing.plaf.FontUIResource [UI] ++ large.font [active] Liberation Sans plain 17 javax.swing.plaf.FontUIResource [UI] + + +#---- light ---- + +- light.font [active] Segoe UI Light plain 12 javax.swing.plaf.FontUIResource [UI] ++ light.font [active] Ubuntu Light plain 15 javax.swing.plaf.FontUIResource [UI] + + +#---- medium ---- + +- medium.font [active] Segoe UI plain 11 javax.swing.plaf.FontUIResource [UI] ++ medium.font [active] Liberation Sans plain 14 javax.swing.plaf.FontUIResource [UI] + + +#---- mini ---- + +- mini.font [active] Segoe UI plain 9 javax.swing.plaf.FontUIResource [UI] ++ mini.font [active] Liberation Sans plain 12 javax.swing.plaf.FontUIResource [UI] + + +#---- monospaced ---- + +- monospaced.font [active] Monospaced plain 12 javax.swing.plaf.FontUIResource [UI] ++ monospaced.font [active] Liberation Mono plain 15 javax.swing.plaf.FontUIResource [UI] + + +#---- semibold ---- + +- semibold.font [active] Segoe UI Semibold plain 12 javax.swing.plaf.FontUIResource [UI] ++ semibold.font [active] Ubuntu Medium plain 15 javax.swing.plaf.FontUIResource [UI] + + +#---- small ---- + +- small.font [active] Segoe UI plain 10 javax.swing.plaf.FontUIResource [UI] ++ small.font [active] Liberation Sans plain 13 javax.swing.plaf.FontUIResource [UI] From 411a2f6d298e9993befdf374c066744fed286579 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sun, 16 Feb 2025 19:59:36 +0100 Subject: [PATCH 13/36] fixed errors reported by Error Prone in commit 6c8f813e539aa9741f61a13a2975a93124f87f54 --- .../java/com/formdev/flatlaf/testing/FlatClassLoaderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.java index 064a3634..1b6f4ae8 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatClassLoaderTest.java @@ -54,7 +54,7 @@ public class FlatClassLoaderTest }, FlatClassLoaderTest.class.getClassLoader() ); Class lafClass = cl.loadClass( "com.formdev.flatlaf.FlatDarkLaf" ); - LookAndFeel laf = (LookAndFeel) lafClass.newInstance(); + LookAndFeel laf = (LookAndFeel) lafClass.getDeclaredConstructor().newInstance(); UIManager.setLookAndFeel( laf ); JFrame frame = new JFrame( "FlatClassloaderTest" ); From ae4037ee82c23b490d0cc5dfb0a55b2cd776112a Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Tue, 18 Feb 2025 13:10:55 +0100 Subject: [PATCH 14/36] Linux: rounded iconify/maximize/close buttons if using FlatLaf window decorations (issue #821) --- .../flatlaf/icons/FlatWindowAbstractIcon.java | 116 ++++++++++++++---- .../flatlaf/icons/FlatWindowCloseIcon.java | 42 +++---- .../flatlaf/icons/FlatWindowIconifyIcon.java | 2 +- .../flatlaf/icons/FlatWindowMaximizeIcon.java | 5 +- .../flatlaf/icons/FlatWindowRestoreIcon.java | 7 +- .../formdev/flatlaf/ui/FlatRootPaneUI.java | 7 +- .../com/formdev/flatlaf/ui/FlatTitlePane.java | 80 ++++++++++-- .../formdev/flatlaf/FlatDarkLaf.properties | 9 +- .../com/formdev/flatlaf/FlatLaf.properties | 26 ++++ .../formdev/flatlaf/FlatLightLaf.properties | 9 +- .../resources/DerivedColorKeys.properties | 6 + .../uidefaults/FlatDarkLaf_1.8.0-linux.txt | 78 ++++++++++++ .../dumps/uidefaults/FlatDarkLaf_1.8.0.txt | 9 +- .../uidefaults/FlatLightLaf_1.8.0-linux.txt | 81 ++++++++++++ .../dumps/uidefaults/FlatLightLaf_1.8.0.txt | 9 +- .../dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt | 9 +- .../uidefaults/FlatMacLightLaf_1.8.0.txt | 9 +- .../dumps/uidefaults/FlatTestLaf_1.8.0.txt | 25 +++- .../testing/uidefaults/UIDefaultsDump.java | 11 +- .../flatlaf/testing/FlatTestLaf.properties | 18 +++ .../flatlaf/themeeditor/FlatLafUIKeys.txt | 30 +++++ 21 files changed, 500 insertions(+), 88 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowAbstractIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowAbstractIcon.java index 46ed00cb..46845340 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowAbstractIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowAbstractIcon.java @@ -18,44 +18,95 @@ package com.formdev.flatlaf.icons; import java.awt.Color; import java.awt.Component; +import java.awt.Container; import java.awt.Dimension; import java.awt.Graphics2D; -import java.awt.RenderingHints; +import java.awt.Insets; +import java.awt.Window; +import javax.swing.SwingUtilities; import com.formdev.flatlaf.ui.FlatButtonUI; +import com.formdev.flatlaf.ui.FlatTitlePane; import com.formdev.flatlaf.ui.FlatUIUtils; +import com.formdev.flatlaf.util.DerivedColor; import com.formdev.flatlaf.util.HiDPIUtils; +import com.formdev.flatlaf.util.UIScale; /** * Base class for window icons. * * @uiDefault TitlePane.buttonSize Dimension + * @uiDefault TitlePane.buttonInsets Insets optional + * @uiDefault TitlePane.buttonArc int optional * @uiDefault TitlePane.buttonSymbolHeight int - * @uiDefault TitlePane.buttonHoverBackground Color - * @uiDefault TitlePane.buttonPressedBackground Color + * @uiDefault TitlePane.buttonBackground Color optional + * @uiDefault TitlePane.buttonForeground Color optional + * @uiDefault TitlePane.buttonInactiveBackground Color optional + * @uiDefault TitlePane.buttonInactiveForeground Color optional + * @uiDefault TitlePane.buttonHoverBackground Color optional + * @uiDefault TitlePane.buttonHoverForeground Color optional + * @uiDefault TitlePane.buttonPressedBackground Color optional + * @uiDefault TitlePane.buttonPressedForeground Color optional * * @author Karl Tauber */ public abstract class FlatWindowAbstractIcon extends FlatAbstractIcon { - private final int symbolHeight; - private final Color hoverBackground; - private final Color pressedBackground; + /** @since 3.6 */ protected final Insets insets; + /** @since 3.6 */ protected final int arc; + /** @since 3.6 */ protected final int symbolHeight; + + /** @since 3.6 */ protected final Color background; + /** @since 3.6 */ protected final Color foreground; + /** @since 3.6 */ protected final Color inactiveBackground; + /** @since 3.6 */ protected final Color inactiveForeground; + protected final Color hoverBackground; + /** @since 3.6 */ protected final Color hoverForeground; + protected final Color pressedBackground; + /** @since 3.6 */ protected final Color pressedForeground; /** @since 3.2 */ protected FlatWindowAbstractIcon( String windowStyle ) { - this( FlatUIUtils.getSubUIDimension( "TitlePane.buttonSize", windowStyle ), - FlatUIUtils.getSubUIInt( "TitlePane.buttonSymbolHeight", windowStyle, 10 ), - FlatUIUtils.getSubUIColor( "TitlePane.buttonHoverBackground", windowStyle ), - FlatUIUtils.getSubUIColor( "TitlePane.buttonPressedBackground", windowStyle ) ); + this( windowStyle, null, null, null, null, null, null, null, null ); } - /** @since 3.2 */ - protected FlatWindowAbstractIcon( Dimension size, int symbolHeight, Color hoverBackground, Color pressedBackground ) { + /** @since 3.6 */ + protected FlatWindowAbstractIcon( String windowStyle, + Color background, Color foreground, Color inactiveBackground, Color inactiveForeground, + Color hoverBackground, Color hoverForeground, Color pressedBackground, Color pressedForeground ) + { + this( FlatUIUtils.getSubUIDimension( "TitlePane.buttonSize", windowStyle ), + FlatUIUtils.getSubUIInsets( "TitlePane.buttonInsets", windowStyle ), + FlatUIUtils.getSubUIInt( "TitlePane.buttonArc", windowStyle, 0 ), + FlatUIUtils.getSubUIInt( "TitlePane.buttonSymbolHeight", windowStyle, 10 ), + (background != null) ? background : FlatUIUtils.getSubUIColor( "TitlePane.buttonBackground", windowStyle ), + (foreground != null) ? foreground : FlatUIUtils.getSubUIColor( "TitlePane.buttonForeground", windowStyle ), + (inactiveBackground != null) ? inactiveBackground : FlatUIUtils.getSubUIColor( "TitlePane.buttonInactiveBackground", windowStyle ), + (inactiveForeground != null) ? inactiveForeground : FlatUIUtils.getSubUIColor( "TitlePane.buttonInactiveForeground", windowStyle ), + (hoverBackground != null) ? hoverBackground : FlatUIUtils.getSubUIColor( "TitlePane.buttonHoverBackground", windowStyle ), + (hoverForeground != null) ? hoverForeground : FlatUIUtils.getSubUIColor( "TitlePane.buttonHoverForeground", windowStyle ), + (pressedBackground != null) ? pressedBackground : FlatUIUtils.getSubUIColor( "TitlePane.buttonPressedBackground", windowStyle ), + (pressedForeground != null) ? pressedForeground : FlatUIUtils.getSubUIColor( "TitlePane.buttonPressedForeground", windowStyle ) ); + } + + /** @since 3.6 */ + protected FlatWindowAbstractIcon( Dimension size, Insets insets, int arc, int symbolHeight, + Color background, Color foreground, Color inactiveBackground, Color inactiveForeground, + Color hoverBackground, Color hoverForeground, Color pressedBackground, Color pressedForeground ) + { super( size.width, size.height, null ); + this.insets = (insets != null) ? insets : new Insets( 0, 0, 0, 0 ); + this.arc = arc; this.symbolHeight = symbolHeight; + + this.background = background; + this.foreground = foreground; + this.inactiveBackground = inactiveBackground; + this.inactiveForeground = inactiveForeground; this.hoverBackground = hoverBackground; + this.hoverForeground = hoverForeground; this.pressedBackground = pressedBackground; + this.pressedForeground = pressedForeground; } @Override @@ -69,26 +120,39 @@ public abstract class FlatWindowAbstractIcon /** @since 3.5.2 */ @Override protected void paintBackground( Component c, Graphics2D g, int x, int y ) { - Color background = FlatButtonUI.buttonStateColor( c, null, null, null, hoverBackground, pressedBackground ); + Color bg = null; + if( background != null || inactiveBackground != null ) { + Window window = SwingUtilities.windowForComponent( c ); + bg = (window == null || window.isActive()) ? background : inactiveBackground; + } + + Color background = FlatButtonUI.buttonStateColor( c, bg, null, null, hoverBackground, pressedBackground ); if( background != null ) { - // disable antialiasing for background rectangle painting to avoid blurry edges when scaled (e.g. at 125% or 175%) - Object oldHint = g.getRenderingHint( RenderingHints.KEY_ANTIALIASING ); - g.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF ); + Insets insets = UIScale.scale( this.insets ); + float arc = UIScale.scale( (float) this.arc ); - // fill background of whole component - g.setColor( FlatUIUtils.deriveColor( background, c.getBackground() ) ); - g.fillRect( 0, 0, c.getWidth(), c.getHeight() ); + // derive color from title pane background + if( background instanceof DerivedColor ) { + Container titlePane = SwingUtilities.getAncestorOfClass( FlatTitlePane.class, c ); + Component baseComp = (titlePane != null) ? titlePane : c; + background = FlatUIUtils.deriveColor( background, baseComp.getBackground() ); + } - g.setRenderingHint( RenderingHints.KEY_ANTIALIASING, oldHint ); + g.setColor( background ); + FlatUIUtils.paintComponentBackground( g, insets.left, insets.top, + c.getWidth() - insets.left - insets.right, + c.getHeight() - insets.top - insets.bottom, + 0, arc ); } } protected Color getForeground( Component c ) { - return c.getForeground(); - } - - /** @since 3.2 */ - protected int getSymbolHeight() { - return symbolHeight; + Color fg = null; + if( foreground != null || inactiveForeground != null ) { + Window window = SwingUtilities.windowForComponent( c ); + fg = (window == null || window.isActive()) ? foreground : inactiveForeground; + } + return FlatButtonUI.buttonStateColor( c, (fg != null) ? fg : c.getForeground(), + null, null, hoverForeground, pressedForeground ); } } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowCloseIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowCloseIcon.java index a4fd835d..f5187c95 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowCloseIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowCloseIcon.java @@ -17,53 +17,54 @@ package com.formdev.flatlaf.icons; import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Component; import java.awt.Graphics2D; import java.awt.geom.Path2D; -import com.formdev.flatlaf.ui.FlatButtonUI; import com.formdev.flatlaf.ui.FlatUIUtils; import com.formdev.flatlaf.util.SystemInfo; /** * "close" icon for windows (frames and dialogs). * - * @uiDefault TitlePane.closeHoverBackground Color - * @uiDefault TitlePane.closePressedBackground Color - * @uiDefault TitlePane.closeHoverForeground Color - * @uiDefault TitlePane.closePressedForeground Color + * @uiDefault TitlePane.closeBackground Color optional + * @uiDefault TitlePane.closeForeground Color optional + * @uiDefault TitlePane.closeInactiveBackground Color optional + * @uiDefault TitlePane.closeInactiveForeground Color optional + * @uiDefault TitlePane.closeHoverBackground Color optional + * @uiDefault TitlePane.closeHoverForeground Color optional + * @uiDefault TitlePane.closePressedBackground Color optional + * @uiDefault TitlePane.closePressedForeground Color optional * * @author Karl Tauber */ public class FlatWindowCloseIcon extends FlatWindowAbstractIcon { - private final Color hoverForeground; - private final Color pressedForeground; - public FlatWindowCloseIcon() { this( null ); } /** @since 3.2 */ public FlatWindowCloseIcon( String windowStyle ) { - super( FlatUIUtils.getSubUIDimension( "TitlePane.buttonSize", windowStyle ), - FlatUIUtils.getSubUIInt( "TitlePane.buttonSymbolHeight", windowStyle, 10 ), + super( windowStyle, + FlatUIUtils.getSubUIColor( "TitlePane.closeBackground", windowStyle ), + FlatUIUtils.getSubUIColor( "TitlePane.closeForeground", windowStyle ), + FlatUIUtils.getSubUIColor( "TitlePane.closeInactiveBackground", windowStyle ), + FlatUIUtils.getSubUIColor( "TitlePane.closeInactiveForeground", windowStyle ), FlatUIUtils.getSubUIColor( "TitlePane.closeHoverBackground", windowStyle ), - FlatUIUtils.getSubUIColor( "TitlePane.closePressedBackground", windowStyle ) ); - - hoverForeground = FlatUIUtils.getSubUIColor( "TitlePane.closeHoverForeground", windowStyle ); - pressedForeground = FlatUIUtils.getSubUIColor( "TitlePane.closePressedForeground", windowStyle ); + FlatUIUtils.getSubUIColor( "TitlePane.closeHoverForeground", windowStyle ), + FlatUIUtils.getSubUIColor( "TitlePane.closePressedBackground", windowStyle ), + FlatUIUtils.getSubUIColor( "TitlePane.closePressedForeground", windowStyle ) ); } @Override protected void paintIconAt1x( Graphics2D g, int x, int y, int width, int height, double scaleFactor ) { - int iwh = (int) (getSymbolHeight() * scaleFactor); + int iwh = (int) (symbolHeight * scaleFactor); int ix = x + ((width - iwh) / 2); int iy = y + ((height - iwh) / 2); int ix2 = ix + iwh - 1; int iy2 = iy + iwh - 1; - float thickness = Math.max( SystemInfo.isWindows_11_orLater ? (float) scaleFactor : (int) scaleFactor, 1 ); + boolean isWindows10 = SystemInfo.isWindows_10_orLater && !SystemInfo.isWindows_11_orLater; + float thickness = Math.max( isWindows10 ? (int) scaleFactor : (float) scaleFactor, 1 ); Path2D path = new Path2D.Float( Path2D.WIND_EVEN_ODD, 4 ); path.moveTo( ix, iy ); @@ -73,9 +74,4 @@ public class FlatWindowCloseIcon g.setStroke( new BasicStroke( thickness ) ); g.draw( path ); } - - @Override - protected Color getForeground( Component c ) { - return FlatButtonUI.buttonStateColor( c, c.getForeground(), null, null, hoverForeground, pressedForeground ); - } } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowIconifyIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowIconifyIcon.java index e7d11cda..c0367e2c 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowIconifyIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowIconifyIcon.java @@ -37,7 +37,7 @@ public class FlatWindowIconifyIcon @Override protected void paintIconAt1x( Graphics2D g, int x, int y, int width, int height, double scaleFactor ) { - int iw = (int) (getSymbolHeight() * scaleFactor); + int iw = (int) (symbolHeight * scaleFactor); int ih = Math.max( (int) scaleFactor, 1 ); int ix = x + ((width - iw) / 2); int iy = y + ((height - ih) / 2); diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowMaximizeIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowMaximizeIcon.java index a731c21b..abd3992b 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowMaximizeIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowMaximizeIcon.java @@ -39,10 +39,11 @@ public class FlatWindowMaximizeIcon @Override protected void paintIconAt1x( Graphics2D g, int x, int y, int width, int height, double scaleFactor ) { - int iwh = (int) (getSymbolHeight() * scaleFactor); + int iwh = (int) (symbolHeight * scaleFactor); int ix = x + ((width - iwh) / 2); int iy = y + ((height - iwh) / 2); - float thickness = Math.max( SystemInfo.isWindows_11_orLater ? (float) scaleFactor : (int) scaleFactor, 1 ); + boolean isWindows10 = SystemInfo.isWindows_10_orLater && !SystemInfo.isWindows_11_orLater; + float thickness = Math.max( isWindows10 ? (int) scaleFactor : (float) scaleFactor, 1 ); int arc = Math.max( (int) (1.5 * scaleFactor), 2 ); g.fill( SystemInfo.isWindows_11_orLater diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowRestoreIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowRestoreIcon.java index 4e216495..bdfd8115 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowRestoreIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatWindowRestoreIcon.java @@ -42,14 +42,15 @@ public class FlatWindowRestoreIcon @Override protected void paintIconAt1x( Graphics2D g, int x, int y, int width, int height, double scaleFactor ) { - int iwh = (int) (getSymbolHeight() * scaleFactor); + int iwh = (int) (symbolHeight * scaleFactor); int ix = x + ((width - iwh) / 2); int iy = y + ((height - iwh) / 2); - float thickness = Math.max( SystemInfo.isWindows_11_orLater ? (float) scaleFactor : (int) scaleFactor, 1 ); + boolean isWindows10 = SystemInfo.isWindows_10_orLater && !SystemInfo.isWindows_11_orLater; + float thickness = Math.max( isWindows10 ? (int) scaleFactor : (float) scaleFactor, 1 ); int arc = Math.max( (int) (1.5 * scaleFactor), 2 ); int arcOuter = (int) (arc + (1.5 * scaleFactor)); - int rwh = (int) ((getSymbolHeight() - 2) * scaleFactor); + int rwh = (int) ((symbolHeight - 2) * scaleFactor); int ro2 = iwh - rwh; // upper-right rectangle diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java index d5b77bfa..6ec58389 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java @@ -31,6 +31,7 @@ import java.awt.Window; import java.awt.event.ComponentListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.Objects; import java.util.function.Function; import javax.swing.JComponent; import javax.swing.JDialog; @@ -485,8 +486,12 @@ public class FlatRootPaneUI break; case "ancestor": - if( e.getNewValue() instanceof Window ) + if( e.getNewValue() instanceof Window ) { + if( titlePane != null && !Objects.equals( titlePane.windowStyle, FlatTitlePane.getWindowStyle( rootPane ) ) ) + setTitlePane( createTitlePane() ); + macClearBackgroundForTranslucentWindow( rootPane ); + } macUninstallWindowBackgroundListener( rootPane ); macInstallWindowBackgroundListener( rootPane ); diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java index de7217d7..369332e7 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java @@ -89,13 +89,16 @@ import com.formdev.flatlaf.util.UIScale; * @uiDefault TitlePane.iconSize Dimension * @uiDefault TitlePane.iconMargins Insets * @uiDefault TitlePane.titleMargins Insets - * @uiDefault TitlePane.menuBarEmbedded boolean * @uiDefault TitlePane.titleMinimumWidth int * @uiDefault TitlePane.buttonMinimumWidth int * @uiDefault TitlePane.buttonMaximizedHeight int + * @uiDefault TitlePane.buttonsGap int + * @uiDefault TitlePane.buttonsMargins Insets + * @uiDefault TitlePane.buttonsFillVertically boolean * @uiDefault TitlePane.centerTitle boolean * @uiDefault TitlePane.centerTitleIfMenuBarEmbedded boolean * @uiDefault TitlePane.showIconBesideTitle boolean + * @uiDefault TitlePane.menuBarEmbedded boolean * @uiDefault TitlePane.menuBarTitleGap int * @uiDefault TitlePane.menuBarTitleMinimumGap int * @uiDefault TitlePane.closeIcon Icon @@ -123,9 +126,14 @@ public class FlatTitlePane /** @since 2.5 */ protected final boolean showIconInDialogs; /** @since 2 */ protected final int noIconLeftGap; protected final Dimension iconSize; + /** @since 3.6 */ protected final Insets iconMargins; + /** @since 3.6 */ protected final Insets titleMargins; /** @since 2.4 */ protected final int titleMinimumWidth; /** @since 2.4 */ protected final int buttonMinimumWidth; protected final int buttonMaximizedHeight; + /** @since 3.6 */ protected final int buttonsGap; + /** @since 3.6 */ protected final Insets buttonsMargins; + /** @since 3.6 */ protected final boolean buttonsFillVertically; protected final boolean centerTitle; protected final boolean centerTitleIfMenuBarEmbedded; /** @since 2.4 */ protected final boolean showIconBesideTitle; @@ -145,6 +153,9 @@ public class FlatTitlePane protected JButton restoreButton; protected JButton closeButton; + private JComponent iconifyMaximizeGapComp; + private JComponent maximizeCloseGapComp; + protected Window window; private final Handler handler; @@ -179,9 +190,7 @@ public class FlatTitlePane public FlatTitlePane( JRootPane rootPane ) { this.rootPane = rootPane; - Window w = SwingUtilities.getWindowAncestor( rootPane ); - String defaultWindowStyle = (w != null && w.getType() == Window.Type.UTILITY) ? WINDOW_STYLE_SMALL : null; - windowStyle = clientProperty( rootPane, WINDOW_STYLE, defaultWindowStyle, String.class ); + windowStyle = getWindowStyle( rootPane ); titleFont = FlatUIUtils.getSubUIFont( "TitlePane.font", windowStyle ); activeBackground = FlatUIUtils.getSubUIColor( "TitlePane.background", windowStyle ); @@ -196,9 +205,14 @@ public class FlatTitlePane showIconInDialogs = FlatUIUtils.getSubUIBoolean( "TitlePane.showIconInDialogs", windowStyle, true ); noIconLeftGap = FlatUIUtils.getSubUIInt( "TitlePane.noIconLeftGap", windowStyle, 8 ); iconSize = FlatUIUtils.getSubUIDimension( "TitlePane.iconSize", windowStyle ); + iconMargins = FlatUIUtils.getSubUIInsets( "TitlePane.iconMargins", windowStyle ); + titleMargins = FlatUIUtils.getSubUIInsets( "TitlePane.titleMargins", windowStyle ); titleMinimumWidth = FlatUIUtils.getSubUIInt( "TitlePane.titleMinimumWidth", windowStyle, 60 ); buttonMinimumWidth = FlatUIUtils.getSubUIInt( "TitlePane.buttonMinimumWidth", windowStyle, 30 ); buttonMaximizedHeight = FlatUIUtils.getSubUIInt( "TitlePane.buttonMaximizedHeight", windowStyle, 0 ); + buttonsGap = FlatUIUtils.getSubUIInt( "TitlePane.buttonsGap", windowStyle, 0 ); + buttonsMargins = FlatUIUtils.getSubUIInsets( "TitlePane.buttonsMargins", windowStyle ); + buttonsFillVertically = FlatUIUtils.getSubUIBoolean( "TitlePane.buttonsFillVertically", windowStyle, true ); centerTitle = FlatUIUtils.getSubUIBoolean( "TitlePane.centerTitle", windowStyle, false ); centerTitleIfMenuBarEmbedded = FlatUIUtils.getSubUIBoolean( "TitlePane.centerTitleIfMenuBarEmbedded", windowStyle, true ); showIconBesideTitle = FlatUIUtils.getSubUIBoolean( "TitlePane.showIconBesideTitle", windowStyle, false ); @@ -228,6 +242,12 @@ public class FlatTitlePane applyComponentOrientation( rootPane.getComponentOrientation() ); } + static String getWindowStyle( JRootPane rootPane ) { + Window w = SwingUtilities.getWindowAncestor( rootPane ); + String defaultWindowStyle = (w != null && w.getType() == Window.Type.UTILITY) ? WINDOW_STYLE_SMALL : null; + return clientProperty( rootPane, WINDOW_STYLE, defaultWindowStyle, String.class ); + } + protected FlatTitlePaneBorder createTitlePaneBorder() { return new FlatTitlePaneBorder(); } @@ -245,8 +265,8 @@ public class FlatTitlePane setUI( new FlatTitleLabelUI() ); } }; - iconLabel.setBorder( new FlatEmptyBorder( FlatUIUtils.getSubUIInsets( "TitlePane.iconMargins", windowStyle ) ) ); - titleLabel.setBorder( new FlatEmptyBorder( FlatUIUtils.getSubUIInsets( "TitlePane.titleMargins", windowStyle ) ) ); + iconLabel.setBorder( new FlatEmptyBorder( iconMargins ) ); + titleLabel.setBorder( new FlatEmptyBorder( titleMargins ) ); leftPanel.setLayout( new BoxLayout( leftPanel, BoxLayout.LINE_AXIS ) ); leftPanel.setOpaque( false ); @@ -349,10 +369,15 @@ public class FlatTitlePane restoreButton = createButton( "TitlePane.restoreIcon", "Restore", e -> restore() ); closeButton = createButton( "TitlePane.closeIcon", "Close", e -> close() ); + iconifyMaximizeGapComp = createButtonsGapComp(); + maximizeCloseGapComp = createButtonsGapComp(); + // initially hide buttons that are only supported in frames iconifyButton.setVisible( false ); maximizeButton.setVisible( false ); restoreButton.setVisible( false ); + iconifyMaximizeGapComp.setVisible( false ); + maximizeCloseGapComp.setVisible( false ); buttonPanel = new JPanel() { @Override @@ -364,12 +389,13 @@ public class FlatTitlePane if( buttonMaximizedHeight > 0 && isWindowMaximized() && !hasVisibleEmbeddedMenuBar( rootPane.getJMenuBar() ) ) { // make title pane height smaller when frame is maximized - size = new Dimension( size.width, Math.min( size.height, UIScale.scale( buttonMaximizedHeight ) ) ); + size = new Dimension( size.width, Math.min( size.height, UIScale.scale( buttonMaximizedHeight + buttonsMargins.top + buttonsMargins.bottom ) ) ); } return size; } }; buttonPanel.setOpaque( false ); + buttonPanel.setBorder( FlatUIUtils.nonUIResource( new FlatEmptyBorder( buttonsMargins ) ) ); buttonPanel.setLayout( new BoxLayout( buttonPanel, BoxLayout.LINE_AXIS ) ); if( rootPane.getWindowDecorationStyle() == JRootPane.FRAME ) { // JRootPane.FRAME works only for frames (and not for dialogs) @@ -378,8 +404,10 @@ public class FlatTitlePane // later in frameStateChanged(), which is invoked from addNotify() buttonPanel.add( iconifyButton ); + buttonPanel.add( iconifyMaximizeGapComp ); buttonPanel.add( maximizeButton ); buttonPanel.add( restoreButton ); + buttonPanel.add( maximizeCloseGapComp ); } buttonPanel.add( closeButton ); @@ -396,13 +424,17 @@ public class FlatTitlePane @Override public Dimension getMinimumSize() { // allow the button to shrink if space is rare - return new Dimension( UIScale.scale( buttonMinimumWidth ), super.getMinimumSize().height ); + return new Dimension( + Math.min( UIScale.scale( buttonMinimumWidth ), super.getPreferredSize().width ), + super.getMinimumSize().height ); } @Override public Dimension getMaximumSize() { // allow the button to fill whole button area height // see also BasicMenuUI.getMaximumSize() - return new Dimension( super.getMaximumSize().width, Short.MAX_VALUE ); + return buttonsFillVertically + ? new Dimension( super.getMaximumSize().width, Short.MAX_VALUE ) + : super.getMaximumSize(); } }; button.setFocusable( false ); @@ -413,6 +445,14 @@ public class FlatTitlePane return button; } + private JComponent createButtonsGapComp() { + JComponent gapComp = new JPanel(); + gapComp.setOpaque( false ); + gapComp.setMinimumSize( new Dimension( 0, 0 ) ); + gapComp.setPreferredSize( new Dimension( UIScale.scale( buttonsGap ), 0 ) ); + return gapComp; + } + protected void activeChanged( boolean active ) { Color background = clientPropertyColor( rootPane, TITLE_BAR_BACKGROUND, null ); Color foreground = clientPropertyColor( rootPane, TITLE_BAR_FOREGROUND, null ); @@ -434,6 +474,9 @@ public class FlatTitlePane closeButton.setForeground( foreground ); // this is necessary because hover/pressed colors are derived from background color + // (since FlatWindowAbstractIcon now invokes FlatTitlePane.getBackground() + // to get base color, this is no longer necessary, but keep it for compatibility; + // e.g. for custom window icons) iconifyButton.setBackground( background ); maximizeButton.setBackground( background ); restoreButton.setBackground( background ); @@ -493,6 +536,13 @@ public class FlatTitlePane maximizeButton.setVisible( false ); restoreButton.setVisible( false ); } + + boolean iconifyVisible = iconifyButton.isVisible(); + boolean maximizeVisible = maximizeButton.isVisible(); + boolean restoreVisible = restoreButton.isVisible(); + boolean closeVisible = closeButton.isVisible(); + iconifyMaximizeGapComp.setVisible( iconifyVisible && (maximizeVisible || restoreVisible || closeVisible) ); + maximizeCloseGapComp.setVisible( closeVisible && (maximizeVisible || restoreVisible) ); } protected void updateIcon() { @@ -746,12 +796,17 @@ public class FlatTitlePane if( isFullWindowContent() ) return; + g.setColor( getBackground() ); + g.fillRect( 0, 0, getWidth(), getHeight() ); + } + + @Override + public Color getBackground() { // not storing value of "TitlePane.unifiedBackground" in class to allow changing at runtime - g.setColor( (UIManager.getBoolean( "TitlePane.unifiedBackground" ) && + return (UIManager.getBoolean( "TitlePane.unifiedBackground" ) && clientPropertyColor( rootPane, TITLE_BAR_BACKGROUND, null ) == null) ? FlatUIUtils.getParentBackground( this ) - : getBackground() ); - g.fillRect( 0, 0, getWidth(), getHeight() ); + : super.getBackground(); } /** @@ -1093,6 +1148,7 @@ public class FlatTitlePane if( !c.isDisplayable() || !c.isVisible() || !contains( c, x, y ) || c == mouseLayer ) return true; // continue checking with next component + // check enabled component that has mouse listeners if( c.isEnabled() && (c.getMouseListeners().length > 0 || c.getMouseMotionListeners().length > 0) ) diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties index e6a3413d..6301b65c 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties @@ -341,8 +341,13 @@ TableHeader.bottomSeparatorColor = $TableHeader.separatorColor #---- TitlePane ---- TitlePane.embeddedForeground = darken($TitlePane.foreground,15%) -TitlePane.buttonHoverBackground = lighten($TitlePane.background,15%,derived) -TitlePane.buttonPressedBackground = lighten($TitlePane.background,10%,derived) +TitlePane.buttonHoverBackground = lighten($TitlePane.background,10%,derived) +TitlePane.buttonPressedBackground = lighten($TitlePane.background,6%,derived) + +# Linux +[linux]TitlePane.buttonBackground = lighten($TitlePane.background,5%,derived) +[linux]TitlePane.buttonHoverBackground = lighten($TitlePane.background,10%,derived) +[linux]TitlePane.buttonPressedBackground = lighten($TitlePane.background,15%,derived) #---- ToggleButton ---- diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties index c39995ff..741efa41 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties @@ -823,9 +823,14 @@ TitlePane.iconMargins = 3,8,3,8 TitlePane.titleMargins = 3,0,3,0 TitlePane.titleMinimumWidth = 60 TitlePane.buttonSize = 44,30 +TitlePane.buttonInsets = 0,0,0,0 +TitlePane.buttonArc = 0 TitlePane.buttonMinimumWidth = 30 TitlePane.buttonMaximizedHeight = 22 TitlePane.buttonSymbolHeight = 10 +TitlePane.buttonsGap = 0 +TitlePane.buttonsMargins = 0,0,0,0 +TitlePane.buttonsFillVertically = true TitlePane.centerTitle = false TitlePane.centerTitleIfMenuBarEmbedded = true TitlePane.showIconBesideTitle = false @@ -856,6 +861,27 @@ TitlePane.small.iconifyIcon = com.formdev.flatlaf.icons.FlatWindowIconifyIcon, s TitlePane.small.maximizeIcon = com.formdev.flatlaf.icons.FlatWindowMaximizeIcon, small TitlePane.small.restoreIcon = com.formdev.flatlaf.icons.FlatWindowRestoreIcon, small +# Linux +[linux]TitlePane.buttonSize = 26,26 +[linux]TitlePane.buttonInsets = 2,2,2,2 +[linux]TitlePane.buttonArc = 999 +[linux]TitlePane.buttonMaximizedHeight = -1 +[linux]TitlePane.buttonSymbolHeight = 8 +[linux]TitlePane.buttonsGap = 8 +[linux]TitlePane.buttonsMargins = 4,4,4,4 +[linux]TitlePane.buttonsFillVertically = false +[linux]TitlePane.small.buttonSize = 20,20 +[linux]TitlePane.small.buttonInsets = 1,1,1,1 +[linux]TitlePane.small.buttonSymbolHeight = 6 +[linux]TitlePane.small.buttonsGap = 4 +[linux]TitlePane.small.buttonsMargins = 2,2,2,2 +[linux]TitlePane.closeBackground = $?TitlePane.buttonBackground +[linux]TitlePane.closeInactiveBackground = $?TitlePane.buttonInactiveBackground +[linux]TitlePane.closeHoverBackground = $?TitlePane.buttonHoverBackground +[linux]TitlePane.closePressedBackground = $?TitlePane.buttonPressedBackground +[linux]TitlePane.closeHoverForeground = $?TitlePane.foreground +[linux]TitlePane.closePressedForeground = $?TitlePane.foreground + #---- ToggleButton ---- diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties index 272c965d..e36b35d8 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties @@ -347,8 +347,13 @@ TableHeader.bottomSeparatorColor = $TableHeader.separatorColor #---- TitlePane ---- TitlePane.embeddedForeground = lighten($TitlePane.foreground,35%) -TitlePane.buttonHoverBackground = darken($TitlePane.background,10%,derived) -TitlePane.buttonPressedBackground = darken($TitlePane.background,8%,derived) +TitlePane.buttonHoverBackground = darken($TitlePane.background,5%,derived) +TitlePane.buttonPressedBackground = darken($TitlePane.background,3%,derived) + +# Linux +[linux]TitlePane.buttonBackground = darken($TitlePane.background,5%,derived) +[linux]TitlePane.buttonHoverBackground = darken($TitlePane.background,10%,derived) +[linux]TitlePane.buttonPressedBackground = darken($TitlePane.background,15%,derived) #---- ToggleButton ---- diff --git a/flatlaf-extras/src/main/resources/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties b/flatlaf-extras/src/main/resources/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties index c1231de4..0e8836da 100644 --- a/flatlaf-extras/src/main/resources/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties +++ b/flatlaf-extras/src/main/resources/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties @@ -215,8 +215,14 @@ TableHeader.pressedForeground = TableHeader.foreground #---- TitlePane ---- +TitlePane.buttonBackground = TitlePane.background +TitlePane.buttonInactiveBackground = TitlePane.background TitlePane.buttonHoverBackground = TitlePane.background TitlePane.buttonPressedBackground = TitlePane.background +TitlePane.closeBackground = TitlePane.background +TitlePane.closeInactiveBackground = TitlePane.background +TitlePane.closeHoverBackground = TitlePane.background +TitlePane.closePressedBackground = TitlePane.background #---- ToggleButton ---- diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0-linux.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0-linux.txt index 8bc449d5..e0cdfd1d 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0-linux.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0-linux.txt @@ -45,8 +45,86 @@ #---- TitlePane ---- +- TitlePane.buttonArc 0 ++ TitlePane.buttonArc 999 + ++ TitlePane.buttonBackground #3c3f41 HSL 204 4 25 com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse) + +- TitlePane.buttonInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ++ TitlePane.buttonInsets 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] + +- TitlePane.buttonMaximizedHeight 22 ++ TitlePane.buttonMaximizedHeight -1 + +- TitlePane.buttonPressedBackground #3f4144 HSL 216 4 26 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) ++ TitlePane.buttonPressedBackground #55585c HSL 214 4 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(15% autoInverse) + +- TitlePane.buttonSize 44,30 javax.swing.plaf.DimensionUIResource [UI] ++ TitlePane.buttonSize 26,26 javax.swing.plaf.DimensionUIResource [UI] + +- TitlePane.buttonSymbolHeight 10 ++ TitlePane.buttonSymbolHeight 8 + +- TitlePane.buttonsFillVertically true ++ TitlePane.buttonsFillVertically false + +- TitlePane.buttonsGap 0 ++ TitlePane.buttonsGap 8 + +- TitlePane.buttonsMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ++ TitlePane.buttonsMargins 4,4,4,4 javax.swing.plaf.InsetsUIResource [UI] + ++ TitlePane.closeBackground #3c3f41 HSL 204 4 25 com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse) + +- TitlePane.closeHoverBackground #c42b1c HSL 5 75 44 javax.swing.plaf.ColorUIResource [UI] ++ TitlePane.closeHoverBackground #484c4f HSL 206 5 30 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) + +- TitlePane.closeHoverForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ++ TitlePane.closeHoverForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] + +- TitlePane.closeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] ++ TitlePane.closeIcon [lazy] 26,26 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] + +- TitlePane.closePressedBackground #c42b1ce6 90% HSLA 5 75 44 90 javax.swing.plaf.ColorUIResource [UI] ++ TitlePane.closePressedBackground #55585c HSL 214 4 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(15% autoInverse) + +- TitlePane.closePressedForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ++ TitlePane.closePressedForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] + +- TitlePane.iconifyIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] ++ TitlePane.iconifyIcon [lazy] 26,26 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] + +- TitlePane.maximizeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] ++ TitlePane.maximizeIcon [lazy] 26,26 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] + +- TitlePane.restoreIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowRestoreIcon [UI] ++ TitlePane.restoreIcon [lazy] 26,26 com.formdev.flatlaf.icons.FlatWindowRestoreIcon [UI] + ++ TitlePane.small.buttonInsets 1,1,1,1 javax.swing.plaf.InsetsUIResource [UI] + +- TitlePane.small.buttonSize 30,20 javax.swing.plaf.DimensionUIResource [UI] ++ TitlePane.small.buttonSize 20,20 javax.swing.plaf.DimensionUIResource [UI] + +- TitlePane.small.buttonSymbolHeight 8 ++ TitlePane.small.buttonSymbolHeight 6 + ++ TitlePane.small.buttonsGap 4 ++ TitlePane.small.buttonsMargins 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] + +- TitlePane.small.closeIcon [lazy] 30,20 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] ++ TitlePane.small.closeIcon [lazy] 20,20 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] + - TitlePane.small.font [active] Segoe UI plain 11 javax.swing.plaf.FontUIResource [UI] + TitlePane.small.font [active] Liberation Sans plain 14 javax.swing.plaf.FontUIResource [UI] + +- TitlePane.small.iconifyIcon [lazy] 30,20 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] ++ TitlePane.small.iconifyIcon [lazy] 20,20 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] + +- TitlePane.small.maximizeIcon [lazy] 30,20 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] ++ TitlePane.small.maximizeIcon [lazy] 20,20 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] + +- TitlePane.small.restoreIcon [lazy] 30,20 com.formdev.flatlaf.icons.FlatWindowRestoreIcon [UI] ++ TitlePane.small.restoreIcon [lazy] 20,20 com.formdev.flatlaf.icons.FlatWindowRestoreIcon [UI] - defaultFont Segoe UI plain 12 javax.swing.plaf.FontUIResource [UI] + defaultFont Liberation Sans plain 15 javax.swing.plaf.FontUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt index a8cf1890..ffbdd33a 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt @@ -1242,12 +1242,17 @@ TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI #---- TitlePane ---- TitlePane.background #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] -TitlePane.buttonHoverBackground #55585c HSL 214 4 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(15% autoInverse) +TitlePane.buttonArc 0 +TitlePane.buttonHoverBackground #484c4f HSL 206 5 30 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +TitlePane.buttonInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TitlePane.buttonMaximizedHeight 22 TitlePane.buttonMinimumWidth 30 -TitlePane.buttonPressedBackground #484c4f HSL 206 5 30 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +TitlePane.buttonPressedBackground #3f4144 HSL 216 4 26 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) TitlePane.buttonSize 44,30 javax.swing.plaf.DimensionUIResource [UI] TitlePane.buttonSymbolHeight 10 +TitlePane.buttonsFillVertically true +TitlePane.buttonsGap 0 +TitlePane.buttonsMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TitlePane.centerTitle false TitlePane.centerTitleIfMenuBarEmbedded true TitlePane.closeHoverBackground #c42b1c HSL 5 75 44 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0-linux.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0-linux.txt index 8bc449d5..d8837b5a 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0-linux.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0-linux.txt @@ -45,8 +45,89 @@ #---- TitlePane ---- +- TitlePane.buttonArc 0 ++ TitlePane.buttonArc 999 + ++ TitlePane.buttonBackground #f2f2f2 HSL 0 0 95 com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse) + +- TitlePane.buttonHoverBackground #f2f2f2 HSL 0 0 95 com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse) ++ TitlePane.buttonHoverBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) + +- TitlePane.buttonInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ++ TitlePane.buttonInsets 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] + +- TitlePane.buttonMaximizedHeight 22 ++ TitlePane.buttonMaximizedHeight -1 + +- TitlePane.buttonPressedBackground #f7f7f7 HSL 0 0 97 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) ++ TitlePane.buttonPressedBackground #d9d9d9 HSL 0 0 85 com.formdev.flatlaf.util.DerivedColor [UI] darken(15% autoInverse) + +- TitlePane.buttonSize 44,30 javax.swing.plaf.DimensionUIResource [UI] ++ TitlePane.buttonSize 26,26 javax.swing.plaf.DimensionUIResource [UI] + +- TitlePane.buttonSymbolHeight 10 ++ TitlePane.buttonSymbolHeight 8 + +- TitlePane.buttonsFillVertically true ++ TitlePane.buttonsFillVertically false + +- TitlePane.buttonsGap 0 ++ TitlePane.buttonsGap 8 + +- TitlePane.buttonsMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ++ TitlePane.buttonsMargins 4,4,4,4 javax.swing.plaf.InsetsUIResource [UI] + ++ TitlePane.closeBackground #f2f2f2 HSL 0 0 95 com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse) + +- TitlePane.closeHoverBackground #c42b1c HSL 5 75 44 javax.swing.plaf.ColorUIResource [UI] ++ TitlePane.closeHoverBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) + +- TitlePane.closeHoverForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ++ TitlePane.closeHoverForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] + +- TitlePane.closeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] ++ TitlePane.closeIcon [lazy] 26,26 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] + +- TitlePane.closePressedBackground #c42b1ce6 90% HSLA 5 75 44 90 javax.swing.plaf.ColorUIResource [UI] ++ TitlePane.closePressedBackground #d9d9d9 HSL 0 0 85 com.formdev.flatlaf.util.DerivedColor [UI] darken(15% autoInverse) + +- TitlePane.closePressedForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ++ TitlePane.closePressedForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] + +- TitlePane.iconifyIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] ++ TitlePane.iconifyIcon [lazy] 26,26 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] + +- TitlePane.maximizeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] ++ TitlePane.maximizeIcon [lazy] 26,26 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] + +- TitlePane.restoreIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowRestoreIcon [UI] ++ TitlePane.restoreIcon [lazy] 26,26 com.formdev.flatlaf.icons.FlatWindowRestoreIcon [UI] + ++ TitlePane.small.buttonInsets 1,1,1,1 javax.swing.plaf.InsetsUIResource [UI] + +- TitlePane.small.buttonSize 30,20 javax.swing.plaf.DimensionUIResource [UI] ++ TitlePane.small.buttonSize 20,20 javax.swing.plaf.DimensionUIResource [UI] + +- TitlePane.small.buttonSymbolHeight 8 ++ TitlePane.small.buttonSymbolHeight 6 + ++ TitlePane.small.buttonsGap 4 ++ TitlePane.small.buttonsMargins 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] + +- TitlePane.small.closeIcon [lazy] 30,20 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] ++ TitlePane.small.closeIcon [lazy] 20,20 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] + - TitlePane.small.font [active] Segoe UI plain 11 javax.swing.plaf.FontUIResource [UI] + TitlePane.small.font [active] Liberation Sans plain 14 javax.swing.plaf.FontUIResource [UI] + +- TitlePane.small.iconifyIcon [lazy] 30,20 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] ++ TitlePane.small.iconifyIcon [lazy] 20,20 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] + +- TitlePane.small.maximizeIcon [lazy] 30,20 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] ++ TitlePane.small.maximizeIcon [lazy] 20,20 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] + +- TitlePane.small.restoreIcon [lazy] 30,20 com.formdev.flatlaf.icons.FlatWindowRestoreIcon [UI] ++ TitlePane.small.restoreIcon [lazy] 20,20 com.formdev.flatlaf.icons.FlatWindowRestoreIcon [UI] - defaultFont Segoe UI plain 12 javax.swing.plaf.FontUIResource [UI] + defaultFont Liberation Sans plain 15 javax.swing.plaf.FontUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt index e366fe1d..df10280a 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt @@ -1247,12 +1247,17 @@ TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI #---- TitlePane ---- TitlePane.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] -TitlePane.buttonHoverBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +TitlePane.buttonArc 0 +TitlePane.buttonHoverBackground #f2f2f2 HSL 0 0 95 com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse) +TitlePane.buttonInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TitlePane.buttonMaximizedHeight 22 TitlePane.buttonMinimumWidth 30 -TitlePane.buttonPressedBackground #ebebeb HSL 0 0 92 com.formdev.flatlaf.util.DerivedColor [UI] darken(8% autoInverse) +TitlePane.buttonPressedBackground #f7f7f7 HSL 0 0 97 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) TitlePane.buttonSize 44,30 javax.swing.plaf.DimensionUIResource [UI] TitlePane.buttonSymbolHeight 10 +TitlePane.buttonsFillVertically true +TitlePane.buttonsGap 0 +TitlePane.buttonsMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TitlePane.centerTitle false TitlePane.centerTitleIfMenuBarEmbedded true TitlePane.closeHoverBackground #c42b1c HSL 5 75 44 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt index af6ef1bf..2c0a7d78 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt @@ -1252,12 +1252,17 @@ TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI #---- TitlePane ---- TitlePane.background #323232 HSL 0 0 20 javax.swing.plaf.ColorUIResource [UI] -TitlePane.buttonHoverBackground #585858 HSL 0 0 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(15% autoInverse) +TitlePane.buttonArc 0 +TitlePane.buttonHoverBackground #4c4c4c HSL 0 0 30 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +TitlePane.buttonInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TitlePane.buttonMaximizedHeight 22 TitlePane.buttonMinimumWidth 30 -TitlePane.buttonPressedBackground #4c4c4c HSL 0 0 30 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +TitlePane.buttonPressedBackground #414141 HSL 0 0 25 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) TitlePane.buttonSize 44,30 javax.swing.plaf.DimensionUIResource [UI] TitlePane.buttonSymbolHeight 10 +TitlePane.buttonsFillVertically true +TitlePane.buttonsGap 0 +TitlePane.buttonsMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TitlePane.centerTitle false TitlePane.centerTitleIfMenuBarEmbedded true TitlePane.closeHoverBackground #c42b1c HSL 5 75 44 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt index 6f03f111..688a0815 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt @@ -1256,12 +1256,17 @@ TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI #---- TitlePane ---- TitlePane.background #ececec HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] -TitlePane.buttonHoverBackground #d3d3d3 HSL 0 0 83 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +TitlePane.buttonArc 0 +TitlePane.buttonHoverBackground #dfdfdf HSL 0 0 87 com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse) +TitlePane.buttonInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TitlePane.buttonMaximizedHeight 22 TitlePane.buttonMinimumWidth 30 -TitlePane.buttonPressedBackground #d8d8d8 HSL 0 0 85 com.formdev.flatlaf.util.DerivedColor [UI] darken(8% autoInverse) +TitlePane.buttonPressedBackground #e4e4e4 HSL 0 0 89 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) TitlePane.buttonSize 44,30 javax.swing.plaf.DimensionUIResource [UI] TitlePane.buttonSymbolHeight 10 +TitlePane.buttonsFillVertically true +TitlePane.buttonsGap 0 +TitlePane.buttonsMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TitlePane.centerTitle false TitlePane.centerTitleIfMenuBarEmbedded true TitlePane.closeHoverBackground #c42b1c HSL 5 75 44 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt index 74a70884..ac997978 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt @@ -1293,17 +1293,34 @@ TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI TitlePane.background #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] TitlePane.borderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +TitlePane.buttonArc 0 +TitlePane.buttonBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +TitlePane.buttonForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +TitlePane.buttonHoverBackground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TitlePane.buttonHoverForeground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +TitlePane.buttonInactiveBackground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +TitlePane.buttonInactiveForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +TitlePane.buttonInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TitlePane.buttonMaximizedHeight 22 TitlePane.buttonMinimumWidth 30 +TitlePane.buttonPressedBackground #999999 HSL 0 0 60 javax.swing.plaf.ColorUIResource [UI] +TitlePane.buttonPressedForeground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] TitlePane.buttonSize 44,30 javax.swing.plaf.DimensionUIResource [UI] TitlePane.buttonSymbolHeight 10 +TitlePane.buttonsFillVertically true +TitlePane.buttonsGap 0 +TitlePane.buttonsMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TitlePane.centerTitle false TitlePane.centerTitleIfMenuBarEmbedded true -TitlePane.closeHoverBackground #c42b1c HSL 5 75 44 javax.swing.plaf.ColorUIResource [UI] -TitlePane.closeHoverForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeBackground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeHoverBackground #bb0000 HSL 0 100 37 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeHoverForeground #ff00ff HSL 300 100 50 javax.swing.plaf.ColorUIResource [UI] TitlePane.closeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] -TitlePane.closePressedBackground #c42b1ce6 90% HSLA 5 75 44 90 javax.swing.plaf.ColorUIResource [UI] -TitlePane.closePressedForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeInactiveBackground #dd0000 HSL 0 100 43 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeInactiveForeground #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closePressedBackground #990000 HSL 0 100 30 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closePressedForeground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] TitlePane.font [active] $defaultFont [UI] TitlePane.foreground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] TitlePane.icon [lazy] 16,16 sun.swing.ImageIconUIResource [UI] (sun.awt.image.ToolkitImage) diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java index fd30dffd..86bac7fe 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java @@ -102,9 +102,9 @@ public class UIDefaultsDump dump( FlatMacLightLaf.class.getName(), dir, false ); dump( FlatMacDarkLaf.class.getName(), dir, false ); - } - dump( FlatTestLaf.class.getName(), dir, false ); + dump( FlatTestLaf.class.getName(), dir, false ); + } // dump( MyBasicLookAndFeel.class.getName(), dir, false ); // dump( MetalLookAndFeel.class.getName(), dir, false ); @@ -184,8 +184,11 @@ public class UIDefaultsDump dump( dir, "", lookAndFeel, defaults, key -> !key.contains( "InputMap" ) ); if( lookAndFeel.getClass() == FlatLightLaf.class || !(lookAndFeel instanceof FlatLaf) ) { - dump( dir, "_InputMap", lookAndFeel, defaults, key -> key.contains( "InputMap" ) ); - dumpActionMaps( dir, "_ActionMap", lookAndFeel, defaults ); + if( SystemInfo.isWindows || SystemInfo.isMacOS ) + dump( dir, "_InputMap", lookAndFeel, defaults, key -> key.contains( "InputMap" ) ); + + if( SystemInfo.isWindows ) + dumpActionMaps( dir, "_ActionMap", lookAndFeel, defaults ); } } diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties index fe2d401a..50a6b72a 100644 --- a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties +++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties @@ -463,6 +463,24 @@ TitlePane.foreground = #00f TitlePane.inactiveForeground = #fff TitlePane.borderColor = #f00 +TitlePane.buttonBackground = #fff +TitlePane.buttonForeground = #000 +TitlePane.buttonInactiveBackground = #ddd +TitlePane.buttonInactiveForeground = #00f +TitlePane.buttonHoverBackground = #bbb +TitlePane.buttonHoverForeground = #0f0 +TitlePane.buttonPressedBackground = #999 +TitlePane.buttonPressedForeground = #f00 + +TitlePane.closeBackground = #f00 +TitlePane.closeForeground = #000 +TitlePane.closeInactiveBackground = #d00 +TitlePane.closeInactiveForeground = #0ff +TitlePane.closeHoverBackground = #b00 +TitlePane.closeHoverForeground = #f0f +TitlePane.closePressedBackground = #900 +TitlePane.closePressedForeground = #0f0 + #---- ToggleButton ---- diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt index a4fbca03..33747639 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt @@ -1057,17 +1057,32 @@ TextPane.selectionForeground TextPaneUI TitlePane.background TitlePane.borderColor +TitlePane.buttonArc +TitlePane.buttonBackground +TitlePane.buttonForeground TitlePane.buttonHoverBackground +TitlePane.buttonHoverForeground +TitlePane.buttonInactiveBackground +TitlePane.buttonInactiveForeground +TitlePane.buttonInsets TitlePane.buttonMaximizedHeight TitlePane.buttonMinimumWidth TitlePane.buttonPressedBackground +TitlePane.buttonPressedForeground TitlePane.buttonSize TitlePane.buttonSymbolHeight +TitlePane.buttonsFillVertically +TitlePane.buttonsGap +TitlePane.buttonsMargins TitlePane.centerTitle TitlePane.centerTitleIfMenuBarEmbedded +TitlePane.closeBackground +TitlePane.closeForeground TitlePane.closeHoverBackground TitlePane.closeHoverForeground TitlePane.closeIcon +TitlePane.closeInactiveBackground +TitlePane.closeInactiveForeground TitlePane.closePressedBackground TitlePane.closePressedForeground TitlePane.embeddedForeground @@ -1089,17 +1104,32 @@ TitlePane.showIcon TitlePane.showIconBesideTitle TitlePane.showIconInDialogs TitlePane.small.background +TitlePane.small.buttonArc +TitlePane.small.buttonBackground +TitlePane.small.buttonForeground TitlePane.small.buttonHoverBackground +TitlePane.small.buttonHoverForeground +TitlePane.small.buttonInactiveBackground +TitlePane.small.buttonInactiveForeground +TitlePane.small.buttonInsets TitlePane.small.buttonMaximizedHeight TitlePane.small.buttonMinimumWidth TitlePane.small.buttonPressedBackground +TitlePane.small.buttonPressedForeground TitlePane.small.buttonSize TitlePane.small.buttonSymbolHeight +TitlePane.small.buttonsFillVertically +TitlePane.small.buttonsGap +TitlePane.small.buttonsMargins TitlePane.small.centerTitle TitlePane.small.centerTitleIfMenuBarEmbedded +TitlePane.small.closeBackground +TitlePane.small.closeForeground TitlePane.small.closeHoverBackground TitlePane.small.closeHoverForeground TitlePane.small.closeIcon +TitlePane.small.closeInactiveBackground +TitlePane.small.closeInactiveForeground TitlePane.small.closePressedBackground TitlePane.small.closePressedForeground TitlePane.small.embeddedForeground From ed69049c08d0bb90fab8925fcb06095da3278680 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Thu, 13 Feb 2025 19:19:01 +0100 Subject: [PATCH 15/36] UIDefaultsDump: dump contrast ratios --- .../dumps/uidefaults/FlatDarculaLaf_1.8.0.txt | 6 + .../dumps/uidefaults/FlatDarkLaf_1.8.0.txt | 120 ++++++++++++++ .../uidefaults/FlatIntelliJLaf_1.8.0.txt | 6 + .../dumps/uidefaults/FlatLightLaf_1.8.0.txt | 120 ++++++++++++++ .../dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt | 121 ++++++++++++++ .../uidefaults/FlatMacLightLaf_1.8.0.txt | 121 ++++++++++++++ .../dumps/uidefaults/FlatTestLaf_1.8.0.txt | 155 ++++++++++++++++++ .../testing/uidefaults/UIDefaultsDump.java | 139 +++++++++++++++- 8 files changed, 783 insertions(+), 5 deletions(-) diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt index cba7171f..88face3c 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt @@ -113,3 +113,9 @@ - ToggleButton.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] + ToggleButton.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] + + +#---- contrast ratio: ProgressBar ---- + +- contrast ratio: ProgressBar.selectionForeground #bbbbbb #4c87c8 2.0 !!!!! ++ contrast ratio: ProgressBar.selectionForeground #3c3f41 #a2a2a2 4.2 !!! diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt index a8cf1890..c5c7528b 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt @@ -1630,3 +1630,123 @@ textText #bbbbbb HSL 0 0 73 javax.swing.plaf.Colo window #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] windowBorder #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] windowText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] + + +#-------- Contrast Ratios -------- + +# WCAG 2 Contrast Requirements: minimum 4.5; enhanced 7.0 +# https://webaim.org/articles/contrast/#sc143 + + +#-- activeTitleForeground -- +InternalFrame.activeTitleForeground #bbbbbb #242526 8.0 + +#-- disabledForeground -- +ComboBox.disabledForeground #8c8c8c #3c3f41 3.2 !!!! +Label.disabledForeground #8c8c8c #3c3f41 3.2 !!!! +Spinner.disabledForeground #8c8c8c #3c3f41 3.2 !!!! + +#-- disabledText -- +Button.disabledText #8c8c8c #3c3f41 3.2 !!!! +CheckBox.disabledText #8c8c8c #3c3f41 3.2 !!!! +RadioButton.disabledText #8c8c8c #3c3f41 3.2 !!!! +ToggleButton.disabledText #8c8c8c #3c3f41 3.2 !!!! + +#-- dropCellForeground -- +List.dropCellForeground #bbbbbb #3c588b 3.7 !!!! +Table.dropCellForeground #bbbbbb #3c588b 3.7 !!!! +Tree.dropCellForeground #bbbbbb #3c588b 3.7 !!!! + +#-- focusCellForeground -- +Table.focusCellForeground #bbbbbb #46494b 4.7 !!! + +#-- foreground -- +Button.foreground #bbbbbb #4e5052 4.2 !!! +Button.default.foreground #bbbbbb #375a81 3.7 !!!! +CheckBox.foreground #bbbbbb #3c3f41 5.5 !! +CheckBoxMenuItem.foreground #bbbbbb #303234 6.7 ! +ColorChooser.foreground #bbbbbb #3c3f41 5.5 !! +ComboBox.foreground #bbbbbb #46494b 4.7 !!! +DesktopIcon.foreground #bbbbbb #555c68 3.5 !!!! +EditorPane.foreground #bbbbbb #46494b 4.7 !!! +FormattedTextField.foreground #bbbbbb #46494b 4.7 !!! +JideButton.foreground #bbbbbb #4e5052 4.2 !!! +JideLabel.foreground #bbbbbb #3c3f41 5.5 !! +JideSplitButton.foreground #bbbbbb #4e5052 4.2 !!! +JideTabbedPane.foreground #bbbbbb #3c3f41 5.5 !! +Label.foreground #bbbbbb #3c3f41 5.5 !! +List.foreground #bbbbbb #46494b 4.7 !!! +Menu.foreground #bbbbbb #303234 6.7 ! +MenuBar.foreground #bbbbbb #303234 6.7 ! +MenuItem.foreground #bbbbbb #303234 6.7 ! +OptionPane.foreground #bbbbbb #3c3f41 5.5 !! +Panel.foreground #bbbbbb #3c3f41 5.5 !! +PasswordField.foreground #bbbbbb #46494b 4.7 !!! +PopupMenu.foreground #bbbbbb #303234 6.7 ! +RadioButton.foreground #bbbbbb #3c3f41 5.5 !! +RadioButtonMenuItem.foreground #bbbbbb #303234 6.7 ! +RootPane.foreground #bbbbbb #3c3f41 5.5 !! +Spinner.foreground #bbbbbb #46494b 4.7 !!! +TabbedPane.foreground #bbbbbb #3c3f41 5.5 !! +Table.foreground #bbbbbb #46494b 4.7 !!! +TableHeader.foreground #bbbbbb #46494b 4.7 !!! +TextArea.foreground #bbbbbb #46494b 4.7 !!! +TextField.foreground #bbbbbb #46494b 4.7 !!! +TextPane.foreground #bbbbbb #46494b 4.7 !!! +TitlePane.foreground #bbbbbb #303234 6.7 ! +ToggleButton.foreground #bbbbbb #4e5052 4.2 !!! +ToolTip.foreground #bbbbbb #1e2021 8.5 +Tree.foreground #bbbbbb #46494b 4.7 !!! + +#-- inactiveForeground -- +EditorPane.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! +FormattedTextField.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! +PasswordField.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! +TextArea.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! +TextField.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! +TextPane.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! +TitlePane.inactiveForeground #8c8c8c #303234 3.8 !!!! + +#-- inactiveTitleForeground -- +InternalFrame.inactiveTitleForeground #8c8c8c #303233 3.8 !!!! + +#-- monthStringForeground -- +JXMonthView.monthStringForeground #bbbbbb #4c5052 4.2 !!! + +#-- selectedForeground -- +Button.selectedForeground #bbbbbb #676a6c 2.8 !!!!! +ToggleButton.selectedForeground #bbbbbb #676a6c 2.8 !!!!! + +#-- selectionBackground -- +ProgressBar.selectionBackground #bbbbbb #505456 4.0 !!! + +#-- selectionForeground -- +CheckBoxMenuItem.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +ComboBox.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +EditorPane.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +FormattedTextField.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +List.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +Menu.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +MenuItem.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +PasswordField.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +ProgressBar.selectionForeground #bbbbbb #4c87c8 2.0 !!!!! +RadioButtonMenuItem.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +Table.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +TextArea.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +TextField.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +TextPane.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +Tree.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! + +#-- selectionInactiveForeground -- +List.selectionInactiveForeground #bbbbbb #0f2a3d 7.7 +Table.selectionInactiveForeground #bbbbbb #0f2a3d 7.7 +Tree.selectionInactiveForeground #bbbbbb #0f2a3d 7.7 + +#-- specialTitleForeground -- +TaskPane.specialTitleForeground #222222 #afafaf 7.3 + +#-- textForeground -- +Tree.textForeground #bbbbbb #46494b 4.7 !!! + +#-- titleForeground -- +JXTitledPanel.titleForeground #bbbbbb #4c5052 4.2 !!! diff --git a/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0.txt index 7b2d2fd2..4f3f4d0b 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0.txt @@ -133,3 +133,9 @@ - ToggleButton.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] + ToggleButton.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] + + +#---- contrast ratio: Button ---- + +- contrast ratio: Button.default.foreground #000000 #ffffff 21.0 ++ contrast ratio: Button.default.foreground #ffffff #478ac9 3.7 !!!! diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt index e366fe1d..90cda52f 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt @@ -1635,3 +1635,123 @@ textText #000000 HSL 0 0 0 javax.swing.plaf.Colo window #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] windowBorder #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] windowText #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] + + +#-------- Contrast Ratios -------- + +# WCAG 2 Contrast Requirements: minimum 4.5; enhanced 7.0 +# https://webaim.org/articles/contrast/#sc143 + + +#-- activeTitleForeground -- +InternalFrame.activeTitleForeground #000000 #ffffff 21.0 + +#-- disabledForeground -- +ComboBox.disabledForeground #8c8c8c #f2f2f2 3.0 !!!! +Label.disabledForeground #8c8c8c #f2f2f2 3.0 !!!! +Spinner.disabledForeground #8c8c8c #f2f2f2 3.0 !!!! + +#-- disabledText -- +Button.disabledText #8c8c8c #f2f2f2 3.0 !!!! +CheckBox.disabledText #8c8c8c #f2f2f2 3.0 !!!! +RadioButton.disabledText #8c8c8c #f2f2f2 3.0 !!!! +ToggleButton.disabledText #8c8c8c #f2f2f2 3.0 !!!! + +#-- dropCellForeground -- +List.dropCellForeground #ffffff #3f8fd9 3.4 !!!! +Table.dropCellForeground #ffffff #3f8fd9 3.4 !!!! +Tree.dropCellForeground #ffffff #3f8fd9 3.4 !!!! + +#-- focusCellForeground -- +Table.focusCellForeground #000000 #ffffff 21.0 + +#-- foreground -- +Button.foreground #000000 #ffffff 21.0 +Button.default.foreground #000000 #ffffff 21.0 +CheckBox.foreground #000000 #f2f2f2 18.8 +CheckBoxMenuItem.foreground #000000 #ffffff 21.0 +ColorChooser.foreground #000000 #f2f2f2 18.8 +ComboBox.foreground #000000 #ffffff 21.0 +DesktopIcon.foreground #000000 #c6d2dd 13.7 +EditorPane.foreground #000000 #ffffff 21.0 +FormattedTextField.foreground #000000 #ffffff 21.0 +JideButton.foreground #000000 #ffffff 21.0 +JideLabel.foreground #000000 #f2f2f2 18.8 +JideSplitButton.foreground #000000 #ffffff 21.0 +JideTabbedPane.foreground #000000 #f2f2f2 18.8 +Label.foreground #000000 #f2f2f2 18.8 +List.foreground #000000 #ffffff 21.0 +Menu.foreground #000000 #ffffff 21.0 +MenuBar.foreground #000000 #ffffff 21.0 +MenuItem.foreground #000000 #ffffff 21.0 +OptionPane.foreground #000000 #f2f2f2 18.8 +Panel.foreground #000000 #f2f2f2 18.8 +PasswordField.foreground #000000 #ffffff 21.0 +PopupMenu.foreground #000000 #ffffff 21.0 +RadioButton.foreground #000000 #f2f2f2 18.8 +RadioButtonMenuItem.foreground #000000 #ffffff 21.0 +RootPane.foreground #000000 #f2f2f2 18.8 +Spinner.foreground #000000 #ffffff 21.0 +TabbedPane.foreground #000000 #f2f2f2 18.8 +Table.foreground #000000 #ffffff 21.0 +TableHeader.foreground #000000 #ffffff 21.0 +TextArea.foreground #000000 #ffffff 21.0 +TextField.foreground #000000 #ffffff 21.0 +TextPane.foreground #000000 #ffffff 21.0 +TitlePane.foreground #000000 #ffffff 21.0 +ToggleButton.foreground #000000 #ffffff 21.0 +ToolTip.foreground #000000 #fafafa 20.1 +Tree.foreground #000000 #ffffff 21.0 + +#-- inactiveForeground -- +EditorPane.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! +FormattedTextField.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! +PasswordField.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! +TextArea.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! +TextField.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! +TextPane.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! +TitlePane.inactiveForeground #8c8c8c #ffffff 3.4 !!!! + +#-- inactiveTitleForeground -- +InternalFrame.inactiveTitleForeground #8c8c8c #fafafa 3.2 !!!! + +#-- monthStringForeground -- +JXMonthView.monthStringForeground #000000 #dfdfdf 15.8 + +#-- selectedForeground -- +Button.selectedForeground #000000 #cccccc 13.1 +ToggleButton.selectedForeground #000000 #cccccc 13.1 + +#-- selectionBackground -- +ProgressBar.selectionBackground #000000 #d1d1d1 13.8 + +#-- selectionForeground -- +CheckBoxMenuItem.selectionForeground #ffffff #2675bf 4.8 !!! +ComboBox.selectionForeground #ffffff #2675bf 4.8 !!! +EditorPane.selectionForeground #ffffff #2675bf 4.8 !!! +FormattedTextField.selectionForeground #ffffff #2675bf 4.8 !!! +List.selectionForeground #ffffff #2675bf 4.8 !!! +Menu.selectionForeground #ffffff #2675bf 4.8 !!! +MenuItem.selectionForeground #ffffff #2675bf 4.8 !!! +PasswordField.selectionForeground #ffffff #2675bf 4.8 !!! +ProgressBar.selectionForeground #ffffff #2285e1 3.8 !!!! +RadioButtonMenuItem.selectionForeground #ffffff #2675bf 4.8 !!! +Table.selectionForeground #ffffff #2675bf 4.8 !!! +TextArea.selectionForeground #ffffff #2675bf 4.8 !!! +TextField.selectionForeground #ffffff #2675bf 4.8 !!! +TextPane.selectionForeground #ffffff #2675bf 4.8 !!! +Tree.selectionForeground #ffffff #2675bf 4.8 !!! + +#-- selectionInactiveForeground -- +List.selectionInactiveForeground #000000 #d3d3d3 14.0 +Table.selectionInactiveForeground #000000 #d3d3d3 14.0 +Tree.selectionInactiveForeground #000000 #d3d3d3 14.0 + +#-- specialTitleForeground -- +TaskPane.specialTitleForeground #222222 #afafaf 7.3 + +#-- textForeground -- +Tree.textForeground #000000 #ffffff 21.0 + +#-- titleForeground -- +JXTitledPanel.titleForeground #222222 #dfdfdf 11.9 diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt index af6ef1bf..fdd8ff3f 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt @@ -1640,3 +1640,124 @@ textText #dddddd HSL 0 0 87 javax.swing.plaf.Colo window #1e1e1e HSL 0 0 12 javax.swing.plaf.ColorUIResource [UI] windowBorder #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] windowText #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] + + +#-------- Contrast Ratios -------- + +# WCAG 2 Contrast Requirements: minimum 4.5; enhanced 7.0 +# https://webaim.org/articles/contrast/#sc143 + + +#-- activeTitleForeground -- +InternalFrame.activeTitleForeground #dddddd #040404 15.1 + +#-- disabledForeground -- +ComboBox.disabledForeground #9a9a9a #232323 5.6 !! +Label.disabledForeground #9a9a9a #1e1e1e 5.9 !! +Spinner.disabledForeground #9a9a9a #232323 5.6 !! + +#-- disabledText -- +Button.disabledText #9a9a9a #3d3d3d 3.9 !!!! +CheckBox.disabledText #9a9a9a #1e1e1e 5.9 !! +RadioButton.disabledText #9a9a9a #1e1e1e 5.9 !! +ToggleButton.disabledText #9a9a9a #3d3d3d 3.9 !!!! + +#-- dropCellForeground -- +List.dropCellForeground #ffffff #003f99 9.7 +Table.dropCellForeground #ffffff #003f99 9.7 +Tree.dropCellForeground #ffffff #003f99 9.7 + +#-- focusCellForeground -- +Table.focusCellForeground #dddddd #282828 10.9 + +#-- foreground -- +Button.foreground #dddddd #565656 5.4 !! +Button.default.foreground #dddddd #007aff 3.0 !!!! +CheckBox.foreground #dddddd #1e1e1e 12.3 +CheckBoxMenuItem.foreground #dddddd #323232 9.4 +ColorChooser.foreground #dddddd #1e1e1e 12.3 +ComboBox.foreground #dddddd #565656 5.4 !! +DesktopIcon.foreground #dddddd #555c68 5.0 !! +EditorPane.foreground #dddddd #282828 10.9 +FormattedTextField.foreground #dddddd #282828 10.9 +JideButton.foreground #dddddd #565656 5.4 !! +JideLabel.foreground #dddddd #1e1e1e 12.3 +JideSplitButton.foreground #dddddd #565656 5.4 !! +JideTabbedPane.foreground #dddddd #1e1e1e 12.3 +Label.foreground #dddddd #1e1e1e 12.3 +List.foreground #dddddd #282828 10.9 +Menu.foreground #dddddd #323232 9.4 +MenuBar.foreground #dddddd #323232 9.4 +MenuItem.foreground #dddddd #323232 9.4 +OptionPane.foreground #dddddd #1e1e1e 12.3 +Panel.foreground #dddddd #1e1e1e 12.3 +PasswordField.foreground #dddddd #282828 10.9 +PopupMenu.foreground #dddddd #323232 9.4 +RadioButton.foreground #dddddd #1e1e1e 12.3 +RadioButtonMenuItem.foreground #dddddd #323232 9.4 +RootPane.foreground #dddddd #1e1e1e 12.3 +Spinner.foreground #dddddd #282828 10.9 +TabbedPane.foreground #dddddd #1e1e1e 12.3 +Table.foreground #dddddd #282828 10.9 +TableHeader.foreground #dddddd #282828 10.9 +TextArea.foreground #dddddd #282828 10.9 +TextField.foreground #dddddd #282828 10.9 +TextPane.foreground #dddddd #282828 10.9 +TitlePane.foreground #dddddd #323232 9.4 +ToggleButton.foreground #dddddd #565656 5.4 !! +ToolTip.foreground #dddddd #0f0f0f 14.1 +Tree.foreground #dddddd #282828 10.9 + +#-- inactiveForeground -- +EditorPane.inactiveForeground #9a9a9a #232323 5.6 !! +FormattedTextField.inactiveForeground #9a9a9a #232323 5.6 !! +PasswordField.inactiveForeground #9a9a9a #232323 5.6 !! +TextArea.inactiveForeground #9a9a9a #232323 5.6 !! +TextField.inactiveForeground #9a9a9a #232323 5.6 !! +TextPane.inactiveForeground #9a9a9a #232323 5.6 !! +TitlePane.inactiveForeground #9a9a9a #323232 4.6 !!! + +#-- inactiveTitleForeground -- +InternalFrame.inactiveTitleForeground #9a9a9a #111111 6.7 ! + +#-- monthStringForeground -- +JXMonthView.monthStringForeground #dddddd #4c5052 6.0 ! + +#-- selectedForeground -- +Button.selectedForeground #dddddd #707070 3.6 !!!! +ToggleButton.selectedForeground #dddddd #898989 2.6 !!!!! + +#-- selectionBackground -- +ProgressBar.selectionBackground #dddddd #323232 9.4 + +#-- selectionForeground -- +CheckBoxMenuItem.selectionForeground #ffffff #1458b8 6.7 ! +ComboBox.selectionForeground #ffffff #1458b8 6.7 ! +EditorPane.selectionForeground #ffffff #3d6490 6.1 ! +FormattedTextField.selectionForeground #ffffff #3d6490 6.1 ! +List.selectionForeground #ffffff #0054cc 6.7 ! +Menu.selectionForeground #ffffff #1458b8 6.7 ! +MenuBar.selectionForeground #dddddd #585858 5.2 !! +MenuItem.selectionForeground #ffffff #1458b8 6.7 ! +PasswordField.selectionForeground #ffffff #3d6490 6.1 ! +ProgressBar.selectionForeground #dddddd #007aff 3.0 !!!! +RadioButtonMenuItem.selectionForeground #ffffff #1458b8 6.7 ! +Table.selectionForeground #ffffff #0054cc 6.7 ! +TextArea.selectionForeground #ffffff #3d6490 6.1 ! +TextField.selectionForeground #ffffff #3d6490 6.1 ! +TextPane.selectionForeground #ffffff #3d6490 6.1 ! +Tree.selectionForeground #ffffff #0054cc 6.7 ! + +#-- selectionInactiveForeground -- +List.selectionInactiveForeground #dddddd #464646 6.9 ! +Table.selectionInactiveForeground #dddddd #464646 6.9 ! +Tree.selectionInactiveForeground #dddddd #464646 6.9 ! + +#-- specialTitleForeground -- +TaskPane.specialTitleForeground #222222 #afafaf 7.3 + +#-- textForeground -- +Tree.textForeground #dddddd #282828 10.9 + +#-- titleForeground -- +JXTitledPanel.titleForeground #dddddd #4c5052 6.0 ! diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt index 6f03f111..51fa1dad 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt @@ -1644,3 +1644,124 @@ textText #262626 HSL 0 0 15 javax.swing.plaf.Colo window #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] windowBorder #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] windowText #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] + + +#-------- Contrast Ratios -------- + +# WCAG 2 Contrast Requirements: minimum 4.5; enhanced 7.0 +# https://webaim.org/articles/contrast/#sc143 + + +#-- activeTitleForeground -- +InternalFrame.activeTitleForeground #262626 #ffffff 15.1 + +#-- disabledForeground -- +ComboBox.disabledForeground #b6b6b6 #fafafa 1.9 !!!!!! +Label.disabledForeground #b6b6b6 #f6f6f6 1.9 !!!!!! +Spinner.disabledForeground #b6b6b6 #fafafa 1.9 !!!!!! + +#-- disabledText -- +Button.disabledText #b6b6b6 #fafafa 1.9 !!!!!! +CheckBox.disabledText #b6b6b6 #f6f6f6 1.9 !!!!!! +RadioButton.disabledText #b6b6b6 #f6f6f6 1.9 !!!!!! +ToggleButton.disabledText #b6b6b6 #fafafa 1.9 !!!!!! + +#-- dropCellForeground -- +List.dropCellForeground #ffffff #1a79ff 4.0 !!! +Table.dropCellForeground #ffffff #1a79ff 4.0 !!! +Tree.dropCellForeground #ffffff #1a79ff 4.0 !!! + +#-- focusCellForeground -- +Table.focusCellForeground #262626 #ffffff 15.1 + +#-- foreground -- +Button.foreground #262626 #ffffff 15.1 +Button.default.foreground #f6f6f6 #007aff 3.7 !!!! +CheckBox.foreground #262626 #f6f6f6 14.0 +CheckBoxMenuItem.foreground #262626 #ececec 12.8 +ColorChooser.foreground #262626 #f6f6f6 14.0 +ComboBox.foreground #262626 #ffffff 15.1 +DesktopIcon.foreground #262626 #c6d2dd 9.8 +EditorPane.foreground #262626 #ffffff 15.1 +FormattedTextField.foreground #262626 #ffffff 15.1 +JideButton.foreground #262626 #ffffff 15.1 +JideLabel.foreground #262626 #f6f6f6 14.0 +JideSplitButton.foreground #262626 #ffffff 15.1 +JideTabbedPane.foreground #262626 #f6f6f6 14.0 +Label.foreground #262626 #f6f6f6 14.0 +List.foreground #262626 #ffffff 15.1 +Menu.foreground #262626 #ececec 12.8 +MenuBar.foreground #262626 #ececec 12.8 +MenuItem.foreground #262626 #ececec 12.8 +OptionPane.foreground #262626 #f6f6f6 14.0 +Panel.foreground #262626 #f6f6f6 14.0 +PasswordField.foreground #262626 #ffffff 15.1 +PopupMenu.foreground #262626 #ececec 12.8 +RadioButton.foreground #262626 #f6f6f6 14.0 +RadioButtonMenuItem.foreground #262626 #ececec 12.8 +RootPane.foreground #262626 #f6f6f6 14.0 +Spinner.foreground #262626 #ffffff 15.1 +TabbedPane.foreground #262626 #f6f6f6 14.0 +Table.foreground #262626 #ffffff 15.1 +TableHeader.foreground #262626 #ffffff 15.1 +TextArea.foreground #262626 #ffffff 15.1 +TextField.foreground #262626 #ffffff 15.1 +TextPane.foreground #262626 #ffffff 15.1 +TitlePane.foreground #262626 #ececec 12.8 +ToggleButton.foreground #262626 #ffffff 15.1 +ToolTip.foreground #262626 #fefefe 15.0 +Tree.foreground #262626 #ffffff 15.1 + +#-- inactiveForeground -- +EditorPane.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! +FormattedTextField.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! +PasswordField.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! +TextArea.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! +TextField.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! +TextPane.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! +TitlePane.inactiveForeground #b6b6b6 #ececec 1.7 !!!!!! + +#-- inactiveTitleForeground -- +InternalFrame.inactiveTitleForeground #b6b6b6 #fafafa 1.9 !!!!!! + +#-- monthStringForeground -- +JXMonthView.monthStringForeground #262626 #dfdfdf 11.4 + +#-- selectedForeground -- +Button.selectedForeground #262626 #cccccc 9.4 +ToggleButton.selectedForeground #262626 #cccccc 9.4 + +#-- selectionBackground -- +ProgressBar.selectionBackground #262626 #e9e9e9 12.5 + +#-- selectionForeground -- +CheckBoxMenuItem.selectionForeground #ffffff #3d9aff 2.9 !!!!! +ComboBox.selectionForeground #ffffff #3d9aff 2.9 !!!!! +EditorPane.selectionForeground #262626 #b3d7ff 10.1 +FormattedTextField.selectionForeground #262626 #b3d7ff 10.1 +List.selectionForeground #ffffff #005fe6 5.6 !! +Menu.selectionForeground #ffffff #3d9aff 2.9 !!!!! +MenuBar.selectionForeground #262626 #c6c6c6 8.9 +MenuItem.selectionForeground #ffffff #3d9aff 2.9 !!!!! +PasswordField.selectionForeground #262626 #b3d7ff 10.1 +ProgressBar.selectionForeground #ffffff #007aff 4.0 !!! +RadioButtonMenuItem.selectionForeground #ffffff #3d9aff 2.9 !!!!! +Table.selectionForeground #ffffff #005fe6 5.6 !! +TextArea.selectionForeground #262626 #b3d7ff 10.1 +TextField.selectionForeground #262626 #b3d7ff 10.1 +TextPane.selectionForeground #262626 #b3d7ff 10.1 +Tree.selectionForeground #ffffff #005fe6 5.6 !! + +#-- selectionInactiveForeground -- +List.selectionInactiveForeground #262626 #dcdcdc 11.0 +Table.selectionInactiveForeground #262626 #dcdcdc 11.0 +Tree.selectionInactiveForeground #262626 #dcdcdc 11.0 + +#-- specialTitleForeground -- +TaskPane.specialTitleForeground #222222 #afafaf 7.3 + +#-- textForeground -- +Tree.textForeground #262626 #ffffff 15.1 + +#-- titleForeground -- +JXTitledPanel.titleForeground #222222 #dfdfdf 11.9 diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt index 74a70884..82b7c47e 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt @@ -1689,3 +1689,158 @@ textText #ff0000 HSL 0 100 50 javax.swing.plaf.Colo window #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] windowBorder #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] windowText #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] + + +#-------- Contrast Ratios -------- + +# WCAG 2 Contrast Requirements: minimum 4.5; enhanced 7.0 +# https://webaim.org/articles/contrast/#sc143 + + +#-- activeTitleForeground -- +InternalFrame.activeTitleForeground #ffaaaa #880000 5.7 !! + +#-- disabledForeground -- +ComboBox.disabledForeground #000088 #e0e0e0 11.7 +Label.disabledForeground #000088 #ccffcc 13.8 +Spinner.disabledForeground #000088 #e0e0e0 11.7 + +#-- disabledSelectedForeground -- +Button.disabledSelectedForeground #ffcccc #112233 11.4 +Button.toolbar.disabledSelectedForeground #886666 #cccccc 3.2 !!!! +ToggleButton.disabledSelectedForeground #ffffff #44dd44 1.8 !!!!!! +ToggleButton.toolbar.disabledSelectedForeground #886666 #cccccc 3.2 !!!! + +#-- disabledText -- +Button.disabledText #000088 #e0e0e0 11.7 +CheckBox.disabledText #000088 #ccffcc 13.8 +RadioButton.disabledText #000088 #ccffcc 13.8 +ToggleButton.disabledText #000088 #e0e0e0 11.7 + +#-- dropCellForeground -- +List.dropCellForeground #00ff00 #ff0000 2.9 !!!!! +Table.dropCellForeground #00ff00 #ff0000 2.9 !!!!! +Tree.dropCellForeground #00ff00 #ff0000 2.9 !!!!! + +#-- focusCellForeground -- +Table.focusCellForeground #ff0000 #fffff0 4.0 !!! + +#-- focusForeground -- +ToggleButton.tab.focusForeground #008800 #dddddd 3.4 !!!! + +#-- focusedForeground -- +Button.focusedForeground #0000ff #00ffff 6.9 ! +Button.default.focusedForeground #0000ff #00ffff 6.9 ! +ToggleButton.focusedForeground #0000ff #00ffff 6.9 ! + +#-- foreground -- +Button.foreground #ff0000 #ccffcc 3.6 !!!! +CheckBox.foreground #ff0000 #ccffcc 3.6 !!!! +CheckBoxMenuItem.foreground #ff0000 #ffffff 4.0 !!! +ColorChooser.foreground #ff0000 #ccffcc 3.6 !!!! +ComboBox.foreground #ff0000 #ffffff 4.0 !!! +DesktopIcon.foreground #ff0000 #44ffda 3.2 !!!! +EditorPane.foreground #ff0000 #ffffff 4.0 !!! +FormattedTextField.foreground #ff0000 #ffffff 4.0 !!! +JideButton.foreground #ff0000 #ccffcc 3.6 !!!! +JideLabel.foreground #008800 #ccffcc 4.1 !!! +JideSplitButton.foreground #ff0000 #ccffcc 3.6 !!!! +JideTabbedPane.foreground #ff0000 #ccffcc 3.6 !!!! +Label.foreground #008800 #ccffcc 4.1 !!! +List.foreground #ff0000 #f0ffff 3.9 !!!! +Menu.foreground #ff0000 #ffffff 4.0 !!! +MenuBar.foreground #ff0000 #ffffff 4.0 !!! +MenuItem.foreground #ff0000 #ffffff 4.0 !!! +OptionPane.foreground #ff0000 #ffdddd 3.2 !!!! +Panel.foreground #ff0000 #ccffcc 3.6 !!!! +PasswordField.foreground #ff0000 #ffffff 4.0 !!! +PopupMenu.foreground #ff0000 #ffffff 4.0 !!! +RadioButton.foreground #ff0000 #ccffcc 3.6 !!!! +RadioButtonMenuItem.foreground #ff0000 #ffffff 4.0 !!! +RootPane.foreground #ff0000 #ccffcc 3.6 !!!! +Spinner.foreground #ff0000 #ffffff 4.0 !!! +TabbedPane.foreground #ff0000 #ccffcc 3.6 !!!! +Table.foreground #ff0000 #fffff0 4.0 !!! +TableHeader.foreground #ffffff #4444ff 6.0 ! +TextArea.foreground #ff0000 #ffffff 4.0 !!! +TextField.foreground #ff0000 #ffffff 4.0 !!! +TextPane.foreground #ff0000 #ffffff 4.0 !!! +TitlePane.foreground #0000ff #00ff00 6.3 ! +ToggleButton.foreground #ff0000 #ddddff 3.0 !!!! +ToolTip.foreground #ff0000 #eeeeff 3.5 !!!! +Tree.foreground #ff0000 #fff0ff 3.6 !!!! + +#-- hoverForeground -- +Button.hoverForeground #0000ff #ffff00 8.0 +Button.default.hoverForeground #0000ff #ffff00 8.0 +Button.toolbar.hoverForeground #000000 #ffffff 21.0 +TableHeader.hoverForeground #e6e6e6 #1111ff 6.6 ! +ToggleButton.hoverForeground #0000ff #ffff00 8.0 +ToggleButton.tab.hoverForeground #0000ff #eeeeee 7.4 +ToggleButton.toolbar.hoverForeground #000000 #ffffff 21.0 + +#-- inactiveForeground -- +EditorPane.inactiveForeground #000088 #e0e0e0 11.7 +FormattedTextField.inactiveForeground #000088 #e0e0e0 11.7 +PasswordField.inactiveForeground #000088 #e0e0e0 11.7 +TextArea.inactiveForeground #000088 #e0e0e0 11.7 +TextField.inactiveForeground #000088 #e0e0e0 11.7 +TextPane.inactiveForeground #000088 #e0e0e0 11.7 +TitlePane.inactiveForeground #ffffff #008800 4.6 !!! + +#-- inactiveTitleForeground -- +InternalFrame.inactiveTitleForeground #aaffaa #008800 3.9 !!!! + +#-- monthStringForeground -- +JXMonthView.monthStringForeground #0000ff #00ff00 6.3 ! + +#-- pressedForeground -- +Button.pressedForeground #0080ff #ffc800 2.4 !!!!! +Button.default.pressedForeground #0080ff #ffc800 2.4 !!!!! +Button.toolbar.pressedForeground #666666 #eeeeee 4.9 !!! +TableHeader.pressedForeground #cccccc #0000dd 6.4 ! +ToggleButton.pressedForeground #0080ff #ffc800 2.4 !!!!! +ToggleButton.toolbar.pressedForeground #666666 #eeeeee 4.9 !!! + +#-- selectedForeground -- +Button.selectedForeground #332211 #ffbbbb 9.5 +Button.toolbar.selectedForeground #880000 #dddddd 7.6 +TabbedPane.selectedForeground #0000ff #00ff00 6.3 ! +ToggleButton.selectedForeground #000000 #44ff44 15.6 +ToggleButton.tab.selectedForeground #ffffff #008800 4.6 !!! +ToggleButton.toolbar.selectedForeground #880000 #dddddd 7.6 + +#-- selectionBackground -- +ProgressBar.selectionBackground #000088 #88ff88 12.3 + +#-- selectionForeground -- +CheckBoxMenuItem.selectionForeground #ffff00 #00aa00 2.9 !!!!! +ComboBox.selectionForeground #ffff00 #00aa00 2.9 !!!!! +EditorPane.selectionForeground #ffff00 #00aa00 2.9 !!!!! +FormattedTextField.selectionForeground #ffff00 #00aa00 2.9 !!!!! +List.selectionForeground #ffff00 #00aa00 2.9 !!!!! +Menu.selectionForeground #ffff00 #00aa00 2.9 !!!!! +MenuBar.selectionForeground #00ff00 #ff0000 2.9 !!!!! +MenuItem.selectionForeground #ffff00 #00aa00 2.9 !!!!! +PasswordField.selectionForeground #ffff00 #00aa00 2.9 !!!!! +ProgressBar.selectionForeground #ff0000 #737373 1.2 !!!!!! +RadioButtonMenuItem.selectionForeground #ffff00 #00aa00 2.9 !!!!! +Table.selectionForeground #ffff00 #00aa00 2.9 !!!!! +TextArea.selectionForeground #ffff00 #00aa00 2.9 !!!!! +TextField.selectionForeground #ffff00 #00aa00 2.9 !!!!! +TextPane.selectionForeground #ffff00 #00aa00 2.9 !!!!! +Tree.selectionForeground #ffff00 #00aa00 2.9 !!!!! + +#-- selectionInactiveForeground -- +List.selectionInactiveForeground #ffffff #888888 3.5 !!!! +Table.selectionInactiveForeground #ffffff #888888 3.5 !!!! +Tree.selectionInactiveForeground #ffffff #888888 3.5 !!!! + +#-- specialTitleForeground -- +TaskPane.specialTitleForeground #444444 #00ffff 7.8 + +#-- textForeground -- +Tree.textForeground #ff0000 #fff0ff 3.6 !!!! + +#-- titleForeground -- +JXTitledPanel.titleForeground #ff00ff #ffff00 2.9 !!!!! diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java index fd30dffd..b0ac8641 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java @@ -38,6 +38,7 @@ import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; @@ -45,6 +46,7 @@ import java.util.Map; import java.util.Objects; import java.util.Properties; import java.util.TreeSet; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Predicate; import javax.swing.*; import javax.swing.UIDefaults.ActiveValue; @@ -63,6 +65,7 @@ import com.formdev.flatlaf.testing.FlatTestLaf; import com.formdev.flatlaf.themes.*; import com.formdev.flatlaf.ui.FlatLineBorder; import com.formdev.flatlaf.ui.FlatUIUtils; +import com.formdev.flatlaf.util.ColorFunctions; import com.formdev.flatlaf.util.ColorFunctions.ColorFunction; import com.jidesoft.plaf.LookAndFeelFactory; import com.formdev.flatlaf.util.DerivedColor; @@ -181,20 +184,20 @@ public class UIDefaultsDump // the lazy color InternalFrame.closeHoverBackground is resolved) defaults = (UIDefaults) defaults.clone(); - dump( dir, "", lookAndFeel, defaults, key -> !key.contains( "InputMap" ) ); + dump( dir, "", lookAndFeel, defaults, key -> !key.contains( "InputMap" ), true ); if( lookAndFeel.getClass() == FlatLightLaf.class || !(lookAndFeel instanceof FlatLaf) ) { - dump( dir, "_InputMap", lookAndFeel, defaults, key -> key.contains( "InputMap" ) ); + dump( dir, "_InputMap", lookAndFeel, defaults, key -> key.contains( "InputMap" ), false ); dumpActionMaps( dir, "_ActionMap", lookAndFeel, defaults ); } } private static void dump( File dir, String nameSuffix, - LookAndFeel lookAndFeel, UIDefaults defaults, Predicate keyFilter ) + LookAndFeel lookAndFeel, UIDefaults defaults, Predicate keyFilter, boolean contrastRatios ) { // dump to string StringWriter stringWriter = new StringWriter( 100000 ); - new UIDefaultsDump( lookAndFeel, defaults ).dump( new PrintWriter( stringWriter ), keyFilter ); + new UIDefaultsDump( lookAndFeel, defaults ).dump( new PrintWriter( stringWriter ), keyFilter, contrastRatios ); String name = lookAndFeel instanceof MyBasicLookAndFeel ? BasicLookAndFeel.class.getSimpleName() @@ -354,12 +357,15 @@ public class UIDefaultsDump Map defaults = new LinkedHashMap<>(); try( BufferedReader reader = new BufferedReader( in ) ) { String lastKey = null; + boolean inContrastRatios = false; String line; while( (line = reader.readLine()) != null ) { String trimmedLine = line.trim(); if( trimmedLine.isEmpty() || trimmedLine.startsWith( "#" ) ) { lastKey = null; + if( trimmedLine.contains( "#-------- Contrast Ratios --------" ) ) + inContrastRatios = true; continue; } @@ -374,6 +380,8 @@ public class UIDefaultsDump String key = line.substring( 0, sep ); String value = line.substring( sep ); + if( inContrastRatios ) + key = "contrast ratio: " + key; defaults.put( key, value ); lastKey = key; @@ -403,7 +411,7 @@ public class UIDefaultsDump out.printf( "OS %s%n", System.getProperty( "os.name" ) ); } - private void dump( PrintWriter out, Predicate keyFilter ) { + private void dump( PrintWriter out, Predicate keyFilter, boolean contrastRatios ) { dumpHeader( out ); defaults.entrySet().stream() @@ -428,6 +436,9 @@ public class UIDefaultsDump dumpValue( out, strKey, value ); out.println(); } ); + + if( contrastRatios ) + dumpContrastRatios( out ); } private void dumpActionMaps( PrintWriter out ) { @@ -829,6 +840,124 @@ public class UIDefaultsDump return new Color( newColor.getRGB(), true ); } + private void dumpContrastRatios( PrintWriter out ) { + out.printf( "%n%n#-------- Contrast Ratios --------%n%n" ); + out.println( "# WCAG 2 Contrast Requirements: minimum 4.5; enhanced 7.0" ); + out.println( "# https://webaim.org/articles/contrast/#sc143" ); + out.println(); + + HashMap fg2bgMap = new HashMap<>(); + defaults.keySet().stream() + .filter( key -> key instanceof String && ((String)key).endsWith( "ackground" ) ) + .map( key -> (String) key ) + .forEach( bgKey -> { + String fgKey = bgKey.replace( "Background", "Foreground" ).replace( "background", "foreground" ); + fg2bgMap.put( fgKey, bgKey ); + } ); + + // special cases + fg2bgMap.remove( "Button.disabledForeground" ); + fg2bgMap.put( "Button.disabledText", "Button.disabledBackground" ); + fg2bgMap.remove( "ToggleButton.disabledForeground" ); + fg2bgMap.put( "ToggleButton.disabledText", "ToggleButton.disabledBackground" ); + fg2bgMap.put( "CheckBox.foreground", "Panel.background" ); + fg2bgMap.put( "CheckBox.disabledText", "Panel.background" ); + fg2bgMap.put( "Label.foreground", "Panel.background" ); + fg2bgMap.put( "Label.disabledForeground", "Panel.background" ); + fg2bgMap.remove( "ProgressBar.foreground" ); + fg2bgMap.put( "ProgressBar.selectionForeground", "ProgressBar.foreground" ); + fg2bgMap.put( "ProgressBar.selectionBackground", "ProgressBar.background" ); + fg2bgMap.put( "RadioButton.foreground", "Panel.background" ); + fg2bgMap.put( "RadioButton.disabledText", "Panel.background" ); + fg2bgMap.remove( "ScrollBar.foreground" ); + fg2bgMap.remove( "ScrollBar.hoverButtonForeground" ); + fg2bgMap.remove( "ScrollBar.pressedButtonForeground" ); + fg2bgMap.remove( "ScrollPane.foreground" ); + fg2bgMap.remove( "Separator.foreground" ); + fg2bgMap.remove( "Slider.foreground" ); + fg2bgMap.remove( "SplitPane.foreground" ); + fg2bgMap.remove( "TextArea.disabledForeground" ); + fg2bgMap.put( "TextArea.inactiveForeground", "TextArea.disabledBackground" ); + fg2bgMap.remove( "TextPane.disabledForeground" ); + fg2bgMap.put( "TextPane.inactiveForeground", "TextPane.disabledBackground" ); + fg2bgMap.remove( "EditorPane.disabledForeground" ); + fg2bgMap.put( "EditorPane.inactiveForeground", "EditorPane.disabledBackground" ); + fg2bgMap.remove( "TextField.disabledForeground" ); + fg2bgMap.put( "TextField.inactiveForeground", "TextField.disabledBackground" ); + fg2bgMap.remove( "FormattedTextField.disabledForeground" ); + fg2bgMap.put( "FormattedTextField.inactiveForeground", "FormattedTextField.disabledBackground" ); + fg2bgMap.remove( "PasswordField.disabledForeground" ); + fg2bgMap.put( "PasswordField.inactiveForeground", "PasswordField.disabledBackground" ); + fg2bgMap.remove( "ToolBar.dockingForeground" ); + fg2bgMap.remove( "ToolBar.floatingForeground" ); + fg2bgMap.remove( "ToolBar.foreground" ); + fg2bgMap.remove( "ToolBar.hoverButtonGroupForeground" ); + fg2bgMap.remove( "Viewport.foreground" ); + + fg2bgMap.remove( "InternalFrame.closeHoverForeground" ); + fg2bgMap.remove( "InternalFrame.closePressedForeground" ); + fg2bgMap.remove( "TabbedPane.closeHoverForeground" ); + fg2bgMap.remove( "TabbedPane.closePressedForeground" ); + fg2bgMap.remove( "TitlePane.closeHoverForeground" ); + fg2bgMap.remove( "TitlePane.closePressedForeground" ); + +// out.println(); +// fg2bgMap.entrySet().stream() +// .sorted( (e1, e2) -> e1.getKey().compareTo( e2.getKey() ) ) +// .forEach( e -> { +// out.printf( "%-50s %s%n", e.getKey(), e.getValue() ); +// } ); +// out.println(); + + AtomicReference lastSubkey = new AtomicReference<>(); + + fg2bgMap.entrySet().stream() + .sorted( (e1, e2) -> { + String key1 = e1.getKey(); + String key2 = e2.getKey(); + int dot1 = key1.lastIndexOf( '.' ); + int dot2 = key2.lastIndexOf( '.' ); + if( dot1 < 0 || dot2 < 0 ) + return key1.compareTo( key2 ); + int r = key1.substring( dot1 + 1 ).compareTo( key2.substring( dot2 + 1 ) ); + if( r != 0 ) + return r; + return key1.substring( 0, dot1 ).compareTo( key2.substring( 0, dot2 ) ); + } ) + .forEach( e -> { + String fgKey = e.getKey(); + String bgKey = e.getValue(); + Color background = defaults.getColor( bgKey ); + Color foreground = defaults.getColor( fgKey ); + if( background != null && foreground != null ) { + float luma1 = ColorFunctions.luma( background ); + float luma2 = ColorFunctions.luma( foreground ); + float contrastRatio = (luma1 > luma2) + ? (luma1 + 0.05f) / (luma2 + 0.05f) + : (luma2 + 0.05f) / (luma1 + 0.05f); + String rateing = + contrastRatio < 1.95f ? " !!!!!!" : + contrastRatio < 2.95f ? " !!!!!" : + contrastRatio < 3.95f ? " !!!!" : + contrastRatio < 4.95f ? " !!!" : + contrastRatio < 5.95f ? " !!" : + contrastRatio < 6.95f ? " !" : + ""; + + String subkey = fgKey.substring( fgKey.lastIndexOf( '.' ) + 1 ); + if( !subkey.equals( lastSubkey.get() ) ) { + lastSubkey.set( subkey ); + out.println(); + out.println( "#-- " + subkey + " --" ); + } + + out.printf( "%-50s #%06x #%06x %4.1f%s%n", fgKey, + foreground.getRGB() & 0xffffff, background.getRGB() & 0xffffff, + contrastRatio, rateing ); + } + } ); + } + //---- class MyBasicLookAndFeel ------------------------------------------- public static class MyBasicLookAndFeel From c8eaf5f587bb7abf179bc1e9b92e301c0bb5d6a7 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Tue, 18 Feb 2025 19:50:09 +0100 Subject: [PATCH 16/36] increased contrast of text for better readability (issue #762) --- CHANGELOG.md | 8 + .../formdev/flatlaf/FlatDarkLaf.properties | 6 +- .../formdev/flatlaf/FlatLightLaf.properties | 2 +- .../flatlaf/themes/FlatMacDarkLaf.properties | 2 + .../flatlaf/themes/FlatMacLightLaf.properties | 2 +- .../dumps/uidefaults/FlatDarculaLaf_1.8.0.txt | 8 +- .../dumps/uidefaults/FlatDarkLaf_1.8.0.txt | 502 +++++++++--------- .../dumps/uidefaults/FlatLightLaf_1.8.0.txt | 94 ++-- .../dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt | 12 +- .../uidefaults/FlatMacLightLaf_1.8.0.txt | 94 ++-- 10 files changed, 370 insertions(+), 360 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d4a2014..299185f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ FlatLaf Change Log - macOS: Re-enabled rounded popup border (see PR #772) on macOS 14.4+ (was disabled in 3.5.x). +- Increased contrast of text for better readability: (issue #762) + - In **FlatLaf Dark**, **FlatLaf Darcula** and many dark IntelliJ themes made + all text colors brighter. + - In **FlatLaf Light**, **FlatLaf IntelliJ** and many light IntelliJ themes + made disabled text colors slightly darker. + - In **FlatLaf macOS Light** made disabled text colors darker. + - In **FlatLaf macOS Dark** made text colors of "default" button and selected + ToggleButton lighter. - CheckBox: Support styling indeterminate state of [tri-state check boxes](https://www.javadoc.io/doc/com.formdev/flatlaf-extras/latest/com/formdev/flatlaf/extras/components/FlatTriStateCheckBox.html). (PR #936; issue #919) diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties index e6a3413d..ff4e2bfa 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties @@ -34,7 +34,7 @@ # general background and foreground (text color) @background = #3c3f41 -@foreground = #bbb +@foreground = #ddd @disabledBackground = @background @disabledForeground = shade(@foreground,25%) @@ -45,7 +45,7 @@ # selection @selectionBackground = @accentSelectionBackground -@selectionForeground = contrast(@selectionBackground, @background, @foreground, 25%) +@selectionForeground = contrast(@selectionBackground, shade(@background), tint(@foreground), 25%) @selectionInactiveBackground = spin(saturate(shade(@selectionBackground,70%),20%),-15) @selectionInactiveForeground = @foreground @@ -262,7 +262,7 @@ PopupMenu.hoverScrollArrowBackground = lighten(@background,5%) ProgressBar.background = lighten(@background,8%) ProgressBar.foreground = @accentSliderColor ProgressBar.selectionBackground = @foreground -ProgressBar.selectionForeground = contrast($ProgressBar.foreground, @background, @foreground, 25%) +ProgressBar.selectionForeground = contrast($ProgressBar.foreground, shade(@background), tint(@foreground), 25%) #---- RootPane ---- diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties index 272c965d..cb9823a0 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties @@ -36,7 +36,7 @@ @background = #f2f2f2 @foreground = #000 @disabledBackground = @background -@disabledForeground = tint(@foreground,55%) +@disabledForeground = tint(@foreground,50%) # component background @buttonBackground = lighten(@background,5%) diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/themes/FlatMacDarkLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/themes/FlatMacDarkLaf.properties index 3f12be09..02ed6b34 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/themes/FlatMacDarkLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/themes/FlatMacDarkLaf.properties @@ -112,6 +112,7 @@ Button.borderWidth = 0 Button.disabledBackground = darken($Button.background,10%) Button.default.borderWidth = 0 +Button.default.foreground = contrast($Button.default.background, @background, @selectionForeground, 25%) Button.toolbar.hoverBackground = #fff1 Button.toolbar.pressedBackground = #fff2 @@ -293,6 +294,7 @@ TextPane.selectionForeground = @textSelectionForeground ToggleButton.disabledBackground = $Button.disabledBackground ToggleButton.selectedBackground = lighten($ToggleButton.background,20%,derived) +ToggleButton.selectedForeground = lighten($ToggleButton.foreground,20%) ToggleButton.toolbar.selectedBackground = #fff3 diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/themes/FlatMacLightLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/themes/FlatMacLightLaf.properties index 9f9e044d..d18eb106 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/themes/FlatMacLightLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/themes/FlatMacLightLaf.properties @@ -79,7 +79,7 @@ # general background and foreground (text color) @background = #f6f6f6 @foreground = over(@nsControlTextColor,@background) -@disabledForeground = over(@nsTertiaryLabelColor,@background) +@disabledForeground = over(@nsSecondaryLabelColor,@background) # component background @buttonBackground = @nsControlColor diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt index 88face3c..2e9e00e2 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt @@ -73,9 +73,9 @@ #---- ProgressBar ---- - ProgressBar.foreground #4c87c8 HSL 211 53 54 javax.swing.plaf.ColorUIResource [UI] -+ ProgressBar.foreground #a2a2a2 HSL 0 0 64 javax.swing.plaf.ColorUIResource [UI] ++ ProgressBar.foreground #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] -- ProgressBar.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +- ProgressBar.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] + ProgressBar.selectionForeground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] @@ -117,5 +117,5 @@ #---- contrast ratio: ProgressBar ---- -- contrast ratio: ProgressBar.selectionForeground #bbbbbb #4c87c8 2.0 !!!!! -+ contrast ratio: ProgressBar.selectionForeground #3c3f41 #a2a2a2 4.2 !!! +- contrast ratio: ProgressBar.selectionForeground #eeeeee #4c87c8 3.2 !!!! ++ contrast ratio: ProgressBar.selectionForeground #3c3f41 #c4c4c4 6.1 ! diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt index c5c7528b..fcdffa9d 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt @@ -73,19 +73,19 @@ Button.default.borderColor #557394 HSL 211 27 46 javax.swing.plaf.Colo Button.default.borderWidth 1 Button.default.focusColor #416997 HSL 212 40 42 javax.swing.plaf.ColorUIResource [UI] Button.default.focusedBorderColor #5b7898 HSL 211 25 48 javax.swing.plaf.ColorUIResource [UI] -Button.default.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Button.default.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Button.default.hoverBackground #3c618c HSL 212 40 39 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) Button.default.hoverBorderColor #5b7898 HSL 211 25 48 javax.swing.plaf.ColorUIResource [UI] Button.default.pressedBackground #406996 HSL 211 40 42 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) Button.defaultButtonFollowsFocus false Button.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] Button.disabledBorderColor #606263 HSL 200 2 38 javax.swing.plaf.ColorUIResource [UI] -Button.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Button.disabledForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] Button.disabledSelectedBackground #55585a HSL 204 3 34 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) -Button.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Button.disabledText #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] Button.focusedBorderColor #446e9e HSL 212 40 44 javax.swing.plaf.ColorUIResource [UI] Button.font [active] $defaultFont [UI] -Button.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Button.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Button.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] Button.hoverBackground #55585a HSL 204 3 34 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) Button.hoverBorderColor #446e9e HSL 212 40 44 javax.swing.plaf.ColorUIResource [UI] @@ -97,7 +97,7 @@ Button.minimumWidth 72 Button.pressedBackground #5d5f62 HSL 216 3 37 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) Button.rollover true Button.selectedBackground #676a6c HSL 204 2 41 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) -Button.selectedForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Button.selectedForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Button.shadow #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] Button.textIconGap 4 Button.textShiftOffset 0 @@ -119,15 +119,15 @@ Caret.width [active] 1 CheckBox.arc 4 CheckBox.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] CheckBox.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -CheckBox.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +CheckBox.disabledText #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] CheckBox.font [active] $defaultFont [UI] -CheckBox.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +CheckBox.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.background #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.borderColor #696b6d HSL 210 2 42 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.checkmarkColor #a8a8a8 HSL 0 0 66 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.checkmarkColor #c7c7c7 HSL 0 0 78 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.disabledBorderColor #545657 HSL 200 2 34 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.disabledCheckmarkColor #686868 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledCheckmarkColor #878787 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.focusWidth 1 CheckBox.icon.focusedBackground #446e9e4d 30% HSLA 212 40 44 30 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.focusedBorderColor #446e9e HSL 212 40 44 javax.swing.plaf.ColorUIResource [UI] @@ -140,10 +140,10 @@ CheckBox.icon.selectedBorderColor #87898a HSL 200 1 54 javax.swing.plaf.C CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.iconTextGap 4 CheckBox.icon[filled].checkmarkColor #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].hoverSelectedBackground #a0a0a0 HSL 0 0 63 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) -CheckBox.icon[filled].pressedSelectedBackground #999999 HSL 0 0 60 com.formdev.flatlaf.util.DerivedColor [UI] darken(6% autoInverse) -CheckBox.icon[filled].selectedBackground #a8a8a8 HSL 0 0 66 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedBorderColor #a8a8a8 HSL 0 0 66 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].hoverSelectedBackground #bfbfbf HSL 0 0 75 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) +CheckBox.icon[filled].pressedSelectedBackground #b8b8b8 HSL 0 0 72 com.formdev.flatlaf.util.DerivedColor [UI] darken(6% autoInverse) +CheckBox.icon[filled].selectedBackground #c7c7c7 HSL 0 0 78 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].selectedBorderColor #c7c7c7 HSL 0 0 78 javax.swing.plaf.ColorUIResource [UI] CheckBox.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] CheckBox.rollover true CheckBox.textIconGap 4 @@ -153,22 +153,22 @@ CheckBox.textShiftOffset 0 #---- CheckBoxMenuItem ---- CheckBoxMenuItem.acceleratorFont [active] $defaultFont [UI] -CheckBoxMenuItem.acceleratorForeground #959595 HSL 0 0 58 javax.swing.plaf.ColorUIResource [UI] -CheckBoxMenuItem.acceleratorSelectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.acceleratorForeground #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.acceleratorSelectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] CheckBoxMenuItem.background #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMenuItemBorder [UI] CheckBoxMenuItem.borderPainted true CheckBoxMenuItem.checkIcon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxMenuItemIcon [UI] -CheckBoxMenuItem.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.disabledForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.font [active] $defaultFont [UI] -CheckBoxMenuItem.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] -CheckBoxMenuItem.icon.checkmarkColor #9b9b9b HSL 0 0 61 javax.swing.plaf.ColorUIResource [UI] -CheckBoxMenuItem.icon.disabledCheckmarkColor #5b5b5b HSL 0 0 36 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.icon.checkmarkColor #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.icon.disabledCheckmarkColor #777777 HSL 0 0 47 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.margin 3,6,3,6 javax.swing.plaf.InsetsUIResource [UI] CheckBoxMenuItem.opaque false CheckBoxMenuItem.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -CheckBoxMenuItem.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItemUI com.formdev.flatlaf.ui.FlatCheckBoxMenuItemUI @@ -181,7 +181,7 @@ CheckBoxUI com.formdev.flatlaf.ui.FlatCheckBoxUI ColorChooser.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] ColorChooser.font [active] $defaultFont [UI] -ColorChooser.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ColorChooser.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] ColorChooser.swatchesDefaultRecentColor #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] ColorChooser.swatchesRecentSwatchSize [active] 16,16 javax.swing.plaf.DimensionUIResource [UI] ColorChooser.swatchesSwatchSize [active] 16,16 javax.swing.plaf.DimensionUIResource [UI] @@ -191,7 +191,7 @@ ColorChooserUI com.formdev.flatlaf.ui.FlatColorChooserUI #---- ColumnControlButton ---- ColumnControlButton.actionIcon [lazy] 10,10 com.formdev.flatlaf.swingx.icons.FlatColumnControlIcon [UI] -ColumnControlButton.iconColor #a8a8a8 HSL 0 0 66 javax.swing.plaf.ColorUIResource [UI] +ColumnControlButton.iconColor #c7c7c7 HSL 0 0 78 javax.swing.plaf.ColorUIResource [UI] #---- ComboBox ---- @@ -199,23 +199,23 @@ ColumnControlButton.iconColor #a8a8a8 HSL 0 0 66 javax.swing.plaf.Colo ComboBox.background #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] ComboBox.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI] ComboBox.borderCornerRadius 4 -ComboBox.buttonArrowColor #9b9b9b HSL 0 0 61 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonArrowColor #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonBackground #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonDarkShadow #7a7d7f HSL 204 2 49 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonDisabledArrowColor #5b5b5b HSL 0 0 36 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonDisabledArrowColor #777777 HSL 0 0 47 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonDisabledSeparatorColor #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonEditableBackground #414446 HSL 204 4 26 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonHighlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonHoverArrowColor #b5b5b5 HSL 0 0 71 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) -ComboBox.buttonPressedArrowColor #cecece HSL 0 0 81 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) +ComboBox.buttonHoverArrowColor #d1d1d1 HSL 0 0 82 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) +ComboBox.buttonPressedArrowColor #eaeaea HSL 0 0 92 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) ComboBox.buttonSeparatorColor #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonShadow #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonStyle auto ComboBox.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -ComboBox.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +ComboBox.disabledForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] ComboBox.editorColumns 0 ComboBox.font [active] $defaultFont [UI] -ComboBox.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ComboBox.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] ComboBox.isEnterSelectablePopup false ComboBox.maximumRowCount 15 ComboBox.minimumWidth 72 @@ -224,7 +224,7 @@ ComboBox.padding 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] ComboBox.popupInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ComboBox.selectionArc 0 ComboBox.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -ComboBox.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ComboBox.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] ComboBox.selectionInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ComboBox.timeFactor 1000 ComboBoxUI com.formdev.flatlaf.ui.FlatComboBoxUI @@ -271,7 +271,7 @@ DesktopIcon.background #555c68 HSL 218 10 37 com.formdev.flatlaf.u DesktopIcon.border [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] DesktopIcon.closeIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameCloseIcon [UI] DesktopIcon.closeSize 20,20 javax.swing.plaf.DimensionUIResource [UI] -DesktopIcon.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +DesktopIcon.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] DesktopIcon.iconSize 64,64 javax.swing.plaf.DimensionUIResource [UI] DesktopIconUI com.formdev.flatlaf.ui.FlatDesktopIconUI @@ -286,15 +286,15 @@ DesktopPaneUI com.formdev.flatlaf.ui.FlatDesktopPaneUI EditorPane.background #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] EditorPane.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] EditorPane.caretBlinkRate 500 -EditorPane.caretForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +EditorPane.caretForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] EditorPane.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] EditorPane.font [active] $defaultFont [UI] -EditorPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +EditorPane.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] EditorPane.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -EditorPane.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +EditorPane.inactiveForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] EditorPane.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] EditorPane.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -EditorPane.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +EditorPane.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] EditorPaneUI com.formdev.flatlaf.ui.FlatEditorPaneUI @@ -326,17 +326,17 @@ FileView.hardDriveIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatFil FormattedTextField.background #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI] FormattedTextField.caretBlinkRate 500 -FormattedTextField.caretForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.caretForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.font [active] $defaultFont [UI] -FormattedTextField.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.iconTextGap 4 FormattedTextField.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.inactiveForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -FormattedTextField.placeholderForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.placeholderForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] FormattedTextFieldUI com.formdev.flatlaf.ui.FlatFormattedTextFieldUI @@ -359,12 +359,12 @@ HelpButton.hoverBorderColor #446e9e HSL 212 40 44 javax.swing.plaf.Colo HelpButton.icon [lazy] 22,22 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI] HelpButton.innerFocusWidth 1 HelpButton.pressedBackground #5d5f62 HSL 216 3 37 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) -HelpButton.questionMarkColor #a8a8a8 HSL 0 0 66 javax.swing.plaf.ColorUIResource [UI] +HelpButton.questionMarkColor #c7c7c7 HSL 0 0 78 javax.swing.plaf.ColorUIResource [UI] #---- Hyperlink ---- -Hyperlink.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Hyperlink.disabledText #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] Hyperlink.linkColor #579bf6 HSL 214 90 65 javax.swing.plaf.ColorUIResource [UI] Hyperlink.visitedColor #579bf6 HSL 214 90 65 javax.swing.plaf.ColorUIResource [UI] HyperlinkUI com.formdev.flatlaf.swingx.ui.FlatHyperlinkUI @@ -376,7 +376,7 @@ InternalFrame.activeBorderColor #2b2d2e HSL 200 3 17 javax.swing.plaf.Col InternalFrame.activeDropShadowInsets 5,5,6,6 javax.swing.plaf.InsetsUIResource [UI] InternalFrame.activeDropShadowOpacity 0.5 InternalFrame.activeTitleBackground #242526 HSL 210 3 15 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.activeTitleForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.activeTitleForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] InternalFrame.border [lazy] 6,6,6,6 false com.formdev.flatlaf.ui.FlatInternalFrameUI$FlatInternalFrameBorder [UI] InternalFrame.borderColor #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] InternalFrame.borderDarkShadow #7a7d7f HSL 204 2 49 javax.swing.plaf.ColorUIResource [UI] @@ -400,7 +400,7 @@ InternalFrame.inactiveBorderColor #353739 HSL 210 4 22 javax.swing.plaf.C InternalFrame.inactiveDropShadowInsets 3,3,4,4 javax.swing.plaf.InsetsUIResource [UI] InternalFrame.inactiveDropShadowOpacity 0.75 InternalFrame.inactiveTitleBackground #303233 HSL 200 3 19 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.inactiveTitleForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.inactiveTitleForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] InternalFrame.maximizeIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameMaximizeIcon [UI] InternalFrame.minimizeIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameRestoreIcon [UI] InternalFrame.titleFont [active] $defaultFont [UI] @@ -440,20 +440,20 @@ JXHeader.titleFont [active] Segoe UI bold 12 javax.swing.plaf.Fon #---- JXMonthView ---- -JXMonthView.arrowColor #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.arrowColor #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JXMonthView.background #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] JXMonthView.daysOfTheWeekForeground #aaaaaa HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.disabledArrowColor #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.disabledArrowColor #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] JXMonthView.flaggedDayForeground #e05555 HSL 0 69 61 javax.swing.plaf.ColorUIResource [UI] JXMonthView.font [active] $defaultFont [UI] -JXMonthView.leadingDayForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.leadingDayForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon [UI] JXMonthView.monthStringBackground #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthStringForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.monthStringForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon [UI] JXMonthView.selectedBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.todayColor #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.trailingDayForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.todayColor #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.trailingDayForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] JXMonthView.unselectableDayForeground #e05555 HSL 0 69 61 javax.swing.plaf.ColorUIResource [UI] JXMonthView.weekOfTheYearForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] @@ -464,7 +464,7 @@ JXTitledPanel.borderColor #606263 HSL 200 2 38 javax.swing.plaf.Colo JXTitledPanel.captionInsets 4,10,4,10 javax.swing.plaf.InsetsUIResource [UI] JXTitledPanel.titleBackground #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] JXTitledPanel.titleFont [active] Segoe UI bold 12 javax.swing.plaf.FontUIResource [UI] -JXTitledPanel.titleForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +JXTitledPanel.titleForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] #---- JideButton ---- @@ -474,7 +474,7 @@ JideButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.F JideButton.borderColor #606263 HSL 200 2 38 javax.swing.plaf.ColorUIResource [UI] JideButton.darkShadow #606263 HSL 200 2 38 javax.swing.plaf.ColorUIResource [UI] JideButton.focusedBackground #505355 HSL 204 3 32 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1% autoInverse) -JideButton.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +JideButton.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JideButton.highlight #676a6c HSL 204 2 41 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) JideButton.light #606263 HSL 200 2 38 javax.swing.plaf.ColorUIResource [UI] JideButton.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] @@ -488,8 +488,8 @@ JideButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideButtonUI #---- JideLabel ---- JideLabel.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -JideLabel.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] -JideLabel.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +JideLabel.disabledForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] +JideLabel.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JideLabelUI com.formdev.flatlaf.jideoss.ui.FlatJideLabelUI @@ -502,11 +502,11 @@ JidePopupMenuUI com.formdev.flatlaf.jideoss.ui.FlatJidePopupMenuU JideSplitButton.background #4e5052 HSL 210 2 31 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -JideSplitButton.buttonArrowColor #9b9b9b HSL 0 0 61 javax.swing.plaf.ColorUIResource [UI] -JideSplitButton.buttonDisabledArrowColor #5b5b5b HSL 0 0 36 javax.swing.plaf.ColorUIResource [UI] -JideSplitButton.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.buttonArrowColor #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.buttonDisabledArrowColor #777777 HSL 0 0 47 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -JideSplitButton.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.selectionForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.textIconGap [active] 4 JideSplitButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideSplitButtonUI @@ -519,7 +519,7 @@ JideTabbedPane.closeButtonRightMargin 0 JideTabbedPane.contentBorderInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] JideTabbedPane.fitStyleBoundSize 0 JideTabbedPane.fitStyleFirstTabMargin 0 -JideTabbedPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +JideTabbedPane.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JideTabbedPane.shadow #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] JideTabbedPane.tabAreaBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] JideTabbedPane.tabAreaInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] @@ -531,10 +531,10 @@ JideTabbedPaneUI com.formdev.flatlaf.jideoss.ui.FlatJideTabbedPane #---- Label ---- Label.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -Label.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Label.disabledForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] Label.disabledShadow #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] Label.font [active] $defaultFont [UI] -Label.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Label.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] LabelUI com.formdev.flatlaf.ui.FlatLabelUI @@ -547,18 +547,18 @@ List.cellMargins 1,6,1,6 javax.swing.plaf.InsetsUIResource [UI] List.cellNoFocusBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Default [UI] lineColor=#6d8ac0 HSL 219 40 59 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 List.cellRenderer [active] javax.swing.DefaultListCellRenderer$UIResource [UI] List.dropCellBackground [lazy] #3c588b HSL 219 40 39 javax.swing.plaf.ColorUIResource [UI] -List.dropCellForeground [lazy] #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +List.dropCellForeground [lazy] #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] List.dropLineColor [lazy] #6d8ac0 HSL 219 40 59 javax.swing.plaf.ColorUIResource [UI] List.focusCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Focused [UI] lineColor=#6d8ac0 HSL 219 40 59 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 List.focusSelectedCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Selected [UI] lineColor=#6d8ac0 HSL 219 40 59 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 List.font [active] $defaultFont [UI] -List.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +List.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] List.noFocusBorder 1,1,1,1 false javax.swing.plaf.BorderUIResource$EmptyBorderUIResource [UI] List.selectionArc 0 List.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -List.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +List.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] List.selectionInactiveBackground #0f2a3d HSL 205 61 15 javax.swing.plaf.ColorUIResource [UI] -List.selectionInactiveForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +List.selectionInactiveForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] List.selectionInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] List.showCellFocusIndicator false List.timeFactor 1000 @@ -568,26 +568,26 @@ ListUI com.formdev.flatlaf.ui.FlatListUI #---- Menu ---- Menu.acceleratorFont [active] $defaultFont [UI] -Menu.acceleratorForeground #959595 HSL 0 0 58 javax.swing.plaf.ColorUIResource [UI] -Menu.acceleratorSelectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Menu.acceleratorForeground #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] +Menu.acceleratorSelectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] Menu.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuArrowIcon [UI] Menu.background #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] Menu.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMenuItemBorder [UI] Menu.borderPainted true Menu.cancelMode hideLastSubmenu Menu.crossMenuMnemonic true -Menu.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Menu.disabledForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] Menu.font [active] $defaultFont [UI] -Menu.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] -Menu.icon.arrowColor #9b9b9b HSL 0 0 61 javax.swing.plaf.ColorUIResource [UI] -Menu.icon.disabledArrowColor #5b5b5b HSL 0 0 36 javax.swing.plaf.ColorUIResource [UI] +Menu.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +Menu.icon.arrowColor #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] +Menu.icon.disabledArrowColor #777777 HSL 0 0 47 javax.swing.plaf.ColorUIResource [UI] Menu.margin 3,6,3,6 javax.swing.plaf.InsetsUIResource [UI] Menu.menuPopupOffsetX 0 Menu.menuPopupOffsetY 0 Menu.opaque false Menu.preserveTopLevelSelection false Menu.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -Menu.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Menu.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] Menu.shortcutKeys length=1 [I [0] 8 Menu.submenuPopupOffsetX [active] -4 @@ -600,7 +600,7 @@ MenuBar.background #303234 HSL 210 4 20 javax.swing.plaf.Colo MenuBar.border [lazy] 0,0,1,0 false com.formdev.flatlaf.ui.FlatMenuBarBorder [UI] MenuBar.borderColor #505254 HSL 210 2 32 javax.swing.plaf.ColorUIResource [UI] MenuBar.font [active] $defaultFont [UI] -MenuBar.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +MenuBar.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] MenuBar.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] MenuBar.hoverBackground #484c4f HSL 206 5 30 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) MenuBar.itemMargins 3,8,3,8 javax.swing.plaf.InsetsUIResource [UI] @@ -619,17 +619,17 @@ MenuBarUI com.formdev.flatlaf.ui.FlatMenuBarUI MenuItem.acceleratorArrowGap 2 MenuItem.acceleratorDelimiter + MenuItem.acceleratorFont [active] $defaultFont [UI] -MenuItem.acceleratorForeground #959595 HSL 0 0 58 javax.swing.plaf.ColorUIResource [UI] -MenuItem.acceleratorSelectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +MenuItem.acceleratorForeground #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] +MenuItem.acceleratorSelectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] MenuItem.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] MenuItem.background #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] MenuItem.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMenuItemBorder [UI] MenuItem.borderPainted true MenuItem.checkBackground #3c588b HSL 219 40 39 com.formdev.flatlaf.util.DerivedColor [UI] darken(10%) MenuItem.checkMargins 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] -MenuItem.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +MenuItem.disabledForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] MenuItem.font [active] $defaultFont [UI] -MenuItem.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +MenuItem.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] MenuItem.iconTextGap 6 MenuItem.margin 3,6,3,6 javax.swing.plaf.InsetsUIResource [UI] MenuItem.minimumIconSize 16,16 javax.swing.plaf.DimensionUIResource [UI] @@ -637,7 +637,7 @@ MenuItem.minimumWidth 72 MenuItem.opaque false MenuItem.selectionArc 0 MenuItem.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -MenuItem.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +MenuItem.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] MenuItem.selectionInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] MenuItem.textAcceleratorGap 24 MenuItem.textNoAcceleratorGap 6 @@ -685,7 +685,7 @@ OptionPane.buttonOrientation 4 OptionPane.buttonPadding 8 OptionPane.errorIcon [lazy] 32,32 com.formdev.flatlaf.icons.FlatOptionPaneErrorIcon [UI] OptionPane.font [active] $defaultFont [UI] -OptionPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +OptionPane.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] OptionPane.iconMessageGap 16 OptionPane.informationIcon [lazy] 32,32 com.formdev.flatlaf.icons.FlatOptionPaneInformationIcon [UI] OptionPane.maxCharactersPerLine 80 @@ -707,7 +707,7 @@ OptionPaneUI com.formdev.flatlaf.ui.FlatOptionPaneUI Panel.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] Panel.font [active] $defaultFont [UI] -Panel.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Panel.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] PanelUI com.formdev.flatlaf.ui.FlatPanelUI @@ -718,20 +718,20 @@ PasswordField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.F PasswordField.capsLockIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatCapsLockIcon [UI] PasswordField.capsLockIconColor #ffffff64 39% HSLA 0 0 100 39 javax.swing.plaf.ColorUIResource [UI] PasswordField.caretBlinkRate 500 -PasswordField.caretForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +PasswordField.caretForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] PasswordField.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] PasswordField.echoChar '\u2022' PasswordField.font [active] $defaultFont [UI] -PasswordField.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +PasswordField.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] PasswordField.iconTextGap 4 PasswordField.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -PasswordField.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +PasswordField.inactiveForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] PasswordField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -PasswordField.placeholderForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +PasswordField.placeholderForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] PasswordField.revealIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatRevealIcon [UI] -PasswordField.revealIconColor #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +PasswordField.revealIconColor #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] PasswordField.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -PasswordField.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +PasswordField.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] PasswordField.showCapsLock true PasswordField.showRevealButton false PasswordFieldUI com.formdev.flatlaf.ui.FlatPasswordFieldUI @@ -755,9 +755,9 @@ PopupMenu.borderCornerRadius 4 PopupMenu.borderInsets 4,1,4,1 javax.swing.plaf.InsetsUIResource [UI] PopupMenu.consumeEventOnClose false PopupMenu.font [active] $defaultFont [UI] -PopupMenu.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +PopupMenu.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] PopupMenu.hoverScrollArrowBackground #484c4e HSL 200 4 29 javax.swing.plaf.ColorUIResource [UI] -PopupMenu.scrollArrowColor #9b9b9b HSL 0 0 61 javax.swing.plaf.ColorUIResource [UI] +PopupMenu.scrollArrowColor #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] #---- PopupMenuSeparator ---- @@ -785,8 +785,8 @@ ProgressBar.font [active] Segoe UI plain 10 javax.swing.plaf.Fo ProgressBar.foreground #4c87c8 HSL 211 53 54 javax.swing.plaf.ColorUIResource [UI] ProgressBar.horizontalSize 146,4 javax.swing.plaf.DimensionUIResource [UI] ProgressBar.repaintInterval 15 -ProgressBar.selectionBackground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] -ProgressBar.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.selectionBackground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] ProgressBar.verticalSize 4,146 javax.swing.plaf.DimensionUIResource [UI] ProgressBarUI com.formdev.flatlaf.ui.FlatProgressBarUI @@ -796,9 +796,9 @@ ProgressBarUI com.formdev.flatlaf.ui.FlatProgressBarUI RadioButton.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] RadioButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] RadioButton.darkShadow #7a7d7f HSL 204 2 49 javax.swing.plaf.ColorUIResource [UI] -RadioButton.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +RadioButton.disabledText #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] RadioButton.font [active] $defaultFont [UI] -RadioButton.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +RadioButton.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] RadioButton.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] RadioButton.icon.centerDiameter 8 RadioButton.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonIcon [UI] @@ -815,20 +815,20 @@ RadioButton.textShiftOffset 0 #---- RadioButtonMenuItem ---- RadioButtonMenuItem.acceleratorFont [active] $defaultFont [UI] -RadioButtonMenuItem.acceleratorForeground #959595 HSL 0 0 58 javax.swing.plaf.ColorUIResource [UI] -RadioButtonMenuItem.acceleratorSelectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.acceleratorForeground #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.acceleratorSelectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] RadioButtonMenuItem.background #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMenuItemBorder [UI] RadioButtonMenuItem.borderPainted true RadioButtonMenuItem.checkIcon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonMenuItemIcon [UI] -RadioButtonMenuItem.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.disabledForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.font [active] $defaultFont [UI] -RadioButtonMenuItem.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.margin 3,6,3,6 javax.swing.plaf.InsetsUIResource [UI] RadioButtonMenuItem.opaque false RadioButtonMenuItem.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -RadioButtonMenuItem.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItemUI com.formdev.flatlaf.ui.FlatRadioButtonMenuItemUI @@ -864,7 +864,7 @@ RootPane.defaultButtonWindowKeyBindings length=8 [Ljava.lang.Object; [6] ctrl released ENTER [7] release RootPane.font [active] $defaultFont [UI] -RootPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +RootPane.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] RootPane.honorDialogMinimumSizeOnResize true RootPane.honorFrameMinimumSizeOnResize false RootPane.inactiveBorderColor #484c4e HSL 200 4 29 com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse) @@ -875,9 +875,9 @@ RootPaneUI com.formdev.flatlaf.ui.FlatRootPaneUI ScrollBar.allowsAbsolutePositioning true ScrollBar.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.buttonArrowColor #9b9b9b HSL 0 0 61 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.buttonDisabledArrowColor #5b5b5b HSL 0 0 36 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.buttonArrowColor #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.buttonDisabledArrowColor #777777 HSL 0 0 47 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] ScrollBar.hoverButtonBackground #484c4e HSL 200 4 29 com.formdev.flatlaf.util.DerivedColor [UI] lighten(5%) ScrollBar.hoverThumbColor #6e767a HSL 200 5 45 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) ScrollBar.hoverThumbWithTrack false @@ -911,7 +911,7 @@ ScrollPane.background #3e4244 HSL 200 5 25 com.formdev.flatlaf.u ScrollPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatScrollPaneBorder [UI] ScrollPane.fillUpperCorner true ScrollPane.font [active] $defaultFont [UI] -ScrollPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ScrollPane.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] ScrollPane.smoothScrolling true ScrollPaneUI com.formdev.flatlaf.ui.FlatScrollPaneUI @@ -957,7 +957,7 @@ Slider.focusInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Slider.focusWidth 4 Slider.focusedColor #7097c24d 30% HSLA 211 40 60 30 com.formdev.flatlaf.util.DerivedColor [UI] changeLightness(60%) fade(30%) Slider.font [active] $defaultFont [UI] -Slider.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Slider.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Slider.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] Slider.horizontalSize 200,21 java.awt.Dimension Slider.hoverThumbColor #6094ce HSL 212 53 59 com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse) @@ -968,7 +968,7 @@ Slider.pressedThumbColor #6b9cd2 HSL 211 53 62 com.formdev.flatlaf.u Slider.shadow #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] Slider.thumbColor #4c87c8 HSL 211 53 54 javax.swing.plaf.ColorUIResource [UI] Slider.thumbSize 12,12 javax.swing.plaf.DimensionUIResource [UI] -Slider.tickColor #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Slider.tickColor #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] Slider.trackColor #616669 HSL 203 4 40 javax.swing.plaf.ColorUIResource [UI] Slider.trackValueColor #4c87c8 HSL 211 53 54 javax.swing.plaf.ColorUIResource [UI] Slider.trackWidth 2 @@ -981,20 +981,20 @@ SliderUI com.formdev.flatlaf.ui.FlatSliderUI Spinner.arrowButtonSize 16,5 java.awt.Dimension Spinner.background #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] Spinner.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI] -Spinner.buttonArrowColor #9b9b9b HSL 0 0 61 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonArrowColor #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] Spinner.buttonBackground #414446 HSL 204 4 26 javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonDisabledArrowColor #5b5b5b HSL 0 0 36 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonDisabledArrowColor #777777 HSL 0 0 47 javax.swing.plaf.ColorUIResource [UI] Spinner.buttonDisabledSeparatorColor #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonHoverArrowColor #b5b5b5 HSL 0 0 71 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) -Spinner.buttonPressedArrowColor #cecece HSL 0 0 81 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) +Spinner.buttonHoverArrowColor #d1d1d1 HSL 0 0 82 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) +Spinner.buttonPressedArrowColor #eaeaea HSL 0 0 92 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) Spinner.buttonSeparatorColor #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] Spinner.buttonStyle button Spinner.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -Spinner.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Spinner.disabledForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] Spinner.editorAlignment 11 Spinner.editorBorderPainted false Spinner.font [active] $defaultFont [UI] -Spinner.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Spinner.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Spinner.padding 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] SpinnerUI com.formdev.flatlaf.ui.FlatSpinnerUI @@ -1015,13 +1015,13 @@ SplitPane.shadow #616365 HSL 210 2 39 javax.swing.plaf.Colo #---- SplitPaneDivider ---- SplitPaneDivider.draggingColor #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] -SplitPaneDivider.gripColor #aeaeae HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.gripColor #cecece HSL 0 0 81 javax.swing.plaf.ColorUIResource [UI] SplitPaneDivider.gripDotCount 3 SplitPaneDivider.gripDotSize 3 SplitPaneDivider.gripGap 2 -SplitPaneDivider.oneTouchArrowColor #9b9b9b HSL 0 0 61 javax.swing.plaf.ColorUIResource [UI] -SplitPaneDivider.oneTouchHoverArrowColor #b5b5b5 HSL 0 0 71 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) -SplitPaneDivider.oneTouchPressedArrowColor #cecece HSL 0 0 81 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) +SplitPaneDivider.oneTouchArrowColor #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.oneTouchHoverArrowColor #d1d1d1 HSL 0 0 82 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) +SplitPaneDivider.oneTouchPressedArrowColor #eaeaea HSL 0 0 92 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) SplitPaneDivider.style grip @@ -1044,23 +1044,23 @@ TabbedPane.closeArc 4 TabbedPane.closeCrossFilledSize 7.5 TabbedPane.closeCrossLineWidth 1 TabbedPane.closeCrossPlainSize 7.5 -TabbedPane.closeForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closeForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] TabbedPane.closeHoverBackground #484c4e HSL 200 4 29 com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse) -TabbedPane.closeHoverForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closeHoverForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TabbedPane.closeIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTabbedPaneCloseIcon [UI] TabbedPane.closePressedBackground #54595c HSL 203 5 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) -TabbedPane.closePressedForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closePressedForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TabbedPane.closeSize 16,16 javax.swing.plaf.DimensionUIResource [UI] TabbedPane.contentAreaColor #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] TabbedPane.contentOpaque true TabbedPane.contentSeparatorHeight 1 TabbedPane.darkShadow #7a7d7f HSL 204 2 49 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.disabledForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] TabbedPane.disabledUnderlineColor #747a7e HSL 204 4 47 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.focus #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.focus #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TabbedPane.focusColor #404b5d HSL 217 18 31 javax.swing.plaf.ColorUIResource [UI] TabbedPane.font [active] $defaultFont [UI] -TabbedPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TabbedPane.hasFullBorder false TabbedPane.hiddenTabsNavigation moreTabsButton TabbedPane.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] @@ -1108,29 +1108,29 @@ Table.cellNoFocusBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.F Table.consistentHomeEndKeyBehavior true Table.descendingSortIcon [lazy] 10,5 com.formdev.flatlaf.icons.FlatDescendingSortIcon [UI] Table.dropCellBackground [lazy] #3c588b HSL 219 40 39 javax.swing.plaf.ColorUIResource [UI] -Table.dropCellForeground [lazy] #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Table.dropCellForeground [lazy] #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] Table.dropLineColor [lazy] #6d8ac0 HSL 219 40 59 javax.swing.plaf.ColorUIResource [UI] Table.dropLineShortColor [lazy] #b4c3df HSL 219 40 79 javax.swing.plaf.ColorUIResource [UI] Table.editorSelectAllOnStartEditing true Table.focusCellBackground #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] -Table.focusCellForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Table.focusCellForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Table.focusCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Focused [UI] lineColor=#6d8ac0 HSL 219 40 59 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 Table.focusSelectedCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Selected [UI] lineColor=#6d8ac0 HSL 219 40 59 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 Table.font [active] $defaultFont [UI] -Table.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Table.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Table.gridColor #5a5e60 HSL 200 3 36 javax.swing.plaf.ColorUIResource [UI] Table.intercellSpacing 0,0 javax.swing.plaf.DimensionUIResource [UI] Table.paintOutsideAlternateRows false Table.rowHeight 20 Table.scrollPaneBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatScrollPaneBorder [UI] Table.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -Table.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Table.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] Table.selectionInactiveBackground #0f2a3d HSL 205 61 15 javax.swing.plaf.ColorUIResource [UI] -Table.selectionInactiveForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Table.selectionInactiveForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Table.showHorizontalLines false Table.showTrailingVerticalLine false Table.showVerticalLines false -Table.sortIconColor #aeaeae HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] +Table.sortIconColor #cecece HSL 0 0 81 javax.swing.plaf.ColorUIResource [UI] #---- TableHeader ---- @@ -1141,7 +1141,7 @@ TableHeader.cellBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.F TableHeader.cellMargins 2,3,2,3 javax.swing.plaf.InsetsUIResource [UI] TableHeader.focusCellBackground #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] TableHeader.font [active] $defaultFont [UI] -TableHeader.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TableHeader.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TableHeader.height 25 TableHeader.hoverBackground #525658 HSL 200 4 33 com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse) TableHeader.pressedBackground #5f6365 HSL 200 3 38 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) @@ -1165,7 +1165,7 @@ TaskPane.specialTitleBackground #afafaf HSL 0 0 69 javax.swing.plaf.Col TaskPane.specialTitleForeground #222222 HSL 0 0 13 javax.swing.plaf.ColorUIResource [UI] TaskPane.specialTitleOver #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] TaskPane.titleBackgroundGradientStart #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] -TaskPane.titleForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TaskPane.titleForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TaskPane.titleOver #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] @@ -1180,15 +1180,15 @@ TaskPaneContainer.border [lazy] 10,10,10,10 false com.formdev.flatlaf. TextArea.background #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] TextArea.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] TextArea.caretBlinkRate 500 -TextArea.caretForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextArea.caretForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TextArea.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] TextArea.font [active] $defaultFont [UI] -TextArea.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextArea.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TextArea.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -TextArea.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TextArea.inactiveForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] TextArea.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] TextArea.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -TextArea.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextArea.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] TextAreaUI com.formdev.flatlaf.ui.FlatTextAreaUI @@ -1204,20 +1204,20 @@ TextComponent.selectAllOnMouseClick false TextField.background #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] TextField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI] TextField.caretBlinkRate 500 -TextField.caretForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextField.caretForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TextField.darkShadow #7a7d7f HSL 204 2 49 javax.swing.plaf.ColorUIResource [UI] TextField.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] TextField.font [active] $defaultFont [UI] -TextField.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextField.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TextField.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] TextField.iconTextGap 4 TextField.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -TextField.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TextField.inactiveForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] TextField.light #2f3031 HSL 210 2 19 javax.swing.plaf.ColorUIResource [UI] TextField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextField.placeholderForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TextField.placeholderForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] TextField.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -TextField.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextField.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] TextField.shadow #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] TextFieldUI com.formdev.flatlaf.ui.FlatTextFieldUI @@ -1227,15 +1227,15 @@ TextFieldUI com.formdev.flatlaf.ui.FlatTextFieldUI TextPane.background #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] TextPane.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] TextPane.caretBlinkRate 500 -TextPane.caretForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextPane.caretForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TextPane.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] TextPane.font [active] $defaultFont [UI] -TextPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextPane.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TextPane.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -TextPane.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TextPane.inactiveForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] TextPane.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] TextPane.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -TextPane.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextPane.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI @@ -1255,15 +1255,15 @@ TitlePane.closeHoverForeground #ffffff HSL 0 0 100 javax.swing.plaf.Colo TitlePane.closeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] TitlePane.closePressedBackground #c42b1ce6 90% HSLA 5 75 44 90 javax.swing.plaf.ColorUIResource [UI] TitlePane.closePressedForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] -TitlePane.embeddedForeground #959595 HSL 0 0 58 javax.swing.plaf.ColorUIResource [UI] +TitlePane.embeddedForeground #b7b7b7 HSL 0 0 72 javax.swing.plaf.ColorUIResource [UI] TitlePane.font [active] $defaultFont [UI] -TitlePane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TitlePane.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TitlePane.icon [lazy] 16,16 sun.swing.ImageIconUIResource [UI] (sun.awt.image.ToolkitImage) TitlePane.iconMargins 3,8,3,8 javax.swing.plaf.InsetsUIResource [UI] TitlePane.iconSize 16,16 javax.swing.plaf.DimensionUIResource [UI] TitlePane.iconifyIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] TitlePane.inactiveBackground #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] -TitlePane.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TitlePane.inactiveForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] TitlePane.maximizeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] TitlePane.menuBarEmbedded true TitlePane.menuBarTitleGap 40 @@ -1291,7 +1291,7 @@ TitlePane.useWindowDecorations true TitledBorder.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#505254 HSL 210 2 32 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 TitledBorder.font [active] $defaultFont [UI] -TitledBorder.titleColor #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TitledBorder.titleColor #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] #---- TitledPanel ---- @@ -1306,9 +1306,9 @@ ToggleButton.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.F ToggleButton.darkShadow #7a7d7f HSL 204 2 49 javax.swing.plaf.ColorUIResource [UI] ToggleButton.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] ToggleButton.disabledSelectedBackground #55585a HSL 204 3 34 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) -ToggleButton.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.disabledText #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] ToggleButton.font [active] $defaultFont [UI] -ToggleButton.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] ToggleButton.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] ToggleButton.iconTextGap 4 ToggleButton.light #2f3031 HSL 210 2 19 javax.swing.plaf.ColorUIResource [UI] @@ -1316,7 +1316,7 @@ ToggleButton.margin 2,14,2,14 javax.swing.plaf.InsetsUIResource [U ToggleButton.pressedBackground #5d5f62 HSL 216 3 37 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) ToggleButton.rollover true ToggleButton.selectedBackground #676a6c HSL 204 2 41 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) -ToggleButton.selectedForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.selectedForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] ToggleButton.shadow #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] ToggleButton.tab.disabledUnderlineColor #747a7e HSL 204 4 47 javax.swing.plaf.ColorUIResource [UI] ToggleButton.tab.focusBackground #404b5d HSL 217 18 31 javax.swing.plaf.ColorUIResource [UI] @@ -1345,8 +1345,8 @@ ToolBar.floatingBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.Colo ToolBar.floatingForeground #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] ToolBar.focusableButtons false ToolBar.font [active] $defaultFont [UI] -ToolBar.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] -ToolBar.gripColor #aeaeae HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] +ToolBar.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +ToolBar.gripColor #cecece HSL 0 0 81 javax.swing.plaf.ColorUIResource [UI] ToolBar.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] ToolBar.hoverButtonGroupArc 8 ToolBar.hoverButtonGroupBackground #434749 HSL 200 4 27 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) @@ -1374,7 +1374,7 @@ ToolTip.background #1e2021 HSL 200 5 12 javax.swing.plaf.Colo ToolTip.border [lazy] 4,6,4,6 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] ToolTip.borderCornerRadius 4 ToolTip.font [active] $defaultFont [UI] -ToolTip.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ToolTip.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] #---- ToolTipManager ---- @@ -1396,18 +1396,18 @@ Tree.closedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTre Tree.collapsedIcon [lazy] 11,11 com.formdev.flatlaf.icons.FlatTreeCollapsedIcon [UI] Tree.drawsFocusBorderAroundIcon false Tree.dropCellBackground [lazy] #3c588b HSL 219 40 39 javax.swing.plaf.ColorUIResource [UI] -Tree.dropCellForeground [lazy] #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Tree.dropCellForeground [lazy] #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] Tree.dropLineColor [lazy] #6d8ac0 HSL 219 40 59 javax.swing.plaf.ColorUIResource [UI] Tree.editorBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#6d8ac0 HSL 219 40 59 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 Tree.expandedIcon [lazy] 11,11 com.formdev.flatlaf.icons.FlatTreeExpandedIcon [UI] Tree.font [active] $defaultFont [UI] -Tree.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Tree.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Tree.hash #525658 HSL 200 4 33 javax.swing.plaf.ColorUIResource [UI] -Tree.icon.closedColor #aeaeae HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] -Tree.icon.collapsedColor #aeaeae HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] -Tree.icon.expandedColor #aeaeae HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] -Tree.icon.leafColor #aeaeae HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] -Tree.icon.openColor #aeaeae HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.closedColor #cecece HSL 0 0 81 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.collapsedColor #cecece HSL 0 0 81 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.expandedColor #cecece HSL 0 0 81 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.leafColor #cecece HSL 0 0 81 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.openColor #cecece HSL 0 0 81 javax.swing.plaf.ColorUIResource [UI] Tree.leafIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTreeLeafIcon [UI] Tree.leftChildIndent 7 Tree.lineTypeDashed false @@ -1422,14 +1422,14 @@ Tree.scrollsOnExpand true Tree.selectionArc 0 Tree.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] Tree.selectionBorderColor #6d8ac0 HSL 219 40 59 javax.swing.plaf.ColorUIResource [UI] -Tree.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] Tree.selectionInactiveBackground #0f2a3d HSL 205 61 15 javax.swing.plaf.ColorUIResource [UI] -Tree.selectionInactiveForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionInactiveForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Tree.selectionInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Tree.showCellFocusIndicator false Tree.showDefaultIcons false Tree.textBackground #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] -Tree.textForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Tree.textForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Tree.timeFactor 1000 Tree.wideCellRenderer false Tree.wideSelection true @@ -1455,7 +1455,7 @@ UIColorHighlighter.stripingBackground #525658 HSL 200 4 33 javax.swing.pl Viewport.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] Viewport.font [active] $defaultFont [UI] -Viewport.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Viewport.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] ViewportUI com.formdev.flatlaf.ui.FlatViewportUI @@ -1504,13 +1504,13 @@ ViewportUI com.formdev.flatlaf.ui.FlatViewportUI activeCaption #434e60 HSL 217 18 32 javax.swing.plaf.ColorUIResource [UI] activeCaptionBorder #434e60 HSL 217 18 32 javax.swing.plaf.ColorUIResource [UI] -activeCaptionText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +activeCaptionText #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] control #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] controlDkShadow #7a7d7f HSL 204 2 49 javax.swing.plaf.ColorUIResource [UI] controlHighlight #2f3031 HSL 210 2 19 javax.swing.plaf.ColorUIResource [UI] controlLtHighlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] controlShadow #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] -controlText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +controlText #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] defaultFont Segoe UI plain 12 javax.swing.plaf.FontUIResource [UI] desktop #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] @@ -1558,9 +1558,9 @@ html.pendingImage [lazy] 38,38 sun.swing.ImageIconUIResource [UI inactiveCaption #393c3d HSL 195 3 23 javax.swing.plaf.ColorUIResource [UI] inactiveCaptionBorder #393c3d HSL 195 3 23 javax.swing.plaf.ColorUIResource [UI] -inactiveCaptionText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +inactiveCaptionText #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] info #1e2021 HSL 200 5 12 javax.swing.plaf.ColorUIResource [UI] -infoText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +infoText #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] #---- laf ---- @@ -1587,7 +1587,7 @@ medium.font [active] Segoe UI plain 11 javax.swing.plaf.Fo #---- ---- menu #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -menuText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +menuText #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] #---- mini ---- @@ -1624,12 +1624,12 @@ swingx/TaskPaneUI com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI text #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] textHighlight #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] -textHighlightText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] -textInactiveText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] -textText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +textHighlightText #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] +textInactiveText #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] +textText #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] window #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -windowBorder #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] -windowText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +windowBorder #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +windowText #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] #-------- Contrast Ratios -------- @@ -1639,114 +1639,114 @@ windowText #bbbbbb HSL 0 0 73 javax.swing.plaf.Colo #-- activeTitleForeground -- -InternalFrame.activeTitleForeground #bbbbbb #242526 8.0 +InternalFrame.activeTitleForeground #dddddd #242526 11.3 #-- disabledForeground -- -ComboBox.disabledForeground #8c8c8c #3c3f41 3.2 !!!! -Label.disabledForeground #8c8c8c #3c3f41 3.2 !!!! -Spinner.disabledForeground #8c8c8c #3c3f41 3.2 !!!! +ComboBox.disabledForeground #a6a6a6 #3c3f41 4.4 !!! +Label.disabledForeground #a6a6a6 #3c3f41 4.4 !!! +Spinner.disabledForeground #a6a6a6 #3c3f41 4.4 !!! #-- disabledText -- -Button.disabledText #8c8c8c #3c3f41 3.2 !!!! -CheckBox.disabledText #8c8c8c #3c3f41 3.2 !!!! -RadioButton.disabledText #8c8c8c #3c3f41 3.2 !!!! -ToggleButton.disabledText #8c8c8c #3c3f41 3.2 !!!! +Button.disabledText #a6a6a6 #3c3f41 4.4 !!! +CheckBox.disabledText #a6a6a6 #3c3f41 4.4 !!! +RadioButton.disabledText #a6a6a6 #3c3f41 4.4 !!! +ToggleButton.disabledText #a6a6a6 #3c3f41 4.4 !!! #-- dropCellForeground -- -List.dropCellForeground #bbbbbb #3c588b 3.7 !!!! -Table.dropCellForeground #bbbbbb #3c588b 3.7 !!!! -Tree.dropCellForeground #bbbbbb #3c588b 3.7 !!!! +List.dropCellForeground #eeeeee #3c588b 6.1 ! +Table.dropCellForeground #eeeeee #3c588b 6.1 ! +Tree.dropCellForeground #eeeeee #3c588b 6.1 ! #-- focusCellForeground -- -Table.focusCellForeground #bbbbbb #46494b 4.7 !!! +Table.focusCellForeground #dddddd #46494b 6.7 ! #-- foreground -- -Button.foreground #bbbbbb #4e5052 4.2 !!! -Button.default.foreground #bbbbbb #375a81 3.7 !!!! -CheckBox.foreground #bbbbbb #3c3f41 5.5 !! -CheckBoxMenuItem.foreground #bbbbbb #303234 6.7 ! -ColorChooser.foreground #bbbbbb #3c3f41 5.5 !! -ComboBox.foreground #bbbbbb #46494b 4.7 !!! -DesktopIcon.foreground #bbbbbb #555c68 3.5 !!!! -EditorPane.foreground #bbbbbb #46494b 4.7 !!! -FormattedTextField.foreground #bbbbbb #46494b 4.7 !!! -JideButton.foreground #bbbbbb #4e5052 4.2 !!! -JideLabel.foreground #bbbbbb #3c3f41 5.5 !! -JideSplitButton.foreground #bbbbbb #4e5052 4.2 !!! -JideTabbedPane.foreground #bbbbbb #3c3f41 5.5 !! -Label.foreground #bbbbbb #3c3f41 5.5 !! -List.foreground #bbbbbb #46494b 4.7 !!! -Menu.foreground #bbbbbb #303234 6.7 ! -MenuBar.foreground #bbbbbb #303234 6.7 ! -MenuItem.foreground #bbbbbb #303234 6.7 ! -OptionPane.foreground #bbbbbb #3c3f41 5.5 !! -Panel.foreground #bbbbbb #3c3f41 5.5 !! -PasswordField.foreground #bbbbbb #46494b 4.7 !!! -PopupMenu.foreground #bbbbbb #303234 6.7 ! -RadioButton.foreground #bbbbbb #3c3f41 5.5 !! -RadioButtonMenuItem.foreground #bbbbbb #303234 6.7 ! -RootPane.foreground #bbbbbb #3c3f41 5.5 !! -Spinner.foreground #bbbbbb #46494b 4.7 !!! -TabbedPane.foreground #bbbbbb #3c3f41 5.5 !! -Table.foreground #bbbbbb #46494b 4.7 !!! -TableHeader.foreground #bbbbbb #46494b 4.7 !!! -TextArea.foreground #bbbbbb #46494b 4.7 !!! -TextField.foreground #bbbbbb #46494b 4.7 !!! -TextPane.foreground #bbbbbb #46494b 4.7 !!! -TitlePane.foreground #bbbbbb #303234 6.7 ! -ToggleButton.foreground #bbbbbb #4e5052 4.2 !!! -ToolTip.foreground #bbbbbb #1e2021 8.5 -Tree.foreground #bbbbbb #46494b 4.7 !!! +Button.foreground #dddddd #4e5052 6.0 ! +Button.default.foreground #dddddd #375a81 5.3 !! +CheckBox.foreground #dddddd #3c3f41 7.8 +CheckBoxMenuItem.foreground #dddddd #303234 9.5 +ColorChooser.foreground #dddddd #3c3f41 7.8 +ComboBox.foreground #dddddd #46494b 6.7 ! +DesktopIcon.foreground #dddddd #555c68 5.0 !! +EditorPane.foreground #dddddd #46494b 6.7 ! +FormattedTextField.foreground #dddddd #46494b 6.7 ! +JideButton.foreground #dddddd #4e5052 6.0 ! +JideLabel.foreground #dddddd #3c3f41 7.8 +JideSplitButton.foreground #dddddd #4e5052 6.0 ! +JideTabbedPane.foreground #dddddd #3c3f41 7.8 +Label.foreground #dddddd #3c3f41 7.8 +List.foreground #dddddd #46494b 6.7 ! +Menu.foreground #dddddd #303234 9.5 +MenuBar.foreground #dddddd #303234 9.5 +MenuItem.foreground #dddddd #303234 9.5 +OptionPane.foreground #dddddd #3c3f41 7.8 +Panel.foreground #dddddd #3c3f41 7.8 +PasswordField.foreground #dddddd #46494b 6.7 ! +PopupMenu.foreground #dddddd #303234 9.5 +RadioButton.foreground #dddddd #3c3f41 7.8 +RadioButtonMenuItem.foreground #dddddd #303234 9.5 +RootPane.foreground #dddddd #3c3f41 7.8 +Spinner.foreground #dddddd #46494b 6.7 ! +TabbedPane.foreground #dddddd #3c3f41 7.8 +Table.foreground #dddddd #46494b 6.7 ! +TableHeader.foreground #dddddd #46494b 6.7 ! +TextArea.foreground #dddddd #46494b 6.7 ! +TextField.foreground #dddddd #46494b 6.7 ! +TextPane.foreground #dddddd #46494b 6.7 ! +TitlePane.foreground #dddddd #303234 9.5 +ToggleButton.foreground #dddddd #4e5052 6.0 ! +ToolTip.foreground #dddddd #1e2021 12.0 +Tree.foreground #dddddd #46494b 6.7 ! #-- inactiveForeground -- -EditorPane.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! -FormattedTextField.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! -PasswordField.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! -TextArea.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! -TextField.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! -TextPane.inactiveForeground #8c8c8c #3c3f41 3.2 !!!! -TitlePane.inactiveForeground #8c8c8c #303234 3.8 !!!! +EditorPane.inactiveForeground #a6a6a6 #3c3f41 4.4 !!! +FormattedTextField.inactiveForeground #a6a6a6 #3c3f41 4.4 !!! +PasswordField.inactiveForeground #a6a6a6 #3c3f41 4.4 !!! +TextArea.inactiveForeground #a6a6a6 #3c3f41 4.4 !!! +TextField.inactiveForeground #a6a6a6 #3c3f41 4.4 !!! +TextPane.inactiveForeground #a6a6a6 #3c3f41 4.4 !!! +TitlePane.inactiveForeground #a6a6a6 #303234 5.3 !! #-- inactiveTitleForeground -- -InternalFrame.inactiveTitleForeground #8c8c8c #303233 3.8 !!!! +InternalFrame.inactiveTitleForeground #a6a6a6 #303233 5.3 !! #-- monthStringForeground -- -JXMonthView.monthStringForeground #bbbbbb #4c5052 4.2 !!! +JXMonthView.monthStringForeground #dddddd #4c5052 6.0 ! #-- selectedForeground -- -Button.selectedForeground #bbbbbb #676a6c 2.8 !!!!! -ToggleButton.selectedForeground #bbbbbb #676a6c 2.8 !!!!! +Button.selectedForeground #dddddd #676a6c 4.0 !!! +ToggleButton.selectedForeground #dddddd #676a6c 4.0 !!! #-- selectionBackground -- -ProgressBar.selectionBackground #bbbbbb #505456 4.0 !!! +ProgressBar.selectionBackground #dddddd #505456 5.6 !! #-- selectionForeground -- -CheckBoxMenuItem.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -ComboBox.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -EditorPane.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -FormattedTextField.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -List.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -Menu.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -MenuItem.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -PasswordField.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -ProgressBar.selectionForeground #bbbbbb #4c87c8 2.0 !!!!! -RadioButtonMenuItem.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -Table.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -TextArea.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -TextField.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -TextPane.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! -Tree.selectionForeground #bbbbbb #4b6eaf 2.6 !!!!! +CheckBoxMenuItem.selectionForeground #eeeeee #4b6eaf 4.4 !!! +ComboBox.selectionForeground #eeeeee #4b6eaf 4.4 !!! +EditorPane.selectionForeground #eeeeee #4b6eaf 4.4 !!! +FormattedTextField.selectionForeground #eeeeee #4b6eaf 4.4 !!! +List.selectionForeground #eeeeee #4b6eaf 4.4 !!! +Menu.selectionForeground #eeeeee #4b6eaf 4.4 !!! +MenuItem.selectionForeground #eeeeee #4b6eaf 4.4 !!! +PasswordField.selectionForeground #eeeeee #4b6eaf 4.4 !!! +ProgressBar.selectionForeground #eeeeee #4c87c8 3.2 !!!! +RadioButtonMenuItem.selectionForeground #eeeeee #4b6eaf 4.4 !!! +Table.selectionForeground #eeeeee #4b6eaf 4.4 !!! +TextArea.selectionForeground #eeeeee #4b6eaf 4.4 !!! +TextField.selectionForeground #eeeeee #4b6eaf 4.4 !!! +TextPane.selectionForeground #eeeeee #4b6eaf 4.4 !!! +Tree.selectionForeground #eeeeee #4b6eaf 4.4 !!! #-- selectionInactiveForeground -- -List.selectionInactiveForeground #bbbbbb #0f2a3d 7.7 -Table.selectionInactiveForeground #bbbbbb #0f2a3d 7.7 -Tree.selectionInactiveForeground #bbbbbb #0f2a3d 7.7 +List.selectionInactiveForeground #dddddd #0f2a3d 10.9 +Table.selectionInactiveForeground #dddddd #0f2a3d 10.9 +Tree.selectionInactiveForeground #dddddd #0f2a3d 10.9 #-- specialTitleForeground -- TaskPane.specialTitleForeground #222222 #afafaf 7.3 #-- textForeground -- -Tree.textForeground #bbbbbb #46494b 4.7 !!! +Tree.textForeground #dddddd #46494b 6.7 ! #-- titleForeground -- -JXTitledPanel.titleForeground #bbbbbb #4c5052 4.2 !!! +JXTitledPanel.titleForeground #dddddd #4c5052 6.0 ! diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt index 90cda52f..ff24fe83 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt @@ -80,9 +80,9 @@ Button.default.pressedBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf Button.defaultButtonFollowsFocus false Button.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] Button.disabledBorderColor #cecece HSL 0 0 81 javax.swing.plaf.ColorUIResource [UI] -Button.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Button.disabledForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] Button.disabledSelectedBackground #dedede HSL 0 0 87 com.formdev.flatlaf.util.DerivedColor [UI] darken(13% autoInverse) -Button.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Button.disabledText #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] Button.focusedBackground #eaf3fb HSL 208 68 95 javax.swing.plaf.ColorUIResource [UI] Button.focusedBorderColor #89b0d4 HSL 209 47 68 javax.swing.plaf.ColorUIResource [UI] Button.font [active] $defaultFont [UI] @@ -120,7 +120,7 @@ Caret.width [active] 1 CheckBox.arc 4 CheckBox.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] CheckBox.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -CheckBox.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +CheckBox.disabledText #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] CheckBox.font [active] $defaultFont [UI] CheckBox.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] @@ -164,7 +164,7 @@ CheckBoxMenuItem.background #ffffff HSL 0 0 100 javax.swing.plaf.Colo CheckBoxMenuItem.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMenuItemBorder [UI] CheckBoxMenuItem.borderPainted true CheckBoxMenuItem.checkIcon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxMenuItemIcon [UI] -CheckBoxMenuItem.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.disabledForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.font [active] $defaultFont [UI] CheckBoxMenuItem.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.icon.checkmarkColor #4e9de7 HSL 209 76 61 javax.swing.plaf.ColorUIResource [UI] @@ -216,7 +216,7 @@ ComboBox.buttonSeparatorColor #c2c2c2 HSL 0 0 76 javax.swing.plaf.Colo ComboBox.buttonShadow #c2c2c2 HSL 0 0 76 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonStyle auto ComboBox.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] -ComboBox.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +ComboBox.disabledForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] ComboBox.editorColumns 0 ComboBox.font [active] $defaultFont [UI] ComboBox.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] @@ -295,7 +295,7 @@ EditorPane.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.Colo EditorPane.font [active] $defaultFont [UI] EditorPane.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] EditorPane.inactiveBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] -EditorPane.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +EditorPane.inactiveForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] EditorPane.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] EditorPane.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] EditorPane.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] @@ -336,9 +336,9 @@ FormattedTextField.font [active] $defaultFont [UI] FormattedTextField.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.iconTextGap 4 FormattedTextField.inactiveBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.inactiveForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -FormattedTextField.placeholderForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.placeholderForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] FormattedTextFieldUI com.formdev.flatlaf.ui.FlatFormattedTextFieldUI @@ -369,7 +369,7 @@ HelpButton.questionMarkColor #4e9de7 HSL 209 76 61 javax.swing.plaf.Colo #---- Hyperlink ---- -Hyperlink.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Hyperlink.disabledText #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] Hyperlink.linkColor #236db2 HSL 209 67 42 javax.swing.plaf.ColorUIResource [UI] Hyperlink.visitedColor #236db2 HSL 209 67 42 javax.swing.plaf.ColorUIResource [UI] HyperlinkUI com.formdev.flatlaf.swingx.ui.FlatHyperlinkUI @@ -405,7 +405,7 @@ InternalFrame.inactiveBorderColor #c2c2c2 HSL 0 0 76 javax.swing.plaf.C InternalFrame.inactiveDropShadowInsets 3,3,4,4 javax.swing.plaf.InsetsUIResource [UI] InternalFrame.inactiveDropShadowOpacity 0.5 InternalFrame.inactiveTitleBackground #fafafa HSL 0 0 98 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.inactiveTitleForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.inactiveTitleForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] InternalFrame.maximizeIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameMaximizeIcon [UI] InternalFrame.minimizeIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameRestoreIcon [UI] InternalFrame.titleFont [active] $defaultFont [UI] @@ -448,17 +448,17 @@ JXHeader.titleFont [active] Segoe UI bold 12 javax.swing.plaf.Fon JXMonthView.arrowColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] JXMonthView.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] JXMonthView.daysOfTheWeekForeground #444444 HSL 0 0 27 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.disabledArrowColor #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.disabledArrowColor #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] JXMonthView.flaggedDayForeground #e02222 HSL 0 75 51 javax.swing.plaf.ColorUIResource [UI] JXMonthView.font [active] $defaultFont [UI] -JXMonthView.leadingDayForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.leadingDayForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon [UI] JXMonthView.monthStringBackground #dfdfdf HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthStringForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon [UI] JXMonthView.selectedBackground #bfdaf2 HSL 208 66 85 javax.swing.plaf.ColorUIResource [UI] JXMonthView.todayColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.trailingDayForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.trailingDayForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] JXMonthView.unselectableDayForeground #e02222 HSL 0 75 51 javax.swing.plaf.ColorUIResource [UI] JXMonthView.weekOfTheYearForeground #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] @@ -493,7 +493,7 @@ JideButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideButtonUI #---- JideLabel ---- JideLabel.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] -JideLabel.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +JideLabel.disabledForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] JideLabel.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] JideLabelUI com.formdev.flatlaf.jideoss.ui.FlatJideLabelUI @@ -536,7 +536,7 @@ JideTabbedPaneUI com.formdev.flatlaf.jideoss.ui.FlatJideTabbedPane #---- Label ---- Label.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] -Label.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Label.disabledForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] Label.disabledShadow #c2c2c2 HSL 0 0 76 javax.swing.plaf.ColorUIResource [UI] Label.font [active] $defaultFont [UI] Label.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] @@ -581,7 +581,7 @@ Menu.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.F Menu.borderPainted true Menu.cancelMode hideLastSubmenu Menu.crossMenuMnemonic true -Menu.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Menu.disabledForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] Menu.font [active] $defaultFont [UI] Menu.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] Menu.icon.arrowColor #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] @@ -632,7 +632,7 @@ MenuItem.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.F MenuItem.borderPainted true MenuItem.checkBackground #bfd9f2 HSL 209 66 85 com.formdev.flatlaf.util.DerivedColor [UI] lighten(40%) MenuItem.checkMargins 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] -MenuItem.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +MenuItem.disabledForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] MenuItem.font [active] $defaultFont [UI] MenuItem.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] MenuItem.iconTextGap 6 @@ -730,9 +730,9 @@ PasswordField.font [active] $defaultFont [UI] PasswordField.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] PasswordField.iconTextGap 4 PasswordField.inactiveBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] -PasswordField.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +PasswordField.inactiveForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] PasswordField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -PasswordField.placeholderForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +PasswordField.placeholderForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] PasswordField.revealIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatRevealIcon [UI] PasswordField.revealIconColor #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] PasswordField.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] @@ -801,7 +801,7 @@ ProgressBarUI com.formdev.flatlaf.ui.FlatProgressBarUI RadioButton.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] RadioButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] RadioButton.darkShadow #9c9c9c HSL 0 0 61 javax.swing.plaf.ColorUIResource [UI] -RadioButton.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +RadioButton.disabledText #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] RadioButton.font [active] $defaultFont [UI] RadioButton.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] RadioButton.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] @@ -827,7 +827,7 @@ RadioButtonMenuItem.background #ffffff HSL 0 0 100 javax.swing.plaf.Colo RadioButtonMenuItem.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMenuItemBorder [UI] RadioButtonMenuItem.borderPainted true RadioButtonMenuItem.checkIcon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonMenuItemIcon [UI] -RadioButtonMenuItem.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.disabledForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.font [active] $defaultFont [UI] RadioButtonMenuItem.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.margin 3,6,3,6 javax.swing.plaf.InsetsUIResource [UI] @@ -973,7 +973,7 @@ Slider.pressedThumbColor #1a70c0 HSL 209 76 43 com.formdev.flatlaf.u Slider.shadow #c2c2c2 HSL 0 0 76 javax.swing.plaf.ColorUIResource [UI] Slider.thumbColor #2285e1 HSL 209 76 51 javax.swing.plaf.ColorUIResource [UI] Slider.thumbSize 12,12 javax.swing.plaf.DimensionUIResource [UI] -Slider.tickColor #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Slider.tickColor #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] Slider.trackColor #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] Slider.trackValueColor #2285e1 HSL 209 76 51 javax.swing.plaf.ColorUIResource [UI] Slider.trackWidth 2 @@ -995,7 +995,7 @@ Spinner.buttonPressedArrowColor #b3b3b3 HSL 0 0 70 com.formdev.flatlaf. Spinner.buttonSeparatorColor #c2c2c2 HSL 0 0 76 javax.swing.plaf.ColorUIResource [UI] Spinner.buttonStyle button Spinner.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] -Spinner.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Spinner.disabledForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] Spinner.editorAlignment 11 Spinner.editorBorderPainted false Spinner.font [active] $defaultFont [UI] @@ -1049,7 +1049,7 @@ TabbedPane.closeArc 4 TabbedPane.closeCrossFilledSize 7.5 TabbedPane.closeCrossLineWidth 1 TabbedPane.closeCrossPlainSize 7.5 -TabbedPane.closeForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closeForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] TabbedPane.closeHoverBackground #bfbfbf HSL 0 0 75 com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) TabbedPane.closeHoverForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] TabbedPane.closeIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTabbedPaneCloseIcon [UI] @@ -1060,7 +1060,7 @@ TabbedPane.contentAreaColor #c2c2c2 HSL 0 0 76 javax.swing.plaf.Colo TabbedPane.contentOpaque true TabbedPane.contentSeparatorHeight 1 TabbedPane.darkShadow #9c9c9c HSL 0 0 61 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.disabledForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] TabbedPane.disabledUnderlineColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] TabbedPane.focus #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] TabbedPane.focusColor #dee6ed HSL 208 29 90 javax.swing.plaf.ColorUIResource [UI] @@ -1190,7 +1190,7 @@ TextArea.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.Colo TextArea.font [active] $defaultFont [UI] TextArea.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] TextArea.inactiveBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] -TextArea.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TextArea.inactiveForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] TextArea.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] TextArea.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] TextArea.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] @@ -1217,10 +1217,10 @@ TextField.foreground #000000 HSL 0 0 0 javax.swing.plaf.Colo TextField.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TextField.iconTextGap 4 TextField.inactiveBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] -TextField.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TextField.inactiveForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] TextField.light #e1e1e1 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] TextField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextField.placeholderForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TextField.placeholderForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] TextField.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] TextField.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TextField.shadow #c2c2c2 HSL 0 0 76 javax.swing.plaf.ColorUIResource [UI] @@ -1237,7 +1237,7 @@ TextPane.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.Colo TextPane.font [active] $defaultFont [UI] TextPane.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] TextPane.inactiveBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] -TextPane.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TextPane.inactiveForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] TextPane.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] TextPane.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] TextPane.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] @@ -1268,7 +1268,7 @@ TitlePane.iconMargins 3,8,3,8 javax.swing.plaf.InsetsUIResource [UI] TitlePane.iconSize 16,16 javax.swing.plaf.DimensionUIResource [UI] TitlePane.iconifyIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] TitlePane.inactiveBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] -TitlePane.inactiveForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +TitlePane.inactiveForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] TitlePane.maximizeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] TitlePane.menuBarEmbedded true TitlePane.menuBarTitleGap 40 @@ -1311,7 +1311,7 @@ ToggleButton.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.F ToggleButton.darkShadow #9c9c9c HSL 0 0 61 javax.swing.plaf.ColorUIResource [UI] ToggleButton.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] ToggleButton.disabledSelectedBackground #dedede HSL 0 0 87 com.formdev.flatlaf.util.DerivedColor [UI] darken(13% autoInverse) -ToggleButton.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.disabledText #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] ToggleButton.font [active] $defaultFont [UI] ToggleButton.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] ToggleButton.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] @@ -1630,7 +1630,7 @@ swingx/TaskPaneUI com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI text #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] textHighlight #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] textHighlightText #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] -textInactiveText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +textInactiveText #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] textText #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] window #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] windowBorder #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] @@ -1647,15 +1647,15 @@ windowText #000000 HSL 0 0 0 javax.swing.plaf.Colo InternalFrame.activeTitleForeground #000000 #ffffff 21.0 #-- disabledForeground -- -ComboBox.disabledForeground #8c8c8c #f2f2f2 3.0 !!!! -Label.disabledForeground #8c8c8c #f2f2f2 3.0 !!!! -Spinner.disabledForeground #8c8c8c #f2f2f2 3.0 !!!! +ComboBox.disabledForeground #808080 #f2f2f2 3.5 !!!! +Label.disabledForeground #808080 #f2f2f2 3.5 !!!! +Spinner.disabledForeground #808080 #f2f2f2 3.5 !!!! #-- disabledText -- -Button.disabledText #8c8c8c #f2f2f2 3.0 !!!! -CheckBox.disabledText #8c8c8c #f2f2f2 3.0 !!!! -RadioButton.disabledText #8c8c8c #f2f2f2 3.0 !!!! -ToggleButton.disabledText #8c8c8c #f2f2f2 3.0 !!!! +Button.disabledText #808080 #f2f2f2 3.5 !!!! +CheckBox.disabledText #808080 #f2f2f2 3.5 !!!! +RadioButton.disabledText #808080 #f2f2f2 3.5 !!!! +ToggleButton.disabledText #808080 #f2f2f2 3.5 !!!! #-- dropCellForeground -- List.dropCellForeground #ffffff #3f8fd9 3.4 !!!! @@ -1704,16 +1704,16 @@ ToolTip.foreground #000000 #fafafa 20.1 Tree.foreground #000000 #ffffff 21.0 #-- inactiveForeground -- -EditorPane.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! -FormattedTextField.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! -PasswordField.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! -TextArea.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! -TextField.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! -TextPane.inactiveForeground #8c8c8c #f2f2f2 3.0 !!!! -TitlePane.inactiveForeground #8c8c8c #ffffff 3.4 !!!! +EditorPane.inactiveForeground #808080 #f2f2f2 3.5 !!!! +FormattedTextField.inactiveForeground #808080 #f2f2f2 3.5 !!!! +PasswordField.inactiveForeground #808080 #f2f2f2 3.5 !!!! +TextArea.inactiveForeground #808080 #f2f2f2 3.5 !!!! +TextField.inactiveForeground #808080 #f2f2f2 3.5 !!!! +TextPane.inactiveForeground #808080 #f2f2f2 3.5 !!!! +TitlePane.inactiveForeground #808080 #ffffff 3.9 !!!! #-- inactiveTitleForeground -- -InternalFrame.inactiveTitleForeground #8c8c8c #fafafa 3.2 !!!! +InternalFrame.inactiveTitleForeground #808080 #fafafa 3.8 !!!! #-- monthStringForeground -- JXMonthView.monthStringForeground #000000 #dfdfdf 15.8 diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt index fdd8ff3f..352a5d70 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt @@ -73,7 +73,7 @@ Button.default.borderColor #268eff HSL 211 100 57 javax.swing.plaf.Colo Button.default.borderWidth 0 Button.default.focusColor #29acff80 50% HSLA 203 100 58 50 javax.swing.plaf.ColorUIResource [UI] Button.default.focusedBorderColor #2e92ff HSL 211 100 59 javax.swing.plaf.ColorUIResource [UI] -Button.default.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +Button.default.foreground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Button.default.hoverBackground #0f82ff HSL 211 100 53 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) Button.default.hoverBorderColor #2e92ff HSL 211 100 59 javax.swing.plaf.ColorUIResource [UI] Button.default.pressedBackground #1f8aff HSL 211 100 56 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) @@ -794,7 +794,7 @@ ProgressBar.foreground #007aff HSL 211 100 50 javax.swing.plaf.Colo ProgressBar.horizontalSize 146,4 javax.swing.plaf.DimensionUIResource [UI] ProgressBar.repaintInterval 15 ProgressBar.selectionBackground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] -ProgressBar.selectionForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] ProgressBar.verticalSize 4,146 javax.swing.plaf.DimensionUIResource [UI] ProgressBarUI com.formdev.flatlaf.ui.FlatProgressBarUI @@ -1326,7 +1326,7 @@ ToggleButton.margin 2,14,2,14 javax.swing.plaf.InsetsUIResource [U ToggleButton.pressedBackground #656565 HSL 0 0 40 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) ToggleButton.rollover true ToggleButton.selectedBackground #898989 HSL 0 0 54 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20% autoInverse) -ToggleButton.selectedForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.selectedForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ToggleButton.shadow #ffffff19 10% HSLA 0 0 100 10 javax.swing.plaf.ColorUIResource [UI] ToggleButton.tab.disabledUnderlineColor #595959 HSL 0 0 35 javax.swing.plaf.ColorUIResource [UI] ToggleButton.tab.focusBackground #172c4a HSL 215 53 19 javax.swing.plaf.ColorUIResource [UI] @@ -1672,7 +1672,7 @@ Table.focusCellForeground #dddddd #282828 10.9 #-- foreground -- Button.foreground #dddddd #565656 5.4 !! -Button.default.foreground #dddddd #007aff 3.0 !!!! +Button.default.foreground #ffffff #007aff 4.0 !!! CheckBox.foreground #dddddd #1e1e1e 12.3 CheckBoxMenuItem.foreground #dddddd #323232 9.4 ColorChooser.foreground #dddddd #1e1e1e 12.3 @@ -1725,7 +1725,7 @@ JXMonthView.monthStringForeground #dddddd #4c5052 6.0 ! #-- selectedForeground -- Button.selectedForeground #dddddd #707070 3.6 !!!! -ToggleButton.selectedForeground #dddddd #898989 2.6 !!!!! +ToggleButton.selectedForeground #ffffff #898989 3.5 !!!! #-- selectionBackground -- ProgressBar.selectionBackground #dddddd #323232 9.4 @@ -1740,7 +1740,7 @@ Menu.selectionForeground #ffffff #1458b8 6.7 ! MenuBar.selectionForeground #dddddd #585858 5.2 !! MenuItem.selectionForeground #ffffff #1458b8 6.7 ! PasswordField.selectionForeground #ffffff #3d6490 6.1 ! -ProgressBar.selectionForeground #dddddd #007aff 3.0 !!!! +ProgressBar.selectionForeground #eeeeee #007aff 3.5 !!!! RadioButtonMenuItem.selectionForeground #ffffff #1458b8 6.7 ! Table.selectionForeground #ffffff #0054cc 6.7 ! TextArea.selectionForeground #ffffff #3d6490 6.1 ! diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt index 51fa1dad..5016b3b5 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt @@ -80,9 +80,9 @@ Button.default.pressedBackground #0062cc HSL 211 100 40 com.formdev.flatlaf Button.defaultButtonFollowsFocus false Button.disabledBackground #fafafa HSL 0 0 98 javax.swing.plaf.ColorUIResource [UI] Button.disabledBorderColor #00000019 10% HSLA 0 0 0 10 javax.swing.plaf.ColorUIResource [UI] -Button.disabledForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +Button.disabledForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] Button.disabledSelectedBackground #dedede HSL 0 0 87 com.formdev.flatlaf.util.DerivedColor [UI] darken(13% autoInverse) -Button.disabledText #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +Button.disabledText #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] Button.focusedBorderColor #005fe68d 55% HSLA 215 100 45 55 javax.swing.plaf.ColorUIResource [UI] Button.font [active] $defaultFont [UI] Button.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] @@ -119,7 +119,7 @@ Caret.width [active] 1 CheckBox.arc 7 CheckBox.background #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] CheckBox.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -CheckBox.disabledText #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +CheckBox.disabledText #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] CheckBox.font [active] $defaultFont [UI] CheckBox.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] @@ -169,7 +169,7 @@ CheckBoxMenuItem.background #ececec HSL 0 0 93 javax.swing.plaf.Colo CheckBoxMenuItem.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMenuItemBorder [UI] CheckBoxMenuItem.borderPainted true CheckBoxMenuItem.checkIcon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxMenuItemIcon [UI] -CheckBoxMenuItem.disabledForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.disabledForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.font [active] $defaultFont [UI] CheckBoxMenuItem.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.icon.checkmarkColor #007aff HSL 211 100 50 javax.swing.plaf.ColorUIResource [UI] @@ -221,7 +221,7 @@ ComboBox.buttonSeparatorColor #00000026 15% HSLA 0 0 0 15 javax.swin ComboBox.buttonShadow #00000026 15% HSLA 0 0 0 15 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonStyle mac ComboBox.disabledBackground #fafafa HSL 0 0 98 javax.swing.plaf.ColorUIResource [UI] -ComboBox.disabledForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +ComboBox.disabledForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] ComboBox.editorColumns 0 ComboBox.font [active] $defaultFont [UI] ComboBox.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] @@ -301,7 +301,7 @@ EditorPane.disabledBackground #fafafa HSL 0 0 98 javax.swing.plaf.Colo EditorPane.font [active] $defaultFont [UI] EditorPane.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] EditorPane.inactiveBackground #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] -EditorPane.inactiveForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +EditorPane.inactiveForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] EditorPane.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] EditorPane.selectionBackground #b3d7ff HSL 212 100 85 javax.swing.plaf.ColorUIResource [UI] EditorPane.selectionForeground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] @@ -342,9 +342,9 @@ FormattedTextField.font [active] $defaultFont [UI] FormattedTextField.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.iconTextGap 4 FormattedTextField.inactiveBackground #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.inactiveForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.inactiveForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -FormattedTextField.placeholderForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.placeholderForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.selectionBackground #b3d7ff HSL 212 100 85 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.selectionForeground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] FormattedTextFieldUI com.formdev.flatlaf.ui.FlatFormattedTextFieldUI @@ -374,7 +374,7 @@ HelpButton.questionMarkColor #007aff HSL 211 100 50 javax.swing.plaf.Colo #---- Hyperlink ---- -Hyperlink.disabledText #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +Hyperlink.disabledText #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] Hyperlink.linkColor #007aff HSL 211 100 50 javax.swing.plaf.ColorUIResource [UI] Hyperlink.visitedColor #007aff HSL 211 100 50 javax.swing.plaf.ColorUIResource [UI] HyperlinkUI com.formdev.flatlaf.swingx.ui.FlatHyperlinkUI @@ -410,7 +410,7 @@ InternalFrame.inactiveBorderColor #c5c5c5 HSL 0 0 77 javax.swing.plaf.C InternalFrame.inactiveDropShadowInsets 3,3,4,4 javax.swing.plaf.InsetsUIResource [UI] InternalFrame.inactiveDropShadowOpacity 0.5 InternalFrame.inactiveTitleBackground #fafafa HSL 0 0 98 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.inactiveTitleForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.inactiveTitleForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] InternalFrame.maximizeIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameMaximizeIcon [UI] InternalFrame.minimizeIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameRestoreIcon [UI] InternalFrame.titleFont [active] $defaultFont [UI] @@ -453,17 +453,17 @@ JXHeader.titleFont [active] Segoe UI bold 12 javax.swing.plaf.Fon JXMonthView.arrowColor #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] JXMonthView.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] JXMonthView.daysOfTheWeekForeground #444444 HSL 0 0 27 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.disabledArrowColor #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.disabledArrowColor #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] JXMonthView.flaggedDayForeground #e02222 HSL 0 75 51 javax.swing.plaf.ColorUIResource [UI] JXMonthView.font [active] $defaultFont [UI] -JXMonthView.leadingDayForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.leadingDayForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon [UI] JXMonthView.monthStringBackground #dfdfdf HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthStringForeground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon [UI] JXMonthView.selectedBackground #b3d2ff HSL 216 100 85 javax.swing.plaf.ColorUIResource [UI] JXMonthView.todayColor #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.trailingDayForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.trailingDayForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] JXMonthView.unselectableDayForeground #e02222 HSL 0 75 51 javax.swing.plaf.ColorUIResource [UI] JXMonthView.weekOfTheYearForeground #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] @@ -498,7 +498,7 @@ JideButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideButtonUI #---- JideLabel ---- JideLabel.background #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] -JideLabel.disabledForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +JideLabel.disabledForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] JideLabel.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] JideLabelUI com.formdev.flatlaf.jideoss.ui.FlatJideLabelUI @@ -541,7 +541,7 @@ JideTabbedPaneUI com.formdev.flatlaf.jideoss.ui.FlatJideTabbedPane #---- Label ---- Label.background #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] -Label.disabledForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +Label.disabledForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] Label.disabledShadow #00000026 15% HSLA 0 0 0 15 javax.swing.plaf.ColorUIResource [UI] Label.font [active] $defaultFont [UI] Label.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] @@ -586,7 +586,7 @@ Menu.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.F Menu.borderPainted true Menu.cancelMode hideLastSubmenu Menu.crossMenuMnemonic true -Menu.disabledForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +Menu.disabledForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] Menu.font [active] $defaultFont [UI] Menu.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] Menu.icon.arrowColor #7d7d7d HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] @@ -639,7 +639,7 @@ MenuItem.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.F MenuItem.borderPainted true MenuItem.checkBackground #bddcff HSL 212 100 87 com.formdev.flatlaf.util.DerivedColor [UI] lighten(25%) MenuItem.checkMargins 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] -MenuItem.disabledForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +MenuItem.disabledForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] MenuItem.font [active] $defaultFont [UI] MenuItem.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] MenuItem.iconTextGap 6 @@ -737,9 +737,9 @@ PasswordField.font [active] $defaultFont [UI] PasswordField.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] PasswordField.iconTextGap 4 PasswordField.inactiveBackground #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] -PasswordField.inactiveForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +PasswordField.inactiveForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] PasswordField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -PasswordField.placeholderForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +PasswordField.placeholderForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] PasswordField.revealIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatRevealIcon [UI] PasswordField.revealIconColor #7d7d7d HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] PasswordField.selectionBackground #b3d7ff HSL 212 100 85 javax.swing.plaf.ColorUIResource [UI] @@ -808,7 +808,7 @@ ProgressBarUI com.formdev.flatlaf.ui.FlatProgressBarUI RadioButton.background #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] RadioButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] RadioButton.darkShadow #00000026 15% HSLA 0 0 0 15 javax.swing.plaf.ColorUIResource [UI] -RadioButton.disabledText #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +RadioButton.disabledText #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] RadioButton.font [active] $defaultFont [UI] RadioButton.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] RadioButton.highlight #40404026 15% HSLA 0 0 25 15 javax.swing.plaf.ColorUIResource [UI] @@ -835,7 +835,7 @@ RadioButtonMenuItem.background #ececec HSL 0 0 93 javax.swing.plaf.Colo RadioButtonMenuItem.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMenuItemBorder [UI] RadioButtonMenuItem.borderPainted true RadioButtonMenuItem.checkIcon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonMenuItemIcon [UI] -RadioButtonMenuItem.disabledForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.disabledForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.font [active] $defaultFont [UI] RadioButtonMenuItem.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.margin 3,11,3,11 javax.swing.plaf.InsetsUIResource [UI] @@ -982,7 +982,7 @@ Slider.shadow #00000026 15% HSLA 0 0 0 15 javax.swin Slider.thumbBorderColor #00000026 15% HSLA 0 0 0 15 javax.swing.plaf.ColorUIResource [UI] Slider.thumbColor #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Slider.thumbSize 14,14 javax.swing.plaf.DimensionUIResource [UI] -Slider.tickColor #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +Slider.tickColor #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] Slider.trackColor #e4e4e4 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] Slider.trackValueColor #007aff HSL 211 100 50 javax.swing.plaf.ColorUIResource [UI] Slider.trackWidth 3 @@ -1004,7 +1004,7 @@ Spinner.buttonPressedArrowColor #737373 HSL 0 0 45 com.formdev.flatlaf. Spinner.buttonSeparatorColor #00000026 15% HSLA 0 0 0 15 javax.swing.plaf.ColorUIResource [UI] Spinner.buttonStyle mac Spinner.disabledBackground #fafafa HSL 0 0 98 javax.swing.plaf.ColorUIResource [UI] -Spinner.disabledForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +Spinner.disabledForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] Spinner.editorAlignment 11 Spinner.editorBorderPainted false Spinner.font [active] $defaultFont [UI] @@ -1058,7 +1058,7 @@ TabbedPane.closeArc 4 TabbedPane.closeCrossFilledSize 7.5 TabbedPane.closeCrossLineWidth 1 TabbedPane.closeCrossPlainSize 7.5 -TabbedPane.closeForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closeForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] TabbedPane.closeHoverBackground #c3c3c3 HSL 0 0 76 com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) TabbedPane.closeHoverForeground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] TabbedPane.closeIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTabbedPaneCloseIcon [UI] @@ -1069,7 +1069,7 @@ TabbedPane.contentAreaColor #00000026 15% HSLA 0 0 0 15 javax.swin TabbedPane.contentOpaque true TabbedPane.contentSeparatorHeight 1 TabbedPane.darkShadow #00000026 15% HSLA 0 0 0 15 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.disabledForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.disabledForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] TabbedPane.disabledUnderlineColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] TabbedPane.focus #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] TabbedPane.focusColor #dde7f4 HSL 214 51 91 javax.swing.plaf.ColorUIResource [UI] @@ -1199,7 +1199,7 @@ TextArea.disabledBackground #fafafa HSL 0 0 98 javax.swing.plaf.Colo TextArea.font [active] $defaultFont [UI] TextArea.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] TextArea.inactiveBackground #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] -TextArea.inactiveForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +TextArea.inactiveForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] TextArea.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] TextArea.selectionBackground #b3d7ff HSL 212 100 85 javax.swing.plaf.ColorUIResource [UI] TextArea.selectionForeground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] @@ -1226,10 +1226,10 @@ TextField.foreground #262626 HSL 0 0 15 javax.swing.plaf.Colo TextField.highlight #40404026 15% HSLA 0 0 25 15 javax.swing.plaf.ColorUIResource [UI] TextField.iconTextGap 4 TextField.inactiveBackground #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] -TextField.inactiveForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +TextField.inactiveForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] TextField.light #1f1f1f26 15% HSLA 0 0 12 15 javax.swing.plaf.ColorUIResource [UI] TextField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextField.placeholderForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +TextField.placeholderForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] TextField.selectionBackground #b3d7ff HSL 212 100 85 javax.swing.plaf.ColorUIResource [UI] TextField.selectionForeground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] TextField.shadow #00000026 15% HSLA 0 0 0 15 javax.swing.plaf.ColorUIResource [UI] @@ -1246,7 +1246,7 @@ TextPane.disabledBackground #fafafa HSL 0 0 98 javax.swing.plaf.Colo TextPane.font [active] $defaultFont [UI] TextPane.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] TextPane.inactiveBackground #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] -TextPane.inactiveForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +TextPane.inactiveForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] TextPane.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] TextPane.selectionBackground #b3d7ff HSL 212 100 85 javax.swing.plaf.ColorUIResource [UI] TextPane.selectionForeground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] @@ -1277,7 +1277,7 @@ TitlePane.iconMargins 3,8,3,8 javax.swing.plaf.InsetsUIResource [UI] TitlePane.iconSize 16,16 javax.swing.plaf.DimensionUIResource [UI] TitlePane.iconifyIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] TitlePane.inactiveBackground #ececec HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] -TitlePane.inactiveForeground #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +TitlePane.inactiveForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] TitlePane.maximizeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] TitlePane.menuBarEmbedded true TitlePane.menuBarTitleGap 40 @@ -1320,7 +1320,7 @@ ToggleButton.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.F ToggleButton.darkShadow #00000026 15% HSLA 0 0 0 15 javax.swing.plaf.ColorUIResource [UI] ToggleButton.disabledBackground #fafafa HSL 0 0 98 javax.swing.plaf.ColorUIResource [UI] ToggleButton.disabledSelectedBackground #dedede HSL 0 0 87 com.formdev.flatlaf.util.DerivedColor [UI] darken(13% autoInverse) -ToggleButton.disabledText #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.disabledText #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] ToggleButton.font [active] $defaultFont [UI] ToggleButton.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] ToggleButton.highlight #40404026 15% HSLA 0 0 25 15 javax.swing.plaf.ColorUIResource [UI] @@ -1639,7 +1639,7 @@ swingx/TaskPaneUI com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI text #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] textHighlight #005fe6 HSL 215 100 45 javax.swing.plaf.ColorUIResource [UI] textHighlightText #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] -textInactiveText #b6b6b6 HSL 0 0 71 javax.swing.plaf.ColorUIResource [UI] +textInactiveText #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] textText #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] window #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] windowBorder #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] @@ -1656,15 +1656,15 @@ windowText #262626 HSL 0 0 15 javax.swing.plaf.Colo InternalFrame.activeTitleForeground #262626 #ffffff 15.1 #-- disabledForeground -- -ComboBox.disabledForeground #b6b6b6 #fafafa 1.9 !!!!!! -Label.disabledForeground #b6b6b6 #f6f6f6 1.9 !!!!!! -Spinner.disabledForeground #b6b6b6 #fafafa 1.9 !!!!!! +ComboBox.disabledForeground #7b7b7b #fafafa 4.1 !!! +Label.disabledForeground #7b7b7b #f6f6f6 3.9 !!!! +Spinner.disabledForeground #7b7b7b #fafafa 4.1 !!! #-- disabledText -- -Button.disabledText #b6b6b6 #fafafa 1.9 !!!!!! -CheckBox.disabledText #b6b6b6 #f6f6f6 1.9 !!!!!! -RadioButton.disabledText #b6b6b6 #f6f6f6 1.9 !!!!!! -ToggleButton.disabledText #b6b6b6 #fafafa 1.9 !!!!!! +Button.disabledText #7b7b7b #fafafa 4.1 !!! +CheckBox.disabledText #7b7b7b #f6f6f6 3.9 !!!! +RadioButton.disabledText #7b7b7b #f6f6f6 3.9 !!!! +ToggleButton.disabledText #7b7b7b #fafafa 4.1 !!! #-- dropCellForeground -- List.dropCellForeground #ffffff #1a79ff 4.0 !!! @@ -1713,16 +1713,16 @@ ToolTip.foreground #262626 #fefefe 15.0 Tree.foreground #262626 #ffffff 15.1 #-- inactiveForeground -- -EditorPane.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! -FormattedTextField.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! -PasswordField.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! -TextArea.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! -TextField.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! -TextPane.inactiveForeground #b6b6b6 #fafafa 1.9 !!!!!! -TitlePane.inactiveForeground #b6b6b6 #ececec 1.7 !!!!!! +EditorPane.inactiveForeground #7b7b7b #fafafa 4.1 !!! +FormattedTextField.inactiveForeground #7b7b7b #fafafa 4.1 !!! +PasswordField.inactiveForeground #7b7b7b #fafafa 4.1 !!! +TextArea.inactiveForeground #7b7b7b #fafafa 4.1 !!! +TextField.inactiveForeground #7b7b7b #fafafa 4.1 !!! +TextPane.inactiveForeground #7b7b7b #fafafa 4.1 !!! +TitlePane.inactiveForeground #7b7b7b #ececec 3.6 !!!! #-- inactiveTitleForeground -- -InternalFrame.inactiveTitleForeground #b6b6b6 #fafafa 1.9 !!!!!! +InternalFrame.inactiveTitleForeground #7b7b7b #fafafa 4.1 !!! #-- monthStringForeground -- JXMonthView.monthStringForeground #262626 #dfdfdf 11.4 From f0685d179e32190f0774287c976ee24a2fe0a936 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Thu, 20 Feb 2025 13:56:50 +0100 Subject: [PATCH 17/36] Linux: support loading native libraries for unknown architectures (issue #966) expected filename is same as for `x86_64` architecture but replace `x86_64` with value of system property `os.arch` --- .../formdev/flatlaf/ui/FlatNativeLibrary.java | 43 +++++++++++++------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLibrary.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLibrary.java index a9768cd4..c3d928ae 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLibrary.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLibrary.java @@ -58,6 +58,7 @@ class FlatNativeLibrary String classifier; String ext; + boolean unknownArch = false; if( SystemInfo.isWindows_10_orLater && (SystemInfo.isX86 || SystemInfo.isX86_64 || SystemInfo.isAARCH64) ) { // Windows: requires Windows 10/11 (x86, x86_64 or aarch64) @@ -90,11 +91,14 @@ class FlatNativeLibrary classifier = SystemInfo.isAARCH64 ? "macos-arm64" : "macos-x86_64"; ext = "dylib"; - } else if( SystemInfo.isLinux && (SystemInfo.isX86_64 || SystemInfo.isAARCH64)) { - // Linux: requires x86_64 or aarch64 + } else if( SystemInfo.isLinux ) { + // Linux: x86_64 or aarch64 (but also supports unknown architectures) - classifier = SystemInfo.isAARCH64 ? "linux-arm64" : "linux-x86_64"; + classifier = SystemInfo.isAARCH64 ? "linux-arm64" + : (SystemInfo.isX86_64 ? "linux-x86_64" + : "linux-" + sanitize( System.getProperty( "os.arch" ) )); ext = "so"; + unknownArch = !SystemInfo.isX86_64 && !SystemInfo.isAARCH64; // Load libjawt.so (part of JRE) explicitly because it is not found // in all Java versions/distributions. @@ -106,7 +110,7 @@ class FlatNativeLibrary return; // no native library available for current OS or CPU architecture // load native library - NativeLibrary nativeLibrary = createNativeLibrary( classifier, ext ); + NativeLibrary nativeLibrary = createNativeLibrary( classifier, ext, unknownArch ); if( !nativeLibrary.isLoaded() ) return; @@ -128,7 +132,7 @@ class FlatNativeLibrary FlatNativeLibrary.nativeLibrary = nativeLibrary; } - private static NativeLibrary createNativeLibrary( String classifier, String ext ) { + private static NativeLibrary createNativeLibrary( String classifier, String ext, boolean unknownArch ) { String libraryName = "flatlaf-" + classifier; // load from "java.library.path" or from path specified in system property "flatlaf.nativeLibraryPath" @@ -139,9 +143,11 @@ class FlatNativeLibrary if( library.isLoaded() ) return library; - LoggingFacade.INSTANCE.logSevere( "FlatLaf: Native library '" + System.mapLibraryName( libraryName ) - + "' not found in java.library.path '" + System.getProperty( "java.library.path" ) - + "'. Using extracted native library instead.", null ); + if( !unknownArch ) { + LoggingFacade.INSTANCE.logSevere( "FlatLaf: Native library '" + System.mapLibraryName( libraryName ) + + "' not found in java.library.path '" + System.getProperty( "java.library.path" ) + + "'. Using extracted native library instead.", null ); + } } else { // try standard library naming scheme // (same as in flatlaf.jar in package 'com/formdev/flatlaf/natives') @@ -160,11 +166,13 @@ class FlatNativeLibrary return new NativeLibrary( libraryFile2, true ); } - LoggingFacade.INSTANCE.logSevere( "FlatLaf: Native library '" - + libraryFile.getName() - + (libraryName2 != null ? ("' or '" + libraryName2) : "") - + "' not found in '" + libraryFile.getParentFile().getAbsolutePath() - + "'. Using extracted native library instead.", null ); + if( !unknownArch ) { + LoggingFacade.INSTANCE.logSevere( "FlatLaf: Native library '" + + libraryFile.getName() + + (libraryName2 != null ? ("' or '" + libraryName2) : "") + + "' not found in '" + libraryFile.getParentFile().getAbsolutePath() + + "'. Using extracted native library instead.", null ); + } } } @@ -175,7 +183,7 @@ class FlatNativeLibrary return new NativeLibrary( libraryFile, true ); // load from FlatLaf jar (extract native library to temp folder) - return new NativeLibrary( "com/formdev/flatlaf/natives/" + libraryName, null, true ); + return new NativeLibrary( "com/formdev/flatlaf/natives/" + libraryName, null, !unknownArch ); } /** @@ -273,6 +281,13 @@ class FlatNativeLibrary + '-' + classifier + '.' + ext; } + /** + * Allow only 'a'-'z', 'A'-'Z', '0'-'9', '_' and '-' in filenames. + */ + private static String sanitize( String s ) { + return s.replaceAll( "[^a-zA-Z0-9_-]", "_" ); + } + private static void loadJAWT() { try { System.loadLibrary( "jawt" ); From f7c867fb974e638521b9bf8a69f56e4457302f7f Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Mon, 24 Feb 2025 19:54:18 +0100 Subject: [PATCH 18/36] increased contrast of separator lines in dark themes (issue #762) --- CHANGELOG.md | 10 +- .../formdev/flatlaf/FlatDarkLaf.properties | 2 +- .../dumps/uidefaults/FlatDarculaLaf_1.8.0.txt | 3 + .../dumps/uidefaults/FlatDarkLaf_1.8.0.txt | 22 ++++- .../dumps/uidefaults/FlatLightLaf_1.8.0.txt | 14 +++ .../dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt | 14 +++ .../uidefaults/FlatMacLightLaf_1.8.0.txt | 14 +++ .../dumps/uidefaults/FlatTestLaf_1.8.0.txt | 13 +++ .../testing/uidefaults/UIDefaultsDump.java | 97 +++++++++++++------ 9 files changed, 149 insertions(+), 40 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 299185f3..ece9cf5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,13 +7,13 @@ FlatLaf Change Log - macOS: Re-enabled rounded popup border (see PR #772) on macOS 14.4+ (was disabled in 3.5.x). -- Increased contrast of text for better readability: (issue #762) - - In **FlatLaf Dark**, **FlatLaf Darcula** and many dark IntelliJ themes made +- Increased contrast of text for better readability: (PR #972; issue #762) + - In **FlatLaf Dark**, **FlatLaf Darcula** and many dark IntelliJ themes, made all text colors brighter. - - In **FlatLaf Light**, **FlatLaf IntelliJ** and many light IntelliJ themes + - In **FlatLaf Light**, **FlatLaf IntelliJ** and many light IntelliJ themes, made disabled text colors slightly darker. - - In **FlatLaf macOS Light** made disabled text colors darker. - - In **FlatLaf macOS Dark** made text colors of "default" button and selected + - In **FlatLaf macOS Light**, made disabled text colors darker. + - In **FlatLaf macOS Dark**, made text colors of "default" button and selected ToggleButton lighter. - CheckBox: Support styling indeterminate state of [tri-state check boxes](https://www.javadoc.io/doc/com.formdev/flatlaf-extras/latest/com/formdev/flatlaf/extras/components/FlatTriStateCheckBox.html). diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties index ff4e2bfa..e804b603 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties @@ -284,7 +284,7 @@ ScrollBar.pressedButtonBackground = lighten(@background,10%,derived noAutoInvers #---- Separator ---- -Separator.foreground = tint(@background,10%) +Separator.foreground = tint(@background,15%) #---- Slider ---- diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt index 2e9e00e2..66b6a9df 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt @@ -117,5 +117,8 @@ #---- contrast ratio: ProgressBar ---- +- contrast ratio: ProgressBar.foreground #4c87c8 #3c3f41 2.8 !!!!! ++ contrast ratio: ProgressBar.foreground #c4c4c4 #3c3f41 6.1 ! + - contrast ratio: ProgressBar.selectionForeground #eeeeee #4c87c8 3.2 !!!! + contrast ratio: ProgressBar.selectionForeground #3c3f41 #c4c4c4 6.1 ! diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt index fcdffa9d..9b7f11b0 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt @@ -598,7 +598,7 @@ Menu.submenuPopupOffsetY [active] -4 MenuBar.background #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] MenuBar.border [lazy] 0,0,1,0 false com.formdev.flatlaf.ui.FlatMenuBarBorder [UI] -MenuBar.borderColor #505254 HSL 210 2 32 javax.swing.plaf.ColorUIResource [UI] +MenuBar.borderColor #595c5e HSL 204 3 36 javax.swing.plaf.ColorUIResource [UI] MenuBar.font [active] $defaultFont [UI] MenuBar.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] MenuBar.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] @@ -938,7 +938,7 @@ SearchField.searchIconPressedColor [lazy] #7f8b9180 50% HSLA 200 8 53 50 #---- Separator ---- Separator.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] -Separator.foreground #505254 HSL 210 2 32 javax.swing.plaf.ColorUIResource [UI] +Separator.foreground #595c5e HSL 204 3 36 javax.swing.plaf.ColorUIResource [UI] Separator.height 3 Separator.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] Separator.shadow #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] @@ -1289,7 +1289,7 @@ TitlePane.useWindowDecorations true #---- TitledBorder ---- -TitledBorder.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#505254 HSL 210 2 32 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +TitledBorder.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#595c5e HSL 204 3 36 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 TitledBorder.font [active] $defaultFont [UI] TitledBorder.titleColor #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] @@ -1352,7 +1352,7 @@ ToolBar.hoverButtonGroupArc 8 ToolBar.hoverButtonGroupBackground #434749 HSL 200 4 27 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) ToolBar.isRollover true ToolBar.light #2f3031 HSL 210 2 19 javax.swing.plaf.ColorUIResource [UI] -ToolBar.separatorColor #505254 HSL 210 2 32 javax.swing.plaf.ColorUIResource [UI] +ToolBar.separatorColor #595c5e HSL 204 3 36 javax.swing.plaf.ColorUIResource [UI] ToolBar.separatorWidth 7 ToolBar.shadow #616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] ToolBar.spacingBorder [lazy] 1,2,1,2 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] @@ -1750,3 +1750,17 @@ Tree.textForeground #dddddd #46494b 6.7 ! #-- titleForeground -- JXTitledPanel.titleForeground #dddddd #4c5052 6.0 ! + +#-- non-text -- +CheckBoxMenuItem.icon.checkmarkColor #b7b7b7 #3c3f41 5.3 !! +CheckBoxMenuItem.icon.disabledCheckmarkColor #777777 #3c3f41 2.4 !!!!! +Menu.icon.arrowColor #b7b7b7 #3c3f41 5.3 !! +Menu.icon.disabledArrowColor #777777 #3c3f41 2.4 !!!!! +ProgressBar.background #505456 #3c3f41 1.4 !!!!!! +ProgressBar.foreground #4c87c8 #3c3f41 2.8 !!!!! +Separator.foreground #595c5e #3c3f41 1.6 !!!!!! +Slider.disabledTrackColor #54595c #3c3f41 1.5 !!!!!! +Slider.trackColor #616669 #3c3f41 1.8 !!!!!! +Slider.trackValueColor #4c87c8 #3c3f41 2.8 !!!!! +TabbedPane.contentAreaColor #616365 #3c3f41 1.8 !!!!!! +ToolBar.separatorColor #595c5e #3c3f41 1.6 !!!!!! diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt index ff24fe83..a0953d46 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt @@ -1755,3 +1755,17 @@ Tree.textForeground #000000 #ffffff 21.0 #-- titleForeground -- JXTitledPanel.titleForeground #222222 #dfdfdf 11.9 + +#-- non-text -- +CheckBoxMenuItem.icon.checkmarkColor #4e9de7 #f2f2f2 2.6 !!!!! +CheckBoxMenuItem.icon.disabledCheckmarkColor #a6a6a6 #f2f2f2 2.2 !!!!! +Menu.icon.arrowColor #666666 #f2f2f2 5.1 !! +Menu.icon.disabledArrowColor #a6a6a6 #f2f2f2 2.2 !!!!! +ProgressBar.background #d1d1d1 #f2f2f2 1.4 !!!!!! +ProgressBar.foreground #2285e1 #f2f2f2 3.4 !!!! +Separator.foreground #cecece #f2f2f2 1.4 !!!!!! +Slider.disabledTrackColor #d1d1d1 #f2f2f2 1.4 !!!!!! +Slider.trackColor #c4c4c4 #f2f2f2 1.6 !!!!!! +Slider.trackValueColor #2285e1 #f2f2f2 3.4 !!!! +TabbedPane.contentAreaColor #c2c2c2 #f2f2f2 1.6 !!!!!! +ToolBar.separatorColor #cecece #f2f2f2 1.4 !!!!!! diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt index 352a5d70..8ef3492d 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt @@ -1761,3 +1761,17 @@ Tree.textForeground #dddddd #282828 10.9 #-- titleForeground -- JXTitledPanel.titleForeground #dddddd #4c5052 6.0 ! + +#-- non-text -- +CheckBoxMenuItem.icon.checkmarkColor #b7b7b7 #1e1e1e 8.3 +CheckBoxMenuItem.icon.disabledCheckmarkColor #777777 #1e1e1e 3.7 !!!! +Menu.icon.arrowColor #b7b7b7 #1e1e1e 8.3 +Menu.icon.disabledArrowColor #777777 #1e1e1e 3.7 !!!! +ProgressBar.background #323232 #1e1e1e 1.3 !!!!!! +ProgressBar.foreground #007aff #1e1e1e 4.2 !!! +Separator.foreground #343434 #1e1e1e 1.3 !!!!!! #ffffff19 10% +Slider.disabledTrackColor #282828 #1e1e1e 1.1 !!!!!! +Slider.trackColor #323232 #1e1e1e 1.3 !!!!!! +Slider.trackValueColor #007aff #1e1e1e 4.2 !!! +TabbedPane.contentAreaColor #343434 #1e1e1e 1.3 !!!!!! #ffffff19 10% +ToolBar.separatorColor #343434 #1e1e1e 1.3 !!!!!! #ffffff19 10% diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt index 5016b3b5..96795586 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt @@ -1765,3 +1765,17 @@ Tree.textForeground #262626 #ffffff 15.1 #-- titleForeground -- JXTitledPanel.titleForeground #222222 #dfdfdf 11.9 + +#-- non-text -- +CheckBoxMenuItem.icon.checkmarkColor #007aff #f6f6f6 3.7 !!!! +CheckBoxMenuItem.icon.disabledCheckmarkColor #bdbdbd #f6f6f6 1.7 !!!!!! +Menu.icon.arrowColor #7d7d7d #f6f6f6 3.8 !!!! +Menu.icon.disabledArrowColor #bdbdbd #f6f6f6 1.7 !!!!!! +ProgressBar.background #e9e9e9 #f6f6f6 1.1 !!!!!! +ProgressBar.foreground #007aff #f6f6f6 3.7 !!!! +Separator.foreground #dedede #f6f6f6 1.2 !!!!!! #00000019 10% +Slider.disabledTrackColor #ececec #f6f6f6 1.1 !!!!!! +Slider.trackColor #e4e4e4 #f6f6f6 1.2 !!!!!! +Slider.trackValueColor #007aff #f6f6f6 3.7 !!!! +TabbedPane.contentAreaColor #d1d1d1 #f6f6f6 1.4 !!!!!! #00000026 15% +ToolBar.separatorColor #dedede #f6f6f6 1.2 !!!!!! #00000019 10% diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt index 82b7c47e..ffe6bff2 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt @@ -1844,3 +1844,16 @@ Tree.textForeground #ff0000 #fff0ff 3.6 !! #-- titleForeground -- JXTitledPanel.titleForeground #ff00ff #ffff00 2.9 !!!!! + +#-- non-text -- +CheckBoxMenuItem.icon.checkmarkColor #4d89c9 #ccffcc 3.3 !!!! +CheckBoxMenuItem.icon.disabledCheckmarkColor #ababab #ccffcc 2.0 !!!!! +Menu.icon.arrowColor #4d89c9 #ccffcc 3.3 !!!! +Menu.icon.disabledArrowColor #ababab #ccffcc 2.0 !!!!! +ProgressBar.background #88ff88 #ccffcc 1.1 !!!!!! +ProgressBar.foreground #bae3ba #ccffcc 1.3 !!!!!! #73737333 20% +Separator.foreground #00bb00 #ccffcc 2.3 !!!!! +Slider.disabledTrackColor #ffff88 #ccffcc 1.1 !!!!!! +Slider.trackColor #88ff88 #ccffcc 1.1 !!!!!! +TabbedPane.contentAreaColor #ff0000 #ccffcc 3.6 !!!! +ToolBar.separatorColor #00bb00 #ccffcc 2.3 !!!!! diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java index b0ac8641..a5cf5878 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java @@ -901,6 +901,22 @@ public class UIDefaultsDump fg2bgMap.remove( "TitlePane.closeHoverForeground" ); fg2bgMap.remove( "TitlePane.closePressedForeground" ); + // non-text + HashMap nonTextMap = new HashMap<>(); + nonTextMap.put( "Menu.icon.arrowColor", "Panel.background" ); + nonTextMap.put( "Menu.icon.disabledArrowColor", "Panel.background" ); + nonTextMap.put( "CheckBoxMenuItem.icon.checkmarkColor", "Panel.background" ); + nonTextMap.put( "CheckBoxMenuItem.icon.disabledCheckmarkColor", "Panel.background" ); + nonTextMap.put( "ProgressBar.foreground", "Panel.background" ); + nonTextMap.put( "ProgressBar.background", "Panel.background" ); + nonTextMap.put( "Separator.foreground", "Separator.background" ); + nonTextMap.put( "Slider.trackColor", "Panel.background" ); + nonTextMap.put( "Slider.trackValueColor", "Panel.background" ); + nonTextMap.put( "Slider.disabledTrackColor", "Panel.background" ); + nonTextMap.put( "TabbedPane.contentAreaColor", "Panel.background" ); + nonTextMap.put( "ToolBar.separatorColor", "ToolBar.background" ); + + // out.println(); // fg2bgMap.entrySet().stream() // .sorted( (e1, e2) -> e1.getKey().compareTo( e2.getKey() ) ) @@ -925,37 +941,58 @@ public class UIDefaultsDump return key1.substring( 0, dot1 ).compareTo( key2.substring( 0, dot2 ) ); } ) .forEach( e -> { - String fgKey = e.getKey(); - String bgKey = e.getValue(); - Color background = defaults.getColor( bgKey ); - Color foreground = defaults.getColor( fgKey ); - if( background != null && foreground != null ) { - float luma1 = ColorFunctions.luma( background ); - float luma2 = ColorFunctions.luma( foreground ); - float contrastRatio = (luma1 > luma2) - ? (luma1 + 0.05f) / (luma2 + 0.05f) - : (luma2 + 0.05f) / (luma1 + 0.05f); - String rateing = - contrastRatio < 1.95f ? " !!!!!!" : - contrastRatio < 2.95f ? " !!!!!" : - contrastRatio < 3.95f ? " !!!!" : - contrastRatio < 4.95f ? " !!!" : - contrastRatio < 5.95f ? " !!" : - contrastRatio < 6.95f ? " !" : - ""; - - String subkey = fgKey.substring( fgKey.lastIndexOf( '.' ) + 1 ); - if( !subkey.equals( lastSubkey.get() ) ) { - lastSubkey.set( subkey ); - out.println(); - out.println( "#-- " + subkey + " --" ); - } - - out.printf( "%-50s #%06x #%06x %4.1f%s%n", fgKey, - foreground.getRGB() & 0xffffff, background.getRGB() & 0xffffff, - contrastRatio, rateing ); - } + dumpContrastRatio( out, e.getKey(), e.getValue(), lastSubkey ); } ); + + out.println(); + out.println( "#-- non-text --" ); + nonTextMap.entrySet().stream() + .sorted( (e1, e2) -> { + return e1.getKey().compareTo( e2.getKey() ); + } ) + .forEach( e -> { + dumpContrastRatio( out, e.getKey(), e.getValue(), null ); + } ); + } + + private void dumpContrastRatio( PrintWriter out, String fgKey, String bgKey, AtomicReference lastSubkey ) { + Color background = defaults.getColor( bgKey ); + Color foreground = defaults.getColor( fgKey ); + if( background == null || foreground == null ) + return; + + String subkey = fgKey.substring( fgKey.lastIndexOf( '.' ) + 1 ); + if( lastSubkey != null && !subkey.equals( lastSubkey.get() ) ) { + lastSubkey.set( subkey ); + out.println(); + out.println( "#-- " + subkey + " --" ); + } + + Color translucentForeground = null; + if( foreground.getAlpha() != 255 ) { + translucentForeground = foreground; + float weight = foreground.getAlpha() / 255f; + foreground = ColorFunctions.mix( new Color( foreground.getRGB() ), background, weight ); + } + + float luma1 = ColorFunctions.luma( background ); + float luma2 = ColorFunctions.luma( foreground ); + float contrastRatio = (luma1 > luma2) + ? (luma1 + 0.05f) / (luma2 + 0.05f) + : (luma2 + 0.05f) / (luma1 + 0.05f); + String rateing = + contrastRatio < 1.95f ? " !!!!!!" : + contrastRatio < 2.95f ? " !!!!!" : + contrastRatio < 3.95f ? " !!!!" : + contrastRatio < 4.95f ? " !!!" : + contrastRatio < 5.95f ? " !!" : + contrastRatio < 6.95f ? " !" : + ""; + + out.printf( "%-50s #%06x #%06x %4.1f%s%s%n", fgKey, + foreground.getRGB() & 0xffffff, background.getRGB() & 0xffffff, + contrastRatio, rateing, + translucentForeground != null ? " " + dumpColorHex( translucentForeground ) : "" ); } //---- class MyBasicLookAndFeel ------------------------------------------- From 022a67929a9d808484cb9917688d73061d583030 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Tue, 25 Feb 2025 00:24:35 +0100 Subject: [PATCH 19/36] IntelliJ Themes: use "High Contrast" from intellij repo --- .../com/formdev/flatlaf/IntelliJTheme.java | 15 +- .../flatlaf/IntelliJTheme$ThemeLaf.properties | 16 +- .../flatlaf/demo/intellijthemes/themes.json | 8 +- flatlaf-intellij-themes/README.md | 40 +-- .../intellijthemes/FlatAllIJThemes.java | 2 +- .../FlatHighContrastIJTheme.java | 2 +- .../themes/HighContrast.LICENSE.txt | 215 ++++++++++++- .../themes/HighContrast.theme.json | 298 +++++++++++++++++- 8 files changed, 525 insertions(+), 71 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java index 58cf32af..bfa19efe 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java @@ -653,26 +653,27 @@ public class IntelliJTheme uiKeyExcludes = new HashSet<>( Arrays.asList( "ActionButton.", "ActionToolbar.", "ActionsList.", "AppInspector.", "AssignedMnemonic.", "Autocomplete.", "AvailableMnemonic.", - "BigSpinner.", "Bookmark.", "BookmarkIcon.", "BookmarkMnemonicAssigned.", "BookmarkMnemonicAvailable.", + "Badge.", "BigSpinner.", "Bookmark.", "BookmarkIcon.", "BookmarkMnemonicAssigned.", "BookmarkMnemonicAvailable.", "BookmarkMnemonicCurrent.", "BookmarkMnemonicIcon.", "Borders.", "Breakpoint.", - "Canvas.", "CodeWithMe.", "ComboBoxButton.", "CompletionPopup.", "ComplexPopup.", "Content.", - "CurrentMnemonic.", "Counter.", - "Debugger.", "DebuggerPopup.", "DebuggerTabs.", "DefaultTabs.", "Dialog.", "DialogWrapper.", "DragAndDrop.", + "Canvas.", "Code.", "CodeWithMe.", "CombinedDiff.", "ComboBoxButton.", "CompilationCharts.", + "CompletionPopup.", "ComplexPopup.", "Content.", "ContextHelp.", "CurrentMnemonic.", "Counter.", + "Debugger.", "DebuggerPopup.", "DebuggerTabs.", "DefaultTabs.", "Dialog.", "DialogWrapper.", + "DisclosureButton.", "DragAndDrop.", "Editor.", "EditorGroupsTabs.", "EditorTabs.", "FileColor.", "FlameGraph.", "Focus.", "Git.", "Github.", "GotItTooltip.", "Group.", "Gutter.", "GutterTooltip.", "HeaderColor.", "HelpTooltip.", "Hg.", "IconBadge.", "InformationHint.", "InplaceRefactoringPopup.", - "Lesson.", "Link.", "LiveIndicator.", + "Lesson.", "LineProfiler.", "Link.", "LiveIndicator.", "MainMenu.", "MainToolbar.", "MemoryIndicator.", "MlModelBinding.", "MnemonicIcon.", "NavBar.", "NewClass.", "NewPSD.", "Notification.", "Notifications.", "NotificationsToolwindow.", "OnePixelDivider.", "OptionButton.", "Outline.", - "ParameterInfo.", "Plugins.", "ProgressIcon.", "PsiViewer.", + "ParameterInfo.", "Plugins.", "Profiler.", "ProgressIcon.", "PsiViewer.", "ReviewList.", "RunWidget.", "ScreenView.", "SearchEverywhere.", "SearchFieldWithExtension.", "SearchMatch.", "SearchOption.", "SearchResults.", "SegmentedButton.", "Settings.", "SidePanel.", "Space.", "SpeedSearch.", "StateWidget.", "StatusBar.", - "Tag.", "TipOfTheDay.", "ToolbarComboWidget.", "ToolWindow.", + "Tag.", "TipOfTheDay.", "ToolbarComboWidget.", "ToolWindow.", "TrialWidget.", "UIDesigner.", "UnattendedHostStatus.", "ValidationTooltip.", "VersionControl.", "WelcomeScreen.", diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties index d31c0cf6..3e7c19f9 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties @@ -243,16 +243,18 @@ ToggleButton.endBackground = $ToggleButton.background [Hiberbee_Dark]Tree.selectionBackground = lazy(List.selectionBackground) [Hiberbee_Dark]Tree.selectionInactiveBackground = lazy(List.selectionInactiveBackground) -[High_contrast]Component.accentColor = lazy(Component.focusColor) -[High_contrast]ToggleButton.selectedBackground = #fff -[High_contrast]ToggleButton.selectedForeground = #000 -[High_contrast]ToggleButton.disabledSelectedBackground = #444 -[High_contrast]ToggleButton.toolbar.selectedBackground = #fff -[High_contrast][style]Button.inTextField = \ +[High_Contrast]Component.accentColor = lazy(Component.focusColor) +[High_Contrast]Button.hoverBorderColor = #1AEBFF +[High_Contrast]HelpButton.hoverBorderColor = #1AEBFF +[High_Contrast]ToggleButton.selectedBackground = #fff +[High_Contrast]ToggleButton.selectedForeground = #000 +[High_Contrast]ToggleButton.disabledSelectedBackground = #444 +[High_Contrast]ToggleButton.toolbar.selectedBackground = #3333FF +[High_Contrast][style]Button.inTextField = \ toolbar.hoverBackground: #444; \ toolbar.pressedBackground: #666; \ toolbar.selectedBackground: #fff -[High_contrast][style]ToggleButton.inTextField = $[High_contrast][style]Button.inTextField +[High_Contrast][style]ToggleButton.inTextField = $[High_Contrast][style]Button.inTextField [Light_Flat]*.disabledForeground = #8C8C8C [Light_Flat]*.inactiveForeground = #8C8C8C diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json index 251a0911..94ea24ed 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json @@ -167,12 +167,12 @@ "sourceCodePath": "blob/latest/src/intellij/src/main/resources/themes/HiberbeeDark.theme.json" }, "HighContrast.theme.json": { - "name": "High contrast", + "name": "High Contrast", "dark": true, - "license": "MIT", + "license": "Apache License 2.0", "licenseFile": "HighContrast.LICENSE.txt", - "sourceCodeUrl": "https://github.com/OlyaB/HighContrastTheme", - "sourceCodePath": "blob/master/src/HighContrast.theme.json" + "sourceCodeUrl": "https://github.com/JetBrains/intellij-community", + "sourceCodePath": "blob/master/platform/platform-resources/src/themes/HighContrast.theme.json" }, "LightFlatTheme.theme.json": { "name": "Light Flat", diff --git a/flatlaf-intellij-themes/README.md b/flatlaf-intellij-themes/README.md index de7b05c7..de3aa234 100644 --- a/flatlaf-intellij-themes/README.md +++ b/flatlaf-intellij-themes/README.md @@ -61,12 +61,12 @@ Name | Class [Gruvbox Dark Medium](https://github.com/Vincent-P/gruvbox-intellij-theme) | `com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkMediumIJTheme` [Gruvbox Dark Soft](https://github.com/Vincent-P/gruvbox-intellij-theme) | `com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkSoftIJTheme` [Hiberbee Dark](https://github.com/Hiberbee/themes) | `com.formdev.flatlaf.intellijthemes.FlatHiberbeeDarkIJTheme` -[High contrast](https://github.com/OlyaB/HighContrastTheme) | `com.formdev.flatlaf.intellijthemes.FlatHighContrastIJTheme` +[High Contrast](https://github.com/JetBrains/intellij-community) | `com.formdev.flatlaf.intellijthemes.FlatHighContrastIJTheme` [Light Flat](https://github.com/nerzhulart/LightFlatTheme) | `com.formdev.flatlaf.intellijthemes.FlatLightFlatIJTheme` [Material Design Dark](https://github.com/xinkunZ/NotReallyMDTheme) | `com.formdev.flatlaf.intellijthemes.FlatMaterialDesignDarkIJTheme` -[Monocai](https://github.com/bmikaili/intellij-monocai-theme) | `com.formdev.flatlaf.intellijthemes.FlatMonocaiIJTheme` +[Monocai](https://github.com/TheEggi/intellij-monocai-theme) | `com.formdev.flatlaf.intellijthemes.FlatMonocaiIJTheme` [Monokai Pro](https://github.com/subtheme-dev/monokai-pro) | `com.formdev.flatlaf.intellijthemes.FlatMonokaiProIJTheme` -[Nord](https://github.com/arcticicestudio/nord-jetbrains) | `com.formdev.flatlaf.intellijthemes.FlatNordIJTheme` +[Nord](https://github.com/nordtheme/jetbrains) | `com.formdev.flatlaf.intellijthemes.FlatNordIJTheme` [One Dark](https://github.com/one-dark/jetbrains-one-dark-theme) | `com.formdev.flatlaf.intellijthemes.FlatOneDarkIJTheme` [Solarized Dark](https://github.com/4lex4/intellij-platform-solarized) | `com.formdev.flatlaf.intellijthemes.FlatSolarizedDarkIJTheme` [Solarized Light](https://github.com/4lex4/intellij-platform-solarized) | `com.formdev.flatlaf.intellijthemes.FlatSolarizedLightIJTheme` @@ -78,20 +78,20 @@ Material Theme UI Lite: Name | Class -----|------ -[Arc Dark (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatArcDarkIJTheme` -[Atom One Dark (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneDarkIJTheme` -[Atom One Light (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightIJTheme` -[Dracula (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatDraculaIJTheme` -[GitHub (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubIJTheme` -[GitHub Dark (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubDarkIJTheme` -[Light Owl (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlIJTheme` -[Material Darker (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDarkerIJTheme` -[Material Deep Ocean (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDeepOceanIJTheme` -[Material Lighter (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterIJTheme` -[Material Oceanic (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicIJTheme` -[Material Palenight (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialPalenightIJTheme` -[Monokai Pro (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProIJTheme` -[Moonlight (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMoonlightIJTheme` -[Night Owl (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlIJTheme` -[Solarized Dark (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedDarkIJTheme` -[Solarized Light (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedLightIJTheme` +[Arc Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatArcDarkIJTheme` +[Atom One Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneDarkIJTheme` +[Atom One Light (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightIJTheme` +[Dracula (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatDraculaIJTheme` +[GitHub (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubIJTheme` +[GitHub Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubDarkIJTheme` +[Light Owl (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlIJTheme` +[Material Darker (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDarkerIJTheme` +[Material Deep Ocean (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDeepOceanIJTheme` +[Material Lighter (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterIJTheme` +[Material Oceanic (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicIJTheme` +[Material Palenight (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialPalenightIJTheme` +[Monokai Pro (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProIJTheme` +[Moonlight (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMoonlightIJTheme` +[Night Owl (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlIJTheme` +[Solarized Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedDarkIJTheme` +[Solarized Light (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedLightIJTheme` diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java index 4243b88b..aeed6c5f 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java @@ -48,7 +48,7 @@ public class FlatAllIJThemes new FlatIJLookAndFeelInfo( "Gruvbox Dark Medium", "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkMediumIJTheme", true ), new FlatIJLookAndFeelInfo( "Gruvbox Dark Soft", "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkSoftIJTheme", true ), new FlatIJLookAndFeelInfo( "Hiberbee Dark", "com.formdev.flatlaf.intellijthemes.FlatHiberbeeDarkIJTheme", true ), - new FlatIJLookAndFeelInfo( "High contrast", "com.formdev.flatlaf.intellijthemes.FlatHighContrastIJTheme", true ), + new FlatIJLookAndFeelInfo( "High Contrast", "com.formdev.flatlaf.intellijthemes.FlatHighContrastIJTheme", true ), new FlatIJLookAndFeelInfo( "Light Flat", "com.formdev.flatlaf.intellijthemes.FlatLightFlatIJTheme", false ), new FlatIJLookAndFeelInfo( "Material Design Dark", "com.formdev.flatlaf.intellijthemes.FlatMaterialDesignDarkIJTheme", true ), new FlatIJLookAndFeelInfo( "Monocai", "com.formdev.flatlaf.intellijthemes.FlatMonocaiIJTheme", true ), diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatHighContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatHighContrastIJTheme.java index 7fe86eb3..cdaa7b96 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatHighContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatHighContrastIJTheme.java @@ -29,7 +29,7 @@ import com.formdev.flatlaf.IntelliJTheme; public class FlatHighContrastIJTheme extends IntelliJTheme.ThemeLaf { - public static final String NAME = "High contrast"; + public static final String NAME = "High Contrast"; public static boolean setup() { try { diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HighContrast.LICENSE.txt b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HighContrast.LICENSE.txt index 98783834..d6456956 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HighContrast.LICENSE.txt +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HighContrast.LICENSE.txt @@ -1,21 +1,202 @@ -The MIT License (MIT) -Copyright (c) 2016 CloudCannon + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + 1. Definitions. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HighContrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HighContrast.theme.json index 5940db53..8745a419 100644 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HighContrast.theme.json +++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/HighContrast.theme.json @@ -1,16 +1,17 @@ { - "name": "High contrast", + "name": "High Contrast", "dark": true, "author": "JetBrains", - - "editorScheme": "/themes/highContrastScheme.xml", - + "parentTheme": "Darcula", + "nameKey": "high.contrast.theme.name", + "editorScheme": "High contrast", "ui": { "*": { "background": "#000000", "foreground": "#FFFFFF", "infoForeground": "#E0861F", + "successForeground": "#50A661", "selectionBackground": "#3333FF", "selectionForeground": "#FFFFFF", @@ -45,6 +46,11 @@ "pressedBackground": "#000000" }, + "Badge": { + "greenOutlineForeground": "#16F334", + "greenOutlineBorderColor": "#0DA522" + }, + "Button": { "startBackground": "#000000", "endBackground": "#000000", @@ -61,6 +67,19 @@ } }, + "SegmentedButton": { + "selectedStartBorderColor": "#1AEBFF", + "selectedEndBorderColor": "#1AEBFF", + "selectedButtonColor": "#000000", + "focusedSelectedButtonColor": "#0f6780" + }, + + "DisclosureButton": { + "defaultBackground": "#281A33", + "hoverOverlay": "#450073", + "pressedOverlay": "#54008c" + }, + "Borders": { "color": "#b3b3b3", "ContrastBorderColor": "#B3B3B3" @@ -76,6 +95,26 @@ } }, + "Code": { + "Inline": { + "backgroundColor": "#000000", + "backgroundOpacity": 60, + "borderColor": "#777", + "borderWidth": 1 + }, + "Block": { + "backgroundColor": "#000000", + "backgroundOpacity": 100, + "borderColor": "#777", + "borderWidth": 1, + "EditorPane": { + "borderColor": "#777", + "backgroundColor": "#000000", + "backgroundOpacity": 100 + } + } + }, + "ComboPopup.border": "1,1,1,1,E6E6E6", "CompletionPopup": { @@ -83,9 +122,8 @@ "matchSelectionForeground": "#ED94FF" }, - - "Component": { + "focusedBorderColor": "#000000", "errorFocusColor": "#E6194B", "inactiveErrorFocusColor": "#800002", "warningFocusColor": "#F58231", @@ -94,6 +132,12 @@ "hoverIconColor": "#FFFFFF" }, + "ContextHelp": { + "fontSizeOffset": { + "os.windows": 0 + } + }, + "Counter": { "background": "#FFFFFF", "foreground": "#000000" @@ -111,8 +155,10 @@ }, "DragAndDrop": { + "borderColor": "#3366FF", + "rowBackground": "#3366FF80", "areaForeground": "#FFFFFF", - "areaBackground": "#00838f", + "areaBackground": "#00EAFF7F", "areaBorderColor": "#1AEBFF" }, @@ -142,7 +188,8 @@ "Blue": "#00004D", "Violet": "#471747", "Orange": "#733000", - "Rose": "#4D0F22" + "Rose": "#4D0F22", + "Gray": "#062329" }, "FlameGraph": { @@ -169,6 +216,17 @@ "parentFocusedFrameForeground": "#FFFFFF" }, + "IconBadge": { + "borderWidth": 1.5, + "dotRadius": 3.5, + "dotX": 16.5, + "dotY": 3.5, + "errorBackground": "Actions.Red", + "warningBackground": "Actions.Yellow", + "infoBackground": "Actions.Blue", + "successBackground": "Actions.Green" + }, + "InplaceRefactoringPopup": { "background": "#450073", "borderColor": "#E6E6E6" @@ -191,6 +249,7 @@ "Notification": { "background": "#000080", + "iconHoverBackground": "#000000", "errorForeground": "#FFFFFF", "errorBackground": "#800002", @@ -213,6 +272,18 @@ } }, + "NotificationsToolwindow": { + "newNotification.background": "#450073", + "newNotification.hoverBackground": "#450073" + }, + + "OptionButton" : { + "default.separatorColor": "#000000", + "separatorColor": "#FFFFFF" + }, + + "Panel.mouseShortcutBackground": "#000000", + "ParameterInfo": { "background": "#281A33", "foreground": "#CCCCCC", @@ -260,7 +331,7 @@ "PopupMenu": { "borderWidth": 1, - "borderInsets": "4,1,4,1" + "borderInsets": "8,1,8,1" }, "ProgressBar": { @@ -274,6 +345,31 @@ "passedEndColor": "#15451E" }, + "BookmarkMnemonicAvailable": { + "foreground": "#FFFFFF", + "background": "#000000", + "borderColor": "#FFFFFF" + }, + "BookmarkMnemonicAssigned": { + "foreground": "#000000", + "background": "#FF8C21", + "borderColor": "#FF8C21" + }, + "BookmarkMnemonicCurrent": { + "foreground": "#FFFFFF", + "background": "#3333FF", + "borderColor": "#3333FF" + }, + + "Bookmark": { + "iconBackground": "#E0861F", + "Mnemonic": { + "iconForeground": "#FFFFFF", + "iconBackground": "#000000", + "iconBorderColor": "#E0861F" + } + }, + "ScrollBar": { "Transparent": { "thumbColor": "#b3b3b3", @@ -323,10 +419,11 @@ "endBackground": "#FFD333FF" }, - "SpeedSearch": { - "foreground": "#000000", - "borderColor": "#000000", - "background": "#1AEBFF" + "Slider": { + "buttonColor": "#FFFFFF", + "buttonBorderColor": "#000000", + "tickColor": "#FFFFFF", + "trackColor": "#8c8c8c" }, "StatusBar.borderColor": "#b3b3b3", @@ -394,6 +491,41 @@ "Tree.modifiedItemForeground": "#4FF0FF", + "TrialWidget": { + "Default": { + "foreground": "#FFFFFF", + "background": "#000000", + "borderColor": "#FFFFFF", + "hoverForeground": "#000000", + "hoverBackground": "#FFFFFF", + "hoverBorderColor": "#FFFFFF" + }, + "Active": { + "foreground": "#00E61F", + "background": "#000000", + "borderColor": "#00E61F", + "hoverForeground": "#FFFFFF", + "hoverBackground": "#00E61F", + "hoverBorderColor": "#00E61F" + }, + "Alert": { + "foreground": "#F58231", + "background": "#000000", + "borderColor": "#F58231", + "hoverForeground": "#FFFFFF", + "hoverBackground": "#F58231", + "hoverBorderColor": "#F58231" + }, + "Expiring": { + "foreground": "#FFFFFF", + "background": "#E6194B", + "borderColor": "#E6194B", + "hoverForeground": "#FFFFFF", + "hoverBackground": "#800002", + "hoverBorderColor": "#800002" + } + }, + "ValidationTooltip": { "errorBackground": "#800002", "errorBorderColor": "#E6194B", @@ -413,12 +545,150 @@ "FileHistory.Commit.selectedBranchBackground": "#0D0D40" }, + "CombinedDiff": { + "BlockBorder": { + "selectedActiveColor": "#1AEBFF" + } + }, + + "Lesson": { + "shortcutBackground": "#333638", + "stepNumberForeground": "#FEFEFE", + "Badge.newLessonBackground": "#00E61F", + "Badge.newLessonForeground": "#000000" + }, + + "GotItTooltip": { + "codeBackground": "#000000", + "shortcutBackground": "#000000", + "shortcutBorderColor": "#1AEBFF" + }, + + "Tooltip.Learning": { + "background": "#000080", + "borderColor": "#FFFFFF", + "spanBackground": "#1AEBFF", + "spanForeground": "#000000", + "foreground": "#FFFFFF", + "stepNumberForeground": "#FFFFFF", + "secondaryActionForeground": "#FFFFFF", + "iconFillColor": "#35538F", + "iconBorderColor": "#FFFFFF" + }, + "WelcomeScreen": { "Projects.selectionInactiveBackground": "#3333FF", "separatorColor": "#e6e6e6" }, - "Window.border" : "1,1,1,1,E6E6E6" + "MainToolbar": { + "Icon": { + "borderInsets": "10,10,10,10", + "background": "#000000", + "hoverBackground": "#3333FF", + "pressedBackground": "#3333FF" + }, + "Dropdown": { + "borderInsets": "12,6,12,6", + "background": "#000000", + "hoverBackground": "#3333FF", + "pressedBackground": "#3333FF", + "transparentHoverBackground": "#3333FF" + } + }, + + "TitlePane.Button.hoverBackground": "#3333FF", + + "Window.border" : "1,1,1,1,E6E6E6", + + "textInactiveText" : "#E0861F", + + "RunWidget" : { + "foreground": "#ffffff", + "runningBackground": "#599e5e", + "hoverBackground": "#00000019", + "pressedBackground": "#00000028" + }, + "Profiler": { + "ChartSlider": { + "foreground": "#FEFEFE", + "lineColor": "#1AEBFF" + }, + "CpuChart": { + "background": "#6296554D", + "borderColor": "#629655", + "inactiveBackground": "#62965533", + "inactiveBorderColor": "#314B2A", + "pointBackground": "#629625", + "pointBorderColor": "#FFFFFF" + }, + "MemoryChart": { + "background": "#589DF680", + "borderColor": "#589DF6", + "inactiveBackground": "#589DF633", + "inactiveBorderColor": "#2C4E7B", + "pointBackground": "#196AD0", + "pointBorderColor": "#FFFFFF" + }, + "Timer": { + "foreground": "#FFFFFF", + "disabledForeground": "#6E6E6E", + "background": "#323232" + }, + "LiveChart": { + "horizontalAxisColor": "#E6E6E6" + } + }, + "CompilationCharts": { + "background": { + "odd": "#000000", + "even": "#1A1A1A", + "default": "#000000" + }, + "test": { + "enabled": "#3E8E41", + "disabled": "#2B5931", + "stroke": "#6FAF6D", + "selected": "#5E9E57" + }, + "production": { + "enabled": "#3F88C5", + "disabled": "#2D5D87", + "stroke": "#6EA7C9", + "selected": "#6EB8DF" + }, + "memory": { + "background": "#3F88C5", + "stroke": "#6EB8DF" + }, + "cpu": { + "background": "#3E8E41", + "stroke": "#5E9E57" + }, + "lineColor": "#FFFFFF", + "textColor": "#FFFFFF" + }, + "FlameGraph.Tooltip": { + "scaleBackground": "#555454", + "scaleColor": "#402FF6", + "foreground": "#FFFFFF" + }, + "LineProfiler" : { + "Line" : { + "labelBackground" : "#43474A", + "foreground" : "#787878", + "hoverBackground" : "#4A4E52" + }, + "HotLine" : { + "labelBackground" : "#593D41", + "foreground" : "#FF5261", + "hoverBackground" : "#704745" + }, + "IgnoredLine" : { + "labelBackground" : "#43474A", + "foreground" : "#5F5F5F" + } + } }, "icons": { From a4dc1b415171f0343e63b8f6e15d56741b742236 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Tue, 25 Feb 2025 10:42:44 +0100 Subject: [PATCH 20/36] UIDefaultsLoader: support `lazy` option for `spin()`, `changeHue()`, `changeSaturation()`, `changeLightness()`, `changeAlpha()`, `mix()`, `tint()` and `shade()` color functions; added unit tests for lazy color functions --- .../com/formdev/flatlaf/UIDefaultsLoader.java | 83 ++++++++++++++----- .../formdev/flatlaf/TestUIDefaultsLoader.java | 56 ++++++++++++- 2 files changed, 115 insertions(+), 24 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java index 367858c9..4c3f42ea 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java @@ -830,6 +830,7 @@ class UIDefaultsLoader try { switch( function ) { case "if": return parseColorIf( value, params, resolver ); + case "lazy": return parseColorLazy( value, params, resolver ); case "systemColor": return parseColorSystemColor( value, params, resolver ); case "rgb": return parseColorRgbOrRgba( false, params, resolver ); case "rgba": return parseColorRgbOrRgba( true, params, resolver ); @@ -877,6 +878,32 @@ class UIDefaultsLoader return parseColorOrFunction( resolver.apply( ifValue ), resolver ); } + /** + * Syntax: lazy(uiKey) + *

+ * This "lazy" function is only used if the "lazy" is passed as parameter to another + * color function. Otherwise, the general "lazy" function is used. + *

+ * Note: The color is resolved immediately, not lazy, because it is passed as parameter to another color function. + * So e.g. {@code darken(lazy(List.background), 10%)} is the same as {@code darken($List.background, 10%)}. + *

+ * Only useful if a property is defined as lazy and that property is used + * in another property's color function. E.g. + * + *

{@code
+	 * someProperty = lazy(List.background)
+	 * anotherProperty = darken($someProperty, 10%)
+	 * }
+ */ + private static Object parseColorLazy( String value, List params, Function resolver ) + throws IllegalArgumentException + { + if( params.size() != 1 ) + throw newMissingParametersException( value ); + + return parseColorOrFunction( resolver.apply( PROPERTY_PREFIX + params.get( 0 ) ), resolver ); + } + /** * Syntax: systemColor(name[,defaultValue]) * - name: system color name @@ -974,7 +1001,7 @@ class UIDefaultsLoader * fadein(color,amount[,options]) or fadeout(color,amount[,options]) * - color: a color (e.g. #f00) or a color function * - amount: percentage 0-100% - * - options: [relative] [autoInverse] [noAutoInverse] [lazy] [derived] + * - options: [relative] [autoInverse] [noAutoInverse] [derived] [lazy] */ private static Object parseColorHSLIncreaseDecrease( int hslIndex, boolean increase, List params, Function resolver ) @@ -984,15 +1011,15 @@ class UIDefaultsLoader int amount = parsePercentage( params.get( 1 ) ); boolean relative = false; boolean autoInverse = false; - boolean lazy = false; boolean derived = false; + boolean lazy = false; if( params.size() > 2 ) { String options = params.get( 2 ); relative = options.contains( "relative" ); autoInverse = options.contains( "autoInverse" ); - lazy = options.contains( "lazy" ); derived = options.contains( "derived" ); + lazy = options.contains( "lazy" ); // use autoInverse by default for derived colors, except if noAutoInverse is set if( derived && !options.contains( "noAutoInverse" ) ) @@ -1003,14 +1030,8 @@ class UIDefaultsLoader ColorFunction function = new ColorFunctions.HSLIncreaseDecrease( hslIndex, increase, amount, relative, autoInverse ); - if( lazy ) { - return (LazyValue) t -> { - Object color = lazyUIManagerGet( colorStr ); - return (color instanceof Color) - ? new ColorUIResource( ColorFunctions.applyFunctions( (Color) color, function ) ) - : null; - }; - } + if( lazy ) + return newLazyColorFunction( colorStr, function ); // parse base color, apply function and create derived color return parseFunctionBaseColor( colorStr, function, derived, resolver ); @@ -1039,14 +1060,8 @@ class UIDefaultsLoader // create function ColorFunction function = new ColorFunctions.Fade( amount ); - if( lazy ) { - return (LazyValue) t -> { - Object color = lazyUIManagerGet( colorStr ); - return (color instanceof Color) - ? new ColorUIResource( ColorFunctions.applyFunctions( (Color) color, function ) ) - : null; - }; - } + if( lazy ) + return newLazyColorFunction( colorStr, function ); // parse base color, apply function and create derived color return parseFunctionBaseColor( colorStr, function, derived, resolver ); @@ -1056,7 +1071,7 @@ class UIDefaultsLoader * Syntax: spin(color,angle[,options]) * - color: a color (e.g. #f00) or a color function * - angle: number of degrees to rotate - * - options: [derived] + * - options: [derived] [lazy] */ private static Object parseColorSpin( List params, Function resolver ) throws IllegalArgumentException @@ -1064,15 +1079,20 @@ class UIDefaultsLoader String colorStr = params.get( 0 ); int amount = parseInteger( params.get( 1 ) ); boolean derived = false; + boolean lazy = false; if( params.size() > 2 ) { String options = params.get( 2 ); derived = options.contains( "derived" ); + lazy = options.contains( "lazy" ); } // create function ColorFunction function = new ColorFunctions.HSLIncreaseDecrease( 0, true, amount, false, false ); + if( lazy ) + return newLazyColorFunction( colorStr, function ); + // parse base color, apply function and create derived color return parseFunctionBaseColor( colorStr, function, derived, resolver ); } @@ -1084,7 +1104,7 @@ class UIDefaultsLoader * changeAlpha(color,value[,options]) * - color: a color (e.g. #f00) or a color function * - value: for hue: number of degrees; otherwise: percentage 0-100% - * - options: [derived] + * - options: [derived] [lazy] */ private static Object parseColorChange( int hslIndex, List params, Function resolver ) @@ -1095,15 +1115,20 @@ class UIDefaultsLoader ? parseInteger( params.get( 1 ) ) : parsePercentage( params.get( 1 ) ); boolean derived = false; + boolean lazy = false; if( params.size() > 2 ) { String options = params.get( 2 ); derived = options.contains( "derived" ); + lazy = options.contains( "lazy" ); } // create function ColorFunction function = new ColorFunctions.HSLChange( hslIndex, value ); + if( lazy ) + return newLazyColorFunction( colorStr, function ); + // parse base color, apply function and create derived color return parseFunctionBaseColor( colorStr, function, derived, resolver ); } @@ -1116,7 +1141,7 @@ class UIDefaultsLoader * - color2: a color (e.g. #f00) or a color function * - weight: the weight (in range 0-100%) to mix the two colors * larger weight uses more of first color, smaller weight more of second color - * - options: [derived] + * - options: [derived] [lazy] */ private static Object parseColorMix( String color1Str, List params, Function resolver ) throws IllegalArgumentException @@ -1127,6 +1152,7 @@ class UIDefaultsLoader String color2Str = params.get( i++ ); int weight = 50; boolean derived = false; + boolean lazy = false; if( params.size() > i ) { String weightStr = params.get( i ); @@ -1138,6 +1164,7 @@ class UIDefaultsLoader if( params.size() > i ) { String options = params.get( i ); derived = options.contains( "derived" ); + lazy = options.contains( "lazy" ); } // parse second color @@ -1148,6 +1175,9 @@ class UIDefaultsLoader // create function ColorFunction function = new ColorFunctions.Mix2( color1, weight ); + if( lazy ) + return newLazyColorFunction( color2Str, function ); + // parse first color, apply function and create mixed color return parseFunctionBaseColor( color2Str, function, derived, resolver ); } @@ -1243,6 +1273,15 @@ class UIDefaultsLoader return new ColorUIResource( newColor ); } + private static LazyValue newLazyColorFunction( String uiKey, ColorFunction function ) { + return (LazyValue) t -> { + Object color = lazyUIManagerGet( uiKey ); + return (color instanceof Color) + ? new ColorUIResource( ColorFunctions.applyFunctions( (Color) color, function ) ) + : null; + }; + } + /** * Syntax: [normal] [bold|+bold|-bold] [italic|+italic|-italic] [|+|-|%] [family[, family]] [$baseFontKey] */ diff --git a/flatlaf-core/src/test/java/com/formdev/flatlaf/TestUIDefaultsLoader.java b/flatlaf-core/src/test/java/com/formdev/flatlaf/TestUIDefaultsLoader.java index 73f75419..28c36c89 100644 --- a/flatlaf-core/src/test/java/com/formdev/flatlaf/TestUIDefaultsLoader.java +++ b/flatlaf-core/src/test/java/com/formdev/flatlaf/TestUIDefaultsLoader.java @@ -272,9 +272,54 @@ public class TestUIDefaultsLoader } @Test - void parseDerivedColorFunctions() { - // lighten, darken + void parseLazyColorFunctions() { + // lighten + assertEquals( new Color( 0xff6666 ), parseColorLazy( "lighten(dummyColor, 20%, lazy)", new Color( 0xff0000 ) ) ); + // darken + assertEquals( new Color( 0x990000 ), parseColorLazy( "darken(dummyColor, 20%, lazy)", new Color( 0xff0000 ) ) ); + + // saturate + assertEquals( new Color( 0xf32e2e ), parseColorLazy( "saturate(dummyColor, 20%, lazy)", new Color( 0xdd4444 ) ) ); + + // desaturate + assertEquals( new Color( 0x745858 ), parseColorLazy( "desaturate(dummyColor, 20%, lazy)", new Color( 0x884444 ) ) ); + + // fadein + assertEquals( new Color( 0xddff0000, true ), parseColorLazy( "fadein(dummyColor, 20%, lazy)", new Color( 0xaaff0000, true ) ) ); + + // fadeout + assertEquals( new Color( 0x11ff0000, true ), parseColorLazy( "fadeout(dummyColor, 20%, lazy)", new Color( 0x44ff0000, true ) ) ); + + // fade + assertEquals( new Color( 0x33ff0000, true ), parseColorLazy( "fade(dummyColor, 20%, lazy)", new Color( 0xff0000 ) ) ); + assertEquals( new Color( 0xccff0000, true ), parseColorLazy( "fade(dummyColor, 80%, lazy)", new Color( 0x10ff0000, true ) ) ); + + // spin + assertEquals( new Color( 0xffaa00 ), parseColorLazy( "spin(dummyColor, 40, lazy)", new Color( 0xff0000 ) ) ); + assertEquals( new Color( 0xff00aa ), parseColorLazy( "spin(dummyColor, -40, lazy)", new Color( 0xff0000 ) ) ); + + // changeHue / changeSaturation / changeLightness / changeAlpha + assertEquals( new Color( 0xffaa00 ), parseColorLazy( "changeHue(dummyColor, 40, lazy)", new Color( 0xff0000 ) ) ); + assertEquals( new Color( 0xb34d4d ), parseColorLazy( "changeSaturation(dummyColor, 40%, lazy)", new Color( 0xff0000 ) ) ); + assertEquals( new Color( 0xcc0000 ), parseColorLazy( "changeLightness(dummyColor, 40%, lazy)", new Color( 0xff0000 ) ) ); + assertEquals( new Color( 0x66ff0000, true ), parseColorLazy( "changeAlpha(dummyColor, 40%, lazy)", new Color( 0xff0000 ) ) ); + + // mix + assertEquals( new Color( 0x808000 ), parseColorLazy( "mix(#f00, dummyColor, lazy)", new Color( 0x00ff00 ) ) ); + assertEquals( new Color( 0xbf4000 ), parseColorLazy( "mix(#f00, dummyColor, 75%, lazy)", new Color( 0x00ff00 ) ) ); + + // tint + assertEquals( new Color( 0xff80ff ), parseColorLazy( "tint(dummyColor, lazy)", new Color( 0xff00ff ) ) ); + assertEquals( new Color( 0xffbfff ), parseColorLazy( "tint(dummyColor, 75%, lazy)", new Color( 0xff00ff ) ) ); + + // shade + assertEquals( new Color( 0x800080 ), parseColorLazy( "shade(dummyColor, lazy)", new Color( 0xff00ff ) ) ); + assertEquals( new Color( 0x400040 ), parseColorLazy( "shade(dummyColor, 75%, lazy)", new Color( 0xff00ff ) ) ); + } + + @Test + void parseDerivedColorFunctions() { // mix assertDerivedColorEquals( new Color( 0x808000 ), "mix(#f00, #0f0, derived)", new Mix2( Color.red, 50 ) ); assertDerivedColorEquals( new Color( 0xbf4000 ), "mix(#f00, #0f0, 75%, derived)", new Mix2( Color.red, 75 ) ); @@ -400,6 +445,13 @@ public class TestUIDefaultsLoader return UIDefaultsLoader.parseValue( "dummyColor", value, null ); } + private Object parseColorLazy( String value, Color actual ) { + UIManager.put( "dummyColor", actual ); + Object v = UIDefaultsLoader.parseValue( "dummyColor", value, null ); + assertInstanceOf( LazyValue.class, v ); + return ((LazyValue)v).createValue( null ); + } + //---- class TestInstance ------------------------------------------------- @SuppressWarnings( "EqualsHashCode" ) // Error Prone From 68b8769d0d500c0ef633baa31fc4d7c2a3ab9175 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Tue, 25 Feb 2025 15:04:22 +0100 Subject: [PATCH 21/36] IntelliJ Themes: theme prefix in `IntelliJTheme$ThemeLaf.properties` changed from `[theme-name]` to `{theme-name}` preparation to support custom/general property prefixes for #649 and #974 --- CHANGELOG.md | 5 + .../com/formdev/flatlaf/IntelliJTheme.java | 10 +- .../flatlaf/IntelliJTheme$ThemeLaf.properties | 588 +++++++++--------- 3 files changed, 304 insertions(+), 299 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ece9cf5c..c0e9a0d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,11 @@ FlatLaf Change Log application where multiple class loaders are involved. E.g. in Eclipse plugin or in LibreOffice extension. (issues #955 and #851) +#### Incompatibilities + +- Theme prefix in `IntelliJTheme$ThemeLaf.properties` changed from + `[theme-name]` to `{theme-name}`. + ## 3.5.4 diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java index bfa19efe..5be0c5c0 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java @@ -332,16 +332,16 @@ public class IntelliJTheme // search for theme specific UI defaults keys ArrayList themeSpecificKeys = new ArrayList<>(); for( Object key : defaults.keySet() ) { - if( key instanceof String && ((String)key).startsWith( "[" ) && !((String)key).startsWith( "[style]" ) ) + if( key instanceof String && ((String)key).startsWith( "{" ) ) themeSpecificKeys.add( (String) key ); } // remove theme specific UI defaults and remember only those for current theme Map themeSpecificDefaults = new HashMap<>(); - String currentThemePrefix = '[' + name.replace( ' ', '_' ) + ']'; - String currentThemeAndAuthorPrefix = '[' + name.replace( ' ', '_' ) + "---" + author.replace( ' ', '_' ) + ']'; - String currentAuthorPrefix = "[author-" + author.replace( ' ', '_' ) + ']'; - String allThemesPrefix = "[*]"; + String currentThemePrefix = '{' + name.replace( ' ', '_' ) + '}'; + String currentThemeAndAuthorPrefix = '{' + name.replace( ' ', '_' ) + "---" + author.replace( ' ', '_' ) + '}'; + String currentAuthorPrefix = "{author-" + author.replace( ' ', '_' ) + '}'; + String allThemesPrefix = "{*}"; String[] prefixes = { currentThemePrefix, currentThemeAndAuthorPrefix, currentAuthorPrefix, allThemesPrefix }; for( String key : themeSpecificKeys ) { Object value = defaults.remove( key ); diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties index 3e7c19f9..1a82b358 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties @@ -115,356 +115,356 @@ ToggleButton.endBackground = $ToggleButton.background @ijTextBackgroundL3 = lighten(Panel.background,3%,lazy) @ijTextBackgroundL4 = lighten(Panel.background,4%,lazy) -[Arc_Theme]CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) -[Arc_Theme]PopupMenu.foreground = lazy(MenuItem.foreground) -[Arc_Theme]RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) -[Arc_Theme]ProgressBar.selectionBackground = #000 -[Arc_Theme]ProgressBar.selectionForeground = #fff -[Arc_Theme]List.selectionInactiveForeground = #fff -[Arc_Theme]Table.selectionInactiveForeground = #fff -[Arc_Theme]Tree.selectionInactiveForeground = #fff +{Arc_Theme}CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) +{Arc_Theme}PopupMenu.foreground = lazy(MenuItem.foreground) +{Arc_Theme}RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) +{Arc_Theme}ProgressBar.selectionBackground = #000 +{Arc_Theme}ProgressBar.selectionForeground = #fff +{Arc_Theme}List.selectionInactiveForeground = #fff +{Arc_Theme}Table.selectionInactiveForeground = #fff +{Arc_Theme}Tree.selectionInactiveForeground = #fff -[Arc_Theme_-_Orange]CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) -[Arc_Theme_-_Orange]PopupMenu.foreground = lazy(MenuItem.foreground) -[Arc_Theme_-_Orange]RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) -[Arc_Theme_-_Orange]ProgressBar.selectionBackground = #000 -[Arc_Theme_-_Orange]ProgressBar.selectionForeground = #fff -[Arc_Theme_-_Orange]List.selectionInactiveForeground = #fff -[Arc_Theme_-_Orange]Table.selectionInactiveForeground = #fff -[Arc_Theme_-_Orange]Tree.selectionInactiveForeground = #fff +{Arc_Theme_-_Orange}CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) +{Arc_Theme_-_Orange}PopupMenu.foreground = lazy(MenuItem.foreground) +{Arc_Theme_-_Orange}RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) +{Arc_Theme_-_Orange}ProgressBar.selectionBackground = #000 +{Arc_Theme_-_Orange}ProgressBar.selectionForeground = #fff +{Arc_Theme_-_Orange}List.selectionInactiveForeground = #fff +{Arc_Theme_-_Orange}Table.selectionInactiveForeground = #fff +{Arc_Theme_-_Orange}Tree.selectionInactiveForeground = #fff -[Arc_Theme_Dark]CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) -[Arc_Theme_Dark]PopupMenu.foreground = lazy(MenuItem.foreground) -[Arc_Theme_Dark]RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) -[Arc_Theme_Dark]ProgressBar.selectionBackground = #ddd -[Arc_Theme_Dark]ProgressBar.selectionForeground = #ddd -[Arc_Theme_Dark]ToolBar.separatorColor = lazy(Separator.foreground) +{Arc_Theme_Dark}CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) +{Arc_Theme_Dark}PopupMenu.foreground = lazy(MenuItem.foreground) +{Arc_Theme_Dark}RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) +{Arc_Theme_Dark}ProgressBar.selectionBackground = #ddd +{Arc_Theme_Dark}ProgressBar.selectionForeground = #ddd +{Arc_Theme_Dark}ToolBar.separatorColor = lazy(Separator.foreground) -[Arc_Theme_Dark_-_Orange]CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) -[Arc_Theme_Dark_-_Orange]PopupMenu.foreground = lazy(MenuItem.foreground) -[Arc_Theme_Dark_-_Orange]RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) -[Arc_Theme_Dark_-_Orange]ProgressBar.selectionBackground = #ddd -[Arc_Theme_Dark_-_Orange]ProgressBar.selectionForeground = #fff -[Arc_Theme_Dark_-_Orange]ToolBar.separatorColor = lazy(Separator.foreground) +{Arc_Theme_Dark_-_Orange}CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) +{Arc_Theme_Dark_-_Orange}PopupMenu.foreground = lazy(MenuItem.foreground) +{Arc_Theme_Dark_-_Orange}RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) +{Arc_Theme_Dark_-_Orange}ProgressBar.selectionBackground = #ddd +{Arc_Theme_Dark_-_Orange}ProgressBar.selectionForeground = #fff +{Arc_Theme_Dark_-_Orange}ToolBar.separatorColor = lazy(Separator.foreground) -[Carbon]Table.selectionBackground = lazy(List.selectionBackground) -[Carbon]Table.selectionInactiveForeground = lazy(List.selectionInactiveForeground) -[Carbon]TextField.background = @ijTextBackgroundL4 +{Carbon}Table.selectionBackground = lazy(List.selectionBackground) +{Carbon}Table.selectionInactiveForeground = lazy(List.selectionInactiveForeground) +{Carbon}TextField.background = @ijTextBackgroundL4 -[Cobalt_2]Component.accentColor = lazy(Component.focusColor) -[Cobalt_2]CheckBox.icon.background = #002946 -[Cobalt_2]CheckBox.icon.checkmarkColor = #002946 -[Cobalt_2]MenuItem.checkBackground = @ijMenuCheckBackgroundL10 -[Cobalt_2]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 -[Cobalt_2]ComboBox.background = @ijTextBackgroundL3 -[Cobalt_2]ComboBox.buttonBackground = @ijTextBackgroundL3 -[Cobalt_2]TextField.background = @ijTextBackgroundL3 -[Cobalt_2]Table.background = lazy(List.background) -[Cobalt_2]Tree.background = lazy(List.background) +{Cobalt_2}Component.accentColor = lazy(Component.focusColor) +{Cobalt_2}CheckBox.icon.background = #002946 +{Cobalt_2}CheckBox.icon.checkmarkColor = #002946 +{Cobalt_2}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 +{Cobalt_2}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 +{Cobalt_2}ComboBox.background = @ijTextBackgroundL3 +{Cobalt_2}ComboBox.buttonBackground = @ijTextBackgroundL3 +{Cobalt_2}TextField.background = @ijTextBackgroundL3 +{Cobalt_2}Table.background = lazy(List.background) +{Cobalt_2}Tree.background = lazy(List.background) -[Cyan_light]MenuItem.checkBackground = @ijMenuCheckBackgroundL20 -[Cyan_light]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL20 +{Cyan_light}MenuItem.checkBackground = @ijMenuCheckBackgroundL20 +{Cyan_light}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL20 -[Dark_Flat_Theme]*.inactiveForeground = #808080 -[Dark_Flat_Theme]Component.accentColor = lazy(List.selectionBackground) -[Dark_Flat_Theme]TableHeader.background = #3B3B3B -[Dark_Flat_Theme]TextPane.foreground = lazy(TextField.foreground) -[Dark_Flat_Theme]CheckBoxMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) -[Dark_Flat_Theme]List.selectionForeground = lazy(Tree.selectionForeground) -[Dark_Flat_Theme]RadioButtonMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) -[Dark_Flat_Theme]Separator.foreground = lazy(ToolBar.separatorColor) +{Dark_Flat_Theme}*.inactiveForeground = #808080 +{Dark_Flat_Theme}Component.accentColor = lazy(List.selectionBackground) +{Dark_Flat_Theme}TableHeader.background = #3B3B3B +{Dark_Flat_Theme}TextPane.foreground = lazy(TextField.foreground) +{Dark_Flat_Theme}CheckBoxMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) +{Dark_Flat_Theme}List.selectionForeground = lazy(Tree.selectionForeground) +{Dark_Flat_Theme}RadioButtonMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) +{Dark_Flat_Theme}Separator.foreground = lazy(ToolBar.separatorColor) -[Dark_purple]Slider.focusedColor = fade($Component.focusColor,70%,derived) +{Dark_purple}Slider.focusedColor = fade($Component.focusColor,70%,derived) -[Dracula---Zihan_Ma]Component.accentColor = lazy(Component.focusColor) -[Dracula---Zihan_Ma]ComboBox.selectionBackground = lazy(List.selectionBackground) -[Dracula---Zihan_Ma]ProgressBar.selectionBackground = #fff -[Dracula---Zihan_Ma]ProgressBar.selectionForeground = #fff +{Dracula---Zihan_Ma}Component.accentColor = lazy(Component.focusColor) +{Dracula---Zihan_Ma}ComboBox.selectionBackground = lazy(List.selectionBackground) +{Dracula---Zihan_Ma}ProgressBar.selectionBackground = #fff +{Dracula---Zihan_Ma}ProgressBar.selectionForeground = #fff -[Gradianto_Dark_Fuchsia]*.selectionBackground = #8452a7 -[Gradianto_Dark_Fuchsia]*.selectionInactiveBackground = #562C6A -[Gradianto_Dark_Fuchsia]MenuItem.checkBackground = @ijMenuCheckBackgroundL10 -[Gradianto_Dark_Fuchsia]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 -[Gradianto_Dark_Fuchsia]TextField.background = @ijTextBackgroundL4 -[Gradianto_Dark_Fuchsia]Tree.background = lazy(List.background) -[Gradianto_Dark_Fuchsia]Separator.foreground = lazy(ScrollBar.track) -[Gradianto_Dark_Fuchsia]ToolBar.separatorColor = lazy(ScrollBar.track) -[Gradianto_Dark_Fuchsia]ProgressBar.background = lazy(ScrollBar.track) -[Gradianto_Dark_Fuchsia]Slider.trackColor = lazy(ScrollBar.track) +{Gradianto_Dark_Fuchsia}*.selectionBackground = #8452a7 +{Gradianto_Dark_Fuchsia}*.selectionInactiveBackground = #562C6A +{Gradianto_Dark_Fuchsia}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 +{Gradianto_Dark_Fuchsia}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 +{Gradianto_Dark_Fuchsia}TextField.background = @ijTextBackgroundL4 +{Gradianto_Dark_Fuchsia}Tree.background = lazy(List.background) +{Gradianto_Dark_Fuchsia}Separator.foreground = lazy(ScrollBar.track) +{Gradianto_Dark_Fuchsia}ToolBar.separatorColor = lazy(ScrollBar.track) +{Gradianto_Dark_Fuchsia}ProgressBar.background = lazy(ScrollBar.track) +{Gradianto_Dark_Fuchsia}Slider.trackColor = lazy(ScrollBar.track) -[Gradianto_Deep_Ocean]TextField.background = @ijTextBackgroundL3 -[Gradianto_Deep_Ocean]Tree.background = lazy(List.background) +{Gradianto_Deep_Ocean}TextField.background = @ijTextBackgroundL3 +{Gradianto_Deep_Ocean}Tree.background = lazy(List.background) -[Gradianto_Midnight_Blue]ScrollBar.thumb = #533B6B -[Gradianto_Midnight_Blue]Table.selectionForeground = lazy(List.selectionForeground) -[Gradianto_Midnight_Blue]TextField.background = @ijTextBackgroundL4 -[Gradianto_Midnight_Blue]Tree.background = lazy(List.background) +{Gradianto_Midnight_Blue}ScrollBar.thumb = #533B6B +{Gradianto_Midnight_Blue}Table.selectionForeground = lazy(List.selectionForeground) +{Gradianto_Midnight_Blue}TextField.background = @ijTextBackgroundL4 +{Gradianto_Midnight_Blue}Tree.background = lazy(List.background) -[Gradianto_Nature_Green]Table.selectionForeground = lazy(List.selectionForeground) -[Gradianto_Nature_Green]TextField.background = @ijTextBackgroundL4 +{Gradianto_Nature_Green}Table.selectionForeground = lazy(List.selectionForeground) +{Gradianto_Nature_Green}TextField.background = @ijTextBackgroundL4 -[Gray]Separator.foreground = lazy(Slider.trackColor) -[Gray]ToolBar.separatorColor = lazy(Slider.trackColor) +{Gray}Separator.foreground = lazy(Slider.trackColor) +{Gray}ToolBar.separatorColor = lazy(Slider.trackColor) -[Gruvbox_Dark_Hard]Component.accentColor = lazy(TabbedPane.underlineColor) -[Gruvbox_Dark_Hard]ToggleButton.selectedBackground = $ToggleButton.selectedBackground -[Gruvbox_Dark_Hard]ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground -[Gruvbox_Dark_Hard]ComboBox.background = @ijTextBackgroundL3 -[Gruvbox_Dark_Hard]ComboBox.buttonBackground = @ijTextBackgroundL3 -[Gruvbox_Dark_Hard]TextField.background = @ijTextBackgroundL3 +{Gruvbox_Dark_Hard}Component.accentColor = lazy(TabbedPane.underlineColor) +{Gruvbox_Dark_Hard}ToggleButton.selectedBackground = $ToggleButton.selectedBackground +{Gruvbox_Dark_Hard}ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground +{Gruvbox_Dark_Hard}ComboBox.background = @ijTextBackgroundL3 +{Gruvbox_Dark_Hard}ComboBox.buttonBackground = @ijTextBackgroundL3 +{Gruvbox_Dark_Hard}TextField.background = @ijTextBackgroundL3 -[Gruvbox_Dark_Medium]Component.accentColor = lazy(TabbedPane.underlineColor) -[Gruvbox_Dark_Medium]ToggleButton.selectedBackground = $ToggleButton.selectedBackground -[Gruvbox_Dark_Medium]ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground -[Gruvbox_Dark_Medium]ComboBox.background = @ijTextBackgroundL3 -[Gruvbox_Dark_Medium]ComboBox.buttonBackground = @ijTextBackgroundL3 -[Gruvbox_Dark_Medium]TextField.background = @ijTextBackgroundL3 +{Gruvbox_Dark_Medium}Component.accentColor = lazy(TabbedPane.underlineColor) +{Gruvbox_Dark_Medium}ToggleButton.selectedBackground = $ToggleButton.selectedBackground +{Gruvbox_Dark_Medium}ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground +{Gruvbox_Dark_Medium}ComboBox.background = @ijTextBackgroundL3 +{Gruvbox_Dark_Medium}ComboBox.buttonBackground = @ijTextBackgroundL3 +{Gruvbox_Dark_Medium}TextField.background = @ijTextBackgroundL3 -[Gruvbox_Dark_Soft]Component.accentColor = lazy(TabbedPane.underlineColor) -[Gruvbox_Dark_Soft]MenuItem.checkBackground = @ijMenuCheckBackgroundL10 -[Gruvbox_Dark_Soft]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 -[Gruvbox_Dark_Soft]ToggleButton.selectedBackground = $ToggleButton.selectedBackground -[Gruvbox_Dark_Soft]ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground -[Gruvbox_Dark_Soft]ComboBox.background = @ijTextBackgroundL3 -[Gruvbox_Dark_Soft]ComboBox.buttonBackground = @ijTextBackgroundL3 -[Gruvbox_Dark_Soft]TextField.background = @ijTextBackgroundL3 +{Gruvbox_Dark_Soft}Component.accentColor = lazy(TabbedPane.underlineColor) +{Gruvbox_Dark_Soft}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 +{Gruvbox_Dark_Soft}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 +{Gruvbox_Dark_Soft}ToggleButton.selectedBackground = $ToggleButton.selectedBackground +{Gruvbox_Dark_Soft}ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground +{Gruvbox_Dark_Soft}ComboBox.background = @ijTextBackgroundL3 +{Gruvbox_Dark_Soft}ComboBox.buttonBackground = @ijTextBackgroundL3 +{Gruvbox_Dark_Soft}TextField.background = @ijTextBackgroundL3 -[Hiberbee_Dark]*.disabledForeground = #7F7E7D -[Hiberbee_Dark]*.disabledText = #7F7E7D -[Hiberbee_Dark]*.inactiveForeground = #7F7E7D -[Hiberbee_Dark]ProgressBar.background = lazy(Separator.foreground) -[Hiberbee_Dark]Slider.trackColor = lazy(Separator.foreground) -[Hiberbee_Dark]TabbedPane.focusColor = #5A5A5A -[Hiberbee_Dark]TabbedPane.selectedBackground = #434241 -[Hiberbee_Dark]TabbedPane.selectedForeground = #70D7FF -[Hiberbee_Dark]ToggleButton.selectedBackground = $ToggleButton.selectedBackground -[Hiberbee_Dark]ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground -[Hiberbee_Dark]Table.selectionInactiveBackground = lazy(List.selectionInactiveBackground) -[Hiberbee_Dark]Tree.selectionBackground = lazy(List.selectionBackground) -[Hiberbee_Dark]Tree.selectionInactiveBackground = lazy(List.selectionInactiveBackground) +{Hiberbee_Dark}*.disabledForeground = #7F7E7D +{Hiberbee_Dark}*.disabledText = #7F7E7D +{Hiberbee_Dark}*.inactiveForeground = #7F7E7D +{Hiberbee_Dark}ProgressBar.background = lazy(Separator.foreground) +{Hiberbee_Dark}Slider.trackColor = lazy(Separator.foreground) +{Hiberbee_Dark}TabbedPane.focusColor = #5A5A5A +{Hiberbee_Dark}TabbedPane.selectedBackground = #434241 +{Hiberbee_Dark}TabbedPane.selectedForeground = #70D7FF +{Hiberbee_Dark}ToggleButton.selectedBackground = $ToggleButton.selectedBackground +{Hiberbee_Dark}ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground +{Hiberbee_Dark}Table.selectionInactiveBackground = lazy(List.selectionInactiveBackground) +{Hiberbee_Dark}Tree.selectionBackground = lazy(List.selectionBackground) +{Hiberbee_Dark}Tree.selectionInactiveBackground = lazy(List.selectionInactiveBackground) -[High_Contrast]Component.accentColor = lazy(Component.focusColor) -[High_Contrast]Button.hoverBorderColor = #1AEBFF -[High_Contrast]HelpButton.hoverBorderColor = #1AEBFF -[High_Contrast]ToggleButton.selectedBackground = #fff -[High_Contrast]ToggleButton.selectedForeground = #000 -[High_Contrast]ToggleButton.disabledSelectedBackground = #444 -[High_Contrast]ToggleButton.toolbar.selectedBackground = #3333FF -[High_Contrast][style]Button.inTextField = \ +{High_Contrast}Component.accentColor = lazy(Component.focusColor) +{High_Contrast}Button.hoverBorderColor = #1AEBFF +{High_Contrast}HelpButton.hoverBorderColor = #1AEBFF +{High_Contrast}ToggleButton.selectedBackground = #fff +{High_Contrast}ToggleButton.selectedForeground = #000 +{High_Contrast}ToggleButton.disabledSelectedBackground = #444 +{High_Contrast}ToggleButton.toolbar.selectedBackground = #3333FF +{High_Contrast}[style]Button.inTextField = \ toolbar.hoverBackground: #444; \ toolbar.pressedBackground: #666; \ toolbar.selectedBackground: #fff -[High_Contrast][style]ToggleButton.inTextField = $[High_Contrast][style]Button.inTextField +{High_Contrast}[style]ToggleButton.inTextField = ${High_Contrast}[style]Button.inTextField -[Light_Flat]*.disabledForeground = #8C8C8C -[Light_Flat]*.inactiveForeground = #8C8C8C -[Light_Flat]CheckBox.icon[filled].background = #fff -[Light_Flat]CheckBox.icon[filled].checkmarkColor = #fff -[Light_Flat]Component.accentColor = lazy(TabbedPane.underlineColor) -[Light_Flat]ComboBox.background = lazy(ComboBox.editableBackground) -[Light_Flat]ComboBox.buttonBackground = lazy(ComboBox.editableBackground) -[Light_Flat]Separator.foreground = lazy(ToolBar.separatorColor) -[Light_Flat]TableHeader.background = #E5E5E9 -[Light_Flat]TextPane.foreground = lazy(TextField.foreground) -[Light_Flat]CheckBoxMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) -[Light_Flat]RadioButtonMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) +{Light_Flat}*.disabledForeground = #8C8C8C +{Light_Flat}*.inactiveForeground = #8C8C8C +{Light_Flat}CheckBox.icon[filled].background = #fff +{Light_Flat}CheckBox.icon[filled].checkmarkColor = #fff +{Light_Flat}Component.accentColor = lazy(TabbedPane.underlineColor) +{Light_Flat}ComboBox.background = lazy(ComboBox.editableBackground) +{Light_Flat}ComboBox.buttonBackground = lazy(ComboBox.editableBackground) +{Light_Flat}Separator.foreground = lazy(ToolBar.separatorColor) +{Light_Flat}TableHeader.background = #E5E5E9 +{Light_Flat}TextPane.foreground = lazy(TextField.foreground) +{Light_Flat}CheckBoxMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) +{Light_Flat}RadioButtonMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) -[Monocai]Button.default.foreground = #2D2A2F -[Monocai]MenuItem.checkBackground = @ijMenuCheckBackgroundL10 -[Monocai]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 +{Monocai}Button.default.foreground = #2D2A2F +{Monocai}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 +{Monocai}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 @Monocai.acceleratorForeground = lazy(MenuItem.disabledForeground) @Monocai.acceleratorSelectionForeground = lighten(MenuItem.disabledForeground,10%,lazy) -[Monocai]CheckBoxMenuItem.acceleratorForeground = @Monocai.acceleratorForeground -[Monocai]CheckBoxMenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground -[Monocai]Menu.acceleratorForeground = @Monocai.acceleratorForeground -[Monocai]Menu.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground -[Monocai]MenuItem.acceleratorForeground = @Monocai.acceleratorForeground -[Monocai]MenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground -[Monocai]RadioButtonMenuItem.acceleratorForeground = @Monocai.acceleratorForeground -[Monocai]RadioButtonMenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground -[Monocai]TextField.background = @ijTextBackgroundL4 +{Monocai}CheckBoxMenuItem.acceleratorForeground = @Monocai.acceleratorForeground +{Monocai}CheckBoxMenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground +{Monocai}Menu.acceleratorForeground = @Monocai.acceleratorForeground +{Monocai}Menu.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground +{Monocai}MenuItem.acceleratorForeground = @Monocai.acceleratorForeground +{Monocai}MenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground +{Monocai}RadioButtonMenuItem.acceleratorForeground = @Monocai.acceleratorForeground +{Monocai}RadioButtonMenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground +{Monocai}TextField.background = @ijTextBackgroundL4 @Monocai.selectionBackground = lazy(TextField.selectionBackground) -[Monocai]ComboBox.selectionBackground = @Monocai.selectionBackground -[Monocai]List.selectionBackground = @Monocai.selectionBackground -[Monocai]Table.selectionBackground = @Monocai.selectionBackground -[Monocai]Tree.selectionBackground = @Monocai.selectionBackground +{Monocai}ComboBox.selectionBackground = @Monocai.selectionBackground +{Monocai}List.selectionBackground = @Monocai.selectionBackground +{Monocai}Table.selectionBackground = @Monocai.selectionBackground +{Monocai}Tree.selectionBackground = @Monocai.selectionBackground @Monocai.selectionInactiveBackground = lazy(MenuItem.selectionBackground) -[Monocai]List.selectionInactiveBackground = @Monocai.selectionInactiveBackground -[Monocai]Table.selectionInactiveBackground = @Monocai.selectionInactiveBackground -[Monocai]Tree.selectionInactiveBackground = @Monocai.selectionInactiveBackground +{Monocai}List.selectionInactiveBackground = @Monocai.selectionInactiveBackground +{Monocai}Table.selectionInactiveBackground = @Monocai.selectionInactiveBackground +{Monocai}Tree.selectionInactiveBackground = @Monocai.selectionInactiveBackground -[Monokai_Pro---Subtheme]Table.selectionInactiveForeground = lazy(List.selectionInactiveForeground) -[Monokai_Pro---Subtheme]Tree.selectionBackground = lazy(List.selectionBackground) -[Monokai_Pro---Subtheme]Separator.foreground = lazy(Slider.trackColor) -[Monokai_Pro---Subtheme]ToolBar.separatorColor = lazy(Slider.trackColor) +{Monokai_Pro---Subtheme}Table.selectionInactiveForeground = lazy(List.selectionInactiveForeground) +{Monokai_Pro---Subtheme}Tree.selectionBackground = lazy(List.selectionBackground) +{Monokai_Pro---Subtheme}Separator.foreground = lazy(Slider.trackColor) +{Monokai_Pro---Subtheme}ToolBar.separatorColor = lazy(Slider.trackColor) -[Nord]*.inactiveForeground = #616E88 -[Nord]MenuItem.checkBackground = @ijMenuCheckBackgroundL10 -[Nord]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 -[Nord]List.selectionBackground = lazy(Tree.selectionBackground) -[Nord]List.selectionForeground = lazy(Tree.selectionForeground) -[Nord]Table.selectionBackground = lazy(Tree.selectionBackground) -[Nord]Table.selectionForeground = lazy(Tree.selectionForeground) -[Nord]TextField.selectionBackground = lazy(Tree.selectionBackground) -[Nord]TextField.selectionForeground = lazy(Tree.selectionForeground) -[Nord]Tree.selectionInactiveForeground = lazy(List.selectionInactiveForeground) +{Nord}*.inactiveForeground = #616E88 +{Nord}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 +{Nord}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 +{Nord}List.selectionBackground = lazy(Tree.selectionBackground) +{Nord}List.selectionForeground = lazy(Tree.selectionForeground) +{Nord}Table.selectionBackground = lazy(Tree.selectionBackground) +{Nord}Table.selectionForeground = lazy(Tree.selectionForeground) +{Nord}TextField.selectionBackground = lazy(Tree.selectionBackground) +{Nord}TextField.selectionForeground = lazy(Tree.selectionForeground) +{Nord}Tree.selectionInactiveForeground = lazy(List.selectionInactiveForeground) -[NotReallyMDTheme]*.selectionInactiveBackground = #21384E -[NotReallyMDTheme]ToolBar.separatorColor = lazy(Separator.foreground) +{NotReallyMDTheme}*.selectionInactiveBackground = #21384E +{NotReallyMDTheme}ToolBar.separatorColor = lazy(Separator.foreground) -[One_Dark]List.selectionInactiveForeground = lazy(Tree.selectionInactiveForeground) -[One_Dark]MenuItem.checkBackground = @ijMenuCheckBackgroundL10 -[One_Dark]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 -[One_Dark]ProgressBar.background = lazy(Separator.foreground) -[One_Dark]Slider.trackColor = lazy(Separator.foreground) -[One_Dark]Slider.focusedColor = fade(#568af2,40%) -[One_Dark]Table.background = lazy(Tree.background) -[One_Dark]Table.selectionBackground = lazy(Tree.selectionBackground) -[One_Dark]TextField.selectionBackground = lazy(List.selectionBackground) -[One_Dark]Tree.selectionForeground = lazy(List.selectionForeground) +{One_Dark}List.selectionInactiveForeground = lazy(Tree.selectionInactiveForeground) +{One_Dark}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 +{One_Dark}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 +{One_Dark}ProgressBar.background = lazy(Separator.foreground) +{One_Dark}Slider.trackColor = lazy(Separator.foreground) +{One_Dark}Slider.focusedColor = fade(#568af2,40%) +{One_Dark}Table.background = lazy(Tree.background) +{One_Dark}Table.selectionBackground = lazy(Tree.selectionBackground) +{One_Dark}TextField.selectionBackground = lazy(List.selectionBackground) +{One_Dark}Tree.selectionForeground = lazy(List.selectionForeground) -[Solarized_Dark---4lex4]*.inactiveForeground = #657B83 -[Solarized_Dark---4lex4]Component.accentColor = lazy(TabbedPane.underlineColor) -[Solarized_Dark---4lex4]ComboBox.background = lazy(ComboBox.editableBackground) -[Solarized_Dark---4lex4]ComboBox.buttonBackground = lazy(ComboBox.editableBackground) -[Solarized_Dark---4lex4]Slider.focusedColor = fade($Component.focusColor,80%,derived) -[Solarized_Dark---4lex4]ToolBar.separatorColor = lazy(Separator.foreground) +{Solarized_Dark---4lex4}*.inactiveForeground = #657B83 +{Solarized_Dark---4lex4}Component.accentColor = lazy(TabbedPane.underlineColor) +{Solarized_Dark---4lex4}ComboBox.background = lazy(ComboBox.editableBackground) +{Solarized_Dark---4lex4}ComboBox.buttonBackground = lazy(ComboBox.editableBackground) +{Solarized_Dark---4lex4}Slider.focusedColor = fade($Component.focusColor,80%,derived) +{Solarized_Dark---4lex4}ToolBar.separatorColor = lazy(Separator.foreground) -[Solarized_Light---4lex4]*.inactiveForeground = #839496 -[Solarized_Light---4lex4]Button.default.hoverBackground = darken($Button.default.background,3%,derived) -[Solarized_Light---4lex4]Component.accentColor = lazy(TabbedPane.underlineColor) +{Solarized_Light---4lex4}*.inactiveForeground = #839496 +{Solarized_Light---4lex4}Button.default.hoverBackground = darken($Button.default.background,3%,derived) +{Solarized_Light---4lex4}Component.accentColor = lazy(TabbedPane.underlineColor) -[Spacegray]ComboBox.background = @ijTextBackgroundL4 -[Spacegray]ComboBox.buttonBackground = @ijTextBackgroundL4 -[Spacegray]TextField.background = @ijTextBackgroundL4 -[Spacegray]TextField.selectionBackground = lazy(Tree.selectionBackground) -[Spacegray]TextField.selectionForeground = lazy(Tree.selectionForeground) +{Spacegray}ComboBox.background = @ijTextBackgroundL4 +{Spacegray}ComboBox.buttonBackground = @ijTextBackgroundL4 +{Spacegray}TextField.background = @ijTextBackgroundL4 +{Spacegray}TextField.selectionBackground = lazy(Tree.selectionBackground) +{Spacegray}TextField.selectionForeground = lazy(Tree.selectionForeground) -[vuesion-theme]*.disabledForeground = #8C8C8C -[vuesion-theme]*.disabledText = #8C8C8C -[vuesion-theme]*.inactiveForeground = #8C8C8C -[vuesion-theme]Component.accentColor = lazy(Button.default.endBackground) -[vuesion-theme]MenuItem.checkBackground = @ijMenuCheckBackgroundL10 -[vuesion-theme]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 -[vuesion-theme]Slider.trackValueColor = #ececee -[vuesion-theme]Slider.trackColor = #303a45 -[vuesion-theme]Slider.thumbColor = #ececee -[vuesion-theme]Slider.focusedColor = fade(#ececee,20%) -[vuesion-theme]ComboBox.background = @ijTextBackgroundL4 -[vuesion-theme]ComboBox.buttonBackground = @ijTextBackgroundL4 -[vuesion-theme]TextField.background = @ijTextBackgroundL4 -[vuesion-theme]TextField.selectionBackground = lighten(#303A45,15%) +{vuesion-theme}*.disabledForeground = #8C8C8C +{vuesion-theme}*.disabledText = #8C8C8C +{vuesion-theme}*.inactiveForeground = #8C8C8C +{vuesion-theme}Component.accentColor = lazy(Button.default.endBackground) +{vuesion-theme}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 +{vuesion-theme}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 +{vuesion-theme}Slider.trackValueColor = #ececee +{vuesion-theme}Slider.trackColor = #303a45 +{vuesion-theme}Slider.thumbColor = #ececee +{vuesion-theme}Slider.focusedColor = fade(#ececee,20%) +{vuesion-theme}ComboBox.background = @ijTextBackgroundL4 +{vuesion-theme}ComboBox.buttonBackground = @ijTextBackgroundL4 +{vuesion-theme}TextField.background = @ijTextBackgroundL4 +{vuesion-theme}TextField.selectionBackground = lighten(#303A45,15%) -[Xcode-Dark]TextField.background = @ijTextBackgroundL4 +{Xcode-Dark}TextField.background = @ijTextBackgroundL4 # Material Theme UI Lite -[light][author-Mallowigi]MenuItem.checkBackground = @ijMenuCheckBackgroundD10 -[light][author-Mallowigi]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundD10 -[dark][author-Mallowigi]MenuItem.checkBackground = @ijMenuCheckBackgroundL20 -[dark][author-Mallowigi]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL20 +[light]{author-Mallowigi}MenuItem.checkBackground = @ijMenuCheckBackgroundD10 +[light]{author-Mallowigi}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundD10 +[dark]{author-Mallowigi}MenuItem.checkBackground = @ijMenuCheckBackgroundL20 +[dark]{author-Mallowigi}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL20 -[author-Mallowigi]Tree.selectionInactiveBackground = lazy(List.selectionInactiveBackground) +{author-Mallowigi}Tree.selectionInactiveBackground = lazy(List.selectionInactiveBackground) -[Arc_Dark]ComboBox.selectionBackground = lazy(List.selectionBackground) -[Arc_Dark]Table.selectionBackground = lazy(List.selectionBackground) +{Arc_Dark}ComboBox.selectionBackground = lazy(List.selectionBackground) +{Arc_Dark}Table.selectionBackground = lazy(List.selectionBackground) -[Atom_One_Dark]Separator.foreground = lazy(Slider.trackColor) -[Atom_One_Dark]ToolBar.separatorColor = lazy(Slider.trackColor) +{Atom_One_Dark}Separator.foreground = lazy(Slider.trackColor) +{Atom_One_Dark}ToolBar.separatorColor = lazy(Slider.trackColor) -[Atom_One_Light]List.selectionBackground = lazy(Table.selectionBackground) -[Atom_One_Light]Tree.selectionBackground = lazy(Table.selectionBackground) -[Atom_One_Light]TabbedPane.contentAreaColor = lazy(Separator.foreground) +{Atom_One_Light}List.selectionBackground = lazy(Table.selectionBackground) +{Atom_One_Light}Tree.selectionBackground = lazy(Table.selectionBackground) +{Atom_One_Light}TabbedPane.contentAreaColor = lazy(Separator.foreground) -[Dracula---Mallowigi]*.selectionBackground = #44475A -[Dracula---Mallowigi]List.selectionInactiveForeground = lazy(Tree.selectionInactiveForeground) -[Dracula---Mallowigi]ProgressBar.selectionBackground = #fff -[Dracula---Mallowigi]ProgressBar.selectionForeground = #fff -[Dracula---Mallowigi]RadioButtonMenuItem.selectionForeground = lazy(CheckBoxMenuItem.selectionForeground) -[Dracula---Mallowigi]Table.selectionForeground = lazy(List.selectionForeground) -[Dracula---Mallowigi]Separator.foreground = lazy(Slider.trackColor) -[Dracula---Mallowigi]ToolBar.separatorColor = lazy(Slider.trackColor) +{Dracula---Mallowigi}*.selectionBackground = #44475A +{Dracula---Mallowigi}List.selectionInactiveForeground = lazy(Tree.selectionInactiveForeground) +{Dracula---Mallowigi}ProgressBar.selectionBackground = #fff +{Dracula---Mallowigi}ProgressBar.selectionForeground = #fff +{Dracula---Mallowigi}RadioButtonMenuItem.selectionForeground = lazy(CheckBoxMenuItem.selectionForeground) +{Dracula---Mallowigi}Table.selectionForeground = lazy(List.selectionForeground) +{Dracula---Mallowigi}Separator.foreground = lazy(Slider.trackColor) +{Dracula---Mallowigi}ToolBar.separatorColor = lazy(Slider.trackColor) -[GitHub]ProgressBar.selectionBackground = #222 -[GitHub]ProgressBar.selectionForeground = #222 -[GitHub]TextField.background = @ijTextBackgroundL3 -[GitHub]List.selectionBackground = lazy(Table.selectionBackground) -[GitHub]Tree.selectionBackground = lazy(Table.selectionBackground) +{GitHub}ProgressBar.selectionBackground = #222 +{GitHub}ProgressBar.selectionForeground = #222 +{GitHub}TextField.background = @ijTextBackgroundL3 +{GitHub}List.selectionBackground = lazy(Table.selectionBackground) +{GitHub}Tree.selectionBackground = lazy(Table.selectionBackground) -[GitHub_Dark]ComboBox.selectionBackground = lazy(Tree.selectionBackground) -[GitHub_Dark]Table.selectionBackground = lazy(Tree.selectionBackground) -[GitHub_Dark]Separator.foreground = lazy(Slider.trackColor) -[GitHub_Dark]ToolBar.separatorColor = lazy(Slider.trackColor) +{GitHub_Dark}ComboBox.selectionBackground = lazy(Tree.selectionBackground) +{GitHub_Dark}Table.selectionBackground = lazy(Tree.selectionBackground) +{GitHub_Dark}Separator.foreground = lazy(Slider.trackColor) +{GitHub_Dark}ToolBar.separatorColor = lazy(Slider.trackColor) -[Light_Owl]CheckBoxMenuItem.selectionForeground = lazy(CheckBoxMenuItem.foreground) -[Light_Owl]ComboBox.selectionForeground = lazy(ComboBox.foreground) -[Light_Owl]List.selectionInactiveForeground = lazy(List.foreground) -[Light_Owl]Menu.selectionForeground = lazy(Menu.foreground) -[Light_Owl]MenuBar.selectionForeground = lazy(MenuBar.foreground) -[Light_Owl]MenuItem.selectionForeground = lazy(MenuItem.foreground) -[Light_Owl]ProgressBar.selectionBackground = #111 -[Light_Owl]ProgressBar.selectionForeground = #fff -[Light_Owl]Spinner.selectionForeground = lazy(Spinner.foreground) -[Light_Owl]Table.selectionForeground = lazy(Table.foreground) -[Light_Owl]TextField.selectionForeground = lazy(TextField.foreground) -[Light_Owl]TextField.background = @ijTextBackgroundL3 -[Light_Owl]List.selectionBackground = lazy(Table.selectionBackground) -[Light_Owl]Tree.selectionBackground = lazy(Table.selectionBackground) +{Light_Owl}CheckBoxMenuItem.selectionForeground = lazy(CheckBoxMenuItem.foreground) +{Light_Owl}ComboBox.selectionForeground = lazy(ComboBox.foreground) +{Light_Owl}List.selectionInactiveForeground = lazy(List.foreground) +{Light_Owl}Menu.selectionForeground = lazy(Menu.foreground) +{Light_Owl}MenuBar.selectionForeground = lazy(MenuBar.foreground) +{Light_Owl}MenuItem.selectionForeground = lazy(MenuItem.foreground) +{Light_Owl}ProgressBar.selectionBackground = #111 +{Light_Owl}ProgressBar.selectionForeground = #fff +{Light_Owl}Spinner.selectionForeground = lazy(Spinner.foreground) +{Light_Owl}Table.selectionForeground = lazy(Table.foreground) +{Light_Owl}TextField.selectionForeground = lazy(TextField.foreground) +{Light_Owl}TextField.background = @ijTextBackgroundL3 +{Light_Owl}List.selectionBackground = lazy(Table.selectionBackground) +{Light_Owl}Tree.selectionBackground = lazy(Table.selectionBackground) -[Material_Darker]*.selectionBackground = lighten(#2D2D2D,15%) -[Material_Darker]Separator.foreground = lazy(Slider.trackColor) -[Material_Darker]ToolBar.separatorColor = lazy(Slider.trackColor) +{Material_Darker}*.selectionBackground = lighten(#2D2D2D,15%) +{Material_Darker}Separator.foreground = lazy(Slider.trackColor) +{Material_Darker}ToolBar.separatorColor = lazy(Slider.trackColor) -[Material_Deep_Ocean]*.selectionBackground = lighten(#222533,15%) -[Material_Deep_Ocean]Separator.foreground = lazy(Slider.trackColor) -[Material_Deep_Ocean]ToolBar.separatorColor = lazy(Slider.trackColor) +{Material_Deep_Ocean}*.selectionBackground = lighten(#222533,15%) +{Material_Deep_Ocean}Separator.foreground = lazy(Slider.trackColor) +{Material_Deep_Ocean}ToolBar.separatorColor = lazy(Slider.trackColor) -[Material_Lighter]List.selectionInactiveForeground = lazy(Tree.selectionInactiveForeground) -[Material_Lighter]ProgressBar.selectionBackground = #222 -[Material_Lighter]ProgressBar.selectionForeground = #fff -[Material_Lighter]ComboBox.selectionBackground = lazy(List.selectionBackground) -[Material_Lighter]Table.selectionBackground = lazy(List.selectionBackground) -[Material_Lighter]List.selectionForeground = lazy(Table.selectionForeground) -[Material_Lighter]RadioButtonMenuItem.selectionForeground = lazy(Table.selectionForeground) -[Material_Lighter]Tree.selectionForeground = lazy(Table.selectionForeground) +{Material_Lighter}List.selectionInactiveForeground = lazy(Tree.selectionInactiveForeground) +{Material_Lighter}ProgressBar.selectionBackground = #222 +{Material_Lighter}ProgressBar.selectionForeground = #fff +{Material_Lighter}ComboBox.selectionBackground = lazy(List.selectionBackground) +{Material_Lighter}Table.selectionBackground = lazy(List.selectionBackground) +{Material_Lighter}List.selectionForeground = lazy(Table.selectionForeground) +{Material_Lighter}RadioButtonMenuItem.selectionForeground = lazy(Table.selectionForeground) +{Material_Lighter}Tree.selectionForeground = lazy(Table.selectionForeground) -[Material_Oceanic]ProgressBar.selectionBackground = #ddd -[Material_Oceanic]ProgressBar.selectionForeground = #ddd -[Material_Oceanic]Separator.foreground = lazy(Slider.trackColor) -[Material_Oceanic]ToolBar.separatorColor = lazy(Slider.trackColor) +{Material_Oceanic}ProgressBar.selectionBackground = #ddd +{Material_Oceanic}ProgressBar.selectionForeground = #ddd +{Material_Oceanic}Separator.foreground = lazy(Slider.trackColor) +{Material_Oceanic}ToolBar.separatorColor = lazy(Slider.trackColor) -[Material_Palenight]ProgressBar.selectionBackground = #ddd -[Material_Palenight]ProgressBar.selectionForeground = #ddd -[Material_Palenight]List.selectionBackground = lazy(Table.selectionBackground) -[Material_Palenight]Tree.selectionBackground = lazy(Table.selectionBackground) -[Material_Palenight]Separator.foreground = lazy(Slider.trackColor) -[Material_Palenight]ToolBar.separatorColor = lazy(Slider.trackColor) +{Material_Palenight}ProgressBar.selectionBackground = #ddd +{Material_Palenight}ProgressBar.selectionForeground = #ddd +{Material_Palenight}List.selectionBackground = lazy(Table.selectionBackground) +{Material_Palenight}Tree.selectionBackground = lazy(Table.selectionBackground) +{Material_Palenight}Separator.foreground = lazy(Slider.trackColor) +{Material_Palenight}ToolBar.separatorColor = lazy(Slider.trackColor) -[Monokai_Pro---Mallowigi]List.selectionForeground = lazy(Table.selectionForeground) -[Monokai_Pro---Mallowigi]RadioButtonMenuItem.selectionForeground = lazy(Table.selectionForeground) -[Monokai_Pro---Mallowigi]Table.selectionInactiveForeground = lazy(List.selectionInactiveForeground) -[Monokai_Pro---Mallowigi]Tree.selectionForeground = lazy(Table.selectionForeground) -[Monokai_Pro---Mallowigi]Tree.selectionInactiveForeground = lazy(List.selectionInactiveForeground) -[Monokai_Pro---Mallowigi]Separator.foreground = lazy(Slider.trackColor) -[Monokai_Pro---Mallowigi]ToolBar.separatorColor = lazy(Slider.trackColor) +{Monokai_Pro---Mallowigi}List.selectionForeground = lazy(Table.selectionForeground) +{Monokai_Pro---Mallowigi}RadioButtonMenuItem.selectionForeground = lazy(Table.selectionForeground) +{Monokai_Pro---Mallowigi}Table.selectionInactiveForeground = lazy(List.selectionInactiveForeground) +{Monokai_Pro---Mallowigi}Tree.selectionForeground = lazy(Table.selectionForeground) +{Monokai_Pro---Mallowigi}Tree.selectionInactiveForeground = lazy(List.selectionInactiveForeground) +{Monokai_Pro---Mallowigi}Separator.foreground = lazy(Slider.trackColor) +{Monokai_Pro---Mallowigi}ToolBar.separatorColor = lazy(Slider.trackColor) -[Moonlight]ComboBox.selectionBackground = lazy(List.selectionBackground) -[Moonlight]Table.selectionBackground = lazy(List.selectionBackground) -[Moonlight]Separator.foreground = lazy(Slider.trackColor) -[Moonlight]ToolBar.separatorColor = lazy(Slider.trackColor) +{Moonlight}ComboBox.selectionBackground = lazy(List.selectionBackground) +{Moonlight}Table.selectionBackground = lazy(List.selectionBackground) +{Moonlight}Separator.foreground = lazy(Slider.trackColor) +{Moonlight}ToolBar.separatorColor = lazy(Slider.trackColor) -[Night_Owl]ProgressBar.selectionBackground = #ddd -[Night_Owl]ProgressBar.selectionForeground = #ddd +{Night_Owl}ProgressBar.selectionBackground = #ddd +{Night_Owl}ProgressBar.selectionForeground = #ddd -[Solarized_Dark---Mallowigi]ProgressBar.selectionBackground = #ccc -[Solarized_Dark---Mallowigi]ProgressBar.selectionForeground = #ccc -[Solarized_Dark---Mallowigi]Separator.foreground = lazy(Slider.trackColor) -[Solarized_Dark---Mallowigi]ToolBar.separatorColor = lazy(Slider.trackColor) +{Solarized_Dark---Mallowigi}ProgressBar.selectionBackground = #ccc +{Solarized_Dark---Mallowigi}ProgressBar.selectionForeground = #ccc +{Solarized_Dark---Mallowigi}Separator.foreground = lazy(Slider.trackColor) +{Solarized_Dark---Mallowigi}ToolBar.separatorColor = lazy(Slider.trackColor) -[Solarized_Light---Mallowigi]ProgressBar.selectionBackground = #222 -[Solarized_Light---Mallowigi]ProgressBar.selectionForeground = #fff -[Solarized_Light---Mallowigi]ComboBox.selectionBackground = lazy(List.selectionBackground) -[Solarized_Light---Mallowigi]Table.selectionBackground = lazy(List.selectionBackground) -[Solarized_Light---Mallowigi]Separator.foreground = lazy(Slider.trackColor) -[Solarized_Light---Mallowigi]ToolBar.separatorColor = lazy(Slider.trackColor) +{Solarized_Light---Mallowigi}ProgressBar.selectionBackground = #222 +{Solarized_Light---Mallowigi}ProgressBar.selectionForeground = #fff +{Solarized_Light---Mallowigi}ComboBox.selectionBackground = lazy(List.selectionBackground) +{Solarized_Light---Mallowigi}Table.selectionBackground = lazy(List.selectionBackground) +{Solarized_Light---Mallowigi}Separator.foreground = lazy(Slider.trackColor) +{Solarized_Light---Mallowigi}ToolBar.separatorColor = lazy(Slider.trackColor) From d26eb2674f66bc700cea7ab5be80909e1890994a Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Tue, 25 Feb 2025 15:50:30 +0100 Subject: [PATCH 22/36] Demo/Testing: use IntelliJ Theme Laf classes (from package `com.formdev.flatlaf.intellijthemes`) in Demo and Testing apps instead of directly loading `.theme.json` (preparation for #824) --- .../com/formdev/flatlaf/demo/DemoPrefs.java | 44 ++---- .../demo/intellijthemes/IJThemesManager.java | 3 +- .../demo/intellijthemes/IJThemesPanel.java | 140 +++++++----------- .../demo/intellijthemes/IJThemesPanel.jfd | 10 +- .../formdev/flatlaf/demo/icons/download.svg | 7 - .../com/formdev/flatlaf/demo/icons/plugin.svg | 4 + .../flatlaf/demo/icons/plugin_dark.svg | 4 + .../flatlaf/demo/intellijthemes/themes.json | 48 ++++++ .../flatlaf/testing/FlatTestFrame.java | 2 +- 9 files changed, 133 insertions(+), 129 deletions(-) delete mode 100644 flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/download.svg create mode 100644 flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/plugin.svg create mode 100644 flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/plugin_dark.svg diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java index 4af1d1ec..3bbd0ccf 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java @@ -28,7 +28,6 @@ import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.FlatLightLaf; import com.formdev.flatlaf.FlatPropertiesLaf; import com.formdev.flatlaf.IntelliJTheme; -import com.formdev.flatlaf.demo.intellijthemes.IJThemesPanel; import com.formdev.flatlaf.util.LoggingFacade; import com.formdev.flatlaf.util.StringUtils; import com.formdev.flatlaf.util.SystemInfo; @@ -38,15 +37,10 @@ import com.formdev.flatlaf.util.SystemInfo; */ public class DemoPrefs { - public static final String KEY_LAF = "laf"; - public static final String KEY_LAF_THEME = "lafTheme"; + public static final String KEY_LAF_CLASS_NAME = "lafClassName"; + public static final String KEY_LAF_THEME_FILE = "lafThemeFile"; public static final String KEY_SYSTEM_SCALE_FACTOR = "systemScaleFactor"; - public static final String RESOURCE_PREFIX = "res:"; - public static final String FILE_PREFIX = "file:"; - - public static final String THEME_UI_KEY = "__FlatLaf.demo.theme"; - private static Preferences state; public static Preferences getState() { @@ -63,29 +57,21 @@ public class DemoPrefs if( args.length > 0 ) UIManager.setLookAndFeel( args[0] ); else { - String lafClassName = state.get( KEY_LAF, FlatLightLaf.class.getName() ); - if( IntelliJTheme.ThemeLaf.class.getName().equals( lafClassName ) ) { - String theme = state.get( KEY_LAF_THEME, "" ); - if( theme.startsWith( RESOURCE_PREFIX ) ) - IntelliJTheme.setup( IJThemesPanel.class.getResourceAsStream( IJThemesPanel.THEMES_PACKAGE + theme.substring( RESOURCE_PREFIX.length() ) ) ); - else if( theme.startsWith( FILE_PREFIX ) ) - FlatLaf.setup( IntelliJTheme.createLaf( new FileInputStream( theme.substring( FILE_PREFIX.length() ) ) ) ); - else - FlatLightLaf.setup(); + String lafClassName = state.get( KEY_LAF_CLASS_NAME, FlatLightLaf.class.getName() ); + if( FlatPropertiesLaf.class.getName().equals( lafClassName ) || + IntelliJTheme.ThemeLaf.class.getName().equals( lafClassName ) ) + { + String themeFileName = state.get( KEY_LAF_THEME_FILE, "" ); + if( !themeFileName.isEmpty() ) { + File themeFile = new File( themeFileName ); - if( !theme.isEmpty() ) - UIManager.getLookAndFeelDefaults().put( THEME_UI_KEY, theme ); - } else if( FlatPropertiesLaf.class.getName().equals( lafClassName ) ) { - String theme = state.get( KEY_LAF_THEME, "" ); - if( theme.startsWith( FILE_PREFIX ) ) { - File themeFile = new File( theme.substring( FILE_PREFIX.length() ) ); - String themeName = StringUtils.removeTrailing( themeFile.getName(), ".properties" ); - FlatLaf.setup( new FlatPropertiesLaf( themeName, themeFile ) ); + if( themeFileName.endsWith( ".properties" ) ) { + String themeName = StringUtils.removeTrailing( themeFile.getName(), ".properties" ); + FlatLaf.setup( new FlatPropertiesLaf( themeName, themeFile ) ); + } else + FlatLaf.setup( IntelliJTheme.createLaf( new FileInputStream( themeFile ) ) ); } else FlatLightLaf.setup(); - - if( !theme.isEmpty() ) - UIManager.getLookAndFeelDefaults().put( THEME_UI_KEY, theme ); } else UIManager.setLookAndFeel( lafClassName ); } @@ -99,7 +85,7 @@ public class DemoPrefs // remember active look and feel UIManager.addPropertyChangeListener( e -> { if( "lookAndFeel".equals( e.getPropertyName() ) ) - state.put( KEY_LAF, UIManager.getLookAndFeel().getClass().getName() ); + state.put( KEY_LAF_CLASS_NAME, UIManager.getLookAndFeel().getClass().getName() ); } ); } diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesManager.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesManager.java index 90194dbb..97a60876 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesManager.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesManager.java @@ -58,6 +58,7 @@ class IJThemesManager String name = value.get( "name" ); boolean discontinued = Boolean.parseBoolean( value.get( "discontinued" ) ); boolean dark = Boolean.parseBoolean( value.get( "dark" ) ); + String lafClassName = value.get( "lafClassName" ); String license = value.get( "license" ); String licenseFile = value.get( "licenseFile" ); String pluginUrl = value.get( "pluginUrl" ); @@ -65,7 +66,7 @@ class IJThemesManager String sourceCodePath = value.get( "sourceCodePath" ); bundledThemes.add( new IJThemeInfo( name, resourceName, discontinued, dark, - license, licenseFile, pluginUrl, sourceCodeUrl, sourceCodePath, null, null ) ); + license, licenseFile, pluginUrl, sourceCodeUrl, sourceCodePath, null, lafClassName ) ); } } diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java index 3b452434..5c8d716c 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java @@ -33,8 +33,6 @@ import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; -import java.nio.file.Files; -import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; @@ -59,7 +57,6 @@ import com.formdev.flatlaf.extras.FlatSVGIcon; import com.formdev.flatlaf.themes.*; import com.formdev.flatlaf.ui.FlatListUI; import com.formdev.flatlaf.util.LoggingFacade; -import com.formdev.flatlaf.util.StringUtils; import net.miginfocom.swing.*; /** @@ -82,14 +79,13 @@ public class IJThemesPanel }; private Window window; - private File lastDirectory; private boolean isAdjustingThemesList; private long lastLafChangeTime = System.currentTimeMillis(); public IJThemesPanel() { initComponents(); - saveButton.setEnabled( false ); + pluginButton.setEnabled( false ); sourceCodeButton.setEnabled( false ); // create renderer @@ -144,7 +140,7 @@ public class IJThemesPanel private String buildToolTip( IJThemeInfo ti ) { if( ti.themeFile != null ) return ti.themeFile.getPath(); - if( ti.resourceName == null ) + if( ti.license == null ) return ti.name; return "Name: " + ti.name @@ -238,7 +234,6 @@ public class IJThemesPanel for( int i = 0; i < themes.size(); i++ ) { IJThemeInfo theme = themes.get( i ); if( oldSel.name.equals( theme.name ) && - Objects.equals( oldSel.resourceName, theme.resourceName ) && Objects.equals( oldSel.themeFile, theme.themeFile ) && Objects.equals( oldSel.lafClassName, theme.lafClassName ) ) { @@ -274,9 +269,8 @@ public class IJThemesPanel private void themesListValueChanged( ListSelectionEvent e ) { IJThemeInfo themeInfo = themesList.getSelectedValue(); - boolean bundledTheme = (themeInfo != null && themeInfo.resourceName != null); - saveButton.setEnabled( bundledTheme ); - sourceCodeButton.setEnabled( bundledTheme ); + pluginButton.setEnabled( themeInfo != null && themeInfo.pluginUrl != null ); + sourceCodeButton.setEnabled( themeInfo != null && themeInfo.sourceCodePath != null ); if( e.getValueIsAdjusting() || isAdjustingThemesList ) return; @@ -307,21 +301,21 @@ public class IJThemesPanel FlatAnimatedLafChange.showSnapshot(); try { - if( themeInfo.themeFile.getName().endsWith( ".properties" ) ) { + if( themeInfo.themeFile.getName().endsWith( ".properties" ) ) FlatLaf.setup( new FlatPropertiesLaf( themeInfo.name, themeInfo.themeFile ) ); - } else + else FlatLaf.setup( IntelliJTheme.createLaf( new FileInputStream( themeInfo.themeFile ) ) ); - DemoPrefs.getState().put( DemoPrefs.KEY_LAF_THEME, DemoPrefs.FILE_PREFIX + themeInfo.themeFile ); + DemoPrefs.getState().put( DemoPrefs.KEY_LAF_THEME_FILE, themeInfo.themeFile.getAbsolutePath() ); } catch( Exception ex ) { LoggingFacade.INSTANCE.logSevere( null, ex ); showInformationDialog( "Failed to load '" + themeInfo.themeFile + "'.", ex ); } } else { - FlatAnimatedLafChange.showSnapshot(); - - IntelliJTheme.setup( getClass().getResourceAsStream( THEMES_PACKAGE + themeInfo.resourceName ) ); - DemoPrefs.getState().put( DemoPrefs.KEY_LAF_THEME, DemoPrefs.RESOURCE_PREFIX + themeInfo.resourceName ); + JOptionPane.showMessageDialog( SwingUtilities.windowForComponent( this ), + "Missing lafClassName for '" + themeInfo.name + "'", + "FlatLaf", JOptionPane.INFORMATION_MESSAGE ); + return; } // update all components @@ -329,56 +323,31 @@ public class IJThemesPanel FlatAnimatedLafChange.hideSnapshotWithAnimation(); } - private void saveTheme() { + private void browsePlugin() { IJThemeInfo themeInfo = themesList.getSelectedValue(); - if( themeInfo == null || themeInfo.resourceName == null ) + if( themeInfo == null || themeInfo.pluginUrl == null ) return; - JFileChooser fileChooser = new JFileChooser(); - fileChooser.setSelectedFile( new File( lastDirectory, themeInfo.resourceName ) ); - if( fileChooser.showSaveDialog( SwingUtilities.windowForComponent( this ) ) != JFileChooser.APPROVE_OPTION ) - return; - - File file = fileChooser.getSelectedFile(); - lastDirectory = file.getParentFile(); - - // save theme - try { - Files.copy( getClass().getResourceAsStream( THEMES_PACKAGE + themeInfo.resourceName ), - file.toPath(), StandardCopyOption.REPLACE_EXISTING ); - } catch( IOException ex ) { - showInformationDialog( "Failed to save theme to '" + file + "'.", ex ); - return; - } - - // save license - if( themeInfo.licenseFile != null ) { - try { - File licenseFile = new File( file.getParentFile(), - StringUtils.removeTrailing( file.getName(), ".theme.json" ) + - themeInfo.licenseFile.substring( themeInfo.licenseFile.indexOf( '.' ) ) ); - Files.copy( getClass().getResourceAsStream( THEMES_PACKAGE + themeInfo.licenseFile ), - licenseFile.toPath(), StandardCopyOption.REPLACE_EXISTING ); - } catch( IOException ex ) { - showInformationDialog( "Failed to save theme license to '" + file + "'.", ex ); - return; - } - } + browse( themeInfo.pluginUrl ); } private void browseSourceCode() { IJThemeInfo themeInfo = themesList.getSelectedValue(); - if( themeInfo == null || themeInfo.resourceName == null ) + if( themeInfo == null || themeInfo.sourceCodeUrl == null ) return; String themeUrl = themeInfo.sourceCodeUrl; if( themeInfo.sourceCodePath != null ) themeUrl += '/' + themeInfo.sourceCodePath; - themeUrl = themeUrl.replace( " ", "%20" ); + browse( themeUrl ); + } + + private void browse( String url ) { + url = url.replace( " ", "%20" ); try { - Desktop.getDesktop().browse( new URI( themeUrl ) ); + Desktop.getDesktop().browse( new URI( url ) ); } catch( IOException | URISyntaxException ex ) { - showInformationDialog( "Failed to browse '" + themeUrl + "'.", ex ); + showInformationDialog( "Failed to browse '" + url + "'.", ex ); } } @@ -414,7 +383,10 @@ public class IJThemesPanel private void lafChanged( PropertyChangeEvent e ) { if( "lookAndFeel".equals( e.getPropertyName() ) ) { - selectedCurrentLookAndFeel(); + // use invokeLater() because KEY_LAF_THEME_FILE is updated after this event + EventQueue.invokeLater( () -> { + selectedCurrentLookAndFeel(); + } ); lastLafChangeTime = System.currentTimeMillis(); } } @@ -430,19 +402,19 @@ public class IJThemesPanel if( laf instanceof FlatLaf ) { List> lafClasses = new ArrayList<>(); + // same as in UIDefaultsLoader.getLafClassesForDefaultsLoading() + for( Class lafClass = laf.getClass(); + FlatLaf.class.isAssignableFrom( lafClass ); + lafClass = lafClass.getSuperclass() ) + { + lafClasses.add( 0, lafClass ); + } + + // same as in IntelliJTheme.ThemeLaf.getLafClassesForDefaultsLoading() if( laf instanceof IntelliJTheme.ThemeLaf ) { boolean dark = ((FlatLaf)laf).isDark(); - lafClasses.add( FlatLaf.class ); - lafClasses.add( dark ? FlatDarkLaf.class : FlatLightLaf.class ); - lafClasses.add( dark ? FlatDarculaLaf.class : FlatIntelliJLaf.class ); - lafClasses.add( IntelliJTheme.ThemeLaf.class ); - } else { - for( Class lafClass = laf.getClass(); - FlatLaf.class.isAssignableFrom( lafClass ); - lafClass = lafClass.getSuperclass() ) - { - lafClasses.add( 0, lafClass ); - } + lafClasses.add( 1, dark ? FlatDarkLaf.class : FlatLightLaf.class ); + lafClasses.add( 2, dark ? FlatDarculaLaf.class : FlatIntelliJLaf.class ); } boolean reload = false; @@ -469,23 +441,19 @@ public class IJThemesPanel } private void selectedCurrentLookAndFeel() { - LookAndFeel lookAndFeel = UIManager.getLookAndFeel(); - String theme = UIManager.getLookAndFeelDefaults().getString( DemoPrefs.THEME_UI_KEY ); - - if( theme == null && (lookAndFeel instanceof IntelliJTheme.ThemeLaf || lookAndFeel instanceof FlatPropertiesLaf) ) - return; - Predicate test; - if( theme != null && theme.startsWith( DemoPrefs.RESOURCE_PREFIX ) ) { - String resourceName = theme.substring( DemoPrefs.RESOURCE_PREFIX.length() ); - test = ti -> Objects.equals( ti.resourceName, resourceName ); - } else if( theme != null && theme.startsWith( DemoPrefs.FILE_PREFIX ) ) { - File themeFile = new File( theme.substring( DemoPrefs.FILE_PREFIX.length() ) ); + String lafClassName = UIManager.getLookAndFeel().getClass().getName(); + if( FlatPropertiesLaf.class.getName().equals( lafClassName ) || + IntelliJTheme.ThemeLaf.class.getName().equals( lafClassName ) ) + { + String themeFileName = DemoPrefs.getState().get( DemoPrefs.KEY_LAF_THEME_FILE, "" ); + if( themeFileName == null ) + return; + + File themeFile = new File( themeFileName ); test = ti -> Objects.equals( ti.themeFile, themeFile ); - } else { - String lafClassName = lookAndFeel.getClass().getName(); + } else test = ti -> Objects.equals( ti.lafClassName, lafClassName ); - } int newSel = -1; for( int i = 0; i < themes.size(); i++ ) { @@ -512,7 +480,7 @@ public class IJThemesPanel // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents JLabel themesLabel = new JLabel(); toolBar = new JToolBar(); - saveButton = new JButton(); + pluginButton = new JButton(); sourceCodeButton = new JButton(); filterComboBox = new JComboBox<>(); themesScrollPane = new JScrollPane(); @@ -535,11 +503,11 @@ public class IJThemesPanel { toolBar.setFloatable(false); - //---- saveButton ---- - saveButton.setToolTipText("Save .theme.json of selected IntelliJ theme to file."); - saveButton.setIcon(new FlatSVGIcon("com/formdev/flatlaf/demo/icons/download.svg")); - saveButton.addActionListener(e -> saveTheme()); - toolBar.add(saveButton); + //---- pluginButton ---- + pluginButton.setToolTipText("Opens the IntelliJ plugin page of selected IntelliJ theme in the browser."); + pluginButton.setIcon(new FlatSVGIcon("com/formdev/flatlaf/demo/icons/plugin.svg")); + pluginButton.addActionListener(e -> browsePlugin()); + toolBar.add(pluginButton); //---- sourceCodeButton ---- sourceCodeButton.setToolTipText("Opens the source code repository of selected IntelliJ theme in the browser."); @@ -574,7 +542,7 @@ public class IJThemesPanel // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables private JToolBar toolBar; - private JButton saveButton; + private JButton pluginButton; private JButton sourceCodeButton; private JComboBox filterComboBox; private JScrollPane themesScrollPane; diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.jfd index efa7f335..8fa8e9ca 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.jfd +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.jfd @@ -1,4 +1,4 @@ -JFDML JFormDesigner: "8.1.0.0.283" Java: "19.0.2" encoding: "UTF-8" +JFDML JFormDesigner: "8.3" encoding: "UTF-8" new FormModel { contentType: "form/swing" @@ -22,10 +22,10 @@ new FormModel { name: "toolBar" "floatable": false add( new FormComponent( "javax.swing.JButton" ) { - name: "saveButton" - "toolTipText": "Save .theme.json of selected IntelliJ theme to file." - "icon": new com.jformdesigner.model.SwingIcon( 0, "/com/formdev/flatlaf/demo/icons/download.svg" ) - addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "saveTheme", false ) ) + name: "pluginButton" + "toolTipText": "Opens the IntelliJ plugin page of selected IntelliJ theme in the browser." + "icon": new com.jformdesigner.model.SwingIcon( 0, "/com/formdev/flatlaf/demo/icons/plugin.svg" ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "browsePlugin", false ) ) } ) add( new FormComponent( "javax.swing.JButton" ) { name: "sourceCodeButton" diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/download.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/download.svg deleted file mode 100644 index c0f92903..00000000 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/download.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/plugin.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/plugin.svg new file mode 100644 index 00000000..a6eebf66 --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/plugin.svg @@ -0,0 +1,4 @@ + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/plugin_dark.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/plugin_dark.svg new file mode 100644 index 00000000..f731fe34 --- /dev/null +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/plugin_dark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json index 94ea24ed..1de054bc 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json @@ -1,6 +1,7 @@ { "arc-theme.theme.json": { "name": "Arc", + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatArcIJTheme", "license": "MIT", "licenseFile": "arc-themes.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12451-arc-theme", @@ -9,6 +10,7 @@ }, "arc-theme-orange.theme.json": { "name": "Arc - Orange", + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatArcOrangeIJTheme", "license": "MIT", "licenseFile": "arc-themes.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12451-arc-theme", @@ -18,6 +20,7 @@ "arc_theme_dark.theme.json": { "name": "Arc Dark", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatArcDarkIJTheme", "license": "MIT", "licenseFile": "arc-themes.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/15175-arc-theme-dark", @@ -27,6 +30,7 @@ "arc_theme_dark_orange.theme.json": { "name": "Arc Dark - Orange", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatArcDarkOrangeIJTheme", "license": "MIT", "licenseFile": "arc-themes.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/15175-arc-theme-dark", @@ -36,6 +40,7 @@ "Carbon.theme.json": { "name": "Carbon", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatCarbonIJTheme", "license": "Apache License 2.0", "licenseFile": "arc-themes.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12280-carbon", @@ -45,6 +50,7 @@ "Cobalt_2.theme.json": { "name": "Cobalt 2", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatCobalt2IJTheme", "license": "MIT", "licenseFile": "Cobalt_2.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/10745-cobalt-2", @@ -54,6 +60,7 @@ "Cyan.theme.json": { "name": "Cyan light", "license": "MIT", + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatCyanLightIJTheme", "licenseFile": "Cyan.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12102-cyan-light-theme", "sourceCodeUrl": "https://github.com/OlyaB/CyanTheme", @@ -62,6 +69,7 @@ "DarkFlatTheme.theme.json": { "name": "Dark Flat", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatDarkFlatIJTheme", "license": "MIT", "licenseFile": "DarkFlatTheme.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12165-dark-flat-theme", @@ -71,6 +79,7 @@ "DarkPurple.theme.json": { "name": "Dark purple", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatDarkPurpleIJTheme", "license": "MIT", "licenseFile": "DarkPurple.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12100-dark-purple-theme", @@ -80,6 +89,7 @@ "Dracula.theme.json": { "name": "Dracula", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatDraculaIJTheme", "license": "MIT", "licenseFile": "Dracula.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12275-dracula-theme", @@ -89,6 +99,7 @@ "Gradianto_dark_fuchsia.theme.json": { "name": "Gradianto Dark Fuchsia", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGradiantoDarkFuchsiaIJTheme", "license": "MIT", "licenseFile": "Gradianto.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto", @@ -98,6 +109,7 @@ "Gradianto_deep_ocean.theme.json": { "name": "Gradianto Deep Ocean", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGradiantoDeepOceanIJTheme", "license": "MIT", "licenseFile": "Gradianto.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto", @@ -107,6 +119,7 @@ "Gradianto_midnight_blue.theme.json": { "name": "Gradianto Midnight Blue", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGradiantoMidnightBlueIJTheme", "license": "MIT", "licenseFile": "Gradianto.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto", @@ -116,6 +129,7 @@ "Gradianto_Nature_Green.theme.json": { "name": "Gradianto Nature Green", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGradiantoNatureGreenIJTheme", "license": "MIT", "licenseFile": "Gradianto.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12334-gradianto", @@ -125,6 +139,7 @@ "Gray.theme.json": { "name": "Gray", "license": "MIT", + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGrayIJTheme", "licenseFile": "Gray.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12103-gray-theme", "sourceCodeUrl": "https://github.com/OlyaB/GreyTheme", @@ -133,6 +148,7 @@ "gruvbox_dark_hard.theme.json": { "name": "Gruvbox Dark Hard", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkHardIJTheme", "license": "MIT", "licenseFile": "gruvbox_theme.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12310-gruvbox-theme", @@ -142,6 +158,7 @@ "gruvbox_dark_medium.theme.json": { "name": "Gruvbox Dark Medium", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkMediumIJTheme", "license": "MIT", "licenseFile": "gruvbox_theme.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12310-gruvbox-theme", @@ -151,6 +168,7 @@ "gruvbox_dark_soft.theme.json": { "name": "Gruvbox Dark Soft", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkSoftIJTheme", "license": "MIT", "licenseFile": "gruvbox_theme.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12310-gruvbox-theme", @@ -160,6 +178,7 @@ "HiberbeeDark.theme.json": { "name": "Hiberbee Dark", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatHiberbeeDarkIJTheme", "license": "MIT", "licenseFile": "Hiberbee.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12118-hiberbee-theme", @@ -169,6 +188,7 @@ "HighContrast.theme.json": { "name": "High Contrast", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatHighContrastIJTheme", "license": "Apache License 2.0", "licenseFile": "HighContrast.LICENSE.txt", "sourceCodeUrl": "https://github.com/JetBrains/intellij-community", @@ -177,6 +197,7 @@ "LightFlatTheme.theme.json": { "name": "Light Flat", "license": "MIT", + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatLightFlatIJTheme", "licenseFile": "LightFlatTheme.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12169-light-flat-theme", "sourceCodeUrl": "https://github.com/nerzhulart/LightFlatTheme", @@ -185,6 +206,7 @@ "MaterialTheme.theme.json": { "name": "Material Design Dark", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatMaterialDesignDarkIJTheme", "license": "MIT", "licenseFile": "MaterialTheme.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12134-material-design-dark-theme", @@ -194,6 +216,7 @@ "Monocai.theme.json": { "name": "Monocai", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatMonocaiIJTheme", "license": "MIT", "licenseFile": "Monocai.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12163-monocai-color-theme", @@ -204,6 +227,7 @@ "name": "Monokai Pro", "discontinued": true, "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatMonokaiProIJTheme", "license": "MIT", "licenseFile": "Monokai_Pro.LICENSE.txt", "sourceCodeUrl": "https://github.com/subtheme-dev/monokai-pro" @@ -211,6 +235,7 @@ "nord.theme.json": { "name": "Nord", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatNordIJTheme", "license": "MIT", "licenseFile": "nord.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/10321-nord", @@ -220,6 +245,7 @@ "one_dark.theme.json": { "name": "One Dark", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatOneDarkIJTheme", "license": "MIT", "licenseFile": "one_dark.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/11938-one-dark-theme", @@ -230,6 +256,7 @@ "name": "Solarized Dark", "discontinued": true, "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatSolarizedDarkIJTheme", "license": "The Unlicense", "licenseFile": "Solarized.LICENSE.txt", "sourceCodeUrl": "https://github.com/4lex4/intellij-platform-solarized", @@ -238,6 +265,7 @@ "SolarizedLight.theme.json": { "name": "Solarized Light", "discontinued": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatSolarizedLightIJTheme", "license": "The Unlicense", "licenseFile": "Solarized.LICENSE.txt", "sourceCodeUrl": "https://github.com/4lex4/intellij-platform-solarized", @@ -246,6 +274,7 @@ "Spacegray.theme.json": { "name": "Spacegray", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatSpacegrayIJTheme", "license": "MIT", "licenseFile": "Spacegray.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12122-spacegray-theme", @@ -255,6 +284,7 @@ "vuesion_theme.theme.json": { "name": "Vuesion", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatVuesionIJTheme", "license": "MIT", "licenseFile": "vuesion_theme.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/12226-vuesion-theme", @@ -264,6 +294,7 @@ "Xcode-Dark.theme.json": { "name": "Xcode-Dark", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatXcodeDarkIJTheme", "license": "MIT", "licenseFile": "Xcode-Dark.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/13106-xcode-dark-theme", @@ -274,6 +305,7 @@ "material-theme-ui-lite/Arc Dark.theme.json": { "name": "Material Theme UI Lite / Arc Dark", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatArcDarkIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -283,6 +315,7 @@ "material-theme-ui-lite/Atom One Dark.theme.json": { "name": "Material Theme UI Lite / Atom One Dark", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneDarkIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -291,6 +324,7 @@ }, "material-theme-ui-lite/Atom One Light.theme.json": { "name": "Material Theme UI Lite / Atom One Light", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -300,6 +334,7 @@ "material-theme-ui-lite/Dracula.theme.json": { "name": "Material Theme UI Lite / Dracula", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatDraculaIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -308,6 +343,7 @@ }, "material-theme-ui-lite/GitHub.theme.json": { "name": "Material Theme UI Lite / GitHub", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -317,6 +353,7 @@ "material-theme-ui-lite/GitHub Dark.theme.json": { "name": "Material Theme UI Lite / GitHub Dark", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubDarkIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -325,6 +362,7 @@ }, "material-theme-ui-lite/Light Owl.theme.json": { "name": "Material Theme UI Lite / Light Owl", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -334,6 +372,7 @@ "material-theme-ui-lite/Material Darker.theme.json": { "name": "Material Theme UI Lite / Material Darker", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDarkerIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -343,6 +382,7 @@ "material-theme-ui-lite/Material Deep Ocean.theme.json": { "name": "Material Theme UI Lite / Material Deep Ocean", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDeepOceanIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -351,6 +391,7 @@ }, "material-theme-ui-lite/Material Lighter.theme.json": { "name": "Material Theme UI Lite / Material Lighter", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -360,6 +401,7 @@ "material-theme-ui-lite/Material Oceanic.theme.json": { "name": "Material Theme UI Lite / Material Oceanic", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -369,6 +411,7 @@ "material-theme-ui-lite/Material Palenight.theme.json": { "name": "Material Theme UI Lite / Material Palenight", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialPalenightIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -378,6 +421,7 @@ "material-theme-ui-lite/Monokai Pro.theme.json": { "name": "Material Theme UI Lite / Monokai Pro", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -387,6 +431,7 @@ "material-theme-ui-lite/Moonlight.theme.json": { "name": "Material Theme UI Lite / Moonlight", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMoonlightIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -396,6 +441,7 @@ "material-theme-ui-lite/Night Owl.theme.json": { "name": "Material Theme UI Lite / Night Owl", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -405,6 +451,7 @@ "material-theme-ui-lite/Solarized Dark.theme.json": { "name": "Material Theme UI Lite / Solarized Dark", "dark": true, + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedDarkIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -413,6 +460,7 @@ }, "material-theme-ui-lite/Solarized Light.theme.json": { "name": "Material Theme UI Lite / Solarized Light", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedLightIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java index 520220a9..5dfde8fb 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java @@ -576,7 +576,7 @@ public class FlatTestFrame UIManager.put( "defaultFont", null ); LookAndFeel lookAndFeel = UIManager.getLookAndFeel(); - IntelliJTheme theme = (lookAndFeel instanceof IntelliJTheme.ThemeLaf) + IntelliJTheme theme = (lookAndFeel.getClass() == IntelliJTheme.ThemeLaf.class) ? ((IntelliJTheme.ThemeLaf)lookAndFeel).getTheme() : null; String nameForProperties = null; From f36886aeb31cdd5645296da8fa6a0578bf6686f0 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Tue, 25 Feb 2025 16:18:55 +0100 Subject: [PATCH 23/36] IntelliJ Themes: renamed classes in package `com.formdev.flatlaf.intellijthemes.materialthemeuilite` from `Flat` to `FlatMT` (preparation for #824) --- CHANGELOG.md | 8 +++-- .../IJThemesClassGenerator.java | 8 +++-- .../flatlaf/demo/intellijthemes/themes.json | 34 +++++++++---------- flatlaf-intellij-themes/README.md | 34 +++++++++---------- .../intellijthemes/FlatAllIJThemes.java | 34 +++++++++---------- ...IJTheme.java => FlatMTArcDarkIJTheme.java} | 8 ++--- ...eme.java => FlatMTAtomOneDarkIJTheme.java} | 8 ++--- ...me.java => FlatMTAtomOneLightIJTheme.java} | 8 ++--- ...IJTheme.java => FlatMTDraculaIJTheme.java} | 8 ++--- ...heme.java => FlatMTGitHubDarkIJTheme.java} | 8 ++--- ...bIJTheme.java => FlatMTGitHubIJTheme.java} | 8 ++--- ...JTheme.java => FlatMTLightOwlIJTheme.java} | 8 ++--- ....java => FlatMTMaterialDarkerIJTheme.java} | 8 ++--- ...va => FlatMTMaterialDeepOceanIJTheme.java} | 8 ++--- ...java => FlatMTMaterialLighterIJTheme.java} | 8 ++--- ...java => FlatMTMaterialOceanicIJTheme.java} | 8 ++--- ...va => FlatMTMaterialPalenightIJTheme.java} | 8 ++--- ...heme.java => FlatMTMonokaiProIJTheme.java} | 8 ++--- ...Theme.java => FlatMTMoonlightIJTheme.java} | 8 ++--- ...JTheme.java => FlatMTNightOwlIJTheme.java} | 8 ++--- ...e.java => FlatMTSolarizedDarkIJTheme.java} | 8 ++--- ....java => FlatMTSolarizedLightIJTheme.java} | 8 ++--- 22 files changed, 130 insertions(+), 124 deletions(-) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatArcDarkIJTheme.java => FlatMTArcDarkIJTheme.java} (87%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatAtomOneDarkIJTheme.java => FlatMTAtomOneDarkIJTheme.java} (86%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatAtomOneLightIJTheme.java => FlatMTAtomOneLightIJTheme.java} (86%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatDraculaIJTheme.java => FlatMTDraculaIJTheme.java} (87%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatGitHubDarkIJTheme.java => FlatMTGitHubDarkIJTheme.java} (87%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatGitHubIJTheme.java => FlatMTGitHubIJTheme.java} (87%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatLightOwlIJTheme.java => FlatMTLightOwlIJTheme.java} (87%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatMaterialDarkerIJTheme.java => FlatMTMaterialDarkerIJTheme.java} (86%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatMaterialDeepOceanIJTheme.java => FlatMTMaterialDeepOceanIJTheme.java} (85%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatMaterialLighterIJTheme.java => FlatMTMaterialLighterIJTheme.java} (85%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatMaterialOceanicIJTheme.java => FlatMTMaterialOceanicIJTheme.java} (85%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatMaterialPalenightIJTheme.java => FlatMTMaterialPalenightIJTheme.java} (85%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatMonokaiProIJTheme.java => FlatMTMonokaiProIJTheme.java} (87%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatMoonlightIJTheme.java => FlatMTMoonlightIJTheme.java} (87%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatNightOwlIJTheme.java => FlatMTNightOwlIJTheme.java} (87%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatSolarizedDarkIJTheme.java => FlatMTSolarizedDarkIJTheme.java} (86%) rename flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/{FlatSolarizedLightIJTheme.java => FlatMTSolarizedLightIJTheme.java} (86%) diff --git a/CHANGELOG.md b/CHANGELOG.md index c0e9a0d2..c3e13d66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,8 +53,12 @@ FlatLaf Change Log #### Incompatibilities -- Theme prefix in `IntelliJTheme$ThemeLaf.properties` changed from - `[theme-name]` to `{theme-name}`. +- IntelliJ Themes: + - Theme prefix in `IntelliJTheme$ThemeLaf.properties` changed from + `[theme-name]` to `{theme-name}`. + - Renamed classes in package + `com.formdev.flatlaf.intellijthemes.materialthemeuilite` from `Flat` + to `FlatMT`. ## 3.5.4 diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesClassGenerator.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesClassGenerator.java index 0f0a7da6..30175c0e 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesClassGenerator.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesClassGenerator.java @@ -73,10 +73,12 @@ public class IJThemesClassGenerator name = name.substring( nameSep + 1 ).trim(); String themeName = name; - if( "material-theme-ui-lite".equals( resourcePath ) ) - themeName += " (Material)"; - StringBuilder buf = new StringBuilder(); + if( "material-theme-ui-lite".equals( resourcePath ) ) { + themeName += " (Material)"; + buf.append( "MT" ); + } + for( String n : name.split( "[ \\-]" ) ) { if( n.length() == 0 || n.equals( "-" ) ) continue; diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json index 1de054bc..d424c25d 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json @@ -305,7 +305,7 @@ "material-theme-ui-lite/Arc Dark.theme.json": { "name": "Material Theme UI Lite / Arc Dark", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatArcDarkIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTArcDarkIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -315,7 +315,7 @@ "material-theme-ui-lite/Atom One Dark.theme.json": { "name": "Material Theme UI Lite / Atom One Dark", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneDarkIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTAtomOneDarkIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -324,7 +324,7 @@ }, "material-theme-ui-lite/Atom One Light.theme.json": { "name": "Material Theme UI Lite / Atom One Light", - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTAtomOneLightIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -334,7 +334,7 @@ "material-theme-ui-lite/Dracula.theme.json": { "name": "Material Theme UI Lite / Dracula", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatDraculaIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTDraculaIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -343,7 +343,7 @@ }, "material-theme-ui-lite/GitHub.theme.json": { "name": "Material Theme UI Lite / GitHub", - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTGitHubIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -353,7 +353,7 @@ "material-theme-ui-lite/GitHub Dark.theme.json": { "name": "Material Theme UI Lite / GitHub Dark", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubDarkIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTGitHubDarkIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -362,7 +362,7 @@ }, "material-theme-ui-lite/Light Owl.theme.json": { "name": "Material Theme UI Lite / Light Owl", - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTLightOwlIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -372,7 +372,7 @@ "material-theme-ui-lite/Material Darker.theme.json": { "name": "Material Theme UI Lite / Material Darker", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDarkerIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialDarkerIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -382,7 +382,7 @@ "material-theme-ui-lite/Material Deep Ocean.theme.json": { "name": "Material Theme UI Lite / Material Deep Ocean", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDeepOceanIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialDeepOceanIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -391,7 +391,7 @@ }, "material-theme-ui-lite/Material Lighter.theme.json": { "name": "Material Theme UI Lite / Material Lighter", - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialLighterIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -401,7 +401,7 @@ "material-theme-ui-lite/Material Oceanic.theme.json": { "name": "Material Theme UI Lite / Material Oceanic", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialOceanicIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -411,7 +411,7 @@ "material-theme-ui-lite/Material Palenight.theme.json": { "name": "Material Theme UI Lite / Material Palenight", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialPalenightIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialPalenightIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -421,7 +421,7 @@ "material-theme-ui-lite/Monokai Pro.theme.json": { "name": "Material Theme UI Lite / Monokai Pro", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMonokaiProIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -431,7 +431,7 @@ "material-theme-ui-lite/Moonlight.theme.json": { "name": "Material Theme UI Lite / Moonlight", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMoonlightIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMoonlightIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -441,7 +441,7 @@ "material-theme-ui-lite/Night Owl.theme.json": { "name": "Material Theme UI Lite / Night Owl", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTNightOwlIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -451,7 +451,7 @@ "material-theme-ui-lite/Solarized Dark.theme.json": { "name": "Material Theme UI Lite / Solarized Dark", "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedDarkIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTSolarizedDarkIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", @@ -460,7 +460,7 @@ }, "material-theme-ui-lite/Solarized Light.theme.json": { "name": "Material Theme UI Lite / Solarized Light", - "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedLightIJTheme", + "lafClassName": "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTSolarizedLightIJTheme", "license": "MIT", "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt", "pluginUrl": "https://plugins.jetbrains.com/plugin/8006-material-theme-ui", diff --git a/flatlaf-intellij-themes/README.md b/flatlaf-intellij-themes/README.md index de3aa234..c6b62740 100644 --- a/flatlaf-intellij-themes/README.md +++ b/flatlaf-intellij-themes/README.md @@ -78,20 +78,20 @@ Material Theme UI Lite: Name | Class -----|------ -[Arc Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatArcDarkIJTheme` -[Atom One Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneDarkIJTheme` -[Atom One Light (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightIJTheme` -[Dracula (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatDraculaIJTheme` -[GitHub (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubIJTheme` -[GitHub Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubDarkIJTheme` -[Light Owl (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlIJTheme` -[Material Darker (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDarkerIJTheme` -[Material Deep Ocean (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDeepOceanIJTheme` -[Material Lighter (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterIJTheme` -[Material Oceanic (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicIJTheme` -[Material Palenight (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialPalenightIJTheme` -[Monokai Pro (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProIJTheme` -[Moonlight (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMoonlightIJTheme` -[Night Owl (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlIJTheme` -[Solarized Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedDarkIJTheme` -[Solarized Light (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedLightIJTheme` +[Arc Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTArcDarkIJTheme` +[Atom One Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTAtomOneDarkIJTheme` +[Atom One Light (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTAtomOneLightIJTheme` +[Dracula (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTDraculaIJTheme` +[GitHub (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTGitHubIJTheme` +[GitHub Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTGitHubDarkIJTheme` +[Light Owl (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTLightOwlIJTheme` +[Material Darker (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialDarkerIJTheme` +[Material Deep Ocean (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialDeepOceanIJTheme` +[Material Lighter (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialLighterIJTheme` +[Material Oceanic (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialOceanicIJTheme` +[Material Palenight (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialPalenightIJTheme` +[Monokai Pro (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMonokaiProIJTheme` +[Moonlight (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMoonlightIJTheme` +[Night Owl (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTNightOwlIJTheme` +[Solarized Dark (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTSolarizedDarkIJTheme` +[Solarized Light (Material)](https://github.com/AtomMaterialUI/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTSolarizedLightIJTheme` diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java index aeed6c5f..a02eac5c 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java @@ -60,23 +60,23 @@ public class FlatAllIJThemes new FlatIJLookAndFeelInfo( "Spacegray", "com.formdev.flatlaf.intellijthemes.FlatSpacegrayIJTheme", true ), new FlatIJLookAndFeelInfo( "Vuesion", "com.formdev.flatlaf.intellijthemes.FlatVuesionIJTheme", true ), new FlatIJLookAndFeelInfo( "Xcode-Dark", "com.formdev.flatlaf.intellijthemes.FlatXcodeDarkIJTheme", true ), - new FlatIJLookAndFeelInfo( "Arc Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatArcDarkIJTheme", true ), - new FlatIJLookAndFeelInfo( "Atom One Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneDarkIJTheme", true ), - new FlatIJLookAndFeelInfo( "Atom One Light (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightIJTheme", false ), - new FlatIJLookAndFeelInfo( "Dracula (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatDraculaIJTheme", true ), - new FlatIJLookAndFeelInfo( "GitHub (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubIJTheme", false ), - new FlatIJLookAndFeelInfo( "GitHub Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubDarkIJTheme", true ), - new FlatIJLookAndFeelInfo( "Light Owl (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlIJTheme", false ), - new FlatIJLookAndFeelInfo( "Material Darker (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDarkerIJTheme", true ), - new FlatIJLookAndFeelInfo( "Material Deep Ocean (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDeepOceanIJTheme", true ), - new FlatIJLookAndFeelInfo( "Material Lighter (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterIJTheme", false ), - new FlatIJLookAndFeelInfo( "Material Oceanic (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicIJTheme", true ), - new FlatIJLookAndFeelInfo( "Material Palenight (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialPalenightIJTheme", true ), - new FlatIJLookAndFeelInfo( "Monokai Pro (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProIJTheme", true ), - new FlatIJLookAndFeelInfo( "Moonlight (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMoonlightIJTheme", true ), - new FlatIJLookAndFeelInfo( "Night Owl (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlIJTheme", true ), - new FlatIJLookAndFeelInfo( "Solarized Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedDarkIJTheme", true ), - new FlatIJLookAndFeelInfo( "Solarized Light (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedLightIJTheme", false ), + new FlatIJLookAndFeelInfo( "Arc Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTArcDarkIJTheme", true ), + new FlatIJLookAndFeelInfo( "Atom One Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTAtomOneDarkIJTheme", true ), + new FlatIJLookAndFeelInfo( "Atom One Light (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTAtomOneLightIJTheme", false ), + new FlatIJLookAndFeelInfo( "Dracula (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTDraculaIJTheme", true ), + new FlatIJLookAndFeelInfo( "GitHub (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTGitHubIJTheme", false ), + new FlatIJLookAndFeelInfo( "GitHub Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTGitHubDarkIJTheme", true ), + new FlatIJLookAndFeelInfo( "Light Owl (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTLightOwlIJTheme", false ), + new FlatIJLookAndFeelInfo( "Material Darker (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialDarkerIJTheme", true ), + new FlatIJLookAndFeelInfo( "Material Deep Ocean (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialDeepOceanIJTheme", true ), + new FlatIJLookAndFeelInfo( "Material Lighter (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialLighterIJTheme", false ), + new FlatIJLookAndFeelInfo( "Material Oceanic (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialOceanicIJTheme", true ), + new FlatIJLookAndFeelInfo( "Material Palenight (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialPalenightIJTheme", true ), + new FlatIJLookAndFeelInfo( "Monokai Pro (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMonokaiProIJTheme", true ), + new FlatIJLookAndFeelInfo( "Moonlight (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMoonlightIJTheme", true ), + new FlatIJLookAndFeelInfo( "Night Owl (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTNightOwlIJTheme", true ), + new FlatIJLookAndFeelInfo( "Solarized Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTSolarizedDarkIJTheme", true ), + new FlatIJLookAndFeelInfo( "Solarized Light (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTSolarizedLightIJTheme", false ), }; //---- class FlatIJLookAndFeelInfo ---------------------------------------- diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatArcDarkIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTArcDarkIJTheme.java similarity index 87% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatArcDarkIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTArcDarkIJTheme.java index 0cbce003..bb7634e8 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatArcDarkIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTArcDarkIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatArcDarkIJTheme +public class FlatMTArcDarkIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Arc Dark (Material)"; public static boolean setup() { try { - return setup( new FlatArcDarkIJTheme() ); + return setup( new FlatMTArcDarkIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatArcDarkIJTheme.class ); + installLafInfo( NAME, FlatMTArcDarkIJTheme.class ); } - public FlatArcDarkIJTheme() { + public FlatMTArcDarkIJTheme() { super( Utils.loadTheme( "Arc Dark.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneDarkIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTAtomOneDarkIJTheme.java similarity index 86% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneDarkIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTAtomOneDarkIJTheme.java index e72a2814..7ebd21e5 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneDarkIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTAtomOneDarkIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatAtomOneDarkIJTheme +public class FlatMTAtomOneDarkIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Atom One Dark (Material)"; public static boolean setup() { try { - return setup( new FlatAtomOneDarkIJTheme() ); + return setup( new FlatMTAtomOneDarkIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatAtomOneDarkIJTheme.class ); + installLafInfo( NAME, FlatMTAtomOneDarkIJTheme.class ); } - public FlatAtomOneDarkIJTheme() { + public FlatMTAtomOneDarkIJTheme() { super( Utils.loadTheme( "Atom One Dark.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneLightIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTAtomOneLightIJTheme.java similarity index 86% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneLightIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTAtomOneLightIJTheme.java index 9c47569f..79f349bc 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneLightIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTAtomOneLightIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatAtomOneLightIJTheme +public class FlatMTAtomOneLightIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Atom One Light (Material)"; public static boolean setup() { try { - return setup( new FlatAtomOneLightIJTheme() ); + return setup( new FlatMTAtomOneLightIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatAtomOneLightIJTheme.class ); + installLafInfo( NAME, FlatMTAtomOneLightIJTheme.class ); } - public FlatAtomOneLightIJTheme() { + public FlatMTAtomOneLightIJTheme() { super( Utils.loadTheme( "Atom One Light.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatDraculaIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTDraculaIJTheme.java similarity index 87% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatDraculaIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTDraculaIJTheme.java index c3f44f7f..db72fe80 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatDraculaIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTDraculaIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatDraculaIJTheme +public class FlatMTDraculaIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Dracula (Material)"; public static boolean setup() { try { - return setup( new FlatDraculaIJTheme() ); + return setup( new FlatMTDraculaIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatDraculaIJTheme.class ); + installLafInfo( NAME, FlatMTDraculaIJTheme.class ); } - public FlatDraculaIJTheme() { + public FlatMTDraculaIJTheme() { super( Utils.loadTheme( "Dracula.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubDarkIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTGitHubDarkIJTheme.java similarity index 87% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubDarkIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTGitHubDarkIJTheme.java index 176e3ac6..14de855d 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubDarkIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTGitHubDarkIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatGitHubDarkIJTheme +public class FlatMTGitHubDarkIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "GitHub Dark (Material)"; public static boolean setup() { try { - return setup( new FlatGitHubDarkIJTheme() ); + return setup( new FlatMTGitHubDarkIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatGitHubDarkIJTheme.class ); + installLafInfo( NAME, FlatMTGitHubDarkIJTheme.class ); } - public FlatGitHubDarkIJTheme() { + public FlatMTGitHubDarkIJTheme() { super( Utils.loadTheme( "GitHub Dark.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTGitHubIJTheme.java similarity index 87% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTGitHubIJTheme.java index ece0d023..4106b733 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTGitHubIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatGitHubIJTheme +public class FlatMTGitHubIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "GitHub (Material)"; public static boolean setup() { try { - return setup( new FlatGitHubIJTheme() ); + return setup( new FlatMTGitHubIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatGitHubIJTheme.class ); + installLafInfo( NAME, FlatMTGitHubIJTheme.class ); } - public FlatGitHubIJTheme() { + public FlatMTGitHubIJTheme() { super( Utils.loadTheme( "GitHub.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatLightOwlIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTLightOwlIJTheme.java similarity index 87% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatLightOwlIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTLightOwlIJTheme.java index 6bdc770f..0fe91dfd 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatLightOwlIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTLightOwlIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatLightOwlIJTheme +public class FlatMTLightOwlIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Light Owl (Material)"; public static boolean setup() { try { - return setup( new FlatLightOwlIJTheme() ); + return setup( new FlatMTLightOwlIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatLightOwlIJTheme.class ); + installLafInfo( NAME, FlatMTLightOwlIJTheme.class ); } - public FlatLightOwlIJTheme() { + public FlatMTLightOwlIJTheme() { super( Utils.loadTheme( "Light Owl.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDarkerIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialDarkerIJTheme.java similarity index 86% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDarkerIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialDarkerIJTheme.java index 26d460f7..34539a37 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDarkerIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialDarkerIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatMaterialDarkerIJTheme +public class FlatMTMaterialDarkerIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Material Darker (Material)"; public static boolean setup() { try { - return setup( new FlatMaterialDarkerIJTheme() ); + return setup( new FlatMTMaterialDarkerIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatMaterialDarkerIJTheme.class ); + installLafInfo( NAME, FlatMTMaterialDarkerIJTheme.class ); } - public FlatMaterialDarkerIJTheme() { + public FlatMTMaterialDarkerIJTheme() { super( Utils.loadTheme( "Material Darker.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDeepOceanIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialDeepOceanIJTheme.java similarity index 85% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDeepOceanIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialDeepOceanIJTheme.java index d1e1a00a..f3c7fc2f 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDeepOceanIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialDeepOceanIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatMaterialDeepOceanIJTheme +public class FlatMTMaterialDeepOceanIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Material Deep Ocean (Material)"; public static boolean setup() { try { - return setup( new FlatMaterialDeepOceanIJTheme() ); + return setup( new FlatMTMaterialDeepOceanIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatMaterialDeepOceanIJTheme.class ); + installLafInfo( NAME, FlatMTMaterialDeepOceanIJTheme.class ); } - public FlatMaterialDeepOceanIJTheme() { + public FlatMTMaterialDeepOceanIJTheme() { super( Utils.loadTheme( "Material Deep Ocean.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialLighterIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialLighterIJTheme.java similarity index 85% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialLighterIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialLighterIJTheme.java index 08fe26cb..e4f8df8b 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialLighterIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialLighterIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatMaterialLighterIJTheme +public class FlatMTMaterialLighterIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Material Lighter (Material)"; public static boolean setup() { try { - return setup( new FlatMaterialLighterIJTheme() ); + return setup( new FlatMTMaterialLighterIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatMaterialLighterIJTheme.class ); + installLafInfo( NAME, FlatMTMaterialLighterIJTheme.class ); } - public FlatMaterialLighterIJTheme() { + public FlatMTMaterialLighterIJTheme() { super( Utils.loadTheme( "Material Lighter.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialOceanicIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialOceanicIJTheme.java similarity index 85% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialOceanicIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialOceanicIJTheme.java index 1e3dae88..229ed38e 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialOceanicIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialOceanicIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatMaterialOceanicIJTheme +public class FlatMTMaterialOceanicIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Material Oceanic (Material)"; public static boolean setup() { try { - return setup( new FlatMaterialOceanicIJTheme() ); + return setup( new FlatMTMaterialOceanicIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatMaterialOceanicIJTheme.class ); + installLafInfo( NAME, FlatMTMaterialOceanicIJTheme.class ); } - public FlatMaterialOceanicIJTheme() { + public FlatMTMaterialOceanicIJTheme() { super( Utils.loadTheme( "Material Oceanic.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialPalenightIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialPalenightIJTheme.java similarity index 85% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialPalenightIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialPalenightIJTheme.java index 173f05b2..5c6ed9c7 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialPalenightIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMaterialPalenightIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatMaterialPalenightIJTheme +public class FlatMTMaterialPalenightIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Material Palenight (Material)"; public static boolean setup() { try { - return setup( new FlatMaterialPalenightIJTheme() ); + return setup( new FlatMTMaterialPalenightIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatMaterialPalenightIJTheme.class ); + installLafInfo( NAME, FlatMTMaterialPalenightIJTheme.class ); } - public FlatMaterialPalenightIJTheme() { + public FlatMTMaterialPalenightIJTheme() { super( Utils.loadTheme( "Material Palenight.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMonokaiProIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMonokaiProIJTheme.java similarity index 87% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMonokaiProIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMonokaiProIJTheme.java index a1c84b1d..a36310e0 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMonokaiProIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMonokaiProIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatMonokaiProIJTheme +public class FlatMTMonokaiProIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Monokai Pro (Material)"; public static boolean setup() { try { - return setup( new FlatMonokaiProIJTheme() ); + return setup( new FlatMTMonokaiProIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatMonokaiProIJTheme.class ); + installLafInfo( NAME, FlatMTMonokaiProIJTheme.class ); } - public FlatMonokaiProIJTheme() { + public FlatMTMonokaiProIJTheme() { super( Utils.loadTheme( "Monokai Pro.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMoonlightIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMoonlightIJTheme.java similarity index 87% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMoonlightIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMoonlightIJTheme.java index e0d6c261..1c0d6c64 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMoonlightIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTMoonlightIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatMoonlightIJTheme +public class FlatMTMoonlightIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Moonlight (Material)"; public static boolean setup() { try { - return setup( new FlatMoonlightIJTheme() ); + return setup( new FlatMTMoonlightIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatMoonlightIJTheme.class ); + installLafInfo( NAME, FlatMTMoonlightIJTheme.class ); } - public FlatMoonlightIJTheme() { + public FlatMTMoonlightIJTheme() { super( Utils.loadTheme( "Moonlight.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatNightOwlIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTNightOwlIJTheme.java similarity index 87% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatNightOwlIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTNightOwlIJTheme.java index 3c3a1d6e..b61c89db 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatNightOwlIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTNightOwlIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatNightOwlIJTheme +public class FlatMTNightOwlIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Night Owl (Material)"; public static boolean setup() { try { - return setup( new FlatNightOwlIJTheme() ); + return setup( new FlatMTNightOwlIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatNightOwlIJTheme.class ); + installLafInfo( NAME, FlatMTNightOwlIJTheme.class ); } - public FlatNightOwlIJTheme() { + public FlatMTNightOwlIJTheme() { super( Utils.loadTheme( "Night Owl.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedDarkIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTSolarizedDarkIJTheme.java similarity index 86% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedDarkIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTSolarizedDarkIJTheme.java index 9c5c66b2..265d11df 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedDarkIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTSolarizedDarkIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatSolarizedDarkIJTheme +public class FlatMTSolarizedDarkIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Solarized Dark (Material)"; public static boolean setup() { try { - return setup( new FlatSolarizedDarkIJTheme() ); + return setup( new FlatMTSolarizedDarkIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatSolarizedDarkIJTheme.class ); + installLafInfo( NAME, FlatMTSolarizedDarkIJTheme.class ); } - public FlatSolarizedDarkIJTheme() { + public FlatMTSolarizedDarkIJTheme() { super( Utils.loadTheme( "Solarized Dark.theme.json" ) ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedLightIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTSolarizedLightIJTheme.java similarity index 86% rename from flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedLightIJTheme.java rename to flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTSolarizedLightIJTheme.java index 970293e7..b5004c6d 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedLightIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMTSolarizedLightIJTheme.java @@ -26,24 +26,24 @@ import com.formdev.flatlaf.IntelliJTheme; /** * @author Karl Tauber */ -public class FlatSolarizedLightIJTheme +public class FlatMTSolarizedLightIJTheme extends IntelliJTheme.ThemeLaf { public static final String NAME = "Solarized Light (Material)"; public static boolean setup() { try { - return setup( new FlatSolarizedLightIJTheme() ); + return setup( new FlatMTSolarizedLightIJTheme() ); } catch( RuntimeException ex ) { return false; } } public static void installLafInfo() { - installLafInfo( NAME, FlatSolarizedLightIJTheme.class ); + installLafInfo( NAME, FlatMTSolarizedLightIJTheme.class ); } - public FlatSolarizedLightIJTheme() { + public FlatMTSolarizedLightIJTheme() { super( Utils.loadTheme( "Solarized Light.theme.json" ) ); } From f5e6b90e024dc8487830ae5f83afeed21182ff27 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Tue, 25 Feb 2025 19:31:14 +0100 Subject: [PATCH 24/36] UIDefaultsDump: fixed property sort order and updated dumps GTKLookAndFeel dump updated on Ubuntu 24.10 --- .../uidefaults/BasicLookAndFeel_1.8.0_202.txt | 78 ++ .../BasicLookAndFeel_InputMap_1.8.0_202.txt | 130 +-- .../dumps/uidefaults/FlatDarkLaf_1.8.0.txt | 12 +- .../dumps/uidefaults/FlatLightLaf_1.8.0.txt | 12 +- .../FlatLightLaf_InputMap_1.8.0-mac.txt | 142 +-- .../FlatLightLaf_InputMap_1.8.0.txt | 162 ++-- .../dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt | 12 +- .../uidefaults/FlatMacLightLaf_1.8.0.txt | 12 +- .../dumps/uidefaults/FlatTestLaf_1.8.0.txt | 12 +- .../uidefaults/GTKLookAndFeel_1.8.0_202.txt | 430 ++++---- .../GTKLookAndFeel_ActionMap_1.8.0_202.txt | 916 ++++++++++++++++++ .../GTKLookAndFeel_InputMap_1.8.0_202.txt | 126 +-- .../uidefaults/MetalLookAndFeel_1.8.0_202.txt | 87 ++ .../MetalLookAndFeel_InputMap_1.8.0_202.txt | 130 +-- .../NimbusLookAndFeel_1.8.0_202.txt | 163 +++- .../NimbusLookAndFeel_InputMap_1.8.0_202.txt | 18 +- .../WindowsLookAndFeel_1.8.0_202.txt | 88 +- .../WindowsLookAndFeel_InputMap_1.8.0_202.txt | 130 +-- .../testing/uidefaults/UIDefaultsDump.java | 6 +- 19 files changed, 1987 insertions(+), 679 deletions(-) create mode 100644 flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_ActionMap_1.8.0_202.txt diff --git a/flatlaf-testing/dumps/uidefaults/BasicLookAndFeel_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/BasicLookAndFeel_1.8.0_202.txt index 30168f9e..42056f0f 100644 --- a/flatlaf-testing/dumps/uidefaults/BasicLookAndFeel_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/BasicLookAndFeel_1.8.0_202.txt @@ -804,3 +804,81 @@ textText #000000 javax.swing.plaf.ColorUIResource [UI] window #ffffff javax.swing.plaf.ColorUIResource [UI] windowBorder #000000 javax.swing.plaf.ColorUIResource [UI] windowText #000000 javax.swing.plaf.ColorUIResource [UI] + + +#-------- Contrast Ratios -------- + +# WCAG 2 Contrast Requirements: minimum 4.5; enhanced 7.0 +# https://webaim.org/articles/contrast/#sc143 + + +#-- activeTitleForeground -- +InternalFrame.activeTitleForeground #ffffff #000080 16.0 + +#-- disabledForeground -- +ComboBox.disabledForeground #808080 #c0c0c0 2.2 !!!!! +Label.disabledForeground #ffffff #c0c0c0 1.8 !!!!!! + +#-- focusCellForeground -- +Table.focusCellForeground #000000 #ffffff 21.0 + +#-- foreground -- +Button.foreground #000000 #c0c0c0 11.5 +CheckBox.foreground #000000 #c0c0c0 11.5 +CheckBoxMenuItem.foreground #000000 #c0c0c0 11.5 +ColorChooser.foreground #000000 #c0c0c0 11.5 +ComboBox.foreground #000000 #ffffff 21.0 +EditorPane.foreground #000000 #ffffff 21.0 +FormattedTextField.foreground #000000 #ffffff 21.0 +Label.foreground #000000 #c0c0c0 11.5 +List.foreground #000000 #ffffff 21.0 +Menu.foreground #000000 #c0c0c0 11.5 +MenuBar.foreground #000000 #c0c0c0 11.5 +MenuItem.foreground #000000 #c0c0c0 11.5 +OptionPane.foreground #000000 #c0c0c0 11.5 +Panel.foreground #000000 #c0c0c0 11.5 +PasswordField.foreground #000000 #ffffff 21.0 +PopupMenu.foreground #000000 #c0c0c0 11.5 +RadioButton.foreground #000000 #c0c0c0 11.5 +RadioButtonMenuItem.foreground #000000 #c0c0c0 11.5 +Spinner.foreground #c0c0c0 #c0c0c0 1.0 !!!!!! +TabbedPane.foreground #000000 #c0c0c0 11.5 +Table.foreground #000000 #ffffff 21.0 +TableHeader.foreground #000000 #c0c0c0 11.5 +TextArea.foreground #000000 #ffffff 21.0 +TextField.foreground #000000 #ffffff 21.0 +TextPane.foreground #000000 #ffffff 21.0 +ToggleButton.foreground #000000 #c0c0c0 11.5 +ToolTip.foreground #000000 #ffffe1 20.6 +Tree.foreground #000000 #ffffff 21.0 + +#-- inactiveTitleForeground -- +InternalFrame.inactiveTitleForeground #c0c0c0 #808080 2.2 !!!!! + +#-- selectionBackground -- +ProgressBar.selectionBackground #000080 #c0c0c0 8.8 + +#-- selectionForeground -- +CheckBoxMenuItem.selectionForeground #ffffff #000080 16.0 +ComboBox.selectionForeground #ffffff #000080 16.0 +EditorPane.selectionForeground #ffffff #000080 16.0 +FormattedTextField.selectionForeground #ffffff #000080 16.0 +List.selectionForeground #ffffff #000080 16.0 +Menu.selectionForeground #ffffff #000080 16.0 +MenuItem.selectionForeground #ffffff #000080 16.0 +PasswordField.selectionForeground #ffffff #000080 16.0 +ProgressBar.selectionForeground #c0c0c0 #000080 8.8 +RadioButtonMenuItem.selectionForeground #ffffff #000080 16.0 +Table.selectionForeground #ffffff #000080 16.0 +TextArea.selectionForeground #ffffff #000080 16.0 +TextField.selectionForeground #ffffff #000080 16.0 +TextPane.selectionForeground #ffffff #000080 16.0 +Tree.selectionForeground #ffffff #000080 16.0 + +#-- textForeground -- +Tree.textForeground #000000 #c0c0c0 11.5 + +#-- non-text -- +ProgressBar.background #c0c0c0 #c0c0c0 1.0 !!!!!! +ProgressBar.foreground #000080 #c0c0c0 8.8 +Separator.foreground #808080 #ffffff 3.9 !!!! diff --git a/flatlaf-testing/dumps/uidefaults/BasicLookAndFeel_InputMap_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/BasicLookAndFeel_InputMap_1.8.0_202.txt index acb39c3b..aac87ab6 100644 --- a/flatlaf-testing/dumps/uidefaults/BasicLookAndFeel_InputMap_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/BasicLookAndFeel_InputMap_1.8.0_202.txt @@ -124,23 +124,6 @@ FormattedTextField.focusInputMap [lazy] 44 javax.swing.plaf.InputMapUIResourc #---- List ---- -List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI] - ctrl KP_LEFT selectNextColumnChangeLead - ctrl KP_RIGHT selectPreviousColumnChangeLead - ctrl LEFT selectNextColumnChangeLead - ctrl RIGHT selectPreviousColumnChangeLead - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift ctrl KP_LEFT selectNextColumnExtendSelection - shift ctrl KP_RIGHT selectPreviousColumnExtendSelection - shift ctrl LEFT selectNextColumnExtendSelection - shift ctrl RIGHT selectPreviousColumnExtendSelection - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnExtendSelection - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnExtendSelection List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -206,19 +189,27 @@ List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource shift RIGHT selectNextColumnExtendSelection shift SPACE extendTo shift UP selectPreviousRowExtendSelection +List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI] + ctrl KP_LEFT selectNextColumnChangeLead + ctrl KP_RIGHT selectPreviousColumnChangeLead + ctrl LEFT selectNextColumnChangeLead + ctrl RIGHT selectPreviousColumnChangeLead + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift ctrl KP_LEFT selectNextColumnExtendSelection + shift ctrl KP_RIGHT selectPreviousColumnExtendSelection + shift ctrl LEFT selectNextColumnExtendSelection + shift ctrl RIGHT selectPreviousColumnExtendSelection + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnExtendSelection + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnExtendSelection #---- PopupMenu ---- -PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object; - [0] LEFT - [1] selectChild - [2] KP_LEFT - [3] selectChild - [4] RIGHT - [5] selectParent - [6] KP_RIGHT - [7] selectParent PopupMenu.selectedWindowInputMapBindings length=24 [Ljava.lang.Object; [0] ESCAPE [1] cancel @@ -244,6 +235,15 @@ PopupMenu.selectedWindowInputMapBindings length=24 [Ljava.lang.Object; [21] return [22] SPACE [23] return +PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object; + [0] LEFT + [1] selectChild + [2] KP_LEFT + [3] selectChild + [4] RIGHT + [5] selectParent + [6] KP_RIGHT + [7] selectParent #---- RadioButton ---- @@ -262,11 +262,6 @@ RootPane.ancestorInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [ #---- ScrollBar ---- -ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] DOWN positiveUnitIncrement END maxScroll @@ -280,13 +275,15 @@ ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource PAGE_UP negativeBlockIncrement RIGHT positiveUnitIncrement UP negativeUnitIncrement +ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- ScrollPane ---- -ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI] - ctrl PAGE_DOWN scrollLeft - ctrl PAGE_UP scrollRight ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI] ctrl END scrollEnd ctrl HOME scrollHome @@ -302,15 +299,13 @@ ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource PAGE_UP scrollUp RIGHT unitScrollRight UP unitScrollUp +ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI] + ctrl PAGE_DOWN scrollLeft + ctrl PAGE_UP scrollRight #---- Slider ---- -Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] DOWN negativeUnitIncrement END maxScroll @@ -324,6 +319,11 @@ Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource PAGE_UP positiveBlockIncrement RIGHT positiveUnitIncrement UP positiveUnitIncrement +Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- Spinner ---- @@ -376,27 +376,6 @@ TabbedPane.focusInputMap [lazy] 10 javax.swing.plaf.InputMapUIResource #---- Table ---- -Table.ancestorInputMap.RightToLeft [lazy] 20 javax.swing.plaf.InputMapUIResource [UI] - ctrl KP_LEFT selectNextColumnChangeLead - ctrl KP_RIGHT selectPreviousColumnChangeLead - ctrl LEFT selectNextColumnChangeLead - ctrl PAGE_DOWN scrollLeftChangeSelection - ctrl PAGE_UP scrollRightChangeSelection - ctrl RIGHT selectPreviousColumnChangeLead - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift ctrl KP_LEFT selectNextColumnExtendSelection - shift ctrl KP_RIGHT selectPreviousColumnExtendSelection - shift ctrl LEFT selectNextColumnExtendSelection - shift ctrl PAGE_DOWN scrollLeftExtendSelection - shift ctrl PAGE_UP scrollRightExtendSelection - shift ctrl RIGHT selectPreviousColumnExtendSelection - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnExtendSelection - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnExtendSelection Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -469,6 +448,27 @@ Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource shift SPACE extendTo shift TAB selectPreviousColumnCell shift UP selectPreviousRowExtendSelection +Table.ancestorInputMap.RightToLeft [lazy] 20 javax.swing.plaf.InputMapUIResource [UI] + ctrl KP_LEFT selectNextColumnChangeLead + ctrl KP_RIGHT selectPreviousColumnChangeLead + ctrl LEFT selectNextColumnChangeLead + ctrl PAGE_DOWN scrollLeftChangeSelection + ctrl PAGE_UP scrollRightChangeSelection + ctrl RIGHT selectPreviousColumnChangeLead + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift ctrl KP_LEFT selectNextColumnExtendSelection + shift ctrl KP_RIGHT selectPreviousColumnExtendSelection + shift ctrl LEFT selectNextColumnExtendSelection + shift ctrl PAGE_DOWN scrollLeftExtendSelection + shift ctrl PAGE_UP scrollRightExtendSelection + shift ctrl RIGHT selectPreviousColumnExtendSelection + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnExtendSelection + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnExtendSelection #---- TableHeader ---- @@ -514,11 +514,6 @@ ToolBar.ancestorInputMap [lazy] 8 javax.swing.plaf.InputMapUIResource [ Tree.ancestorInputMap [lazy] 1 javax.swing.plaf.InputMapUIResource [UI] ESCAPE cancel -Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT selectChild - KP_RIGHT selectParent - LEFT selectChild - RIGHT selectParent Tree.focusInputMap [lazy] 57 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -577,3 +572,8 @@ Tree.focusInputMap [lazy] 57 javax.swing.plaf.InputMapUIResource shift PAGE_UP scrollUpExtendSelection shift SPACE extendTo shift UP selectPreviousExtendSelection +Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT selectChild + KP_RIGHT selectParent + LEFT selectChild + RIGHT selectParent diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt index 9b7f11b0..a1c64d4f 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt @@ -122,6 +122,7 @@ CheckBox.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.F CheckBox.disabledText #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] CheckBox.font [active] $defaultFont [UI] CheckBox.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.icon.background #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.borderColor #696b6d HSL 210 2 42 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.checkmarkColor #c7c7c7 HSL 0 0 78 javax.swing.plaf.ColorUIResource [UI] @@ -137,7 +138,6 @@ CheckBox.icon.pressedBackground #55585b HSL 210 3 35 com.formdev.flatlaf. CheckBox.icon.pressedBorderColor #446e9e HSL 212 40 44 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBackground #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBorderColor #87898a HSL 200 1 54 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.iconTextGap 4 CheckBox.icon[filled].checkmarkColor #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon[filled].hoverSelectedBackground #bfbfbf HSL 0 0 75 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) @@ -800,8 +800,8 @@ RadioButton.disabledText #a6a6a6 HSL 0 0 65 javax.swing.plaf.Colo RadioButton.font [active] $defaultFont [UI] RadioButton.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] RadioButton.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI] -RadioButton.icon.centerDiameter 8 RadioButton.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonIcon [UI] +RadioButton.icon.centerDiameter 8 RadioButton.iconTextGap 4 RadioButton.icon[filled].centerDiameter 5 RadioButton.light #2f3031 HSL 210 2 19 javax.swing.plaf.ColorUIResource [UI] @@ -1461,14 +1461,14 @@ ViewportUI com.formdev.flatlaf.ui.FlatViewportUI #---- [style] ---- -[style].h00 font: $h00.font [style].h0 font: $h0.font -[style].h1.regular font: $h1.regular.font +[style].h00 font: $h00.font [style].h1 font: $h1.font -[style].h2.regular font: $h2.regular.font +[style].h1.regular font: $h1.regular.font [style].h2 font: $h2.font -[style].h3.regular font: $h3.regular.font +[style].h2.regular font: $h2.regular.font [style].h3 font: $h3.font +[style].h3.regular font: $h3.regular.font [style].h4 font: $h4.font [style].large font: $large.font [style].light font: $light.font diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt index a0953d46..b3e564d4 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt @@ -123,6 +123,7 @@ CheckBox.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.F CheckBox.disabledText #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] CheckBox.font [active] $defaultFont [UI] CheckBox.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.icon.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.borderColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.checkmarkColor #4e9de7 HSL 209 76 61 javax.swing.plaf.ColorUIResource [UI] @@ -138,7 +139,6 @@ CheckBox.icon.pressedBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf. CheckBox.icon.pressedBorderColor #7b9ebf HSL 209 35 62 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBorderColor #4e9de7 HSL 209 76 61 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.iconTextGap 4 CheckBox.icon[filled].checkmarkColor #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon[filled].focusedCheckmarkColor #eaf3fb HSL 208 68 95 javax.swing.plaf.ColorUIResource [UI] @@ -805,8 +805,8 @@ RadioButton.disabledText #808080 HSL 0 0 50 javax.swing.plaf.Colo RadioButton.font [active] $defaultFont [UI] RadioButton.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] RadioButton.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] -RadioButton.icon.centerDiameter 8 RadioButton.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonIcon [UI] +RadioButton.icon.centerDiameter 8 RadioButton.iconTextGap 4 RadioButton.icon[filled].centerDiameter 5 RadioButton.light #e1e1e1 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] @@ -1466,14 +1466,14 @@ ViewportUI com.formdev.flatlaf.ui.FlatViewportUI #---- [style] ---- -[style].h00 font: $h00.font [style].h0 font: $h0.font -[style].h1.regular font: $h1.regular.font +[style].h00 font: $h00.font [style].h1 font: $h1.font -[style].h2.regular font: $h2.regular.font +[style].h1.regular font: $h1.regular.font [style].h2 font: $h2.font -[style].h3.regular font: $h3.regular.font +[style].h2.regular font: $h2.regular.font [style].h3 font: $h3.font +[style].h3.regular font: $h3.regular.font [style].h4 font: $h4.font [style].large font: $large.font [style].light font: $light.font diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0-mac.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0-mac.txt index f9e4462d..77e1b305 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0-mac.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0-mac.txt @@ -240,15 +240,6 @@ FormattedTextField.focusInputMap [lazy] 70 javax.swing.plaf.InputMapUIResourc #---- List ---- -List.focusInputMap.RightToLeft [lazy] 8 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnExtendSelection - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnExtendSelection List.focusInputMap [lazy] 27 javax.swing.plaf.InputMapUIResource [UI] meta A selectAll meta C copy @@ -277,6 +268,15 @@ List.focusInputMap [lazy] 27 javax.swing.plaf.InputMapUIResource shift PAGE_UP scrollUpExtendSelection shift RIGHT selectNextColumnExtendSelection shift UP selectPreviousRowExtendSelection +List.focusInputMap.RightToLeft [lazy] 8 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnExtendSelection + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnExtendSelection #---- PasswordField ---- @@ -353,6 +353,31 @@ PasswordField.focusInputMap [lazy] 67 javax.swing.plaf.InputMapUIResource #---- PopupMenu ---- +PopupMenu.selectedWindowInputMapBindings length=24 [Ljava.lang.Object; + [0] ESCAPE + [1] cancel + [2] DOWN + [3] selectNext + [4] KP_DOWN + [5] selectNext + [6] UP + [7] selectPrevious + [8] KP_UP + [9] selectPrevious + [10] LEFT + [11] selectParent + [12] KP_LEFT + [13] selectParent + [14] RIGHT + [15] selectChild + [16] KP_RIGHT + [17] selectChild + [18] ENTER + [19] return + [20] ctrl ENTER + [21] return + [22] SPACE + [23] return PopupMenu.selectedWindowInputMapBindings.RightToLeft length=32 [Ljava.lang.Object; [0] ESCAPE [1] cancel @@ -386,31 +411,6 @@ PopupMenu.selectedWindowInputMapBindings.RightToLeft length=32 [Ljava.lang.Ob [29] selectParent [30] KP_RIGHT [31] selectParent -PopupMenu.selectedWindowInputMapBindings length=24 [Ljava.lang.Object; - [0] ESCAPE - [1] cancel - [2] DOWN - [3] selectNext - [4] KP_DOWN - [5] selectNext - [6] UP - [7] selectPrevious - [8] KP_UP - [9] selectPrevious - [10] LEFT - [11] selectParent - [12] KP_LEFT - [13] selectParent - [14] RIGHT - [15] selectChild - [16] KP_RIGHT - [17] selectChild - [18] ENTER - [19] return - [20] ctrl ENTER - [21] return - [22] SPACE - [23] return #---- RadioButton ---- @@ -429,11 +429,6 @@ RootPane.ancestorInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [ #---- ScrollBar ---- -ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] DOWN positiveUnitIncrement END maxScroll @@ -447,11 +442,15 @@ ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource PAGE_UP negativeBlockIncrement RIGHT positiveUnitIncrement UP negativeUnitIncrement +ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- ScrollPane ---- -ScrollPane.ancestorInputMap.RightToLeft [lazy] 0 javax.swing.plaf.InputMapUIResource [UI] ScrollPane.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] DOWN unitScrollDown END scrollEnd @@ -465,15 +464,11 @@ ScrollPane.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource PAGE_UP scrollUp RIGHT unitScrollRight UP unitScrollUp +ScrollPane.ancestorInputMap.RightToLeft [lazy] 0 javax.swing.plaf.InputMapUIResource [UI] #---- Slider ---- -Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] DOWN negativeUnitIncrement END maxScroll @@ -487,6 +482,11 @@ Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource PAGE_UP positiveBlockIncrement RIGHT positiveUnitIncrement UP positiveUnitIncrement +Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- Spinner ---- @@ -537,19 +537,6 @@ TabbedPane.focusInputMap [lazy] 8 javax.swing.plaf.InputMapUIResource [ #---- Table ---- -Table.ancestorInputMap.RightToLeft [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] - ctrl PAGE_DOWN scrollLeftChangeSelection - ctrl PAGE_UP scrollRightChangeSelection - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift ctrl PAGE_DOWN scrollLeftExtendSelection - shift ctrl PAGE_UP scrollRightExtendSelection - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnExtendSelection - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnExtendSelection Table.ancestorInputMap [lazy] 34 javax.swing.plaf.InputMapUIResource [UI] alt TAB focusHeader meta A selectAll @@ -585,6 +572,19 @@ Table.ancestorInputMap [lazy] 34 javax.swing.plaf.InputMapUIResource shift RIGHT selectNextColumnExtendSelection shift TAB selectPreviousColumnCell shift UP selectPreviousRowExtendSelection +Table.ancestorInputMap.RightToLeft [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] + ctrl PAGE_DOWN scrollLeftChangeSelection + ctrl PAGE_UP scrollRightChangeSelection + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift ctrl PAGE_DOWN scrollLeftExtendSelection + shift ctrl PAGE_UP scrollRightExtendSelection + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnExtendSelection + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnExtendSelection #---- TableHeader ---- @@ -880,19 +880,6 @@ ToolBar.ancestorInputMap [lazy] 8 javax.swing.plaf.InputMapUIResource [ Tree.ancestorInputMap [lazy] 1 javax.swing.plaf.InputMapUIResource [UI] ESCAPE cancel -Tree.focusInputMap.RightToLeft [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] - alt KP_LEFT selectChild - alt KP_RIGHT selectParent - alt LEFT selectChild - alt RIGHT selectParent - KP_LEFT selectChild - KP_RIGHT selectParent - LEFT selectChild - RIGHT selectParent - shift KP_LEFT selectChild - shift KP_RIGHT selectParent - shift LEFT selectChild - shift RIGHT selectParent Tree.focusInputMap [lazy] 29 javax.swing.plaf.InputMapUIResource [UI] alt KP_LEFT selectParent alt KP_RIGHT selectChild @@ -923,3 +910,16 @@ Tree.focusInputMap [lazy] 29 javax.swing.plaf.InputMapUIResource shift LEFT selectParent shift RIGHT selectChild shift UP selectPreviousExtendSelection +Tree.focusInputMap.RightToLeft [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] + alt KP_LEFT selectChild + alt KP_RIGHT selectParent + alt LEFT selectChild + alt RIGHT selectParent + KP_LEFT selectChild + KP_RIGHT selectParent + LEFT selectChild + RIGHT selectParent + shift KP_LEFT selectChild + shift KP_RIGHT selectParent + shift LEFT selectChild + shift RIGHT selectParent diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0.txt index 4389a367..d3bdf429 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0.txt @@ -200,23 +200,6 @@ FormattedTextField.focusInputMap [lazy] 44 javax.swing.plaf.InputMapUIResourc #---- List ---- -List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI] - ctrl KP_LEFT selectNextColumnChangeLead - ctrl KP_RIGHT selectPreviousColumnChangeLead - ctrl LEFT selectNextColumnChangeLead - ctrl RIGHT selectPreviousColumnChangeLead - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift ctrl KP_LEFT selectNextColumnExtendSelection - shift ctrl KP_RIGHT selectPreviousColumnExtendSelection - shift ctrl LEFT selectNextColumnExtendSelection - shift ctrl RIGHT selectPreviousColumnExtendSelection - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnExtendSelection - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnExtendSelection List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -282,6 +265,23 @@ List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource shift RIGHT selectNextColumnExtendSelection shift SPACE extendTo shift UP selectPreviousRowExtendSelection +List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI] + ctrl KP_LEFT selectNextColumnChangeLead + ctrl KP_RIGHT selectPreviousColumnChangeLead + ctrl LEFT selectNextColumnChangeLead + ctrl RIGHT selectPreviousColumnChangeLead + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift ctrl KP_LEFT selectNextColumnExtendSelection + shift ctrl KP_RIGHT selectPreviousColumnExtendSelection + shift ctrl LEFT selectNextColumnExtendSelection + shift ctrl RIGHT selectPreviousColumnExtendSelection + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnExtendSelection + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnExtendSelection #---- PasswordField ---- @@ -328,6 +328,31 @@ PasswordField.focusInputMap [lazy] 37 javax.swing.plaf.InputMapUIResource #---- PopupMenu ---- +PopupMenu.selectedWindowInputMapBindings length=24 [Ljava.lang.Object; + [0] ESCAPE + [1] cancel + [2] DOWN + [3] selectNext + [4] KP_DOWN + [5] selectNext + [6] UP + [7] selectPrevious + [8] KP_UP + [9] selectPrevious + [10] LEFT + [11] selectParent + [12] KP_LEFT + [13] selectParent + [14] RIGHT + [15] selectChild + [16] KP_RIGHT + [17] selectChild + [18] ENTER + [19] return + [20] ctrl ENTER + [21] return + [22] SPACE + [23] return PopupMenu.selectedWindowInputMapBindings.RightToLeft length=32 [Ljava.lang.Object; [0] ESCAPE [1] cancel @@ -361,31 +386,6 @@ PopupMenu.selectedWindowInputMapBindings.RightToLeft length=32 [Ljava.lang.Ob [29] selectParent [30] KP_RIGHT [31] selectParent -PopupMenu.selectedWindowInputMapBindings length=24 [Ljava.lang.Object; - [0] ESCAPE - [1] cancel - [2] DOWN - [3] selectNext - [4] KP_DOWN - [5] selectNext - [6] UP - [7] selectPrevious - [8] KP_UP - [9] selectPrevious - [10] LEFT - [11] selectParent - [12] KP_LEFT - [13] selectParent - [14] RIGHT - [15] selectChild - [16] KP_RIGHT - [17] selectChild - [18] ENTER - [19] return - [20] ctrl ENTER - [21] return - [22] SPACE - [23] return #---- RadioButton ---- @@ -404,11 +404,6 @@ RootPane.ancestorInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [ #---- ScrollBar ---- -ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] DOWN positiveUnitIncrement END maxScroll @@ -422,13 +417,15 @@ ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource PAGE_UP negativeBlockIncrement RIGHT positiveUnitIncrement UP negativeUnitIncrement +ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- ScrollPane ---- -ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI] - ctrl PAGE_DOWN scrollLeft - ctrl PAGE_UP scrollRight ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI] ctrl END scrollEnd ctrl HOME scrollHome @@ -444,15 +441,13 @@ ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource PAGE_UP scrollUp RIGHT unitScrollRight UP unitScrollUp +ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI] + ctrl PAGE_DOWN scrollLeft + ctrl PAGE_UP scrollRight #---- Slider ---- -Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] DOWN negativeUnitIncrement END maxScroll @@ -466,6 +461,11 @@ Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource PAGE_UP positiveBlockIncrement RIGHT positiveUnitIncrement UP positiveUnitIncrement +Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- Spinner ---- @@ -520,27 +520,6 @@ TabbedPane.focusInputMap [lazy] 10 javax.swing.plaf.InputMapUIResource #---- Table ---- -Table.ancestorInputMap.RightToLeft [lazy] 20 javax.swing.plaf.InputMapUIResource [UI] - ctrl KP_LEFT selectNextColumnChangeLead - ctrl KP_RIGHT selectPreviousColumnChangeLead - ctrl LEFT selectNextColumnChangeLead - ctrl PAGE_DOWN scrollLeftChangeSelection - ctrl PAGE_UP scrollRightChangeSelection - ctrl RIGHT selectPreviousColumnChangeLead - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift ctrl KP_LEFT selectNextColumnExtendSelection - shift ctrl KP_RIGHT selectPreviousColumnExtendSelection - shift ctrl LEFT selectNextColumnExtendSelection - shift ctrl PAGE_DOWN scrollLeftExtendSelection - shift ctrl PAGE_UP scrollRightExtendSelection - shift ctrl RIGHT selectPreviousColumnExtendSelection - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnExtendSelection - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnExtendSelection Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -613,6 +592,27 @@ Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource shift SPACE extendTo shift TAB selectPreviousColumnCell shift UP selectPreviousRowExtendSelection +Table.ancestorInputMap.RightToLeft [lazy] 20 javax.swing.plaf.InputMapUIResource [UI] + ctrl KP_LEFT selectNextColumnChangeLead + ctrl KP_RIGHT selectPreviousColumnChangeLead + ctrl LEFT selectNextColumnChangeLead + ctrl PAGE_DOWN scrollLeftChangeSelection + ctrl PAGE_UP scrollRightChangeSelection + ctrl RIGHT selectPreviousColumnChangeLead + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift ctrl KP_LEFT selectNextColumnExtendSelection + shift ctrl KP_RIGHT selectPreviousColumnExtendSelection + shift ctrl LEFT selectNextColumnExtendSelection + shift ctrl PAGE_DOWN scrollLeftExtendSelection + shift ctrl PAGE_UP scrollRightExtendSelection + shift ctrl RIGHT selectPreviousColumnExtendSelection + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnExtendSelection + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnExtendSelection #---- TableHeader ---- @@ -834,11 +834,6 @@ ToolBar.ancestorInputMap [lazy] 8 javax.swing.plaf.InputMapUIResource [ Tree.ancestorInputMap [lazy] 1 javax.swing.plaf.InputMapUIResource [UI] ESCAPE cancel -Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT selectChild - KP_RIGHT selectParent - LEFT selectChild - RIGHT selectParent Tree.focusInputMap [lazy] 59 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -899,3 +894,8 @@ Tree.focusInputMap [lazy] 59 javax.swing.plaf.InputMapUIResource shift PAGE_UP scrollUpExtendSelection shift SPACE extendTo shift UP selectPreviousExtendSelection +Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT selectChild + KP_RIGHT selectParent + LEFT selectChild + RIGHT selectParent diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt index 8ef3492d..0392e80f 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt @@ -122,6 +122,7 @@ CheckBox.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.F CheckBox.disabledText #9a9a9a HSL 0 0 60 javax.swing.plaf.ColorUIResource [UI] CheckBox.font [active] $defaultFont [UI] CheckBox.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.icon.background #292929 HSL 0 0 16 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.borderColor #ffffff25 15% HSLA 0 0 100 15 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.checkmarkColor #c7c7c7 HSL 0 0 78 javax.swing.plaf.ColorUIResource [UI] @@ -136,7 +137,6 @@ CheckBox.icon.pressedBorderColor #34b0ff80 50% HSLA 203 100 60 50 javax.sw CheckBox.icon.selectedBackground #292929 HSL 0 0 16 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBorderColor #ffffff51 32% HSLA 0 0 100 32 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.style filled -CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.iconTextGap 6 CheckBox.icon[filled].background #4e4e4e HSL 0 0 31 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon[filled].borderWidth 0 @@ -808,9 +808,9 @@ RadioButton.disabledText #9a9a9a HSL 0 0 60 javax.swing.plaf.Colo RadioButton.font [active] $defaultFont [UI] RadioButton.foreground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] RadioButton.highlight #bfbfbf19 10% HSLA 0 0 75 10 javax.swing.plaf.ColorUIResource [UI] +RadioButton.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonIcon [UI] RadioButton.icon.centerDiameter 8 RadioButton.icon.style filled -RadioButton.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonIcon [UI] RadioButton.iconTextGap 6 RadioButton.icon[filled].centerDiameter 6 RadioButton.light #cccccc19 10% HSLA 0 0 80 10 javax.swing.plaf.ColorUIResource [UI] @@ -1471,14 +1471,14 @@ ViewportUI com.formdev.flatlaf.ui.FlatViewportUI #---- [style] ---- -[style].h00 font: $h00.font [style].h0 font: $h0.font -[style].h1.regular font: $h1.regular.font +[style].h00 font: $h00.font [style].h1 font: $h1.font -[style].h2.regular font: $h2.regular.font +[style].h1.regular font: $h1.regular.font [style].h2 font: $h2.font -[style].h3.regular font: $h3.regular.font +[style].h2.regular font: $h2.regular.font [style].h3 font: $h3.font +[style].h3.regular font: $h3.regular.font [style].h4 font: $h4.font [style].large font: $large.font [style].light font: $light.font diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt index 96795586..4dc02870 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt @@ -122,6 +122,7 @@ CheckBox.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.F CheckBox.disabledText #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] CheckBox.font [active] $defaultFont [UI] CheckBox.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.icon.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.borderColor #0000003c 24% HSLA 0 0 0 24 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.checkmarkColor #007aff HSL 211 100 50 javax.swing.plaf.ColorUIResource [UI] @@ -136,7 +137,6 @@ CheckBox.icon.pressedBorderColor #0056cf98 60% HSLA 215 100 41 60 javax.sw CheckBox.icon.selectedBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBorderColor #007aff HSL 211 100 50 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.style filled -CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.iconTextGap 6 CheckBox.icon[filled].background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon[filled].borderColor #00000026 15% HSLA 0 0 0 15 javax.swing.plaf.ColorUIResource [UI] @@ -812,9 +812,9 @@ RadioButton.disabledText #7b7b7b HSL 0 0 48 javax.swing.plaf.Colo RadioButton.font [active] $defaultFont [UI] RadioButton.foreground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] RadioButton.highlight #40404026 15% HSLA 0 0 25 15 javax.swing.plaf.ColorUIResource [UI] +RadioButton.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonIcon [UI] RadioButton.icon.centerDiameter 8 RadioButton.icon.style filled -RadioButton.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonIcon [UI] RadioButton.iconTextGap 6 RadioButton.icon[filled].centerDiameter 6 RadioButton.light #1f1f1f26 15% HSLA 0 0 12 15 javax.swing.plaf.ColorUIResource [UI] @@ -1475,14 +1475,14 @@ ViewportUI com.formdev.flatlaf.ui.FlatViewportUI #---- [style] ---- -[style].h00 font: $h00.font [style].h0 font: $h0.font -[style].h1.regular font: $h1.regular.font +[style].h00 font: $h00.font [style].h1 font: $h1.font -[style].h2.regular font: $h2.regular.font +[style].h1.regular font: $h1.regular.font [style].h2 font: $h2.font -[style].h3.regular font: $h3.regular.font +[style].h2.regular font: $h2.regular.font [style].h3 font: $h3.font +[style].h3.regular font: $h3.regular.font [style].h4 font: $h4.font [style].large font: $large.font [style].light font: $light.font diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt index ffe6bff2..8ffb24da 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt @@ -148,6 +148,7 @@ CheckBox.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.F CheckBox.disabledText #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] CheckBox.font [active] $defaultFont [UI] CheckBox.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.icon.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.borderColor #878787 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.checkmarkColor #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] @@ -172,7 +173,6 @@ CheckBox.icon.pressedSelectedBackground #88ffff HSL 180 100 77 javax.swing. CheckBox.icon.pressedSelectedBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBackground #4d89c9 HSL 211 53 55 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon.selectedBorderColor #4982cc HSL 214 56 54 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.iconTextGap 4 CheckBox.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] CheckBox.rollover true @@ -838,8 +838,8 @@ RadioButton.disabledText #000088 HSL 240 100 27 javax.swing.plaf.Colo RadioButton.font [active] $defaultFont [UI] RadioButton.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] RadioButton.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] -RadioButton.icon.centerDiameter 8 RadioButton.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonIcon [UI] +RadioButton.icon.centerDiameter 8 RadioButton.iconTextGap 4 RadioButton.icon[filled].centerDiameter 5 RadioButton.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] @@ -1520,14 +1520,14 @@ ViewportUI com.formdev.flatlaf.ui.FlatViewportUI #---- [style] ---- -[style].h00 font: $h00.font [style].h0 font: $h0.font -[style].h1.regular font: $h1.regular.font +[style].h00 font: $h00.font [style].h1 font: $h1.font -[style].h2.regular font: $h2.regular.font +[style].h1.regular font: $h1.regular.font [style].h2 font: $h2.font -[style].h3.regular font: $h3.regular.font +[style].h2.regular font: $h2.regular.font [style].h3 font: $h3.font +[style].h3.regular font: $h3.regular.font [style].h4 font: $h4.font [style].large font: $large.font [style].light font: $light.font diff --git a/flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_1.8.0_202.txt index 08a2d17d..2d91b8ed 100644 --- a/flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_1.8.0_202.txt @@ -52,18 +52,18 @@ AuditoryCues.noAuditoryCues length=1 [Ljava.lang.Object; #---- Button ---- -Button.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +Button.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] Button.border [lazy] javax.swing.plaf.BorderUIResource$CompoundBorderUIResource [UI] 2,3,3,3 false javax.swing.plaf.basic.BasicBorders$ButtonBorder [UI] 0,0,0,0 false javax.swing.plaf.basic.BasicBorders$MarginBorder [UI] Button.darkShadow #000000 javax.swing.plaf.ColorUIResource [UI] Button.defaultButtonFollowsFocus false -Button.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -Button.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +Button.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +Button.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] Button.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -Button.light #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +Button.light #f5f6f7 javax.swing.plaf.ColorUIResource [UI] Button.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -Button.shadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +Button.shadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] Button.textIconGap 4 Button.textShiftOffset 0 ButtonUI javax.swing.plaf.synth.SynthLookAndFeel @@ -71,12 +71,12 @@ ButtonUI javax.swing.plaf.synth.SynthLookAndFeel #---- CheckBox ---- -CheckBox.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +CheckBox.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] CheckBox.border [lazy] javax.swing.plaf.BorderUIResource$CompoundBorderUIResource [UI] 2,2,2,2 false javax.swing.plaf.basic.BasicBorders$RadioButtonBorder [UI] 0,0,0,0 false javax.swing.plaf.basic.BasicBorders$MarginBorder [UI] -CheckBox.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -CheckBox.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +CheckBox.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +CheckBox.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] CheckBox.icon [lazy] 13,13 com.sun.java.swing.plaf.gtk.GTKIconFactory$DelegatingIcon [UI] CheckBox.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] CheckBox.textIconGap 4 @@ -86,17 +86,17 @@ CheckBox.textShiftOffset 0 #---- CheckBoxMenuItem ---- CheckBoxMenuItem.acceleratorFont [lazy] Dialog plain 12 javax.swing.plaf.FontUIResource [UI] -CheckBoxMenuItem.acceleratorForeground #2e3436 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.acceleratorForeground #3d3d3d javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.alignAcceleratorText false -CheckBoxMenuItem.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.border [lazy] 0,0,0,0 false javax.swing.plaf.basic.BasicBorders$MarginBorder [UI] CheckBoxMenuItem.borderPainted false CheckBoxMenuItem.checkIcon [lazy] 13,13 com.sun.java.swing.plaf.gtk.GTKIconFactory$DelegatingIcon [UI] -CheckBoxMenuItem.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -CheckBoxMenuItem.foreground #2e3436 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +CheckBoxMenuItem.foreground #3d3d3d javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -CheckBoxMenuItem.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItemUI javax.swing.plaf.synth.SynthLookAndFeel @@ -108,13 +108,13 @@ CheckBoxUI javax.swing.plaf.synth.SynthLookAndFeel #---- ColorChooser ---- -ColorChooser.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] -ColorChooser.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -ColorChooser.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +ColorChooser.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] +ColorChooser.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +ColorChooser.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] ColorChooser.panels [active] length=1 [Ljavax.swing.colorchooser.AbstractColorChooserPanel; [0] [unknown type] com.sun.java.swing.plaf.gtk.GTKColorChooserPanel ColorChooser.showPreviewPanelText false -ColorChooser.swatchesDefaultRecentColor #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ColorChooser.swatchesDefaultRecentColor #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ColorChooser.swatchesRecentSwatchSize 10,10 java.awt.Dimension ColorChooser.swatchesSwatchSize 10,10 java.awt.Dimension ColorChooserUI javax.swing.plaf.synth.SynthLookAndFeel @@ -122,18 +122,18 @@ ColorChooserUI javax.swing.plaf.synth.SynthLookAndFeel #---- ComboBox ---- -ComboBox.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonBackground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ComboBox.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonBackground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonDarkShadow #000000 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonShadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] -ComboBox.disabledBackground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonShadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] +ComboBox.disabledBackground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ComboBox.disabledForeground #8b8e8f javax.swing.plaf.ColorUIResource [UI] -ComboBox.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -ComboBox.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +ComboBox.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +ComboBox.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] ComboBox.isEnterSelectablePopup true ComboBox.noActionOnKeyNavigation false -ComboBox.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +ComboBox.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] ComboBox.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] ComboBox.timeFactor 1000 ComboBoxUI javax.swing.plaf.synth.SynthLookAndFeel @@ -141,7 +141,7 @@ ComboBoxUI javax.swing.plaf.synth.SynthLookAndFeel #---- Desktop ---- -Desktop.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +Desktop.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] Desktop.minOnScreenInsets 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] @@ -149,7 +149,7 @@ Desktop.minOnScreenInsets 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] DesktopIcon.border [lazy] javax.swing.plaf.BorderUIResource$CompoundBorderUIResource [UI] 2,2,2,2 true javax.swing.border.BevelBorder - line: #e8e8e7 javax.swing.plaf.ColorUIResource [UI] 1 false 1,1,1,1 true javax.swing.border.LineBorder + line: #f5f6f7 javax.swing.plaf.ColorUIResource [UI] 1 false 1,1,1,1 true javax.swing.border.LineBorder DesktopIconUI javax.swing.plaf.synth.SynthLookAndFeel @@ -165,11 +165,11 @@ EditorPane.border [lazy] 0,0,0,0 false javax.swing.plaf.basic.B EditorPane.caretAspectRatio 0.025 EditorPane.caretBlinkRate 1200 EditorPane.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] -EditorPane.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -EditorPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +EditorPane.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +EditorPane.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] EditorPane.inactiveForeground #8b8e8f javax.swing.plaf.ColorUIResource [UI] EditorPane.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -EditorPane.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +EditorPane.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] EditorPane.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] EditorPaneUI javax.swing.plaf.synth.SynthLookAndFeel @@ -198,17 +198,17 @@ FileView.hardDriveIcon [lazy] null #---- FormattedTextField ---- -FormattedTextField.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.border [lazy] 2,2,2,2 false javax.swing.plaf.basic.BasicBorders$FieldBorder [UI] FormattedTextField.caretAspectRatio 0.025 FormattedTextField.caretBlinkRate 1200 FormattedTextField.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -FormattedTextField.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.inactiveBackground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +FormattedTextField.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.inactiveBackground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.inactiveForeground #8b8e8f javax.swing.plaf.ColorUIResource [UI] FormattedTextField.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -FormattedTextField.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] FormattedTextFieldUI javax.swing.plaf.synth.SynthLookAndFeel @@ -217,12 +217,12 @@ FormattedTextFieldUI javax.swing.plaf.synth.SynthLookAndFeel InternalFrame.border [lazy] javax.swing.plaf.BorderUIResource$CompoundBorderUIResource [UI] 2,2,2,2 true javax.swing.border.BevelBorder - line: #e8e8e7 javax.swing.plaf.ColorUIResource [UI] 1 false 1,1,1,1 true javax.swing.border.LineBorder -InternalFrame.borderColor #e8e8e7 javax.swing.plaf.ColorUIResource [UI] + line: #f5f6f7 javax.swing.plaf.ColorUIResource [UI] 1 false 1,1,1,1 true javax.swing.border.LineBorder +InternalFrame.borderColor #f5f6f7 javax.swing.plaf.ColorUIResource [UI] InternalFrame.borderDarkShadow #000000 javax.swing.plaf.ColorUIResource [UI] InternalFrame.borderHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] -InternalFrame.borderLight #e8e8e7 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.borderShadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderLight #f5f6f7 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderShadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] InternalFrame.closeIcon [lazy] 14,16 javax.swing.plaf.basic.BasicIconFactory$EmptyFrameIcon InternalFrame.icon [lazy] 16,16 sun.swing.ImageIconUIResource [UI] (sun.awt.image.ToolkitImage) InternalFrame.iconifyIcon [lazy] 14,16 javax.swing.plaf.basic.BasicIconFactory$EmptyFrameIcon @@ -253,11 +253,11 @@ InternalFrameUI javax.swing.plaf.synth.SynthLookAndFeel #---- Label ---- -Label.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +Label.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] Label.disabledForeground #ffffff javax.swing.plaf.ColorUIResource [UI] -Label.disabledShadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] -Label.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -Label.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +Label.disabledShadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] +Label.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +Label.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] LabelUI javax.swing.plaf.synth.SynthLookAndFeel @@ -265,14 +265,14 @@ LabelUI javax.swing.plaf.synth.SynthLookAndFeel List.background #ffffff javax.swing.plaf.ColorUIResource [UI] List.cellRenderer [active] javax.swing.DefaultListCellRenderer$UIResource [UI] -List.dropLineColor #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +List.dropLineColor #a6acb3 javax.swing.plaf.ColorUIResource [UI] List.focusCellHighlightBorder [lazy] 0,0,0,0 true com.sun.java.swing.plaf.gtk.GTKPainter$ListTableFocusBorder [UI] List.focusSelectedCellHighlightBorder [lazy] 0,0,0,0 true com.sun.java.swing.plaf.gtk.GTKPainter$ListTableFocusBorder [UI] -List.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -List.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +List.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +List.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] List.noFocusBorder [lazy] 0,0,0,0 true com.sun.java.swing.plaf.gtk.GTKPainter$ListTableFocusBorder [UI] List.rendererUseUIBorder false -List.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +List.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] List.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] List.timeFactor 1000 ListUI javax.swing.plaf.synth.SynthLookAndFeel @@ -281,22 +281,22 @@ ListUI javax.swing.plaf.synth.SynthLookAndFeel #---- Menu ---- Menu.acceleratorFont [lazy] Dialog plain 12 javax.swing.plaf.FontUIResource [UI] -Menu.acceleratorForeground #2e3436 javax.swing.plaf.ColorUIResource [UI] +Menu.acceleratorForeground #3d3d3d javax.swing.plaf.ColorUIResource [UI] Menu.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] Menu.alignAcceleratorText false Menu.arrowIcon [lazy] 13,13 com.sun.java.swing.plaf.gtk.GTKIconFactory$MenuArrowIcon [UI] -Menu.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +Menu.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] Menu.border [lazy] 0,0,0,0 false javax.swing.plaf.basic.BasicBorders$MarginBorder [UI] Menu.borderPainted false Menu.cancelMode hideMenuTree Menu.crossMenuMnemonic true -Menu.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -Menu.foreground #2e3436 javax.swing.plaf.ColorUIResource [UI] +Menu.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +Menu.foreground #3d3d3d javax.swing.plaf.ColorUIResource [UI] Menu.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Menu.menuPopupOffsetX 0 Menu.menuPopupOffsetY 0 Menu.preserveTopLevelSelection false -Menu.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +Menu.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] Menu.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] Menu.shortcutKeys length=1 [I [0] 8 @@ -307,12 +307,12 @@ Menu.useMenuBarForTopLevelMenus true #---- MenuBar ---- -MenuBar.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +MenuBar.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] MenuBar.border [lazy] 0,0,2,0 false javax.swing.plaf.basic.BasicBorders$MenuBarBorder [UI] -MenuBar.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -MenuBar.foreground #2e3436 javax.swing.plaf.ColorUIResource [UI] +MenuBar.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +MenuBar.foreground #3d3d3d javax.swing.plaf.ColorUIResource [UI] MenuBar.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -MenuBar.shadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +MenuBar.shadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] MenuBar.windowBindings length=2 [Ljava.lang.Object; [0] F10 [1] takeFocus @@ -323,16 +323,16 @@ MenuBarUI javax.swing.plaf.synth.SynthLookAndFeel MenuItem.acceleratorDelimiter + MenuItem.acceleratorFont [lazy] Dialog plain 12 javax.swing.plaf.FontUIResource [UI] -MenuItem.acceleratorForeground #2e3436 javax.swing.plaf.ColorUIResource [UI] +MenuItem.acceleratorForeground #3d3d3d javax.swing.plaf.ColorUIResource [UI] MenuItem.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] MenuItem.alignAcceleratorText false -MenuItem.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +MenuItem.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] MenuItem.border [lazy] 0,0,0,0 false javax.swing.plaf.basic.BasicBorders$MarginBorder [UI] MenuItem.borderPainted false -MenuItem.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -MenuItem.foreground #2e3436 javax.swing.plaf.ColorUIResource [UI] +MenuItem.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +MenuItem.foreground #3d3d3d javax.swing.plaf.ColorUIResource [UI] MenuItem.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -MenuItem.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +MenuItem.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] MenuItem.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] MenuItemUI javax.swing.plaf.synth.SynthLookAndFeel @@ -344,19 +344,19 @@ MenuUI javax.swing.plaf.synth.SynthLookAndFeel #---- OptionPane ---- -OptionPane.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +OptionPane.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] OptionPane.border [lazy] 10,10,12,10 false javax.swing.plaf.BorderUIResource$EmptyBorderUIResource [UI] OptionPane.buttonAreaBorder [lazy] 6,0,0,0 false javax.swing.plaf.BorderUIResource$EmptyBorderUIResource [UI] OptionPane.buttonClickThreshhold 500 OptionPane.buttonOrientation 4 OptionPane.buttonPadding 10 OptionPane.errorIcon [lazy] null -OptionPane.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -OptionPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +OptionPane.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +OptionPane.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] OptionPane.informationIcon [lazy] null OptionPane.isYesLast true OptionPane.messageAreaBorder [lazy] 0,0,0,0 false javax.swing.plaf.BorderUIResource$EmptyBorderUIResource [UI] -OptionPane.messageForeground #000000 javax.swing.plaf.ColorUIResource [UI] +OptionPane.messageForeground #5d5d5d javax.swing.plaf.ColorUIResource [UI] OptionPane.minimumSize 262,90 javax.swing.plaf.DimensionUIResource [UI] OptionPane.questionIcon [lazy] null OptionPane.sameSizeButtons true @@ -370,39 +370,39 @@ OptionPaneUI javax.swing.plaf.synth.SynthLookAndFeel #---- Panel ---- -Panel.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] -Panel.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -Panel.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +Panel.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] +Panel.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +Panel.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] PanelUI javax.swing.plaf.synth.SynthLookAndFeel #---- PasswordField ---- -PasswordField.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +PasswordField.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] PasswordField.border [lazy] 2,2,2,2 false javax.swing.plaf.basic.BasicBorders$FieldBorder [UI] PasswordField.caretAspectRatio 0.025 PasswordField.caretBlinkRate 1200 PasswordField.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] PasswordField.echoChar '*' -PasswordField.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -PasswordField.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -PasswordField.inactiveBackground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +PasswordField.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +PasswordField.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] +PasswordField.inactiveBackground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] PasswordField.inactiveForeground #8b8e8f javax.swing.plaf.ColorUIResource [UI] PasswordField.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -PasswordField.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +PasswordField.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] PasswordField.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] PasswordFieldUI javax.swing.plaf.synth.SynthLookAndFeel #---- PopupMenu ---- -PopupMenu.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +PopupMenu.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] PopupMenu.border [lazy] javax.swing.plaf.BorderUIResource$CompoundBorderUIResource [UI] 2,2,2,2 true javax.swing.border.BevelBorder - line: #e8e8e7 javax.swing.plaf.ColorUIResource [UI] 1 false 1,1,1,1 true javax.swing.border.LineBorder + line: #f5f6f7 javax.swing.plaf.ColorUIResource [UI] 1 false 1,1,1,1 true javax.swing.border.LineBorder PopupMenu.consumeEventOnClose true -PopupMenu.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -PopupMenu.foreground #2e3436 javax.swing.plaf.ColorUIResource [UI] +PopupMenu.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +PopupMenu.foreground #3d3d3d javax.swing.plaf.ColorUIResource [UI] #---- PopupMenuSeparator ---- @@ -417,35 +417,35 @@ PopupMenuUI javax.swing.plaf.synth.SynthLookAndFeel #---- ProgressBar ---- -ProgressBar.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ProgressBar.border [lazy] line: #00ff00 java.awt.Color 2 false 2,2,2,2 true javax.swing.plaf.BorderUIResource$LineBorderUIResource [UI] ProgressBar.cellLength 1 ProgressBar.cellSpacing 0 ProgressBar.cycleTime 3000 -ProgressBar.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -ProgressBar.foreground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +ProgressBar.foreground #e95420 javax.swing.plaf.ColorUIResource [UI] ProgressBar.horizontalSize 148,18 javax.swing.plaf.DimensionUIResource [UI] ProgressBar.repaintInterval 50 -ProgressBar.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] -ProgressBar.selectionForeground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.selectionForeground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ProgressBar.verticalSize 20,78 javax.swing.plaf.DimensionUIResource [UI] ProgressBarUI javax.swing.plaf.synth.SynthLookAndFeel #---- RadioButton ---- -RadioButton.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +RadioButton.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] RadioButton.border [lazy] javax.swing.plaf.BorderUIResource$CompoundBorderUIResource [UI] 2,2,2,2 false javax.swing.plaf.basic.BasicBorders$RadioButtonBorder [UI] 0,0,0,0 false javax.swing.plaf.basic.BasicBorders$MarginBorder [UI] RadioButton.darkShadow #000000 javax.swing.plaf.ColorUIResource [UI] -RadioButton.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -RadioButton.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +RadioButton.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +RadioButton.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] RadioButton.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] RadioButton.icon [lazy] 13,13 com.sun.java.swing.plaf.gtk.GTKIconFactory$DelegatingIcon [UI] -RadioButton.light #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +RadioButton.light #f5f6f7 javax.swing.plaf.ColorUIResource [UI] RadioButton.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -RadioButton.shadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +RadioButton.shadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] RadioButton.textIconGap 4 RadioButton.textShiftOffset 0 @@ -453,17 +453,17 @@ RadioButton.textShiftOffset 0 #---- RadioButtonMenuItem ---- RadioButtonMenuItem.acceleratorFont [lazy] Dialog plain 12 javax.swing.plaf.FontUIResource [UI] -RadioButtonMenuItem.acceleratorForeground #2e3436 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.acceleratorForeground #3d3d3d javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.alignAcceleratorText false -RadioButtonMenuItem.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.border [lazy] 0,0,0,0 false javax.swing.plaf.basic.BasicBorders$MarginBorder [UI] RadioButtonMenuItem.borderPainted false RadioButtonMenuItem.checkIcon [lazy] 13,13 com.sun.java.swing.plaf.gtk.GTKIconFactory$DelegatingIcon [UI] -RadioButtonMenuItem.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -RadioButtonMenuItem.foreground #2e3436 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +RadioButtonMenuItem.foreground #3d3d3d javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -RadioButtonMenuItem.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItemUI javax.swing.plaf.synth.SynthLookAndFeel @@ -492,16 +492,16 @@ RootPaneUI javax.swing.plaf.synth.SynthLookAndFeel ScrollBar.allowsAbsolutePositioning true ScrollBar.alwaysShowThumb true ScrollBar.background #e0e0e0 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.foreground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.foreground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ScrollBar.maximumThumbSize 4096,4096 java.awt.Dimension ScrollBar.minimumThumbSize 8,8 java.awt.Dimension ScrollBar.squareButtons false -ScrollBar.thumb #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.thumb #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ScrollBar.thumbDarkShadow #000000 javax.swing.plaf.ColorUIResource [UI] ScrollBar.thumbHeight 14 ScrollBar.thumbHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] -ScrollBar.thumbShadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.track #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.thumbShadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.track #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ScrollBar.trackHighlight #000000 javax.swing.plaf.ColorUIResource [UI] ScrollBar.width 16 ScrollBarUI javax.swing.plaf.synth.SynthLookAndFeel @@ -509,40 +509,40 @@ ScrollBarUI javax.swing.plaf.synth.SynthLookAndFeel #---- ScrollPane ---- -ScrollPane.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ScrollPane.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ScrollPane.border [lazy] 2,2,2,2 false javax.swing.plaf.basic.BasicBorders$FieldBorder [UI] ScrollPane.fillLowerCorner true ScrollPane.fillUpperCorner true -ScrollPane.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -ScrollPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +ScrollPane.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +ScrollPane.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] ScrollPaneUI javax.swing.plaf.synth.SynthLookAndFeel #---- Separator ---- Separator.background #ffffff javax.swing.plaf.ColorUIResource [UI] -Separator.foreground #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +Separator.foreground #a6acb3 javax.swing.plaf.ColorUIResource [UI] Separator.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] Separator.insets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -Separator.shadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +Separator.shadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] Separator.thickness 2 SeparatorUI javax.swing.plaf.synth.SynthLookAndFeel #---- Slider ---- -Slider.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +Slider.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] Slider.focus #000000 javax.swing.plaf.ColorUIResource [UI] Slider.focusInsets 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] Slider.font [lazy] Dialog plain 12 javax.swing.plaf.FontUIResource [UI] -Slider.foreground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +Slider.foreground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] Slider.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] Slider.horizontalSize 200,21 java.awt.Dimension Slider.minimumHorizontalSize 36,21 java.awt.Dimension Slider.minimumVerticalSize 21,36 java.awt.Dimension Slider.onlyLeftMouseButtonDrag false Slider.paintValue true -Slider.shadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +Slider.shadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] Slider.thumbHeight 14 Slider.thumbWidth 30 Slider.tickColor #000000 java.awt.Color @@ -553,26 +553,26 @@ SliderUI javax.swing.plaf.synth.SynthLookAndFeel #---- Spinner ---- Spinner.arrowButtonSize 16,5 java.awt.Dimension -Spinner.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +Spinner.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] Spinner.border [lazy] 2,2,2,2 false javax.swing.plaf.basic.BasicBorders$FieldBorder [UI] Spinner.disableOnBoundaryValues true Spinner.editorAlignment 10 Spinner.editorBorderPainted false -Spinner.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -Spinner.foreground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +Spinner.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +Spinner.foreground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] SpinnerUI javax.swing.plaf.synth.SynthLookAndFeel #---- SplitPane ---- -SplitPane.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +SplitPane.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] SplitPane.border [lazy] 1,1,1,1 true javax.swing.plaf.basic.BasicBorders$SplitPaneBorder [UI] SplitPane.darkShadow #000000 javax.swing.plaf.ColorUIResource [UI] SplitPane.dividerSize 7 SplitPane.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] SplitPane.oneTouchButtonSize 5 SplitPane.oneTouchOffset 2 -SplitPane.shadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +SplitPane.shadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] SplitPane.size 7 SplitPane.supportsOneTouchButtons false @@ -595,21 +595,21 @@ Synth.doNotSetTextAA true #---- TabbedPane ---- -TabbedPane.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] TabbedPane.contentBorderInsets 2,2,3,3 javax.swing.plaf.InsetsUIResource [UI] TabbedPane.contentOpaque true TabbedPane.darkShadow #000000 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.focus #000000 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -TabbedPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.focus #5d5d5d javax.swing.plaf.ColorUIResource [UI] +TabbedPane.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +TabbedPane.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] TabbedPane.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] TabbedPane.isTabRollover false TabbedPane.labelShift 3 -TabbedPane.light #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.light #f5f6f7 javax.swing.plaf.ColorUIResource [UI] TabbedPane.selectedLabelShift 3 TabbedPane.selectedTabPadInsets 2,2,0,1 javax.swing.plaf.InsetsUIResource [UI] TabbedPane.selectionFollowsFocus true -TabbedPane.shadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.shadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] TabbedPane.tabAreaInsets 3,2,0,2 javax.swing.plaf.InsetsUIResource [UI] TabbedPane.tabInsets 0,4,1,4 javax.swing.plaf.InsetsUIResource [UI] TabbedPane.tabRunOverlay 2 @@ -624,29 +624,29 @@ TabbedPaneUI javax.swing.plaf.synth.SynthLookAndFeel Table.ascendingSortIcon [lazy] 13,13 com.sun.java.swing.plaf.gtk.GTKIconFactory$DelegatingIcon [UI] Table.background #ffffff javax.swing.plaf.ColorUIResource [UI] Table.descendingSortIcon [lazy] 13,13 com.sun.java.swing.plaf.gtk.GTKIconFactory$DelegatingIcon [UI] -Table.dropLineColor #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +Table.dropLineColor #a6acb3 javax.swing.plaf.ColorUIResource [UI] Table.dropLineShortColor #000000 javax.swing.plaf.ColorUIResource [UI] -Table.focusCellBackground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] -Table.focusCellForeground #2e3436 javax.swing.plaf.ColorUIResource [UI] +Table.focusCellBackground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] +Table.focusCellForeground #3d3d3d javax.swing.plaf.ColorUIResource [UI] Table.focusCellHighlightBorder [lazy] 0,0,0,0 true com.sun.java.swing.plaf.gtk.GTKPainter$ListTableFocusBorder [UI] Table.focusSelectedCellHighlightBorder [lazy] 0,0,0,0 true com.sun.java.swing.plaf.gtk.GTKPainter$ListTableFocusBorder [UI] -Table.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -Table.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +Table.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +Table.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] Table.gridColor #808080 javax.swing.plaf.ColorUIResource [UI] Table.scrollPaneBorder [lazy] 0,0,0,0 false javax.swing.plaf.BorderUIResource$EmptyBorderUIResource [UI] -Table.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +Table.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] Table.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] -Table.sortIconColor #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +Table.sortIconColor #a6acb3 javax.swing.plaf.ColorUIResource [UI] #---- TableHeader ---- TableHeader.alignSorterArrow true -TableHeader.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +TableHeader.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] TableHeader.cellBorder [lazy] 2,2,2,2 true javax.swing.plaf.BorderUIResource$BevelBorderUIResource [UI] TableHeader.focusCellBackground #ffffff javax.swing.plaf.ColorUIResource [UI] -TableHeader.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -TableHeader.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +TableHeader.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +TableHeader.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] TableHeaderUI javax.swing.plaf.synth.SynthLookAndFeel @@ -657,38 +657,38 @@ TableUI javax.swing.plaf.synth.SynthLookAndFeel #---- TextArea ---- -TextArea.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +TextArea.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] TextArea.border [lazy] 0,0,0,0 false javax.swing.plaf.basic.BasicBorders$MarginBorder [UI] TextArea.caretAspectRatio 0.025 TextArea.caretBlinkRate 1200 TextArea.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] -TextArea.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -TextArea.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +TextArea.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +TextArea.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] TextArea.inactiveForeground #8b8e8f javax.swing.plaf.ColorUIResource [UI] TextArea.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -TextArea.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +TextArea.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] TextArea.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] TextAreaUI javax.swing.plaf.synth.SynthLookAndFeel #---- TextField ---- -TextField.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +TextField.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] TextField.border [lazy] 2,2,2,2 false javax.swing.plaf.basic.BasicBorders$FieldBorder [UI] TextField.caretAspectRatio 0.025 TextField.caretBlinkRate 1200 TextField.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] TextField.darkShadow #000000 javax.swing.plaf.ColorUIResource [UI] -TextField.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -TextField.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +TextField.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +TextField.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] TextField.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -TextField.inactiveBackground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +TextField.inactiveBackground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] TextField.inactiveForeground #8b8e8f javax.swing.plaf.ColorUIResource [UI] -TextField.light #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +TextField.light #f5f6f7 javax.swing.plaf.ColorUIResource [UI] TextField.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -TextField.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +TextField.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] TextField.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] -TextField.shadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +TextField.shadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] TextFieldUI javax.swing.plaf.synth.SynthLookAndFeel @@ -699,11 +699,11 @@ TextPane.border [lazy] 0,0,0,0 false javax.swing.plaf.basic.B TextPane.caretAspectRatio 0.025 TextPane.caretBlinkRate 1200 TextPane.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] -TextPane.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -TextPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +TextPane.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +TextPane.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] TextPane.inactiveForeground #8b8e8f javax.swing.plaf.ColorUIResource [UI] TextPane.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -TextPane.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +TextPane.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] TextPane.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] TextPaneUI javax.swing.plaf.synth.SynthLookAndFeel @@ -711,23 +711,23 @@ TextPaneUI javax.swing.plaf.synth.SynthLookAndFeel #---- TitledBorder ---- TitledBorder.border [lazy] 1,1,1,1 true com.sun.java.swing.plaf.gtk.GTKPainter$TitledBorder [UI] -TitledBorder.font Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -TitledBorder.titleColor #000000 javax.swing.plaf.ColorUIResource [UI] +TitledBorder.font Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +TitledBorder.titleColor #5d5d5d javax.swing.plaf.ColorUIResource [UI] #---- ToggleButton ---- -ToggleButton.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ToggleButton.border [lazy] javax.swing.plaf.BorderUIResource$CompoundBorderUIResource [UI] 2,2,2,2 false javax.swing.plaf.basic.BasicBorders$ToggleButtonBorder [UI] 0,0,0,0 false javax.swing.plaf.basic.BasicBorders$MarginBorder [UI] ToggleButton.darkShadow #000000 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -ToggleButton.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +ToggleButton.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] ToggleButton.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -ToggleButton.light #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.light #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ToggleButton.margin 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -ToggleButton.shadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.shadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] ToggleButton.textIconGap 4 ToggleButton.textShiftOffset 0 ToggleButtonUI javax.swing.plaf.synth.SynthLookAndFeel @@ -735,20 +735,20 @@ ToggleButtonUI javax.swing.plaf.synth.SynthLookAndFeel #---- ToolBar ---- -ToolBar.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ToolBar.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ToolBar.border [lazy] 2,2,2,2 true javax.swing.plaf.BorderUIResource$EtchedBorderUIResource [UI] ToolBar.darkShadow #000000 javax.swing.plaf.ColorUIResource [UI] -ToolBar.dockingBackground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ToolBar.dockingBackground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ToolBar.dockingForeground #ff0000 javax.swing.plaf.ColorUIResource [UI] -ToolBar.floatingBackground #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ToolBar.floatingBackground #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ToolBar.floatingForeground #404040 javax.swing.plaf.ColorUIResource [UI] -ToolBar.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -ToolBar.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +ToolBar.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +ToolBar.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] ToolBar.handleIcon [active] 10,10 com.sun.java.swing.plaf.gtk.GTKIconFactory$ToolBarHandleIcon [UI] ToolBar.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -ToolBar.light #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ToolBar.light #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ToolBar.separatorSize 10,10 javax.swing.plaf.DimensionUIResource [UI] -ToolBar.shadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +ToolBar.shadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] #---- ToolBarSeparator ---- @@ -763,10 +763,10 @@ ToolBarUI javax.swing.plaf.synth.SynthLookAndFeel #---- ToolTip ---- -ToolTip.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +ToolTip.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] ToolTip.border [lazy] line: #000000 java.awt.Color 1 false 1,1,1,1 true javax.swing.plaf.BorderUIResource$LineBorderUIResource [UI] -ToolTip.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -ToolTip.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +ToolTip.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +ToolTip.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] #---- ToolTipManager ---- @@ -788,12 +788,12 @@ Tree.drawHorizontalLines false Tree.drawVerticalLines false Tree.drawsFocusBorder true Tree.drawsFocusBorderAroundIcon false -Tree.dropLineColor #a4a4a1 javax.swing.plaf.ColorUIResource [UI] +Tree.dropLineColor #a6acb3 javax.swing.plaf.ColorUIResource [UI] Tree.editorBorder [lazy] line: #000000 java.awt.Color 1 false 1,1,1,1 true javax.swing.plaf.BorderUIResource$LineBorderUIResource [UI] Tree.expandedIcon [lazy] 13,13 com.sun.java.swing.plaf.gtk.GTKIconFactory$SynthExpanderIcon [UI] Tree.expanderSize 10 -Tree.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -Tree.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +Tree.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +Tree.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] Tree.hash #808080 javax.swing.plaf.ColorUIResource [UI] Tree.leftChildIndent 2 Tree.lineTypeDashed false @@ -804,20 +804,20 @@ Tree.rightChildIndent 12 Tree.rowHeight -1 Tree.scrollsHorizontallyAndVertically false Tree.scrollsOnExpand false -Tree.selectionBackground #4a90d9 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionBackground #e95420 javax.swing.plaf.ColorUIResource [UI] Tree.selectionBorderColor #000000 javax.swing.plaf.ColorUIResource [UI] Tree.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] Tree.textBackground #ffffff javax.swing.plaf.ColorUIResource [UI] -Tree.textForeground #000000 javax.swing.plaf.ColorUIResource [UI] +Tree.textForeground #5d5d5d javax.swing.plaf.ColorUIResource [UI] Tree.timeFactor 1000 TreeUI javax.swing.plaf.synth.SynthLookAndFeel #---- Viewport ---- -Viewport.background #e8e8e7 javax.swing.plaf.ColorUIResource [UI] -Viewport.font [lazy] Cantarell plain 15 javax.swing.plaf.FontUIResource [UI] -Viewport.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +Viewport.background #f5f6f7 javax.swing.plaf.ColorUIResource [UI] +Viewport.font [lazy] Ubuntu plain 15 javax.swing.plaf.FontUIResource [UI] +Viewport.foreground #5d5d5d javax.swing.plaf.ColorUIResource [UI] ViewportUI javax.swing.plaf.synth.SynthLookAndFeel @@ -825,14 +825,14 @@ ViewportUI javax.swing.plaf.synth.SynthLookAndFeel black #000000 javax.swing.plaf.ColorUIResource [UI] caretColor #000000 javax.swing.plaf.ColorUIResource [UI] -control #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +control #f5f6f7 javax.swing.plaf.ColorUIResource [UI] controlDkShadow #000000 javax.swing.plaf.ColorUIResource [UI] -controlHighlight #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +controlHighlight #f5f6f7 javax.swing.plaf.ColorUIResource [UI] controlLtHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] -controlShadow #a4a4a1 javax.swing.plaf.ColorUIResource [UI] -controlText #000000 javax.swing.plaf.ColorUIResource [UI] -dark #a4a4a1 javax.swing.plaf.ColorUIResource [UI] -desktop #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +controlShadow #a6acb3 javax.swing.plaf.ColorUIResource [UI] +controlText #5d5d5d javax.swing.plaf.ColorUIResource [UI] +dark #a6acb3 javax.swing.plaf.ColorUIResource [UI] +desktop #f5f6f7 javax.swing.plaf.ColorUIResource [UI] #---- html ---- @@ -843,18 +843,90 @@ html.pendingImage [lazy] 38,38 sun.swing.ImageIconUIResource [UI #---- ---- -info #e8e8e7 javax.swing.plaf.ColorUIResource [UI] -infoText #000000 javax.swing.plaf.ColorUIResource [UI] +info #f5f6f7 javax.swing.plaf.ColorUIResource [UI] +infoText #5d5d5d javax.swing.plaf.ColorUIResource [UI] light #ffffff javax.swing.plaf.ColorUIResource [UI] -menu #e8e8e7 javax.swing.plaf.ColorUIResource [UI] -menuText #2e3436 javax.swing.plaf.ColorUIResource [UI] -mid #d2d2d0 javax.swing.plaf.ColorUIResource [UI] -scrollbar #e8e8e7 javax.swing.plaf.ColorUIResource [UI] +menu #f5f6f7 javax.swing.plaf.ColorUIResource [UI] +menuText #3d3d3d javax.swing.plaf.ColorUIResource [UI] +mid #d3d6d9 javax.swing.plaf.ColorUIResource [UI] +scrollbar #f5f6f7 javax.swing.plaf.ColorUIResource [UI] text #ffffff javax.swing.plaf.ColorUIResource [UI] -textHighlight #4a90d9 javax.swing.plaf.ColorUIResource [UI] +textHighlight #e95420 javax.swing.plaf.ColorUIResource [UI] textHighlightText #ffffff javax.swing.plaf.ColorUIResource [UI] textInactiveText #8b8e8f javax.swing.plaf.ColorUIResource [UI] -textText #000000 javax.swing.plaf.ColorUIResource [UI] +textText #5d5d5d javax.swing.plaf.ColorUIResource [UI] white #ffffff javax.swing.plaf.ColorUIResource [UI] -window #e8e8e7 javax.swing.plaf.ColorUIResource [UI] -windowText #000000 javax.swing.plaf.ColorUIResource [UI] +window #f5f6f7 javax.swing.plaf.ColorUIResource [UI] +windowText #5d5d5d javax.swing.plaf.ColorUIResource [UI] + + +#-------- Contrast Ratios -------- + +# WCAG 2 Contrast Requirements: minimum 4.5; enhanced 7.0 +# https://webaim.org/articles/contrast/#sc143 + + +#-- disabledForeground -- +ComboBox.disabledForeground #8b8e8f #f5f6f7 3.0 !!!! +Label.disabledForeground #ffffff #f5f6f7 1.1 !!!!!! + +#-- focusCellForeground -- +Table.focusCellForeground #3d3d3d #f5f6f7 10.0 + +#-- foreground -- +Button.foreground #5d5d5d #f5f6f7 6.1 ! +CheckBox.foreground #5d5d5d #f5f6f7 6.1 ! +CheckBoxMenuItem.foreground #3d3d3d #f5f6f7 10.0 +ColorChooser.foreground #5d5d5d #f5f6f7 6.1 ! +ComboBox.foreground #5d5d5d #f5f6f7 6.1 ! +EditorPane.foreground #5d5d5d #ffffff 6.6 ! +FormattedTextField.foreground #5d5d5d #f5f6f7 6.1 ! +Label.foreground #5d5d5d #f5f6f7 6.1 ! +List.foreground #5d5d5d #ffffff 6.6 ! +Menu.foreground #3d3d3d #f5f6f7 10.0 +MenuBar.foreground #3d3d3d #f5f6f7 10.0 +MenuItem.foreground #3d3d3d #f5f6f7 10.0 +OptionPane.foreground #5d5d5d #f5f6f7 6.1 ! +Panel.foreground #5d5d5d #f5f6f7 6.1 ! +PasswordField.foreground #5d5d5d #f5f6f7 6.1 ! +PopupMenu.foreground #3d3d3d #f5f6f7 10.0 +RadioButton.foreground #5d5d5d #f5f6f7 6.1 ! +RadioButtonMenuItem.foreground #3d3d3d #f5f6f7 10.0 +Spinner.foreground #f5f6f7 #f5f6f7 1.0 !!!!!! +TabbedPane.foreground #5d5d5d #f5f6f7 6.1 ! +Table.foreground #5d5d5d #ffffff 6.6 ! +TableHeader.foreground #5d5d5d #f5f6f7 6.1 ! +TextArea.foreground #5d5d5d #f5f6f7 6.1 ! +TextField.foreground #5d5d5d #f5f6f7 6.1 ! +TextPane.foreground #5d5d5d #ffffff 6.6 ! +ToggleButton.foreground #5d5d5d #f5f6f7 6.1 ! +ToolTip.foreground #5d5d5d #f5f6f7 6.1 ! +Tree.foreground #5d5d5d #ffffff 6.6 ! + +#-- selectionBackground -- +ProgressBar.selectionBackground #e95420 #f5f6f7 3.4 !!!! + +#-- selectionForeground -- +CheckBoxMenuItem.selectionForeground #ffffff #e95420 3.6 !!!! +ComboBox.selectionForeground #ffffff #e95420 3.6 !!!! +EditorPane.selectionForeground #ffffff #e95420 3.6 !!!! +FormattedTextField.selectionForeground #ffffff #e95420 3.6 !!!! +List.selectionForeground #ffffff #e95420 3.6 !!!! +Menu.selectionForeground #ffffff #e95420 3.6 !!!! +MenuItem.selectionForeground #ffffff #e95420 3.6 !!!! +PasswordField.selectionForeground #ffffff #e95420 3.6 !!!! +ProgressBar.selectionForeground #f5f6f7 #e95420 3.4 !!!! +RadioButtonMenuItem.selectionForeground #ffffff #e95420 3.6 !!!! +Table.selectionForeground #ffffff #e95420 3.6 !!!! +TextArea.selectionForeground #ffffff #e95420 3.6 !!!! +TextField.selectionForeground #ffffff #e95420 3.6 !!!! +TextPane.selectionForeground #ffffff #e95420 3.6 !!!! +Tree.selectionForeground #ffffff #e95420 3.6 !!!! + +#-- textForeground -- +Tree.textForeground #5d5d5d #ffffff 6.6 ! + +#-- non-text -- +ProgressBar.background #f5f6f7 #f5f6f7 1.0 !!!!!! +ProgressBar.foreground #e95420 #f5f6f7 3.4 !!!! +Separator.foreground #a6acb3 #ffffff 2.3 !!!!! diff --git a/flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_ActionMap_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_ActionMap_1.8.0_202.txt new file mode 100644 index 00000000..8e86846a --- /dev/null +++ b/flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_ActionMap_1.8.0_202.txt @@ -0,0 +1,916 @@ +Class com.sun.java.swing.plaf.gtk.GTKLookAndFeel +ID GTK +Name GTK look and feel +Java 1.8.0_202 +OS Linux + + + +#---- javax.swing.JButton ---- + +2 javax.swing.plaf.basic.LazyActionMap [UI] + pressed javax.swing.plaf.basic.BasicButtonListener$Actions + released javax.swing.plaf.basic.BasicButtonListener$Actions + + +#---- javax.swing.JCheckBox ---- + +2 javax.swing.plaf.basic.LazyActionMap [UI] + pressed javax.swing.plaf.basic.BasicButtonListener$Actions + released javax.swing.plaf.basic.BasicButtonListener$Actions + + +#---- javax.swing.JCheckBoxMenuItem ---- + +1 javax.swing.plaf.basic.LazyActionMap [UI] + doClick javax.swing.plaf.basic.BasicMenuItemUI$Actions + + 13 javax.swing.plaf.ActionMapUIResource [UI] + CheckBoxMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.closeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.maximizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.minimizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreDownSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreUpSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + MenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.errorSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.informationSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.questionSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.warningSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + PopupMenu.popupSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + RadioButtonMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + + +#---- javax.swing.JColorChooser ---- + + + + +#---- javax.swing.JComboBox ---- + +12 javax.swing.plaf.basic.LazyActionMap [UI] + endPassThrough javax.swing.plaf.basic.BasicComboBoxUI$Actions + enterPressed javax.swing.plaf.basic.BasicComboBoxUI$Actions + hidePopup javax.swing.plaf.basic.BasicComboBoxUI$Actions + homePassThrough javax.swing.plaf.basic.BasicComboBoxUI$Actions + pageDownPassThrough javax.swing.plaf.basic.BasicComboBoxUI$Actions + pageUpPassThrough javax.swing.plaf.basic.BasicComboBoxUI$Actions + selectNext javax.swing.plaf.basic.BasicComboBoxUI$Actions + selectNext2 javax.swing.plaf.basic.BasicComboBoxUI$Actions + selectPrevious javax.swing.plaf.basic.BasicComboBoxUI$Actions + selectPrevious2 javax.swing.plaf.basic.BasicComboBoxUI$Actions + spacePopup javax.swing.plaf.basic.BasicComboBoxUI$Actions + togglePopup javax.swing.plaf.basic.BasicComboBoxUI$Actions + + +#---- javax.swing.JDesktopPane ---- + +19 javax.swing.plaf.basic.LazyActionMap [UI] + close javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + down javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + escape javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + left javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + maximize javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + minimize javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + move javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + navigateNext javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + navigatePrevious javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + resize javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + restore javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + right javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + selectNextFrame javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + selectPreviousFrame javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + shrinkDown javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + shrinkLeft javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + shrinkRight javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + shrinkUp javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + up javax.swing.plaf.basic.BasicDesktopPaneUI$Actions + + +#---- javax.swing.JEditorPane ---- + +59 javax.swing.plaf.ActionMapUIResource [UI] + beep javax.swing.text.DefaultEditorKit$BeepAction + caret-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-begin javax.swing.text.DefaultEditorKit$BeginAction + caret-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + caret-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + caret-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + caret-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-end javax.swing.text.DefaultEditorKit$EndAction + caret-end-line javax.swing.text.DefaultEditorKit$EndLineAction + caret-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + caret-end-word javax.swing.text.DefaultEditorKit$EndWordAction + caret-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-next-word javax.swing.text.DefaultEditorKit$NextWordAction + caret-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + caret-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + copy javax.swing.TransferHandler$TransferAction + copy-to-clipboard javax.swing.text.DefaultEditorKit$CopyAction + cut javax.swing.TransferHandler$TransferAction + cut-to-clipboard javax.swing.text.DefaultEditorKit$CutAction + default-typed javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction + delete-next javax.swing.text.DefaultEditorKit$DeleteNextCharAction + delete-next-word javax.swing.text.DefaultEditorKit$DeleteWordAction + delete-previous javax.swing.text.DefaultEditorKit$DeletePrevCharAction + delete-previous-word javax.swing.text.DefaultEditorKit$DeleteWordAction + dump-model javax.swing.text.DefaultEditorKit$DumpModelAction + insert-break javax.swing.text.DefaultEditorKit$InsertBreakAction + insert-content javax.swing.text.DefaultEditorKit$InsertContentAction + insert-tab javax.swing.text.DefaultEditorKit$InsertTabAction + page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + paste javax.swing.TransferHandler$TransferAction + paste-from-clipboard javax.swing.text.DefaultEditorKit$PasteAction + requestFocus javax.swing.plaf.basic.BasicTextUI$FocusAction (null) + select-all javax.swing.text.DefaultEditorKit$SelectAllAction + select-line javax.swing.text.DefaultEditorKit$SelectLineAction + select-paragraph javax.swing.text.DefaultEditorKit$SelectParagraphAction + select-word javax.swing.text.DefaultEditorKit$SelectWordAction + selection-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-begin javax.swing.text.DefaultEditorKit$BeginAction + selection-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + selection-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + selection-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + selection-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-end javax.swing.text.DefaultEditorKit$EndAction + selection-end-line javax.swing.text.DefaultEditorKit$EndLineAction + selection-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + selection-end-word javax.swing.text.DefaultEditorKit$EndWordAction + selection-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-next-word javax.swing.text.DefaultEditorKit$NextWordAction + selection-page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-page-left javax.swing.text.DefaultEditorKit$PageAction + selection-page-right javax.swing.text.DefaultEditorKit$PageAction + selection-page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + selection-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + set-read-only javax.swing.text.DefaultEditorKit$ReadOnlyAction + set-writable javax.swing.text.DefaultEditorKit$WritableAction + toggle-componentOrientation javax.swing.text.DefaultEditorKit$ToggleComponentOrientationAction + unselect javax.swing.text.DefaultEditorKit$UnselectAction + + +#---- javax.swing.JFileChooser ---- + +4 javax.swing.plaf.ActionMapUIResource [UI] + Go Up javax.swing.plaf.basic.BasicFileChooserUI$ChangeToParentDirectoryAction + approveSelection com.sun.java.swing.plaf.gtk.GTKFileChooserUI$GTKApproveSelectionAction + cancelSelection javax.swing.plaf.basic.BasicFileChooserUI$CancelSelectionAction (null) + fileNameCompletion sun.swing.plaf.synth.SynthFileChooserUI$FileNameCompletionAction + + +#---- javax.swing.JFormattedTextField ---- + +2 javax.swing.plaf.ActionMapUIResource [UI] + insert-break javax.swing.plaf.basic.BasicTextUI$TextActionWrapper + requestFocus javax.swing.plaf.basic.BasicTextUI$FocusAction (null) + + 60 javax.swing.plaf.ActionMapUIResource [UI] + beep javax.swing.text.DefaultEditorKit$BeepAction + caret-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-begin javax.swing.text.DefaultEditorKit$BeginAction + caret-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + caret-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + caret-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + caret-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-end javax.swing.text.DefaultEditorKit$EndAction + caret-end-line javax.swing.text.DefaultEditorKit$EndLineAction + caret-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + caret-end-word javax.swing.text.DefaultEditorKit$EndWordAction + caret-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-next-word javax.swing.text.DefaultEditorKit$NextWordAction + caret-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + caret-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + copy javax.swing.TransferHandler$TransferAction + copy-to-clipboard javax.swing.text.DefaultEditorKit$CopyAction + cut javax.swing.TransferHandler$TransferAction + cut-to-clipboard javax.swing.text.DefaultEditorKit$CutAction + default-typed javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction + delete-next javax.swing.text.DefaultEditorKit$DeleteNextCharAction + delete-next-word javax.swing.text.DefaultEditorKit$DeleteWordAction + delete-previous javax.swing.text.DefaultEditorKit$DeletePrevCharAction + delete-previous-word javax.swing.text.DefaultEditorKit$DeleteWordAction + dump-model javax.swing.text.DefaultEditorKit$DumpModelAction + insert-break javax.swing.text.DefaultEditorKit$InsertBreakAction + insert-content javax.swing.text.DefaultEditorKit$InsertContentAction + insert-tab javax.swing.text.DefaultEditorKit$InsertTabAction + notify-field-accept javax.swing.JFormattedTextField$CommitAction + page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + paste javax.swing.TransferHandler$TransferAction + paste-from-clipboard javax.swing.text.DefaultEditorKit$PasteAction + reset-field-edit javax.swing.JFormattedTextField$CancelAction + select-all javax.swing.text.DefaultEditorKit$SelectAllAction + select-line javax.swing.text.DefaultEditorKit$SelectLineAction + select-paragraph javax.swing.text.DefaultEditorKit$SelectParagraphAction + select-word javax.swing.text.DefaultEditorKit$SelectWordAction + selection-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-begin javax.swing.text.DefaultEditorKit$BeginAction + selection-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + selection-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + selection-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + selection-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-end javax.swing.text.DefaultEditorKit$EndAction + selection-end-line javax.swing.text.DefaultEditorKit$EndLineAction + selection-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + selection-end-word javax.swing.text.DefaultEditorKit$EndWordAction + selection-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-next-word javax.swing.text.DefaultEditorKit$NextWordAction + selection-page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-page-left javax.swing.text.DefaultEditorKit$PageAction + selection-page-right javax.swing.text.DefaultEditorKit$PageAction + selection-page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + selection-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + set-read-only javax.swing.text.DefaultEditorKit$ReadOnlyAction + set-writable javax.swing.text.DefaultEditorKit$WritableAction + toggle-componentOrientation javax.swing.text.DefaultEditorKit$ToggleComponentOrientationAction + unselect javax.swing.text.DefaultEditorKit$UnselectAction + + +#---- javax.swing.JInternalFrame ---- + +1 javax.swing.plaf.basic.LazyActionMap [UI] + showSystemMenu javax.swing.plaf.basic.BasicInternalFrameUI$1 + + 13 javax.swing.plaf.ActionMapUIResource [UI] + CheckBoxMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.closeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.maximizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.minimizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreDownSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreUpSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + MenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.errorSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.informationSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.questionSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.warningSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + PopupMenu.popupSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + RadioButtonMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + + +#---- javax.swing.JLabel ---- + + + + +#---- javax.swing.JList ---- + +33 javax.swing.plaf.basic.LazyActionMap [UI] + addToSelection javax.swing.plaf.basic.BasicListUI$Actions + clearSelection javax.swing.plaf.basic.BasicListUI$Actions + copy javax.swing.TransferHandler$TransferAction + cut javax.swing.TransferHandler$TransferAction + extendTo javax.swing.plaf.basic.BasicListUI$Actions + moveSelectionTo javax.swing.plaf.basic.BasicListUI$Actions + paste javax.swing.TransferHandler$TransferAction + scrollDown javax.swing.plaf.basic.BasicListUI$Actions + scrollDownChangeLead javax.swing.plaf.basic.BasicListUI$Actions + scrollDownExtendSelection javax.swing.plaf.basic.BasicListUI$Actions + scrollUp javax.swing.plaf.basic.BasicListUI$Actions + scrollUpChangeLead javax.swing.plaf.basic.BasicListUI$Actions + scrollUpExtendSelection javax.swing.plaf.basic.BasicListUI$Actions + selectAll javax.swing.plaf.basic.BasicListUI$Actions + selectFirstRow javax.swing.plaf.basic.BasicListUI$Actions + selectFirstRowChangeLead javax.swing.plaf.basic.BasicListUI$Actions + selectFirstRowExtendSelection javax.swing.plaf.basic.BasicListUI$Actions + selectLastRow javax.swing.plaf.basic.BasicListUI$Actions + selectLastRowChangeLead javax.swing.plaf.basic.BasicListUI$Actions + selectLastRowExtendSelection javax.swing.plaf.basic.BasicListUI$Actions + selectNextColumn javax.swing.plaf.basic.BasicListUI$Actions + selectNextColumnChangeLead javax.swing.plaf.basic.BasicListUI$Actions + selectNextColumnExtendSelection javax.swing.plaf.basic.BasicListUI$Actions + selectNextRow javax.swing.plaf.basic.BasicListUI$Actions + selectNextRowChangeLead javax.swing.plaf.basic.BasicListUI$Actions + selectNextRowExtendSelection javax.swing.plaf.basic.BasicListUI$Actions + selectPreviousColumn javax.swing.plaf.basic.BasicListUI$Actions + selectPreviousColumnChangeLead javax.swing.plaf.basic.BasicListUI$Actions + selectPreviousColumnExtendSelection javax.swing.plaf.basic.BasicListUI$Actions + selectPreviousRow javax.swing.plaf.basic.BasicListUI$Actions + selectPreviousRowChangeLead javax.swing.plaf.basic.BasicListUI$Actions + selectPreviousRowExtendSelection javax.swing.plaf.basic.BasicListUI$Actions + toggleAndAnchor javax.swing.plaf.basic.BasicListUI$Actions + + +#---- javax.swing.JMenu ---- + +2 javax.swing.plaf.basic.LazyActionMap [UI] + doClick javax.swing.plaf.basic.BasicMenuItemUI$Actions + selectMenu javax.swing.plaf.basic.BasicMenuUI$Actions + + 13 javax.swing.plaf.ActionMapUIResource [UI] + CheckBoxMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.closeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.maximizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.minimizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreDownSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreUpSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + MenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.errorSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.informationSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.questionSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.warningSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + PopupMenu.popupSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + RadioButtonMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + + +#---- javax.swing.JMenuBar ---- + +1 javax.swing.plaf.basic.LazyActionMap [UI] + takeFocus javax.swing.plaf.basic.BasicMenuBarUI$Actions + + +#---- javax.swing.JMenuItem ---- + +1 javax.swing.plaf.basic.LazyActionMap [UI] + doClick javax.swing.plaf.basic.BasicMenuItemUI$Actions + + 13 javax.swing.plaf.ActionMapUIResource [UI] + CheckBoxMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.closeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.maximizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.minimizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreDownSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreUpSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + MenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.errorSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.informationSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.questionSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.warningSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + PopupMenu.popupSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + RadioButtonMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + + +#---- javax.swing.JOptionPane ---- + +1 javax.swing.plaf.basic.LazyActionMap [UI] + close javax.swing.plaf.basic.BasicOptionPaneUI$Actions + + 13 javax.swing.plaf.ActionMapUIResource [UI] + CheckBoxMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.closeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.maximizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.minimizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreDownSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreUpSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + MenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.errorSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.informationSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.questionSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.warningSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + PopupMenu.popupSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + RadioButtonMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + + +#---- javax.swing.JPanel ---- + + + + +#---- javax.swing.JPasswordField ---- + +3 javax.swing.plaf.ActionMapUIResource [UI] + insert-break javax.swing.plaf.basic.BasicTextUI$TextActionWrapper + requestFocus javax.swing.plaf.basic.BasicTextUI$FocusAction (null) + select-word javax.swing.text.DefaultEditorKit$SelectLineAction (select-line) + + 59 javax.swing.plaf.ActionMapUIResource [UI] + beep javax.swing.text.DefaultEditorKit$BeepAction + caret-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-begin javax.swing.text.DefaultEditorKit$BeginAction + caret-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + caret-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + caret-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + caret-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-end javax.swing.text.DefaultEditorKit$EndAction + caret-end-line javax.swing.text.DefaultEditorKit$EndLineAction + caret-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + caret-end-word javax.swing.text.DefaultEditorKit$EndWordAction + caret-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-next-word javax.swing.text.DefaultEditorKit$NextWordAction + caret-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + caret-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + copy javax.swing.TransferHandler$TransferAction + copy-to-clipboard javax.swing.text.DefaultEditorKit$CopyAction + cut javax.swing.TransferHandler$TransferAction + cut-to-clipboard javax.swing.text.DefaultEditorKit$CutAction + default-typed javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction + delete-next javax.swing.text.DefaultEditorKit$DeleteNextCharAction + delete-next-word javax.swing.text.DefaultEditorKit$DeleteWordAction + delete-previous javax.swing.text.DefaultEditorKit$DeletePrevCharAction + delete-previous-word javax.swing.text.DefaultEditorKit$DeleteWordAction + dump-model javax.swing.text.DefaultEditorKit$DumpModelAction + insert-break javax.swing.text.DefaultEditorKit$InsertBreakAction + insert-content javax.swing.text.DefaultEditorKit$InsertContentAction + insert-tab javax.swing.text.DefaultEditorKit$InsertTabAction + notify-field-accept javax.swing.JTextField$NotifyAction + page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + paste javax.swing.TransferHandler$TransferAction + paste-from-clipboard javax.swing.text.DefaultEditorKit$PasteAction + select-all javax.swing.text.DefaultEditorKit$SelectAllAction + select-line javax.swing.text.DefaultEditorKit$SelectLineAction + select-paragraph javax.swing.text.DefaultEditorKit$SelectParagraphAction + select-word javax.swing.text.DefaultEditorKit$SelectWordAction + selection-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-begin javax.swing.text.DefaultEditorKit$BeginAction + selection-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + selection-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + selection-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + selection-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-end javax.swing.text.DefaultEditorKit$EndAction + selection-end-line javax.swing.text.DefaultEditorKit$EndLineAction + selection-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + selection-end-word javax.swing.text.DefaultEditorKit$EndWordAction + selection-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-next-word javax.swing.text.DefaultEditorKit$NextWordAction + selection-page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-page-left javax.swing.text.DefaultEditorKit$PageAction + selection-page-right javax.swing.text.DefaultEditorKit$PageAction + selection-page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + selection-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + set-read-only javax.swing.text.DefaultEditorKit$ReadOnlyAction + set-writable javax.swing.text.DefaultEditorKit$WritableAction + toggle-componentOrientation javax.swing.text.DefaultEditorKit$ToggleComponentOrientationAction + unselect javax.swing.text.DefaultEditorKit$UnselectAction + + +#---- javax.swing.JPopupMenu ---- + + + + +#---- javax.swing.JProgressBar ---- + + + + +#---- javax.swing.JRadioButton ---- + +2 javax.swing.plaf.basic.LazyActionMap [UI] + pressed javax.swing.plaf.basic.BasicButtonListener$Actions + released javax.swing.plaf.basic.BasicButtonListener$Actions + + +#---- javax.swing.JRadioButtonMenuItem ---- + +1 javax.swing.plaf.basic.LazyActionMap [UI] + doClick javax.swing.plaf.basic.BasicMenuItemUI$Actions + + 13 javax.swing.plaf.ActionMapUIResource [UI] + CheckBoxMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.closeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.maximizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.minimizeSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreDownSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + InternalFrame.restoreUpSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + MenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.errorSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.informationSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.questionSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + OptionPane.warningSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + PopupMenu.popupSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + RadioButtonMenuItem.commandSound javax.swing.plaf.basic.BasicLookAndFeel$AudioAction + + +#---- javax.swing.JRootPane ---- + +3 javax.swing.plaf.basic.LazyActionMap [UI] + postPopup javax.swing.plaf.basic.BasicRootPaneUI$Actions + press javax.swing.plaf.basic.BasicRootPaneUI$Actions + release javax.swing.plaf.basic.BasicRootPaneUI$Actions + + +#---- javax.swing.JScrollBar ---- + +6 javax.swing.plaf.basic.LazyActionMap [UI] + maxScroll javax.swing.plaf.basic.BasicScrollBarUI$Actions + minScroll javax.swing.plaf.basic.BasicScrollBarUI$Actions + negativeBlockIncrement javax.swing.plaf.basic.BasicScrollBarUI$Actions + negativeUnitIncrement javax.swing.plaf.basic.BasicScrollBarUI$Actions + positiveBlockIncrement javax.swing.plaf.basic.BasicScrollBarUI$Actions + positiveUnitIncrement javax.swing.plaf.basic.BasicScrollBarUI$Actions + + +#---- javax.swing.JScrollPane ---- + +10 javax.swing.plaf.basic.LazyActionMap [UI] + scrollDown javax.swing.plaf.basic.BasicScrollPaneUI$Actions + scrollEnd javax.swing.plaf.basic.BasicScrollPaneUI$Actions + scrollHome javax.swing.plaf.basic.BasicScrollPaneUI$Actions + scrollLeft javax.swing.plaf.basic.BasicScrollPaneUI$Actions + scrollRight javax.swing.plaf.basic.BasicScrollPaneUI$Actions + scrollUp javax.swing.plaf.basic.BasicScrollPaneUI$Actions + unitScrollDown javax.swing.plaf.basic.BasicScrollPaneUI$Actions + unitScrollLeft javax.swing.plaf.basic.BasicScrollPaneUI$Actions + unitScrollRight javax.swing.plaf.basic.BasicScrollPaneUI$Actions + unitScrollUp javax.swing.plaf.basic.BasicScrollPaneUI$Actions + + +#---- javax.swing.JSeparator ---- + + + + +#---- javax.swing.JSlider ---- + +6 javax.swing.plaf.basic.LazyActionMap [UI] + maxScroll javax.swing.plaf.basic.BasicSliderUI$Actions + minScroll javax.swing.plaf.basic.BasicSliderUI$Actions + negativeBlockIncrement javax.swing.plaf.basic.BasicSliderUI$Actions + negativeUnitIncrement javax.swing.plaf.basic.BasicSliderUI$Actions + positiveBlockIncrement javax.swing.plaf.basic.BasicSliderUI$Actions + positiveUnitIncrement javax.swing.plaf.basic.BasicSliderUI$Actions + + +#---- javax.swing.JSpinner ---- + +2 javax.swing.plaf.basic.LazyActionMap [UI] + decrement javax.swing.plaf.basic.BasicSpinnerUI$ArrowButtonHandler + increment javax.swing.plaf.basic.BasicSpinnerUI$ArrowButtonHandler + + +#---- javax.swing.JSplitPane ---- + +8 javax.swing.plaf.basic.LazyActionMap [UI] + focusOutBackward javax.swing.plaf.basic.BasicSplitPaneUI$Actions + focusOutForward javax.swing.plaf.basic.BasicSplitPaneUI$Actions + negativeIncrement javax.swing.plaf.basic.BasicSplitPaneUI$Actions + positiveIncrement javax.swing.plaf.basic.BasicSplitPaneUI$Actions + selectMax javax.swing.plaf.basic.BasicSplitPaneUI$Actions + selectMin javax.swing.plaf.basic.BasicSplitPaneUI$Actions + startResize javax.swing.plaf.basic.BasicSplitPaneUI$Actions + toggleFocus javax.swing.plaf.basic.BasicSplitPaneUI$Actions + + +#---- javax.swing.JTabbedPane ---- + +14 javax.swing.plaf.basic.LazyActionMap [UI] + navigateDown javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + navigateLeft javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + navigateNext javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + navigatePageDown javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + navigatePageUp javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + navigatePrevious javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + navigateRight javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + navigateUp javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + requestFocus javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + requestFocusForVisibleComponent javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + scrollTabsBackwardAction javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + scrollTabsForwardAction javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + selectTabWithFocus javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + setSelectedIndex javax.swing.plaf.basic.BasicTabbedPaneUI$Actions + + +#---- javax.swing.JTable ---- + +44 javax.swing.plaf.basic.LazyActionMap [UI] + addToSelection javax.swing.plaf.basic.BasicTableUI$Actions + cancel javax.swing.plaf.basic.BasicTableUI$Actions + clearSelection javax.swing.plaf.basic.BasicTableUI$Actions + copy javax.swing.TransferHandler$TransferAction + cut javax.swing.TransferHandler$TransferAction + extendTo javax.swing.plaf.basic.BasicTableUI$Actions + focusHeader javax.swing.plaf.basic.BasicTableUI$Actions + moveSelectionTo javax.swing.plaf.basic.BasicTableUI$Actions + paste javax.swing.TransferHandler$TransferAction + scrollDownChangeSelection javax.swing.plaf.basic.BasicTableUI$Actions + scrollDownExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + scrollLeftChangeSelection javax.swing.plaf.basic.BasicTableUI$Actions + scrollLeftExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + scrollRightChangeSelection javax.swing.plaf.basic.BasicTableUI$Actions + scrollRightExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + scrollUpChangeSelection javax.swing.plaf.basic.BasicTableUI$Actions + scrollUpExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + selectAll javax.swing.plaf.basic.BasicTableUI$Actions + selectFirstColumn javax.swing.plaf.basic.BasicTableUI$Actions + selectFirstColumnExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + selectFirstRow javax.swing.plaf.basic.BasicTableUI$Actions + selectFirstRowExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + selectLastColumn javax.swing.plaf.basic.BasicTableUI$Actions + selectLastColumnExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + selectLastRow javax.swing.plaf.basic.BasicTableUI$Actions + selectLastRowExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + selectNextColumn javax.swing.plaf.basic.BasicTableUI$Actions + selectNextColumnCell javax.swing.plaf.basic.BasicTableUI$Actions + selectNextColumnChangeLead javax.swing.plaf.basic.BasicTableUI$Actions + selectNextColumnExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + selectNextRow javax.swing.plaf.basic.BasicTableUI$Actions + selectNextRowCell javax.swing.plaf.basic.BasicTableUI$Actions + selectNextRowChangeLead javax.swing.plaf.basic.BasicTableUI$Actions + selectNextRowExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + selectPreviousColumn javax.swing.plaf.basic.BasicTableUI$Actions + selectPreviousColumnCell javax.swing.plaf.basic.BasicTableUI$Actions + selectPreviousColumnChangeLead javax.swing.plaf.basic.BasicTableUI$Actions + selectPreviousColumnExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + selectPreviousRow javax.swing.plaf.basic.BasicTableUI$Actions + selectPreviousRowCell javax.swing.plaf.basic.BasicTableUI$Actions + selectPreviousRowChangeLead javax.swing.plaf.basic.BasicTableUI$Actions + selectPreviousRowExtendSelection javax.swing.plaf.basic.BasicTableUI$Actions + startEditing javax.swing.plaf.basic.BasicTableUI$Actions + toggleAndAnchor javax.swing.plaf.basic.BasicTableUI$Actions + + +#---- javax.swing.table.JTableHeader ---- + +8 javax.swing.plaf.basic.LazyActionMap [UI] + focusTable javax.swing.plaf.basic.BasicTableHeaderUI$Actions + moveColumnLeft javax.swing.plaf.basic.BasicTableHeaderUI$Actions + moveColumnRight javax.swing.plaf.basic.BasicTableHeaderUI$Actions + resizeLeft javax.swing.plaf.basic.BasicTableHeaderUI$Actions + resizeRight javax.swing.plaf.basic.BasicTableHeaderUI$Actions + selectColumnToLeft javax.swing.plaf.basic.BasicTableHeaderUI$Actions + selectColumnToRight javax.swing.plaf.basic.BasicTableHeaderUI$Actions + toggleSortOrder javax.swing.plaf.basic.BasicTableHeaderUI$Actions + + +#---- javax.swing.JTextArea ---- + +2 javax.swing.plaf.ActionMapUIResource [UI] + insert-break javax.swing.plaf.basic.BasicTextUI$TextActionWrapper + requestFocus javax.swing.plaf.basic.BasicTextUI$FocusAction (null) + + 58 javax.swing.plaf.ActionMapUIResource [UI] + beep javax.swing.text.DefaultEditorKit$BeepAction + caret-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-begin javax.swing.text.DefaultEditorKit$BeginAction + caret-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + caret-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + caret-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + caret-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-end javax.swing.text.DefaultEditorKit$EndAction + caret-end-line javax.swing.text.DefaultEditorKit$EndLineAction + caret-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + caret-end-word javax.swing.text.DefaultEditorKit$EndWordAction + caret-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-next-word javax.swing.text.DefaultEditorKit$NextWordAction + caret-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + caret-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + copy javax.swing.TransferHandler$TransferAction + copy-to-clipboard javax.swing.text.DefaultEditorKit$CopyAction + cut javax.swing.TransferHandler$TransferAction + cut-to-clipboard javax.swing.text.DefaultEditorKit$CutAction + default-typed javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction + delete-next javax.swing.text.DefaultEditorKit$DeleteNextCharAction + delete-next-word javax.swing.text.DefaultEditorKit$DeleteWordAction + delete-previous javax.swing.text.DefaultEditorKit$DeletePrevCharAction + delete-previous-word javax.swing.text.DefaultEditorKit$DeleteWordAction + dump-model javax.swing.text.DefaultEditorKit$DumpModelAction + insert-break javax.swing.text.DefaultEditorKit$InsertBreakAction + insert-content javax.swing.text.DefaultEditorKit$InsertContentAction + insert-tab javax.swing.text.DefaultEditorKit$InsertTabAction + page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + paste javax.swing.TransferHandler$TransferAction + paste-from-clipboard javax.swing.text.DefaultEditorKit$PasteAction + select-all javax.swing.text.DefaultEditorKit$SelectAllAction + select-line javax.swing.text.DefaultEditorKit$SelectLineAction + select-paragraph javax.swing.text.DefaultEditorKit$SelectParagraphAction + select-word javax.swing.text.DefaultEditorKit$SelectWordAction + selection-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-begin javax.swing.text.DefaultEditorKit$BeginAction + selection-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + selection-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + selection-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + selection-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-end javax.swing.text.DefaultEditorKit$EndAction + selection-end-line javax.swing.text.DefaultEditorKit$EndLineAction + selection-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + selection-end-word javax.swing.text.DefaultEditorKit$EndWordAction + selection-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-next-word javax.swing.text.DefaultEditorKit$NextWordAction + selection-page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-page-left javax.swing.text.DefaultEditorKit$PageAction + selection-page-right javax.swing.text.DefaultEditorKit$PageAction + selection-page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + selection-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + set-read-only javax.swing.text.DefaultEditorKit$ReadOnlyAction + set-writable javax.swing.text.DefaultEditorKit$WritableAction + toggle-componentOrientation javax.swing.text.DefaultEditorKit$ToggleComponentOrientationAction + unselect javax.swing.text.DefaultEditorKit$UnselectAction + + +#---- javax.swing.JTextField ---- + +2 javax.swing.plaf.ActionMapUIResource [UI] + insert-break javax.swing.plaf.basic.BasicTextUI$TextActionWrapper + requestFocus javax.swing.plaf.basic.BasicTextUI$FocusAction (null) + + 59 javax.swing.plaf.ActionMapUIResource [UI] + beep javax.swing.text.DefaultEditorKit$BeepAction + caret-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-begin javax.swing.text.DefaultEditorKit$BeginAction + caret-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + caret-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + caret-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + caret-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-end javax.swing.text.DefaultEditorKit$EndAction + caret-end-line javax.swing.text.DefaultEditorKit$EndLineAction + caret-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + caret-end-word javax.swing.text.DefaultEditorKit$EndWordAction + caret-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-next-word javax.swing.text.DefaultEditorKit$NextWordAction + caret-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + caret-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + copy javax.swing.TransferHandler$TransferAction + copy-to-clipboard javax.swing.text.DefaultEditorKit$CopyAction + cut javax.swing.TransferHandler$TransferAction + cut-to-clipboard javax.swing.text.DefaultEditorKit$CutAction + default-typed javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction + delete-next javax.swing.text.DefaultEditorKit$DeleteNextCharAction + delete-next-word javax.swing.text.DefaultEditorKit$DeleteWordAction + delete-previous javax.swing.text.DefaultEditorKit$DeletePrevCharAction + delete-previous-word javax.swing.text.DefaultEditorKit$DeleteWordAction + dump-model javax.swing.text.DefaultEditorKit$DumpModelAction + insert-break javax.swing.text.DefaultEditorKit$InsertBreakAction + insert-content javax.swing.text.DefaultEditorKit$InsertContentAction + insert-tab javax.swing.text.DefaultEditorKit$InsertTabAction + notify-field-accept javax.swing.JTextField$NotifyAction + page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + paste javax.swing.TransferHandler$TransferAction + paste-from-clipboard javax.swing.text.DefaultEditorKit$PasteAction + select-all javax.swing.text.DefaultEditorKit$SelectAllAction + select-line javax.swing.text.DefaultEditorKit$SelectLineAction + select-paragraph javax.swing.text.DefaultEditorKit$SelectParagraphAction + select-word javax.swing.text.DefaultEditorKit$SelectWordAction + selection-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-begin javax.swing.text.DefaultEditorKit$BeginAction + selection-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + selection-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + selection-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + selection-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-end javax.swing.text.DefaultEditorKit$EndAction + selection-end-line javax.swing.text.DefaultEditorKit$EndLineAction + selection-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + selection-end-word javax.swing.text.DefaultEditorKit$EndWordAction + selection-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-next-word javax.swing.text.DefaultEditorKit$NextWordAction + selection-page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-page-left javax.swing.text.DefaultEditorKit$PageAction + selection-page-right javax.swing.text.DefaultEditorKit$PageAction + selection-page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + selection-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + set-read-only javax.swing.text.DefaultEditorKit$ReadOnlyAction + set-writable javax.swing.text.DefaultEditorKit$WritableAction + toggle-componentOrientation javax.swing.text.DefaultEditorKit$ToggleComponentOrientationAction + unselect javax.swing.text.DefaultEditorKit$UnselectAction + + +#---- javax.swing.JTextPane ---- + +77 javax.swing.plaf.ActionMapUIResource [UI] + beep javax.swing.text.DefaultEditorKit$BeepAction + caret-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-begin javax.swing.text.DefaultEditorKit$BeginAction + caret-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + caret-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + caret-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + caret-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-end javax.swing.text.DefaultEditorKit$EndAction + caret-end-line javax.swing.text.DefaultEditorKit$EndLineAction + caret-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + caret-end-word javax.swing.text.DefaultEditorKit$EndWordAction + caret-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + caret-next-word javax.swing.text.DefaultEditorKit$NextWordAction + caret-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + caret-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + center-justify javax.swing.text.StyledEditorKit$AlignmentAction + copy javax.swing.TransferHandler$TransferAction + copy-to-clipboard javax.swing.text.DefaultEditorKit$CopyAction + cut javax.swing.TransferHandler$TransferAction + cut-to-clipboard javax.swing.text.DefaultEditorKit$CutAction + default-typed javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction + delete-next javax.swing.text.DefaultEditorKit$DeleteNextCharAction + delete-next-word javax.swing.text.DefaultEditorKit$DeleteWordAction + delete-previous javax.swing.text.DefaultEditorKit$DeletePrevCharAction + delete-previous-word javax.swing.text.DefaultEditorKit$DeleteWordAction + dump-model javax.swing.text.DefaultEditorKit$DumpModelAction + font-bold javax.swing.text.StyledEditorKit$BoldAction + font-family-Monospaced javax.swing.text.StyledEditorKit$FontFamilyAction + font-family-SansSerif javax.swing.text.StyledEditorKit$FontFamilyAction + font-family-Serif javax.swing.text.StyledEditorKit$FontFamilyAction + font-italic javax.swing.text.StyledEditorKit$ItalicAction + font-size-10 javax.swing.text.StyledEditorKit$FontSizeAction + font-size-12 javax.swing.text.StyledEditorKit$FontSizeAction + font-size-14 javax.swing.text.StyledEditorKit$FontSizeAction + font-size-16 javax.swing.text.StyledEditorKit$FontSizeAction + font-size-18 javax.swing.text.StyledEditorKit$FontSizeAction + font-size-24 javax.swing.text.StyledEditorKit$FontSizeAction + font-size-36 javax.swing.text.StyledEditorKit$FontSizeAction + font-size-48 javax.swing.text.StyledEditorKit$FontSizeAction + font-size-8 javax.swing.text.StyledEditorKit$FontSizeAction + font-underline javax.swing.text.StyledEditorKit$UnderlineAction + insert-break javax.swing.text.StyledEditorKit$StyledInsertBreakAction + insert-content javax.swing.text.DefaultEditorKit$InsertContentAction + insert-tab javax.swing.text.DefaultEditorKit$InsertTabAction + left-justify javax.swing.text.StyledEditorKit$AlignmentAction + page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + paste javax.swing.TransferHandler$TransferAction + paste-from-clipboard javax.swing.text.DefaultEditorKit$PasteAction + requestFocus javax.swing.plaf.basic.BasicTextUI$FocusAction (null) + right-justify javax.swing.text.StyledEditorKit$AlignmentAction + select-all javax.swing.text.DefaultEditorKit$SelectAllAction + select-line javax.swing.text.DefaultEditorKit$SelectLineAction + select-paragraph javax.swing.text.DefaultEditorKit$SelectParagraphAction + select-word javax.swing.text.DefaultEditorKit$SelectWordAction + selection-backward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-begin javax.swing.text.DefaultEditorKit$BeginAction + selection-begin-line javax.swing.text.DefaultEditorKit$BeginLineAction + selection-begin-paragraph javax.swing.text.DefaultEditorKit$BeginParagraphAction + selection-begin-word javax.swing.text.DefaultEditorKit$BeginWordAction + selection-down javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-end javax.swing.text.DefaultEditorKit$EndAction + selection-end-line javax.swing.text.DefaultEditorKit$EndLineAction + selection-end-paragraph javax.swing.text.DefaultEditorKit$EndParagraphAction + selection-end-word javax.swing.text.DefaultEditorKit$EndWordAction + selection-forward javax.swing.text.DefaultEditorKit$NextVisualPositionAction + selection-next-word javax.swing.text.DefaultEditorKit$NextWordAction + selection-page-down javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-page-left javax.swing.text.DefaultEditorKit$PageAction + selection-page-right javax.swing.text.DefaultEditorKit$PageAction + selection-page-up javax.swing.text.DefaultEditorKit$VerticalPageAction + selection-previous-word javax.swing.text.DefaultEditorKit$PreviousWordAction + selection-up javax.swing.text.DefaultEditorKit$NextVisualPositionAction + set-read-only javax.swing.text.DefaultEditorKit$ReadOnlyAction + set-writable javax.swing.text.DefaultEditorKit$WritableAction + toggle-componentOrientation javax.swing.text.DefaultEditorKit$ToggleComponentOrientationAction + unselect javax.swing.text.DefaultEditorKit$UnselectAction + + +#---- javax.swing.JToggleButton ---- + +2 javax.swing.plaf.basic.LazyActionMap [UI] + pressed javax.swing.plaf.basic.BasicButtonListener$Actions + released javax.swing.plaf.basic.BasicButtonListener$Actions + + +#---- javax.swing.JToolBar ---- + +4 javax.swing.plaf.basic.LazyActionMap [UI] + navigateDown javax.swing.plaf.basic.BasicToolBarUI$Actions + navigateLeft javax.swing.plaf.basic.BasicToolBarUI$Actions + navigateRight javax.swing.plaf.basic.BasicToolBarUI$Actions + navigateUp javax.swing.plaf.basic.BasicToolBarUI$Actions + + +#---- javax.swing.JToolTip ---- + + + + +#---- javax.swing.JTree ---- + +43 javax.swing.plaf.basic.LazyActionMap [UI] + addToSelection javax.swing.plaf.basic.BasicTreeUI$Actions + cancel javax.swing.plaf.basic.BasicTreeUI$Actions + clearSelection javax.swing.plaf.basic.BasicTreeUI$Actions + collapse javax.swing.plaf.basic.BasicTreeUI$Actions + copy javax.swing.TransferHandler$TransferAction + cut javax.swing.TransferHandler$TransferAction + expand javax.swing.plaf.basic.BasicTreeUI$Actions + extendTo javax.swing.plaf.basic.BasicTreeUI$Actions + moveSelectionTo javax.swing.plaf.basic.BasicTreeUI$Actions + moveSelectionToParent javax.swing.plaf.basic.BasicTreeUI$Actions + paste javax.swing.TransferHandler$TransferAction + scrollDownChangeLead javax.swing.plaf.basic.BasicTreeUI$Actions + scrollDownChangeSelection javax.swing.plaf.basic.BasicTreeUI$Actions + scrollDownExtendSelection javax.swing.plaf.basic.BasicTreeUI$Actions + scrollLeft javax.swing.plaf.basic.BasicTreeUI$Actions + scrollLeftChangeLead javax.swing.plaf.basic.BasicTreeUI$Actions + scrollLeftExtendSelection javax.swing.plaf.basic.BasicTreeUI$Actions + scrollRight javax.swing.plaf.basic.BasicTreeUI$Actions + scrollRightChangeLead javax.swing.plaf.basic.BasicTreeUI$Actions + scrollRightExtendSelection javax.swing.plaf.basic.BasicTreeUI$Actions + scrollUpChangeLead javax.swing.plaf.basic.BasicTreeUI$Actions + scrollUpChangeSelection javax.swing.plaf.basic.BasicTreeUI$Actions + scrollUpExtendSelection javax.swing.plaf.basic.BasicTreeUI$Actions + selectAll javax.swing.plaf.basic.BasicTreeUI$Actions + selectChild javax.swing.plaf.basic.BasicTreeUI$Actions + selectChildChangeLead javax.swing.plaf.basic.BasicTreeUI$Actions + selectFirst javax.swing.plaf.basic.BasicTreeUI$Actions + selectFirstChangeLead javax.swing.plaf.basic.BasicTreeUI$Actions + selectFirstExtendSelection javax.swing.plaf.basic.BasicTreeUI$Actions + selectLast javax.swing.plaf.basic.BasicTreeUI$Actions + selectLastChangeLead javax.swing.plaf.basic.BasicTreeUI$Actions + selectLastExtendSelection javax.swing.plaf.basic.BasicTreeUI$Actions + selectNext javax.swing.plaf.basic.BasicTreeUI$Actions + selectNextChangeLead javax.swing.plaf.basic.BasicTreeUI$Actions + selectNextExtendSelection javax.swing.plaf.basic.BasicTreeUI$Actions + selectParent javax.swing.plaf.basic.BasicTreeUI$Actions + selectParentChangeLead javax.swing.plaf.basic.BasicTreeUI$Actions + selectPrevious javax.swing.plaf.basic.BasicTreeUI$Actions + selectPreviousChangeLead javax.swing.plaf.basic.BasicTreeUI$Actions + selectPreviousExtendSelection javax.swing.plaf.basic.BasicTreeUI$Actions + startEditing javax.swing.plaf.basic.BasicTreeUI$Actions + toggle javax.swing.plaf.basic.BasicTreeUI$Actions + toggleAndAnchor javax.swing.plaf.basic.BasicTreeUI$Actions + + +#---- javax.swing.JViewport ---- + diff --git a/flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_InputMap_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_InputMap_1.8.0_202.txt index 73a2957a..8644ea92 100644 --- a/flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_InputMap_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/GTKLookAndFeel_InputMap_1.8.0_202.txt @@ -199,23 +199,6 @@ FormattedTextField.focusInputMap [lazy] 44 javax.swing.plaf.InputMapUIResourc #---- List ---- -List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI] - ctrl KP_LEFT selectNextColumnChangeLead - ctrl KP_RIGHT selectPreviousColumnChangeLead - ctrl LEFT selectNextColumnChangeLead - ctrl RIGHT selectPreviousColumnChangeLead - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift ctrl KP_LEFT selectNextColumnExtendSelection - shift ctrl KP_RIGHT selectPreviousColumnExtendSelection - shift ctrl LEFT selectNextColumnExtendSelection - shift ctrl RIGHT selectPreviousColumnExtendSelection - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnExtendSelection - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnExtendSelection List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -281,6 +264,23 @@ List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource shift RIGHT selectNextColumnExtendSelection shift SPACE extendTo shift UP selectPreviousRowExtendSelection +List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI] + ctrl KP_LEFT selectNextColumnChangeLead + ctrl KP_RIGHT selectPreviousColumnChangeLead + ctrl LEFT selectNextColumnChangeLead + ctrl RIGHT selectPreviousColumnChangeLead + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift ctrl KP_LEFT selectNextColumnExtendSelection + shift ctrl KP_RIGHT selectPreviousColumnExtendSelection + shift ctrl LEFT selectNextColumnExtendSelection + shift ctrl RIGHT selectPreviousColumnExtendSelection + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnExtendSelection + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnExtendSelection #---- PasswordField ---- @@ -327,15 +327,6 @@ PasswordField.focusInputMap [lazy] 37 javax.swing.plaf.InputMapUIResource #---- PopupMenu ---- -PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object; - [0] LEFT - [1] selectChild - [2] KP_LEFT - [3] selectChild - [4] RIGHT - [5] selectParent - [6] KP_RIGHT - [7] selectParent PopupMenu.selectedWindowInputMapBindings length=22 [Ljava.lang.Object; [0] ESCAPE [1] cancel @@ -359,6 +350,15 @@ PopupMenu.selectedWindowInputMapBindings length=22 [Ljava.lang.Object; [19] return [20] SPACE [21] return +PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object; + [0] LEFT + [1] selectChild + [2] KP_LEFT + [3] selectChild + [4] RIGHT + [5] selectParent + [6] KP_RIGHT + [7] selectParent #---- RadioButton ---- @@ -377,11 +377,6 @@ RootPane.ancestorInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [ #---- ScrollBar ---- -ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] DOWN positiveUnitIncrement END maxScroll @@ -395,13 +390,15 @@ ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource PAGE_UP negativeBlockIncrement RIGHT positiveUnitIncrement UP negativeUnitIncrement +ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- ScrollPane ---- -ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI] - ctrl PAGE_DOWN scrollLeft - ctrl PAGE_UP scrollRight ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI] ctrl END scrollEnd ctrl HOME scrollHome @@ -417,15 +414,13 @@ ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource PAGE_UP scrollUp RIGHT unitScrollRight UP unitScrollUp +ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI] + ctrl PAGE_DOWN scrollLeft + ctrl PAGE_UP scrollRight #---- Slider ---- -Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] DOWN negativeUnitIncrement END maxScroll @@ -439,6 +434,11 @@ Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource PAGE_UP positiveBlockIncrement RIGHT positiveUnitIncrement UP positiveUnitIncrement +Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- Spinner ---- @@ -494,25 +494,6 @@ TabbedPane.focusInputMap [lazy] 11 javax.swing.plaf.InputMapUIResource #---- Table ---- -Table.ancestorInputMap.RightToLeft [lazy] 18 javax.swing.plaf.InputMapUIResource [UI] - ctrl KP_LEFT selectNextColumnChangeLead - ctrl LEFT selectNextColumnChangeLead - ctrl PAGE_DOWN scrollLeftChangeSelection - ctrl PAGE_UP scrollRightChangeSelection - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift ctrl KP_LEFT selectNextColumnExtendSelection - shift ctrl KP_RIGHT selectPreviousColumnExtendSelection - shift ctrl LEFT selectNextColumnExtendSelection - shift ctrl PAGE_DOWN scrollLeftExtendSelection - shift ctrl PAGE_UP scrollRightExtendSelection - shift ctrl RIGHT selectPreviousColumnExtendSelection - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnChangeLead - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnChangeLead Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -585,6 +566,25 @@ Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource shift SPACE extendTo shift TAB selectPreviousColumnCell shift UP selectPreviousRowExtendSelection +Table.ancestorInputMap.RightToLeft [lazy] 18 javax.swing.plaf.InputMapUIResource [UI] + ctrl KP_LEFT selectNextColumnChangeLead + ctrl LEFT selectNextColumnChangeLead + ctrl PAGE_DOWN scrollLeftChangeSelection + ctrl PAGE_UP scrollRightChangeSelection + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift ctrl KP_LEFT selectNextColumnExtendSelection + shift ctrl KP_RIGHT selectPreviousColumnExtendSelection + shift ctrl LEFT selectNextColumnExtendSelection + shift ctrl PAGE_DOWN scrollLeftExtendSelection + shift ctrl PAGE_UP scrollRightExtendSelection + shift ctrl RIGHT selectPreviousColumnExtendSelection + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnChangeLead + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnChangeLead #---- TableHeader ---- @@ -806,11 +806,6 @@ ToolBar.ancestorInputMap [lazy] 8 javax.swing.plaf.InputMapUIResource [ Tree.ancestorInputMap [lazy] 1 javax.swing.plaf.InputMapUIResource [UI] ESCAPE cancel -Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT selectChild - KP_RIGHT selectParent - LEFT selectChild - RIGHT selectParent Tree.focusInputMap [lazy] 60 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -872,3 +867,8 @@ Tree.focusInputMap [lazy] 60 javax.swing.plaf.InputMapUIResource shift UP selectPreviousExtendSelection typed + expand typed - collapse +Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT selectChild + KP_RIGHT selectParent + LEFT selectChild + RIGHT selectParent diff --git a/flatlaf-testing/dumps/uidefaults/MetalLookAndFeel_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/MetalLookAndFeel_1.8.0_202.txt index daa84891..dab69c48 100644 --- a/flatlaf-testing/dumps/uidefaults/MetalLookAndFeel_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/MetalLookAndFeel_1.8.0_202.txt @@ -988,3 +988,90 @@ textText #333333 sun.swing.PrintColorUIResource [UI] window #ffffff javax.swing.plaf.ColorUIResource [UI] windowBorder #eeeeee javax.swing.plaf.ColorUIResource [UI] windowText #333333 sun.swing.PrintColorUIResource [UI] + + +#-------- Contrast Ratios -------- + +# WCAG 2 Contrast Requirements: minimum 4.5; enhanced 7.0 +# https://webaim.org/articles/contrast/#sc143 + + +#-- activeTitleForeground -- +InternalFrame.activeTitleForeground #333333 #b8cfe5 7.9 + +#-- disabledForeground -- +ComboBox.disabledForeground #b8cfe5 #eeeeee 1.4 !!!!!! +Label.disabledForeground #999999 #eeeeee 2.5 !!!!! + +#-- disabledText -- +CheckBox.disabledText #999999 #eeeeee 2.5 !!!!! +RadioButton.disabledText #999999 #eeeeee 2.5 !!!!! + +#-- focusCellForeground -- +Table.focusCellForeground #333333 #ffffff 12.6 + +#-- foreground -- +Button.foreground #333333 #eeeeee 10.9 +CheckBox.foreground #333333 #eeeeee 10.9 +CheckBoxMenuItem.foreground #333333 #eeeeee 10.9 +ColorChooser.foreground #333333 #eeeeee 10.9 +ComboBox.foreground #333333 #eeeeee 10.9 +DesktopIcon.foreground #333333 #eeeeee 10.9 +EditorPane.foreground #333333 #ffffff 12.6 +FormattedTextField.foreground #333333 #ffffff 12.6 +Label.foreground #333333 #eeeeee 10.9 +List.foreground #333333 #ffffff 12.6 +Menu.foreground #333333 #eeeeee 10.9 +MenuBar.foreground #333333 #eeeeee 10.9 +MenuItem.foreground #333333 #eeeeee 10.9 +OptionPane.foreground #333333 #eeeeee 10.9 +OptionPane.errorDialog.titlePane.foreground #330000 #ff9999 9.0 +OptionPane.questionDialog.titlePane.foreground #003300 #99cc99 7.8 +OptionPane.warningDialog.titlePane.foreground #663300 #ffcc99 7.0 +Panel.foreground #333333 #eeeeee 10.9 +PasswordField.foreground #333333 #ffffff 12.6 +PopupMenu.foreground #333333 #eeeeee 10.9 +RadioButton.foreground #333333 #eeeeee 10.9 +RadioButtonMenuItem.foreground #333333 #eeeeee 10.9 +Spinner.foreground #eeeeee #eeeeee 1.0 !!!!!! +TabbedPane.foreground #333333 #b8cfe5 7.9 +Table.foreground #333333 #ffffff 12.6 +TableHeader.foreground #333333 #eeeeee 10.9 +TextArea.foreground #333333 #ffffff 12.6 +TextField.foreground #333333 #ffffff 12.6 +TextPane.foreground #333333 #ffffff 12.6 +ToggleButton.foreground #333333 #eeeeee 10.9 +ToolTip.foreground #333333 #b8cfe5 7.9 +Tree.foreground #333333 #ffffff 12.6 + +#-- inactiveTitleForeground -- +InternalFrame.inactiveTitleForeground #333333 #eeeeee 10.9 + +#-- selectionBackground -- +ProgressBar.selectionBackground #6382bf #eeeeee 3.3 !!!! + +#-- selectionForeground -- +CheckBoxMenuItem.selectionForeground #333333 #a3b8cc 6.2 ! +ComboBox.selectionForeground #333333 #a3b8cc 6.2 ! +EditorPane.selectionForeground #333333 #b8cfe5 7.9 +FormattedTextField.selectionForeground #333333 #b8cfe5 7.9 +List.selectionForeground #333333 #b8cfe5 7.9 +Menu.selectionForeground #333333 #a3b8cc 6.2 ! +MenuItem.selectionForeground #333333 #a3b8cc 6.2 ! +PasswordField.selectionForeground #333333 #b8cfe5 7.9 +ProgressBar.selectionForeground #eeeeee #a3b8cc 1.8 !!!!!! +RadioButtonMenuItem.selectionForeground #333333 #a3b8cc 6.2 ! +Table.selectionForeground #333333 #b8cfe5 7.9 +TextArea.selectionForeground #333333 #b8cfe5 7.9 +TextField.selectionForeground #333333 #b8cfe5 7.9 +TextPane.selectionForeground #333333 #b8cfe5 7.9 +Tree.selectionForeground #333333 #b8cfe5 7.9 + +#-- textForeground -- +Tree.textForeground #333333 #ffffff 12.6 + +#-- non-text -- +ProgressBar.background #eeeeee #eeeeee 1.0 !!!!!! +ProgressBar.foreground #a3b8cc #eeeeee 1.8 !!!!!! +Separator.foreground #6382bf #ffffff 3.8 !!!! +TabbedPane.contentAreaColor #c8ddf2 #eeeeee 1.2 !!!!!! diff --git a/flatlaf-testing/dumps/uidefaults/MetalLookAndFeel_InputMap_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/MetalLookAndFeel_InputMap_1.8.0_202.txt index c2093202..4810eb80 100644 --- a/flatlaf-testing/dumps/uidefaults/MetalLookAndFeel_InputMap_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/MetalLookAndFeel_InputMap_1.8.0_202.txt @@ -199,23 +199,6 @@ FormattedTextField.focusInputMap [lazy] 44 javax.swing.plaf.InputMapUIResourc #---- List ---- -List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI] - ctrl KP_LEFT selectNextColumnChangeLead - ctrl KP_RIGHT selectPreviousColumnChangeLead - ctrl LEFT selectNextColumnChangeLead - ctrl RIGHT selectPreviousColumnChangeLead - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift ctrl KP_LEFT selectNextColumnExtendSelection - shift ctrl KP_RIGHT selectPreviousColumnExtendSelection - shift ctrl LEFT selectNextColumnExtendSelection - shift ctrl RIGHT selectPreviousColumnExtendSelection - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnExtendSelection - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnExtendSelection List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -281,6 +264,23 @@ List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource shift RIGHT selectNextColumnExtendSelection shift SPACE extendTo shift UP selectPreviousRowExtendSelection +List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI] + ctrl KP_LEFT selectNextColumnChangeLead + ctrl KP_RIGHT selectPreviousColumnChangeLead + ctrl LEFT selectNextColumnChangeLead + ctrl RIGHT selectPreviousColumnChangeLead + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift ctrl KP_LEFT selectNextColumnExtendSelection + shift ctrl KP_RIGHT selectPreviousColumnExtendSelection + shift ctrl LEFT selectNextColumnExtendSelection + shift ctrl RIGHT selectPreviousColumnExtendSelection + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnExtendSelection + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnExtendSelection #---- PasswordField ---- @@ -327,15 +327,6 @@ PasswordField.focusInputMap [lazy] 37 javax.swing.plaf.InputMapUIResource #---- PopupMenu ---- -PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object; - [0] LEFT - [1] selectChild - [2] KP_LEFT - [3] selectChild - [4] RIGHT - [5] selectParent - [6] KP_RIGHT - [7] selectParent PopupMenu.selectedWindowInputMapBindings length=24 [Ljava.lang.Object; [0] ESCAPE [1] cancel @@ -361,6 +352,15 @@ PopupMenu.selectedWindowInputMapBindings length=24 [Ljava.lang.Object; [21] return [22] SPACE [23] return +PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object; + [0] LEFT + [1] selectChild + [2] KP_LEFT + [3] selectChild + [4] RIGHT + [5] selectParent + [6] KP_RIGHT + [7] selectParent #---- RadioButton ---- @@ -379,11 +379,6 @@ RootPane.ancestorInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [ #---- ScrollBar ---- -ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] DOWN positiveUnitIncrement END maxScroll @@ -397,13 +392,15 @@ ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource PAGE_UP negativeBlockIncrement RIGHT positiveUnitIncrement UP negativeUnitIncrement +ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- ScrollPane ---- -ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI] - ctrl PAGE_DOWN scrollLeft - ctrl PAGE_UP scrollRight ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI] ctrl END scrollEnd ctrl HOME scrollHome @@ -419,15 +416,13 @@ ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource PAGE_UP scrollUp RIGHT unitScrollRight UP unitScrollUp +ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI] + ctrl PAGE_DOWN scrollLeft + ctrl PAGE_UP scrollRight #---- Slider ---- -Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement Slider.focusInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI] ctrl PAGE_DOWN negativeBlockIncrement ctrl PAGE_UP positiveBlockIncrement @@ -443,6 +438,11 @@ Slider.focusInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource PAGE_UP positiveBlockIncrement RIGHT positiveUnitIncrement UP positiveUnitIncrement +Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- Spinner ---- @@ -495,27 +495,6 @@ TabbedPane.focusInputMap [lazy] 10 javax.swing.plaf.InputMapUIResource #---- Table ---- -Table.ancestorInputMap.RightToLeft [lazy] 20 javax.swing.plaf.InputMapUIResource [UI] - ctrl KP_LEFT selectNextColumnChangeLead - ctrl KP_RIGHT selectPreviousColumnChangeLead - ctrl LEFT selectNextColumnChangeLead - ctrl PAGE_DOWN scrollLeftChangeSelection - ctrl PAGE_UP scrollRightChangeSelection - ctrl RIGHT selectPreviousColumnChangeLead - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift ctrl KP_LEFT selectNextColumnExtendSelection - shift ctrl KP_RIGHT selectPreviousColumnExtendSelection - shift ctrl LEFT selectNextColumnExtendSelection - shift ctrl PAGE_DOWN scrollLeftExtendSelection - shift ctrl PAGE_UP scrollRightExtendSelection - shift ctrl RIGHT selectPreviousColumnExtendSelection - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnExtendSelection - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnExtendSelection Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -588,6 +567,27 @@ Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource shift SPACE extendTo shift TAB selectPreviousColumnCell shift UP selectPreviousRowExtendSelection +Table.ancestorInputMap.RightToLeft [lazy] 20 javax.swing.plaf.InputMapUIResource [UI] + ctrl KP_LEFT selectNextColumnChangeLead + ctrl KP_RIGHT selectPreviousColumnChangeLead + ctrl LEFT selectNextColumnChangeLead + ctrl PAGE_DOWN scrollLeftChangeSelection + ctrl PAGE_UP scrollRightChangeSelection + ctrl RIGHT selectPreviousColumnChangeLead + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift ctrl KP_LEFT selectNextColumnExtendSelection + shift ctrl KP_RIGHT selectPreviousColumnExtendSelection + shift ctrl LEFT selectNextColumnExtendSelection + shift ctrl PAGE_DOWN scrollLeftExtendSelection + shift ctrl PAGE_UP scrollRightExtendSelection + shift ctrl RIGHT selectPreviousColumnExtendSelection + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnExtendSelection + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnExtendSelection #---- TableHeader ---- @@ -809,11 +809,6 @@ ToolBar.ancestorInputMap [lazy] 8 javax.swing.plaf.InputMapUIResource [ Tree.ancestorInputMap [lazy] 1 javax.swing.plaf.InputMapUIResource [UI] ESCAPE cancel -Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT selectChild - KP_RIGHT selectParent - LEFT selectChild - RIGHT selectParent Tree.focusInputMap [lazy] 59 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -874,3 +869,8 @@ Tree.focusInputMap [lazy] 59 javax.swing.plaf.InputMapUIResource shift PAGE_UP scrollUpExtendSelection shift SPACE extendTo shift UP selectPreviousExtendSelection +Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT selectChild + KP_RIGHT selectParent + LEFT selectChild + RIGHT selectParent diff --git a/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_1.8.0_202.txt index 5baab554..56da24ee 100644 --- a/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_1.8.0_202.txt @@ -43,7 +43,7 @@ ArrowButton.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv ArrowButton.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ArrowButton.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ArrowButton.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -ArrowButton.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +ArrowButton.font [active] $defaultFont [UI] ArrowButton.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ArrowButton.size 16 ArrowButtonUI javax.swing.plaf.synth.SynthLookAndFeel @@ -66,7 +66,7 @@ Button.contentMargins 6,14,6,14 javax.swing.plaf.InsetsUIResource [U Button.defaultButtonFollowsFocus false Button.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Button.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -Button.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +Button.font [active] $defaultFont [UI] Button.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ButtonUI javax.swing.plaf.synth.SynthLookAndFeel @@ -144,7 +144,7 @@ CheckBox.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv CheckBox.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] CheckBox.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] CheckBox.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -CheckBox.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +CheckBox.font [active] $defaultFont [UI] CheckBox.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] CheckBox.icon 18,18 javax.swing.plaf.nimbus.NimbusIcon @@ -156,7 +156,7 @@ CheckBoxMenuItem.checkIcon 9,10 javax.swing.plaf.nimbus.NimbusIcon CheckBoxMenuItem.contentMargins 1,12,2,13 javax.swing.plaf.InsetsUIResource [UI] CheckBoxMenuItem.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] CheckBoxMenuItem.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -CheckBoxMenuItem.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +CheckBoxMenuItem.font [active] $defaultFont [UI] CheckBoxMenuItem.foreground [active] #232324 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.textIconGap 5 @@ -291,7 +291,7 @@ ColorChooser.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv ColorChooser.contentMargins 5,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ColorChooser.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ColorChooser.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -ColorChooser.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +ColorChooser.font [active] $defaultFont [UI] ColorChooser.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ColorChooser.swatchesDefaultRecentColor #ffffff javax.swing.plaf.ColorUIResource [UI] ColorChooser.swatchesRecentSwatchSize 10,10 java.awt.Dimension @@ -318,7 +318,7 @@ ComboBox.buttonWhenNotEditable true ComboBox.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ComboBox.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ComboBox.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -ComboBox.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +ComboBox.font [active] $defaultFont [UI] ComboBox.forceOpaque true ComboBox.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ComboBox.padding 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] @@ -443,7 +443,7 @@ DesktopIcon.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv DesktopIcon.contentMargins 4,6,5,4 javax.swing.plaf.InsetsUIResource [UI] DesktopIcon.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] DesktopIcon.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -DesktopIcon.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +DesktopIcon.font [active] $defaultFont [UI] DesktopIcon.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] DesktopIconUI javax.swing.plaf.synth.SynthLookAndFeel @@ -459,7 +459,7 @@ DesktopPane.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv DesktopPane.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] DesktopPane.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] DesktopPane.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -DesktopPane.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +DesktopPane.font [active] $defaultFont [UI] DesktopPane.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] DesktopPane.opaque true DesktopPaneUI javax.swing.plaf.synth.SynthLookAndFeel @@ -476,7 +476,7 @@ EditorPane.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv EditorPane.contentMargins 4,6,4,6 javax.swing.plaf.InsetsUIResource [UI] EditorPane.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] EditorPane.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -EditorPane.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +EditorPane.font [active] $defaultFont [UI] EditorPane.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] EditorPane.opaque true EditorPaneUI javax.swing.plaf.synth.SynthLookAndFeel @@ -509,7 +509,7 @@ FileChooser.disabled [active] #d6d9df javax.swing.plaf.nimbus.Deriv FileChooser.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] FileChooser.fileIcon 16,16 javax.swing.plaf.nimbus.NimbusIcon FileChooser.floppyDriveIcon 16,16 javax.swing.plaf.nimbus.NimbusIcon -FileChooser.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +FileChooser.font [active] $defaultFont [UI] FileChooser.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] FileChooser.hardDriveIcon 16,16 javax.swing.plaf.nimbus.NimbusIcon FileChooser.homeFolderIcon 16,16 javax.swing.plaf.nimbus.NimbusIcon @@ -551,7 +551,7 @@ FormattedTextField.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv FormattedTextField.contentMargins 6,6,6,6 javax.swing.plaf.InsetsUIResource [UI] FormattedTextField.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] FormattedTextField.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -FormattedTextField.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +FormattedTextField.font [active] $defaultFont [UI] FormattedTextField.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] FormattedTextFieldUI javax.swing.plaf.synth.SynthLookAndFeel @@ -588,7 +588,7 @@ InternalFrame.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv InternalFrame.contentMargins 1,6,6,6 javax.swing.plaf.InsetsUIResource [UI] InternalFrame.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] InternalFrame.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -InternalFrame.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +InternalFrame.font [active] $defaultFont [UI] InternalFrame.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] InternalFrame.titleFont [active] sansserif bold 12 java.awt.Font InternalFrame.windowBindings length=6 [Ljava.lang.Object; @@ -673,7 +673,7 @@ InternalFrameTitlePane.background [active] #d6d9df javax.swing.plaf.nimbus.De InternalFrameTitlePane.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] InternalFrameTitlePane.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] InternalFrameTitlePane.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -InternalFrameTitlePane.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +InternalFrameTitlePane.font [active] $defaultFont [UI] InternalFrameTitlePane.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] InternalFrameTitlePane.maxFrameIconSize 18,18 javax.swing.plaf.DimensionUIResource [UI] InternalFrameTitlePaneUI javax.swing.plaf.synth.SynthLookAndFeel @@ -700,7 +700,7 @@ Label.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv Label.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Label.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Label.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -Label.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +Label.font [active] $defaultFont [UI] Label.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] LabelUI javax.swing.plaf.synth.SynthLookAndFeel @@ -719,7 +719,7 @@ List.disabled [active] #d6d9df javax.swing.plaf.nimbus.Deriv List.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] List.dropLineColor #73a4d1 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] List.focusCellHighlightBorder 2,5,2,5 false javax.swing.plaf.BorderUIResource [UI] -List.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +List.font [active] $defaultFont [UI] List.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] List.opaque true List.rendererUseListColors false @@ -764,7 +764,7 @@ Menu.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv Menu.contentMargins 1,12,2,5 javax.swing.plaf.InsetsUIResource [UI] Menu.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Menu.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -Menu.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +Menu.font [active] $defaultFont [UI] Menu.foreground [active] #232324 javax.swing.plaf.ColorUIResource [UI] Menu.textIconGap 5 @@ -785,7 +785,7 @@ MenuBar.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv MenuBar.contentMargins 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] MenuBar.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] MenuBar.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -MenuBar.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +MenuBar.font [active] $defaultFont [UI] MenuBar.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] MenuBar.windowBindings length=2 [Ljava.lang.Object; [0] F10 @@ -835,7 +835,7 @@ MenuItem.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv MenuItem.contentMargins 1,12,2,13 javax.swing.plaf.InsetsUIResource [UI] MenuItem.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] MenuItem.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -MenuItem.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +MenuItem.font [active] $defaultFont [UI] MenuItem.foreground [active] #232324 javax.swing.plaf.ColorUIResource [UI] MenuItem.textIconGap 5 @@ -908,7 +908,7 @@ OptionPane.contentMargins 15,15,15,15 javax.swing.plaf.InsetsUIResource OptionPane.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] OptionPane.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] OptionPane.errorIcon 48,48 javax.swing.plaf.nimbus.NimbusIcon -OptionPane.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +OptionPane.font [active] $defaultFont [UI] OptionPane.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] OptionPane.informationIcon 48,48 javax.swing.plaf.nimbus.NimbusIcon OptionPane.isYesLast false @@ -950,7 +950,7 @@ Panel.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv Panel.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Panel.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Panel.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -Panel.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +Panel.font [active] $defaultFont [UI] Panel.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Panel.opaque true PanelUI javax.swing.plaf.synth.SynthLookAndFeel @@ -962,7 +962,7 @@ PasswordField.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv PasswordField.contentMargins 6,6,6,6 javax.swing.plaf.InsetsUIResource [UI] PasswordField.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] PasswordField.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -PasswordField.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +PasswordField.font [active] $defaultFont [UI] PasswordField.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] PasswordFieldUI javax.swing.plaf.synth.SynthLookAndFeel @@ -998,7 +998,7 @@ PopupMenu.consumeEventOnClose true PopupMenu.contentMargins 6,1,6,1 javax.swing.plaf.InsetsUIResource [UI] PopupMenu.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] PopupMenu.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -PopupMenu.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +PopupMenu.font [active] $defaultFont [UI] PopupMenu.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] PopupMenu.opaque true @@ -1009,7 +1009,7 @@ PopupMenuSeparator.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv PopupMenuSeparator.contentMargins 1,0,2,0 javax.swing.plaf.InsetsUIResource [UI] PopupMenuSeparator.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] PopupMenuSeparator.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -PopupMenuSeparator.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +PopupMenuSeparator.font [active] $defaultFont [UI] PopupMenuSeparator.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] PopupMenuSeparatorUI javax.swing.plaf.synth.SynthLookAndFeel @@ -1044,7 +1044,7 @@ ProgressBar.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ProgressBar.cycleTime 250 ProgressBar.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ProgressBar.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -ProgressBar.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +ProgressBar.font [active] $defaultFont [UI] ProgressBar.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ProgressBar.glowWidth 2 ProgressBar.horizontalSize 150,19 javax.swing.plaf.DimensionUIResource [UI] @@ -1098,7 +1098,7 @@ RadioButton.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv RadioButton.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] RadioButton.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] RadioButton.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -RadioButton.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +RadioButton.font [active] $defaultFont [UI] RadioButton.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] RadioButton.icon 18,18 javax.swing.plaf.nimbus.NimbusIcon @@ -1110,7 +1110,7 @@ RadioButtonMenuItem.checkIcon 9,10 javax.swing.plaf.nimbus.NimbusIcon RadioButtonMenuItem.contentMargins 1,12,2,13 javax.swing.plaf.InsetsUIResource [UI] RadioButtonMenuItem.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] RadioButtonMenuItem.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -RadioButtonMenuItem.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +RadioButtonMenuItem.font [active] $defaultFont [UI] RadioButtonMenuItem.foreground [active] #232324 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.textIconGap 5 @@ -1254,7 +1254,7 @@ RootPane.defaultButtonWindowKeyBindings length=8 [Ljava.lang.Object; [7] release RootPane.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] RootPane.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -RootPane.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +RootPane.font [active] $defaultFont [UI] RootPane.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] RootPane.opaque true RootPaneUI javax.swing.plaf.synth.SynthLookAndFeel @@ -1267,7 +1267,7 @@ ScrollBar.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ScrollBar.decrementButtonGap -8 ScrollBar.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ScrollBar.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -ScrollBar.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +ScrollBar.font [active] $defaultFont [UI] ScrollBar.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ScrollBar.incrementButtonGap -8 ScrollBar.maximumThumbSize 1000,1000 javax.swing.plaf.DimensionUIResource [UI] @@ -1326,7 +1326,7 @@ ScrollBar:ScrollBarTrack[Enabled].backgroundPainter [lazy] [unknown type] javax. ScrollBarThumb.background [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ScrollBarThumb.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ScrollBarThumb.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -ScrollBarThumb.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +ScrollBarThumb.font [active] $defaultFont [UI] ScrollBarThumb.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] @@ -1335,7 +1335,7 @@ ScrollBarThumb.foreground [active] #000000 javax.swing.plaf.nimbus.Deriv ScrollBarTrack.background [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ScrollBarTrack.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ScrollBarTrack.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -ScrollBarTrack.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +ScrollBarTrack.font [active] $defaultFont [UI] ScrollBarTrack.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] @@ -1350,7 +1350,7 @@ ScrollPane.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv ScrollPane.contentMargins 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] ScrollPane.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ScrollPane.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -ScrollPane.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +ScrollPane.font [active] $defaultFont [UI] ScrollPane.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ScrollPane.useChildTextComponentFocus true ScrollPaneUI javax.swing.plaf.synth.SynthLookAndFeel @@ -1372,7 +1372,7 @@ Separator.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv Separator.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Separator.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Separator.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -Separator.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +Separator.font [active] $defaultFont [UI] Separator.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] SeparatorUI javax.swing.plaf.synth.SynthLookAndFeel @@ -1390,7 +1390,7 @@ Slider.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv Slider.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Slider.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Slider.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -Slider.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +Slider.font [active] $defaultFont [UI] Slider.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Slider.paintValue false Slider.thumbHeight 17 @@ -1498,7 +1498,7 @@ Slider:SliderTrack[Enabled].backgroundPainter [lazy] [unknown type] javax.swing. SliderThumb.background [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] SliderThumb.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] SliderThumb.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -SliderThumb.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +SliderThumb.font [active] $defaultFont [UI] SliderThumb.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] @@ -1507,7 +1507,7 @@ SliderThumb.foreground [active] #000000 javax.swing.plaf.nimbus.Deriv SliderTrack.background [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] SliderTrack.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] SliderTrack.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -SliderTrack.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +SliderTrack.font [active] $defaultFont [UI] SliderTrack.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] @@ -1522,7 +1522,7 @@ Spinner.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv Spinner.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Spinner.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Spinner.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -Spinner.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +Spinner.font [active] $defaultFont [UI] Spinner.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] @@ -1592,7 +1592,7 @@ SplitPane.continuousLayout true SplitPane.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] SplitPane.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] SplitPane.dividerSize 10 -SplitPane.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +SplitPane.font [active] $defaultFont [UI] SplitPane.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] SplitPane.oneTouchButtonOffset 30 SplitPane.oneTouchExpandable false @@ -1635,7 +1635,7 @@ TabbedPane.darkShadow #000000 javax.swing.plaf.nimbus.DerivedColor$U TabbedPane.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TabbedPane.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TabbedPane.extendTabsToBase true -TabbedPane.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +TabbedPane.font [active] $defaultFont [UI] TabbedPane.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TabbedPane.highlight #ffffff javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TabbedPane.isTabRollover true @@ -1758,7 +1758,7 @@ Table.disabledText [active] #000000 javax.swing.plaf.nimbus.Deriv Table.dropLineColor #73a4d1 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Table.dropLineShortColor #bf6204 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Table.focusCellHighlightBorder 2,5,2,5 false javax.swing.plaf.BorderUIResource [UI] -Table.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +Table.font [active] $defaultFont [UI] Table.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Table.intercellSpacing 0,0 javax.swing.plaf.DimensionUIResource [UI] Table.opaque true @@ -1782,7 +1782,7 @@ TableHeader.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv TableHeader.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TableHeader.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TableHeader.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -TableHeader.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +TableHeader.font [active] $defaultFont [UI] TableHeader.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TableHeader.opaque true TableHeader.rightAlignSortArrow true @@ -1839,7 +1839,7 @@ TextArea.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv TextArea.contentMargins 6,6,6,6 javax.swing.plaf.InsetsUIResource [UI] TextArea.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TextArea.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -TextArea.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +TextArea.font [active] $defaultFont [UI] TextArea.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TextAreaUI javax.swing.plaf.synth.SynthLookAndFeel @@ -1885,7 +1885,7 @@ TextField.background #ffffff javax.swing.plaf.nimbus.DerivedColor$U TextField.contentMargins 6,6,6,6 javax.swing.plaf.InsetsUIResource [UI] TextField.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TextField.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -TextField.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +TextField.font [active] $defaultFont [UI] TextField.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TextFieldUI javax.swing.plaf.synth.SynthLookAndFeel @@ -1920,7 +1920,7 @@ TextPane.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv TextPane.contentMargins 4,6,4,6 javax.swing.plaf.InsetsUIResource [UI] TextPane.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TextPane.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -TextPane.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +TextPane.font [active] $defaultFont [UI] TextPane.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] TextPane.opaque true TextPaneUI javax.swing.plaf.synth.SynthLookAndFeel @@ -1958,7 +1958,7 @@ ToggleButton.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv ToggleButton.contentMargins 6,14,6,14 javax.swing.plaf.InsetsUIResource [UI] ToggleButton.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ToggleButton.disabledText [active] #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -ToggleButton.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +ToggleButton.font [active] $defaultFont [UI] ToggleButton.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ToggleButtonUI javax.swing.plaf.synth.SynthLookAndFeel @@ -2046,7 +2046,7 @@ ToolBar.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv ToolBar.contentMargins 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] ToolBar.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ToolBar.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -ToolBar.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +ToolBar.font [active] $defaultFont [UI] ToolBar.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ToolBar.handleIcon 11,38 javax.swing.plaf.nimbus.NimbusIcon ToolBar.opaque true @@ -2196,7 +2196,7 @@ ToolTip.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv ToolTip.contentMargins 4,4,4,4 javax.swing.plaf.InsetsUIResource [UI] ToolTip.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ToolTip.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -ToolTip.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +ToolTip.font [active] $defaultFont [UI] ToolTip.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] ToolTipUI javax.swing.plaf.synth.SynthLookAndFeel @@ -2218,7 +2218,7 @@ Tree.drawHorizontalLines false Tree.drawVerticalLines false Tree.dropLineColor #73a4d1 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Tree.expandedIcon 18,7 javax.swing.plaf.nimbus.NimbusIcon -Tree.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +Tree.font [active] $defaultFont [UI] Tree.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Tree.leafIcon 16,16 javax.swing.plaf.nimbus.NimbusIcon Tree.leftChildIndent 12 @@ -2297,7 +2297,7 @@ Viewport.background [active] #d6d9df javax.swing.plaf.nimbus.Deriv Viewport.contentMargins 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Viewport.disabled [active] #d6d9df javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Viewport.disabledText [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] -Viewport.font [active] sansserif plain 12 javax.swing.plaf.FontUIResource [UI] +Viewport.font [active] $defaultFont [UI] Viewport.foreground [active] #000000 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] Viewport.opaque true ViewportUI javax.swing.plaf.synth.SynthLookAndFeel @@ -2351,3 +2351,70 @@ textForeground #000000 javax.swing.plaf.nimbus.DerivedColor$U textHighlight #39698a javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] textHighlightText #ffffff javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] textInactiveText #8e8f91 javax.swing.plaf.nimbus.DerivedColor$UIResource [UI] + + +#-------- Contrast Ratios -------- + +# WCAG 2 Contrast Requirements: minimum 4.5; enhanced 7.0 +# https://webaim.org/articles/contrast/#sc143 + + +#-- disabledText -- +CheckBox.disabledText #8e8f91 #d6d9df 2.3 !!!!! +RadioButton.disabledText #8e8f91 #d6d9df 2.3 !!!!! + +#-- foreground -- +ArrowButton.foreground #000000 #d6d9df 14.8 +Button.foreground #000000 #d6d9df 14.8 +CheckBox.foreground #000000 #d6d9df 14.8 +CheckBoxMenuItem.foreground #232324 #d6d9df 11.1 +ColorChooser.foreground #000000 #d6d9df 14.8 +ComboBox.foreground #000000 #d6d9df 14.8 +DesktopIcon.foreground #000000 #d6d9df 14.8 +DesktopPane.foreground #000000 #d6d9df 14.8 +EditorPane.foreground #000000 #d6d9df 14.8 +FileChooser.foreground #000000 #d6d9df 14.8 +FormattedTextField.foreground #000000 #d6d9df 14.8 +InternalFrame.foreground #000000 #d6d9df 14.8 +InternalFrameTitlePane.foreground #000000 #d6d9df 14.8 +Label.foreground #000000 #d6d9df 14.8 +List.foreground #000000 #ffffff 21.0 +Menu.foreground #232324 #d6d9df 11.1 +MenuBar.foreground #000000 #d6d9df 14.8 +MenuItem.foreground #232324 #d6d9df 11.1 +OptionPane.foreground #000000 #d6d9df 14.8 +Panel.foreground #000000 #d6d9df 14.8 +PasswordField.foreground #000000 #d6d9df 14.8 +PopupMenu.foreground #000000 #d6d9df 14.8 +PopupMenuSeparator.foreground #000000 #d6d9df 14.8 +RadioButton.foreground #000000 #d6d9df 14.8 +RadioButtonMenuItem.foreground #232324 #d6d9df 11.1 +RootPane.foreground #000000 #d6d9df 14.8 +ScrollBarThumb.foreground #000000 #d6d9df 14.8 +ScrollBarTrack.foreground #000000 #d6d9df 14.8 +SliderThumb.foreground #000000 #d6d9df 14.8 +SliderTrack.foreground #000000 #d6d9df 14.8 +Spinner.foreground #000000 #d6d9df 14.8 +TabbedPane.foreground #000000 #d6d9df 14.8 +Table.foreground #000000 #ffffff 21.0 +TableHeader.foreground #000000 #d6d9df 14.8 +TextArea.foreground #000000 #d6d9df 14.8 +TextField.foreground #000000 #ffffff 21.0 +TextPane.foreground #000000 #d6d9df 14.8 +ToggleButton.foreground #000000 #d6d9df 14.8 +ToolTip.foreground #000000 #d6d9df 14.8 +Tree.foreground #000000 #ffffff 21.0 + +#-- selectionForeground -- +Tree.selectionForeground #ffffff #39698a 5.9 !! + +#-- textForeground -- +List[Selected].textForeground #ffffff #39698a 5.9 !! +Table[Enabled+Selected].textForeground #ffffff #39698a 5.9 !! +Tree.textForeground #000000 #ffffff 21.0 +textForeground #000000 #39698a 3.6 !!!! + +#-- non-text -- +ProgressBar.background #d6d9df #d6d9df 1.0 !!!!!! +ProgressBar.foreground #000000 #d6d9df 14.8 +Separator.foreground #000000 #d6d9df 14.8 diff --git a/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_InputMap_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_InputMap_1.8.0_202.txt index 8a75235d..639255bf 100644 --- a/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_InputMap_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_InputMap_1.8.0_202.txt @@ -288,15 +288,6 @@ PasswordField.focusInputMap [lazy] 31 javax.swing.plaf.InputMapUIResource #---- PopupMenu ---- -PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object; - [0] LEFT - [1] selectChild - [2] KP_LEFT - [3] selectChild - [4] RIGHT - [5] selectParent - [6] KP_RIGHT - [7] selectParent PopupMenu.selectedWindowInputMapBindings length=22 [Ljava.lang.Object; [0] ESCAPE [1] cancel @@ -320,6 +311,15 @@ PopupMenu.selectedWindowInputMapBindings length=22 [Ljava.lang.Object; [19] return [20] SPACE [21] return +PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object; + [0] LEFT + [1] selectChild + [2] KP_LEFT + [3] selectChild + [4] RIGHT + [5] selectParent + [6] KP_RIGHT + [7] selectParent #---- RadioButton ---- diff --git a/flatlaf-testing/dumps/uidefaults/WindowsLookAndFeel_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/WindowsLookAndFeel_1.8.0_202.txt index c962cd37..833461b8 100644 --- a/flatlaf-testing/dumps/uidefaults/WindowsLookAndFeel_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/WindowsLookAndFeel_1.8.0_202.txt @@ -335,7 +335,7 @@ Menu.acceleratorFont [lazy] Dialog plain 12 javax.swing.plaf.FontUI Menu.acceleratorForeground [active] #000000 javax.swing.plaf.ColorUIResource [UI] Menu.acceleratorSelectionForeground [active] #000000 javax.swing.plaf.ColorUIResource [UI] Menu.afterCheckIconGap [active] 9 -Menu.arrowIcon [lazy] 9,9 com.sun.java.swing.plaf.windows.WindowsIconFactory$MenuArrowIcon [UI] +Menu.arrowIcon [lazy] 11,10 com.sun.java.swing.plaf.windows.WindowsIconFactory$MenuArrowIcon [UI] Menu.background [active] #f0f0f0 javax.swing.plaf.ColorUIResource [UI] Menu.border [lazy] 0,0,0,0 false javax.swing.plaf.basic.BasicBorders$MarginBorder [UI] Menu.borderPainted false @@ -936,3 +936,89 @@ textText #000000 javax.swing.plaf.ColorUIResource [UI] window #ffffff javax.swing.plaf.ColorUIResource [UI] windowBorder #646464 javax.swing.plaf.ColorUIResource [UI] windowText #000000 javax.swing.plaf.ColorUIResource [UI] + + +#-------- Contrast Ratios -------- + +# WCAG 2 Contrast Requirements: minimum 4.5; enhanced 7.0 +# https://webaim.org/articles/contrast/#sc143 + + +#-- activeTitleForeground -- +InternalFrame.activeTitleForeground #000000 #99b4d1 9.8 + +#-- disabledForeground -- +ComboBox.disabledForeground #6d6d6d #f0f0f0 4.5 !!! +Label.disabledForeground #6d6d6d #f0f0f0 4.5 !!! + +#-- focusCellForeground -- +Table.focusCellForeground #000000 #ffffff 21.0 + +#-- foreground -- +Button.foreground #000000 #f0f0f0 18.4 +CheckBox.foreground #000000 #f0f0f0 18.4 +CheckBoxMenuItem.foreground #000000 #f0f0f0 18.4 +ColorChooser.foreground #000000 #f0f0f0 18.4 +ComboBox.foreground #000000 #ffffff 21.0 +EditorPane.foreground #000000 #ffffff 21.0 +FormattedTextField.foreground #000000 #ffffff 21.0 +Label.foreground #000000 #f0f0f0 18.4 +List.foreground #000000 #ffffff 21.0 +Menu.foreground #000000 #f0f0f0 18.4 +MenuBar.foreground #000000 #f0f0f0 18.4 +MenuItem.foreground #000000 #f0f0f0 18.4 +OptionPane.foreground #000000 #f0f0f0 18.4 +Panel.foreground #000000 #f0f0f0 18.4 +PasswordField.foreground #000000 #ffffff 21.0 +PopupMenu.foreground #000000 #f0f0f0 18.4 +RadioButton.foreground #000000 #f0f0f0 18.4 +RadioButtonMenuItem.foreground #000000 #f0f0f0 18.4 +Spinner.foreground #f0f0f0 #f0f0f0 1.0 !!!!!! +TabbedPane.foreground #000000 #f0f0f0 18.4 +Table.foreground #000000 #ffffff 21.0 +TableHeader.foreground #000000 #f0f0f0 18.4 +TextArea.foreground #000000 #ffffff 21.0 +TextField.foreground #000000 #ffffff 21.0 +TextPane.foreground #000000 #ffffff 21.0 +ToggleButton.foreground #000000 #f0f0f0 18.4 +ToolTip.foreground #000000 #ffffe1 20.6 +Tree.foreground #000000 #ffffff 21.0 + +#-- inactiveForeground -- +EditorPane.inactiveForeground #6d6d6d #f0f0f0 4.5 !!! +FormattedTextField.inactiveForeground #6d6d6d #f0f0f0 4.5 !!! +PasswordField.inactiveForeground #6d6d6d #f0f0f0 4.5 !!! +TextArea.inactiveForeground #6d6d6d #f0f0f0 4.5 !!! +TextField.inactiveForeground #6d6d6d #f0f0f0 4.5 !!! +TextPane.inactiveForeground #6d6d6d #f0f0f0 4.5 !!! + +#-- inactiveTitleForeground -- +InternalFrame.inactiveTitleForeground #000000 #bfcddb 13.0 + +#-- selectionBackground -- +ProgressBar.selectionBackground #0078d7 #f0f0f0 3.9 !!!! + +#-- selectionForeground -- +CheckBoxMenuItem.selectionForeground #ffffff #0078d7 4.5 !!! +ComboBox.selectionForeground #ffffff #0078d7 4.5 !!! +EditorPane.selectionForeground #ffffff #0078d7 4.5 !!! +FormattedTextField.selectionForeground #ffffff #0078d7 4.5 !!! +List.selectionForeground #ffffff #0078d7 4.5 !!! +Menu.selectionForeground #ffffff #0078d7 4.5 !!! +MenuItem.selectionForeground #ffffff #0078d7 4.5 !!! +PasswordField.selectionForeground #ffffff #0078d7 4.5 !!! +ProgressBar.selectionForeground #f0f0f0 #0078d7 3.9 !!!! +RadioButtonMenuItem.selectionForeground #ffffff #0078d7 4.5 !!! +Table.selectionForeground #ffffff #0078d7 4.5 !!! +TextArea.selectionForeground #ffffff #0078d7 4.5 !!! +TextField.selectionForeground #ffffff #0078d7 4.5 !!! +TextPane.selectionForeground #ffffff #0078d7 4.5 !!! +Tree.selectionForeground #ffffff #0078d7 4.5 !!! + +#-- textForeground -- +Tree.textForeground #000000 #ffffff 21.0 + +#-- non-text -- +ProgressBar.background #f0f0f0 #f0f0f0 1.0 !!!!!! +ProgressBar.foreground #0078d7 #f0f0f0 3.9 !!!! +Separator.foreground #a0a0a0 #ffffff 2.6 !!!!! diff --git a/flatlaf-testing/dumps/uidefaults/WindowsLookAndFeel_InputMap_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/WindowsLookAndFeel_InputMap_1.8.0_202.txt index 3fb5d6eb..d7ad9a35 100644 --- a/flatlaf-testing/dumps/uidefaults/WindowsLookAndFeel_InputMap_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/WindowsLookAndFeel_InputMap_1.8.0_202.txt @@ -181,23 +181,6 @@ FormattedTextField.focusInputMap [lazy] 44 javax.swing.plaf.InputMapUIResourc #---- List ---- -List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI] - ctrl KP_LEFT selectNextColumnChangeLead - ctrl KP_RIGHT selectPreviousColumnChangeLead - ctrl LEFT selectNextColumnChangeLead - ctrl RIGHT selectPreviousColumnChangeLead - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift ctrl KP_LEFT selectNextColumnExtendSelection - shift ctrl KP_RIGHT selectPreviousColumnExtendSelection - shift ctrl LEFT selectNextColumnExtendSelection - shift ctrl RIGHT selectPreviousColumnExtendSelection - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnExtendSelection - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnExtendSelection List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -263,6 +246,23 @@ List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource shift RIGHT selectNextColumnExtendSelection shift SPACE extendTo shift UP selectPreviousRowExtendSelection +List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI] + ctrl KP_LEFT selectNextColumnChangeLead + ctrl KP_RIGHT selectPreviousColumnChangeLead + ctrl LEFT selectNextColumnChangeLead + ctrl RIGHT selectPreviousColumnChangeLead + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift ctrl KP_LEFT selectNextColumnExtendSelection + shift ctrl KP_RIGHT selectPreviousColumnExtendSelection + shift ctrl LEFT selectNextColumnExtendSelection + shift ctrl RIGHT selectPreviousColumnExtendSelection + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnExtendSelection + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnExtendSelection #---- PasswordField ---- @@ -303,15 +303,6 @@ PasswordField.focusInputMap [lazy] 31 javax.swing.plaf.InputMapUIResource #---- PopupMenu ---- -PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object; - [0] LEFT - [1] selectChild - [2] KP_LEFT - [3] selectChild - [4] RIGHT - [5] selectParent - [6] KP_RIGHT - [7] selectParent PopupMenu.selectedWindowInputMapBindings length=24 [Ljava.lang.Object; [0] ESCAPE [1] cancel @@ -337,6 +328,15 @@ PopupMenu.selectedWindowInputMapBindings length=24 [Ljava.lang.Object; [21] return [22] SPACE [23] return +PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object; + [0] LEFT + [1] selectChild + [2] KP_LEFT + [3] selectChild + [4] RIGHT + [5] selectParent + [6] KP_RIGHT + [7] selectParent #---- RadioButton ---- @@ -355,11 +355,6 @@ RootPane.ancestorInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [ #---- ScrollBar ---- -ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement ScrollBar.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI] ctrl PAGE_DOWN positiveBlockIncrement ctrl PAGE_UP negativeBlockIncrement @@ -375,13 +370,15 @@ ScrollBar.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource PAGE_UP negativeBlockIncrement RIGHT positiveUnitIncrement UP negativeUnitIncrement +ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- ScrollPane ---- -ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI] - ctrl PAGE_DOWN scrollLeft - ctrl PAGE_UP scrollRight ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI] ctrl END scrollEnd ctrl HOME scrollHome @@ -397,15 +394,13 @@ ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource PAGE_UP scrollUp RIGHT unitScrollRight UP unitScrollUp +ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI] + ctrl PAGE_DOWN scrollLeft + ctrl PAGE_UP scrollRight #---- Slider ---- -Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT positiveUnitIncrement - KP_RIGHT negativeUnitIncrement - LEFT positiveUnitIncrement - RIGHT negativeUnitIncrement Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI] DOWN negativeUnitIncrement END maxScroll @@ -419,6 +414,11 @@ Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource PAGE_UP positiveBlockIncrement RIGHT positiveUnitIncrement UP positiveUnitIncrement +Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT positiveUnitIncrement + KP_RIGHT negativeUnitIncrement + LEFT positiveUnitIncrement + RIGHT negativeUnitIncrement #---- Spinner ---- @@ -473,27 +473,6 @@ TabbedPane.focusInputMap [lazy] 10 javax.swing.plaf.InputMapUIResource #---- Table ---- -Table.ancestorInputMap.RightToLeft [lazy] 20 javax.swing.plaf.InputMapUIResource [UI] - ctrl KP_LEFT selectNextColumnChangeLead - ctrl KP_RIGHT selectPreviousColumnChangeLead - ctrl LEFT selectNextColumnChangeLead - ctrl PAGE_DOWN scrollLeftChangeSelection - ctrl PAGE_UP scrollRightChangeSelection - ctrl RIGHT selectPreviousColumnChangeLead - KP_LEFT selectNextColumn - KP_RIGHT selectPreviousColumn - LEFT selectNextColumn - RIGHT selectPreviousColumn - shift ctrl KP_LEFT selectNextColumnExtendSelection - shift ctrl KP_RIGHT selectPreviousColumnExtendSelection - shift ctrl LEFT selectNextColumnExtendSelection - shift ctrl PAGE_DOWN scrollLeftExtendSelection - shift ctrl PAGE_UP scrollRightExtendSelection - shift ctrl RIGHT selectPreviousColumnExtendSelection - shift KP_LEFT selectNextColumnExtendSelection - shift KP_RIGHT selectPreviousColumnExtendSelection - shift LEFT selectNextColumnExtendSelection - shift RIGHT selectPreviousColumnExtendSelection Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -566,6 +545,27 @@ Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource shift SPACE extendTo shift TAB selectPreviousColumnCell shift UP selectPreviousRowExtendSelection +Table.ancestorInputMap.RightToLeft [lazy] 20 javax.swing.plaf.InputMapUIResource [UI] + ctrl KP_LEFT selectNextColumnChangeLead + ctrl KP_RIGHT selectPreviousColumnChangeLead + ctrl LEFT selectNextColumnChangeLead + ctrl PAGE_DOWN scrollLeftChangeSelection + ctrl PAGE_UP scrollRightChangeSelection + ctrl RIGHT selectPreviousColumnChangeLead + KP_LEFT selectNextColumn + KP_RIGHT selectPreviousColumn + LEFT selectNextColumn + RIGHT selectPreviousColumn + shift ctrl KP_LEFT selectNextColumnExtendSelection + shift ctrl KP_RIGHT selectPreviousColumnExtendSelection + shift ctrl LEFT selectNextColumnExtendSelection + shift ctrl PAGE_DOWN scrollLeftExtendSelection + shift ctrl PAGE_UP scrollRightExtendSelection + shift ctrl RIGHT selectPreviousColumnExtendSelection + shift KP_LEFT selectNextColumnExtendSelection + shift KP_RIGHT selectPreviousColumnExtendSelection + shift LEFT selectNextColumnExtendSelection + shift RIGHT selectPreviousColumnExtendSelection #---- TableHeader ---- @@ -761,11 +761,6 @@ ToolBar.ancestorInputMap [lazy] 8 javax.swing.plaf.InputMapUIResource [ Tree.ancestorInputMap [lazy] 1 javax.swing.plaf.InputMapUIResource [UI] ESCAPE cancel -Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] - KP_LEFT selectChild - KP_RIGHT selectParent - LEFT selectChild - RIGHT selectParent Tree.focusInputMap [lazy] 59 javax.swing.plaf.InputMapUIResource [UI] ctrl A selectAll ctrl BACK_SLASH clearSelection @@ -826,3 +821,8 @@ Tree.focusInputMap [lazy] 59 javax.swing.plaf.InputMapUIResource shift PAGE_UP scrollUpExtendSelection shift SPACE extendTo shift UP selectPreviousExtendSelection +Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI] + KP_LEFT selectChild + KP_RIGHT selectParent + LEFT selectChild + RIGHT selectParent diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java index a5cf5878..e723e7f1 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java @@ -167,6 +167,8 @@ public class UIDefaultsDump } private static void dump( String lookAndFeelClassName, File dir, boolean jide ) { + System.out.println( "---- "+lookAndFeelClassName+" -------------------------------" ); + try { UIManager.setLookAndFeel( lookAndFeelClassName ); if( jide ) @@ -415,8 +417,8 @@ public class UIDefaultsDump dumpHeader( out ); defaults.entrySet().stream() - .sorted( (key1, key2) -> { - return String.valueOf( key1 ).compareTo( String.valueOf( key2 ) ); + .sorted( (e1, e2) -> { + return String.valueOf( e1.getKey() ).compareTo( String.valueOf( e2.getKey() ) ); } ) .forEach( entry -> { Object key = entry.getKey(); From 143f96360bcf1bdda7b18d515b69fce14e335b06 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Thu, 27 Feb 2025 11:58:09 +0100 Subject: [PATCH 25/36] IntelliJ Themes: removed `Gruvbox Dark Medium` and `Gruvbox Dark Soft` themes --- CHANGELOG.md | 1 + .../flatlaf/IntelliJTheme$ThemeLaf.properties | 16 -- .../flatlaf/demo/intellijthemes/themes.json | 20 -- flatlaf-intellij-themes/README.md | 2 - .../intellijthemes/FlatAllIJThemes.java | 2 - .../FlatGruvboxDarkMediumIJTheme.java | 54 ----- .../FlatGruvboxDarkSoftIJTheme.java | 54 ----- .../themes/gruvbox_dark_medium.theme.json | 193 ----------------- .../themes/gruvbox_dark_soft.theme.json | 194 ------------------ 9 files changed, 1 insertion(+), 535 deletions(-) delete mode 100644 flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkMediumIJTheme.java delete mode 100644 flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkSoftIJTheme.java delete mode 100644 flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_medium.theme.json delete mode 100644 flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_soft.theme.json diff --git a/CHANGELOG.md b/CHANGELOG.md index c3e13d66..8cc606f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,7 @@ FlatLaf Change Log - Renamed classes in package `com.formdev.flatlaf.intellijthemes.materialthemeuilite` from `Flat` to `FlatMT`. + - Removed `Gruvbox Dark Medium` and `Gruvbox Dark Soft` themes. ## 3.5.4 diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties index 1a82b358..6ece7ce2 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties @@ -213,22 +213,6 @@ ToggleButton.endBackground = $ToggleButton.background {Gruvbox_Dark_Hard}ComboBox.buttonBackground = @ijTextBackgroundL3 {Gruvbox_Dark_Hard}TextField.background = @ijTextBackgroundL3 -{Gruvbox_Dark_Medium}Component.accentColor = lazy(TabbedPane.underlineColor) -{Gruvbox_Dark_Medium}ToggleButton.selectedBackground = $ToggleButton.selectedBackground -{Gruvbox_Dark_Medium}ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground -{Gruvbox_Dark_Medium}ComboBox.background = @ijTextBackgroundL3 -{Gruvbox_Dark_Medium}ComboBox.buttonBackground = @ijTextBackgroundL3 -{Gruvbox_Dark_Medium}TextField.background = @ijTextBackgroundL3 - -{Gruvbox_Dark_Soft}Component.accentColor = lazy(TabbedPane.underlineColor) -{Gruvbox_Dark_Soft}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 -{Gruvbox_Dark_Soft}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 -{Gruvbox_Dark_Soft}ToggleButton.selectedBackground = $ToggleButton.selectedBackground -{Gruvbox_Dark_Soft}ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground -{Gruvbox_Dark_Soft}ComboBox.background = @ijTextBackgroundL3 -{Gruvbox_Dark_Soft}ComboBox.buttonBackground = @ijTextBackgroundL3 -{Gruvbox_Dark_Soft}TextField.background = @ijTextBackgroundL3 - {Hiberbee_Dark}*.disabledForeground = #7F7E7D {Hiberbee_Dark}*.disabledText = #7F7E7D {Hiberbee_Dark}*.inactiveForeground = #7F7E7D diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json index d424c25d..d7aa34dd 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json @@ -155,26 +155,6 @@ "sourceCodeUrl": "https://github.com/Vincent-P/gruvbox-intellij-theme", "sourceCodePath": "blob/master/src/main/resources/gruvbox_dark_hard.theme.json" }, - "gruvbox_dark_medium.theme.json": { - "name": "Gruvbox Dark Medium", - "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkMediumIJTheme", - "license": "MIT", - "licenseFile": "gruvbox_theme.LICENSE.txt", - "pluginUrl": "https://plugins.jetbrains.com/plugin/12310-gruvbox-theme", - "sourceCodeUrl": "https://github.com/Vincent-P/gruvbox-intellij-theme", - "sourceCodePath": "blob/master/src/main/resources/gruvbox_dark_medium.theme.json" - }, - "gruvbox_dark_soft.theme.json": { - "name": "Gruvbox Dark Soft", - "dark": true, - "lafClassName": "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkSoftIJTheme", - "license": "MIT", - "licenseFile": "gruvbox_theme.LICENSE.txt", - "pluginUrl": "https://plugins.jetbrains.com/plugin/12310-gruvbox-theme", - "sourceCodeUrl": "https://github.com/Vincent-P/gruvbox-intellij-theme", - "sourceCodePath": "blob/master/src/main/resources/gruvbox_dark_soft.theme.json" - }, "HiberbeeDark.theme.json": { "name": "Hiberbee Dark", "dark": true, diff --git a/flatlaf-intellij-themes/README.md b/flatlaf-intellij-themes/README.md index c6b62740..dcf3b0fd 100644 --- a/flatlaf-intellij-themes/README.md +++ b/flatlaf-intellij-themes/README.md @@ -58,8 +58,6 @@ Name | Class [Gradianto Nature Green](https://github.com/thvardhan/Gradianto) | `com.formdev.flatlaf.intellijthemes.FlatGradiantoNatureGreenIJTheme` [Gray](https://github.com/OlyaB/GreyTheme) | `com.formdev.flatlaf.intellijthemes.FlatGrayIJTheme` [Gruvbox Dark Hard](https://github.com/Vincent-P/gruvbox-intellij-theme) | `com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkHardIJTheme` -[Gruvbox Dark Medium](https://github.com/Vincent-P/gruvbox-intellij-theme) | `com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkMediumIJTheme` -[Gruvbox Dark Soft](https://github.com/Vincent-P/gruvbox-intellij-theme) | `com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkSoftIJTheme` [Hiberbee Dark](https://github.com/Hiberbee/themes) | `com.formdev.flatlaf.intellijthemes.FlatHiberbeeDarkIJTheme` [High Contrast](https://github.com/JetBrains/intellij-community) | `com.formdev.flatlaf.intellijthemes.FlatHighContrastIJTheme` [Light Flat](https://github.com/nerzhulart/LightFlatTheme) | `com.formdev.flatlaf.intellijthemes.FlatLightFlatIJTheme` diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java index a02eac5c..98faf375 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java @@ -45,8 +45,6 @@ public class FlatAllIJThemes new FlatIJLookAndFeelInfo( "Gradianto Nature Green", "com.formdev.flatlaf.intellijthemes.FlatGradiantoNatureGreenIJTheme", true ), new FlatIJLookAndFeelInfo( "Gray", "com.formdev.flatlaf.intellijthemes.FlatGrayIJTheme", false ), new FlatIJLookAndFeelInfo( "Gruvbox Dark Hard", "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkHardIJTheme", true ), - new FlatIJLookAndFeelInfo( "Gruvbox Dark Medium", "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkMediumIJTheme", true ), - new FlatIJLookAndFeelInfo( "Gruvbox Dark Soft", "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkSoftIJTheme", true ), new FlatIJLookAndFeelInfo( "Hiberbee Dark", "com.formdev.flatlaf.intellijthemes.FlatHiberbeeDarkIJTheme", true ), new FlatIJLookAndFeelInfo( "High Contrast", "com.formdev.flatlaf.intellijthemes.FlatHighContrastIJTheme", true ), new FlatIJLookAndFeelInfo( "Light Flat", "com.formdev.flatlaf.intellijthemes.FlatLightFlatIJTheme", false ), diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkMediumIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkMediumIJTheme.java deleted file mode 100644 index 19be856d..00000000 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkMediumIJTheme.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2020 FormDev Software GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.formdev.flatlaf.intellijthemes; - -// -// DO NOT MODIFY -// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator -// - -import com.formdev.flatlaf.IntelliJTheme; - -/** - * @author Karl Tauber - */ -public class FlatGruvboxDarkMediumIJTheme - extends IntelliJTheme.ThemeLaf -{ - public static final String NAME = "Gruvbox Dark Medium"; - - public static boolean setup() { - try { - return setup( new FlatGruvboxDarkMediumIJTheme() ); - } catch( RuntimeException ex ) { - return false; - } - } - - public static void installLafInfo() { - installLafInfo( NAME, FlatGruvboxDarkMediumIJTheme.class ); - } - - public FlatGruvboxDarkMediumIJTheme() { - super( Utils.loadTheme( "gruvbox_dark_medium.theme.json" ) ); - } - - @Override - public String getName() { - return NAME; - } -} diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkSoftIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkSoftIJTheme.java deleted file mode 100644 index a85e6b69..00000000 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkSoftIJTheme.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2020 FormDev Software GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.formdev.flatlaf.intellijthemes; - -// -// DO NOT MODIFY -// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator -// - -import com.formdev.flatlaf.IntelliJTheme; - -/** - * @author Karl Tauber - */ -public class FlatGruvboxDarkSoftIJTheme - extends IntelliJTheme.ThemeLaf -{ - public static final String NAME = "Gruvbox Dark Soft"; - - public static boolean setup() { - try { - return setup( new FlatGruvboxDarkSoftIJTheme() ); - } catch( RuntimeException ex ) { - return false; - } - } - - public static void installLafInfo() { - installLafInfo( NAME, FlatGruvboxDarkSoftIJTheme.class ); - } - - public FlatGruvboxDarkSoftIJTheme() { - super( Utils.loadTheme( "gruvbox_dark_soft.theme.json" ) ); - } - - @Override - public String getName() { - return NAME; - } -} diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_medium.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_medium.theme.json deleted file mode 100644 index 80b3ca02..00000000 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_medium.theme.json +++ /dev/null @@ -1,193 +0,0 @@ -{ - "name": "Gruvbox Dark Medium", - "dark": true, - "author": "Vincent Parizet", - "editorScheme": "/gruvbox_dark_medium.xml", - "colors": { - "bg0": "#282828", - "bg0_h": "#1d2021", - "bg0_s": "#32302f", - "bg1": "#3c3836", - "bg2": "#504945", - "bg3": "#665c54", - "bg4": "#7c6f64", - "bg": "#282828", - - "fg0": "#fbf1c7", - "fg1": "#ebdbb2", - "fg2": "#d5c4a1", - "fg3": "#bdae93", - "fg4": "#a89984", - "fg": "#ebdbb2", - - "red0": "#cc241d", - "red1": "#fb4934", - "green0": "#98971a", - "green1": "#b8bb26", - "yellow0": "#d79921", - "yellow1": "#fabd2f", - "blue0": "#458588", - "blue1": "#83a598", - "purple0": "#b16286", - "purple1": "#d3869b", - "aqua0": "#689d6a", - "aqua1": "#8ec07c", - "gray0": "#a89984", - "gray1": "#928374", - "orange0": "#d65d0e", - "orange1": "#fe8019" - }, - "ui": { - "*": { - "background": "bg", - "foreground": "fg", - - "infoForeground": "fg", - - "lightSelectionBackground": "bg1", - "selectionBackground": "#4F4945", - "selectionForeground": "fg0", - - "selectionBackgroundInactive": "bg0_s", - "selectionInactiveBackground": "bg0_s", - - "selectedBackground": "bg0_h", - "selectedForeground": "fg0", - "selectedInactiveBackground": "bg0_s", - "selectedBackgroundInactive": "bg0_s", - - "hoverBackground": "#28282866", - - "borderColor": "bg2", - "disabledBorderColor": "bg0_h", - - "separatorColor": "bg2" - }, - "ActionButton": { - "hoverBackground": "bg2" - }, - "Button": { - "startBackground": "bg", - "endBackground": "bg", - "startBorderColor": "bg2", - "endBorderColor": "bg2", - - "default": { - "foreground": "fg0", - "startBackground": "#32302F", - "endBackground": "#32302F", - "startBorderColor": "#4F4945", - "endBorderColor": "#4F4945", - "focusedBorderColor": "bg" - } - }, - "ComboBox": { - "nonEditableBackground": "bg", - "ArrowButton": { - "iconColor": "fg0", - "disabledIconColor": "fg0", - "nonEditableBackground": "bg" - } - }, - "EditorTabs": { - "selectedBackground": "bg0_s", - "underlinedTabBackground": "bg2", - "underlineColor": "blue1", - "inactiveMaskColor": "#28282866" - }, - "ToolWindow": { - "Header": { - "background": "bg0_s", - "inactiveBackground": "bg" - }, - - "HeaderTab": { - "selectedInactiveBackground": "bg0_h", - "hoverInactiveBackground": "bg0_h" - } - }, - "Table": { - "stripeColor": "bg0_s", - "lightSelectionForeground": "fg0", - "lightSelectionInactiveForeground":"fg4", - "lightSelectionBackground": "bg2", - "lightSelectionInactiveBackground":"bg" - }, - "FileColor": { - "Yellow": "#fabd2f22", - "Green": "#b8bb2622", - "Blue": "#83a59822", - "Violet": "#d3869b22", - "Orange": "#fe801922", - "Rose": "#cc241d22" - }, - "Link": { - "activeForeground": "blue1", - "hoverForeground": "blue1", - "pressedForeground": "blue1", - "visitedForeground": "blue1" - }, - "ScrollBar" : { - "hoverThumbBorderColor" : "bg1", - "background" : "bg0", - "hoverThumbColor": "bg1", - "hoverTrackColor": "bg0", - "thumb": "bg2", - "thumbBorderColor": "bg2", - "thumbColor": "bg2", - "Transparent": { - "thumbColor": "bg2", - "hoverThumbBorderColor" : "bg1", - "hoverThumbColor": "bg1", - "hoverTrackColor": "bg0", - "thumbBorderColor": "bg2" - }, - "Mac" : { - "Transparent": { - "thumbColor": "bg2", - "hoverThumbBorderColor" : "bg1", - "hoverThumbColor": "bg1", - "hoverTrackColor": "bg0", - "thumbBorderColor": "bg2" - }, - "hoverThumbBorderColor" : "bg1", - "hoverThumbColor": "bg1", - "hoverTrackColor": "bg0", - "thumbBorderColor": "bg2", - "thumbColor": "bg2" - } - } - }, - "icons": { - "ColorPalette": { - "Actions.Grey": "#928374", - "Actions.Red": "#fb4934", - "Actions.Yellow": "#fabd2f", - "Actions.Green": "#98971a", - "Actions.Blue": "#458588", - "Actions.GreyInline.Dark": "#fbf1c7", - - "Objects.Grey": "#928374FF", - "Objects.RedStatus": "#fb4934FF", - "Objects.Red": "#fb4934FF", - "Objects.Pink": "#d3869bFF", - "Objects.Yellow": "#fabd2fFF", - "Objects.Green": "#98971aFF", - "Objects.Blue": "#458588FF", - "Objects.Purple": "#b16286FF", - "Objects.BlackText": "#000000FF", - "Objects.YellowDark": "#d79921FF", - "Objects.GreenAndroid": "#b8bb26FF", - - "Checkbox.Background.Default.Dark": "#282828", - "Checkbox.Border.Default.Dark": "#fbf1c7", - "Checkbox.Foreground.Selected.Dark": "#fbf1c7", - "Checkbox.Focus.Wide.Dark": "#458588", - "Checkbox.Focus.Thin.Default.Dark": "#458588", - "Checkbox.Focus.Thin.Selected.Dark": "#458588", - "Checkbox.Background.Disabled.Dark": "#282828", - "Checkbox.Border.Disabled.Dark": "#a89984", - "Checkbox.Foreground.Disabled.Dark": "#a89984" - } - } -} diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_soft.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_soft.theme.json deleted file mode 100644 index 4cebc316..00000000 --- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_soft.theme.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "name": "Gruvbox Dark Soft", - "dark": true, - "author": "Vincent Parizet", - "editorScheme": "/gruvbox_dark_soft.xml", - "colors": { - "bg0": "#282828", - "bg0_h": "#1d2021", - "bg0_s": "#32302f", - "bg0_ss": "#4F4945", - "bg1": "#3c3836", - "bg2": "#504945", - "bg3": "#665c54", - "bg4": "#7c6f64", - "bg": "#32302f", - - "fg0": "#fbf1c7", - "fg1": "#ebdbb2", - "fg2": "#d5c4a1", - "fg3": "#bdae93", - "fg4": "#a89984", - "fg": "#ebdbb2", - - "red0": "#cc241d", - "red1": "#fb4934", - "green0": "#98971a", - "green1": "#b8bb26", - "yellow0": "#d79921", - "yellow1": "#fabd2f", - "blue0": "#458588", - "blue1": "#83a598", - "purple0": "#b16286", - "purple1": "#d3869b", - "aqua0": "#689d6a", - "aqua1": "#8ec07c", - "gray0": "#a89984", - "gray1": "#928374", - "orange0": "#d65d0e", - "orange1": "#fe8019" - }, - "ui": { - "*": { - "background": "bg", - "foreground": "fg", - - "infoForeground": "fg", - - "lightSelectionBackground": "bg1", - "selectionBackground": "bg0_ss", - "selectionForeground": "fg0", - - "selectionBackgroundInactive": "bg0_ss", - "selectionInactiveBackground": "bg0_ss", - - "selectedBackground": "bg0_h", - "selectedForeground": "fg0", - "selectedInactiveBackground": "bg0_s", - "selectedBackgroundInactive": "bg0_s", - - "hoverBackground": "#28282866", - - "borderColor": "bg2", - "disabledBorderColor": "bg0_h", - - "separatorColor": "bg2" - }, - "ActionButton": { - "hoverBackground": "bg2" - }, - "Button": { - "startBackground": "bg", - "endBackground": "bg", - "startBorderColor": "bg2", - "endBorderColor": "bg2", - - "default": { - "foreground": "fg0", - "startBackground": "#32302F", - "endBackground": "#32302F", - "startBorderColor": "#4F4945", - "endBorderColor": "#4F4945", - "focusedBorderColor": "bg" - } - }, - "ComboBox": { - "nonEditableBackground": "bg", - "ArrowButton": { - "iconColor": "fg0", - "disabledIconColor": "fg0", - "nonEditableBackground": "bg" - } - }, - "EditorTabs": { - "selectedBackground": "bg0_s", - "underlinedTabBackground": "bg2", - "underlineColor": "blue1", - "inactiveMaskColor": "#28282866" - }, - "ToolWindow": { - "Header": { - "background": "bg0_s", - "inactiveBackground": "bg" - }, - - "HeaderTab": { - "selectedInactiveBackground": "bg0_h", - "hoverInactiveBackground": "bg0_h" - } - }, - "Table": { - "stripeColor": "bg0_s", - "lightSelectionForeground": "fg0", - "lightSelectionInactiveForeground":"fg4", - "lightSelectionBackground": "bg2", - "lightSelectionInactiveBackground":"bg" - }, - "FileColor": { - "Yellow": "#fabd2f22", - "Green": "#b8bb2622", - "Blue": "#83a59822", - "Violet": "#d3869b22", - "Orange": "#fe801922", - "Rose": "#cc241d22" - }, - "Link": { - "activeForeground": "blue1", - "hoverForeground": "blue1", - "pressedForeground": "blue1", - "visitedForeground": "blue1" - }, - "ScrollBar" : { - "hoverThumbBorderColor" : "bg1", - "background" : "bg0", - "hoverThumbColor": "bg1", - "hoverTrackColor": "bg0", - "thumb": "bg2", - "thumbBorderColor": "bg2", - "thumbColor": "bg2", - "Transparent": { - "thumbColor": "bg2", - "hoverThumbBorderColor" : "bg1", - "hoverThumbColor": "bg1", - "hoverTrackColor": "bg0", - "thumbBorderColor": "bg2" - }, - "Mac" : { - "Transparent": { - "thumbColor": "bg2", - "hoverThumbBorderColor" : "bg1", - "hoverThumbColor": "bg1", - "hoverTrackColor": "bg0", - "thumbBorderColor": "bg2" - }, - "hoverThumbBorderColor" : "bg1", - "hoverThumbColor": "bg1", - "hoverTrackColor": "bg0", - "thumbBorderColor": "bg2", - "thumbColor": "bg2" - } - } - }, - "icons": { - "ColorPalette": { - "Actions.Grey": "#928374", - "Actions.Red": "#fb4934", - "Actions.Yellow": "#fabd2f", - "Actions.Green": "#98971a", - "Actions.Blue": "#458588", - "Actions.GreyInline.Dark": "#fbf1c7", - - "Objects.Grey": "#928374FF", - "Objects.RedStatus": "#fb4934FF", - "Objects.Red": "#fb4934FF", - "Objects.Pink": "#d3869bFF", - "Objects.Yellow": "#fabd2fFF", - "Objects.Green": "#98971aFF", - "Objects.Blue": "#458588FF", - "Objects.Purple": "#b16286FF", - "Objects.BlackText": "#000000FF", - "Objects.YellowDark": "#d79921FF", - "Objects.GreenAndroid": "#b8bb26FF", - - "Checkbox.Background.Default.Dark": "#282828", - "Checkbox.Border.Default.Dark": "#fbf1c7", - "Checkbox.Foreground.Selected.Dark": "#fbf1c7", - "Checkbox.Focus.Wide.Dark": "#458588", - "Checkbox.Focus.Thin.Default.Dark": "#458588", - "Checkbox.Focus.Thin.Selected.Dark": "#458588", - "Checkbox.Background.Disabled.Dark": "#282828", - "Checkbox.Border.Disabled.Dark": "#a89984", - "Checkbox.Foreground.Disabled.Dark": "#a89984" - } - } -} From 9b1ae5c74a727ccdf9f1d02ee8e1814b5cd8ef2a Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Thu, 6 Mar 2025 13:14:04 +0100 Subject: [PATCH 26/36] IntelliJ Themes: support customizing through properties files (issue #824) re-written how .theme.json values are applied: - old: .theme.json values were applied as last step to a UIDefaults object (after processing all FlatLaf properties files) - new: .theme.json values are applied to the properties map while loading all FlatLaf properties files --- CHANGELOG.md | 4 +- .../java/com/formdev/flatlaf/FlatLaf.java | 14 +- .../com/formdev/flatlaf/IntelliJTheme.java | 510 +++++++------- .../com/formdev/flatlaf/UIDefaultsLoader.java | 24 +- .../formdev/flatlaf/FlatDarculaLaf.properties | 1 - .../flatlaf/IntelliJTheme$ThemeLaf.properties | 643 ++++++++++-------- .../com/formdev/flatlaf/demo/DemoPrefs.java | 2 + .../demo/intellijthemes/IJThemesDump.java | 118 ++++ .../demo/intellijthemes/IJThemesPanel.java | 20 +- .../dumps/uidefaults/FlatDarculaLaf_1.8.0.txt | 4 +- .../testing/uidefaults/UIDefaultsDump.java | 84 ++- 11 files changed, 870 insertions(+), 554 deletions(-) create mode 100644 flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesDump.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cc606f1..49500fdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,9 @@ FlatLaf Change Log - Extras: `FlatSVGIcon` color filters now can access painting component to implement component state based color mappings. (issue #906) - Linux: Added `libflatlaf-linux-arm64.so` for Linux on ARM64. (issue #899) -- IntelliJ Themes: Updated to latest versions. +- IntelliJ Themes: + - Updated to latest versions and fixed various issues. + - Support customizing through properties files. (issue #824) #### Fixed bugs diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index dec465d1..803783fe 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -521,10 +521,10 @@ public abstract class FlatLaf // load defaults from properties List> lafClassesForDefaultsLoading = getLafClassesForDefaultsLoading(); - if( lafClassesForDefaultsLoading != null ) - UIDefaultsLoader.loadDefaultsFromProperties( lafClassesForDefaultsLoading, addons, getAdditionalDefaults(), isDark(), defaults ); - else - UIDefaultsLoader.loadDefaultsFromProperties( getClass(), addons, getAdditionalDefaults(), isDark(), defaults ); + if( lafClassesForDefaultsLoading == null ) + lafClassesForDefaultsLoading = UIDefaultsLoader.getLafClassesForDefaultsLoading( getClass() ); + UIDefaultsLoader.loadDefaultsFromProperties( lafClassesForDefaultsLoading, addons, + this::applyAdditionalProperties, getAdditionalDefaults(), isDark(), defaults ); // setup default font after loading defaults from properties // to allow defining "defaultFont" in properties @@ -541,9 +541,6 @@ public abstract class FlatLaf // initialize text antialiasing putAATextInfo( defaults ); - // apply additional defaults (e.g. from IntelliJ themes) - applyAdditionalDefaults( defaults ); - // allow addons modifying UI defaults for( FlatDefaultsAddon addon : addons ) addon.afterDefaultsLoading( this, defaults ); @@ -564,7 +561,8 @@ public abstract class FlatLaf return defaults; } - void applyAdditionalDefaults( UIDefaults defaults ) { + // apply additional properties (e.g. from IntelliJ themes) + void applyAdditionalProperties( Properties properties ) { } protected List> getLafClassesForDefaultsLoading() { diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java index 5be0c5c0..d352d728 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java @@ -16,7 +16,6 @@ package com.formdev.flatlaf; -import java.awt.Color; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -25,20 +24,16 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Properties; import java.util.Set; -import java.util.Map.Entry; -import javax.swing.UIDefaults; -import javax.swing.plaf.ColorUIResource; import com.formdev.flatlaf.json.Json; import com.formdev.flatlaf.json.ParseException; -import com.formdev.flatlaf.util.ColorFunctions; import com.formdev.flatlaf.util.LoggingFacade; import com.formdev.flatlaf.util.StringUtils; import com.formdev.flatlaf.util.SystemInfo; @@ -63,13 +58,11 @@ public class IntelliJTheme public final boolean dark; public final String author; - private final boolean isMaterialUILite; + private Map jsonColors; + private Map jsonUI; + private Map jsonIcons; - private Map colors; - private Map ui; - private Map icons; - - private Map namedColors = Collections.emptyMap(); + private Map namedColors = Collections.emptyMap(); /** * Loads a IntelliJ .theme.json file from the given input stream, @@ -84,7 +77,7 @@ public class IntelliJTheme try { return FlatLaf.setup( createLaf( in ) ); } catch( Exception ex ) { - LoggingFacade.INSTANCE.logSevere( "FlatLaf: Failed to load IntelliJ theme", ex ); + LoggingFacade.INSTANCE.logSevere( "FlatLaf: Failed to load IntelliJ theme", ex ); return false; } } @@ -138,94 +131,90 @@ public class IntelliJTheme dark = Boolean.parseBoolean( (String) json.get( "dark" ) ); author = (String) json.get( "author" ); - isMaterialUILite = author.equals( "Mallowigi" ); - - colors = (Map) json.get( "colors" ); - ui = (Map) json.get( "ui" ); - icons = (Map) json.get( "icons" ); + jsonColors = (Map) json.get( "colors" ); + jsonUI = (Map) json.get( "ui" ); + jsonIcons = (Map) json.get( "icons" ); } - private void applyProperties( UIDefaults defaults ) { - if( ui == null ) + private void applyProperties( Properties properties ) { + if( jsonUI == null ) return; - defaults.put( "Component.isIntelliJTheme", true ); + put( properties, "Component.isIntelliJTheme", "true" ); // enable button shadows - defaults.put( "Button.paintShadow", true ); - defaults.put( "Button.shadowWidth", dark ? 2 : 1 ); + put( properties, "Button.paintShadow", "true" ); + put( properties, "Button.shadowWidth", dark ? "2" : "1" ); - Map themeSpecificDefaults = removeThemeSpecificDefaults( defaults ); + Map themeSpecificProps = removeThemeSpecificProps( properties ); + Set jsonUIKeys = new HashSet<>(); - loadNamedColors( defaults ); + // Json node "colors" + loadNamedColors( properties, jsonUIKeys ); - // convert Json "ui" structure to UI defaults - ArrayList defaultsKeysCache = new ArrayList<>(); - Set uiKeys = new HashSet<>(); - for( Map.Entry e : ui.entrySet() ) - apply( e.getKey(), e.getValue(), defaults, defaultsKeysCache, uiKeys ); + // convert Json "ui" structure to UI properties + for( Map.Entry e : jsonUI.entrySet() ) + apply( e.getKey(), e.getValue(), properties, jsonUIKeys ); - applyColorPalette( defaults ); - applyCheckBoxColors( defaults ); + // set FlatLaf variables + copyIfSetInJson( properties, jsonUIKeys, "@background", "Panel.background", "*.background" ); + copyIfSetInJson( properties, jsonUIKeys, "@foreground", "CheckBox.foreground", "*.foreground" ); + copyIfSetInJson( properties, jsonUIKeys, "@accentBaseColor", + "ColorPalette.accent", // Material UI Lite, Hiberbee + "ColorPalette.accentColor", // Dracula, One Dark + "ProgressBar.foreground", + "*.selectionBackground" ); + copyIfSetInJson( properties, jsonUIKeys, "@accentUnderlineColor", "*.underlineColor", "TabbedPane.underlineColor" ); + copyIfSetInJson( properties, jsonUIKeys, "@selectionBackground", "*.selectionBackground" ); + copyIfSetInJson( properties, jsonUIKeys, "@selectionForeground", "*.selectionForeground" ); + copyIfSetInJson( properties, jsonUIKeys, "@selectionInactiveBackground", "*.selectionInactiveBackground" ); + copyIfSetInJson( properties, jsonUIKeys, "@selectionInactiveForeground", "*.selectionInactiveForeground" ); + + // Json node "icons/ColorPalette" + applyIconsColorPalette( properties ); + + // apply "CheckBox.icon." colors + applyCheckBoxColors( properties ); // copy values for( Map.Entry e : uiKeyCopying.entrySet() ) { - Object value = defaults.get( e.getValue() ); + Object value = properties.get( e.getValue() ); if( value != null ) - defaults.put( e.getKey(), value ); + put( properties, e.getKey(), value ); } // IDEA does not paint button background if disabled, but FlatLaf does - Object panelBackground = defaults.get( "Panel.background" ); - defaults.put( "Button.disabledBackground", panelBackground ); - defaults.put( "ToggleButton.disabledBackground", panelBackground ); + put( properties, "Button.disabledBackground", "@disabledBackground" ); + put( properties, "ToggleButton.disabledBackground", "@disabledBackground" ); - // fix Button borders - copyIfNotSet( defaults, "Button.focusedBorderColor", "Component.focusedBorderColor", uiKeys ); - defaults.put( "Button.hoverBorderColor", defaults.get( "Button.focusedBorderColor" ) ); - defaults.put( "HelpButton.hoverBorderColor", defaults.get( "Button.focusedBorderColor" ) ); - - // IDEA uses an SVG icon for the help button, but paints the background with Button.startBackground and Button.endBackground - Object helpButtonBackground = defaults.get( "Button.startBackground" ); - Object helpButtonBorderColor = defaults.get( "Button.startBorderColor" ); - if( helpButtonBackground == null ) - helpButtonBackground = defaults.get( "Button.background" ); - if( helpButtonBorderColor == null ) - helpButtonBorderColor = defaults.get( "Button.borderColor" ); - defaults.put( "HelpButton.background", helpButtonBackground ); - defaults.put( "HelpButton.borderColor", helpButtonBorderColor ); - defaults.put( "HelpButton.disabledBackground", panelBackground ); - defaults.put( "HelpButton.disabledBorderColor", defaults.get( "Button.disabledBorderColor" ) ); - defaults.put( "HelpButton.focusedBorderColor", defaults.get( "Button.focusedBorderColor" ) ); - defaults.put( "HelpButton.focusedBackground", defaults.get( "Button.focusedBackground" ) ); + // fix Button + fixStartEnd( properties, jsonUIKeys, "Button.startBackground", "Button.endBackground", "Button.background" ); + fixStartEnd( properties, jsonUIKeys, "Button.startBorderColor", "Button.endBorderColor", "Button.borderColor" ); + fixStartEnd( properties, jsonUIKeys, "Button.default.startBackground", "Button.default.endBackground", "Button.default.background" ); + fixStartEnd( properties, jsonUIKeys, "Button.default.startBorderColor", "Button.default.endBorderColor", "Button.default.borderColor" ); // IDEA uses TextField.background for editable ComboBox and Spinner - Object textFieldBackground = get( defaults, themeSpecificDefaults, "TextField.background" ); - defaults.put( "ComboBox.editableBackground", textFieldBackground ); - defaults.put( "Spinner.background", textFieldBackground ); - - // Spinner arrow button always has same colors as ComboBox arrow button - defaults.put( "Spinner.buttonBackground", defaults.get( "ComboBox.buttonEditableBackground" ) ); - defaults.put( "Spinner.buttonArrowColor", defaults.get( "ComboBox.buttonArrowColor" ) ); - defaults.put( "Spinner.buttonDisabledArrowColor", defaults.get( "ComboBox.buttonDisabledArrowColor" ) ); + Object textFieldBackground = get( properties, themeSpecificProps, "TextField.background" ); + put( properties, "ComboBox.editableBackground", textFieldBackground ); + put( properties, "Spinner.background", textFieldBackground ); // some themes specify colors for TextField.background, but forget to specify it for other components // (probably because those components are not used in IntelliJ IDEA) - putAll( defaults, textFieldBackground, + putAll( properties, textFieldBackground, "EditorPane.background", "FormattedTextField.background", "PasswordField.background", "TextArea.background", "TextPane.background" ); - putAll( defaults, get( defaults, themeSpecificDefaults, "TextField.selectionBackground" ), + putAll( properties, get( properties, themeSpecificProps, "TextField.selectionBackground" ), "EditorPane.selectionBackground", "FormattedTextField.selectionBackground", "PasswordField.selectionBackground", "TextArea.selectionBackground", "TextPane.selectionBackground" ); - putAll( defaults, get( defaults, themeSpecificDefaults, "TextField.selectionForeground" ), + putAll( properties, get( properties, themeSpecificProps, "TextField.selectionForeground" ), "EditorPane.selectionForeground", "FormattedTextField.selectionForeground", "PasswordField.selectionForeground", @@ -235,7 +224,7 @@ public class IntelliJTheme // fix disabled and not-editable backgrounds for text components, combobox and spinner // (IntelliJ IDEA does not use those colors; instead it used background color of parent) - putAll( defaults, panelBackground, + putAll( properties, "@disabledBackground", "ComboBox.disabledBackground", "EditorPane.disabledBackground", "EditorPane.inactiveBackground", "FormattedTextField.disabledBackground", "FormattedTextField.inactiveBackground", @@ -246,132 +235,148 @@ public class IntelliJTheme "TextPane.disabledBackground", "TextPane.inactiveBackground" ); - // fix ToggleButton - if( !uiKeys.contains( "ToggleButton.startBackground" ) && !uiKeys.contains( "*.startBackground" ) ) - defaults.put( "ToggleButton.startBackground", defaults.get( "Button.startBackground" ) ); - if( !uiKeys.contains( "ToggleButton.endBackground" ) && !uiKeys.contains( "*.endBackground" ) ) - defaults.put( "ToggleButton.endBackground", defaults.get( "Button.endBackground" ) ); - if( !uiKeys.contains( "ToggleButton.foreground" ) && uiKeys.contains( "Button.foreground" ) ) - defaults.put( "ToggleButton.foreground", defaults.get( "Button.foreground" ) ); - // fix DesktopPane background (use Panel.background and make it 5% darker/lighter) - Color desktopBackgroundBase = defaults.getColor( "Panel.background" ); - Color desktopBackground = ColorFunctions.applyFunctions( desktopBackgroundBase, - new ColorFunctions.HSLIncreaseDecrease( 2, dark, 5, false, true ) ); - defaults.put( "Desktop.background", new ColorUIResource( desktopBackground ) ); - - // fix List and Table background colors in Material UI Lite themes - if( isMaterialUILite ) { - defaults.put( "List.background", defaults.get( "Tree.background" ) ); - defaults.put( "Table.background", defaults.get( "Tree.background" ) ); - } + put( properties, "Desktop.background", dark ? "lighten($Panel.background,5%)" : "darken($Panel.background,5%)" ); // limit tree row height - int rowHeight = defaults.getInt( "Tree.rowHeight" ); + String rowHeightStr = (String) properties.get( "Tree.rowHeight" ); + int rowHeight = (rowHeightStr != null) ? Integer.parseInt( rowHeightStr ) : 0; if( rowHeight > 22 ) - defaults.put( "Tree.rowHeight", 22 ); + put( properties, "Tree.rowHeight", "22" ); - // get (and remove) theme specific wildcard replacements, which override all other defaults that end with same suffix - HashMap wildcards = new HashMap<>(); - Iterator> it = themeSpecificDefaults.entrySet().iterator(); + // get (and remove) theme specific wildcard replacements, which override all other properties that end with same suffix + HashMap wildcardProps = new HashMap<>(); + Iterator> it = themeSpecificProps.entrySet().iterator(); while( it.hasNext() ) { - Entry e = it.next(); - String key = (String) e.getKey(); + Map.Entry e = it.next(); + String key = e.getKey(); if( key.startsWith( "*." ) ) { - wildcards.put( key.substring( "*.".length() ), e.getValue() ); + wildcardProps.put( key, e.getValue() ); it.remove(); } } - // override UI defaults with theme specific wildcard replacements - if( !wildcards.isEmpty() ) { - for( Object key : defaults.keySet().toArray() ) { - int dot; - if( !(key instanceof String) || - (dot = ((String)key).lastIndexOf( '.' )) < 0 ) - continue; - - String wildcardKey = ((String)key).substring( dot + 1 ); - Object wildcardValue = wildcards.get( wildcardKey ); - if( wildcardValue != null ) - defaults.put( key, wildcardValue ); - } + // override properties with theme specific wildcard replacements + if( !wildcardProps.isEmpty() ) { + for( Map.Entry e : wildcardProps.entrySet() ) + applyWildcard( properties, e.getKey(), e.getValue() ); } - // apply theme specific UI defaults at the end to allow overwriting - for( Map.Entry e : themeSpecificDefaults.entrySet() ) { - Object key = e.getKey(); - Object value = e.getValue(); + // apply theme specific properties at the end to allow overwriting + for( Map.Entry e : themeSpecificProps.entrySet() ) { + String key = e.getKey(); + String value = e.getValue(); // append styles to existing styles - if( key instanceof String && ((String)key).startsWith( "[style]" ) ) { - Object oldValue = defaults.get( key ); + if( key.startsWith( "[style]" ) ) { + String oldValue = (String) properties.get( key ); if( oldValue != null ) value = oldValue + "; " + value; } - defaults.put( key, value ); + put( properties, key, value ); } // let Java release memory - colors = null; - ui = null; - icons = null; + jsonColors = null; + jsonUI = null; + jsonIcons = null; } - private Object get( UIDefaults defaults, Map themeSpecificDefaults, String key ) { - return themeSpecificDefaults.getOrDefault( key, defaults.get( key ) ); + private String get( Properties properties, Map themeSpecificProps, String key ) { + return themeSpecificProps.getOrDefault( key, (String) properties.get( key ) ); } - private void putAll( UIDefaults defaults, Object value, String... keys ) { + private void put( Properties properties, Object key, Object value ) { + if( value != null ) + properties.put( key, value ); + else + properties.remove( key ); + } + + private void putAll( Properties properties, Object value, String... keys ) { for( String key : keys ) - defaults.put( key, value ); + put( properties, key, value ); } - private Map removeThemeSpecificDefaults( UIDefaults defaults ) { - // search for theme specific UI defaults keys + private void copyIfSetInJson( Properties properties, Set jsonUIKeys, String destKey, String... srcKeys ) { + for( String srcKey : srcKeys ) { + if( jsonUIKeys.contains( srcKey ) ) { + Object value = properties.get( srcKey ); + if( value != null ) { + put( properties, destKey, value ); + break; + } + } + } + } + + private void fixStartEnd( Properties properties, Set jsonUIKeys, String startKey, String endKey, String key ) { + if( jsonUIKeys.contains( startKey ) && jsonUIKeys.contains( endKey ) ) + put( properties, key, "$" + startKey ); + } + + private Map removeThemeSpecificProps( Properties properties ) { + // search for theme specific properties keys ArrayList themeSpecificKeys = new ArrayList<>(); - for( Object key : defaults.keySet() ) { - if( key instanceof String && ((String)key).startsWith( "{" ) ) + for( Object key : properties.keySet() ) { + if( ((String)key).startsWith( "{" ) ) themeSpecificKeys.add( (String) key ); } - // remove theme specific UI defaults and remember only those for current theme - Map themeSpecificDefaults = new HashMap<>(); + // special prefixes (priority from highest to lowest) String currentThemePrefix = '{' + name.replace( ' ', '_' ) + '}'; String currentThemeAndAuthorPrefix = '{' + name.replace( ' ', '_' ) + "---" + author.replace( ' ', '_' ) + '}'; String currentAuthorPrefix = "{author-" + author.replace( ' ', '_' ) + '}'; + String lightOrDarkPrefix = dark ? "{*-dark}" : "{*-light}"; String allThemesPrefix = "{*}"; - String[] prefixes = { currentThemePrefix, currentThemeAndAuthorPrefix, currentAuthorPrefix, allThemesPrefix }; + String[] prefixes = { currentThemePrefix, currentThemeAndAuthorPrefix, currentAuthorPrefix, lightOrDarkPrefix, allThemesPrefix }; + + // collect values for special prefixes in its own maps + @SuppressWarnings( "unchecked" ) + Map[] maps = new Map[prefixes.length]; + for( int i = 0; i < maps.length; i++ ) + maps[i] = new HashMap<>(); + + // remove theme specific properties and remember only those for current theme for( String key : themeSpecificKeys ) { - Object value = defaults.remove( key ); - for( String prefix : prefixes ) { + String value = (String) properties.remove( key ); + for( int i = 0; i < prefixes.length; i++ ) { + String prefix = prefixes[i]; if( key.startsWith( prefix ) ) { - themeSpecificDefaults.put( key.substring( prefix.length() ), value ); + maps[i].put( key.substring( prefix.length() ), value ); break; } } } - return themeSpecificDefaults; + // copy values into single map (from lowest to highest priority) + Map themeSpecificProps = new HashMap<>(); + for( int i = maps.length - 1; i >= 0; i-- ) + themeSpecificProps.putAll( maps[i] ); + return themeSpecificProps; } /** * http://www.jetbrains.org/intellij/sdk/docs/reference_guide/ui_themes/themes_customize.html#defining-named-colors */ - private void loadNamedColors( UIDefaults defaults ) { - if( colors == null ) + private void loadNamedColors( Properties properties, Set jsonUIKeys ) { + if( jsonColors == null ) return; namedColors = new HashMap<>(); - for( Map.Entry e : colors.entrySet() ) { + for( Map.Entry e : jsonColors.entrySet() ) { String value = e.getValue(); - ColorUIResource color = parseColor( value ); - if( color != null ) { + if( canParseColor( value ) ) { String key = e.getKey(); - namedColors.put( key, color ); - defaults.put( "ColorPalette." + key, color ); + namedColors.put( key, value ); + + String uiKey = "ColorPalette." + key; + put( properties, uiKey, value ); + + // this is only necessary for copyIfSetInJson() (used for accent color) + jsonUIKeys.add( uiKey ); } } } @@ -380,7 +385,7 @@ public class IntelliJTheme * http://www.jetbrains.org/intellij/sdk/docs/reference_guide/ui_themes/themes_customize.html#custom-ui-control-colors */ @SuppressWarnings( "unchecked" ) - private void apply( String key, Object value, UIDefaults defaults, ArrayList defaultsKeysCache, Set uiKeys ) { + private void apply( String key, Object value, Properties properties, Set jsonUIKeys ) { if( value instanceof Map ) { Map map = (Map)value; if( map.containsKey( "os.default" ) || map.containsKey( "os.windows" ) || map.containsKey( "os.mac" ) || map.containsKey( "os.linux" ) ) { @@ -388,12 +393,12 @@ public class IntelliJTheme : SystemInfo.isMacOS ? "os.mac" : SystemInfo.isLinux ? "os.linux" : null; if( osKey != null && map.containsKey( osKey ) ) - apply( key, map.get( osKey ), defaults, defaultsKeysCache, uiKeys ); + apply( key, map.get( osKey ), properties, jsonUIKeys ); else if( map.containsKey( "os.default" ) ) - apply( key, map.get( "os.default" ), defaults, defaultsKeysCache, uiKeys ); + apply( key, map.get( "os.default" ), properties, jsonUIKeys ); } else { for( Map.Entry e : map.entrySet() ) - apply( key + '.' + e.getKey(), e.getValue(), defaults, defaultsKeysCache, uiKeys ); + apply( key + '.' + e.getKey(), e.getValue(), properties, jsonUIKeys ); } } else { if( "".equals( value ) ) @@ -418,15 +423,15 @@ public class IntelliJTheme if( dot > 0 && uiKeyExcludes.contains( key.substring( 0, dot + 1 ) ) ) return; - if( uiKeyDoNotOverride.contains( key ) && uiKeys.contains( key ) ) + if( uiKeyDoNotOverride.contains( key ) && jsonUIKeys.contains( key ) ) return; - uiKeys.add( key ); + jsonUIKeys.add( key ); String valueStr = value.toString(); // map named colors - Object uiValue = namedColors.get( valueStr ); + String uiValue = namedColors.get( valueStr ); // parse value if( uiValue == null ) { @@ -445,47 +450,64 @@ public class IntelliJTheme // parse value try { - uiValue = UIDefaultsLoader.parseValue( key, valueStr, null ); + UIDefaultsLoader.parseValue( key, valueStr, null ); + uiValue = valueStr; } catch( RuntimeException ex ) { - UIDefaultsLoader.logParseError( key, valueStr, ex, false ); + UIDefaultsLoader.logParseError( key, valueStr, ex, true ); return; // ignore invalid value } } - if( key.startsWith( "*." ) ) { - // wildcard - String tail = key.substring( 1 ); + // wildcards + if( applyWildcard( properties, key, uiValue ) ) + return; - // because we can not iterate over the UI defaults keys while - // modifying UI defaults in the same loop, we have to copy the keys - if( defaultsKeysCache.size() != defaults.size() ) { - defaultsKeysCache.clear(); - Enumeration e = defaults.keys(); - while( e.hasMoreElements() ) - defaultsKeysCache.add( e.nextElement() ); - } - - // replace all values in UI defaults that match the wildcard key - for( Object k : defaultsKeysCache ) { - if( k.equals( "Desktop.background" ) || - k.equals( "DesktopIcon.background" ) || - k.equals( "TabbedPane.focusColor" ) ) - continue; - - if( k instanceof String ) { - // support replacing of mapped keys - // (e.g. set ComboBox.buttonEditableBackground to *.background - // because it is mapped from ComboBox.ArrowButton.background) - String km = uiKeyInverseMapping.getOrDefault( k, (String) k ); - if( km.endsWith( tail ) && !((String)k).startsWith( "CheckBox.icon." ) ) - defaults.put( k, uiValue ); - } - } - } else - defaults.put( key, uiValue ); + put( properties, key, uiValue ); } } + private boolean applyWildcard( Properties properties, String key, String value ) { + if( !key.startsWith( "*." ) ) + return false; + + String tail = key.substring( 1 ); + + // because we can not iterate over the properties keys while + // modifying properties in the same loop, we have to copy the keys + String[] keys = properties.keySet().toArray( new String[properties.size()] ); + + // replace all values in properties that match the wildcard key + for( String k : keys ) { + if( k.startsWith( "*" ) || + k.startsWith( "@" ) || + k.startsWith( "HelpButton." ) || + k.startsWith( "JX" ) || + k.startsWith( "Jide" ) || + k.startsWith( "ProgressBar.selection" ) || + k.startsWith( "TitlePane." ) || + k.startsWith( "ToggleButton.tab." ) || + k.equals( "Desktop.background" ) || + k.equals( "DesktopIcon.background" ) || + k.equals( "TabbedPane.focusColor" ) || + k.endsWith( ".hoverBackground" ) || + k.endsWith( ".pressedBackground" ) ) + continue; + + // support replacing of mapped keys + // (e.g. set ComboBox.buttonEditableBackground to *.background + // because it is mapped from ComboBox.ArrowButton.background) + String km = uiKeyInverseMapping.getOrDefault( k, k ); + if( km.endsWith( tail ) && !k.startsWith( "CheckBox.icon." ) ) + put( properties, k, value ); + } + + // Note: also add wildcards to properties and let UIDefaultsLoader + // process it on BasicLookAndFeel UI defaults + put( properties, key, value ); + + return true; + } + private String fixColorIfValid( String newColorStr, String colorStr ) { try { // check whether it is valid @@ -497,11 +519,11 @@ public class IntelliJTheme } } - private void applyColorPalette( UIDefaults defaults ) { - if( icons == null ) + private void applyIconsColorPalette( Properties properties ) { + if( jsonIcons == null ) return; - Object palette = icons.get( "ColorPalette" ); + Object palette = jsonIcons.get( "ColorPalette" ); if( !(palette instanceof Map) ) return; @@ -510,44 +532,48 @@ public class IntelliJTheme for( Map.Entry e : colorPalette.entrySet() ) { String key = e.getKey(); Object value = e.getValue(); - if( key.startsWith( "Checkbox." ) || !(value instanceof String) ) + if( key.startsWith( "Checkbox." ) || key.startsWith( "#" ) || !(value instanceof String) ) continue; if( dark ) key = StringUtils.removeTrailing( key, ".Dark" ); - ColorUIResource color = toColor( (String) value ); + String color = toColor( (String) value ); if( color != null ) - defaults.put( key, color ); + put( properties, key, color ); } } - private ColorUIResource toColor( String value ) { + private String toColor( String value ) { + if( value.startsWith( "##" ) ) + value = fixColorIfValid( value.substring( 1 ), value ); + // map named colors - ColorUIResource color = namedColors.get( value ); + String color = namedColors.get( value ); // parse color - return (color != null) ? color : parseColor( value ); + return (color != null) ? color : (canParseColor( value ) ? value : null); } - private ColorUIResource parseColor( String value ) { + private boolean canParseColor( String value ) { try { - return UIDefaultsLoader.parseColor( value ); + return UIDefaultsLoader.parseColor( value ) != null; } catch( IllegalArgumentException ex ) { - return null; + LoggingFacade.INSTANCE.logSevere( "FlatLaf: Failed to parse color: '" + value + '\'', ex ); + return false; } } /** * Because IDEA uses SVGs for check boxes and radio buttons, the colors for * these two components are specified in "icons > ColorPalette". - * FlatLaf uses vector icons and expects colors for the two components in UI defaults. + * FlatLaf uses vector icons and expects colors for the two components in properties. */ - private void applyCheckBoxColors( UIDefaults defaults ) { - if( icons == null ) + private void applyCheckBoxColors( Properties properties ) { + if( jsonIcons == null ) return; - Object palette = icons.get( "ColorPalette" ); + Object palette = jsonIcons.get( "ColorPalette" ); if( !(palette instanceof Map) ) return; @@ -569,9 +595,9 @@ public class IntelliJTheme if( !dark && newKey.startsWith( checkBoxIconPrefix ) ) newKey = "CheckBox.icon[filled].".concat( newKey.substring( checkBoxIconPrefix.length() ) ); - ColorUIResource color = toColor( (String) value ); + String color = toColor( (String) value ); if( color != null ) { - defaults.put( newKey, color ); + put( properties, newKey, color ); String key2 = checkboxDuplicateColors.get( key + ".Dark"); if( key2 != null ) { @@ -592,7 +618,7 @@ public class IntelliJTheme String newKey2 = checkboxKeyMapping.get( key2 ); if( newKey2 != null ) - defaults.put( newKey2, color ); + put( properties, newKey2, color ); } } @@ -603,13 +629,13 @@ public class IntelliJTheme // update hover, pressed and focused colors if( checkboxModified ) { // for non-filled checkbox/radiobutton used in dark themes - defaults.remove( "CheckBox.icon.focusWidth" ); - defaults.put( "CheckBox.icon.hoverBorderColor", defaults.get( "CheckBox.icon.focusedBorderColor" ) ); + properties.remove( "CheckBox.icon.focusWidth" ); + put( properties, "CheckBox.icon.hoverBorderColor", properties.get( "CheckBox.icon.focusedBorderColor" ) ); // for filled checkbox/radiobutton used in light themes - defaults.remove( "CheckBox.icon[filled].focusWidth" ); - defaults.put( "CheckBox.icon[filled].hoverBorderColor", defaults.get( "CheckBox.icon[filled].focusedBorderColor" ) ); - defaults.put( "CheckBox.icon[filled].focusedSelectedBackground", defaults.get( "CheckBox.icon[filled].selectedBackground" ) ); + properties.remove( "CheckBox.icon[filled].focusWidth" ); + put( properties, "CheckBox.icon[filled].hoverBorderColor", properties.get( "CheckBox.icon[filled].focusedBorderColor" ) ); + put( properties, "CheckBox.icon[filled].focusedSelectedBackground", properties.get( "CheckBox.icon[filled].selectedBackground" ) ); if( dark ) { // IDEA Darcula checkBoxFocused.svg, checkBoxSelectedFocused.svg, @@ -623,21 +649,14 @@ public class IntelliJTheme "CheckBox.icon[filled].focusedSelectedBorderColor", }; for( String key : focusedBorderColorKeys ) { - Color color = defaults.getColor( key ); - if( color != null ) { - defaults.put( key, new ColorUIResource( new Color( - (color.getRGB() & 0xffffff) | 0xa6000000, true ) ) ); - } + Object color = properties.get( key ); + if( color != null ) + put( properties, key, "fade(" + color + ", 65%)" ); } } } } - private void copyIfNotSet( UIDefaults defaults, String destKey, String srcKey, Set uiKeys ) { - if( !uiKeys.contains( destKey ) ) - defaults.put( destKey, defaults.get( srcKey ) ); - } - private static final Set uiKeyExcludes; private static final Set uiKeyDoNotOverride; /** Rename UI default keys (key --> value). */ @@ -653,26 +672,26 @@ public class IntelliJTheme uiKeyExcludes = new HashSet<>( Arrays.asList( "ActionButton.", "ActionToolbar.", "ActionsList.", "AppInspector.", "AssignedMnemonic.", "Autocomplete.", "AvailableMnemonic.", - "Badge.", "BigSpinner.", "Bookmark.", "BookmarkIcon.", "BookmarkMnemonicAssigned.", "BookmarkMnemonicAvailable.", + "Badge.", "Banner.", "BigSpinner.", "Bookmark.", "BookmarkIcon.", "BookmarkMnemonicAssigned.", "BookmarkMnemonicAvailable.", "BookmarkMnemonicCurrent.", "BookmarkMnemonicIcon.", "Borders.", "Breakpoint.", - "Canvas.", "Code.", "CodeWithMe.", "CombinedDiff.", "ComboBoxButton.", "CompilationCharts.", - "CompletionPopup.", "ComplexPopup.", "Content.", "ContextHelp.", "CurrentMnemonic.", "Counter.", + "Canvas.", "CellEditor.", "Code.", "CodeWithMe.", "ColumnControlButton.", "CombinedDiff.", "ComboBoxButton.", + "CompilationCharts.", "CompletionPopup.", "ComplexPopup.", "Content.", "ContextHelp.", "CurrentMnemonic.", "Counter.", "Debugger.", "DebuggerPopup.", "DebuggerTabs.", "DefaultTabs.", "Dialog.", "DialogWrapper.", "DisclosureButton.", "DragAndDrop.", "Editor.", "EditorGroupsTabs.", "EditorTabs.", - "FileColor.", "FlameGraph.", "Focus.", + "FileColor.", "FindPopup.", "FlameGraph.", "Focus.", "Git.", "Github.", "GotItTooltip.", "Group.", "Gutter.", "GutterTooltip.", "HeaderColor.", "HelpTooltip.", "Hg.", - "IconBadge.", "InformationHint.", "InplaceRefactoringPopup.", + "IconBadge.", "InformationHint.", "InlineBanner.", "InplaceRefactoringPopup.", "Lesson.", "LineProfiler.", "Link.", "LiveIndicator.", - "MainMenu.", "MainToolbar.", "MemoryIndicator.", "MlModelBinding.", "MnemonicIcon.", + "MainMenu.", "MainToolbar.", "MainWindow.", "MemoryIndicator.", "MlModelBinding.", "MnemonicIcon.", "NavBar.", "NewClass.", "NewPSD.", "Notification.", "Notifications.", "NotificationsToolwindow.", "OnePixelDivider.", "OptionButton.", "Outline.", - "ParameterInfo.", "Plugins.", "Profiler.", "ProgressIcon.", "PsiViewer.", - "ReviewList.", "RunWidget.", + "ParameterInfo.", "PresentationAssistant.", "Plugins.", "Profiler.", "ProgressIcon.", "PsiViewer.", + "Resizable.", "Review.", "ReviewList.", "RunToolbar.", "RunWidget.", "ScreenView.", "SearchEverywhere.", "SearchFieldWithExtension.", "SearchMatch.", "SearchOption.", "SearchResults.", "SegmentedButton.", "Settings.", "SidePanel.", "Space.", "SpeedSearch.", "StateWidget.", - "StatusBar.", + "StatusBar.", "StripeToolbar.", "Tag.", "TipOfTheDay.", "ToolbarComboWidget.", "ToolWindow.", "TrialWidget.", "UIDesigner.", "UnattendedHostStatus.", "ValidationTooltip.", "VersionControl.", @@ -689,6 +708,9 @@ public class IntelliJTheme "TabbedPane.selectedForeground" ) ); + // Button + uiKeyMapping.put( "Button.minimumSize", "" ); // ignore (used in Material Theme UI Lite) + // ComboBox uiKeyMapping.put( "ComboBox.background", "" ); // ignore uiKeyMapping.put( "ComboBox.buttonBackground", "" ); // ignore @@ -697,8 +719,6 @@ public class IntelliJTheme uiKeyMapping.put( "ComboBox.ArrowButton.disabledIconColor", "ComboBox.buttonDisabledArrowColor" ); uiKeyMapping.put( "ComboBox.ArrowButton.iconColor", "ComboBox.buttonArrowColor" ); uiKeyMapping.put( "ComboBox.ArrowButton.nonEditableBackground", "ComboBox.buttonBackground" ); - uiKeyCopying.put( "ComboBox.buttonSeparatorColor", "Component.borderColor" ); - uiKeyCopying.put( "ComboBox.buttonDisabledSeparatorColor", "Component.disabledBorderColor" ); // Component uiKeyMapping.put( "Component.inactiveErrorFocusColor", "Component.error.borderColor" ); @@ -706,16 +726,16 @@ public class IntelliJTheme uiKeyMapping.put( "Component.inactiveWarningFocusColor", "Component.warning.borderColor" ); uiKeyMapping.put( "Component.warningFocusColor", "Component.warning.focusedBorderColor" ); + // Label + uiKeyMapping.put( "Label.disabledForegroundColor", "" ); // ignore (used in Material Theme UI Lite) + // Link uiKeyMapping.put( "Link.activeForeground", "Component.linkColor" ); // Menu uiKeyMapping.put( "Menu.border", "Menu.margin" ); uiKeyMapping.put( "MenuItem.border", "MenuItem.margin" ); - uiKeyCopying.put( "CheckBoxMenuItem.margin", "MenuItem.margin" ); - uiKeyCopying.put( "RadioButtonMenuItem.margin", "MenuItem.margin" ); uiKeyMapping.put( "PopupMenu.border", "PopupMenu.borderInsets" ); - uiKeyCopying.put( "MenuItem.underlineSelectionColor", "TabbedPane.underlineColor" ); // IDEA uses List.selectionBackground also for menu selection uiKeyCopying.put( "Menu.selectionBackground", "List.selectionBackground" ); @@ -723,13 +743,11 @@ public class IntelliJTheme uiKeyCopying.put( "CheckBoxMenuItem.selectionBackground", "List.selectionBackground" ); uiKeyCopying.put( "RadioButtonMenuItem.selectionBackground", "List.selectionBackground" ); - // ProgressBar + // ProgressBar: IDEA uses ProgressBar.trackColor and ProgressBar.progressColor uiKeyMapping.put( "ProgressBar.background", "" ); // ignore uiKeyMapping.put( "ProgressBar.foreground", "" ); // ignore uiKeyMapping.put( "ProgressBar.trackColor", "ProgressBar.background" ); uiKeyMapping.put( "ProgressBar.progressColor", "ProgressBar.foreground" ); - uiKeyCopying.put( "ProgressBar.selectionForeground", "ProgressBar.background" ); - uiKeyCopying.put( "ProgressBar.selectionBackground", "ProgressBar.foreground" ); // ScrollBar uiKeyMapping.put( "ScrollBar.trackColor", "ScrollBar.track" ); @@ -739,34 +757,30 @@ public class IntelliJTheme uiKeyMapping.put( "Separator.separatorColor", "Separator.foreground" ); // Slider + uiKeyMapping.put( "Slider.buttonColor", "Slider.thumbColor" ); + uiKeyMapping.put( "Slider.buttonBorderColor", "" ); // ignore + uiKeyMapping.put( "Slider.thumb", "" ); // ignore (used in Material Theme UI Lite) + uiKeyMapping.put( "Slider.track", "" ); // ignore (used in Material Theme UI Lite) + uiKeyMapping.put( "Slider.trackDisabled", "" ); // ignore (used in Material Theme UI Lite) uiKeyMapping.put( "Slider.trackWidth", "" ); // ignore (used in Material Theme UI Lite) - uiKeyCopying.put( "Slider.trackValueColor", "ProgressBar.foreground" ); - uiKeyCopying.put( "Slider.thumbColor", "ProgressBar.foreground" ); - uiKeyCopying.put( "Slider.trackColor", "ProgressBar.background" ); - - // Spinner - uiKeyCopying.put( "Spinner.buttonSeparatorColor", "Component.borderColor" ); - uiKeyCopying.put( "Spinner.buttonDisabledSeparatorColor", "Component.disabledBorderColor" ); // TabbedPane uiKeyMapping.put( "DefaultTabs.underlinedTabBackground", "TabbedPane.selectedBackground" ); uiKeyMapping.put( "DefaultTabs.underlinedTabForeground", "TabbedPane.selectedForeground" ); uiKeyMapping.put( "DefaultTabs.inactiveUnderlineColor", "TabbedPane.inactiveUnderlineColor" ); + uiKeyMapping.put( "TabbedPane.tabAreaInsets", "" ); // ignore (used in Material Theme UI Lite) + + // TableHeader + uiKeyMapping.put( "TableHeader.cellBorder", "" ); // ignore (used in Material Theme UI Lite) + uiKeyMapping.put( "TableHeader.height", "" ); // ignore (used in Material Theme UI Lite) // TitlePane - uiKeyCopying.put( "TitlePane.inactiveBackground", "TitlePane.background" ); uiKeyMapping.put( "TitlePane.infoForeground", "TitlePane.foreground" ); uiKeyMapping.put( "TitlePane.inactiveInfoForeground", "TitlePane.inactiveForeground" ); for( Map.Entry e : uiKeyMapping.entrySet() ) uiKeyInverseMapping.put( e.getValue(), e.getKey() ); - uiKeyCopying.put( "ToggleButton.tab.underlineColor", "TabbedPane.underlineColor" ); - uiKeyCopying.put( "ToggleButton.tab.disabledUnderlineColor", "TabbedPane.disabledUnderlineColor" ); - uiKeyCopying.put( "ToggleButton.tab.selectedBackground", "TabbedPane.selectedBackground" ); - uiKeyCopying.put( "ToggleButton.tab.hoverBackground", "TabbedPane.hoverColor" ); - uiKeyCopying.put( "ToggleButton.tab.focusBackground", "TabbedPane.focusColor" ); - checkboxKeyMapping.put( "Checkbox.Background.Default", "CheckBox.icon.background" ); checkboxKeyMapping.put( "Checkbox.Background.Disabled", "CheckBox.icon.disabledBackground" ); checkboxKeyMapping.put( "Checkbox.Border.Default", "CheckBox.icon.borderColor" ); @@ -819,17 +833,15 @@ public class IntelliJTheme } @Override - void applyAdditionalDefaults( UIDefaults defaults ) { - theme.applyProperties( defaults ); + void applyAdditionalProperties( Properties properties ) { + theme.applyProperties( properties ); } @Override protected ArrayList> getLafClassesForDefaultsLoading() { - ArrayList> lafClasses = new ArrayList<>(); - lafClasses.add( FlatLaf.class ); - lafClasses.add( theme.dark ? FlatDarkLaf.class : FlatLightLaf.class ); - lafClasses.add( theme.dark ? FlatDarculaLaf.class : FlatIntelliJLaf.class ); - lafClasses.add( ThemeLaf.class ); + ArrayList> lafClasses = UIDefaultsLoader.getLafClassesForDefaultsLoading( getClass() ); + lafClasses.add( 1, theme.dark ? FlatDarkLaf.class : FlatLightLaf.class ); + lafClasses.add( 2, theme.dark ? FlatDarculaLaf.class : FlatIntelliJLaf.class ); return lafClasses; } } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java index 4c3f42ea..6ab832cc 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java @@ -41,6 +41,7 @@ import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; +import java.util.function.Consumer; import java.util.function.Function; import javax.swing.Icon; import javax.swing.UIDefaults; @@ -85,15 +86,14 @@ class UIDefaultsLoader private static final String WILDCARD_PREFIX = "*."; static final String KEY_VARIABLES = "FlatLaf.internal.variables"; + static final String KEY_PROPERTIES = "FlatLaf.internal.properties"; private static int parseColorDepth; private static Map systemColorCache; private static final SoftCache fontCache = new SoftCache<>(); - static void loadDefaultsFromProperties( Class lookAndFeelClass, List addons, - Properties additionalDefaults, boolean dark, UIDefaults defaults ) - { + static ArrayList> getLafClassesForDefaultsLoading( Class lookAndFeelClass ) { // determine classes in class hierarchy in reverse order ArrayList> lafClasses = new ArrayList<>(); for( Class lafClass = lookAndFeelClass; @@ -102,12 +102,11 @@ class UIDefaultsLoader { lafClasses.add( 0, lafClass ); } - - loadDefaultsFromProperties( lafClasses, addons, additionalDefaults, dark, defaults ); + return lafClasses; } static void loadDefaultsFromProperties( List> lafClasses, List addons, - Properties additionalDefaults, boolean dark, UIDefaults defaults ) + Consumer intellijThemesHook, Properties additionalDefaults, boolean dark, UIDefaults defaults ) { try { // temporary cache system colors while loading defaults, @@ -142,6 +141,10 @@ class UIDefaultsLoader addonClassLoaders.add( addonClassLoader ); } + // apply IntelliJ themes properties + if( intellijThemesHook != null ) + intellijThemesHook.accept( properties ); + // load custom properties files (usually provided by applications) List customDefaultsSources = FlatLaf.getCustomDefaultsSources(); int size = (customDefaultsSources != null) ? customDefaultsSources.size() : 0; @@ -287,6 +290,15 @@ class UIDefaultsLoader // remember variables in defaults to allow using them in styles defaults.put( KEY_VARIABLES, variables ); + // remember properties (for testing) + if( FlatSystemProperties.getBoolean( KEY_PROPERTIES, false ) ) { + Properties properties2 = new Properties(); + properties2.putAll( properties ); + for( Map.Entry e : wildcards.entrySet() ) + properties2.put( WILDCARD_PREFIX + e.getKey(), e.getValue() ); + defaults.put( KEY_PROPERTIES, properties2 ); + } + // clear/disable system color cache systemColorCache = null; } catch( IOException ex ) { diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties index 07d6a181..331fe64c 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties @@ -61,7 +61,6 @@ Component.arrowType = triangle #---- ProgressBar ---- ProgressBar.foreground = darken(@foreground,10%) -ProgressBar.selectionForeground = @background #---- RadioButton ---- diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties index 6ece7ce2..d10d034f 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties @@ -21,27 +21,41 @@ # - https://www.formdev.com/flatlaf/properties-files/ # - https://www.formdev.com/flatlaf/how-to-customize/ # +# Properties in this file are applied in following order: +# 1. properties without '{...}' and without '[...]' prefix +# 2. properties specified in .theme.json file +# 3. properties starting with '{*}' +# 4. properties starting with '{*-light}' or '{*-dark}' +# 5. properties starting with '{author-}', +# where '' is replaced with "author" value from .theme.json file +# 6. properties starting with '{---}', +# where '' and '' are replaced with "name" and "author" values from .theme.json file +# 7. properties starting with '{}', +# where '' is replaced with "name" value from .theme.json file +# 8. properties with '[...]' prefix +# + #---- system colors ---- # fix (most) system colors because they are usually not set in .json files -desktop = lazy(TextField.background) -activeCaptionText = lazy(TextField.foreground) -inactiveCaptionText = lazy(TextField.foreground) -window = lazy(Panel.background) -windowBorder = lazy(TextField.foreground) -windowText = lazy(TextField.foreground) -menu = lazy(Menu.background) -menuText = lazy(Menu.foreground) -text = lazy(TextField.background) -textText = lazy(TextField.foreground) -textHighlight = lazy(TextField.selectionBackground) -textHighlightText = lazy(TextField.selectionForeground) -textInactiveText = lazy(TextField.inactiveForeground) -control = lazy(Panel.background) -controlText = lazy(TextField.foreground) -info = lazy(ToolTip.background) -infoText = lazy(ToolTip.foreground) +desktop = $TextField.background +activeCaptionText = $TextField.foreground +inactiveCaptionText = $TextField.foreground +window = $Panel.background +windowBorder = $TextField.foreground +windowText = $TextField.foreground +menu = $Menu.background +menuText = $Menu.foreground +text = $TextField.background +textText = $TextField.foreground +textHighlight = $TextField.selectionBackground +textHighlightText = $TextField.selectionForeground +textInactiveText = $TextField.inactiveForeground +control = $Panel.background +controlText = $TextField.foreground +info = $ToolTip.background +infoText = $ToolTip.foreground #---- variables ---- @@ -49,26 +63,13 @@ infoText = lazy(ToolTip.foreground) # make sure that accent color (set via FlatLaf.setSystemColorGetter()) is ignored @accentColor = null +# use same accent color for checkmark, slider, tab underline, etc. +@accentBase2Color = @accentBaseColor + # use fixed color because it is used in borders @cellFocusColor = #222 -#---- Button ---- - -Button.startBackground = $Button.background -Button.endBackground = $Button.background -Button.startBorderColor = $Button.borderColor -Button.endBorderColor = $Button.borderColor - -Button.default.startBackground = $Button.default.background -Button.default.endBackground = $Button.default.background -Button.default.startBorderColor = $Button.default.borderColor -Button.default.endBorderColor = $Button.default.borderColor - -Button.hoverBorderColor = null -Button.default.hoverBorderColor = null - - #---- CheckBoxMenuItem ---- # colors from intellij/checkmark.svg and darcula/checkmark.svg @@ -76,19 +77,19 @@ Button.default.hoverBorderColor = null [dark]CheckBoxMenuItem.icon.checkmarkColor=#fff9 -#---- Component ---- - -Component.accentColor = lazy(ProgressBar.foreground) - - -#---- HelpButton ---- - -HelpButton.hoverBorderColor = null - - #---- Slider ---- -Slider.focusedColor = fade($Component.focusColor,40%,derived) +# this "reverses" definition in FlatLightLaf/FlatDarkLaf.properties +Slider.trackValueColor = $Slider.thumbColor +Slider.thumbColor = @accentSliderColor + + +#---- Spinner ---- + +# Spinner arrow button always has same colors as ComboBox arrow button +Spinner.buttonBackground = $ComboBox.buttonEditableBackground +Spinner.buttonArrowColor = $ComboBox.buttonArrowColor +Spinner.buttonDisabledArrowColor = $ComboBox.buttonDisabledArrowColor #---- TabbedPane ---- @@ -100,10 +101,9 @@ Slider.focusedColor = fade($Component.focusColor,40%,derived) #---- ToggleButton ---- -ToggleButton.startBackground = $ToggleButton.background -ToggleButton.endBackground = $ToggleButton.background -[dark]ToggleButton.selectedBackground = lighten($ToggleButton.background,15%,derived) -[dark]ToggleButton.disabledSelectedBackground = lighten($ToggleButton.background,5%,derived) +{*}ToggleButton.background = $Button.background +{*-dark}ToggleButton.selectedBackground = lighten($ToggleButton.background,15%,derived) +{*-dark}ToggleButton.disabledSelectedBackground = lighten($ToggleButton.background,5%,derived) #---- theme specific ---- @@ -112,343 +112,434 @@ ToggleButton.endBackground = $ToggleButton.background @ijMenuCheckBackgroundL20 = lighten(@selectionBackground,20%,derived noAutoInverse) @ijMenuCheckBackgroundD10 = darken(@selectionBackground,10%,derived noAutoInverse) -@ijTextBackgroundL3 = lighten(Panel.background,3%,lazy) -@ijTextBackgroundL4 = lighten(Panel.background,4%,lazy) +@ijSeparatorLight = shade(@background,15%) +@ijSeparatorDark = tint(@background,25%) -{Arc_Theme}CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) -{Arc_Theme}PopupMenu.foreground = lazy(MenuItem.foreground) -{Arc_Theme}RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) -{Arc_Theme}ProgressBar.selectionBackground = #000 -{Arc_Theme}ProgressBar.selectionForeground = #fff -{Arc_Theme}List.selectionInactiveForeground = #fff -{Arc_Theme}Table.selectionInactiveForeground = #fff -{Arc_Theme}Tree.selectionInactiveForeground = #fff +@ijTextBackgroundL3 = lighten($Panel.background,3%) +@ijTextBackgroundL4 = lighten($Panel.background,4%) -{Arc_Theme_-_Orange}CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) -{Arc_Theme_-_Orange}PopupMenu.foreground = lazy(MenuItem.foreground) -{Arc_Theme_-_Orange}RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) -{Arc_Theme_-_Orange}ProgressBar.selectionBackground = #000 -{Arc_Theme_-_Orange}ProgressBar.selectionForeground = #fff -{Arc_Theme_-_Orange}List.selectionInactiveForeground = #fff -{Arc_Theme_-_Orange}Table.selectionInactiveForeground = #fff -{Arc_Theme_-_Orange}Tree.selectionInactiveForeground = #fff +{Arc_Theme}@selectionInactiveForeground = @selectionForeground +{Arc_Theme}CheckBoxMenuItem.foreground = $MenuItem.foreground +{Arc_Theme}PopupMenu.foreground = $MenuItem.foreground +{Arc_Theme}RadioButtonMenuItem.foreground = $MenuItem.foreground -{Arc_Theme_Dark}CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) -{Arc_Theme_Dark}PopupMenu.foreground = lazy(MenuItem.foreground) -{Arc_Theme_Dark}RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) -{Arc_Theme_Dark}ProgressBar.selectionBackground = #ddd -{Arc_Theme_Dark}ProgressBar.selectionForeground = #ddd -{Arc_Theme_Dark}ToolBar.separatorColor = lazy(Separator.foreground) +{Arc_Theme_-_Orange}@selectionInactiveForeground = @selectionForeground +{Arc_Theme_-_Orange}CheckBoxMenuItem.foreground = $MenuItem.foreground +{Arc_Theme_-_Orange}PopupMenu.foreground = $MenuItem.foreground +{Arc_Theme_-_Orange}RadioButtonMenuItem.foreground = $MenuItem.foreground -{Arc_Theme_Dark_-_Orange}CheckBoxMenuItem.foreground = lazy(MenuItem.foreground) -{Arc_Theme_Dark_-_Orange}PopupMenu.foreground = lazy(MenuItem.foreground) -{Arc_Theme_Dark_-_Orange}RadioButtonMenuItem.foreground = lazy(MenuItem.foreground) -{Arc_Theme_Dark_-_Orange}ProgressBar.selectionBackground = #ddd +{Arc_Theme_Dark}CheckBoxMenuItem.foreground = $MenuItem.foreground +{Arc_Theme_Dark}PopupMenu.foreground = $MenuItem.foreground +{Arc_Theme_Dark}RadioButtonMenuItem.foreground = $MenuItem.foreground +{Arc_Theme_Dark}ToolBar.background = @background + +{Arc_Theme_Dark_-_Orange}CheckBoxMenuItem.foreground = $MenuItem.foreground +{Arc_Theme_Dark_-_Orange}PopupMenu.foreground = $MenuItem.foreground {Arc_Theme_Dark_-_Orange}ProgressBar.selectionForeground = #fff -{Arc_Theme_Dark_-_Orange}ToolBar.separatorColor = lazy(Separator.foreground) +{Arc_Theme_Dark_-_Orange}RadioButtonMenuItem.foreground = $MenuItem.foreground +{Arc_Theme_Dark_-_Orange}ToolBar.background = @background -{Carbon}Table.selectionBackground = lazy(List.selectionBackground) -{Carbon}Table.selectionInactiveForeground = lazy(List.selectionInactiveForeground) +{Carbon}Separator.foreground = @ijSeparatorDark +{Carbon}ToolBar.separatorColor = $Separator.foreground +{Carbon}Table.selectionBackground = $List.selectionBackground {Carbon}TextField.background = @ijTextBackgroundL4 -{Cobalt_2}Component.accentColor = lazy(Component.focusColor) -{Cobalt_2}CheckBox.icon.background = #002946 -{Cobalt_2}CheckBox.icon.checkmarkColor = #002946 +{Cobalt_2}@accentBaseColor = $ColorPalette.hue3 +{Cobalt_2}CheckBox.icon.background = @background {Cobalt_2}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 {Cobalt_2}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 {Cobalt_2}ComboBox.background = @ijTextBackgroundL3 -{Cobalt_2}ComboBox.buttonBackground = @ijTextBackgroundL3 +{Cobalt_2}Slider.thumbColor = $ProgressBar.foreground +{Cobalt_2}Slider.disabledTrackColor = $Separator.foreground {Cobalt_2}TextField.background = @ijTextBackgroundL3 -{Cobalt_2}Table.background = lazy(List.background) -{Cobalt_2}Tree.background = lazy(List.background) +{Cobalt_2}Table.background = $List.background +{Cobalt_2}Tree.background = $List.background +{Cyan_light}@disabledForeground = tint(@foreground,30%) +{Cyan_light}*.disabledText = @disabledForeground +{Cyan_light}*.disabledForeground = @disabledForeground +{Cyan_light}*.inactiveForeground = @disabledForeground +{Cyan_light}Button.background = @buttonBackground {Cyan_light}MenuItem.checkBackground = @ijMenuCheckBackgroundL20 {Cyan_light}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL20 -{Dark_Flat_Theme}*.inactiveForeground = #808080 -{Dark_Flat_Theme}Component.accentColor = lazy(List.selectionBackground) +{Dark_Flat_Theme}@accentBaseColor = $TabbedPane.underlineColor +{Dark_Flat_Theme}@disabledForeground = #808080 +{Dark_Flat_Theme}*.disabledText = @disabledForeground +{Dark_Flat_Theme}*.disabledForeground = @disabledForeground +{Dark_Flat_Theme}*.inactiveForeground = @disabledForeground {Dark_Flat_Theme}TableHeader.background = #3B3B3B -{Dark_Flat_Theme}TextPane.foreground = lazy(TextField.foreground) -{Dark_Flat_Theme}CheckBoxMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) -{Dark_Flat_Theme}List.selectionForeground = lazy(Tree.selectionForeground) -{Dark_Flat_Theme}RadioButtonMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) -{Dark_Flat_Theme}Separator.foreground = lazy(ToolBar.separatorColor) +{Dark_Flat_Theme}CheckBoxMenuItem.selectionForeground = $MenuItem.selectionForeground +{Dark_Flat_Theme}ComboBox.background = $TextField.background +{Dark_Flat_Theme}ComboBox.buttonBackground = $ComboBox.background +{Dark_Flat_Theme}List.selectionForeground = $Tree.selectionForeground +{Dark_Flat_Theme}ProgressBar.selectionForeground = @foreground +{Dark_Flat_Theme}RadioButtonMenuItem.selectionForeground = $MenuItem.selectionForeground +{Dark_Flat_Theme}Separator.foreground = @ijSeparatorDark +{Dark_Flat_Theme}Slider.trackColor = $ProgressBar.background +{Dark_Flat_Theme}Slider.thumbColor = fade($ProgressBar.foreground,100%) +{Dark_Flat_Theme}TextPane.foreground = $TextField.foreground +{Dark_Flat_Theme}ToggleButton.foreground = $Button.foreground -{Dark_purple}Slider.focusedColor = fade($Component.focusColor,70%,derived) - -{Dracula---Zihan_Ma}Component.accentColor = lazy(Component.focusColor) -{Dracula---Zihan_Ma}ComboBox.selectionBackground = lazy(List.selectionBackground) +{Dracula---Zihan_Ma}CheckBox.icon.background = @background +{Dracula---Zihan_Ma}ComboBox.selectionBackground = $List.selectionBackground {Dracula---Zihan_Ma}ProgressBar.selectionBackground = #fff {Dracula---Zihan_Ma}ProgressBar.selectionForeground = #fff +{Dracula---Zihan_Ma}Slider.trackColor = $?ColorPalette.selectionBackground +{Dracula---Zihan_Ma}ToggleButton.foreground = $Button.foreground -{Gradianto_Dark_Fuchsia}*.selectionBackground = #8452a7 -{Gradianto_Dark_Fuchsia}*.selectionInactiveBackground = #562C6A {Gradianto_Dark_Fuchsia}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 {Gradianto_Dark_Fuchsia}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 {Gradianto_Dark_Fuchsia}TextField.background = @ijTextBackgroundL4 -{Gradianto_Dark_Fuchsia}Tree.background = lazy(List.background) -{Gradianto_Dark_Fuchsia}Separator.foreground = lazy(ScrollBar.track) -{Gradianto_Dark_Fuchsia}ToolBar.separatorColor = lazy(ScrollBar.track) -{Gradianto_Dark_Fuchsia}ProgressBar.background = lazy(ScrollBar.track) -{Gradianto_Dark_Fuchsia}Slider.trackColor = lazy(ScrollBar.track) +{Gradianto_Dark_Fuchsia}Tree.background = $List.background +{Gradianto_Dark_Fuchsia}Tree.selectionInactiveBackground = $List.selectionInactiveBackground +{Gradianto_Dark_Fuchsia}Separator.foreground = @ijSeparatorDark +{Gradianto_Dark_Fuchsia}ToolBar.separatorColor = $Separator.foreground +{Gradianto_Dark_Fuchsia}ProgressBar.background = $ScrollBar.track +{Gradianto_Dark_Fuchsia}Slider.trackColor = $ScrollBar.track +{Gradianto_Deep_Ocean}Separator.foreground = @ijSeparatorDark +{Gradianto_Deep_Ocean}ToolBar.separatorColor = $Separator.foreground {Gradianto_Deep_Ocean}TextField.background = @ijTextBackgroundL3 -{Gradianto_Deep_Ocean}Tree.background = lazy(List.background) +{Gradianto_Deep_Ocean}Tree.background = $List.background {Gradianto_Midnight_Blue}ScrollBar.thumb = #533B6B -{Gradianto_Midnight_Blue}Table.selectionForeground = lazy(List.selectionForeground) +{Gradianto_Midnight_Blue}Separator.foreground = @ijSeparatorDark +{Gradianto_Midnight_Blue}ToolBar.separatorColor = $Separator.foreground +{Gradianto_Midnight_Blue}Table.selectionForeground = $List.selectionForeground {Gradianto_Midnight_Blue}TextField.background = @ijTextBackgroundL4 -{Gradianto_Midnight_Blue}Tree.background = lazy(List.background) +{Gradianto_Midnight_Blue}Tree.background = $List.background -{Gradianto_Nature_Green}Table.selectionForeground = lazy(List.selectionForeground) +{Gradianto_Nature_Green}Separator.foreground = @ijSeparatorDark +{Gradianto_Nature_Green}ToolBar.separatorColor = $Separator.foreground +{Gradianto_Nature_Green}Table.selectionForeground = $List.selectionForeground {Gradianto_Nature_Green}TextField.background = @ijTextBackgroundL4 -{Gray}Separator.foreground = lazy(Slider.trackColor) -{Gray}ToolBar.separatorColor = lazy(Slider.trackColor) +{Gray}@disabledForeground = tint(@foreground,40%) +{Gray}*.disabledText = @disabledForeground +{Gray}*.disabledForeground = @disabledForeground +{Gray}*.inactiveForeground = @disabledForeground +{Gray}Button.background = @buttonBackground +{Gray}Separator.foreground = @ijSeparatorLight +{Gray}ToolBar.separatorColor = $Separator.foreground -{Gruvbox_Dark_Hard}Component.accentColor = lazy(TabbedPane.underlineColor) -{Gruvbox_Dark_Hard}ToggleButton.selectedBackground = $ToggleButton.selectedBackground -{Gruvbox_Dark_Hard}ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground +{Gruvbox_Dark_Hard}@accentBaseColor = #4B6EAF {Gruvbox_Dark_Hard}ComboBox.background = @ijTextBackgroundL3 -{Gruvbox_Dark_Hard}ComboBox.buttonBackground = @ijTextBackgroundL3 +{Gruvbox_Dark_Hard}ComboBox.buttonBackground = $ComboBox.background {Gruvbox_Dark_Hard}TextField.background = @ijTextBackgroundL3 -{Hiberbee_Dark}*.disabledForeground = #7F7E7D -{Hiberbee_Dark}*.disabledText = #7F7E7D -{Hiberbee_Dark}*.inactiveForeground = #7F7E7D -{Hiberbee_Dark}ProgressBar.background = lazy(Separator.foreground) -{Hiberbee_Dark}Slider.trackColor = lazy(Separator.foreground) -{Hiberbee_Dark}TabbedPane.focusColor = #5A5A5A -{Hiberbee_Dark}TabbedPane.selectedBackground = #434241 -{Hiberbee_Dark}TabbedPane.selectedForeground = #70D7FF -{Hiberbee_Dark}ToggleButton.selectedBackground = $ToggleButton.selectedBackground -{Hiberbee_Dark}ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground -{Hiberbee_Dark}Table.selectionInactiveBackground = lazy(List.selectionInactiveBackground) -{Hiberbee_Dark}Tree.selectionBackground = lazy(List.selectionBackground) -{Hiberbee_Dark}Tree.selectionInactiveBackground = lazy(List.selectionInactiveBackground) +{Hiberbee_Dark}@disabledForeground = $ColorPalette.light3 +{Hiberbee_Dark}*.disabledText = @disabledForeground +{Hiberbee_Dark}*.disabledForeground = @disabledForeground +{Hiberbee_Dark}*.inactiveForeground = @disabledForeground +{Hiberbee_Dark}List.selectionInactiveBackground = $Table.selectionInactiveBackground +{Hiberbee_Dark}ProgressBar.background = $Separator.foreground +{Hiberbee_Dark}RadioButtonMenuItem.selectionForeground = $MenuItem.selectionForeground +{Hiberbee_Dark}Slider.trackColor = $ColorPalette.light1 +{Hiberbee_Dark}Slider.trackColor = $ColorPalette.dark10 +{Hiberbee_Dark}Slider.thumbColor = @accentBaseColor +{Hiberbee_Dark}ToggleButton.foreground = $Button.foreground +{Hiberbee_Dark}ToolBar.background = @background -{High_Contrast}Component.accentColor = lazy(Component.focusColor) -{High_Contrast}Button.hoverBorderColor = #1AEBFF -{High_Contrast}HelpButton.hoverBorderColor = #1AEBFF -{High_Contrast}ToggleButton.selectedBackground = #fff -{High_Contrast}ToggleButton.selectedForeground = #000 -{High_Contrast}ToggleButton.disabledSelectedBackground = #444 -{High_Contrast}ToggleButton.toolbar.selectedBackground = #3333FF +{High_Contrast}@accentBaseColor = $TabbedPane.underlineColor +{High_Contrast}Slider.thumbBorderColor = $Slider.thumbColor +{High_Contrast}Slider.focusedThumbBorderColor = @background +{High_Contrast}Slider.focusedColor = $Component.focusColor +{High_Contrast}Slider.focusWidth = 2 +{High_Contrast}ToggleButton.selectedBackground = @selectionBackground +{High_Contrast}ToggleButton.selectedForeground = @selectionForeground +{High_Contrast}ToggleButton.disabledSelectedBackground = shade(@selectionBackground,50%) +{High_Contrast}ToggleButton.toolbar.selectedBackground = @selectionBackground {High_Contrast}[style]Button.inTextField = \ toolbar.hoverBackground: #444; \ toolbar.pressedBackground: #666; \ - toolbar.selectedBackground: #fff -{High_Contrast}[style]ToggleButton.inTextField = ${High_Contrast}[style]Button.inTextField + toolbar.selectedBackground: @selectionBackground -{Light_Flat}*.disabledForeground = #8C8C8C -{Light_Flat}*.inactiveForeground = #8C8C8C +{Light_Flat}@accentBaseColor = $TabbedPane.underlineColor +{Light_Flat}@accentFocusColor = lighten(@accentBaseColor,15%) +{Light_Flat}@disabledForeground = #808080 +{Light_Flat}*.disabledText = @disabledForeground +{Light_Flat}*.disabledForeground = @disabledForeground +{Light_Flat}*.inactiveForeground = @disabledForeground {Light_Flat}CheckBox.icon[filled].background = #fff {Light_Flat}CheckBox.icon[filled].checkmarkColor = #fff -{Light_Flat}Component.accentColor = lazy(TabbedPane.underlineColor) -{Light_Flat}ComboBox.background = lazy(ComboBox.editableBackground) -{Light_Flat}ComboBox.buttonBackground = lazy(ComboBox.editableBackground) -{Light_Flat}Separator.foreground = lazy(ToolBar.separatorColor) +{Light_Flat}ComboBox.background = $ComboBox.editableBackground +{Light_Flat}ComboBox.buttonBackground = $ComboBox.background +{Light_Flat}ProgressBar.selectionForeground = @foreground +{Light_Flat}Separator.foreground = @ijSeparatorLight {Light_Flat}TableHeader.background = #E5E5E9 -{Light_Flat}TextPane.foreground = lazy(TextField.foreground) -{Light_Flat}CheckBoxMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) -{Light_Flat}RadioButtonMenuItem.selectionForeground = lazy(MenuItem.selectionForeground) +{Light_Flat}TextPane.foreground = $TextField.foreground +{Light_Flat}ToggleButton.foreground = $Button.foreground +{Light_Flat}CheckBoxMenuItem.selectionForeground = $MenuItem.selectionForeground +{Light_Flat}RadioButtonMenuItem.selectionForeground = $MenuItem.selectionForeground -{Monocai}Button.default.foreground = #2D2A2F +{Monocai}@accentUnderlineColor = @accentBaseColor +{Monocai}*.acceleratorForeground = @menuAcceleratorForeground +{Monocai}*.acceleratorSelectionForeground = @menuAcceleratorSelectionForeground +{Monocai}Button.default.foreground = @background {Monocai}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 -{Monocai}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 -@Monocai.acceleratorForeground = lazy(MenuItem.disabledForeground) -@Monocai.acceleratorSelectionForeground = lighten(MenuItem.disabledForeground,10%,lazy) -{Monocai}CheckBoxMenuItem.acceleratorForeground = @Monocai.acceleratorForeground -{Monocai}CheckBoxMenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground -{Monocai}Menu.acceleratorForeground = @Monocai.acceleratorForeground -{Monocai}Menu.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground -{Monocai}MenuItem.acceleratorForeground = @Monocai.acceleratorForeground -{Monocai}MenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground -{Monocai}RadioButtonMenuItem.acceleratorForeground = @Monocai.acceleratorForeground -{Monocai}RadioButtonMenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground +{Monocai}TabbedPane.underlineColor = @accentUnderlineColor {Monocai}TextField.background = @ijTextBackgroundL4 -@Monocai.selectionBackground = lazy(TextField.selectionBackground) +@Monocai.selectionBackground = $TextField.selectionBackground {Monocai}ComboBox.selectionBackground = @Monocai.selectionBackground {Monocai}List.selectionBackground = @Monocai.selectionBackground {Monocai}Table.selectionBackground = @Monocai.selectionBackground {Monocai}Tree.selectionBackground = @Monocai.selectionBackground -@Monocai.selectionInactiveBackground = lazy(MenuItem.selectionBackground) +@Monocai.selectionInactiveBackground = $MenuItem.selectionBackground {Monocai}List.selectionInactiveBackground = @Monocai.selectionInactiveBackground {Monocai}Table.selectionInactiveBackground = @Monocai.selectionInactiveBackground {Monocai}Tree.selectionInactiveBackground = @Monocai.selectionInactiveBackground -{Monokai_Pro---Subtheme}Table.selectionInactiveForeground = lazy(List.selectionInactiveForeground) -{Monokai_Pro---Subtheme}Tree.selectionBackground = lazy(List.selectionBackground) -{Monokai_Pro---Subtheme}Separator.foreground = lazy(Slider.trackColor) -{Monokai_Pro---Subtheme}ToolBar.separatorColor = lazy(Slider.trackColor) +{Monokai_Pro---Subtheme}@disabledForeground = shade(@foreground,40%) +{Monokai_Pro---Subtheme}*.disabledText = @disabledForeground +{Monokai_Pro---Subtheme}*.disabledForeground = @disabledForeground +{Monokai_Pro---Subtheme}*.inactiveForeground = @disabledForeground +{Monokai_Pro---Subtheme}ProgressBar.selectionBackground = #fff +{Monokai_Pro---Subtheme}Table.selectionInactiveForeground = $List.selectionInactiveForeground +{Monokai_Pro---Subtheme}Tree.selectionBackground = $List.selectionBackground +{Monokai_Pro---Subtheme}ToggleButton.foreground = $Button.foreground +{Monokai_Pro---Subtheme}Separator.foreground = @ijSeparatorDark +{Monokai_Pro---Subtheme}ToolBar.separatorColor = $Separator.foreground +{Monokai_Pro---Subtheme}ToolBar.background = @background -{Nord}*.inactiveForeground = #616E88 +{Nord}@disabledForeground = #616E88 +{Nord}*.disabledText = @disabledForeground +{Nord}*.disabledForeground = @disabledForeground +{Nord}*.inactiveForeground = @disabledForeground {Nord}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 {Nord}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 -{Nord}List.selectionBackground = lazy(Tree.selectionBackground) -{Nord}List.selectionForeground = lazy(Tree.selectionForeground) -{Nord}Table.selectionBackground = lazy(Tree.selectionBackground) -{Nord}Table.selectionForeground = lazy(Tree.selectionForeground) -{Nord}TextField.selectionBackground = lazy(Tree.selectionBackground) -{Nord}TextField.selectionForeground = lazy(Tree.selectionForeground) -{Nord}Tree.selectionInactiveForeground = lazy(List.selectionInactiveForeground) +{Nord}RadioButtonMenuItem.selectionBackground = $MenuItem.selectionBackground +{Nord}ProgressBar.selectionBackground = @foreground +{Nord}ProgressBar.selectionForeground = @background +{Nord}List.selectionBackground = $Tree.selectionBackground +{Nord}List.selectionForeground = $Tree.selectionForeground +{Nord}Table.selectionBackground = $Tree.selectionBackground +{Nord}Table.selectionForeground = $Tree.selectionForeground +{Nord}TextField.selectionBackground = $Tree.selectionBackground +{Nord}TextField.selectionForeground = $Tree.selectionForeground +{Nord}Tree.selectionInactiveForeground = $List.selectionInactiveForeground {NotReallyMDTheme}*.selectionInactiveBackground = #21384E -{NotReallyMDTheme}ToolBar.separatorColor = lazy(Separator.foreground) +{NotReallyMDTheme}ToolBar.separatorColor = $Separator.foreground -{One_Dark}List.selectionInactiveForeground = lazy(Tree.selectionInactiveForeground) {One_Dark}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 {One_Dark}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 -{One_Dark}ProgressBar.background = lazy(Separator.foreground) -{One_Dark}Slider.trackColor = lazy(Separator.foreground) -{One_Dark}Slider.focusedColor = fade(#568af2,40%) -{One_Dark}Table.background = lazy(Tree.background) -{One_Dark}Table.selectionBackground = lazy(Tree.selectionBackground) -{One_Dark}TextField.selectionBackground = lazy(List.selectionBackground) -{One_Dark}Tree.selectionForeground = lazy(List.selectionForeground) +{One_Dark}ProgressBar.background = $Separator.foreground +{One_Dark}ProgressBar.selectionForeground = #fff +{One_Dark}Table.background = $Tree.background +{One_Dark}Table.selectionBackground = $Tree.selectionBackground +{One_Dark}TextField.selectionBackground = $List.selectionBackground +{One_Dark}Tree.selectionForeground = $List.selectionForeground -{Solarized_Dark---4lex4}*.inactiveForeground = #657B83 -{Solarized_Dark---4lex4}Component.accentColor = lazy(TabbedPane.underlineColor) -{Solarized_Dark---4lex4}ComboBox.background = lazy(ComboBox.editableBackground) -{Solarized_Dark---4lex4}ComboBox.buttonBackground = lazy(ComboBox.editableBackground) -{Solarized_Dark---4lex4}Slider.focusedColor = fade($Component.focusColor,80%,derived) -{Solarized_Dark---4lex4}ToolBar.separatorColor = lazy(Separator.foreground) +{Solarized_Dark---4lex4}@accentBaseColor = $TabbedPane.underlineColor +{Solarized_Dark---4lex4}*.acceleratorForeground = @menuAcceleratorForeground +{Solarized_Dark---4lex4}ComboBox.background = $ComboBox.editableBackground +{Solarized_Dark---4lex4}ComboBox.buttonBackground = $ComboBox.editableBackground +{Solarized_Dark---4lex4}Slider.disabledTrackColor = $ColorPalette.colorSeparator -{Solarized_Light---4lex4}*.inactiveForeground = #839496 -{Solarized_Light---4lex4}Button.default.hoverBackground = darken($Button.default.background,3%,derived) -{Solarized_Light---4lex4}Component.accentColor = lazy(TabbedPane.underlineColor) +{Solarized_Light---4lex4}@accentBaseColor = $TabbedPane.underlineColor +{Solarized_Light---4lex4}Slider.thumbColor = $ProgressBar.foreground +{Solarized_Light---4lex4}Slider.disabledTrackColor = $ColorPalette.colorSeparator {Spacegray}ComboBox.background = @ijTextBackgroundL4 -{Spacegray}ComboBox.buttonBackground = @ijTextBackgroundL4 +{Spacegray}ComboBox.buttonBackground = $ComboBox.background {Spacegray}TextField.background = @ijTextBackgroundL4 -{Spacegray}TextField.selectionBackground = lazy(Tree.selectionBackground) -{Spacegray}TextField.selectionForeground = lazy(Tree.selectionForeground) -{vuesion-theme}*.disabledForeground = #8C8C8C -{vuesion-theme}*.disabledText = #8C8C8C -{vuesion-theme}*.inactiveForeground = #8C8C8C -{vuesion-theme}Component.accentColor = lazy(Button.default.endBackground) +{vuesion-theme}@accentBaseColor = $TabbedPane.underlineColor +{vuesion-theme}@disabledForeground = #8C8C8C +{vuesion-theme}*.disabledText = @disabledForeground +{vuesion-theme}*.disabledForeground = @disabledForeground +{vuesion-theme}*.inactiveForeground = @disabledForeground {vuesion-theme}MenuItem.checkBackground = @ijMenuCheckBackgroundL10 {vuesion-theme}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10 -{vuesion-theme}Slider.trackValueColor = #ececee -{vuesion-theme}Slider.trackColor = #303a45 +{vuesion-theme}ProgressBar.background = #303a45 +{vuesion-theme}ProgressBar.foreground = #ececee {vuesion-theme}Slider.thumbColor = #ececee -{vuesion-theme}Slider.focusedColor = fade(#ececee,20%) +{vuesion-theme}Slider.focusedColor = fade($Slider.thumbColor,20%) {vuesion-theme}ComboBox.background = @ijTextBackgroundL4 -{vuesion-theme}ComboBox.buttonBackground = @ijTextBackgroundL4 +{vuesion-theme}ComboBox.buttonBackground = $ComboBox.background {vuesion-theme}TextField.background = @ijTextBackgroundL4 {vuesion-theme}TextField.selectionBackground = lighten(#303A45,15%) +{Xcode-Dark}@accentBaseColor = $List.selectionBackground {Xcode-Dark}TextField.background = @ijTextBackgroundL4 # Material Theme UI Lite -[light]{author-Mallowigi}MenuItem.checkBackground = @ijMenuCheckBackgroundD10 -[light]{author-Mallowigi}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundD10 -[dark]{author-Mallowigi}MenuItem.checkBackground = @ijMenuCheckBackgroundL20 -[dark]{author-Mallowigi}MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL20 +{author-Mallowigi}[light]controlHighlight = lighten($controlShadow,8%) +{author-Mallowigi}[light]controlLtHighlight = lighten($controlShadow,15%) +{author-Mallowigi}[light]controlDkShadow = darken($controlShadow,15%) +{author-Mallowigi}[dark]controlHighlight = darken($controlShadow,10%) +{author-Mallowigi}[dark]controlLtHighlight = darken($controlShadow,15%) +{author-Mallowigi}[dark]controlDkShadow = lighten($controlShadow,10%) -{author-Mallowigi}Tree.selectionInactiveBackground = lazy(List.selectionInactiveBackground) +{author-Mallowigi}Button.hoverBorderColor = $Button.focusedBorderColor +{author-Mallowigi}HelpButton.hoverBorderColor = $Button.focusedBorderColor -{Arc_Dark}ComboBox.selectionBackground = lazy(List.selectionBackground) -{Arc_Dark}Table.selectionBackground = lazy(List.selectionBackground) +{author-Mallowigi}[light]ToggleButton.selectedForeground = #000 +{author-Mallowigi}[dark]ToggleButton.selectedForeground = #fff -{Atom_One_Dark}Separator.foreground = lazy(Slider.trackColor) -{Atom_One_Dark}ToolBar.separatorColor = lazy(Slider.trackColor) +{author-Mallowigi}[light]MenuItem.checkBackground = @ijMenuCheckBackgroundD10 +{author-Mallowigi}[light]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundD10 +{author-Mallowigi}[dark]MenuItem.checkBackground = @ijMenuCheckBackgroundL20 +{author-Mallowigi}[dark]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL20 -{Atom_One_Light}List.selectionBackground = lazy(Table.selectionBackground) -{Atom_One_Light}Tree.selectionBackground = lazy(Table.selectionBackground) -{Atom_One_Light}TabbedPane.contentAreaColor = lazy(Separator.foreground) +{author-Mallowigi}[light]Separator.foreground = @ijSeparatorLight +{author-Mallowigi}[dark]Separator.foreground = @ijSeparatorDark +{author-Mallowigi}ProgressBar.selectionBackground = @foreground +{author-Mallowigi}TabbedPane.selectedBackground = mix(@background,$ColorPalette.table,60%) +{author-Mallowigi}ToolBar.separatorColor = $Separator.foreground +{author-Mallowigi}Button.foreground = @foreground +{author-Mallowigi}Tree.foreground = @foreground + + +{Arc_Dark}ComboBox.selectionBackground = $List.selectionBackground +{Arc_Dark}ProgressBar.selectionBackground = #fff +{Arc_Dark}ProgressBar.selectionForeground = #fff +{Arc_Dark}Table.selectionBackground = $List.selectionBackground +{Arc_Dark}Tree.selectionInactiveBackground = $List.selectionInactiveBackground + +{Atom_One_Dark}ProgressBar.selectionBackground = #fff +{Atom_One_Dark}ProgressBar.selectionForeground = #fff +{Atom_One_Dark}List.selectionBackground = $Table.selectionBackground +{Atom_One_Dark}Tree.selectionBackground = $Table.selectionBackground +{Atom_One_Dark}List.selectionInactiveBackground = $Tree.selectionInactiveBackground +{Atom_One_Dark}Table.selectionInactiveBackground = $Tree.selectionInactiveBackground + +{Atom_One_Light}@disabledForeground = shade($ColorPalette.dis,20%) +{Atom_One_Light}*.disabledText = @disabledForeground +{Atom_One_Light}*.disabledForeground = @disabledForeground +{Atom_One_Light}*.inactiveForeground = @disabledForeground +{Atom_One_Light}TabbedPane.contentAreaColor = $Separator.foreground -{Dracula---Mallowigi}*.selectionBackground = #44475A -{Dracula---Mallowigi}List.selectionInactiveForeground = lazy(Tree.selectionInactiveForeground) {Dracula---Mallowigi}ProgressBar.selectionBackground = #fff {Dracula---Mallowigi}ProgressBar.selectionForeground = #fff -{Dracula---Mallowigi}RadioButtonMenuItem.selectionForeground = lazy(CheckBoxMenuItem.selectionForeground) -{Dracula---Mallowigi}Table.selectionForeground = lazy(List.selectionForeground) -{Dracula---Mallowigi}Separator.foreground = lazy(Slider.trackColor) -{Dracula---Mallowigi}ToolBar.separatorColor = lazy(Slider.trackColor) +{Dracula---Mallowigi}List.selectionBackground = $Table.selectionBackground +{Dracula---Mallowigi}Tree.selectionBackground = $Table.selectionBackground +{Dracula---Mallowigi}List.selectionInactiveBackground = $Tree.selectionInactiveBackground +{Dracula---Mallowigi}Table.selectionInactiveBackground = $Tree.selectionInactiveBackground {GitHub}ProgressBar.selectionBackground = #222 {GitHub}ProgressBar.selectionForeground = #222 {GitHub}TextField.background = @ijTextBackgroundL3 -{GitHub}List.selectionBackground = lazy(Table.selectionBackground) -{GitHub}Tree.selectionBackground = lazy(Table.selectionBackground) +{GitHub}List.selectionBackground = $Table.selectionBackground +{GitHub}Tree.selectionBackground = $Table.selectionBackground +{GitHub}List.selectionInactiveBackground = $Tree.selectionInactiveBackground +{GitHub}Table.selectionInactiveBackground = $Tree.selectionInactiveBackground -{GitHub_Dark}ComboBox.selectionBackground = lazy(Tree.selectionBackground) -{GitHub_Dark}Table.selectionBackground = lazy(Tree.selectionBackground) -{GitHub_Dark}Separator.foreground = lazy(Slider.trackColor) -{GitHub_Dark}ToolBar.separatorColor = lazy(Slider.trackColor) +{GitHub_Dark}ComboBox.selectionBackground = $Tree.selectionBackground +{GitHub_Dark}ProgressBar.selectionForeground = #fff +{GitHub_Dark}Slider.trackColor = lighten(#2b3036,5%) +{GitHub_Dark}Table.selectionBackground = $Tree.selectionBackground +{GitHub_Dark}Tree.selectionInactiveBackground = $Table.selectionInactiveBackground -{Light_Owl}CheckBoxMenuItem.selectionForeground = lazy(CheckBoxMenuItem.foreground) -{Light_Owl}ComboBox.selectionForeground = lazy(ComboBox.foreground) -{Light_Owl}List.selectionInactiveForeground = lazy(List.foreground) -{Light_Owl}Menu.selectionForeground = lazy(Menu.foreground) -{Light_Owl}MenuBar.selectionForeground = lazy(MenuBar.foreground) -{Light_Owl}MenuItem.selectionForeground = lazy(MenuItem.foreground) -{Light_Owl}ProgressBar.selectionBackground = #111 -{Light_Owl}ProgressBar.selectionForeground = #fff -{Light_Owl}Spinner.selectionForeground = lazy(Spinner.foreground) -{Light_Owl}Table.selectionForeground = lazy(Table.foreground) -{Light_Owl}TextField.selectionForeground = lazy(TextField.foreground) +{Light_Owl}@disabledForeground = shade($ColorPalette.dis,10%) +{Light_Owl}*.disabledText = @disabledForeground +{Light_Owl}*.disabledForeground = @disabledForeground +{Light_Owl}*.inactiveForeground = @disabledForeground +{Light_Owl}CheckBoxMenuItem.selectionForeground = $CheckBoxMenuItem.foreground +{Light_Owl}ComboBox.selectionForeground = $ComboBox.foreground +{Light_Owl}List.selectionInactiveForeground = $Table.selectionInactiveForeground +{Light_Owl}Menu.selectionForeground = $Menu.foreground +{Light_Owl}MenuBar.selectionForeground = $MenuBar.foreground +{Light_Owl}MenuItem.selectionForeground = $MenuItem.foreground +{Light_Owl}Table.selectionForeground = $List.selectionForeground +{Light_Owl}TextField.selectionForeground = $TextField.foreground {Light_Owl}TextField.background = @ijTextBackgroundL3 -{Light_Owl}List.selectionBackground = lazy(Table.selectionBackground) -{Light_Owl}Tree.selectionBackground = lazy(Table.selectionBackground) +{Light_Owl}List.selectionBackground = $Table.selectionBackground +{Light_Owl}Tree.selectionBackground = $Table.selectionBackground +{Light_Owl}List.selectionInactiveBackground = $Tree.selectionInactiveBackground +{Light_Owl}Table.selectionInactiveBackground = $Tree.selectionInactiveBackground -{Material_Darker}*.selectionBackground = lighten(#2D2D2D,15%) -{Material_Darker}Separator.foreground = lazy(Slider.trackColor) -{Material_Darker}ToolBar.separatorColor = lazy(Slider.trackColor) +{Material_Darker}@disabledForeground = tint($ColorPalette.dis,30%) +{Material_Darker}*.disabledText = @disabledForeground +{Material_Darker}*.disabledForeground = @disabledForeground +{Material_Darker}*.inactiveForeground = @disabledForeground +{Material_Darker}*.selectionBackground = lighten($ColorPalette.tree,15%) +{Material_Darker}ProgressBar.selectionForeground = #fff +{Material_Darker}Tree.selectionInactiveBackground = $List.selectionInactiveBackground -{Material_Deep_Ocean}*.selectionBackground = lighten(#222533,15%) -{Material_Deep_Ocean}Separator.foreground = lazy(Slider.trackColor) -{Material_Deep_Ocean}ToolBar.separatorColor = lazy(Slider.trackColor) +{Material_Deep_Ocean}@disabledForeground = tint($ColorPalette.dis,10%) +{Material_Deep_Ocean}*.disabledText = @disabledForeground +{Material_Deep_Ocean}*.disabledForeground = @disabledForeground +{Material_Deep_Ocean}*.inactiveForeground = @disabledForeground +{Material_Deep_Ocean}*.selectionBackground = lighten($ColorPalette.tree,15%) +{Material_Deep_Ocean}ProgressBar.selectionBackground = #fff +{Material_Deep_Ocean}Slider.trackColor = lighten(#1A1C25,5%) +{Material_Deep_Ocean}Tree.selectionInactiveBackground = $List.selectionInactiveBackground -{Material_Lighter}List.selectionInactiveForeground = lazy(Tree.selectionInactiveForeground) +{Material_Lighter}@disabledForeground = shade($ColorPalette.dis,30%) +{Material_Lighter}*.disabledText = @disabledForeground +{Material_Lighter}*.disabledForeground = @disabledForeground +{Material_Lighter}*.inactiveForeground = @disabledForeground +{Material_Lighter}ComboBox.selectionBackground = $List.selectionBackground +{Material_Lighter}List.selectionForeground = $Table.selectionForeground +{Material_Lighter}List.selectionInactiveForeground = $Table.selectionInactiveForeground {Material_Lighter}ProgressBar.selectionBackground = #222 -{Material_Lighter}ProgressBar.selectionForeground = #fff -{Material_Lighter}ComboBox.selectionBackground = lazy(List.selectionBackground) -{Material_Lighter}Table.selectionBackground = lazy(List.selectionBackground) -{Material_Lighter}List.selectionForeground = lazy(Table.selectionForeground) -{Material_Lighter}RadioButtonMenuItem.selectionForeground = lazy(Table.selectionForeground) -{Material_Lighter}Tree.selectionForeground = lazy(Table.selectionForeground) +{Material_Lighter}RadioButtonMenuItem.selectionForeground = $Table.selectionForeground +{Material_Lighter}Table.selectionBackground = $List.selectionBackground +{Material_Lighter}Tree.selectionForeground = $Table.selectionForeground +{Material_Lighter}Tree.selectionInactiveBackground = $List.selectionInactiveBackground +{Material_Oceanic}@disabledForeground = tint($ColorPalette.dis,30%) +{Material_Oceanic}*.disabledText = @disabledForeground +{Material_Oceanic}*.disabledForeground = @disabledForeground +{Material_Oceanic}*.inactiveForeground = @disabledForeground {Material_Oceanic}ProgressBar.selectionBackground = #ddd {Material_Oceanic}ProgressBar.selectionForeground = #ddd -{Material_Oceanic}Separator.foreground = lazy(Slider.trackColor) -{Material_Oceanic}ToolBar.separatorColor = lazy(Slider.trackColor) +{Material_Oceanic}List.selectionBackground = $Table.selectionBackground +{Material_Oceanic}Tree.selectionBackground = $Table.selectionBackground +{Material_Oceanic}List.selectionInactiveBackground = $Tree.selectionInactiveBackground +{Material_Oceanic}Table.selectionInactiveBackground = $Tree.selectionInactiveBackground +{Material_Palenight}@disabledForeground = tint($ColorPalette.dis,20%) +{Material_Palenight}*.disabledText = @disabledForeground +{Material_Palenight}*.disabledForeground = @disabledForeground +{Material_Palenight}*.inactiveForeground = @disabledForeground {Material_Palenight}ProgressBar.selectionBackground = #ddd {Material_Palenight}ProgressBar.selectionForeground = #ddd -{Material_Palenight}List.selectionBackground = lazy(Table.selectionBackground) -{Material_Palenight}Tree.selectionBackground = lazy(Table.selectionBackground) -{Material_Palenight}Separator.foreground = lazy(Slider.trackColor) -{Material_Palenight}ToolBar.separatorColor = lazy(Slider.trackColor) +{Material_Palenight}List.selectionBackground = $Table.selectionBackground +{Material_Palenight}Tree.selectionBackground = $Table.selectionBackground +{Material_Palenight}List.selectionInactiveBackground = $Tree.selectionInactiveBackground +{Material_Palenight}Table.selectionInactiveBackground = $Tree.selectionInactiveBackground -{Monokai_Pro---Mallowigi}List.selectionForeground = lazy(Table.selectionForeground) -{Monokai_Pro---Mallowigi}RadioButtonMenuItem.selectionForeground = lazy(Table.selectionForeground) -{Monokai_Pro---Mallowigi}Table.selectionInactiveForeground = lazy(List.selectionInactiveForeground) -{Monokai_Pro---Mallowigi}Tree.selectionForeground = lazy(Table.selectionForeground) -{Monokai_Pro---Mallowigi}Tree.selectionInactiveForeground = lazy(List.selectionInactiveForeground) -{Monokai_Pro---Mallowigi}Separator.foreground = lazy(Slider.trackColor) -{Monokai_Pro---Mallowigi}ToolBar.separatorColor = lazy(Slider.trackColor) +{Monokai_Pro---Mallowigi}@disabledForeground = tint($ColorPalette.dis,20%) +{Monokai_Pro---Mallowigi}*.disabledText = @disabledForeground +{Monokai_Pro---Mallowigi}*.disabledForeground = @disabledForeground +{Monokai_Pro---Mallowigi}*.inactiveForeground = @disabledForeground +{Monokai_Pro---Mallowigi}RadioButtonMenuItem.selectionForeground = $MenuItem.selectionForeground +{Monokai_Pro---Mallowigi}List.selectionForeground = $Table.selectionForeground +{Monokai_Pro---Mallowigi}Tree.selectionForeground = $Table.selectionForeground +{Monokai_Pro---Mallowigi}List.selectionInactiveForeground = $Table.selectionInactiveForeground +{Monokai_Pro---Mallowigi}List.selectionBackground = $Table.selectionBackground +{Monokai_Pro---Mallowigi}Tree.selectionBackground = $Table.selectionBackground +{Monokai_Pro---Mallowigi}List.selectionInactiveBackground = $Tree.selectionInactiveBackground +{Monokai_Pro---Mallowigi}Table.selectionInactiveBackground = $Tree.selectionInactiveBackground -{Moonlight}ComboBox.selectionBackground = lazy(List.selectionBackground) -{Moonlight}Table.selectionBackground = lazy(List.selectionBackground) -{Moonlight}Separator.foreground = lazy(Slider.trackColor) -{Moonlight}ToolBar.separatorColor = lazy(Slider.trackColor) - -{Night_Owl}ProgressBar.selectionBackground = #ddd -{Night_Owl}ProgressBar.selectionForeground = #ddd +{Moonlight}ComboBox.selectionBackground = $List.selectionBackground +{Moonlight}ProgressBar.selectionForeground = #000 +{Moonlight}Table.selectionBackground = $List.selectionBackground +{Moonlight}Tree.selectionInactiveBackground = $List.selectionInactiveBackground +{Solarized_Dark---Mallowigi}@disabledForeground = tint($ColorPalette.dis,20%) +{Solarized_Dark---Mallowigi}*.disabledForeground = @disabledForeground +{Solarized_Dark---Mallowigi}*.inactiveForeground = @disabledForeground +{Solarized_Dark---Mallowigi}*.disabledText = @disabledForeground {Solarized_Dark---Mallowigi}ProgressBar.selectionBackground = #ccc {Solarized_Dark---Mallowigi}ProgressBar.selectionForeground = #ccc -{Solarized_Dark---Mallowigi}Separator.foreground = lazy(Slider.trackColor) -{Solarized_Dark---Mallowigi}ToolBar.separatorColor = lazy(Slider.trackColor) +{Solarized_Dark---Mallowigi}Slider.trackColor = lighten(@background,10%) +{Solarized_Dark---Mallowigi}Table.selectionBackground = $List.selectionBackground +{Solarized_Dark---Mallowigi}Tree.selectionInactiveBackground = $List.selectionInactiveBackground +{Solarized_Light---Mallowigi}@disabledForeground = tint(@foreground,30%) +{Solarized_Light---Mallowigi}*.disabledForeground = @disabledForeground +{Solarized_Light---Mallowigi}*.inactiveForeground = @disabledForeground +{Solarized_Light---Mallowigi}*.disabledText = @disabledForeground {Solarized_Light---Mallowigi}ProgressBar.selectionBackground = #222 -{Solarized_Light---Mallowigi}ProgressBar.selectionForeground = #fff -{Solarized_Light---Mallowigi}ComboBox.selectionBackground = lazy(List.selectionBackground) -{Solarized_Light---Mallowigi}Table.selectionBackground = lazy(List.selectionBackground) -{Solarized_Light---Mallowigi}Separator.foreground = lazy(Slider.trackColor) -{Solarized_Light---Mallowigi}ToolBar.separatorColor = lazy(Slider.trackColor) +{Solarized_Light---Mallowigi}ComboBox.selectionBackground = $List.selectionBackground +{Solarized_Light---Mallowigi}Slider.disabledTrackColor = lighten($Slider.trackColor,5%) +{Solarized_Light---Mallowigi}Table.selectionBackground = $List.selectionBackground +{Solarized_Light---Mallowigi}Tree.selectionInactiveBackground = $List.selectionInactiveBackground +{Solarized_Light---Mallowigi}Button.toolbar.selectedBackground = darken($@background,15%) +{Solarized_Light---Mallowigi}ToggleButton.toolbar.selectedBackground = $Button.toolbar.selectedBackground diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java index 3bbd0ccf..22349eed 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java @@ -52,6 +52,8 @@ public class DemoPrefs } public static void setupLaf( String[] args ) { +// com.formdev.flatlaf.demo.intellijthemes.IJThemesDump.install(); + // set look and feel try { if( args.length > 0 ) diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesDump.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesDump.java new file mode 100644 index 00000000..bfe25480 --- /dev/null +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesDump.java @@ -0,0 +1,118 @@ +/* + * Copyright 2025 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.demo.intellijthemes; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; +import java.nio.charset.StandardCharsets; +import java.util.Properties; +import java.util.concurrent.atomic.AtomicReference; +import javax.swing.LookAndFeel; +import javax.swing.UIDefaults; +import javax.swing.UIManager; +import com.formdev.flatlaf.FlatLaf; +import com.formdev.flatlaf.IntelliJTheme; +import com.formdev.flatlaf.util.LoggingFacade; + +/** + * @author Karl Tauber + */ +public class IJThemesDump +{ + // same as UIDefaultsLoader.KEY_PROPERTIES + private static final String KEY_PROPERTIES = "FlatLaf.internal.properties"; + + public static void enablePropertiesRecording() { + System.setProperty( KEY_PROPERTIES, "true" ); + } + + public static void install() { + enablePropertiesRecording(); + + UIManager.addPropertyChangeListener( e -> { + if( "lookAndFeel".equals( e.getPropertyName() ) ) { + LookAndFeel lookAndFeel = UIManager.getLookAndFeel(); + if( lookAndFeel instanceof IntelliJTheme.ThemeLaf ) { + IntelliJTheme theme = (lookAndFeel.getClass() == IntelliJTheme.ThemeLaf.class) + ? ((IntelliJTheme.ThemeLaf)lookAndFeel).getTheme() + : null; + String name = (theme != null) ? theme.name : lookAndFeel.getClass().getSimpleName(); + File dir = new File( "dumps/properties" ); + dumpProperties( dir, name, UIManager.getLookAndFeelDefaults() ); + } + } + } ); + } + + public static void dumpProperties( File dir, String name, UIDefaults defaults ) { + String content = dumpPropertiesToString( defaults ); + if( content == null ) + return; + + // write to file + File file = new File( dir, name + ".properties" ); + file.getParentFile().mkdirs(); + try( Writer fileWriter = new OutputStreamWriter( + new FileOutputStream( file ), StandardCharsets.UTF_8 ) ) + { + fileWriter.write( content ); + } catch( IOException ex ) { + LoggingFacade.INSTANCE.logSevere( null, ex ); + } + } + + public static String dumpPropertiesToString( UIDefaults defaults ) { + Properties properties = (Properties) defaults.get( KEY_PROPERTIES ); + if( properties == null ) + return null; + + // dump to string + StringWriter stringWriter = new StringWriter( 100000 ); + PrintWriter out = new PrintWriter( stringWriter ); + out.printf( "@baseTheme = %s%n", FlatLaf.isLafDark() ? "dark" : "light" ); + AtomicReference lastPrefix = new AtomicReference<>(); + properties.entrySet().stream() + .sorted( (e1, e2) -> ((String)e1.getKey()).compareTo( (String) e2.getKey() ) ) + .forEach( e -> { + String key = (String) e.getKey(); + String value = (String) e.getValue(); + String prefix = keyPrefix( key ); + if( !prefix.equals( lastPrefix.get() ) ) { + lastPrefix.set( prefix ); + out.printf( "%n%n#---- %s ----%n%n", prefix ); + } + + out.printf( "%-50s = %s%n", key, value.replace( ";", "; \\\n\t" ) ); + } ); + + return stringWriter.toString().replace( "\r", "" ); + } + + private static String keyPrefix( String key ) { + int dotIndex = key.indexOf( '.' ); + return (dotIndex > 0) + ? key.substring( 0, dotIndex ) + : key.endsWith( "UI" ) + ? key.substring( 0, key.length() - 2 ) + : ""; + } +} diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java index 5c8d716c..0524ce9a 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java @@ -276,20 +276,21 @@ public class IJThemesPanel return; EventQueue.invokeLater( () -> { - setTheme( themeInfo ); + setTheme( themeInfo, false ); } ); } - private void setTheme( IJThemeInfo themeInfo ) { + private void setTheme( IJThemeInfo themeInfo, boolean reload ) { if( themeInfo == null ) return; // change look and feel if( themeInfo.lafClassName != null ) { - if( themeInfo.lafClassName.equals( UIManager.getLookAndFeel().getClass().getName() ) ) + if( !reload && themeInfo.lafClassName.equals( UIManager.getLookAndFeel().getClass().getName() ) ) return; - FlatAnimatedLafChange.showSnapshot(); + if( !reload ) + FlatAnimatedLafChange.showSnapshot(); try { UIManager.setLookAndFeel( themeInfo.lafClassName ); @@ -298,7 +299,8 @@ public class IJThemesPanel showInformationDialog( "Failed to create '" + themeInfo.lafClassName + "'.", ex ); } } else if( themeInfo.themeFile != null ) { - FlatAnimatedLafChange.showSnapshot(); + if( !reload ) + FlatAnimatedLafChange.showSnapshot(); try { if( themeInfo.themeFile.getName().endsWith( ".properties" ) ) @@ -320,7 +322,9 @@ public class IJThemesPanel // update all components FlatLaf.updateUI(); - FlatAnimatedLafChange.hideSnapshotWithAnimation(); + + if( !reload ) + FlatAnimatedLafChange.hideSnapshotWithAnimation(); } private void browsePlugin() { @@ -386,8 +390,8 @@ public class IJThemesPanel // use invokeLater() because KEY_LAF_THEME_FILE is updated after this event EventQueue.invokeLater( () -> { selectedCurrentLookAndFeel(); + lastLafChangeTime = System.currentTimeMillis(); } ); - lastLafChangeTime = System.currentTimeMillis(); } } @@ -435,7 +439,7 @@ public class IJThemesPanel } if( reload ) - setTheme( themesList.getSelectedValue() ); + setTheme( themesList.getSelectedValue(), true ); } } } diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt index 66b6a9df..d2a2bca5 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0.txt @@ -76,7 +76,7 @@ + ProgressBar.foreground #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] - ProgressBar.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] -+ ProgressBar.selectionForeground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] ++ ProgressBar.selectionForeground #1e2021 HSL 200 5 12 javax.swing.plaf.ColorUIResource [UI] #---- RadioButton ---- @@ -121,4 +121,4 @@ + contrast ratio: ProgressBar.foreground #c4c4c4 #3c3f41 6.1 ! - contrast ratio: ProgressBar.selectionForeground #eeeeee #4c87c8 3.2 !!!! -+ contrast ratio: ProgressBar.selectionForeground #3c3f41 #c4c4c4 6.1 ! ++ contrast ratio: ProgressBar.selectionForeground #1e2021 #c4c4c4 9.4 diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java index e723e7f1..61fcba20 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java @@ -60,6 +60,7 @@ import javax.swing.plaf.UIResource; import javax.swing.plaf.basic.BasicLookAndFeel; import javax.swing.table.JTableHeader; import com.formdev.flatlaf.*; +import com.formdev.flatlaf.demo.intellijthemes.IJThemesDump; import com.formdev.flatlaf.intellijthemes.FlatAllIJThemes; import com.formdev.flatlaf.testing.FlatTestLaf; import com.formdev.flatlaf.themes.*; @@ -155,6 +156,8 @@ public class UIDefaultsDump private static void dumpIntelliJThemes( File dir ) { dir = new File( dir, "intellijthemes" ); + IJThemesDump.enablePropertiesRecording(); + for( LookAndFeelInfo info : FlatAllIJThemes.INFOS ) { String lafClassName = info.getClassName(); String relativeLafClassName = StringUtils.removeLeading( lafClassName, "com.formdev.flatlaf.intellijthemes." ); @@ -192,6 +195,15 @@ public class UIDefaultsDump dump( dir, "_InputMap", lookAndFeel, defaults, key -> key.contains( "InputMap" ), false ); dumpActionMaps( dir, "_ActionMap", lookAndFeel, defaults ); } + + if( lookAndFeel instanceof IntelliJTheme.ThemeLaf ) { + File cdir = new File( dir.getPath().replace( "intellijthemes", "intellijthemes-colors" ) ); + dumpColorsToProperties( cdir, lookAndFeel, defaults ); + + // dump as .properties + File pdir = new File( dir.getPath().replace( "intellijthemes", "intellijthemes-properties" ) ); + IJThemesDump.dumpProperties( pdir, lookAndFeel.getClass().getSimpleName(), defaults ); + } } private static void dump( File dir, String nameSuffix, @@ -231,8 +243,8 @@ public class UIDefaultsDump if( origFile != null ) { try { Map defaults1 = parse( new InputStreamReader( - new FileInputStream( origFile ), StandardCharsets.UTF_8 ) ); - Map defaults2 = parse( new StringReader( stringWriter.toString() ) ); + new FileInputStream( origFile ), StandardCharsets.UTF_8 ), false ); + Map defaults2 = parse( new StringReader( stringWriter.toString() ), false ); content = diff( defaults1, defaults2 ); } catch( Exception ex ) { @@ -280,6 +292,45 @@ public class UIDefaultsDump } } + private static void dumpColorsToProperties( File dir, LookAndFeel lookAndFeel, UIDefaults defaults ) { + // dump to string + StringWriter stringWriter = new StringWriter( 100000 ); + new UIDefaultsDump( lookAndFeel, defaults ).dumpColorsAsProperties( new PrintWriter( stringWriter ) ); + + String name = lookAndFeel instanceof MyBasicLookAndFeel + ? BasicLookAndFeel.class.getSimpleName() + : lookAndFeel.getClass().getSimpleName(); + File file = new File( dir, name + ".properties" ); + + // build and append differences + if( file.exists() ) { + try { + Map defaults1 = parse( new InputStreamReader( + new FileInputStream( file ), StandardCharsets.UTF_8 ), true ); + Map defaults2 = parse( new StringReader( stringWriter.toString() ), true ); + + String diff = diff( defaults1, defaults2 ); + if( !diff.isEmpty() ) { + stringWriter.write( "\n\n\n\n#==== Differences ==============================================================\n\n" ); + stringWriter.write( diff ); + } + } catch( Exception ex ) { + ex.printStackTrace(); + return; + } + } + + // write to file + file.getParentFile().mkdirs(); + try( Writer fileWriter = new OutputStreamWriter( + new FileOutputStream( file ), StandardCharsets.UTF_8 ) ) + { + fileWriter.write( stringWriter.toString().replace( "\r", "" ) ); + } catch( IOException ex ) { + ex.printStackTrace(); + } + } + private static String diff( Map defaults1, Map defaults2 ) { TreeSet keys = new TreeSet<>(); keys.addAll( defaults1.keySet() ); @@ -355,7 +406,7 @@ public class UIDefaultsDump buf.append( '\n' ); } - private static Map parse( Reader in ) throws IOException { + private static Map parse( Reader in, boolean ignoreDiffs ) throws IOException { Map defaults = new LinkedHashMap<>(); try( BufferedReader reader = new BufferedReader( in ) ) { String lastKey = null; @@ -371,6 +422,9 @@ public class UIDefaultsDump continue; } + if( ignoreDiffs && (trimmedLine.startsWith( "- " ) || trimmedLine.startsWith( "+ " )) ) + continue; + if( Character.isWhitespace( line.charAt( 0 ) ) ) { String value = defaults.get( lastKey ); value += '\n' + line; @@ -443,6 +497,30 @@ public class UIDefaultsDump dumpContrastRatios( out ); } + private void dumpColorsAsProperties( PrintWriter out ) { + defaults.keySet().stream() + .sorted( (key1, key2) -> { + return String.valueOf( key1 ).compareTo( String.valueOf( key2 ) ); + } ) + .forEach( key -> { + Color color = defaults.getColor( key ); + if( color == null ) + return; + + String strKey = String.valueOf( key ); + String prefix = keyPrefix( strKey ); + if( !prefix.equals( lastPrefix ) ) { + lastPrefix = prefix; + out.printf( "%n%n#---- %s ----%n%n", prefix ); + } + + out.printf( "%-50s = #%06x", strKey, color.getRGB() & 0xffffff ); + if( color.getAlpha() != 255 ) + out.printf( "%02x", (color.getRGB() >> 24) & 0xff ); + out.println(); + } ); + } + private void dumpActionMaps( PrintWriter out ) { dumpHeader( out ); From d612b9f4b8cbb925f385a4308121985d6b37e218 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Thu, 6 Mar 2025 17:47:55 +0100 Subject: [PATCH 27/36] Linux: use X11 window manager events to resize window, if FlatLaf window decorations are enabled (issue #866) also made drag border slightly wider (from 5 to 6 pixels) and changed drag corner width from 16 to 32 to match native windows --- CHANGELOG.md | 3 +++ .../flatlaf/ui/FlatNativeLinuxLibrary.java | 13 ++++++++-- .../formdev/flatlaf/ui/FlatWindowResizer.java | 26 ++++++++++++++++--- .../com/formdev/flatlaf/FlatLaf.properties | 4 +-- .../dumps/uidefaults/FlatDarkLaf_1.8.0.txt | 4 +-- .../dumps/uidefaults/FlatLightLaf_1.8.0.txt | 4 +-- .../dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt | 4 +-- .../uidefaults/FlatMacLightLaf_1.8.0.txt | 4 +-- .../dumps/uidefaults/FlatTestLaf_1.8.0.txt | 4 +-- 9 files changed, 48 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49500fdb..eab0cae0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,9 @@ FlatLaf Change Log - Extras: `FlatSVGIcon` color filters now can access painting component to implement component state based color mappings. (issue #906) - Linux: Added `libflatlaf-linux-arm64.so` for Linux on ARM64. (issue #899) +- Linux: Use X11 window manager events to resize window, if FlatLaf window + decorations are enabled. This gives FlatLaf windows a more "native" feeling. + (issue #866) - IntelliJ Themes: - Updated to latest versions and fixed various issues. - Support customizing through properties files. (issue #824) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLinuxLibrary.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLinuxLibrary.java index 952d0ece..6dc170e1 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLinuxLibrary.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLinuxLibrary.java @@ -49,8 +49,17 @@ class FlatNativeLinuxLibrary } // direction for _NET_WM_MOVERESIZE message - // see https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html - static final int MOVE = 8; + // see https://specifications.freedesktop.org/wm-spec/latest/ar01s04.html + static final int + SIZE_TOPLEFT = 0, + SIZE_TOP = 1, + SIZE_TOPRIGHT = 2, + SIZE_RIGHT = 3, + SIZE_BOTTOMRIGHT = 4, + SIZE_BOTTOM = 5, + SIZE_BOTTOMLEFT = 6, + SIZE_LEFT = 7, + MOVE = 8; private static Boolean isXWindowSystem; diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java index 06f75a2e..c63ac409 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowResizer.java @@ -188,7 +188,7 @@ public abstract class FlatWindowResizer protected abstract Dimension getWindowMinimumSize(); protected abstract Dimension getWindowMaximumSize(); - protected void beginResizing( int resizeDir ) {} + protected void beginResizing( int resizeDir, MouseEvent e ) {} protected void endResizing() {} //---- interface PropertyChangeListener ---- @@ -370,7 +370,25 @@ public abstract class FlatWindowResizer } @Override - protected void beginResizing( int resizeDir ) { + protected void beginResizing( int resizeDir, MouseEvent e ) { + // on Linux, resize window using window manager + if( SystemInfo.isLinux && window != null && FlatNativeLinuxLibrary.isWMUtilsSupported( window ) ) { + int direction = -1; + switch( resizeDir ) { + case N_RESIZE_CURSOR: direction = FlatNativeLinuxLibrary.SIZE_TOP; break; + case S_RESIZE_CURSOR: direction = FlatNativeLinuxLibrary.SIZE_BOTTOM; break; + case W_RESIZE_CURSOR: direction = FlatNativeLinuxLibrary.SIZE_LEFT; break; + case E_RESIZE_CURSOR: direction = FlatNativeLinuxLibrary.SIZE_RIGHT; break; + case NW_RESIZE_CURSOR: direction = FlatNativeLinuxLibrary.SIZE_TOPLEFT; break; + case NE_RESIZE_CURSOR: direction = FlatNativeLinuxLibrary.SIZE_TOPRIGHT; break; + case SW_RESIZE_CURSOR: direction = FlatNativeLinuxLibrary.SIZE_BOTTOMLEFT; break; + case SE_RESIZE_CURSOR: direction = FlatNativeLinuxLibrary.SIZE_BOTTOMRIGHT; break; + } + + if( direction >= 0 && FlatNativeLinuxLibrary.moveOrResizeWindow( window, e, direction ) ) + return; + } + centerComp.setBounds( 0, 0, resizeComp.getWidth(), resizeComp.getHeight() ); centerComp.setCursor( getPredefinedCursor( resizeDir ) ); centerComp.setVisible( true ); @@ -462,7 +480,7 @@ public abstract class FlatWindowResizer } @Override - protected void beginResizing( int resizeDir ) { + protected void beginResizing( int resizeDir, MouseEvent e ) { int direction = 0; switch( resizeDir ) { case N_RESIZE_CURSOR: direction = NORTH; break; @@ -581,7 +599,7 @@ debug*/ dragRightOffset = windowBounds.x + windowBounds.width - xOnScreen; dragBottomOffset = windowBounds.y + windowBounds.height - yOnScreen; - beginResizing( resizeDir ); + beginResizing( resizeDir, e ); } @Override diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties index c39995ff..db0f7d8b 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties @@ -564,8 +564,8 @@ RadioButtonMenuItem.background = @menuBackground #---- RootPane ---- RootPane.border = com.formdev.flatlaf.ui.FlatRootPaneUI$FlatWindowBorder -RootPane.borderDragThickness = 5 -RootPane.cornerDragWidth = 16 +RootPane.borderDragThickness = 6 +RootPane.cornerDragWidth = 32 RootPane.honorFrameMinimumSizeOnResize = false RootPane.honorDialogMinimumSizeOnResize = true diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt index a1c64d4f..6dfdc9a5 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt @@ -852,8 +852,8 @@ Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.F RootPane.activeBorderColor #4d5154 HSL 206 4 32 com.formdev.flatlaf.util.DerivedColor [UI] lighten(7% autoInverse) RootPane.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] RootPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRootPaneUI$FlatWindowBorder [UI] -RootPane.borderDragThickness 5 -RootPane.cornerDragWidth 16 +RootPane.borderDragThickness 6 +RootPane.cornerDragWidth 32 RootPane.defaultButtonWindowKeyBindings length=8 [Ljava.lang.Object; [0] ENTER [1] press diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt index b3e564d4..7c962f5c 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt @@ -857,8 +857,8 @@ Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.F RootPane.activeBorderColor #737373 HSL 0 0 45 com.formdev.flatlaf.util.DerivedColor [UI] darken(50% autoInverse) RootPane.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] RootPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRootPaneUI$FlatWindowBorder [UI] -RootPane.borderDragThickness 5 -RootPane.cornerDragWidth 16 +RootPane.borderDragThickness 6 +RootPane.cornerDragWidth 32 RootPane.defaultButtonWindowKeyBindings length=8 [Ljava.lang.Object; [0] ENTER [1] press diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt index 0392e80f..e3b2d2e2 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt @@ -861,8 +861,8 @@ Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.F RootPane.activeBorderColor #303030 HSL 0 0 19 com.formdev.flatlaf.util.DerivedColor [UI] lighten(7% autoInverse) RootPane.background #1e1e1e HSL 0 0 12 javax.swing.plaf.ColorUIResource [UI] RootPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRootPaneUI$FlatWindowBorder [UI] -RootPane.borderDragThickness 5 -RootPane.cornerDragWidth 16 +RootPane.borderDragThickness 6 +RootPane.cornerDragWidth 32 RootPane.defaultButtonWindowKeyBindings length=8 [Ljava.lang.Object; [0] ENTER [1] press diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt index 4dc02870..64ecd8e1 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt @@ -865,8 +865,8 @@ Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.F RootPane.activeBorderColor #777777 HSL 0 0 47 com.formdev.flatlaf.util.DerivedColor [UI] darken(50% autoInverse) RootPane.background #f6f6f6 HSL 0 0 96 javax.swing.plaf.ColorUIResource [UI] RootPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRootPaneUI$FlatWindowBorder [UI] -RootPane.borderDragThickness 5 -RootPane.cornerDragWidth 16 +RootPane.borderDragThickness 6 +RootPane.cornerDragWidth 32 RootPane.defaultButtonWindowKeyBindings length=8 [Ljava.lang.Object; [0] ENTER [1] press diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt index 8ffb24da..a597cd12 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt @@ -889,8 +889,8 @@ Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.F RootPane.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] RootPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRootPaneUI$FlatWindowBorder [UI] -RootPane.borderDragThickness 5 -RootPane.cornerDragWidth 16 +RootPane.borderDragThickness 6 +RootPane.cornerDragWidth 32 RootPane.defaultButtonWindowKeyBindings length=8 [Ljava.lang.Object; [0] ENTER [1] press From 5dc88a621086b4dcd3dc395896c9fb30f72e294f Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Thu, 6 Mar 2025 18:47:48 +0100 Subject: [PATCH 28/36] SwingX: moved `FlatMonthDownIcon` and `FlatMonthUpIcon` from `ui` to `icons` package --- .../flatlaf/swingx/{ui => icons}/FlatMonthDownIcon.java | 2 +- .../formdev/flatlaf/swingx/{ui => icons}/FlatMonthUpIcon.java | 2 +- .../resources/com/formdev/flatlaf/swingx/FlatLaf.properties | 4 ++-- flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt | 4 ++-- flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt | 4 ++-- flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt | 4 ++-- flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt | 4 ++-- flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt | 4 ++-- 8 files changed, 14 insertions(+), 14 deletions(-) rename flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/{ui => icons}/FlatMonthDownIcon.java (98%) rename flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/{ui => icons}/FlatMonthUpIcon.java (95%) diff --git a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatMonthDownIcon.java b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/icons/FlatMonthDownIcon.java similarity index 98% rename from flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatMonthDownIcon.java rename to flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/icons/FlatMonthDownIcon.java index a84c469b..49cc31aa 100644 --- a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatMonthDownIcon.java +++ b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/icons/FlatMonthDownIcon.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.formdev.flatlaf.swingx.ui; +package com.formdev.flatlaf.swingx.icons; import java.awt.BasicStroke; import java.awt.Color; diff --git a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatMonthUpIcon.java b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/icons/FlatMonthUpIcon.java similarity index 95% rename from flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatMonthUpIcon.java rename to flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/icons/FlatMonthUpIcon.java index 887d71e3..bb60247c 100644 --- a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatMonthUpIcon.java +++ b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/icons/FlatMonthUpIcon.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.formdev.flatlaf.swingx.ui; +package com.formdev.flatlaf.swingx.icons; import javax.swing.SwingConstants; diff --git a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLaf.properties b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLaf.properties index 862964cb..1ea97f34 100644 --- a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLaf.properties +++ b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLaf.properties @@ -43,8 +43,8 @@ JXHeader.descriptionFont = +0 #---- MonthView ---- -JXMonthView.monthDownFileName = {icon}com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon -JXMonthView.monthUpFileName = {icon}com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon +JXMonthView.monthDownFileName = {icon}com.formdev.flatlaf.swingx.icons.FlatMonthDownIcon +JXMonthView.monthUpFileName = {icon}com.formdev.flatlaf.swingx.icons.FlatMonthUpIcon JXMonthView.todayColor = @foreground JXMonthView.font = +0 diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt index 6dfdc9a5..9a59f3b3 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt @@ -447,10 +447,10 @@ JXMonthView.disabledArrowColor #a6a6a6 HSL 0 0 65 javax.swing.plaf.Colo JXMonthView.flaggedDayForeground #e05555 HSL 0 69 61 javax.swing.plaf.ColorUIResource [UI] JXMonthView.font [active] $defaultFont [UI] JXMonthView.leadingDayForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon [UI] +JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.icons.FlatMonthDownIcon [UI] JXMonthView.monthStringBackground #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthStringForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon [UI] +JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.icons.FlatMonthUpIcon [UI] JXMonthView.selectedBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] JXMonthView.todayColor #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JXMonthView.trailingDayForeground #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt index 7c962f5c..8aaca77d 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt @@ -452,10 +452,10 @@ JXMonthView.disabledArrowColor #808080 HSL 0 0 50 javax.swing.plaf.Colo JXMonthView.flaggedDayForeground #e02222 HSL 0 75 51 javax.swing.plaf.ColorUIResource [UI] JXMonthView.font [active] $defaultFont [UI] JXMonthView.leadingDayForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon [UI] +JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.icons.FlatMonthDownIcon [UI] JXMonthView.monthStringBackground #dfdfdf HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthStringForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon [UI] +JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.icons.FlatMonthUpIcon [UI] JXMonthView.selectedBackground #bfdaf2 HSL 208 66 85 javax.swing.plaf.ColorUIResource [UI] JXMonthView.todayColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] JXMonthView.trailingDayForeground #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt index e3b2d2e2..2f2465b4 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt @@ -453,10 +453,10 @@ JXMonthView.disabledArrowColor #9a9a9a HSL 0 0 60 javax.swing.plaf.Colo JXMonthView.flaggedDayForeground #e05555 HSL 0 69 61 javax.swing.plaf.ColorUIResource [UI] JXMonthView.font [active] $defaultFont [UI] JXMonthView.leadingDayForeground #9a9a9a HSL 0 0 60 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon [UI] +JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.icons.FlatMonthDownIcon [UI] JXMonthView.monthStringBackground #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthStringForeground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon [UI] +JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.icons.FlatMonthUpIcon [UI] JXMonthView.selectedBackground #0054cc HSL 215 100 40 javax.swing.plaf.ColorUIResource [UI] JXMonthView.todayColor #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JXMonthView.trailingDayForeground #9a9a9a HSL 0 0 60 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt index 64ecd8e1..822c7bff 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt @@ -457,10 +457,10 @@ JXMonthView.disabledArrowColor #7b7b7b HSL 0 0 48 javax.swing.plaf.Colo JXMonthView.flaggedDayForeground #e02222 HSL 0 75 51 javax.swing.plaf.ColorUIResource [UI] JXMonthView.font [active] $defaultFont [UI] JXMonthView.leadingDayForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon [UI] +JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.icons.FlatMonthDownIcon [UI] JXMonthView.monthStringBackground #dfdfdf HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthStringForeground #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon [UI] +JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.icons.FlatMonthUpIcon [UI] JXMonthView.selectedBackground #b3d2ff HSL 216 100 85 javax.swing.plaf.ColorUIResource [UI] JXMonthView.todayColor #262626 HSL 0 0 15 javax.swing.plaf.ColorUIResource [UI] JXMonthView.trailingDayForeground #7b7b7b HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt index a597cd12..02081b47 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt @@ -475,10 +475,10 @@ JXMonthView.disabledArrowColor #ababab HSL 0 0 67 javax.swing.plaf.Colo JXMonthView.flaggedDayForeground #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] JXMonthView.font [active] $defaultFont [UI] JXMonthView.leadingDayForeground #c0c0c0 HSL 0 0 75 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon [UI] +JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.icons.FlatMonthDownIcon [UI] JXMonthView.monthStringBackground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthStringForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon [UI] +JXMonthView.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.icons.FlatMonthUpIcon [UI] JXMonthView.selectedBackground #aaffaa HSL 120 100 83 javax.swing.plaf.ColorUIResource [UI] JXMonthView.todayColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] JXMonthView.trailingDayForeground #c0c0c0 HSL 0 0 75 javax.swing.plaf.ColorUIResource [UI] From babc8aa55d7d20b77f871f5046308a4ea03da217 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Fri, 7 Mar 2025 11:59:21 +0100 Subject: [PATCH 29/36] SwingX: support `JXTipOfTheDay` component (issue #980) --- CHANGELOG.md | 1 + flatlaf-swingx/README.md | 1 + .../swingx/icons/FlatTipOfTheDayIcon.java | 81 ++++++++++++++ .../flatlaf/swingx/ui/FlatTipOfTheDayUI.java | 105 ++++++++++++++++++ .../flatlaf/swingx/FlatDarkLaf.properties | 6 + .../formdev/flatlaf/swingx/FlatLaf.properties | 10 ++ .../flatlaf/swingx/FlatLightLaf.properties | 6 + .../dumps/uidefaults/FlatDarkLaf_1.8.0.txt | 16 +++ .../dumps/uidefaults/FlatLightLaf_1.8.0.txt | 16 +++ .../dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt | 16 +++ .../uidefaults/FlatMacLightLaf_1.8.0.txt | 16 +++ .../dumps/uidefaults/FlatTestLaf_1.8.0.txt | 14 +++ .../testing/swingx/FlatSwingXTest.java | 27 +++++ .../flatlaf/testing/swingx/FlatSwingXTest.jfd | 27 ++++- .../flatlaf/themeeditor/FlatLafUIKeys.txt | 8 ++ 15 files changed, 347 insertions(+), 3 deletions(-) create mode 100644 flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/icons/FlatTipOfTheDayIcon.java create mode 100644 flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatTipOfTheDayUI.java diff --git a/CHANGELOG.md b/CHANGELOG.md index eab0cae0..52587209 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ FlatLaf Change Log - IntelliJ Themes: - Updated to latest versions and fixed various issues. - Support customizing through properties files. (issue #824) +- SwingX: Support `JXTipOfTheDay` component. (issue #980) #### Fixed bugs diff --git a/flatlaf-swingx/README.md b/flatlaf-swingx/README.md index 0951e3c1..073ea926 100644 --- a/flatlaf-swingx/README.md +++ b/flatlaf-swingx/README.md @@ -16,6 +16,7 @@ this addon: - `JXMonthView` - `JXTaskPaneContainer` - `JXTaskPane` +- `JXTipOfTheDay` - `JXTitledPanel` ![Flat Light SwingX Demo](../images/FlatLightSwingXTest.png) diff --git a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/icons/FlatTipOfTheDayIcon.java b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/icons/FlatTipOfTheDayIcon.java new file mode 100644 index 00000000..0ab814e7 --- /dev/null +++ b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/icons/FlatTipOfTheDayIcon.java @@ -0,0 +1,81 @@ +/* + * Copyright 2025 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.swingx.icons; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics2D; +import java.awt.geom.Rectangle2D; +import javax.swing.UIManager; +import com.formdev.flatlaf.icons.FlatAbstractIcon; +import com.formdev.flatlaf.ui.FlatUIUtils; + +/** + * "light bulb" icon for {@link org.jdesktop.swingx.JXTipOfTheDay}. + * + * @uiDefault TipOfTheDay.icon.bulbColor Color + * @uiDefault TipOfTheDay.icon.socketColor Color + * + * @author Karl Tauber + * @since 3.6 + */ +public class FlatTipOfTheDayIcon + extends FlatAbstractIcon +{ + protected final Color bulbColor = UIManager.getColor( "TipOfTheDay.icon.bulbColor" ); + protected final Color socketColor = UIManager.getColor( "TipOfTheDay.icon.socketColor" ); + + public FlatTipOfTheDayIcon() { + super( 24, 24, null ); + } + + @Override + protected void paintIcon( Component c, Graphics2D g ) { + /* source: https://intellij-icons.jetbrains.design/#AllIcons-expui-codeInsight-intentionBulb + + + + + + + */ + + // scale because SVG coordinates are for 16x16 icon, but this icon is 24x24 + g.scale( 1.5, 1.5 ); + + g.setColor( socketColor ); + g.fill( new Rectangle2D.Double( 5.70142, 12, 4.6, 1 ) ); + + // M6 14H10C10 14.5523 9.55228 15 9 15H7C6.44772 15 6 14.5523 6 14Z + g.fill( FlatUIUtils.createPath( + 6,14, 10,14, + FlatUIUtils.CURVE_TO, 10,14.5523, 9.55228,15, 9,15, + 7,15, + FlatUIUtils.CURVE_TO, 6.44772,15, 6,14.5523, 6,14 ) ); + + g.setColor( bulbColor ); + + // M10.8704 9.14748C12.0417 8.27221 12.8 6.87465 12.8 5.3C12.8 2.64903 10.6509 0.5 7.99995 0.5C5.34898 0.5 3.19995 2.64903 3.19995 5.3C3.19995 6.87464 3.95817 8.27218 5.12943 9.14746L5.49994 11H10.4999L10.8704 9.14748Z + g.fill( FlatUIUtils.createPath( + 10.8704,9.14748, + FlatUIUtils.CURVE_TO, 12.0417,8.27221, 12.8,6.87465, 12.8,5.3, + FlatUIUtils.CURVE_TO, 12.8,2.64903, 10.6509,0.5, 7.99995,0.5, + FlatUIUtils.CURVE_TO, 5.34898,0.5, 3.19995,2.64903, 3.19995,5.3, + FlatUIUtils.CURVE_TO, 3.19995,6.87464, 3.95817,8.27218, 5.12943,9.14746, + 5.49994,11, 10.4999,11, 10.8704,9.14748 ) ); + } +} diff --git a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatTipOfTheDayUI.java b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatTipOfTheDayUI.java new file mode 100644 index 00000000..da81bd70 --- /dev/null +++ b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatTipOfTheDayUI.java @@ -0,0 +1,105 @@ +/* + * Copyright 2025 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.swingx.ui; + +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Insets; +import java.beans.PropertyChangeListener; +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JScrollPane; +import javax.swing.UIManager; +import javax.swing.plaf.ComponentUI; +import javax.swing.text.JTextComponent; +import org.jdesktop.swingx.JXTipOfTheDay; +import org.jdesktop.swingx.plaf.basic.BasicTipOfTheDayUI; +import com.formdev.flatlaf.ui.FlatEmptyBorder; +import com.formdev.flatlaf.ui.FlatUIUtils; +import com.formdev.flatlaf.util.UIScale; + +/** + * Provides the Flat LaF UI delegate for {@link org.jdesktop.swingx.JXTipOfTheDay}. + * + * @author Karl Tauber + * @since 3.6 + */ +public class FlatTipOfTheDayUI + extends BasicTipOfTheDayUI +{ + public static ComponentUI createUI( JComponent c ) { + return new FlatTipOfTheDayUI( (JXTipOfTheDay) c ); + } + + public FlatTipOfTheDayUI( JXTipOfTheDay tipPane ) { + super( tipPane ); + } + + @Override + protected void installComponents() { + // removing (no longer needed) children when switching from other Laf (e.g. Metal) + // BasicTipOfTheDayUI adds new components in installComponents(), but never + // removes them when switching theme, which results in duplicate children + tipPane.removeAll(); + + super.installComponents(); + + Insets tipAreaInsets = UIManager.getInsets( "TipOfTheDay.tipAreaInsets" ); + if( tipAreaInsets != null ) + tipArea.setBorder( FlatUIUtils.nonUIResource( new FlatEmptyBorder( tipAreaInsets ) ) ); + } + + @Override + protected void uninstallComponents() { + super.uninstallComponents(); + + // BasicTipOfTheDayUI adds new components in installComponents(), but never + // removes them when switching theme, which results in duplicate children + tipPane.removeAll(); + } + + @Override + protected PropertyChangeListener createChangeListener() { + PropertyChangeListener superListener = super.createChangeListener(); + return e -> { + superListener.propertyChange( e ); + + if( "model".equals( e.getPropertyName() ) ) + showCurrentTip(); + }; + } + + @Override + public Dimension getPreferredSize( JComponent c ) { + return UIScale.scale( super.getPreferredSize( c ) ); + } + + @Override + protected void showCurrentTip() { + super.showCurrentTip(); + + if( currentTipComponent instanceof JScrollPane ) { + JScrollPane scrollPane = (JScrollPane) currentTipComponent; + if( scrollPane.getBorder() == null ) + scrollPane.setBorder( BorderFactory.createEmptyBorder() ); + + Component view = scrollPane.getViewport().getView(); + if( view instanceof JTextComponent && ((JTextComponent)view).getBorder() == null ) + ((JTextComponent)view).setBorder( BorderFactory.createEmptyBorder() ); + } + } +} diff --git a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatDarkLaf.properties b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatDarkLaf.properties index c4243b72..f956c44a 100644 --- a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatDarkLaf.properties +++ b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatDarkLaf.properties @@ -77,3 +77,9 @@ TaskPane.titleOver = #888 TaskPane.specialTitleBackground = #afafaf TaskPane.specialTitleForeground = #222 TaskPane.specialTitleOver = #666 + + +#---- TipOfTheDay ---- + +TipOfTheDay.icon.bulbColor = #F2C55C +TipOfTheDay.icon.socketColor = #CED0D6 diff --git a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLaf.properties b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLaf.properties index 1ea97f34..f5c784b4 100644 --- a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLaf.properties +++ b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLaf.properties @@ -22,6 +22,7 @@ HeaderUI = com.formdev.flatlaf.swingx.ui.FlatHeaderUI HyperlinkUI = com.formdev.flatlaf.swingx.ui.FlatHyperlinkUI MonthViewUI = com.formdev.flatlaf.swingx.ui.FlatMonthViewUI swingx/TaskPaneUI = com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI +swingx/TipOfTheDayUI = com.formdev.flatlaf.swingx.ui.FlatTipOfTheDayUI TitledPanelUI = com.formdev.flatlaf.swingx.ui.FlatTitledPanelUI @@ -76,3 +77,12 @@ SearchField.popupPressedIcon = lazy(SearchField.popupIcon) SearchField.clearIcon = com.formdev.flatlaf.icons.FlatClearIcon SearchField.clearRolloverIcon = lazy(SearchField.clearIcon) SearchField.clearPressedIcon = lazy(SearchField.clearIcon) + + +#---- TipOfTheDay ---- + +TipOfTheDay.background = @componentBackground +TipOfTheDay.border = 1,1,1,1,$Component.borderColor +TipOfTheDay.tipAreaInsets = 4,16,4,16 +TipOfTheDay.icon = com.formdev.flatlaf.swingx.icons.FlatTipOfTheDayIcon +TipOfTheDay.font = +0 diff --git a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLightLaf.properties b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLightLaf.properties index b10ab028..d744e64c 100644 --- a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLightLaf.properties +++ b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLightLaf.properties @@ -77,3 +77,9 @@ TaskPane.titleOver = #666 TaskPane.specialTitleBackground = #afafaf TaskPane.specialTitleForeground = #222 TaskPane.specialTitleOver = #666 + + +#---- TipOfTheDay ---- + +TipOfTheDay.icon.bulbColor = #FFAF0F +TipOfTheDay.icon.socketColor = #6C707E diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt index 9a59f3b3..7ecb6604 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt @@ -1239,6 +1239,17 @@ TextPane.selectionForeground #eeeeee HSL 0 0 93 javax.swing.plaf.Colo TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI +#---- TipOfTheDay ---- + +TipOfTheDay.background #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#616365 HSL 210 2 39 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +TipOfTheDay.font [active] $defaultFont [UI] +TipOfTheDay.icon [lazy] 24,24 com.formdev.flatlaf.swingx.icons.FlatTipOfTheDayIcon [UI] +TipOfTheDay.icon.bulbColor #f2c55c HSL 42 85 65 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.icon.socketColor #ced0d6 HSL 225 9 82 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.tipAreaInsets 4,16,4,16 javax.swing.plaf.InsetsUIResource [UI] + + #---- TitlePane ---- TitlePane.background #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] @@ -1620,6 +1631,11 @@ small.font [active] Segoe UI plain 10 javax.swing.plaf.Fo swingx/TaskPaneUI com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI +#---- swingx/TipOfTheDay ---- + +swingx/TipOfTheDayUI com.formdev.flatlaf.swingx.ui.FlatTipOfTheDayUI + + #---- ---- text #46494b HSL 204 3 28 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt index 8aaca77d..b11db57d 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt @@ -1244,6 +1244,17 @@ TextPane.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.Colo TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI +#---- TipOfTheDay ---- + +TipOfTheDay.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#c2c2c2 HSL 0 0 76 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +TipOfTheDay.font [active] $defaultFont [UI] +TipOfTheDay.icon [lazy] 24,24 com.formdev.flatlaf.swingx.icons.FlatTipOfTheDayIcon [UI] +TipOfTheDay.icon.bulbColor #ffaf0f HSL 40 100 53 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.icon.socketColor #6c707e HSL 227 8 46 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.tipAreaInsets 4,16,4,16 javax.swing.plaf.InsetsUIResource [UI] + + #---- TitlePane ---- TitlePane.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] @@ -1625,6 +1636,11 @@ small.font [active] Segoe UI plain 10 javax.swing.plaf.Fo swingx/TaskPaneUI com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI +#---- swingx/TipOfTheDay ---- + +swingx/TipOfTheDayUI com.formdev.flatlaf.swingx.ui.FlatTipOfTheDayUI + + #---- ---- text #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt index 2f2465b4..be41dff7 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt @@ -1249,6 +1249,17 @@ TextPane.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.Colo TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI +#---- TipOfTheDay ---- + +TipOfTheDay.background #282828 HSL 0 0 16 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#ffffff19 10% HSLA 0 0 100 10 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +TipOfTheDay.font [active] $defaultFont [UI] +TipOfTheDay.icon [lazy] 24,24 com.formdev.flatlaf.swingx.icons.FlatTipOfTheDayIcon [UI] +TipOfTheDay.icon.bulbColor #f2c55c HSL 42 85 65 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.icon.socketColor #ced0d6 HSL 225 9 82 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.tipAreaInsets 4,16,4,16 javax.swing.plaf.InsetsUIResource [UI] + + #---- TitlePane ---- TitlePane.background #323232 HSL 0 0 20 javax.swing.plaf.ColorUIResource [UI] @@ -1630,6 +1641,11 @@ small.font [active] Segoe UI plain 10 javax.swing.plaf.Fo swingx/TaskPaneUI com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI +#---- swingx/TipOfTheDay ---- + +swingx/TipOfTheDayUI com.formdev.flatlaf.swingx.ui.FlatTipOfTheDayUI + + #---- ---- text #282828 HSL 0 0 16 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt index 822c7bff..e99b2145 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt @@ -1253,6 +1253,17 @@ TextPane.selectionForeground #262626 HSL 0 0 15 javax.swing.plaf.Colo TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI +#---- TipOfTheDay ---- + +TipOfTheDay.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#00000026 15% HSLA 0 0 0 15 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +TipOfTheDay.font [active] $defaultFont [UI] +TipOfTheDay.icon [lazy] 24,24 com.formdev.flatlaf.swingx.icons.FlatTipOfTheDayIcon [UI] +TipOfTheDay.icon.bulbColor #ffaf0f HSL 40 100 53 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.icon.socketColor #6c707e HSL 227 8 46 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.tipAreaInsets 4,16,4,16 javax.swing.plaf.InsetsUIResource [UI] + + #---- TitlePane ---- TitlePane.background #ececec HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] @@ -1634,6 +1645,11 @@ small.font [active] Segoe UI plain 10 javax.swing.plaf.Fo swingx/TaskPaneUI com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI +#---- swingx/TipOfTheDay ---- + +swingx/TipOfTheDayUI com.formdev.flatlaf.swingx.ui.FlatTipOfTheDayUI + + #---- ---- text #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt index 02081b47..d08a43b5 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt @@ -1289,6 +1289,15 @@ TextPane.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.Colo TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI +#---- TipOfTheDay ---- + +TipOfTheDay.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +TipOfTheDay.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +TipOfTheDay.font [active] $defaultFont [UI] +TipOfTheDay.icon [lazy] 24,24 com.formdev.flatlaf.swingx.icons.FlatTipOfTheDayIcon [UI] +TipOfTheDay.tipAreaInsets 4,16,4,16 javax.swing.plaf.InsetsUIResource [UI] + + #---- TitlePane ---- TitlePane.background #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] @@ -1679,6 +1688,11 @@ small.font [active] Segoe UI plain 10 javax.swing.plaf.Fo swingx/TaskPaneUI com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI +#---- swingx/TipOfTheDay ---- + +swingx/TipOfTheDayUI com.formdev.flatlaf.swingx.ui.FlatTipOfTheDayUI + + #---- ---- text #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.java index aef4ce5d..3767beb8 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.java @@ -24,6 +24,9 @@ import javax.swing.table.*; import net.miginfocom.swing.*; import org.jdesktop.swingx.*; import org.jdesktop.swingx.table.DatePickerCellEditor; +import org.jdesktop.swingx.tips.DefaultTip; +import org.jdesktop.swingx.tips.DefaultTipOfTheDayModel; +import org.jdesktop.swingx.tips.TipOfTheDayModel.Tip; import com.formdev.flatlaf.testing.FlatTestFrame; import com.formdev.flatlaf.testing.FlatTestPanel; @@ -69,6 +72,10 @@ public class FlatSwingXTest JProgressBar statusProgressBar = new JProgressBar(); statusProgressBar.setValue( 50 ); statusBar1.add( statusProgressBar, new JXStatusBar.Constraint( JXStatusBar.Constraint.ResizeBehavior.FILL ) ); + + xTipOfTheDay1.setModel( new DefaultTipOfTheDayModel( new Tip[] { + new DefaultTip( "testTip", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." ) + } ) ); } private void busyChanged() { @@ -77,6 +84,11 @@ public class FlatSwingXTest xBusyLabel2.setBusy( busy ); } + private void showTipOfTheDayDialog() { + JXTipOfTheDay tipOfTheDay = new JXTipOfTheDay( xTipOfTheDay1.getModel() ); + tipOfTheDay.showDialog( this ); + } + private void initComponents() { // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents JLabel label1 = new JLabel(); @@ -138,6 +150,9 @@ public class FlatSwingXTest JXSearchField xSearchField4 = new JXSearchField(); JLabel label12 = new JLabel(); statusBar1 = new JXStatusBar(); + JLabel label13 = new JLabel(); + xTipOfTheDay1 = new JXTipOfTheDay(); + JButton showTipOfTheDayDialogButton = new JButton(); JButton button1 = new JButton(); JButton button2 = new JButton(); @@ -163,6 +178,7 @@ public class FlatSwingXTest "[]" + "[]" + "[]" + + "[top]" + "[37]")); //---- label1 ---- @@ -471,6 +487,16 @@ public class FlatSwingXTest add(label12, "cell 0 11"); add(statusBar1, "cell 1 11 3 1,grow"); + //---- label13 ---- + label13.setText("JXTipOfTheDay:"); + add(label13, "cell 0 12"); + add(xTipOfTheDay1, "cell 1 12 3 1"); + + //---- showTipOfTheDayDialogButton ---- + showTipOfTheDayDialogButton.setText("Show Dialog..."); + showTipOfTheDayDialogButton.addActionListener(e -> showTipOfTheDayDialog()); + add(showTipOfTheDayDialogButton, "cell 1 12 3 1"); + //---- button1 ---- button1.setText("<"); @@ -492,5 +518,6 @@ public class FlatSwingXTest private JCheckBox busyCheckBox; private JTable table; private JXStatusBar statusBar1; + private JXTipOfTheDay xTipOfTheDay1; // JFormDesigner - End of variables declaration //GEN-END:variables } diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.jfd index aacfbab7..f8b1ee36 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.jfd +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/swingx/FlatSwingXTest.jfd @@ -1,4 +1,4 @@ -JFDML JFormDesigner: "7.0.5.0.404" Java: "17" encoding: "UTF-8" +JFDML JFormDesigner: "8.3" encoding: "UTF-8" new FormModel { contentType: "form/swing" @@ -9,7 +9,7 @@ new FormModel { add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) { "$layoutConstraints": "ltr,insets dialog,hidemode 3" "$columnConstraints": "[left][][][][fill]" - "$rowConstraints": "[]0[][]0[top][][][][][][][][][37]" + "$rowConstraints": "[]0[][]0[top][][][][][][][][][top][37]" } ) { name: "this" add( new FormComponent( "javax.swing.JLabel" ) { @@ -402,9 +402,30 @@ new FormModel { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 1 11 3 1,grow" } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label13" + "text": "JXTipOfTheDay:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 12" + } ) + add( new FormComponent( "org.jdesktop.swingx.JXTipOfTheDay" ) { + name: "xTipOfTheDay1" + auxiliary() { + "JavaCodeGenerator.variableLocal": false + } + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 12 3 1" + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "showTipOfTheDayDialogButton" + "text": "Show Dialog..." + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showTipOfTheDayDialog", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 12 3 1" + } ) }, new FormLayoutConstraints( null ) { "location": new java.awt.Point( 0, 0 ) - "size": new java.awt.Dimension( 795, 600 ) + "size": new java.awt.Dimension( 900, 820 ) } ) add( new FormComponent( "javax.swing.JButton" ) { name: "button1" diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt index a4fbca03..6bdfa4d2 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt @@ -1055,6 +1055,13 @@ TextPane.margin TextPane.selectionBackground TextPane.selectionForeground TextPaneUI +TipOfTheDay.background +TipOfTheDay.border +TipOfTheDay.font +TipOfTheDay.icon +TipOfTheDay.icon.bulbColor +TipOfTheDay.icon.socketColor +TipOfTheDay.tipAreaInsets TitlePane.background TitlePane.borderColor TitlePane.buttonHoverBackground @@ -1323,6 +1330,7 @@ scrollbar semibold.font small.font swingx/TaskPaneUI +swingx/TipOfTheDayUI text textHighlight textHighlightText From b43c3a9e005c7dbf8eb1932ba9c7965a30bb38d2 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Fri, 7 Mar 2025 23:01:03 +0400 Subject: [PATCH 30/36] Add Consulo to Software Development list --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 514b72db..42ece8d1 100644 --- a/README.md +++ b/README.md @@ -226,6 +226,7 @@ Applications using FlatLaf language created to learn programming - [lsfusion platform](https://github.com/lsfusion/platform) - information systems development platform +- ![New](images/new.svg) [Consulo](https://github.com/consulo/consulo) - open source cross-platform multi-language IDE (Java, .NET, JS, etc) ### Electrical From 86a4d0ab127a99c474b425fe5d28782985af0ef6 Mon Sep 17 00:00:00 2001 From: Valery Semenchuk Date: Sat, 8 Mar 2025 14:57:06 +0400 Subject: [PATCH 31/36] add "success" border color fix #945 --- .gitignore | 1 + .../formdev/flatlaf/FlatClientProperties.java | 7 ++ .../com/formdev/flatlaf/ui/FlatBorder.java | 7 ++ .../formdev/flatlaf/FlatDarkLaf.properties | 2 + .../formdev/flatlaf/FlatLightLaf.properties | 2 + .../flatlaf/demo/BasicComponentsPanel.java | 84 ++++++++++++------- 6 files changed, 73 insertions(+), 30 deletions(-) diff --git a/.gitignore b/.gitignore index dc40d0cb..6104e6c0 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ build/ .project .settings/ .idea/ +.consulo/ out/ *.iml *.ipr diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java index a1953cce..3a77b9c2 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java @@ -226,6 +226,13 @@ public interface FlatClientProperties */ String OUTLINE = "JComponent.outline"; + /** + * Paint the component border in another color (usually greenish) to indicate an success. + * + * @see #OUTLINE + */ + String OUTLINE_SUCCESS = "success"; + /** * Paint the component border in another color (usually reddish) to indicate an error. * diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatBorder.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatBorder.java index 6afcd0ee..d1e0da0a 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatBorder.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatBorder.java @@ -55,6 +55,8 @@ import com.formdev.flatlaf.util.DerivedColor; * @uiDefault Component.disabledBorderColor Color * @uiDefault Component.focusedBorderColor Color * + * @uiDefault Component.success.borderColor Color + * @uiDefault Component.success.focusedBorderColor Color * @uiDefault Component.error.borderColor Color * @uiDefault Component.error.focusedBorderColor Color * @uiDefault Component.warning.borderColor Color @@ -77,6 +79,8 @@ public class FlatBorder @Styleable protected Color disabledBorderColor = UIManager.getColor( "Component.disabledBorderColor" ); @Styleable protected Color focusedBorderColor = UIManager.getColor( "Component.focusedBorderColor" ); + @Styleable(dot=true) protected Color successBorderColor = UIManager.getColor( "Component.success.borderColor" ); + @Styleable(dot=true) protected Color successFocusedBorderColor = UIManager.getColor( "Component.success.focusedBorderColor" ); @Styleable(dot=true) protected Color errorBorderColor = UIManager.getColor( "Component.error.borderColor" ); @Styleable(dot=true) protected Color errorFocusedBorderColor = UIManager.getColor( "Component.error.focusedBorderColor" ); @Styleable(dot=true) protected Color warningBorderColor = UIManager.getColor( "Component.warning.borderColor" ); @@ -163,6 +167,9 @@ public class FlatBorder if( outline instanceof String ) { switch( (String) outline ) { + case FlatClientProperties.OUTLINE_SUCCESS: + return isFocused( c ) ? successFocusedBorderColor : successBorderColor; + case FlatClientProperties.OUTLINE_ERROR: return isFocused( c ) ? errorFocusedBorderColor : errorBorderColor; diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties index e6a3413d..0d3b45cd 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties @@ -183,6 +183,8 @@ Component.linkColor = @accentLinkColor Component.accentColor = if(@accentColor, @accentColor, @accentBaseColor) Component.grayFilter = -20,-70,100 +Component.success.borderColor = desaturate($Component.success.focusedBorderColor,25%) +Component.success.focusedBorderColor = #648b3c Component.error.borderColor = desaturate($Component.error.focusedBorderColor,25%) Component.error.focusedBorderColor = #8b3c3c Component.warning.borderColor = darken(desaturate($Component.warning.focusedBorderColor,20%),10%) diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties index 272c965d..fdc5454e 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties @@ -190,6 +190,8 @@ Component.linkColor = @accentLinkColor Component.accentColor = if(@accentColor, @accentColor, @accentBaseColor) Component.grayFilter = 25,-25,100 +Component.success.borderColor = lighten(desaturate($Component.success.focusedBorderColor,20%),25%) +Component.success.focusedBorderColor = #14dc92 Component.error.borderColor = lighten(desaturate($Component.error.focusedBorderColor,20%),25%) Component.error.focusedBorderColor = #e53e4d Component.warning.borderColor = lighten(saturate($Component.warning.focusedBorderColor,25%),20%) diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java index 8983809c..db14fa6e 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java @@ -179,6 +179,10 @@ class BasicComponentsPanel JScrollPane scrollPane12 = new JScrollPane(); JTextPane textPane4 = new JTextPane(); JTextPane textPane5 = new JTextPane(); + JLabel successHintsLabel = new JLabel(); + JTextField successHintsTextField = new JTextField(); + JComboBox successHintsComboBox = new JComboBox<>(); + JSpinner successHintsSpinner = new JSpinner(); JLabel errorHintsLabel = new JLabel(); JTextField errorHintsTextField = new JTextField(); JComboBox errorHintsComboBox = new JComboBox<>(); @@ -698,13 +702,33 @@ class BasicComponentsPanel textPane5.setText("No scroll pane"); add(textPane5, "cell 5 11,growx"); + //---- successHintsLabel ---- + successHintsLabel.setText("Success hints:"); + add(successHintsLabel, "cell 0 12"); + + //---- successHintsTextField ---- + successHintsTextField.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_SUCCESS); + add(successHintsTextField, "cell 1 12,growx"); + + //---- successHintsComboBox ---- + successHintsComboBox.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_SUCCESS); + successHintsComboBox.setModel(new DefaultComboBoxModel<>(new String[] { + "Editable" + })); + successHintsComboBox.setEditable(true); + add(successHintsComboBox, "cell 2 12,growx"); + + //---- successHintsSpinner ---- + successHintsSpinner.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_SUCCESS); + add(successHintsSpinner, "cell 3 12,growx"); + //---- errorHintsLabel ---- errorHintsLabel.setText("Error hints:"); - add(errorHintsLabel, "cell 0 12"); + add(errorHintsLabel, "cell 0 13"); //---- errorHintsTextField ---- errorHintsTextField.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_ERROR); - add(errorHintsTextField, "cell 1 12,growx"); + add(errorHintsTextField, "cell 1 13,growx"); //---- errorHintsComboBox ---- errorHintsComboBox.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_ERROR); @@ -712,131 +736,131 @@ class BasicComponentsPanel "Editable" })); errorHintsComboBox.setEditable(true); - add(errorHintsComboBox, "cell 2 12,growx"); + add(errorHintsComboBox, "cell 2 13,growx"); //---- errorHintsSpinner ---- errorHintsSpinner.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_ERROR); - add(errorHintsSpinner, "cell 3 12,growx"); + add(errorHintsSpinner, "cell 3 13,growx"); //---- warningHintsLabel ---- warningHintsLabel.setText("Warning hints:"); - add(warningHintsLabel, "cell 0 13"); + add(warningHintsLabel, "cell 0 14"); //---- warningHintsTextField ---- warningHintsTextField.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_WARNING); - add(warningHintsTextField, "cell 1 13,growx"); + add(warningHintsTextField, "cell 1 14,growx"); //---- warningHintsComboBox ---- warningHintsComboBox.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_WARNING); warningHintsComboBox.setModel(new DefaultComboBoxModel<>(new String[] { "Not editable" })); - add(warningHintsComboBox, "cell 2 13,growx"); + add(warningHintsComboBox, "cell 2 14,growx"); //---- warningHintsSpinner ---- warningHintsSpinner.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_WARNING); - add(warningHintsSpinner, "cell 3 13,growx"); + add(warningHintsSpinner, "cell 3 14,growx"); //---- iconsLabel ---- iconsLabel.setText("Leading/trailing icons:"); - add(iconsLabel, "cell 0 14"); - add(leadingIconTextField, "cell 1 14,growx"); + add(iconsLabel, "cell 0 15"); + add(leadingIconTextField, "cell 1 15,growx"); //---- trailingIconTextField ---- trailingIconTextField.setText("text"); - add(trailingIconTextField, "cell 2 14,growx"); + add(trailingIconTextField, "cell 2 15,growx"); //---- iconsTextField ---- iconsTextField.setText("text"); - add(iconsTextField, "cell 3 14,growx"); + add(iconsTextField, "cell 3 15,growx"); //---- compsLabel ---- compsLabel.setText("Leading/trailing comp.:"); add(compsLabel, "cell 0 15"); - add(compsTextField, "cell 1 15 2 1,growx"); + add(compsTextField, "cell 1 16 2 1,growx"); //---- clearTextField ---- clearTextField.setText("clear me"); - add(clearTextField, "cell 3 15,growx"); + add(clearTextField, "cell 3 16,growx"); //---- fontsLabel ---- fontsLabel.setText("Typography / Fonts:"); - add(fontsLabel, "cell 0 16"); + add(fontsLabel, "cell 0 17"); //---- h00Label ---- h00Label.setText("H00"); h00Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h00"); - add(h00Label, "cell 1 16 5 1"); + add(h00Label, "cell 1 17 5 1"); //---- h0Label ---- h0Label.setText("H0"); h0Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h0"); - add(h0Label, "cell 1 16 5 1"); + add(h0Label, "cell 1 17 5 1"); //---- h1Label ---- h1Label.setText("H1"); h1Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h1"); - add(h1Label, "cell 1 16 5 1"); + add(h1Label, "cell 1 17 5 1"); //---- h2Label ---- h2Label.setText("H2"); h2Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h2"); - add(h2Label, "cell 1 16 5 1"); + add(h2Label, "cell 1 17 5 1"); //---- h3Label ---- h3Label.setText("H3"); h3Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h3"); - add(h3Label, "cell 1 16 5 1"); + add(h3Label, "cell 1 17 5 1"); //---- h4Label ---- h4Label.setText("H4"); h4Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h4"); - add(h4Label, "cell 1 16 5 1"); + add(h4Label, "cell 1 17 5 1"); //---- lightLabel ---- lightLabel.setText("light"); lightLabel.putClientProperty(FlatClientProperties.STYLE, "font: 200% $light.font"); - add(lightLabel, "cell 1 16 5 1,gapx 30"); + add(lightLabel, "cell 1 17 5 1,gapx 30"); //---- semiboldLabel ---- semiboldLabel.setText("semibold"); semiboldLabel.putClientProperty(FlatClientProperties.STYLE, "font: 200% $semibold.font"); - add(semiboldLabel, "cell 1 16 5 1"); + add(semiboldLabel, "cell 1 17 5 1"); //---- fontZoomLabel ---- fontZoomLabel.setText("(200%)"); fontZoomLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "small"); fontZoomLabel.setEnabled(false); - add(fontZoomLabel, "cell 1 16 5 1"); + add(fontZoomLabel, "cell 1 17 5 1"); //---- largeLabel ---- largeLabel.setText("large"); largeLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "large"); - add(largeLabel, "cell 1 17 5 1"); + add(largeLabel, "cell 1 18 5 1"); //---- defaultLabel ---- defaultLabel.setText("default"); - add(defaultLabel, "cell 1 17 5 1"); + add(defaultLabel, "cell 1 18 5 1"); //---- mediumLabel ---- mediumLabel.setText("medium"); mediumLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "medium"); - add(mediumLabel, "cell 1 17 5 1"); + add(mediumLabel, "cell 1 18 5 1"); //---- smallLabel ---- smallLabel.setText("small"); smallLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "small"); - add(smallLabel, "cell 1 17 5 1"); + add(smallLabel, "cell 1 18 5 1"); //---- miniLabel ---- miniLabel.setText("mini"); miniLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "mini"); - add(miniLabel, "cell 1 17 5 1"); + add(miniLabel, "cell 1 18 5 1"); //---- monospacedLabel ---- monospacedLabel.setText("monospaced"); monospacedLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "monospaced"); - add(monospacedLabel, "cell 1 17 5 1,gapx 30"); + add(monospacedLabel, "cell 1 18 5 1,gapx 30"); //======== popupMenu1 ======== { From f7495a0a5ba3485b0487c38b8b7b35b8ce0ad762 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sat, 8 Mar 2025 18:11:38 +0100 Subject: [PATCH 32/36] - support key prefixes for Linux desktop environments (issue #974) - support custom key prefixes (issue #649) - support multi-prefixed keys - changed handling of prefixed keys --- CHANGELOG.md | 23 +++++ .../java/com/formdev/flatlaf/FlatLaf.java | 90 +++++++++++++++++++ .../com/formdev/flatlaf/UIDefaultsLoader.java | 74 +++++++-------- .../flatlaf/ui/FlatStylingSupport.java | 25 +++--- .../com/formdev/flatlaf/util/SystemInfo.java | 11 ++- .../com/formdev/flatlaf/FlatLaf.properties | 8 +- .../flatlaf/IntelliJTheme$ThemeLaf.properties | 4 +- .../flatlaf/UIDefaultsLoaderAccessor.java | 5 ++ .../themeeditor/FlatCompletionProvider.java | 11 ++- .../FlatThemePropertiesBaseManager.java | 11 ++- .../FlatThemePropertiesSupport.java | 35 ++++---- 11 files changed, 218 insertions(+), 79 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52587209..39833d21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,12 @@ FlatLaf Change Log - Updated to latest versions and fixed various issues. - Support customizing through properties files. (issue #824) - SwingX: Support `JXTipOfTheDay` component. (issue #980) +- Support key prefixes for Linux desktop environments (e.g. `[gnome]`, `[kde]` + or `[xfce]`) in properties files. (issue #974) +- Support custom key prefixes (e.g. `[win10]` or `[test]`) in properties files. + (issue #649) +- Support multi-prefixed keys (e.g. `[dark][gnome]TitlePane.buttonBackground`). + The value is only used if all prefixes match current platform/theme. #### Fixed bugs @@ -66,6 +72,23 @@ FlatLaf Change Log `com.formdev.flatlaf.intellijthemes.materialthemeuilite` from `Flat` to `FlatMT`. - Removed `Gruvbox Dark Medium` and `Gruvbox Dark Soft` themes. +- Prefixed keys in properties files (e.g. `[dark]Button.background` or + `[win]Button.arc`) are now handled earlier than before. In previous versions, + prefixed keys always had higher priority than unprefixed keys and did always + overwrite unprefixed keys. Now prefixed keys are handled in same order as + unprefixed keys, which means that if a key is prefixed and unprefixed (e.g. + `[win]Button.arc` and `Button.arc`), the one which is last specified in + properties file is used.\ + Following worked in previous versions, but now `Button.arc` is always `6`: + ~~~properties + [win]Button.arc = 12 + Button.arc = 6 + ~~~ + This works in new (and old) versions: + ~~~properties + Button.arc = 6 + [win]Button.arc = 12 + ~~~ ## 3.5.4 diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index 803783fe..06601bc1 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -37,6 +37,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; @@ -44,6 +45,7 @@ import java.util.MissingResourceException; import java.util.Properties; import java.util.ResourceBundle; import java.util.ServiceLoader; +import java.util.Set; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.IntUnaryOperator; @@ -100,6 +102,8 @@ public abstract class FlatLaf private static Map globalExtraDefaults; private Map extraDefaults; private static Function systemColorGetter; + private static Set uiKeyPlatformPrefixes; + private static Set uiKeySpecialPrefixes; private String desktopPropertyName; private String desktopPropertyName2; @@ -1122,6 +1126,92 @@ public abstract class FlatLaf FlatLaf.systemColorGetter = systemColorGetter; } + /** + * Returns UI key prefix, used in FlatLaf properties files, for light or dark themes. + * Return value is either {@code [light]} or {@code [dark]}. + * + * @since 3.6 + */ + public static String getUIKeyLightOrDarkPrefix( boolean dark ) { + return dark ? "[dark]" : "[light]"; + } + + /** + * Returns set of UI key prefixes, used in FlatLaf properties files, for current platform. + * If UI keys in properties files start with a prefix (e.g. {@code [someprefix]Button.background}), + * then they are only used if that prefix is contained in this set + * (or is one of {@code [light]} or {@code [dark]} depending on current theme). + *

+ * By default, the set contains one or more of following prefixes: + *

    + *
  • {@code [win]} on Windows + *
  • {@code [mac]} on macOS + *
  • {@code [linux]} on Linux + *
  • {@code [unknown]} on other platforms + *
  • {@code [gnome]} on Linux with GNOME desktop environment + *
  • {@code [kde]} on Linux with KDE desktop environment + *
  • on Linux, the value of the environment variable {@code XDG_CURRENT_DESKTOP}, + * split at colons and converted to lower case (e.g. if value of {@code XDG_CURRENT_DESKTOP} + * is {@code ubuntu:GNOME}, then {@code [ubuntu]} and {@code [gnome]}) + *
+ *

+ * You can add own prefixes to the set. + * The prefixes must start with '[' and end with ']' characters, otherwise they will be ignored. + * + * @since 3.6 + */ + public static Set getUIKeyPlatformPrefixes() { + if( uiKeyPlatformPrefixes == null ) { + uiKeyPlatformPrefixes = new HashSet<>(); + uiKeyPlatformPrefixes.add( + SystemInfo.isWindows ? "[win]" : + SystemInfo.isMacOS ? "[mac]" : + SystemInfo.isLinux ? "[linux]" : "[unknown]" ); + + // Linux + if( SystemInfo.isLinux ) { + if( SystemInfo.isGNOME ) + uiKeyPlatformPrefixes.add( "[gnome]" ); + else if( SystemInfo.isKDE ) + uiKeyPlatformPrefixes.add( "[kde]" ); + + // add values from XDG_CURRENT_DESKTOP for other desktops + String desktop = System.getenv( "XDG_CURRENT_DESKTOP" ); + if( desktop != null ) { + // XDG_CURRENT_DESKTOP is a colon-separated list of strings + // https://specifications.freedesktop.org/desktop-entry-spec/latest/recognized-keys.html#key-onlyshowin + // e.g. "ubuntu:GNOME" on Ubuntu 24.10 or "GNOME-Classic:GNOME" on CentOS 7 + for( String desk : StringUtils.split( desktop.toLowerCase( Locale.ENGLISH ), ':', true, true ) ) + uiKeyPlatformPrefixes.add( '[' + desk + ']' ); + } + } + } + return uiKeyPlatformPrefixes; + } + + /** + * Returns set of special UI key prefixes, used in FlatLaf properties files. + * Unlike other prefixes, properties with special prefixes are preserved. + * You can access them using `UIManager`. E.g. `UIManager.get( "[someSpecialPrefix]someKey" )`. + *

+ * By default, the set contains following special prefixes: + *

    + *
  • {@code [style]} + *
+ *

+ * You can add own prefixes to the set. + * The prefixes must start with '[' and end with ']' characters, otherwise they will be ignored. + * + * @since 3.6 + */ + public static Set getUIKeySpecialPrefixes() { + if( uiKeySpecialPrefixes == null ) { + uiKeySpecialPrefixes = new HashSet<>(); + uiKeySpecialPrefixes.add( "[style]" ); + } + return uiKeySpecialPrefixes; + } + private static void reSetLookAndFeel() { EventQueue.invokeLater( () -> { LookAndFeel lookAndFeel = UIManager.getLookAndFeel(); diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java index 6ab832cc..81a58196 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java @@ -41,6 +41,7 @@ import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; +import java.util.Set; import java.util.function.Consumer; import java.util.function.Function; import javax.swing.Icon; @@ -62,7 +63,6 @@ import com.formdev.flatlaf.util.HSLColor; import com.formdev.flatlaf.util.LoggingFacade; import com.formdev.flatlaf.util.SoftCache; import com.formdev.flatlaf.util.StringUtils; -import com.formdev.flatlaf.util.SystemInfo; import com.formdev.flatlaf.util.UIScale; /** @@ -105,6 +105,39 @@ class UIDefaultsLoader return lafClasses; } + static Properties newUIProperties( boolean dark ) { + // UI key prefixes + String lightOrDarkPrefix = FlatLaf.getUIKeyLightOrDarkPrefix( dark ); + Set platformPrefixes = FlatLaf.getUIKeyPlatformPrefixes(); + Set specialPrefixes = FlatLaf.getUIKeySpecialPrefixes(); + + return new Properties() { + @Override + public synchronized Object put( Object k, Object value ) { + // process key prefixes (while loading properties files) + String key = (String) k; + while( key.startsWith( "[" ) ) { + int closeIndex = key.indexOf( ']' ); + if( closeIndex < 0 ) + return null; // ignore property with invalid prefix + + String prefix = key.substring( 0, closeIndex + 1 ); + + if( specialPrefixes.contains( prefix ) ) + break; // keep special prefix + + if( !lightOrDarkPrefix.equals( prefix ) && !platformPrefixes.contains( prefix ) ) + return null; // ignore property + + // prefix is known and enabled --> remove prefix + key = key.substring( closeIndex + 1 ); + } + + return super.put( key, value ); + } + }; + } + static void loadDefaultsFromProperties( List> lafClasses, List addons, Consumer intellijThemesHook, Properties additionalDefaults, boolean dark, UIDefaults defaults ) { @@ -113,8 +146,10 @@ class UIDefaultsLoader // which avoids that system color getter is invoked multiple times systemColorCache = (FlatLaf.getSystemColorGetter() != null) ? new HashMap<>() : null; + // all properties files will be loaded into this map + Properties properties = newUIProperties( dark ); + // load core properties files - Properties properties = new Properties(); for( Class lafClass : lafClasses ) { String propertiesName = '/' + lafClass.getName().replace( '.', '/' ) + ".properties"; try( InputStream in = lafClass.getResourceAsStream( propertiesName ) ) { @@ -201,41 +236,6 @@ class UIDefaultsLoader if( additionalDefaults != null ) properties.putAll( additionalDefaults ); - // collect all platform specific keys (but do not modify properties) - ArrayList platformSpecificKeys = new ArrayList<>(); - for( Object okey : properties.keySet() ) { - String key = (String) okey; - if( key.startsWith( "[" ) && - (key.startsWith( "[win]" ) || - key.startsWith( "[mac]" ) || - key.startsWith( "[linux]" ) || - key.startsWith( "[light]" ) || - key.startsWith( "[dark]" )) ) - platformSpecificKeys.add( key ); - } - - // remove platform specific properties and re-add only properties - // for current platform, but with platform prefix removed - if( !platformSpecificKeys.isEmpty() ) { - // handle light/dark specific properties - String lightOrDarkPrefix = dark ? "[dark]" : "[light]"; - for( String key : platformSpecificKeys ) { - if( key.startsWith( lightOrDarkPrefix ) ) - properties.put( key.substring( lightOrDarkPrefix.length() ), properties.remove( key ) ); - } - - // handle platform specific properties - String platformPrefix = - SystemInfo.isWindows ? "[win]" : - SystemInfo.isMacOS ? "[mac]" : - SystemInfo.isLinux ? "[linux]" : "[unknown]"; - for( String key : platformSpecificKeys ) { - Object value = properties.remove( key ); - if( key.startsWith( platformPrefix ) ) - properties.put( key.substring( platformPrefix.length() ), value ); - } - } - // get (and remove) wildcard replacements, which override all other defaults that end with same suffix HashMap wildcards = new HashMap<>(); Iterator> it = properties.entrySet().iterator(); diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatStylingSupport.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatStylingSupport.java index e8c8bff8..ebb35271 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatStylingSupport.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatStylingSupport.java @@ -42,7 +42,6 @@ import com.formdev.flatlaf.FlatClientProperties; import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.util.HiDPIUtils; import com.formdev.flatlaf.util.StringUtils; -import com.formdev.flatlaf.util.SystemInfo; /** * Support for styling components in CSS syntax. @@ -325,22 +324,24 @@ public class FlatStylingSupport return null; Map oldValues = new HashMap<>(); + outer: for( Map.Entry e : style.entrySet() ) { String key = e.getKey(); Object newValue = e.getValue(); // handle key prefix - if( key.startsWith( "[" ) ) { - if( (SystemInfo.isWindows && key.startsWith( "[win]" )) || - (SystemInfo.isMacOS && key.startsWith( "[mac]" )) || - (SystemInfo.isLinux && key.startsWith( "[linux]" )) || - (key.startsWith( "[light]" ) && !FlatLaf.isLafDark()) || - (key.startsWith( "[dark]" ) && FlatLaf.isLafDark()) ) - { - // prefix is known and enabled --> remove prefix - key = key.substring( key.indexOf( ']' ) + 1 ); - } else - continue; + while( key.startsWith( "[" ) ) { + int closeIndex = key.indexOf( ']' ); + if( closeIndex < 0 ) + continue outer; + + String prefix = key.substring( 0, closeIndex + 1 ); + String lightOrDarkPrefix = FlatLaf.getUIKeyLightOrDarkPrefix( FlatLaf.isLafDark() ); + if( !lightOrDarkPrefix.equals( prefix ) && !FlatLaf.getUIKeyPlatformPrefixes().contains( prefix ) ) + continue outer; + + // prefix is known and enabled --> remove prefix + key = key.substring( closeIndex + 1 ); } Object oldValue = applyProperty.apply( key, newValue ); diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java index 81cf4b41..e60f177c 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java @@ -31,6 +31,7 @@ public class SystemInfo public static final boolean isWindows; public static final boolean isMacOS; public static final boolean isLinux; + /** @since 3.6 */ public static final boolean isUnknownOS; // OS versions public static final long osVersion; @@ -59,6 +60,7 @@ public class SystemInfo public static final boolean isJetBrainsJVM_11_orLater; // UI toolkits + /** @since 3.6 */ public static final boolean isGNOME; public static final boolean isKDE; // other @@ -75,6 +77,7 @@ public class SystemInfo isWindows = osName.startsWith( "windows" ); isMacOS = osName.startsWith( "mac" ); isLinux = osName.startsWith( "linux" ); + isUnknownOS = !isWindows && !isMacOS && !isLinux; // OS versions osVersion = scanVersion( System.getProperty( "os.version" ) ); @@ -104,7 +107,13 @@ public class SystemInfo isJetBrainsJVM_11_orLater = isJetBrainsJVM && isJava_11_orLater; // UI toolkits - isKDE = (isLinux && System.getenv( "KDE_FULL_SESSION" ) != null); + String desktop = isLinux ? System.getenv( "XDG_CURRENT_DESKTOP" ) : null; + isGNOME = (isLinux && + (System.getenv( "GNOME_DESKTOP_SESSION_ID" ) != null || + (desktop != null && desktop.contains( "GNOME" )))); + isKDE = (isLinux && + (System.getenv( "KDE_FULL_SESSION" ) != null || + (desktop != null && desktop.contains( "KDE" )))); // other isProjector = Boolean.getBoolean( "org.jetbrains.projector.server.enable" ); diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties index db0f7d8b..9a9f3c90 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties @@ -50,6 +50,9 @@ mini.font = -3 #defaultFont = ... # font weights +# fallback for unknown platform +light.font = +0 +semibold.font = +0 # Windows [win]light.font = "Segoe UI Light" [win]semibold.font = "Segoe UI Semibold" @@ -59,15 +62,12 @@ mini.font = -3 # Linux [linux]light.font = "Lato Light", "Ubuntu Light", "Cantarell Light" [linux]semibold.font = "Lato Semibold", "Ubuntu Medium", "Montserrat SemiBold" -# fallback for unknown platform -light.font = +0 -semibold.font = +0 # monospaced +monospaced.font = Monospaced [win]monospaced.font = Monospaced [mac]monospaced.font = Menlo, Monospaced [linux]monospaced.font = "Liberation Mono", "Ubuntu Mono", Monospaced -monospaced.font = Monospaced # styles [style].h00 = font: $h00.font diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties index d10d034f..77b2aef3 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties @@ -95,8 +95,8 @@ Spinner.buttonDisabledArrowColor = $ComboBox.buttonDisabledArrowColor #---- TabbedPane ---- # colors from JBUI.CurrentTheme.DefaultTabs.inactiveUnderlineColor() -[light]TabbedPane.inactiveUnderlineColor = #9ca7b8 -[dark]TabbedPane.inactiveUnderlineColor = #747a80 +{*-light}TabbedPane.inactiveUnderlineColor = #9ca7b8 +{*-dark}TabbedPane.inactiveUnderlineColor = #747a80 #---- ToggleButton ---- diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/UIDefaultsLoaderAccessor.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/UIDefaultsLoaderAccessor.java index a1093b39..209b99c5 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/UIDefaultsLoaderAccessor.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/UIDefaultsLoaderAccessor.java @@ -17,6 +17,7 @@ package com.formdev.flatlaf; import java.util.Collections; +import java.util.Properties; import java.util.function.Function; import com.formdev.flatlaf.UIDefaultsLoader.ValueType; @@ -72,4 +73,8 @@ public class UIDefaultsLoaderAccessor { return UIDefaultsLoader.parseColorRGBA( value ); } + + public static Properties newUIProperties( boolean dark ) { + return UIDefaultsLoader.newUIProperties( dark ); + } } diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java index 164e8a89..0bb400fb 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java @@ -41,6 +41,7 @@ import org.fife.ui.autocomplete.ParameterChoicesProvider; import org.fife.ui.autocomplete.ParameterizedCompletion; import org.fife.ui.autocomplete.ParameterizedCompletion.Parameter; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; +import com.formdev.flatlaf.FlatLaf; /** * @author Karl Tauber @@ -358,12 +359,18 @@ class FlatCompletionProvider lastKeys = keys; completions.clear(); + outer: for( String key : keys ) { - if( key.startsWith( "[" ) ) { + while( key.startsWith( "[" ) ) { // remove prefix int closeIndex = key.indexOf( ']' ); if( closeIndex < 0 ) - continue; + continue outer; + + String prefix = key.substring( 0, closeIndex + 1 ); + if( FlatLaf.getUIKeySpecialPrefixes().contains( prefix ) ) + continue outer; // can not reference properties with special prefix + key = key.substring( closeIndex + 1 ); } diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePropertiesBaseManager.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePropertiesBaseManager.java index f53faee1..ad2e0cfd 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePropertiesBaseManager.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePropertiesBaseManager.java @@ -76,14 +76,21 @@ class FlatThemePropertiesBaseManager definedCoreKeys = new HashSet<>(); for( Properties properties : coreThemes.values() ) { + outer: for( Object k : properties.keySet() ) { String key = (String) k; if( key.startsWith( "*." ) || key.startsWith( "@" ) ) continue; - if( key.startsWith( "[" ) ) { + + while( key.startsWith( "[" ) ) { int closeIndex = key.indexOf( ']' ); if( closeIndex < 0 ) - continue; + continue outer; + + String prefix = key.substring( 0, closeIndex + 1 ); + if( FlatLaf.getUIKeySpecialPrefixes().contains( prefix ) ) + break; // keep special prefix + key = key.substring( closeIndex + 1 ); } definedCoreKeys.add( key ); diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePropertiesSupport.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePropertiesSupport.java index 0f28c256..0ce5345b 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePropertiesSupport.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePropertiesSupport.java @@ -33,7 +33,6 @@ import javax.swing.event.DocumentListener; import javax.swing.plaf.basic.BasicLookAndFeel; import javax.swing.text.BadLocationException; import com.formdev.flatlaf.UIDefaultsLoaderAccessor; -import com.formdev.flatlaf.util.SystemInfo; /** * Supports parsing content of text area in FlatLaf properties syntax. @@ -54,17 +53,13 @@ class FlatThemePropertiesSupport private final Map parsedValueCache2 = new HashMap<>(); private Set allKeysCache; private String baseTheme; + private boolean lastDark; private static long globalCacheInvalidationCounter; private long cacheInvalidationCounter; private static Set wildcardKeys; - private static final String platformPrefix = - SystemInfo.isWindows ? "[win]" : - SystemInfo.isMacOS ? "[mac]" : - SystemInfo.isLinux ? "[linux]" : "[unknown]"; - FlatThemePropertiesSupport( FlatSyntaxTextArea textArea ) { this.textArea = textArea; @@ -115,6 +110,7 @@ class FlatThemePropertiesSupport private KeyValue getKeyValueAtLine( int line ) { try { + // get text at line int startOffset = textArea.getLineStartOffset( line ); int endOffset = textArea.getLineEndOffset( line ); String text = textArea.getText( startOffset, endOffset - startOffset ); @@ -134,11 +130,13 @@ class FlatThemePropertiesSupport text = text.substring( sepIndex + 1 ); } + // parse line Properties properties = new Properties(); properties.load( new StringReader( text ) ); if( properties.isEmpty() ) return null; + // get key and value for line String key = (String) properties.keys().nextElement(); String value = properties.getProperty( key ); return new KeyValue( key, value ); @@ -171,17 +169,7 @@ class FlatThemePropertiesSupport } private String getPropertyOrWildcard( String key ) { - // get platform specific properties - String value = getProperty( platformPrefix + key ); - if( value != null ) - return value; - - // get light/dark specific properties - value = getProperty( (isDark( getBaseTheme() ) ? "[dark]" : "[light]") + key ); - if( value != null ) - return value; - - value = getProperty( key ); + String value = getProperty( key ); if( value != null ) return value; @@ -213,9 +201,18 @@ class FlatThemePropertiesSupport if( propertiesCache != null ) return propertiesCache; - propertiesCache = new Properties(); + String text = textArea.getText(); try { - propertiesCache.load( new StringReader( textArea.getText() ) ); + propertiesCache = UIDefaultsLoaderAccessor.newUIProperties( lastDark ); + propertiesCache.load( new StringReader( text ) ); + + // re-load if dark has changed (getBaseTheme() invokes getProperties()!!!) + boolean dark = isDark( getBaseTheme() ); + if( lastDark != dark ) { + lastDark = dark; + propertiesCache = UIDefaultsLoaderAccessor.newUIProperties( lastDark ); + propertiesCache.load( new StringReader( text ) ); + } } catch( IOException ex ) { ex.printStackTrace(); //TODO } From 681c0cd4fe3881c837d8fd51f91d3c06e48ba3f8 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sat, 8 Mar 2025 19:30:14 +0100 Subject: [PATCH 33/36] HTML: fixed rendering of `


` in dark themes (issue #932) --- CHANGELOG.md | 1 + .../java/com/formdev/flatlaf/ui/StackUtils.java | 2 +- .../com/formdev/flatlaf/util/HiDPIUtils.java | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39833d21..a5822943 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ FlatLaf Change Log - Fixed loading FlatLaf UI delegate classes when using FlatLaf in special application where multiple class loaders are involved. E.g. in Eclipse plugin or in LibreOffice extension. (issues #955 and #851) +- HTML: Fixed rendering of `
` in dark themes. (issue #932) #### Incompatibilities diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/StackUtils.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/StackUtils.java index 0d833689..aff2ff08 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/StackUtils.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/StackUtils.java @@ -21,7 +21,7 @@ import java.util.function.BiPredicate; /** * @author Karl Tauber */ -class StackUtils +public class StackUtils { private static final StackUtils INSTANCE = new StackUtilsImpl(); diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java index 21976798..67af1f56 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java @@ -16,6 +16,7 @@ package com.formdev.flatlaf.util; +import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Graphics; @@ -27,7 +28,9 @@ import java.awt.geom.Rectangle2D; import java.text.AttributedCharacterIterator; import javax.swing.JComponent; import javax.swing.RepaintManager; +import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.FlatSystemProperties; +import com.formdev.flatlaf.ui.StackUtils; /** * @author Karl Tauber @@ -323,6 +326,19 @@ public class HiDPIUtils public void drawGlyphVector( GlyphVector g, float x, float y ) { super.drawGlyphVector( g, x, y + yCorrection ); } + + @Override + public void fillRect( int x, int y, int width, int height ) { + // fix hard coded black color in HRuleView.paint() of '
' + if( super.getColor() == Color.black && + StackUtils.wasInvokedFrom( "javax.swing.text.html.HRuleView", "paint", 4 ) ) + { + super.setColor( FlatLaf.isLafDark() ? Color.lightGray : Color.darkGray ); + super.fillRect( x, y, width, height ); + super.setColor( Color.black ); + } else + super.fillRect( x, y, width, height ); + } }; } From 0bc2513c4678a8b90dc8b5ee8d164ab9f53f1d80 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sun, 9 Mar 2025 00:15:00 +0100 Subject: [PATCH 34/36] for PR #982: - updated CHANGELOG.md - updated styling unit tests - updated UI defaults dumps - Demo: error/warning/success hints in a single row - Demo: reduced height of "Data comp" tab to make Demo window smaller - IntelliJ themes: fixed missing/overwritten success colors --- CHANGELOG.md | 2 + .../com/formdev/flatlaf/IntelliJTheme.java | 2 + .../flatlaf/ui/TestFlatStyleableInfo.java | 2 + .../flatlaf/ui/TestFlatStyleableValue.java | 4 + .../formdev/flatlaf/ui/TestFlatStyling.java | 4 + .../flatlaf/demo/BasicComponentsPanel.java | 98 ++++++----------- .../flatlaf/demo/BasicComponentsPanel.jfd | 101 ++++++------------ .../flatlaf/demo/DataComponentsPanel.java | 2 +- .../flatlaf/demo/DataComponentsPanel.jfd | 2 +- .../dumps/uidefaults/FlatDarkLaf_1.8.0.txt | 2 + .../dumps/uidefaults/FlatLightLaf_1.8.0.txt | 2 + .../dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt | 2 + .../uidefaults/FlatMacLightLaf_1.8.0.txt | 2 + .../flatlaf/themeeditor/FlatLafUIKeys.txt | 2 + 14 files changed, 94 insertions(+), 133 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5822943..a765fa48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,8 @@ FlatLaf Change Log (issue #649) - Support multi-prefixed keys (e.g. `[dark][gnome]TitlePane.buttonBackground`). The value is only used if all prefixes match current platform/theme. +- Support new component border color to indicate success state (set client + property `JComponent.outline` to `success`). (PR #982, issue #945) #### Fixed bugs diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java index d352d728..8992328d 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java @@ -725,6 +725,8 @@ public class IntelliJTheme uiKeyMapping.put( "Component.errorFocusColor", "Component.error.focusedBorderColor" ); uiKeyMapping.put( "Component.inactiveWarningFocusColor", "Component.warning.borderColor" ); uiKeyMapping.put( "Component.warningFocusColor", "Component.warning.focusedBorderColor" ); + uiKeyMapping.put( "Component.inactiveSuccessFocusColor", "Component.success.borderColor" ); + uiKeyMapping.put( "Component.successFocusColor", "Component.success.focusedBorderColor" ); // Label uiKeyMapping.put( "Label.disabledForegroundColor", "" ); // ignore (used in Material Theme UI Lite) diff --git a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableInfo.java b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableInfo.java index 56b97b77..4366f280 100644 --- a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableInfo.java +++ b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableInfo.java @@ -1080,6 +1080,8 @@ public class TestFlatStyleableInfo "error.focusedBorderColor", Color.class, "warning.borderColor", Color.class, "warning.focusedBorderColor", Color.class, + "success.borderColor", Color.class, + "success.focusedBorderColor", Color.class, "custom.borderColor", Color.class, "outline", String.class, diff --git a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableValue.java b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableValue.java index e0c0de16..d4276768 100644 --- a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableValue.java +++ b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyleableValue.java @@ -1024,6 +1024,8 @@ public class TestFlatStyleableValue testColor( c, ui, "error.focusedBorderColor", 0x123456 ); testColor( c, ui, "warning.borderColor", 0x123456 ); testColor( c, ui, "warning.focusedBorderColor", 0x123456 ); + testColor( c, ui, "success.borderColor", 0x123456 ); + testColor( c, ui, "success.focusedBorderColor", 0x123456 ); testColor( c, ui, "custom.borderColor", 0x123456 ); testString( c, ui, "outline", "error" ); @@ -1121,6 +1123,8 @@ public class TestFlatStyleableValue testValue( border, "error.focusedBorderColor", Color.WHITE ); testValue( border, "warning.borderColor", Color.WHITE ); testValue( border, "warning.focusedBorderColor", Color.WHITE ); + testValue( border, "success.borderColor", Color.WHITE ); + testValue( border, "success.focusedBorderColor", Color.WHITE ); testValue( border, "custom.borderColor", Color.WHITE ); } diff --git a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyling.java b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyling.java index 930f4376..a2057080 100644 --- a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyling.java +++ b/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatStyling.java @@ -1278,6 +1278,8 @@ public class TestFlatStyling applyStyle.accept( "error.focusedBorderColor: #fff" ); applyStyle.accept( "warning.borderColor: #fff" ); applyStyle.accept( "warning.focusedBorderColor: #fff" ); + applyStyle.accept( "success.borderColor: #fff" ); + applyStyle.accept( "success.focusedBorderColor: #fff" ); applyStyle.accept( "custom.borderColor: desaturate(#f00,50%,relative derived noAutoInverse)" ); applyStyle.accept( "outline: error" ); @@ -1363,6 +1365,8 @@ public class TestFlatStyling border.applyStyleProperty( "error.focusedBorderColor", Color.WHITE ); border.applyStyleProperty( "warning.borderColor", Color.WHITE ); border.applyStyleProperty( "warning.focusedBorderColor", Color.WHITE ); + border.applyStyleProperty( "success.borderColor", Color.WHITE ); + border.applyStyleProperty( "success.focusedBorderColor", Color.WHITE ); border.applyStyleProperty( "custom.borderColor", Color.WHITE ); } diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java index 8983809c..f9ccb6fd 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java @@ -179,14 +179,10 @@ class BasicComponentsPanel JScrollPane scrollPane12 = new JScrollPane(); JTextPane textPane4 = new JTextPane(); JTextPane textPane5 = new JTextPane(); - JLabel errorHintsLabel = new JLabel(); + JLabel hintsLabel = new JLabel(); JTextField errorHintsTextField = new JTextField(); - JComboBox errorHintsComboBox = new JComboBox<>(); - JSpinner errorHintsSpinner = new JSpinner(); - JLabel warningHintsLabel = new JLabel(); JTextField warningHintsTextField = new JTextField(); - JComboBox warningHintsComboBox = new JComboBox<>(); - JSpinner warningHintsSpinner = new JSpinner(); + JTextField successHintsTextField = new JTextField(); JLabel iconsLabel = new JLabel(); leadingIconTextField = new JTextField(); trailingIconTextField = new JTextField(); @@ -241,7 +237,6 @@ class BasicComponentsPanel "[]" + "[]" + "[]" + - "[]" + "[]0" + "[]")); @@ -698,145 +693,122 @@ class BasicComponentsPanel textPane5.setText("No scroll pane"); add(textPane5, "cell 5 11,growx"); - //---- errorHintsLabel ---- - errorHintsLabel.setText("Error hints:"); - add(errorHintsLabel, "cell 0 12"); + //---- hintsLabel ---- + hintsLabel.setText("Error/warning/success:"); + add(hintsLabel, "cell 0 12"); //---- errorHintsTextField ---- errorHintsTextField.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_ERROR); add(errorHintsTextField, "cell 1 12,growx"); - //---- errorHintsComboBox ---- - errorHintsComboBox.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_ERROR); - errorHintsComboBox.setModel(new DefaultComboBoxModel<>(new String[] { - "Editable" - })); - errorHintsComboBox.setEditable(true); - add(errorHintsComboBox, "cell 2 12,growx"); - - //---- errorHintsSpinner ---- - errorHintsSpinner.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_ERROR); - add(errorHintsSpinner, "cell 3 12,growx"); - - //---- warningHintsLabel ---- - warningHintsLabel.setText("Warning hints:"); - add(warningHintsLabel, "cell 0 13"); - //---- warningHintsTextField ---- warningHintsTextField.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_WARNING); - add(warningHintsTextField, "cell 1 13,growx"); + add(warningHintsTextField, "cell 2 12,growx"); - //---- warningHintsComboBox ---- - warningHintsComboBox.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_WARNING); - warningHintsComboBox.setModel(new DefaultComboBoxModel<>(new String[] { - "Not editable" - })); - add(warningHintsComboBox, "cell 2 13,growx"); - - //---- warningHintsSpinner ---- - warningHintsSpinner.putClientProperty(FlatClientProperties.OUTLINE, FlatClientProperties.OUTLINE_WARNING); - add(warningHintsSpinner, "cell 3 13,growx"); + //---- successHintsTextField ---- + successHintsTextField.putClientProperty(FlatClientProperties.OUTLINE, "success"); + add(successHintsTextField, "cell 3 12,growx"); //---- iconsLabel ---- iconsLabel.setText("Leading/trailing icons:"); - add(iconsLabel, "cell 0 14"); - add(leadingIconTextField, "cell 1 14,growx"); + add(iconsLabel, "cell 0 13"); + add(leadingIconTextField, "cell 1 13,growx"); //---- trailingIconTextField ---- trailingIconTextField.setText("text"); - add(trailingIconTextField, "cell 2 14,growx"); + add(trailingIconTextField, "cell 2 13,growx"); //---- iconsTextField ---- iconsTextField.setText("text"); - add(iconsTextField, "cell 3 14,growx"); + add(iconsTextField, "cell 3 13,growx"); //---- compsLabel ---- compsLabel.setText("Leading/trailing comp.:"); - add(compsLabel, "cell 0 15"); - add(compsTextField, "cell 1 15 2 1,growx"); + add(compsLabel, "cell 0 14"); + add(compsTextField, "cell 1 14 2 1,growx"); //---- clearTextField ---- clearTextField.setText("clear me"); - add(clearTextField, "cell 3 15,growx"); + add(clearTextField, "cell 3 14,growx"); //---- fontsLabel ---- fontsLabel.setText("Typography / Fonts:"); - add(fontsLabel, "cell 0 16"); + add(fontsLabel, "cell 0 15"); //---- h00Label ---- h00Label.setText("H00"); h00Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h00"); - add(h00Label, "cell 1 16 5 1"); + add(h00Label, "cell 1 15 5 1"); //---- h0Label ---- h0Label.setText("H0"); h0Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h0"); - add(h0Label, "cell 1 16 5 1"); + add(h0Label, "cell 1 15 5 1"); //---- h1Label ---- h1Label.setText("H1"); h1Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h1"); - add(h1Label, "cell 1 16 5 1"); + add(h1Label, "cell 1 15 5 1"); //---- h2Label ---- h2Label.setText("H2"); h2Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h2"); - add(h2Label, "cell 1 16 5 1"); + add(h2Label, "cell 1 15 5 1"); //---- h3Label ---- h3Label.setText("H3"); h3Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h3"); - add(h3Label, "cell 1 16 5 1"); + add(h3Label, "cell 1 15 5 1"); //---- h4Label ---- h4Label.setText("H4"); h4Label.putClientProperty(FlatClientProperties.STYLE_CLASS, "h4"); - add(h4Label, "cell 1 16 5 1"); + add(h4Label, "cell 1 15 5 1"); //---- lightLabel ---- lightLabel.setText("light"); lightLabel.putClientProperty(FlatClientProperties.STYLE, "font: 200% $light.font"); - add(lightLabel, "cell 1 16 5 1,gapx 30"); + add(lightLabel, "cell 1 15 5 1,gapx 30"); //---- semiboldLabel ---- semiboldLabel.setText("semibold"); semiboldLabel.putClientProperty(FlatClientProperties.STYLE, "font: 200% $semibold.font"); - add(semiboldLabel, "cell 1 16 5 1"); + add(semiboldLabel, "cell 1 15 5 1"); //---- fontZoomLabel ---- fontZoomLabel.setText("(200%)"); fontZoomLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "small"); fontZoomLabel.setEnabled(false); - add(fontZoomLabel, "cell 1 16 5 1"); + add(fontZoomLabel, "cell 1 15 5 1"); //---- largeLabel ---- largeLabel.setText("large"); largeLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "large"); - add(largeLabel, "cell 1 17 5 1"); + add(largeLabel, "cell 1 16 5 1"); //---- defaultLabel ---- defaultLabel.setText("default"); - add(defaultLabel, "cell 1 17 5 1"); + add(defaultLabel, "cell 1 16 5 1"); //---- mediumLabel ---- mediumLabel.setText("medium"); mediumLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "medium"); - add(mediumLabel, "cell 1 17 5 1"); + add(mediumLabel, "cell 1 16 5 1"); //---- smallLabel ---- smallLabel.setText("small"); smallLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "small"); - add(smallLabel, "cell 1 17 5 1"); + add(smallLabel, "cell 1 16 5 1"); //---- miniLabel ---- miniLabel.setText("mini"); miniLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "mini"); - add(miniLabel, "cell 1 17 5 1"); + add(miniLabel, "cell 1 16 5 1"); //---- monospacedLabel ---- monospacedLabel.setText("monospaced"); monospacedLabel.putClientProperty(FlatClientProperties.STYLE_CLASS, "monospaced"); - add(monospacedLabel, "cell 1 17 5 1,gapx 30"); + add(monospacedLabel, "cell 1 16 5 1,gapx 30"); //======== popupMenu1 ======== { @@ -875,8 +847,7 @@ class BasicComponentsPanel editorPaneLabel, scrollPane5, scrollPane6, scrollPane7, scrollPane8, editorPane5, textPaneLabel, scrollPane9, scrollPane10, scrollPane11, scrollPane12, textPane5, - errorHintsLabel, errorHintsTextField, errorHintsComboBox, errorHintsSpinner, - warningHintsLabel, warningHintsTextField, warningHintsComboBox, warningHintsSpinner, + hintsLabel, errorHintsTextField, warningHintsTextField, successHintsTextField, fontZoomLabel, }; @@ -899,8 +870,7 @@ class BasicComponentsPanel rows[11].setGapBefore( zeroGap ); rows[11].setGapAfter( zeroGap ); rows[12].setGapBefore( zeroGap ); - rows[13].setGapBefore( zeroGap ); - rows[16].setGapBefore( zeroGap ); + rows[15].setGapBefore( zeroGap ); layout.setRowConstraints( ac ); // move two text field into same row as spinners diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd index a7e257b3..f287164c 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd @@ -1,4 +1,4 @@ -JFDML JFormDesigner: "7.0.5.0.404" Java: "17" encoding: "UTF-8" +JFDML JFormDesigner: "8.3" encoding: "UTF-8" new FormModel { contentType: "form/swing" @@ -9,7 +9,7 @@ new FormModel { add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) { "$layoutConstraints": "insets dialog,hidemode 3" "$columnConstraints": "[][sizegroup 1][sizegroup 1][sizegroup 1][][]" - "$rowConstraints": "[][][][][][][][][][][][]para[][][][][]0[]" + "$rowConstraints": "[][][][][][][][][][][][]para[][][][]0[]" } ) { name: "this" add( new FormComponent( "javax.swing.JLabel" ) { @@ -595,8 +595,8 @@ new FormModel { "value": "cell 5 11,growx" } ) add( new FormComponent( "javax.swing.JLabel" ) { - name: "errorHintsLabel" - "text": "Error hints:" + name: "hintsLabel" + "text": "Error/warning/success:" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 0 12" } ) @@ -606,56 +606,23 @@ new FormModel { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 1 12,growx" } ) - add( new FormComponent( "javax.swing.JComboBox" ) { - name: "errorHintsComboBox" - "$client.JComponent.outline": "error" - "model": new javax.swing.DefaultComboBoxModel { - selectedItem: "Editable" - addElement( "Editable" ) - } - "editable": true - }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 2 12,growx" - } ) - add( new FormComponent( "javax.swing.JSpinner" ) { - name: "errorHintsSpinner" - "$client.JComponent.outline": "error" - }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 3 12,growx" - } ) - add( new FormComponent( "javax.swing.JLabel" ) { - name: "warningHintsLabel" - "text": "Warning hints:" - }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 0 13" - } ) add( new FormComponent( "javax.swing.JTextField" ) { name: "warningHintsTextField" "$client.JComponent.outline": "warning" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 13,growx" + "value": "cell 2 12,growx" } ) - add( new FormComponent( "javax.swing.JComboBox" ) { - name: "warningHintsComboBox" - "$client.JComponent.outline": "warning" - "model": new javax.swing.DefaultComboBoxModel { - selectedItem: "Not editable" - addElement( "Not editable" ) - } + add( new FormComponent( "javax.swing.JTextField" ) { + name: "successHintsTextField" + "$client.JComponent.outline": "success" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 2 13,growx" - } ) - add( new FormComponent( "javax.swing.JSpinner" ) { - name: "warningHintsSpinner" - "$client.JComponent.outline": "warning" - }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 3 13,growx" + "value": "cell 3 12,growx" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "iconsLabel" "text": "Leading/trailing icons:" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 0 14" + "value": "cell 0 13" } ) add( new FormComponent( "javax.swing.JTextField" ) { name: "leadingIconTextField" @@ -663,7 +630,7 @@ new FormModel { "JavaCodeGenerator.variableLocal": false } }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 14,growx" + "value": "cell 1 13,growx" } ) add( new FormComponent( "javax.swing.JTextField" ) { name: "trailingIconTextField" @@ -672,7 +639,7 @@ new FormModel { "JavaCodeGenerator.variableLocal": false } }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 2 14,growx" + "value": "cell 2 13,growx" } ) add( new FormComponent( "javax.swing.JTextField" ) { name: "iconsTextField" @@ -681,13 +648,13 @@ new FormModel { "JavaCodeGenerator.variableLocal": false } }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 3 14,growx" + "value": "cell 3 13,growx" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "compsLabel" "text": "Leading/trailing comp.:" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 0 15" + "value": "cell 0 14" } ) add( new FormComponent( "javax.swing.JTextField" ) { name: "compsTextField" @@ -695,7 +662,7 @@ new FormModel { "JavaCodeGenerator.variableLocal": false } }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 15 2 1,growx" + "value": "cell 1 14 2 1,growx" } ) add( new FormComponent( "javax.swing.JTextField" ) { name: "clearTextField" @@ -704,69 +671,69 @@ new FormModel { "JavaCodeGenerator.variableLocal": false } }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 3 15,growx" + "value": "cell 3 14,growx" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "fontsLabel" "text": "Typography / Fonts:" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 0 16" + "value": "cell 0 15" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h00Label" "text": "H00" "$client.FlatLaf.styleClass": "h00" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 15 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h0Label" "text": "H0" "$client.FlatLaf.styleClass": "h0" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 15 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h1Label" "text": "H1" "$client.FlatLaf.styleClass": "h1" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 15 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h2Label" "text": "H2" "$client.FlatLaf.styleClass": "h2" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 15 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h3Label" "text": "H3" "$client.FlatLaf.styleClass": "h3" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 15 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "h4Label" "text": "H4" "$client.FlatLaf.styleClass": "h4" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 15 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "lightLabel" "text": "light" "$client.FlatLaf.style": "font: 200% $light.font" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1,gapx 30" + "value": "cell 1 15 5 1,gapx 30" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "semiboldLabel" "text": "semibold" "$client.FlatLaf.style": "font: 200% $semibold.font" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 15 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "fontZoomLabel" @@ -774,52 +741,52 @@ new FormModel { "$client.FlatLaf.styleClass": "small" "enabled": false }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 16 5 1" + "value": "cell 1 15 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "largeLabel" "text": "large" "$client.FlatLaf.styleClass": "large" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 17 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "defaultLabel" "text": "default" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 17 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "mediumLabel" "text": "medium" "$client.FlatLaf.styleClass": "medium" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 17 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "smallLabel" "text": "small" "$client.FlatLaf.styleClass": "small" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 17 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "miniLabel" "text": "mini" "$client.FlatLaf.styleClass": "mini" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 17 5 1" + "value": "cell 1 16 5 1" } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "monospacedLabel" "text": "monospaced" "$client.FlatLaf.styleClass": "monospaced" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 17 5 1,gapx 30" + "value": "cell 1 16 5 1,gapx 30" } ) }, new FormLayoutConstraints( null ) { "location": new java.awt.Point( 0, 0 ) - "size": new java.awt.Dimension( 920, 550 ) + "size": new java.awt.Dimension( 840, 565 ) } ) add( new FormContainer( "javax.swing.JPopupMenu", new FormLayoutManager( class javax.swing.JPopupMenu ) ) { name: "popupMenu1" @@ -839,7 +806,7 @@ new FormModel { "mnemonic": 80 } ) }, new FormLayoutConstraints( null ) { - "location": new java.awt.Point( 0, 570 ) + "location": new java.awt.Point( 0, 605 ) "size": new java.awt.Dimension( 91, 87 ) } ) } diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.java index 25aeb28b..fd17f93a 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.java @@ -252,7 +252,7 @@ class DataComponentsPanel "[]" + "[150,grow,sizegroup 1,fill]" + "[150,grow,sizegroup 1,fill]" + - "[150,grow,sizegroup 1,fill]")); + "[150,grow,fill]")); //---- label1 ---- label1.setText("Square Selection"); diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.jfd index c51f3cfb..1527eb9e 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.jfd +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.jfd @@ -9,7 +9,7 @@ new FormModel { add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) { "$layoutConstraints": "insets dialog,hidemode 3" "$columnConstraints": "[][150,fill][150,fill][150,fill][fill]" - "$rowConstraints": "[][150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill]" + "$rowConstraints": "[][150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill][150,grow,fill]" } ) { name: "this" add( new FormComponent( "javax.swing.JLabel" ) { diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt index 7ecb6604..d5866f93 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt @@ -250,6 +250,8 @@ Component.innerFocusWidth 0.5 Component.innerOutlineWidth 1 Component.linkColor #579bf6 HSL 214 90 65 javax.swing.plaf.ColorUIResource [UI] Component.minimumWidth 64 +Component.success.borderColor #647255 HSL 89 15 39 javax.swing.plaf.ColorUIResource [UI] +Component.success.focusedBorderColor #648b3c HSL 90 40 39 javax.swing.plaf.ColorUIResource [UI] Component.warning.borderColor #725627 HSL 38 49 30 javax.swing.plaf.ColorUIResource [UI] Component.warning.focusedBorderColor #ac7920 HSL 38 69 40 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt index b11db57d..8e36270a 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt @@ -254,6 +254,8 @@ Component.innerFocusWidth 0.5 Component.innerOutlineWidth 1 Component.linkColor #236db2 HSL 209 67 42 javax.swing.plaf.ColorUIResource [UI] Component.minimumWidth 64 +Component.success.borderColor #8be5c4 HSL 158 63 72 javax.swing.plaf.ColorUIResource [UI] +Component.success.focusedBorderColor #14dc92 HSL 158 83 47 javax.swing.plaf.ColorUIResource [UI] Component.warning.borderColor #fed284 HSL 38 98 76 javax.swing.plaf.ColorUIResource [UI] Component.warning.focusedBorderColor #e2a53a HSL 38 74 56 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt index be41dff7..6c876704 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacDarkLaf_1.8.0.txt @@ -256,6 +256,8 @@ Component.innerFocusWidth 0 Component.innerOutlineWidth 0 Component.linkColor #007aff HSL 211 100 50 javax.swing.plaf.ColorUIResource [UI] Component.minimumWidth 64 +Component.success.borderColor #647255 HSL 89 15 39 javax.swing.plaf.ColorUIResource [UI] +Component.success.focusedBorderColor #648b3c HSL 90 40 39 javax.swing.plaf.ColorUIResource [UI] Component.warning.borderColor #725627 HSL 38 49 30 javax.swing.plaf.ColorUIResource [UI] Component.warning.focusedBorderColor #ac7920 HSL 38 69 40 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt index e99b2145..89d3bce3 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatMacLightLaf_1.8.0.txt @@ -260,6 +260,8 @@ Component.innerFocusWidth 0 Component.innerOutlineWidth 0 Component.linkColor #007aff HSL 211 100 50 javax.swing.plaf.ColorUIResource [UI] Component.minimumWidth 64 +Component.success.borderColor #8be5c4 HSL 158 63 72 javax.swing.plaf.ColorUIResource [UI] +Component.success.focusedBorderColor #14dc92 HSL 158 83 47 javax.swing.plaf.ColorUIResource [UI] Component.warning.borderColor #fed284 HSL 38 98 76 javax.swing.plaf.ColorUIResource [UI] Component.warning.focusedBorderColor #e2a53a HSL 38 74 56 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt index 6bdfa4d2..9d4f9b76 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt @@ -272,6 +272,8 @@ Component.innerFocusWidth Component.innerOutlineWidth Component.linkColor Component.minimumWidth +Component.success.borderColor +Component.success.focusedBorderColor Component.warning.borderColor Component.warning.focusedBorderColor DatePickerUI From c486f695f2bee81537ef0e29c741625704e08e4c Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sun, 9 Mar 2025 13:31:38 +0100 Subject: [PATCH 35/36] Testing: support interprocess Laf sync (enable/disable with `Alt+Shift+S`) --- .../com/formdev/flatlaf/demo/ControlBar.java | 3 + .../com/formdev/flatlaf/demo/DemoPrefs.java | 170 +++++++++++++++--- .../testing/FlatSingleComponentTest.java | 3 + .../flatlaf/testing/FlatTestFrame.java | 3 + 4 files changed, 155 insertions(+), 24 deletions(-) diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java index 338cee55..095b101c 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java @@ -156,6 +156,9 @@ class ControlBar // register Alt+Shift+F1, F2, ... keys to change system scale factor DemoPrefs.registerSystemScaleFactors( frame ); + // register Alt+Shift+S to enable/disable interprocess Laf sync + DemoPrefs.initLafSync( frame ); + // register ESC key to close frame ((JComponent)frame.getContentPane()).registerKeyboardAction( e -> { diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java index 22349eed..a7c89bb1 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoPrefs.java @@ -16,8 +16,15 @@ package com.formdev.flatlaf.demo; +import java.awt.EventQueue; import java.io.File; import java.io.FileInputStream; +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.InetAddress; +import java.net.MulticastSocket; +import java.net.SocketException; +import java.nio.ByteBuffer; import java.util.prefs.Preferences; import javax.swing.JComponent; import javax.swing.JFrame; @@ -40,6 +47,7 @@ public class DemoPrefs public static final String KEY_LAF_CLASS_NAME = "lafClassName"; public static final String KEY_LAF_THEME_FILE = "lafThemeFile"; public static final String KEY_SYSTEM_SCALE_FACTOR = "systemScaleFactor"; + public static final String KEY_LAF_SYNC = "lafSync"; private static Preferences state; @@ -58,25 +66,8 @@ public class DemoPrefs try { if( args.length > 0 ) UIManager.setLookAndFeel( args[0] ); - else { - String lafClassName = state.get( KEY_LAF_CLASS_NAME, FlatLightLaf.class.getName() ); - if( FlatPropertiesLaf.class.getName().equals( lafClassName ) || - IntelliJTheme.ThemeLaf.class.getName().equals( lafClassName ) ) - { - String themeFileName = state.get( KEY_LAF_THEME_FILE, "" ); - if( !themeFileName.isEmpty() ) { - File themeFile = new File( themeFileName ); - - if( themeFileName.endsWith( ".properties" ) ) { - String themeName = StringUtils.removeTrailing( themeFile.getName(), ".properties" ); - FlatLaf.setup( new FlatPropertiesLaf( themeName, themeFile ) ); - } else - FlatLaf.setup( IntelliJTheme.createLaf( new FileInputStream( themeFile ) ) ); - } else - FlatLightLaf.setup(); - } else - UIManager.setLookAndFeel( lafClassName ); - } + else + restoreLaf(); } catch( Throwable ex ) { LoggingFacade.INSTANCE.logSevere( null, ex ); @@ -86,16 +77,44 @@ public class DemoPrefs // remember active look and feel UIManager.addPropertyChangeListener( e -> { - if( "lookAndFeel".equals( e.getPropertyName() ) ) + if( "lookAndFeel".equals( e.getPropertyName() ) ) { state.put( KEY_LAF_CLASS_NAME, UIManager.getLookAndFeel().getClass().getName() ); + notifyLafChange(); + } } ); } + private static void restoreLaf() + throws Exception + { + String lafClassName = state.get( KEY_LAF_CLASS_NAME, FlatLightLaf.class.getName() ); + if( FlatPropertiesLaf.class.getName().equals( lafClassName ) || + IntelliJTheme.ThemeLaf.class.getName().equals( lafClassName ) ) + { + String themeFileName = state.get( KEY_LAF_THEME_FILE, "" ); + if( !themeFileName.isEmpty() ) { + File themeFile = new File( themeFileName ); + + if( themeFileName.endsWith( ".properties" ) ) { + String themeName = StringUtils.removeTrailing( themeFile.getName(), ".properties" ); + FlatLaf.setup( new FlatPropertiesLaf( themeName, themeFile ) ); + } else + FlatLaf.setup( IntelliJTheme.createLaf( new FileInputStream( themeFile ) ) ); + } else + FlatLightLaf.setup(); + } else + UIManager.setLookAndFeel( lafClassName ); + } + public static void initSystemScale() { if( System.getProperty( "sun.java2d.uiScale" ) == null ) { - String scaleFactor = getState().get( KEY_SYSTEM_SCALE_FACTOR, null ); - if( scaleFactor != null ) + String scaleFactor = state.get( KEY_SYSTEM_SCALE_FACTOR, null ); + if( scaleFactor != null ) { System.setProperty( "sun.java2d.uiScale", scaleFactor ); + + System.out.println( "FlatLaf: setting 'sun.java2d.uiScale' to " + scaleFactor ); + System.out.println( " use 'Alt+Shift+F1...12' to change it to 1x...4x" ); + } } } @@ -146,10 +165,113 @@ public class DemoPrefs return; if( scaleFactor != null ) - DemoPrefs.getState().put( KEY_SYSTEM_SCALE_FACTOR, scaleFactor ); + state.put( KEY_SYSTEM_SCALE_FACTOR, scaleFactor ); else - DemoPrefs.getState().remove( KEY_SYSTEM_SCALE_FACTOR ); + state.remove( KEY_SYSTEM_SCALE_FACTOR ); System.exit( 0 ); } + + //---- inter-process Laf change notification/synchronisation -------------- + + // used for FlatLaf development when running multiple testing apps + + private static final String MULTICAST_ADDRESS = "224.63.31.41"; + private static final int MULTICAST_PORT = 36584; + private static final long PROCESS_ID = System.nanoTime(); + + private static Thread thread; + private static boolean notifyEnabled = true; + + public static void initLafSync( JFrame frame ) { + ((JComponent)frame.getContentPane()).registerKeyboardAction( + e -> enableDisableLafSync(), + KeyStroke.getKeyStroke( "alt shift S" ), + JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT ); + + if( state.getBoolean( KEY_LAF_SYNC, false ) ) { + System.out.println( "FlatLaf: theme sync enabled; use Alt+Shift+S to disable it" ); + listenToLafChange(); + } + } + + private static void enableDisableLafSync() { + boolean enabled = !state.getBoolean( KEY_LAF_SYNC, false ); + state.putBoolean( KEY_LAF_SYNC, enabled ); + + if( enabled ) + listenToLafChange(); + else if( thread != null) { + thread.interrupt(); + thread = null; + } + } + + private static void listenToLafChange() { + if( thread != null ) + return; + + thread = new Thread( "FlatLaf Laf change listener" ) { + MulticastSocket socket; + + @Override + public void run() { + try( MulticastSocket socket = new MulticastSocket( MULTICAST_PORT ) ) { + this.socket = socket; + socket.joinGroup( InetAddress.getByName( MULTICAST_ADDRESS ) ); + + byte[] buffer = new byte[Long.BYTES]; + for(;;) { + DatagramPacket packet = new DatagramPacket( buffer, buffer.length ); + socket.receive( packet ); + + long id = ByteBuffer.wrap( buffer ).getLong(); + if( id == PROCESS_ID ) + continue; // was sent from this process + + EventQueue.invokeLater( () -> { + notifyEnabled = false; + try { + restoreLaf(); + FlatLaf.updateUI(); + } catch( Throwable ex ) { + LoggingFacade.INSTANCE.logSevere( null, ex ); + } finally { + notifyEnabled = true; + } + } ); + } + } catch( IOException ex ) { + if( ex instanceof SocketException && "Socket closed".equals( ex.getMessage() ) ) + return; // interrupted + + LoggingFacade.INSTANCE.logSevere( null, ex ); + } + } + + @Override + public void interrupt() { + super.interrupt(); + socket.close(); + } + }; + thread.setDaemon( true ); + thread.start(); + } + + private static void notifyLafChange() { + if( thread == null || !notifyEnabled ) + return; + + EventQueue.invokeLater( () -> { + try( MulticastSocket socket = new MulticastSocket() ) { + InetAddress address = InetAddress.getByName( MULTICAST_ADDRESS ); + byte[] buffer = ByteBuffer.wrap( new byte[Long.BYTES] ).putLong( PROCESS_ID ).array(); + DatagramPacket packet = new DatagramPacket( buffer, buffer.length, address, MULTICAST_PORT ); + socket.send( packet ); + } catch( IOException ex ) { + LoggingFacade.INSTANCE.logSevere( null, ex ); + } + } ); + } } diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatSingleComponentTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatSingleComponentTest.java index fefaca0f..6c40eb87 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatSingleComponentTest.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatSingleComponentTest.java @@ -142,6 +142,9 @@ public class FlatSingleComponentTest // register Alt+Shift+F1, F2, ... keys to change system scale factor DemoPrefs.registerSystemScaleFactors( this ); + // register Alt+Shift+S to enable/disable interprocess Laf sync + DemoPrefs.initLafSync( this ); + // register Alt+R key to toggle component orientation registerKey( "alt R", () -> { applyComponentOrientation( getComponentOrientation().isLeftToRight() diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java index 5dfde8fb..fbb936f5 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java @@ -176,6 +176,9 @@ public class FlatTestFrame // register Alt+Shift+F1, F2, ... keys to change system scale factor DemoPrefs.registerSystemScaleFactors( this ); + // register Alt+Shift+S to enable/disable interprocess Laf sync + DemoPrefs.initLafSync( this ); + // register Ctrl+0, Ctrl++ and Ctrl+- to change font size registerKey( SystemInfo.isMacOS ? "meta 0" : "ctrl 0", () -> restoreFont() ); registerKey( SystemInfo.isMacOS ? "meta PLUS" : "ctrl PLUS", () -> incrFont() ); From 0ba7798cbdffaf8f13aea25c62e956bb13639e65 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sun, 9 Mar 2025 13:51:34 +0100 Subject: [PATCH 36/36] Fonts: updated Inter to v4.1 (issue #976) `Inter-*.otf` files are from `Inter-4.1.zip`, folder `extras/otf` --- CHANGELOG.md | 2 ++ .../flatlaf-fonts-inter/build.gradle.kts | 2 +- .../flatlaf/fonts/inter/Inter-Bold.otf | Bin 626056 -> 631880 bytes .../flatlaf/fonts/inter/Inter-BoldItalic.otf | Bin 604316 -> 609372 bytes .../flatlaf/fonts/inter/Inter-Italic.otf | Bin 586752 -> 589784 bytes .../flatlaf/fonts/inter/Inter-Light.otf | Bin 607704 -> 612020 bytes .../flatlaf/fonts/inter/Inter-LightItalic.otf | Bin 588860 -> 592672 bytes .../flatlaf/fonts/inter/Inter-Regular.otf | Bin 605092 -> 609600 bytes .../flatlaf/fonts/inter/Inter-SemiBold.otf | Bin 624244 -> 629912 bytes .../fonts/inter/Inter-SemiBoldItalic.otf | Bin 602496 -> 608028 bytes 10 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a765fa48..fea72c9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,8 @@ FlatLaf Change Log The value is only used if all prefixes match current platform/theme. - Support new component border color to indicate success state (set client property `JComponent.outline` to `success`). (PR #982, issue #945) +- Fonts: Updated **Inter** to + [v4.1](https://github.com/rsms/inter/releases/tag/v4.1). #### Fixed bugs diff --git a/flatlaf-fonts/flatlaf-fonts-inter/build.gradle.kts b/flatlaf-fonts/flatlaf-fonts-inter/build.gradle.kts index d35b308c..1953085e 100644 --- a/flatlaf-fonts/flatlaf-fonts-inter/build.gradle.kts +++ b/flatlaf-fonts/flatlaf-fonts-inter/build.gradle.kts @@ -18,7 +18,7 @@ // For maven compatibility, should be in format .[.]. // is optional and should be incremented only if a new release is // necessary, but the has not changed. -version = "4.0" +version = "4.1" if( !rootProject.hasProperty( "release" ) ) version = version.toString() + "-SNAPSHOT" diff --git a/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-Bold.otf b/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-Bold.otf index 58a38073e8106029d2c50cf09a4c3b9fed36149f..07cd5f081094eca107a3a5def0e4fcc8929d9f61 100644 GIT binary patch delta 145963 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

jl>9t@l|UvA$$|*ZKt@V3jr&Hug3yfPDqpMBAj; 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 z zZ`VvzVsrFN<#jfA|Bcb@DBzJ~vp;zcCtH+w`zO0U>5W!X_bE+1yOblIe<|IPvr4>K d9+BzfdJ&+I05#FKg;0~uW$R;8^&_S0{|DQCo4No1 delta 146581 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 YW#2iWlI*|%(FLVj0?p_g)a{-B525>vQvd(} diff --git a/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-BoldItalic.otf b/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-BoldItalic.otf index e67935aa5a7500f421efe3997b1436d40b025673..8daf8c25f8df50c5a914fd082330c520678acd8e 100644 GIT binary patch delta 164247 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 b1N2_m*nD0fcRo{b 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 Ub%7 delta 165914 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 diff --git a/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-Italic.otf b/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-Italic.otf index f78848b9877115dd9512c085aedd5c26e34dc7f6..9895edfc0b18a2e9450cdd0291dcaeb79a9bfac7 100644 GIT binary patch delta 166781 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ⅅq87L&UC7CPp&fH_wdGoCd`sG$$6- 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 b*2)oq+W7o)R?GU(SbVB&=d%J0_&xs@T}z`C diff --git a/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-Light.otf b/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-Light.otf index 7da794bd3b99d52596020f512e355e0340cb3be7..0fc63f43904d27f897474158206a307f5458e556 100644 GIT binary patch delta 139132 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

ctxst~U!vsEmr2 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 diff --git a/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-LightItalic.otf b/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-LightItalic.otf index 32ef937c523edf3a21fe46d2af987ab130f86d9d..a4935f9a89e358d9d4f016d89ff58e5ef7caa103 100644 GIT binary patch delta 173481 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 delta 175130 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

-Y#!@m^apT6G#82_UPEJ^*&h|CYQ`(P4tRE-pK~r@OZI5j}zXB6FZOg?wXi9 z&9(@n&qr2U{a@gZ+UkD+Fr}B0|1a?MQ(OO3){^2}`ANg=`^)!~VnO*!3^sz=IC5~$ zkp%#%^fjm|D=(w?KFIymTMG;~bnflA+Q%n?KjXV>)B>+7aC&LV=1G*x0 zEAwNPteuv%e9V!_Oi9LU4QtQr7-HF5bu7i+Y&^^tqg0iW?%KI&$7Z%;U+dowdnYMn zG7AC3r}P!qfZ49rUjxbiDzafpX$=|(k@*_71w;@)7V{A+ZS95FwaiYa4uI}(6u(wj zRm4=7kd>EQ1@qoYah0X1^3U2Nwh@NAgS6tCP(8W^KU7>1B@oKY&Y8tJ2^9B^E=RRe zMQ3~AH;rj}^R9ZfT)UiEYD@|PEV5?B$Ey46TOk;~F7~{+z!$<}Cxgz^DE-Bn2>|^u zEIP4?wn*CkS-X7QjA_!b65X){-6WIZF9jSVF-snzRi8^{gr_UShWnWGZoP^rg2ZbH zEJTzlQf#;b05P^=FHf{%ZhVwh5*1taF!WW`{3<7@B3`JtBXaYqc6L`?(MR6CaLNQHT?ry%$p`GJhhpuW20rM#I;hELHmkassfO`sx!0aPHd=Fa+leu z3jbnRGW=0bHO`PyU)8rxiCi^WLU)9MQ)qq$2h6a0b6aP+*vtAQ$7 zuf(vMGT5P7+=GuDsWa{ZNw5@@-2hAzc`y&)If^&vnR^v&G}n}<8tu>gWPXh|(6ECd z^MC5YZHDT2gCZ{Za(^v9Bv$;!>vscHlFbip;pdsa51KO@(Sbeh&vx!(+YYgVU`#)= zJa*BX+uDgdg)iqm#@cE8rn$Oey1lS}vdnrJ!!?FHPnC_{xY3Gb%7?*8$kb-!Vu$fGcCHcUD`jb8H)WA;L9ExXJ2JkRb!!Kvf|tpfca2v z%RKmK)_Wm0vR4lR=+@fW}u!btP zGz|~oF5nJ$57K=SKP`WE^P~2|tw@&v6MYyw)%suV3`o zk=bhJztb2ZHP}{PB993Wn3*Uk*M?}=N7h|Yu~%#@*obI80pK^`^_^mMdboc4-`-bM z^XgBUe_1U_Jj$*MEXzaYSt5&4Hp(@&Z`{xU`h0C_kBwmamj3hP%D0=6=H#K@Pn77+ zEa-ZyLyb|HpzC1hqEU%;lx6U2g^gqH+1HZo)mptUUCiX?g^;m%Jvq{j8ZvWMp-!ze zTJTH!h_P3=&e$`Y_2Gw=x-c1Q;P6zrVlcEZLC$1$Y05wu;E<%`$m|NsVV&4gP&W30 z)lbJzysu0Gp$8o+9e#I_S>0ukwxzu7T5h|-TVh2A+5SLVrP*b0A$A)rwMI*Rk?%G( z`$d<{_e;EzkKv!--v;K#W7tAz1*1aM#uQokEKZ+La{If7!`Suv#~;x$M<(83!A}8K zD~`$-fW*8Z&(j)hMafX%h_(8YhxhH3JB-_xaaJo8=-z`vvIQIxlMe<8x3$RTvq+Kw65(WZD{U+Ym0Oo zG^Dx+#3Wwa!r}xlUusQg#p>>I)oM{)wZUjzz+FvV?GhzR{$1G$0`*q>pnx@zMfd~$ zY#%-+CL+6S<}bGWFAcmZ83HkO(Z|WlKg**f(8O$z37IMbWKe@K0#k#owq*(Ys@6CX zvLlTRV|7OB7_R4fV|^H~`^q$v&I1rN8!$3EryP(?_^igimb9GnQT!wSBsBPSSR^&HOwfr#Fm+JJMn|WTWk4D-dF+`Jyy$N z;a!^fJYeqYW&tP-Hck?Zcc9kKvSAIu4V=NL@UL+y3UZ2d>EKjAd&<}t7R|=*(rsn& z4$30g@SNaqA68ETBOtK)EPNAafh_<7C&~kKywyO)E8 zBVSfjrYmDb+=e-FhehTkD(142)&07O{bFdWf-j{R1|=LiNXNYk3=t|EZ9nsm-#%&o z-c^{jT*u6pPMbMn`t&)r&k6%iC?PO@D%?bG^`r7AQ{_8rD!2Y$m7BvQK=9#wkJdOt z3X z4^}JnHNwx!2)5RGxW=wBn@H5AEB~y(XRLlu#G<>vIHMN5qy6STI z_8~PlIKvIoVZtrGBTOo({%YqFJadn-N?sGhZ1QcV>A7QmR$vjgu+89C1s**BIFcZx zgS?*koIT4zfhs>Cs13bp;j6+Jkczb>AHUd@9C+KxoK=~ayA}n8Llk=$rcmtNLONLa zS;HoYJihv~Vkwui34-F#T{b$3yV<;^avq;2@QETjZY*M6;O5kT_J#o3Cjw}1q?43U zMte39u!-8xRKos-HH}oA9rpt(napPF((Pt*co<9J7e<2FFSl9oMW}iMatMUdc?pNu zYFNFy=PvBlm4LfrE-(#{bKnzHcQy{Am0W%W+79JwgK zk6UWh$JiqcPaO}2J%CNnvi+?l*Z(afACdJ6CM8gxEDpg?8+q>d@4*;BTMDO#|mdcK{%PttKEi9Z7pf@uLaD9&OE zj}UH(_cqkH;p2On+;B5-Yz+=zO>PgDmw!q*%q`}u6`$KEE=95-yDlC_l`gX3RbA-F zicj{!GY!AO7w~?()Kh0tA)Riq&dkHqZ{t}M_v5FGj(n!k#c0Dva%a|@b)KjL=8A8c z2{dwVc2lbiVMoCU>h;qN0k~H_S!LntyWPo&~z$T!;+iQXB5=722U2 zFEWSc2PvCmgY2O4#X*K72UV0_DV0;)l>PGm2{K(C$|f!b2n!ZeSqNYgMr;$)v+iui zejVF$kcYF*e2JE0hwjNyIuLh9Wuj0)YMdx|PNRzJ0&iF&xD&+-BV+#HHd;QIOFWIY zAVD^M3?;E-Syu_M%a|;S1et4j4gc9xd`vzE9wLYTOT2Eb?Z2IT$Aqu=a96$?qr| z14I_e_6h7*N14wOnHyUsa7$>f|n|7!gB?qiSk57ACUqivK@vkDR;o+;*quW@WW( zbg!6KQL7?ffO(!E_juRum8{rQ^%uZSdCSZLC@$r^GC(=V!sYINaw|5+2AEj3*SH%n zkg``?{$4OjCQK0ovY5+a4WadMQ>PiS(si^3n%C$e^M0l4&AS0VW+Jv*$Q2N0XvogW zhO17hhPb2QnUl)Nq9$sv+4!uvtaKU1tPF__u#NZs!yz$OI?L*c7$7u0vn_0*B3;m} zX73F18sLS7Rn97_R{wwZg72+@d!gwmvT1Io)nM5`)14{V6>W*-x#@d2yU zSgwgSC~ah>8zCIK&dh&(rv(Sqf;Z&@d+B)ZeBK7;YL?PN?#H}&2%D=_3!tZ1+J6{k zuHkj~NG)Gi(N^^CTi6qL2H9&#G3wxMtp8F=T{+8YzOap zvqV-us~oRk(?lLpJsv=N3&lx3!u}8x6^OYY7y$??@$j(TF!2;yG3p7^GL>Mjy3`TQ z%iqfedt01unAKF}Z78+HewwSYDYmBg$R-~apsy#pAq$2mS5-u=P8oWKJFuPnk`@%N zo|hSmTI!5LLz#~6WLE({)Yq88V|RZB$3Wwm{}-sE0P23mP@00eI`J>(;~aP!5PNYj ze6Yjy8%N44*5n=-zwp?9|Bh8Grg#qp!Bb~ukwz$h;w&>2V?+u8y5 zupGSnWqW*?3y%l(o!bEOv7k%2EG?GVB;%^ZaLDZ*&lhP9T5Qg5n6kKSJii?JHM4l{?NUDbn@iYGK^g9g}xyC1tXg zJXGX#YMB2J#l?{Cu4<+Su2uZsEI!MY!A$h*t&=!u!!@nBiG>64*n7MKG2A#5J zHd}R@Ewf|oK{=Z7o>G}?Jp3b&V9HIE)fWz#q6q_moGuvflbl|l1NCYz0u@vfTYP2Q zCr}nG8ZNu5+^kI99A+F~LTw`&3v8lEZ#EYVwVJ6M{XFD5-x$_1vKwfE%)UCF+BcjF z+)S&s0(7J(5GvyyAkfbpMoM?l?z))1=0&W3RWYh7xydeL8I!Ig!Aa$Dp<)rDcZofA7+#hPh5yBrMag*a>@-_*U3@u{ssKYFK9nP-?@pU@5KRxSI#WP5A&| zDR`z8>-{4d#iLEEh2gammdQuiVBw7I^mEtEFJ|U8qo)*4A23}K-F}A1gbL?0xyo65 zshk%o@@oVXSc;}DkD1dX9nd|z>tt|ZT^S6hG6-~aM`q3%e7&GsCg%UJ?$S@2*yOL_ z^0H5jP6=10xVaBM%dmxEyjQG|#2_lg0KcndoSct41oWbj4af@88v7N*;6PSgh z;Y+|Z=*-u4(!l||dNNxIq8SJ%Y8-^91?KlnR|wuBQ-MYN@22$S8Nd%pyr~wDs8wsO zo}!x?aw&u1VN8-BmYv6E8QfZ^LgG!PjENOdV9I{5UM$93*&*M%*e`jXP7SlsL><MIb(e$EISM8j-Q_Dg=-UTvNXQ+0@_I^KDkSF4K1sL^BqFT#pDdrkC zw!Wv#8u9glTAcN7___D;lH0b-Vy$6-3$|)G93ldyu?T5z7&cT0P{o8h8K%hl@N%NwBs|n*4XXVTL7!pla$L9 z-2@&X8kbZB2|QIa+-`z>^jaR_2Cvs*h0gR@#|R0?#tFclw=U$i2~IxEZ2yd9R-a+k zxs3FQg6~wM=Mcf-Zrs9~n-}RudP(0zb_rlZCj0%Mj_p4vX%ka&636Qj$Cu}v)~YKK zHC1?o3_g}x1o!*~C`Ta7IzcR|1k|s2?<<0Fe&tjf!*Xwx&T!sa)ySZB1@hYz*Ofp> z`av}BeN8kkPZFwEh^N>m;}~NLut^UfY^BDLjB(0C6H5T#-?6NZQu1*;#>B7c@r~7CF z3@co5M5u=4XkntMxh-!6Q^}rnku}DXKfYKx397r=O)O&RGQ41oIbo>tk_M&d_>x4=CpeT86A>NmiS4+Ov%Z_>z(w_h9!Z@uoQS47%za<%ijvd zMPf@e3*Z6UX3n=^9=j#Y8i={h{_Ej7<_dFM5<3{31y;*s?C!E&5OkbWu9LKjpJ{&S zdi4Av-33F4ugXPV6J4p8SQvPOUhBJgW(Yg)5LF9NS@Wo*B*X5Isfv;B*hdq$LVPu%HSVjwpgfJIH8cjyxcp zghbOqYh)&TW(`YHz~cWRY617`hx|fRA9+Fk5FAI~m<45g?u~6!_p`; z9_rAahfFHG@dZdTp)yzngm#1mU4pa=l*6hXv^$))g0vUhuofz54f+01F{}&%yFQAj z4WvcL0>Kg{=qltVLkbIipeqQ|Dag*WOB-E_Y9Uz4gl>anUtoa_x);?$9blalG!IUo zH3*gvq37WNw;+EVZu|p&5Cdh8-~q9azC zdx7r2Vd~-%C^L=pT{vzdZ03aA&;lrngN7$TngB0r+KmJ@3d1M`3ew?$sgU-D3$P4{ zS$}xoLP&?g^)yI_AsdtqmHh+xxzIDPLX9F5ZnSgxy*+Vs|!UIaEyRrXfAZWY0W^4>>&@2 z5?33>w}2%9)`L1a?pD2=|CkHWJD@L+_1& zyh#K{!#VUFDuxv53PNMy$GxCn0vr?JfYobMy&;_h#}vrtLsw!*2NMUh6xQ`BA({wtDU$?-;}Rl#9_ z>ygVh)B0^qcA%yKsOf&>+8nu_Ms5?4dmH5b1vT4=nin9C zI>=)K^3)>Fqo_p@YEg~6RwM6F_J@;-`Mh@z@cbUuoHhguCpt=^&5Q&5{=)aDXun~vHpLv8;??R-$XGW3ft`sD;_ zpN`r;Lmft-4!2NDa}?7b#T-GgZBXo96#D_i<)FBIDDE4IABhs2QG)&+N}P?7TBD?Q zD7hG=_@R^wD76Pltw3qpQF;-|2rwME??pzdQ(4=dDT7wS0@^=gHB zt<$646!q?a@(Id6hWgA!eY>N6zNo(n4N#$hwb8)IXy7I^@ID&U1`Rrl24|zeD^P(M zDhNUa{ZYX|G{gxF$w5PQq9NZ=VLMc~5Eb4*Lp{;Z(P-#NR8$`o`JtkGRP+ZL=81;Q zL&FIgJ{%2yjz(mm5e(@^E=D8Ypi$0fRA)450UEUjjh4~qE@<>iG-e_i^B9foi^d*B zdMl)#g2q{(alO&FduV(r8h;2)@IVt5pyFDncsMG4h$ePK6Yrr({Y|rE@?12<2~By7 zrfx*j?9sHLXxcS2y(yaB2TlKsW+b8+chSsrG!tg;EK4-2Gn#b-%??4cm!UcJ(41jt z&LuS04b7d2=H5l~2$~my<`tlMo6$Um=4Ye%i_!eIs3ZWDj7JLuv|t`u*a9v52Q4Z= z1|MWNj23r5i*KPNEzy$4XlV{wdJQe>j+Wg;%X^~bpV5jzXr&oixfHExp+~Dq(CS)f z^-8qH2CX@c*5;$Nm(V(2wC)Qk%}48<(E595!(6m69Bn*>HpQV$@6qOwXo~~daujXt zini55+is!l1JDj@wBsq-xeJvgpt36T>pAq>c~ssL?V@Pc3bZ>4?f#1PY(jfSqTjoq zeXeNVOSFG8(jSFQ2pvCxPRu|jZPCfi=#(Ei zwHcl6hE9J*XNu9;Omy}ibS?~?+ltP6pz~YM1ut}A7P{CBT|A2}O+}X~(B)C+ay7cL z4E^DW{inyL(#*9=;257C=5MXgC4y_j~&rtJ$n2EJ+Vbk zhN36$(bJCT=|%J`4L$pYo*U4MTIj`6^s+5_c@e!TK(9D@U54It*Q2*S=y3SV+LaHY^5U@eo#JVbxb`eh}C4#kJ<(T5oXe_PF+OT-%7H_E_4C>saDC!*QM4 zxUMU%J0I75kJWBiJr9GcZ*d-5&cpTk;riLQK_G4zfHmP*^Br3q!`2J2%@}N(i0#^8 zZ3?!p1-`-)EMLQoW?@}B+*pGf@5c^fvEwh;@iTV%4LcWMmmJ(A1vl-AUE5+e9d_G| z-G9N&EO4_|*uw&Q#^Dyl*lQE^4#M8=vCmZO8;kuY_S=vByJG*>I3NoLRN=s7IH&^- zx`2aw;^0agvH*vsxBJdMMOad=A{&T+(I961+9`QfNfIC?v7m4#bXnzaVHntX*ceij=MC&UEbro2{`XP z?m7l{<+$4{+}#3q--~e-Dq$$0Oh4 zQA6=)EgoHl$27rXCgU+@@R%ofY(qSDC?5M9>qlew<+$E>+yy+|1CP(fu|9>F7A$tOL6fhJTU}MT#F|@!;@U_qzQO3#gn_>$!qWw@Dmo}DYx;|P&~B^ zPm96R_UiF;M?8HJp8f*Q=!s|Sz%$+P%wjzA8=jSbXC1<`?eXkxc=kp-`y8HA7tcw- zb57#94e;E>cwS>XuP2_j49~la=VLs-J)XY_&wq$Zd~nG)T=Et#$ifRg;DrnDB6GZ` zH(qoG8=7FlQoPs&FP?^%sPGautY4CVmps8scj9Gj@v={N`4YS$1+TQgD+l3K8oX*J zULB6t)W>T!+M zG`!_cyfqtdWq8{dyxkFRKZti^;+^Jr=Ve@$hkvE`*NgZ!{UTi69GBn3yO!hKi}9Wo zc+VNUHy7`%#J_LG`!eu;XM8}w2hQSybMT=wd^ivvX@QT{#z&9hV_x{!Z}@l)KB2-V zPU4f3@To9-ssf+Z<1^v-%sG5E7@vKQ&wa$__4q;zzHkd)9E&f7<4b?z%X9D*JA7rm z9{~!&iJp(_|9s4cNG3R2;ZxR@4d$NPv8e*@jr?9p#y#-;Kv9*X86e({4@YR zeS)7&!_O|^=YIJ475u^<>t7V$mm2)45q>oZzgFYdyYQP9_|0bg)*rt;iQh%zcYopc zlkxj|_(N~}p&Eb8#~-ibPYL+bW&F7%{(J&|>4LwU!CwpUHy!@A4l^0EGOV~^WgV^v z#ua-o{I7Oi8}k*|=#7nMaMcuC-4=g$z~Ao^r0-2ICU^%SS%iEbbUQH{NX+0rJj^4a zD-jP9K&|G%#QX`V6-sKYC$(Kk?Oj9)B+>y=Cz90JPwHk6wMf+Kh($kQX-h26k$P=N zy&a^!AF02QH1Hq|PLYNkNW(WoQ%bB{h}8~attHl%h)piBHPaK@)x<8I*u5lLH=@la z+Bd{Lh1fqK@_y1Nmgs5|-8RxVfj9`n;Sh0LK^%?5X&iBOBF+z19I2@D{C14-Z$ z5;TMaJtM(IB*dPC94DdENy|(U7C^#nNjM`BcSz)O62(aLYSL;gX}yKCIZ4_+A?>P3 z`$nWg9}=VAM`Fj5I6D%zjKuqrc!ea4APEmhqCH7mOOh-|(iD>J6g5d1Nm8DX z)Buutnxt8fw1Fh;J4sI_>3d0rmSoH&nUrMqBANF{R&$cIfMjEmJ)C6!MREp_oJx|b zCmo$g$3>)*mUP-mI=3KQbb8X|ILT{A@=lSi&ZO(Fq+1^8#z^;-q(?u}GmP}ok=|yc z_al;jg7mpV`hFq(R+0W&$$9^F%+2jI$@>j*{_R$%M8Ec7Oe zVu_&-S!_cVmyspeWGNy`pOR(yWZ5pVJdG^>m8^&+D^8J>v1H{FvT7_@U7xJhZz5|3 zk+q>@?J}~?o~#=~N}G_<-DLfAvOypl&XSG6WMdiG)P-zrKsIkDTb#(24P+}JTeHYE z71>rww$~-wSCAcEWXBD%b2KT_lCs0(*AntuU-H{+Qr?}EUnRSykljvXk4X0HAbTUp z-aX{^E@YoQ+4o&f_CF;D?vaDH$)OA6@G)}a9XZyB9J^0WAac@$oXR1m7m_ol$yrX$ z_aql?kc)qiOMA%W9puUi^2a4|wF9~Oom?v>*S3*sPssJ2?=iXWNbZj!_n(pnapb`Q^58Z3rvv$?j68H84_A>#jme|UbSzT|~7c~MGUye2P?l2`4?tJCClZ}R#Jc{7^4)z>3$?~r#r z$h+<2gGfF+As^$&r&RK}A^Cioe3?kT_9x%e zwVPDeBh@d+_unaUr>HYUS19g6NkdBdQu2k;Nz}}bnsui_2P#xhv6za-sVb7H=23I4 zo|wd`oE&a~DQTDzFm{+miYXq|?%PHS4%jn=(Q)wxu?jas-O-vz z)ankk)>7+OYQ2Z*tv^#6OKOuyZ4Oi0`qcIqwUen`5w+Vu?QT-771d@^?KGbZq_-ld*K+QN>u2&662X^UaB#bVmx2K8z|y<(|XFX~lBy}nZK`qbNt zddE@ke$;yw^*%>^oT*O~^~t3^>#5Hx>Z_u@F4VUb_07{$-?`NH2=#qO{p_h<5cNx= ze$%MmM(THq`fI3vZ|Xmp`tPFtpJ;$34TzutIW%B44d65|i3V<^f!}FR3JqFJgHF?+ z&onrQ2ItY>sWkW!4XH;%B5B9~8uBX*`9wpVXy_~&dY*>9pe58jZ6Iy?p0)0iL{vz5ktq_M4O>=YV%fyP~< z@uz9RFq)u0N)s4O>`oI`(WG`XX$no2X!1mw{FJ72q$&T<)LfcoM$?jMS_w^iL({!z zdLm7~KroPciOuj?LD3L<}|-8&EH1*IM6w|)MF+m5gF4bdTj`*0bnsw0 z_&Y5aL<^SEArW-QRazKH3&+#KleF+79om=<&80(!)1e#b(DSs&mlo}$MGxq(dUV)8 zIvmsC{ps)nbc8@h45K5>>Bu5Fay1olu`n2&WV7)8YbJ{FqL(rxSze#9nmbHahVm zo#aO+U7?eo(J5tg>aTQKD4p&>r~gA|oToD%(^>oI>{)cq?{sb>I`=!B-=3CCq6@mw zg}!u=L=E-m;wf}#Cp}%3OqXlv3W2UPqpJexs!Y0SCSA3SuDVE9Yw7A4boB|kraoQc zL)Y}DYc|t0f6=vmbZuX{_9|WHMA!AD>!#9mTj;tAbX_$q)zQ*{v~(FQJwr>+)6z?{ z^bcBkotECBrGL@VziH_MTKb5VKBc8EXz44eFMUf(KhV<8wDb#Ie~xbWm2S+U8#mES zNp#aoy16&qyq|8dpj+C}EsN-u7j$b&x^)5FdWCLlOt%fC+b+@Vj&%DFy8SfW5l?sA zqC4a0&Xcsvj+PCkWq;FOd(dCs(%**B-_Fo-J6fJd%U96yw{%wo-L;VJ(qE>#Wx9J1 z-TjU38BO=RqI)yx-W~LJN`KF$zn9bB@6mmY>AonsFPrWgMfWYC`!3Rb3f=Ec_h-@l zo9X`N^gu^?Ku-_sqXz@&!SnP`Cwi!u9(qC#%k=OidgKy4x`ZC{r^lw!V|VFsD|)<` z9^Xlif2SuPP;>GnJ=K7oN}{KV=;_+@bTU0{pl599nF;jFD|)skJ^O&3i=*ep&~r!V zxe9vTpPnzI=l9a{-{=KDdSM8?@R(jqp%)j^OSbgVa(Y>&msis(h4hbk^y&n9Et6i? z(Cg>vjSKYVOnR#+{gco?FVfos>0d*s{!SXb+m`0{=T#K z3><@_f?#2So!H&o-CbZKikN_a#X+%`A}V_AZtT`;$F;pz?6`K%Ic(7HxAy_%zJHbX z|2^OHeClz{?5Qf3bc+oS5c1M2%}>W7)?$A#*rHtOdtsvM+RRn@vywY5}j z@oM}QRcokff2j#G)x?qNm)h#rpp5F*5B#@%oK5D6Cs*RQx|8z@TpZ*MbGc(%Zc5M7 zq~mF`^R#h1-8i1U9e2vdolbG{Wu9RN&$xnT3g*ty+$Dl%-o#ydaJTZ@&C0W;;aUIT z+1B#xy?BlmJjWOA{)*?qRj(g-ZX3_*$@5<39u>G}-yoiUATQv_3+CnpU-Lqrc;Q4| zWG^pzloz|oix1@`vhWgzdC4KXQ~_Sl9xHf%Mvd)j+d{`E4c6qvAp6) zUdfAB{*70*@XD`wm6^P16<#eTueOL+d(W$np1f|;k+)M9IVOfPUdy5^LjqK-tWAA4qkshZ_t@HxXl|5o#Cwq z@iu1OW*Tqnz}p_;?SeY<_Gx(gxx7Pe-r*tdc!GB-&pYkoo$K(<_js2-c-JuAtrqX@ z%DeaA-PiLT#d(jTyk|Y$^CRyymG{oYd(Y&3^6);pdEYF&?-kxJkoPaj`)}voMY;EU z?){GYG~+&txz8&;fcQYh2TtGvuk%4A`CunL_;C;)vWyS)<->CDVJEroP(Iv^50B!0 z^|{}BKH>x)Igb11;r=K2s3AO{Di1iuM_1ybH}lc=_!tj9W)vTDkdH0M$ByG;U-5BG z__&FD+#WvO#K&*r6T0&W*LYx49{809&Evr}c<>26u?Y`xU8FTmIDh<*9O7H<1o5pU_|{H*YXslAif_How>k4|z4^9zeA{Wh zJtN=Vo^M~wcR2GMb@`5de8*(I<1fB5H{aQd@0`VVZsj{a@?AkZR^_p|d2A&f8_Z)j z@z}e3cVWJJ1mC@z@BYH~bmn_@@;&ikUeE$c2U>`qN zoga+hhpO;H_xa)d{76N9WClN)ksn>jj}_&|)9~Y~_=z(7#87@>EkBuwpB%?ezTkfp z=6?*~e{A8W^6^ts`RR=ObOb+R;%9vM*+TqmG(T5}pIgt*cj4#n^9up|!W({ZIKQ}` zUkc=x%kj%W7Jk{v{|w?+e&bix@vEiy)p`7yFTZw=U(dv^x8T=L@Ef)GjjQ}-Z+^?2 z-y(jyBfouz|J9iP^@jgFi{J6&cOLP$zWi<`e)lTB*PY*c&+jke_uugc>-fX0{NYOe zs62mkh(9jD9}|D#!Jq8lPZIgl8T?u9ApYza|7QsQ=M8^O{P|P+?4S_}dcvT^asv0e|n#-w);QAM+3O_=gw#V@Lk+0{_&Mf4aaw`|{6kxE#sl4sP}0 z)&<;}$Zf;8Z4ZyV~6l8B|K*f&$A-Gr^vrp6euSOTowhhi-L1S!PlaY zuPCgD!t+Jpi=s%rAW`%;QFOZ~HdGY*B8vYZN>mjk9*UClMX9u+RDa>+D7>Z#ulJ&K zj40Dplp#^(Pf@n7C_7n{-7m^HigGAA*(s_P6IF+Zs*gprNKt)=2&%zFjXt7=P1HOpYCaOR+K5_DMeXsT z_GeKiNYvRU>g*SFY@%*4QLmS%H%HVvBlyKhb!#Xnb5WzAu`%h$b^clXs$N2GO*rXc{A$UJ=clM6(8>SYDJc3iYuCfW$bU<_#qH{OVd6wvWQ*_BCx`c?XeMGk^qT3zO-A8nP zA$rUZJ&TB*%SF$pqE{NxtCZ+9QuI11dRay9F{1ZH(Wjp1Gg0)}C;E03eG^3gZNj^s z@LnN&9E49X;nPO=tP=xDiUC1lK(rWeR|E~rCkFb6frrJQ9AeN=G3dA$+*l00B8F5F zLzar6rNz+JVyK@OdPEF!7Q^a@VdKTH9Rk~>eVYp35aGK`_&yZF&0=^jF?^jEepmQ0 z;pZv*+6uoZ!f%)GyCX*Q5F_Hn$k}3KobY!M{+We;OW{9N_&*k-f(naK-NdN*V$?ek zP)r1L7Xd59=vrd5pBNo0Mt>1w@`*9^#F!Og%u_M8m>7FljQt?S^%vu=i}Cfu_#I+G zGcjSbn6OMtI4dT65`h&&;5ZR@R0L(fv2_tNLj)ZZ!8t@QiHS~PVz8L_L4>prp^hSS zk_c0RM3|olJ1Zu6h)G|>NgRUM?}>WQGOz7wuss; zqBOCnu2?i(EV?G5^N8qyB6@|0ek~T~6^rYL#eKx$paWvDO)M!bmJAU~7KtUN#nQrJ zX-}~z|4ZWyOY;VndYJa9?aJE;a^=jfrAY1F>nQ*z{g(9x66Z7n}Er&52@5Z?Wb0yM(f` z>{*%l>{eZEXP<2PuwrmN@Nq@Cv3jy%CBb{%@oRi%Z+hZv+ zCpB%)CM!8(s76QTM$g-`S@<@-1KST!sUy1uP-6%i1~7aWn+D+28Hay!(t^%xGC=Mw zY@18Ym{Hai(%H6GI$8p7Fu%2|N?u)9caH~Jyz61h;hl4jnC2Ymv%Q1G)W*`OM@UCg zNJrdQXTb$6243TlQCwFxEz`d<3XrYoeizonqgZ@Gs@Xi~#=5I*zZ{^p%N-h+WX=Rv zpfQ*>E)*R+8hvS=YI?^WECgtT_h1VEJbE$$*w>S71sKwcopnsku~~bTg$<#topCgF zb4Qky*0pB^Jcqhl)1+F){oY1PjO)Wfd-tPV|lAUIIVh{MUObqbiDBK#0{2v9d z=>UGCSv@wNc8_Mm0g8-aQ|!KBly@v58X>;yA+>DAT`4h;g~45G99xESW0MD zEW+5-|EEQ0X%gECx!!ih^%0_6p2Biu*0x*33+pu@uUdqD!IjxvRHJv{ERt2Di59eu zKV6DoH59V}Ytq38Fq`3S4X}{dU_EHobZqwUrz|sAJAjxaYm^>%#1^?#Gn(r&^I9u0QRHWP<_p(y8}M<_Y(dnc!uAvdsju`cvR6*53}=QRUf? z*#6XPHX91Ce>SA9Kh>GTb~*Yd(e-i!tL`atxLY@-R(`j+Y!FhPo@#vi@8Ucb z2+({!`n*3qozJ#@%Q=eJAdi%i?PnD$w17=T;;jo!me7=V1J;zCgEB+Xa|9y&+q zqaa~#Q)CpH;4S4|gxv=BXxk$Ao>J{-_#Ek4H0#QYbZwLJ`OoG_Y7f03Sby5JlvPm7 z{i(@PHZVi~m{GRUXqq!g&2o4tE0J$NYOT_rGRClKYy&lqVW9wj#;~;jw{QA9_g+@3m~+jI<8ps3C3+0i6?NZn|lm~A8I zvYP(h%<2Ng)s%J>%=X*pKlrD_z^qt|0HV2jI&{qYuJ2hngN@U)h}4riZbq0!X$v!p5<7bbpdVUP!N3 zM_4)d(wt)bl*D!vev}1d)T+hcR>?ng%C}-4;_r~tWQW4SI>_B&8F?*Ia&B1AQ-?V!c>FDs>uTOBGsn zn)$P$l;sShY8je*hWX*Zw(SgBc>vK_sAu158*vVGzeUH-vC8aQ)<#Jv(I_G_^}NJt zs^)~u^DjUQW~ONuSX7$K`Y7?>gLNBax&-Z}_C=iP&rG2gp{y7QYEjcm5C?|49l)+j zKrAyAylh0+e3^BG&-5n-jLbCQPX-N$KK{vCWdE5ClaQIZU4fpSl)3pT%b#Ay!9HOB z^I`rK+39~z4db>BbgVM<&KZN0~us^%mIHMxtSF^;<5Wn+^9n^D1g%-Jz6Nuub{ zJ!SJ$MM@m4zXx7vNzV6ynLGL12cB8z_0mL4aG=5HS|&muBys)!}WpZ<_l_L%1`cO`d* zAB)Cv^!y>lvT{`D5o-&8t%pS&-fFn{*nu`ZVp;k%(3$cWZk(wChU=fH-7{E2ll6Ux`FG+9xSo?NAkKu7vWqxoWp`i63Fed%pnZ z5AF`kl=@(@ za=DmLc-r^OeyoXDUnjMEmEXnGqSi7g2>i1I7$4mEPRjcP*71mE=%gv}NkS`Jk>?3p z^7>%pJ5L9nvsLUob$iA7(&-oI!$#OBfVMATWF>_(e#M;K&RcMsT<&DS+!_QD!7ihT zy@8?Qu|ni5obbIyKWT;zys;DVY(`aId#PQ8}j@NXyclOE#%w z0M+Em5V{?YhB`;D<57`wG*5%EGmxATSONITCcqv#N7oZz2%V!ziR?Ilk>&m`EI-^2 zzCaT@N0zVbJUch9lXAi7d;YrZRm;W(mHFM>q13Otr~IC(j6O&5Mo&197OxVSJhjxP zO3u*$MLEmPtuCiRDL6;vxw6O(rcoE6xHz6OSfvj63T3!Q-Gs@hVME+O`5ifQbyQ*~ zLr;T1aBst>3?}6=zw}1#a0w9Wy98FMyp! zDArNL-IQsH^(qa`sBC}kXtuL*3cbFIi*l5GqFkAkKVbDg$*fFA z1_!e!Gm4>E_I^?IZ@;p%AHF& z$d1$H+{!S;Y=?9(x8iL776Q;Vj}i^=E{`%BAS|!49H3x6Wx`K~{^N8YpAz_s;I|=-edy)m>mxq3|5`KVn1fSM%uTD z#2=IUAcYrG?l^xh%K5%*I_E-CdDLNpC|G8vr2neO|HQU_>ey;8++|#H=0C$wr-))c zM6XLKt6)YPD(J9)ou=GgN?CxmUdnKQlU_`BcqyelWpJuv&uPkDMrnd#`Mr^Pym>9dU(@~i=odZ9DOD+7Wu+P7_*PcBGhez`St$VD=gP`TfaoelrunNX zJK*bDUFl90t10c^o>5IXZ~wFvKu40iYbg2Qo?ZijA)0d3RF(l8sHrRk=vGUa2Jo~N zm=3m3Mx-y0Pz$%mo|Ku~MLW9OQYlD%TPohn zo)#jwWRjaL1+oR~0R3r+n&0N)18H&QpxqYDh-#hsDxTlx-NlmNDlCU#RQ zDrP&RT3waQPV2r|lKRwdrml*Y*9>=uipdrJv8eiQ7U*?%O(V-k{|uuO=*F|#kwm4((1YEwv6={4c{ZOq_y^d@gm<@#8NukUGdCd zT)ec>A`*NPZs8Gxq)Hv6;yuvrVKi}=GD|VrA?@jjh7KdIaiCBb&FiJyE*@s!Rzqf} zHY$Fy%rHJcVnOCDX4=}@Z>_QDH|U)GWLjhqE?B|nr(}apzqL1nRePG%Pst8n-h;vo zzRCMVHIEo~+c$me$J7d=PJN&kg;Dvw$`=+ETdtqt$l$HkUpWl$rN43n;IOxH#W4vt z`r2P{&D`#P;#1s?PdPh2?df4(y2#rgB4G>t>e(=!zgZu@+xE4h!h0V?Y5dDl&MAJ2zP!axwId5*W@ZaKO|(1T*k|J?jr2hWDKRJVak%9s&ApR zWRkL)g;4#;5IRNa;$&qAK(#5b8j8~WDbPTRQqWXolRa!OMNLCDDoUHDDNz88!EhO!%E%@c{%38A}@DEurKn{yS+ zsnX(kFz8%pzYhZ$ytI(n-c$<>%B5;}gE8U1j zW=ZbRixn58$|yQ=OzhR8H(H{sK-lXgVDT!nZK)Fd)8)@93H2b%_S2ga!i_>>l(k4u ze3`P(o^>RRUJj3GMMSdEX4 zRSa6y*7Kf`uk)8t$qe~pT2-OBw#+n~K|OX~|Bd8t$rUiYrR#{!VbVnSyqquPvfiyMTb1#>Fb5-G81}!g|WE z8`#|4t+=H`qy$CnQA+(c*jOvsu^9|(?(9~orog5-4cP=J?-?0Tc2c_kFs%JhC=VXznVbEx0Jkd9U1Ja=9wo zy7NFhW@i!J+8{9wTL&LesY6O&0hgC@s5@W%Yc?@(iKR`4l-wx$!Xf1e0MLu2!ABrS zLTTa=@J&r>c~l97C`P#H(@`4cZ@y52$^ch4zv9lf2y`6ju-Z4Xt0Ut|vy))C-Dx+AT&xcH6dtW=1%8Vqqwf)?Zh8D1hZJD!v&s zdkkZt>~{P(Jyw3K*+p()xs^m?bu5=+O{1@t!5>L$E-F2XMriWflsKb58cet#;h zog#IC?=BYE^FRNm(#Z3QyF)4y51>WmD@p_85pqST0dVvREbBYj@f!JA5j2higoa>}U zDXYIFxt>4nl?gX!$ql83^9;QtcM)P#k7>3+Dy5ndH)-qZ zQ{SkJ<*8foX|Ou=_O?>1pvy;_le;LMT!|kSu9czee=GG=vsRjx{H2V;N-_K$0Y?0- z_}P8+sOTLimSw2M9i{D0=P{7e#yc29%TW3_rGEO-Nir&ao_d=O-%(0XM4XbA&7@b) zlsrn}OxhEt)PXlKPN@e_=dR)lu;Z@MoYf`u9wvfY($ss9=NBpCeWhNynfA#DcFX#O zmc=QqGA`mCHuB8UyXbpLYsO_I08P1WuQinl=-X~-FpNxVgZFcRz}$4 z_5kSk1XQvbOZucd#XLzT1Fcq+>6y~Fh*mWr!>^kxF**LWr=n;6gdM3anI?9kbk8tb z*@=cdgOX=7L0+eN7MUh~LI8`kl~-da$3HOccT&(xrHupb-Peb1ua`rQ)HQ{Z{g`d{hu zJXg|`vHGTvqd(3eNx>O!S8iM`(f#*|%YUjj!5@{9Zpmr|=1)do2u)UpdcIa%e-J+> z#k^Kpx}{WyP=;;3%(Wakl*1dvr{uqsAE;q2FNbSoZ&in)2E7Z~Tt<1#P`;9IqnI~J zxAG|y>34NbsDQgVEvE67K@tAbu?u-iLK#><%VpXI|4Li_t>Tk8DQ)S54Fd0D>a$7{ zo6zRBO06dUfu^qKxjfU<|4E#7s&i51D z(&bsQcIiWVZsNFgEUpw#bNzz$RR6t_IpcrbRJ8ZKk}31I=(4dsXJ=Pl@4o*@Yvul+ zRQ_L-u;+u~lA;9NJ}`)O^Jn~%lSW<;E)^E05Y;~(Z<5r|l&$CT?B}_H&@SbJzwa&j z376Z|)Bi=L&Q$)B;+(}hq1GJP^uDb5ucSMEjL#>fL$;R5V-?I0^ptOedGzBXI z6wXxjvr;l&ilOkw#5qdSKSRX%(!0;fFo0gTd>&KKC3K|<|9;a{Pz`%=>c%rhYC1jSESOS$to^eRZrhcA{y z%sTs0!7s{YfE!&Cs+;T}+L*EMr2=WxbNKQhjd~B@YFc&O zPmwZOVH+7FPjVYgF^D{!)ca^82eT>xzL?dcKh4Bw(d9HQV{#knO|H|OhGa56P0XaO z!6yKJTI#Hphx@v-y59~0C~ao7kv(`Moyx4%Nsc zGedF*&}TMJQO=xdwd`v)%R$C$f!zBg(p9Tt@se&9*};VHi8)la(rYYQ44%omqOFIe zbyNDKI^AqXgwo|y)6=V5YA~kThUQlHVuG=79(5m^P9+Mc&9S9#I+f3>hQPlkuQ~#t zcs{i?KyW@a0<(xt9%@atmzsNkG8UTWq4q@BXAiYEKqpTF?Dtg1!>4CQQ}ToHr_+Y~ z>O`067{~)|zS2-G8ceB0OtBb;Pg2 zR~A&gF%RlgNF9RX7~=}5L!p_~DypuA(%X#Y7FI8_uGGJXdfWbaKfsrw>P>(f#nf8> zTZ^kV>|v`3_qVvXH5(zF;<2|4gI#OqOERmLH9j|*DQ_uoTVF3VZxxqka-_Sc_iH^) zYi93$_Pmnwp`e*!L4KEKt+m9|lGE){>cbr0kja{~jGvTKb(cR4jM!BgURZTye^Rf~ zY8EPcL*%HI>hk`-ar;+2``UB$F>-C)cd=I6c#aWF`7t$|c>9G~merVl$71XNOnwhhrx}1sF z!xdE%b4z29Y2%%+4G`+;D=cnpk+IqmS9(@Stz%z68*35zlLh8P6P2i}PR*Gnq5M5r z{`R|3@l#}4Ch_PQ-pTt-mDk*bk1I{AqPo(D%4+|@`iTo|j78{gq63v+X)a(Sfqs_H zSx@FN`g@u>Wm869qUHP7rpXkk?J0eeQVy@G)~S**WkNl7>w4Eu=sQiU>F}UBwkf7a zY{hGX|Fh`EDKkhhl>S&HNK9k!Wz*#9*z?={y($H0V>LCWSISJa+3vP1ziwHyRj+EQ ztHXchlP6_9Yu#-d@#ed}2U8K&Wk%)bZZ$Q_zmoNIb#SHqRa8@^lxY)cVHt$jW#;Mr zZ;G_~pA^ZMGNCp}_M!XL)f(8toVSMB9$<70H9V)=H$I4vfIU+=jNYEDNy#6z_V-lw z*8X8(wNr0qw-n6`%xGAs;LDjrjBaT(RZrzUo^3sp-ql7I4AWi(|i4( zx!scV$~^zhBsz&Sja?n=)D+*FTS>$_cXiav`a39k5B)}QMb@SsOIU8Yca-JDhU@2b z)cydi>Z%(6zSLFMu_!v&K@CyNeW-YSbqs9v)%Dfc2&~)ycO)60KV@qOox+ETH&o|2 z`HYtt%NVm-m_MK+cSJWT*2oC1*+^Z4SbsNCV*%ziRtE#HCTf0wf=wXFd}v=2bsj*g zrcelcC{r_N7ElG7VdOD<11WbL)WQNSpcWd)_M`JHRL}I^%S`;B7ulVuwNG;u?k)l%)7FF3&=xrhE(hxVc1wm{HM63W^T zN^z2VX#-R-it4miw*h=^ul|ug%AU1BjXBSqC0@sK>1cne(1OPbpGz;3OGUcVK`o0- z$9e0j*eHE7RSdjGQ>`v)Th*N8Aaf@mv4A`}K|#U1y233^-k4g5pBiAd-RMYXwFOP@ ztQJJ@&dzG69;=HQrX*+J(iQrMH&yJaMgu(Wu6Cx9-PE>@x-r#C)-#HuxNd4~gy!w8 zp0Y>U06;y|%|^7=vaS)$qh*5fYXT-0x~>n%K^g!QJQ12B|&QqMtZb;aySiw8m?deWVN zYKWt!fp!Pleos{QoRjL@iM0l~4^wAg_NWH69jso%>5C#m)L8)gho}bt5E@BohM`)9 zdpW?NVQTbG)i~ti@2f8PRe15?>RncnB1hoO%O^jZ!1+Vcp3#3T%oKv;i;!JSjRr z^>^}2s4g?&h5`F5R;w{;drw;-cZbHmwy`{E!Dw|$a<;3-fR8+B-x#%D-V6nQ&3m3y zYb;C@PdYbNU185a$NBO&6{jx^lmJkJl>mVg)IR*JyMv3Jb3DlusP@9V;J`rDAK+df zV$Gzi zGzd}sl4H@Q5Y;t(7VKoQeN5V$c_c(F=lRi{AOCfgko%xebs+M)9;yy<#5pPKDDR*b zUB%=+?4bHn(0_K&v~~`D>@qc+3LXfg zz-b^@s2$uV&v5k*9QS+~uAXO~X|F}S!_v`$2=xKeXxw!86zVhszDcoFBh~awnFMMs zR5MfenQA-?-%hh&y55gfX6vTq(^x)7#TKd0vFYck*%(U~TVS4=n;|FMMVL9Z^L$m{ zPU2X2@NrUXFm6!P;kkusa|Zl!ECMQL>ER-ka1M1`v^tTMrNn5A6ZdHDV)Z!8qE1U- z8D5~V*1E)F&=MtSc#Imr+R{HU>J%IU z9KKB5E^r#g){KVS$C1Xy%OSC!(y---o0I-tt`5Qm?uNgsEt0pPkE22>)COQs-xXlJ zI&^sj8lfBYT8Y+vPdiqseOY75whGMKi!OI@$W76!)OPsvewFG6&~G(D4%2B|i^ytI zjWwWDCz`PaHey-&yat6v(5_nzc!N!#dN%&4{^;Jh$K@5o^yUD6%}^ z)m+?|YPHbht*V9fBr~Y>(j@`{kI5{b3KN>IwBUfWt|3Ex?wO>O+9Jf1vvq;2f1Wt-9z)<~ak?tK(_) zD0>i_v0+s9thxu{>GfHZ)|pD5Lr<(oJ%b&V(720g1{xgfpi8`>7clzSze8$O zpumf0j=Yrj5`Y68zl0(y(wfUK_YJU;3SLnwz}@4D`pOPg)5ohS9tNNq*VJbKg|4eF z0bFmWyI3DOcLTE5K54C(4LAbc;3pEyV#AG#BVp5sHC9;%D!{av+;-5pJHo&Z}Piod5mwSyQ6 zc>rvUsL?dwp^-U~J;bMtkJXW6xufQx0*}?n%qJEfaxw&*eF8NAn&>lizFrByweaqH z29o+vuYc4>;N1Gp!Q&n2>~rMak=$OWF?L@=`uYNcRY!7pi2M$|dUDURY^Sh&-^h1@bgJ1U5~OyOSq4r6dfN_+=#)sX_< zqw9C1yYC?@JJQq-5Xv1X%SZJJq}_{;>R4>L>;DOS(who@R(&yT5cL^c9YUETI#>uD zkx*nqXrvV*d44k6P{Mo)v!QR^B~!fGIaz(wx6%v^bK3(2&+f!&R#F7%L%^fW!MXLoO+znqNVmKk^~-8OT7Ryh{#k__R& z8Tlc2Yi8nkbuZv6YJuA&;XaU=zb608deT_9DVXMW+gl9eB?8zxncdb$ z=Eg9Eb0A+`n|7}pq5Wntd0YBfdWV~|_&}|Twx(jj4D4evi6#kI@buqcxfd%{`z+E= z4n8hlm`=)1c)h)yMi!G+*`gJ%SWqi!3bcr8@){oOYbqDdH?5k!%Ca)TBy&ef^Nb3Q zZPJ z9>x-BTyKX0u4e5j)YXyFnca@hsM@ySsosQjlp!C_YM!jmE-l5Avlu|NL@J$+2Yb)Q zaZcMO49a=j`2jVLb_Fv{7I9Es5jIQG$6HMa{X|`D zOFhk96M0O<5fo{0{UpujWUW8sc+*4qL|BU;Uf#q{!Yn0a^WcLV-1WN!94V&ElpOF*l~o`O%0k0Vl=$3h;hxC|=Rz ztyxvNT#y%~_62z^xcv+AE>HsSsWZ+{7AwRf6l+@ATZl)QyJ2fkD2kmF0D>&1VWS;f zONI*TEsLm>5NcHJ+is*v36n&^Z4d_+mN;9*zZ0eTmWbkt^IX}!MgEvnKxRzq+;$gb zjUs}+#kLnwIewx5X9(jp^xAsaNkw%_+E14PN7ee_M=PSqd!~|;#^H@weGiq^?8|$j zkUQ4zg?dF;#81{mlUGH%{i~8Y4YX5Ka!En%j+bFmqDo3p?ggP%wkR(i^cE8{@%gY4 z6(7K`%OC1^PSx5r!P!;jw1|@ukB;uK-~rpf>~EnZ*e z)plC&`s?`C+FMg=?FIVKc)81B0`l^Y_-I!-*78K_)k~XY>ZL_sxuPc~NKHuXif4c= z#bx)MGSakD&Xi?jFR6zV{gMxy9YEHiJlMez^@|@#nf%lOw4xZV1I6rFFy5^P<@$czw+I-YUV{W9LPwlDr%Hoo1Be{aI_>*OlUI!r93@ zP$ynPSRj{hZ021lUW>Mt0&ND;!%}=A4#fBK;!|-6!fP)+DX1`{iq%tQv}TbRSbTPw zN3}N5Uw^mg&%Ym)_f1FTBm493s6v26e*nI**59P}JG}pHya12B-xfP8wBlp6KvTjF z3s%+f=P1cq& zJ=6DEsJ6S2KQ)Jq*)FfWgQ2Z>Oz^z^5K~{ zkcfa+frN5*$SJc@`l394&|PbUkd08zTni9457c^?d{M7V_}gKyDMm{#$JAArgj&CxFHHEnv%kAWj@t94+IXh$TqUj8QI&UvvGSZpXOFtD+EGyv7mD0 zm&y>6PQoR4$2B26s`Q7PAgjm{vK_thcgSyUtKF9+wW;z5M6A3^W6JTk4zdQ?-DX2O z$|~-Bq8e}3UqWxAw?_scH-HoszXS-|TfI2E!H#0DSz8Ou6ZO*HA~(8gCH?j8oA}~s zvk9G)=2x_#Jl_p{2v6w-!2--PK$m_8saQpf>_v%H;?r22V=ppGGC5OgzGBv zaEQcmRlsLi=wKB-7w5*?ROP2weR8jc1gB_KHAvVAv2UtDc;ZT}1~qsbCL9XX1fOS) zjjYLG?1j_3T3o+Vt$l621*e7`>+pl@C7rCppWzVd=DIuvT0zTt{60YG`g|S)_Nn?9 zs!!9@27GjoFprWMG_%a8r2(T(mzk_lfU~4Cw$P1`*|qGlxb5QC--3dF`}#FF_&1r? zrCLo}VxX%_^_uc8i;R?euUQ+I<{T9+-D+O9HrEEo0|{WBj+PG7+D|s&4Rnll7BNU` zD?G+}_<0U81!ykf^QMo#zglF{ihT(xDEh7H7TpR>TEL=ZEj>)DU>dF!ed!@9fdlhd zUYtSTxEm!Q{u?XL(}(Lf=t$Q7U`jdHcv2_LRyQ~+GnkW zHeDMJgi2Ye|5N)Plgr|o@tQ2=8Y8objk2%Ijvd{DQD9%oHLYtOZMJFhAZ+L!uX$+A zw4O-T&C*cTn+q0qk5AORT&IlGNi(iM>juRvrn;712Nv8mExdl}(9P+3&S?)sZ1&yQ z$7HrHq)CnVb{M*q8uRgxLc1D61DqD?(S+k*!~iPS6wNxCJ~qWDY25O5J^6~Ys?GUc z7DKW*_X9T#Y{AQ5N_I&LJ`BLzl9%F-_2Xf+Tk_`i)ve_?9yT>$urS+AZOmb`X~o+I z4GF-6%ut9#PiPYHRb*b(Ity!bBz&Kj!4tiHy{+mo>?pCqYX0+(0sJ|S~0C7vZ!If6WWVqNs|U; zWssI@j4Z8Hh6Z9X&-xc8J#5bN%`=nQ8oFm79dFGy;bOuO zZQz?tzqf%p8${FE;$sX|Y==(PmX5XK)spONR5++TZwZC*QhRi=#?-k3kHD2GPdo78 z0G&EQCyk>e9r>_qalpj-6f`*^Gdah5%Y3!K|8K2l0_aIak)J&yr%Ix(!&@0-ks0W~ zP~n~tVq%aMC>v|#AU;jzI6B&icg(Ek^PRSR^cwBeYvhlDR&)lQanz;@kdLF#F8mRI zPgmn(mTo*0zD3=53xF5h_ym9f-Jv_h(f;nJSR6Iz!KdeJs6Dl=U=!qhb%OTPSPKlW zuE49_5KM^;>0J+A7~^4%p1e80z@EGfz`>rpuDQ9k-QBSs-n^2zRC$t``t!9BxZJ}V z*~==*tOHEbf`pcDK&J}$VCtY<7DKh#^{Z(W=}=$p8njZDK6Oe~i7>fbntM#xF-YU? z&{?KovaKz*D%)!7UF8dXOh_X%AK<~>#$C(>$XnR+@Dv>+FWa|)6iNPUn8{kc6#-f zd#QIXUL?l@gGkMii8MQzNV#o(^!F$p2r?lsiA*Jv$<)W@_y3$s&GZ@@Wa_Jvsjt@T zzaW#5NGDSy$P}q3NsUZ#)<2;YP@8@{3%GMoKkg1NwI3|BIEwAZivc|9$7=%=?9Xcg z`1I$cvc$Ctb-j6oYd+dOnmFgcK{;*r5?-9=i_X!SLM~2Dz0$ zIehtL+`szD7m{j!?AYNv2gBF-e*6*}LEaZqI3!Ef&xg>EmjHnGw?1_!8Skd(HUFRRjv8y=U2L3=_fcv(p6e^G56ANpsKwd|JP$4c zIirI>dNF~Q!XkuwAbjVkS|GS)2z3cWi^fqvAky!n-2jTs4q?yS4CGaCyH@5PSjJv7 zEC_7xMG-+fJC+z$2cbzr=xq?MTg^+pvW79a-FjWM3fmpmN(o`Y8fFo9FhZNP^R{Z} zn6kDli)uSz+vl3d^s&@g*zii6SsOybgAEj>2OB7C)PWbB4>pQUGm&@Bv|2NL00Q7p_N7PxMr@^B$Qa3f+wM<;uJjz-6@bRPU3^mRjW*fp;?S(Pv)HfYEFR! zN&;DF?iA3WICUq7;sB0QQDOrsI~5-%)0nBe5Sv8Hr}6^0r0=x;u>kIYg>ZaHt)`*8 zmlQk==)a^*_K)wTL1Mn7(&6Bsm((X5M(;~H9}e;JlG0jGrhZuZG{ihox%$siHd3`!W-%H9m1ETNcchMK7i@r0u=o>gg zm&BP;O5&Hab%s&)>lsGb=_8G@n?@RC?~8=!dr3|+jk5R8G|J98i|0ohRiA~XnnGP> zp?goE-)BM7y+s*kqgq37SQ)}PmZE0!PC;4aYssvIuE~y9alR8(jk zuU&D^t&EZjE%KTPKMhXpDs;;m7HxsHFhaX#!cWfE7RnnIL}0F3RD|X&`y-JlLN1j3 zp~^>L>TW@}^wzv1w1tSjP#d6mYYSjCObU|TuFx0O%XUH*u!xIVJMqaPs>uQ3*y?>p z7F;te`CR>viYRX$rrWe-uIpt-p{q-=mfe068<-|GZ0FM@++?<;9VxTOp3>E-uXpyA zS#Zomx=CN@7GGDQH$EQeYOQFo=8;b?TPvFWwAR#O<-3HM7E@3{MN2{+?P>jlil({= zHKBjMv*PnCnZ;FmYk``%@wj}0=@_egEO$vORP8s=*0qhTv^SV!sU{#tvQIhSV*LUrQnpi0AkS)KnkwXv>4ZMMl!t-Nfn zp*C9kh#;+zmZhOq&zNu7^GT+;CNqE-RV~s%b04Zz!!$${Ott3Js-lt^!Yf}7{AAKl zo!MG_>8iQO_Mk~P3<=je`E)^wfN%9Lhev(7!*U<3`Ma`Vy8{AkvE zn36@Q9>K(jp?$=ou*J43@4^1(p~&bEe96n-VcpQ7;`oULDFc3q3# zZT)In>*_K(d}ze58Ga@SHVHc#afGgz4oMs%*s(@7F7uC84H(t8XfDNuYwoxhBuFg2 zdvQ0;eLk~n>NHN{rim?umH`rDj74)OH&V+F+u!Ymmn@8}p}SvLuI)S-bQCMaQLZrh zMfYwM`!$R(m9g~QM%PVr3)Z6>YNRFF8cU8PXTfBBEYa7KSyfDTt#$R$`r+hqKG_Ei z-OnNm%G_I|k7@p2VvFpTS9)sruJyA(ZOr4N4KT?p7T4u6&*L{TE8=Ij94S0P%V(O9 zrHTM7S47K#*f}h%pRbUfCUfFjdL0Fg!$f5lL5B6E$%`P9`_Sn{yiSmoK|6}Mz-HI2 zTmQsNTn6VGGJ8##+1fy6I|#z)(ogYKngG&to*GN#?PfEjC)qX$nrv?m9+u&~jAvTBFCzB3xp%-!8R0 zzvzW21}7mi-gq=jM=hst(b7p#`*?%#w@gcWOT2`|r< z)2E^igV+*UvK0D5WxBnTug1DsNDKxD2Ra%9tJXyIm+{e9tv|Gk_k=Icavp%|AQmj= zA-Fy!$M2XZ`#;3J1$-3A(?7hkJKejPflVN6NZ1`VBq1Ro0>Rw^!QI{6-E+7EI|4NB z?i>=_Io##&gFD>4Cz(y||D6fk9nbxq-|u<;@B4XQ!gh^yPfvAqRdsiD6=iG%^4VCK zm0}He&z`yxqUtTXuo42IEel(P`QUe~+bXOc%w>~TA%l(4)uQfYwfSmH_S)F7)zG1B zEN+cB6bllE)?m<&eI9Eu&$gVcT8mO_EPX8`WDKjjPAm>pVCp*bm*&i}UTg_z-F7`5 zsmb=OhmiZ7sp}!u3{a76+qEwN*^Qy<*!i zo70+Y+y$3 z5_h3J-?8hv@TqT^Pcl~G+OiJGV!52}wEZdDgrR)Cg-=o^fq|ln`=@Oq=&-~-mmN>W zXW3Zc-C|WV#i-p_@UgL{yMYcHYrY2{j$PgZ!QYbw?8Ub(XPfpyf3h)gA5ay;>hA*q zRc49%fbQljb)VQAP0?sSnyDt+upgEAojuu)v7Q0qzBR?w13*nMGam$a&GH`<+oCCE z9TcadDMAj3{m=$;4}prFu_uR6FB{8$7(^kkjfcglKzH#YVsA9Xh9j6MdC9IH5m%xq zh8~4dAH*^pLrq$OW(_VmMp>Gu}Rsl{^U@ zvmaY~5|!@!a?SJDw!?xb0QIM0L7EwwouJcTL+G-ThRp8+$ zg3sk)4s0v!%ZrxOxuH#0%KX-9HF`k!_tfI@WA4_h`5J{|^d54T7hlIKi5Ob;W!29E zk$u_j^XP)TSdk0pL&I6;3t}OF#TUdj!tgm4#YA9y%0;wyKc-zYFka;ndhQf9=MrS+ zWaf7n6uTZ?20&3qSp{)YC{#_xEp*8=Yb#Pe>cjWcll?knnZ z{fYX74BV%cIivP+^Tt~kt$!s^E zd}K~uaYOVIVB@*>7xAz9SmXWeetUBTXLIU#RvhSdCCKDneyzz1Mz|IBKhh=^b&z5E5Aef2&t^e zBk>;c6nQLO1oN>z5q}YiCI9+Fqyk2WfPrlIbJ3P;e})zZPtdO<JeJZti5LCK8Pjquf@JkSgB%TZgUI& zqHhBIx0~?N3b9QeFfkCo4j-X~FhVZ<5wfp8TlEpDOEbnlVmKbk%6`ItD^#y&E&x<8 zr^Tg(vZbH!0ik*|GR{%08Zl{Wb-PMoB;J4JKe;y13+eq?jEIi5r{RC9J*}u+3$mv+ zvTHrixy`Di;oeQQEDcZIW?#~f z?>x5g=s0^WX@K+%X$VWriUR4103BNeG7(Gc z#mr;^z!5W25&8-ATEZ8qy{eb6-iB;9T9Qw0n0{E5*fYq^*9ymK>CEZciNE`CqW}|JSKF)rzp-Q(|v=?a%6Q~JZ zBpkC%+q_757^{BrB7r$}EFCD!a9ImmW+XZQ5=k0-wM4@#^COFvNFXdHYe_`G(>){- z3$Ro|fFR>uPWD0~z8McVS%8e=-&vH5dP;1BOe)*zaz7U=M*P?WndC1pLm#fbP1F+j zrW0R>tB<}8SKlS_k=mxZ7_QdFaP={Us~E&$yv*`vBDqjny-cJSz|>4+1OTEl&IDMT znIvJMG}cZ+02LN(!@3Uy={g5siFFUOFN1Q%c-t*2I^Du`RwN7}u}*l77POBpx6%JBdRRcFRsi0ldymIs-KH2YA2^ z`IBJ)B?8DGeAD&-wB&M@D+h_eB43>xq#Qs}4t)Jkc0LCw0pR5%r2#5C(S+MsqJFlG zopIvrKQSA^{J_|;l8f{L*ySR9z~}NPczYb{lau^_*~2#q8U2s50d8_th)b>#NL&JL zcFaZI0W=CC*8!q}$$o$r!DNRJw`NHQ)|%tk(%j@QK$}o9AHWkzZfBg0VNLUpN;qDY zhb%{tapA;xzG?*d6;~tj8YMd;$sL^WNOFxuIn1Ffb565&Hq8xbQ9(nj$d1JZ#ex7_ zG>-X1lea?Lt{Bh(a!f6WHKR58NFE$t%13?ySeu_5#EUw`60DCJH5$V_1xS-`$F~Xs zdvVOSkY0Uust|b%u&XfH2+*zwd4s%li;@C*-tooA<-oYKAk5HA{cE94UB(^4RyZ`K zfjn0VXQOhG9+uncRCchA*x!OWCbuj>V0dQKZXJp%Qi^oLY4VEF=rDjc%4Fc+ZdtMm zPbHNjsQ}Z;gDB&Yn^qtYKXJ)z;s`8c<5<^F07a>my# zgI(NH_ArbLVRLGcs<`>E7WoZeN*$D1sSc@_aeM~AsKT|nBrqediw+-@>d*4!BZJt$ zdgy$yY)d_ILx@ctU!Ooy$Fe02(1NjSdP7iCEbGvS90JJQm?Q(-YfRGd=-nm+UL|AM z%ckTQz?NoYAwc!!!jRsyL1{>q44-J1)_c6vy$vuEuxeA3%Irxo+qcvCP$-Yz8>n9kdpkytfCK z3r=75B-a2A_afOX2Y4=ok0X68JJn|2s46!3=iUT5jZvA6$hf#K>44K@u|J8_Azp!= z70ZeY1i|2`fuO2b_G%EhfSdaU>r@q+d~}FTMzQS7Q1s#0X^uRV$CEP| zU>ut}0UR`zJ(xgNe5+j5K`Br4$_-_IP7SDFrAFYCh$%($Rlh&uKptl_-;#T%uK{>_{Wx1?YT>hVhBDPqwi6CYh=pU zqZlv~0ebaqmEyNY@~0by$zE1}7S6J>GqXq;+>>Ub3m0a!XG1tAv!%1ikGL2+2PC_f^_YVU3VS?1Q~0y zfMmm9X&^$YB8Z)^ko2|=`Fj5c1lMDi7LqIow5Gpn4ATRxv3iT3Jq%zM7Lf{U(Hne^ zaopg~hx9matn*@$6?)aM#ZZ$rvNMZ8yavQkX2cO?>@&`uEBSoV$auro1J5u){+N6 z`m}YVHz@Isb!4pdxbfn-?65cO#ZuPe#m8Bu4Pbf)*}4tn3BZhvpy`9G#wN1gdeC^f zEBkRH*~`vs2BJ>0`>*=q>=sxN(i$tvQ=_uw{K&x;^da2w6u?+13rvdsrj*RibYLGVoDY_4yRON6OQ zq(1RpifDlFlKtoqSKmlc%$iml+4H07O?$! zN#+S`?J=OJ1lxCvTmhJNoap{y0cNrrCyYDKPe6KaU^9Lu|DEen*4IjXv9ud|64mR( zgj3)%2584#oHg#F-v(-0}s+3M5K2&c2>r!hj9&PtvE$C%E>o`IG*jlDht zs-DTpoh5y&1-?>^^R79LrJV&9FS0D>NFi{<_;ctZGg!hobg-T5!a36DI}cg#u;s$_ z!RJZi@2=~fvzRy51ODdUs5LM3Kk;vr+tDebI^TH<`uE<8;6R6Exk!GZ8NPAYR!*=% zjho%9@FkE=Z`Sk@S@+$|AFP%@Hs~^t)|*Yfj4@L;=5vK08XCKOh1>;>ldqB$;N{J( zLB>vHN3M}h0O8ls-D|Mb*U2S-K{v>YOn>^+D8);$=$m9I%X|~WT!RJOgj!RB{dSYw zaQ@}+L2U>u{KMgc_uqXCyx`SYnLkM2f6VorI|M8$RR5k#;YH!dZQ}S&_UPUizR&i= z*q`@z^6tz^-yu_Aq;U2QSpv}QE}06Dau;30xM*xXFNov%_aPuU8?Dvf*f`Ew{R%Z= zK10CpxwtPOpfvdCrU&SB*w6bAw9X!a{}{)stYwUxW7x3XmTBzEZy-DDrv06?VcmX5 zqZ!A2k$uu5(w4Ph~;Ubf) zRQabnVxt$CJ#*QUC!`HL>gilygyB(-&3%eWG+`SNl-&6@-w8&W{Y&2omOmTofAV-{ z-+wleAM<`r9MXU5OTqV_4b+KcPA5&+_2Mh>5xV5u>6nrW8d?SIMDmhdcjgT+V^1M%*3R`B-_;s7dM>6 zLf8EliT5J)wW(W)7uKIWYHO_x#g>6y+F0B>$S(O=g538jSFF*iw0@p9vDgc&;@Zk5 z#&@dP5Se+C6flU-#QmMQzW%!Zk4^TyV7G2l5qme9WwBAWP?4ppBmuh*My8P281!dL zg$!uS_N78I_`aFZ*}*jHd-08xnFEF4xoe=YTSU0@}kWE?s?IsxL8y&?v2m^JRwM^ zL?=dMoZVnmWn{R)X6R?VS=CImpII|te<&u0GSSJF4xYozo`r^+5!ZH5W;)+e=j#Qi zpr!4!0b)nKwbMvvA1c98Iga2J;LrYt|0*bl!6IS?%u&qbj(D&Dj^ zkfi5=(wOW`2V*;TJ|CPNWG#H?W>h&-7MvAe#j?;EVmlXq!yaUz5xz6Ny`l!jVKBgI ztxhpqoSL=S?7p4@&Oo!G9rm-wD5X{*;N+zdxsYkcWeOAXI{BX=O241IlZl;P+F zo|ZBs=-t2j2l{Uu{bY5ijg4aTQB^Jn_5bGimzE?FIJNAv-Mvup&E1brO4;9pvztMflU+SQ}m7j|{&W;lo+8 z02=*&5xCp+kHFphe;@rj>pu!v%}5T^Er~tPL6b3IzRXGcL;3V`(L}7pEO*h-0J#;q z1>m|u$HG{#X-+x^>jv+0(m{x3)x}MJ(EF>KhKKm1jn>^W?3ksy(`}pK-M>kz(T#0m zzIyj}k)y0gAU%vep$5{O7_Ds1MT4A%E%j9_>UpI#gpDZX`n*zbfGbPb%Um=dp;RJv zo%{+*dqm_ETp~7BTGRt6cO2Z5;wBz!DHy1m{J%j7gIuYbhwSzq!3 zDUWy&HX#Tssu@cQ!ndAgBZKK$oP~wZaaaZ16hhlWfzFzn-hnyeo7^CVHmqeR%~z(L z9vw*UvJYJ1ZOa2pqKhZK?t(y2QI5`54`%GB^gzARx?3h18r0!WQvz4M}l4AYA4*yqzWlCA{1vPRLR zki7`uFw=~CZFa_9<^x|Z!3O51GZVTGv=tx!<5m) zC)$rEY+Cv4HTS{1Wx?C04|qX5D?hb0U2ydI1c*cdrS#u4UydfQ?m&ygwhVuhyKvw$D6#xV9$4kjbj~ z)XJ^ze}1XnAt3IVdx)Bz-qF!ko2BK`T4}k__FDJEg1r7NzSy=4c5+eh71#?!_D#I6 zHEE+I!MyGyYf_qC#b-p7p$~*>$@a1ola<$!{mM}+0~cq`^0XZ^n}qTp_cBbZK~JHVjx8U8&5N_(#bh`8+-rk+B^1B6*|nUy=2R)(TaGWI6w9MD%l)Z9#%v8RFIgI(AO zq1W+-z7Mgl-T||chhQQ#;UlH|SAQ%Y;f}?4+;4AMvG4t?eD6vnn02d3vwihr^DVX} zhe^qJp&z)P5m9jlJ5&oaNLcOKz~W-Iy*8cTyaFzrB7u{PhM&tH2MMVgv5jee>PH73 z$Fj7g5hAP=m#{KzX>oH(EIU*ODv82+*2RZrWjE{6=`eWiTn~i$JM+|o1BGz5zCOK= zbw$H-j^X)aG(=NELwXkSs#+uZ3GG|9G2LN3oq-cJy%r5%*_zNWsDXM6xM;f`kPfDr zQtBMom3MN9zgg7zXim^2$d>Rc8O~-jNE%pyFrmIVuWt{n645UhLg^Zis5WIUo6xP` zq(*%6lo)ofDP021ps`?-q0)>Ug#V)u0lbY>A6i*^jM|YYHpY z8WHXZ`_dYu*q#k&Lr4A35my4siP-;NoTlkJRKKu?VxcO zTkY#&Nd{Z&o4}(`!*E5O{fFPkIyM!1ld>)``r~n?AxLslB1~wqUjUK&)ms(KQ?) z|1~PC&xVMWs?ol?{>zx~#=jX8?#dVw-uN~q-1Uz!VM=_;1eSk+x%BsA!uq_<|1V?0 zmT&@VR0m_i&;96Pj0tD;hpH6Ast$mt4`(L^&^92Puz|EFh6=3*(#8phSmLj%EdIi2 zUMS@ikF}guTRRf8pI~3wke>r@O-bYn_`Hj1G21F$f?QAwKvXT(JYdDA6SZzy<6_zt z8;4qS9bDas0XVEu`R>GDwZTnbtlV2GMH*;NVM5(O+lVYZ6N_@cDZD2bHGGu?sI1^1 znj{&A%VBu5gk2aX^b)nqX&MWhAm%h{U**?VhlyQT$Pn7ZtQjKfD<2MHuZPed6Z9?K zoWuJ0jlPK<{sAp&jeh^@P4pcTxvW)fsjYwmjb&N|t&Rq_8c;F*<;MBjYG22(#N)eX zpR~=&ezNUu7)jSoY|w0U9qje}srhl;z&Jni9R_4qWz~m4(9C6vhtYf3pEGs~f$0@Ty1?EM5f2KNR`gv2yreYP>DD6G~bX!Oh3$w_n)a@3g& zK5B6N{!l9tus8!B14b11$>y|1?0O;%3;XZFX8aXQs4o0*SdEZF)&FDomVSSRZ~52G zCV8VjUG%ZUDYQgF+ROjo3p%y#zc14BpI)hEO5~aH7|uI&@AJ1^G>7ltR4YUXO!L^F zZWeE76}6|*@c$f%Nz2C;PNiiX1-~ni!#wwc?_lr2Z|67vY;xW0$}Nl90JtxLktM8{kJQ++u32UGkXOw4i`F@ZEDTi}sYgn1dO*+{}-m z^Z&WG413b@!&(`O-3o-uT?P%?pKYCs`HI}^(_Bng^YCE+c5_?dXYXu_LA|%_?oLMVhJq<&|U{Gu|)ud zE@zjPV47IYv=+qpTv5t#V{e1U0aJN=b@~}It(mA*{|!Mn1!;O>y5J+>uC*~-CqxF zFO*f-qm)hi&-IGzAcfsRA8Lx#0&2Ys6Rw?lL$y3c^anC{Oo{ne+0 zb$eRF&=y9(H49?i@qcIAt6SH?V7RbR1k8Jj;PYTBtm6zezfFwGGmaYg{rM<*1F&@z z6c@_Ej?oAJ*Z|iy9{Oqp+~;>1Yn%rkHyW(saTC6^sPv&M^|*oC zTqo!#oUJ%P=L3}fnKFPIKhtUeK_`t@H$G|9Xx2%ie&OsrwpQ7b_yC+ zD7$?MxD91(ex*eV8OR9JozpMlEqo8_md<}VwEfr8LdVAP(+2fEKW$LqxHHDr?mA;o zp?1c&SN<%zXDI7<*7&wbXK72EJv)mQ2ce!bp6q>&Cdp`vV*1XR+wc+p@G^yl5bJ|3#Vy_a0xQ;Q-#33{dP6Er+vV zmkbOXx@6RfUZ&M?vEF3^Ws@#r{Q;fnvVnN>6$53huFzq)c;|}IH|}0FDpBj20ghgS zf``6;9n-kL|8=8(*S}$O`pY+rdY1bI%srIN|HbI-AAX^?ad!SDdJ)WsZb6j{Wschh zzAD|OWpOs)HUv&6^SJ{_gU)*ga~Ywqwx=zD8oCLnQT>6M+IML-Bi5~fno4(3!c8{l zF35Z(V|THdvx@E3&#thWchM;?vGlw6sFf`G9z+Msp6`LzHfLS#frHj!bMAo-TCj`v zKw?=~`aR5rWnrD}gW0WO=kDXlyzIq&6n2A2zasmeEFTn84EGl37em?ZUm;6dunNE7 zMbp{)OJ+D8PA|!}{)Ulq47>OnzNZ1p^gBuoU?BMdQ0iCxPES{WWqlSn3@-Ur;34V` zOG=!J-f?)A!O3r!5n4d|kCC)Hu}zP_fEqCG$0*&8^?wZNy1}kK1{dwkiaepZ`O)kr zkmn7U&r^U-Eb%F(P#Ul|Pig!A7b<|T=FjlvjCYx}%B*>1T3?@SYVh13I`$kr?5p=Y zjOBGNZ)R@z$1N<{^$ryI0yrpz*CK@=}ugD6zye1prMS&26w zil(gj8wj6{Y~>qJdPnwJ2TfVwx42l1jeH9+)smfli#d&%%=aA{w*{;5&X8Sm-(_&2 zci>PMH@-ueFcW?c+OEMmz6YnN!Ir-_>nUHLs`WP(C-802gBIa5412Y zN*|3U<38dMV`oGMw8+hmv?lI_eKLxU{{*s|$iA}C1)mHC@!*ruKf^y`MKY9i`D`p& zPW}v`9?JHA1`!$r>NLKde>Qk&z!zv9p{(W?yfKVT{9?TS&=<^}gt7o`@V)-rV4H_C zKql3Af23-BZz~lqp37FMw497E!SBC@ZecxaG%9KbXaC+Ywx_;}cKDVh8Cin=a~95K zrGRmCVPYy6TyJL8Fgf=XbYeBk*4D=7rE5@#LRqMX29|o363%ef%~V&$%~Uz#X1au%I_Zt^7~F2V$B-|-Wq>Sc##z}6&?}9$EO;elhviC2 z`R^w&(`Kc@N#Qzmvt?aMcL#iwt%f6MIDMP1t%iy@g9+(ql}_y5Lt4e`S9str2*K}KCpKW zKpAn&{t$x1&hkH`xs)v0HPtG#=S?i_wQI(l>}l1SF)f_NSg(h)TFxGb(zQ}pgv9cw zvm^CAJo8n!Ow!-M!K2-?ow?IN^EFwQbV!9UY->6wVg&P~)7m(z@dqXigV?!0@JPsP zKWk+n_v}{IHbU_1Bi3Q~no@!_C+7K^3)Z~mG(&wUXVz}8XM(joJ{>KVkZ{|v+1G3} zn*>uqQxQ{fQ)yFWQ!P_HQxj8rQx{Wj(*V<8({ocgb~%ZHkKiY`h1xL@?y*^H zvdwM_vz4;dvo*1Gv-P#jw(YW=u_auz-LXBeJ+{5KrP%)PqF$N2vU>S@xxIRO4e=W7 zHQsBM*ApqbR86Wc^^-P8uOv+-vY(t!j+3j&&E#(KAbE^DRbC`7l{d)S?aOpLvyypu<{g<2XFikpQs!SXKeA`F=ePGruurrvwr{X+ zx9{<$-Z{O?dDr!B?LEkQtoK6i_1@dP_j(`pzUY0|`?dEMcr_wEK0XegAfIrb0zRdE zs`@naY3|d(r?<~ApK(6ZedhTr@mcG$#b=k#0iP2-mwfK{Jn?zu^FB+iEK9R&&6+jq zOy3;75 z>!a(7l2r*;dMVqL)SNy!m7Fbdw#m6H=kIP`ceuN`dxHCf`)OeAz;=PN0xt$$O9*@z z_&Qfeu6ns9p@%{rhQ13E!+gRDgf$2o5H>0-VS3o2u%E)thusN#7M7YPd!9mh>g4H^ zr+=Ow^K8s>AkU3FZ}R*R?j7z7FC1PcyiNGf@Wk*L;funThwl$R8~!N#bA&Y_Frsio z)rfWxy&@(=u!!XmTO)Qx9E&&=aUtS%#OsJJd2M-JdGqBhmA7u*rg?kj9i2BZ?}EH5 z^6tueI`6H#4-@i!j3klSBf}$0MAnFG9N8|iTjapV36awx7e{W6JQ#T)@>b-d$mfx7 zBGo8!RHmqGQ8}W*ql!kwM>UM<5Y;y-A!!OmQPDGuFx*7E->Rps4+7_KH zIxspsIwrbgbd~6a(e0vpM~{de9X&mIe)Ov7jnTWKk4ImMz8jtES@fqEQ%t59znH+7 zJTduVipG?UsTR{PrcF%um_ac=@MG*ZYRw;4TC&fQ?48;uG7nVlDBA2VI6A42jgssb zr`RbL;)%=`D;*Tg#Z8I~7DwfeeyO&BimZ-`Rpe;N&U#s`eF{5x3oP(C;ogzwq*M7h zY0?-Xk5}x)6}#gFh0nMhM9WR>R9~}_7fEZ?TuM#F&fGR@{=$weN`+Q0HH$O6Qb|pG zC&^fOqq17HAMb?f+)shGv4$IXvG>Y-P1LG)cOwSTABCl)P0w9riI%;WQdp8ztDJIpwBXEz+KqQd03(ZUxn&x`R8J*C;2+ zJWk^C$7|L30PP+RR+2iu8l8`?RQQ4kT0P!hyU&+Na)M%SkGkvL6J>p^T;{J4uFfTn z#NK_{N$bWQXA$DbW%b$%1je z?4(JFlbwBl$HgpCw&qR}-$&Qx*+9iE#Z%yv;^4<6PXWJk_~`OVLDfg<*L1AA(dd@l zE9_C^L`lo64p2(!9V&v_!=$t!^qG2`q?C$M(n`|D>Ryu4Jxr35=5uGlX2q__gC4_0 znp0L+mXTz72EQSi3611bUaP;NLwA(8Ki$kbka;w4?OiPVw{Z^R-g6}x+NYm^b>2YI z8$MLo<>px=&rmu$ZJU}|k^T5CkmjQ+SGm_}cLc35uutzcdPg=p^TeYg_jPA}OZU!M zzjN=|Q&AtBGP{w<8koR)OLi@oVuQZ-5FUs8S}PaazG(8`GF5Updv%u9QFul2=U%*_ zd~>j}@I$?Wn)h^B3pxy*#Hktsv{ixcRTFQz!7cYfb5dRP)bCMwmIsVzxRenvlj`v@ z@f}?hUUpV~$-#^9ClYzN_=*~z)bL}OgesEulP6||bR49^1AjaAZox-oL_xBhUft5K z=@@q-UKnK2TUq$#`g`a5>t%Bfb-$-P|El2U3fjQVcXU+LF4~Snsg&Lnd8r*-t(GER zr}tL(ZZO(ie^kdlrLp;#$`2LYaj=}L{cl`Yhu?t?p_l?2{1{{?3^VU`%7e8-V;OM6`6=x9j}k+x(Ua0*&&DDk4y z(++0&amZmYAe)k4nAZr0z-G=!=1eD z3oS%z=$@E3VWKNX#mX@6&8u7XI?Km*YFO1RqkHodWjpsya{ZA$OHOB&l`_V)E8c}o5WwPVg!QID_+$U$XIa1Bpuu+?Oquf=0*wg5= z)9y&Q(LzbPPV;$oemk^t*H9@O4X4M9)SOh0JE;|?a*7|kL5)f4sVx|ws;CM8?C$5P&6(*thhUQT(QVkcT3Iy9K@K2+8@ zAP=IlQ){64Yt^*rGH>G&uMzo2H@B|=U+^VqAykgn?6I+B;5lrEzf95t=pdb0`ViTB z1<#q59lgzuLgu7?Na~#$ZC)%T9ZW40>VW^)ZoC&?zT3?=>`_Z7u(wL!-$*lf_jh(gYpn&zZ}VYdnHiQnc;#C455jYr8>{H6#~- zOTPx)75S*bue#KFpb*%;m4dLmB>@i^46eTfounq15q!Xp;G5OKx83T1+iIeijGyv8Oa|+sZ~pVtXazx&ObCyz+g#Ex!piX^QTj0 zrOZr$yJ#hCNxA^E?w34HZHyIL`LtVO5@+k-=CfnLe=7 z)J{&Vw9IppU*{cpqRS_j_$9yeM$)QLIf3dVe+`TS1PJ1T`s1(bg99{wBF}%4yzTeN z0jV?SxhYEq{tz##Jrv$sXL}CS23%XDy=PBGegx+kl0o6nk=!b@M`Q;*+URl)PLASK zrz9s%9q1mcS;<7XVuK>i0@Z*1vdC@UR&m<2WnUSf%n?6rNY5z)om!wwwSkGy$J}q| zzBwCq%2e&AcGrGUyAxR>WlLysMJ<0m+1(NGyMEZPc|3b42o6N(O=&~qtL^SK^)aVCY17l3 zAz_MEB)t>SPBh_-wITckkj%Hhxn+4iYP)*_uNkDyQCNxW*3t<)i$m**SPEHr>2+=% zzaC2wW0hWRtwK+(DIa0kSh%-aE8GXn(XN$u+Jh9RW#s&Lg?B>4xCn{=CTaDyPMz(~ zOYY&Bc-A$%tc`cwqJ{E!ZJty6QR|}>(nhp&L;qe6Ew#`mUTzAnH2I|__J%KYt!z+F zSmp^@9cO_d%I_2%)0-cVv=FL|?3UrC+G%HdvRj*4)E!VO{jD1;>O6&A^|uy*4UZgP z4S}z?d;!)OuqZeZV9jIRqOkM;YasI`LiRlTytEjERq7CUc@`Ty`1o=&48+Fe&<7Pf zuac7w2RY@E*e)XEH+PcQb0UO9@*i;VnOZ=(>d(6{Sic9Kfm1>6eg51>(SGELR)G)b z=We1!ksC>@VGipM(ZTH!i+5UU*0M`#1cieVo8y`azc>-JyeBuY7rdnKh07%lRR_T< zcsmLH*cQ$-&&T%tJWI_fu?UxS0Okglx~zWL zq9tuQZ{q08O%r(ddbNzA7EzeXO9-}FC0vQ+n19WXgT z3x>OD#19D2-BoMldsZx^6;Z1yD|zf`-B)#h?x~vZl{{JTLe{rPE};~T(NdeC@h^TXi1X;5Nn>8!X>Sf3p(ROs?CPuw-|nKzy55v6yrHTJYr2= z0?y)|IPEKWSFqayX_|xS=>N#q^RcRY#=VTcQB)U41@2cwRdrRbK_^?84ZCAzJ_=A{zb>bAz_ zd91XUo-~kCX@^rjplg3+CWEluD|vyrD)N*`od>4EH%Y8)W`y$S8)$W#!zGp!Xf0@& z4m`l^K*JdB0hU~32A?Boqg<(dh?Z$k`C6gQ{w-$wI2fEG6B)U2^Z4yfyS9j9l*K05 z1;so}Vr%U}zEJ*18KQ|q>kqj^2=7m|dM>y)DW30vPYOQsF^N{Tzldu^Oa!qA_mBr_2eqb~A@5tVgi5L&5Jz^@V!Q7;4C$ zl?cAJjHC*lCy^NFJb)j}9{l7%H!qUf2RQ{_LGc4iEo`vV#=Hqw>T@VekAe0qA=bbU zj8=-%l=Z3Qe|>xNExf6g59q2D>#aFPmelg4SMbN6WkJ5AX`dsT=}Hc~tydttE9DQ; zD(LKeHm}VK^VNIYyi)4VcuRcx&qQn9Rm%>(SeCa^7QT0DL3F5QnyAhI-N`BK-Y8m_ z2G{N((ctBE`D>uRw!(&F6QTm6Bw(m4w>;%9rFUF<$U}LV4?F6%JSN>6Q{X9Y!G6gm zR1dnSXmT37tU-6pC@w;CR?{M)F~QKxn7oi#r`*=kY=k6~3XoF*9bBXbU^PEit91Fb zwvsneTC4sNgO{vWb3KU_^%H`eyHK~WyaV4S!5_)HlM1h=pi|aVw24lZDZ5aN^~^3r zV$bw~>_U;uytLB(7x*@v?yp5s_9Z(E)wYFN3t1cm6xK}^!W`hhdcSc&^9V~Zxx^lD zwS1ZF@E0n^>ZFzoQcHgtE4jogIz2f-PcE$*RNgbx;}2@HquuRl2x6ybt{w_&6J`yn z4|}0;&};tgXRtN1qG+vBN!-JiAzjwp`@REs}MVT9A?c| z1&t=81(V`h4lPd;t$-8ZJggu2kZtZ8YLhUftfwi_t~BKN;ScmMm}SPC7Q~NRU5=J} zE@?$wsX?O^`)P@-%VW)*KrrS<0Lx>gB~NG1og#`KM&7cq9#~h=R{?_+^%5Tq{l!H; zrbrkehpf7#1@LxG{+_p2t^5UF4*6RifqR;3GQ_s2CNysuMDzDnmXGnv(rKrh@<`pK zTym>ruV}k;zrIdSgQB`uUr*7BZco{Y8D4#zGUZozIfOwPxCNd}2Wr{*8p(ze&6}6j zcIn#1J;m;q5)vk9v*}TZ&!WqYO9NL)S{s)ZNwis1W_4Ub$=ET%j`1Ctxe@L)3vvoqCf3223XM1`N4hGp`71bYKl-f&2BsN(Z$-XFEE) z5N03xHXG}1IJ!mmxIG5q>M24V3;zr)z&J>PKPD`g17M2^h|#@9Ck1J~LV++fpOW?klaou~@)T;fu7YFI zriv#Qkta&L9-;#gz7UAraE<9kBBs)C=Ib>No$g<~dxst-I zDOE^D@0V4FQn$;xpJ%xjA%s$6M2olb_OcO<4I|a7gg1#&v?lb9IwV{w=^3Ky%ssdn zqm$c8`W5ina*DRx2tUyo9~`9Rnqy0{^4wc^(*8eetVJ%kyBZW}jY+`JCq(@SPvw}# z<3JQ{j_Wdj^**bBv6ZkKk4%rA8s|6d1QGYG)DR%ATpJJ02 z`t7EO{bNE5CH}jcw@bN4QUs$FP;`&OJda8wt!Z0Nn@MgvojNOJZi==D5fn+M3ict#+fUjhKx( z6w<~yG1byjd*K;U!tGgH5XJ1LywGF)O@*A=0V<~!#Q?#PmJb}RakMokf;UzU&g#6g zv9nRLHjPKS8;{xC=ActPbYRz^B=;fQXyk0zv`wSY_n~4;54ZYflB-KDY>TN;R;ezr z1<}?V2@8}r$>lU@sC&`~qFLm3I(@g4AbwEEW}5PXSDNS6XIwj}(ASc*mV7zUBnr=H z%Vj6Of{!etmPbER^LhrRu1L+SX2xWY#Sk6yv`Uv=W8$chA|Kq7tmtzN^4SAwxHPg~ z&r#i+^*gLSJ=@K;hX~;b?y)V6QbW{5ihTNo^VNwOrG9W1ODI$$j}t4Jj$*RQ=ATlV ze~^d=y?Cuw4?%low{dH8T64FY5~O1Bvoz1U=Q{UyYu2>tM6PganUr7Ms>mniKMt6g zOy1D-)uoPFA35}g)(4<`$|Tp(=XJQh6PD_&DIdn~9d*N*n2;^|HNVuN7+LnFQ)jDj zYPde*7|h`Uu1Y>@RaP++1K@!Um}bUfkPlv-gNN{in2%f_V+(V8)fWg6%N8pzEJ7cG zKiKTn$Oh74aG9Ec&RkWF%QP?FQAV<>H9a*Qd?99=vhuBaF{2czjc?)B6@|DhJouIT zHQ)fvh&MpxQ(8@U{o0>e*p)gswP;OrOl=ySlEhD``xJ*uH9;!cOw^v@Qe`RS5E7mB z+`0tTgHdS-Z4c3Q>CL%b8v;rkCm%k%^T;gs5s;nr9SCDnn2@thVNW-QF`sER<};Tp z+UD;0mL&A;IjW1Zkc^dw9$F0`acryM`P<5l)F-JAW1giyNq-2XE+ec1HKIDG*(7_s zqD_X1&?%1)7!7_t&dHtkYG@{{kqmSHpPl??UR>+1y_Wmw*uwmcOT;kxiazbnTE$v( zc%{3sI+LBG=41)6)==l0bKLI^FAKMRJLr`y#?lX(7`wz9c4IZd1!saDlTa(z=T>Q6 z1hRIWlW*df&MZM+%BdY)+W7R2DW}rgW43*@vQmDno!8>d^2Z4N0q*pQzEd$L<)Zev z?k<|#uwo(jccqB8)*llkMLyo-1y@7ess-wPs?Jo)cxFC*AiGb_Znv+tvsS%kwd7dM ze}Fqd^Bt(k1>|D)z#2+( z|CijkJOT4KwMXXT`!ughgXMbh3GPZGt2V6cls&ntXyvpq+Ayc=PC9sa>vg#PH{qXP zGMkJ8lgY9J#|!Y=gsWSG>?T175E7A273L#dDBMDNM@U8LF-MpLbEJ73(h24XNGF@u zBi)=}-UhJUyaVYT^GT$qEhS8XrL?6o(yErmNSj$&AZ=x7jkK+02-0B|JZU*?`3>n~ z%S)uMEw7QjwY)|8S@bdqqAX@c>LX@B>MQyo4G>*ObBZxY^NabB77!DP02CAJBCRjh zN7_(qgtUp+6lrs@9nucsaHJ!}8Ay}FIY{S=8<1`he@1#nJcsmxcope&@jB99#NUxV z5m6!Wo%jyvNAV-l&*B%Ps+fY*Lj;pRyoq-LKo*h>sUJZdVP)V%s*pgWK_mnzmSB-a zlW3%|Bo=8wQV3~DQW9xtQW|MBQXOd>g3lnM36M+@$rO`7@eip)b0f_|(FC+G#Rt<8 zv;xwKw4o_MpiO8qoOGg{k@lcHk@lhekdCHfkdCJlkZ?X2a_BII#)(O_- zI9X|3g><8JBht;*%}7sJfl})=>ot?b`oLDsB-r9?c(HA}4X?2!+xD9*wnMffIR4p& zhOk|?0qwR&wnw=B#s;+8KG;4W{cPh%Q*0ij>9%x};AQi&A(g#kqzPHPKp-VJxIDRNS#PKWX71Gzz8(e{Uh*Xm_lOS7U3sR@- zM4Dd)^5s%8@Mrv)O!#(_gPx#2)06ZRO*joy?#8QIOKqgKQah==)Imy+#!FMAZFuEF zyuySGCX=5j#3Y%Bsi>*8sVwYpnwrdUm8#b_<>}t0e@|0ili03zzuu;*-8%H`X=>i1 zP2X;&+C94U=w@nY8vnHf!PFeQLN9HWNi<+blUD-jV>Z>qW7On>TRm|jk9#BVu%YmIZW$!E?^n4j;Z zAPbXCcft8r3eAPp!ds!g@Lte_gOgax{U6E5l!PIwCmS00vTari3) zOS2y4!scG)zUG$Z{^oJ!wz}lQ5hR~^0Bq2dcirFCwr;9PVC=?UQ>9SC)sLMh;3|T1l(q*C8SC@t2V93IU;t=t7 z{EdY~d?Jn$pNlVHUkAA;PSWL~I9ZpAVj|?CDoz#Ch#*eW<>LRL?MvXRDz5+M?)N1D zVq^_lAP9(nfQW1&OAT~tE>KR({)PK;Dr+!6Co_dy+JoOt|^3-p2 z3u~VGFIw}|A855xf27q;lWDcn6k6@HHniGl3AEa2?P#&n+S6jE4Wh+P8%&FxHiQ;C zZ73~sS`IC9+AFlo>9MrH>2b8Q=}pWp%`7fmw zjk*=u6xyag5PCcGj{b0HcW943GqgAKq5j*bEm2$a-_dfW&&ERb5q^k^#Y=yh7BAhV z#Y?ZD#Y=yNmMwiQEnE7t`hv3TvO-KrQLv>fd)Q#!g2eTq zVZ7o{)&;L#oMKqg#k3%o;TGgjxC&`L%JxtYu|6~`XcGw>Ze4xxf`$z9<9WyeL&kWC zhmG@4eJ$~_9yV=Q6~#+F7J+6At0vm8*~4mv&1bZD*wSGu7`-}d?XV4uwhY@jY!9K5 z6JcZlMlvp7rdM3hcR_Ih?Yy+%o(FRTowI!->lhV6Ghfe!m9 z99pomq}Zhu>>Ng_5MB{9DO7R% z$44BG+aF|8x?YIVO;or?E1O+b<5ng~O^R|++3ciPA2s!m7cWRrA1dBc9OhQh*n;Dj ze??=9CKQcL+ABPSTD!D@!yZaH=%e;NI^v_w9zurUv}x%cO6u;T-X03#Spoccl;jsz zU%aILUe-y2eU##%`ci}&XQAz0aM{`<)H*3QsW_meOiaP3PMMh2H0hS43WVO0G(PF> zq)9+`7tBt2AZa?#14)l0J(cu0&{Iisla?ec09ul?Ea|nRl|Zj0txMXLv=L}q(ykys zw+!nd_6MvEx40}R=|s4XBhhJ>mUK1=>J`0;lZsh({uD}fqaj|h?m{3d#)CoPWQF-)I|k#g{lyR810cLIn|>j zXZk4LLqUq<(hF(Hqm#!%UQReaKTcs?P)LxChms#mo{7Y>;N~RHgTGLSyd}vmV2XCd z)AHn1@K?jFPu>K72i)%Deee ZNn5{|wx>$v*Uvlc!?-C*Kd}7ZSAizg=9A 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

eEaWIkvb=TK+86)v_a)LVy& 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 diff --git a/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-Regular.otf b/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-Regular.otf index 2d0bd1d645a9afaa4cf47afc4e1dc38698809f78..13c3ec48572e2247472fb60bf2b495654f2c2879 100644 GIT binary patch delta 132639 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 delta 134126 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 z zd#+O0yH@|BXwTI+H4*o9>L!t{ZdUYuYO=ahD0P>*O9a(aHBE%obX6&e)jjH7d}gZq zM4`H0Rq<@Ks^d&PZP_hT18|n?wQ5$a-G4+;OElSkem~oCF z=dKket95FfXs(j)sCW3`UG*-_CrXpeHXnGjJxa);7v}2hIwd#Y-{%ia&xhM{Ta$L6Dw+|MdaHjlfNTn}i#U^>rM29o!P zW=P@pa?{MfOkVUr-~oP~6_|w^iJaq{z$1KqZeT7!c@zuj4$}F2jtc?{_zW_-2qL2| zCN{qh{GNN31Zwd4Ltq&`&j-k|zzYHFJO}<5_#^I@122o>z@Gwt!e?dR70SOcvK|b) z9azK9?*-oDhmQlF;Qwi0E1}*N*oJ$1UTe!2{H4Jc841NEe|4gPfmSC7%GlxRM843+s zC^S5w(C~yp!w?D$HweHD3Sa^)lUAt+TdgeYvs_A4~U38%btbLZy_8J2*(2ae+TVwpdC-(vk2PJ%Fqtm(2g`iJK7rBk!EN| zTSGh2n$V6kLp$0+J6;oMhHtcmZ@eXvY4++ys*z@>Mq5KQ(x4ifxb?4)i~>V43Jl4x zAsPR`XDd{rRU_5dj{Bbwj4t#+!#Q0F1% zS=@hc{(yT~BY#P6!e7!2e`&4xi)d}=%Q4WGZM=HB^97t}hqHqqehHyTH-x6t5SnyX zxX448KX*kdS3+*`Fo6!c$vlkRG;^B?zn_+pNj3%_E2ZW{{!aQb*c~(;y79-Zvmt+Hf8O~r>1AjS}A+h12qhT?} z!D7zi0qm=bW`@P&7#4GpVKL_!7L#S@i)F}4ks&KZhO87BvQlKoigcH{OT~3fD2oMI zS&@W^V2~Y>p?L~>gy1Qc8=lhK@RW4M+_sA>ZKs_(H8nW~YOAagc#X#p;fV<0onSXD4ZF!=ps=^dG3*9b1FsotcuhycYx)^R zbERQ49pxZ-rZ~+on#;6Zc?5V(X!;pK^FM~rjM9UQ;zT{j$Z@P3%W=FM54TDlVl>%? z(L|+YG}%oUO}1e)QNv~W7%nr|aG5@a%M6x}%11?S!)Q*GkIBby&zJMzP`{JE!>!59 zsrBS$kzB-w8Mx%gz$M3LlCYaGhSx~LYqH@re-u&qGVI1S>?Ug1O}1e-QNwP!8Fq8B zVK?0kyXj`w4Z8$kH=PW-IoYtA_IjjKv}2@mD@RRnvJJ)QZYa(GC{FTAak}9+0}RJG zy$Q$3HXJ8vI8JsGj+5Pl<769-6Ez$syOHDgBHM7B4u<3OG!!RlD9(^36laL0I7w)S z<~ThK$LV0$&9U&B<3(q$o!3sB;N2I^TkeI6tiBX2cC_`c{ zG$f|49t9S^G4!Q>(lD3NhPhnDVDM~c)x+My;#Yb|7#65m%t(fWUC4*@p^yv=7vV1U zOMbv*4pEteKTP;wu*dzo4-wj{V$+0Awy+yp)y~J0zbKn2_)P98b%W|j3x_4 zvj;|_xlDV*W!f1o)6H<1lMR>YX1L7BhRbw1#AOiLHI-=zl?fn0r>P8R2aDMRb2!kN z5<_STRi4U&SLCY#7(z+1p4YS%$EsssHzC7ravRyr$*`L)s*8Zn44bzDjqGKDPlV*rcTZm5b5|P%(aV~>IX^vyVamMlR zcsNebaGb0r9LF&nC*5$I)`sI8V>nK_;W&AQ<2Z)nq``3>5~b=9n2u+Nj&F!g;US`v zgdiQ_IF{i!w&6II9-${Fn&T8T;W$M<;5gk4$7ydkPCLVK+8d73$8el%r72E3#`QlZ zs+!{T(xdxi#{qRfB=gnx>U(mc4!#pId?y#aVZNW%y24!*^UJ3tA$ymj+6q8r=fj5aW9Xdh<3-cM1&Mkx9dM>?V9C z%kUi=zH=RqT_3n!L*7@|{LPjr%+=@c8LQ_S4M!@O<|OeYA_nMdp&gYOg=zGF4vJL!h+ScdNe z4c|!*EDbCb$1_XuEKh0fV;Sya8}4H{133v3s~hUv63OeboXj#JNcG{*@tlQ9aub4lLT(SO3ZX z?)D$OJ2>OW|MW${8R?6T{15JHQIQ_X7@b*>F*-ez9!l!N;s3#@!KtAgc`qLB`}0@b zCN#OHYj8@Ft0TV9@Jr^xVDh?P{eQ;#AO1I+mfxz`w7j9smZtuj&&|I-y|Ur)|N2~c zWNM@@O8(I6{}Z3t=}rF^g?1b}x@c%WWC=I%TP(E1nTsIRHA_L zpS`hoO?qW`Y*|>Gq-j zjFGtOt5R@k^Q&=pt-m(s)O&c-5!FoxG4I8Ofab2CdN*cOvca1VMnboTZvXl8_`kU$ z_cj2)5zbHb?#^wMX`}^v&s$f9yZAXK)dP zs=gw&oRTr)$TU0JwFznmKKs-E$s>LyflUbrcGjuDXKhpJsRjBf^{>lIaB9ZLti_}W z6;Qj)uM9xyVoW@>OIO{I_2(Vwkrp2X`(*Cn4TDWj`D}WqS$=kQvRUuov;4o5u{=07 z^`EgkV|jXd>RP+nT@&pY9KioD9v!ALs@1dFKlMlOxYxKZZQdm~DL5&ebH;#-0USGL zbWY!yF)3qG=?(nyM*0AaHhY_VDY-m%M8l_=csB_^PS3MO1V{3}KDa(To!2koRr*T% z@lP3~ftl4S{WR8Ii>FnN6CVjP=c?5irwS z>8hZFUXyz9;j+wZQ-Q7v9`>JElIjt4Pnhce zbjPMkN5g-8G1hN11)BDs*4_N98{mc}SQotdK-524|6qMB;HgwGHAV7=<-ei*NVO8W z9cX$_dL`{3K_FFrh~(=K87YZHdnNY z#!t6<1QWLoXyZ9!G!5B~hE&Tep|LXAX5M971e`xAEFCq0BLgz#iKOKP1d}Fi3wBfJ zBLl7YT+CQiCYuN>hKq6I&!8dhggL&>uMe=#LaXk`;W(Wc0giR3#gJ``e}Ltl`kq>I ze;oHNR>AXTezjQz6KC~HoB^I)$+{X(aht6Jz=x+BS1mWr7q&intJ&P8f30u_u;AX- zFU231cV^ujFTrw1n@{)h7S*lb*KKvRe5!)=O$+O4tS9v6xE{tgc!D>S6F|NuR*N_* zRO5{QS)1#s?f3YcW3M1w#F51~app3(MPHfQ9GwDgr@Cqr2*;aM_oDaPx^KMMZ2NWG z6Y<|!S4q$+82DaTSHXuXOza&#ZX!sKYa73Cb?OWHj-=c|i2uPR1E>D=I(E$Y$u)Ho z<@&mb{=dO@gx+yygBN{aUUUL4(%DeWI^1feVHVbv6Vq~? zf^K`_r(d0@kI*m^V||awhWZTTDF^KdZViz$DU;+e$&WSeGj$W)6?HwxpK8KcDLm_u zx>{>)T`j+skv64n=lbOLSY)NM=3-(npVv$zcdNZ9Z}PamqA>&hL2mCdrKQaLQr-~Y zCYh3~WmynfWDQ1&6W2iH}afGQmnwx=6CITj1KIRKs>T1Yr3VL0wzqf9_dNavk6?mHh7_grcmBg)*f>=p*RN5=S z>tLOzR2PFXQ7HlqTi)`TQKGZ!zTvjFxa}=&dyCuN;*+-#yE%L=UbmCtwNnl; z<$J!YAsu$r4e$a7YkAokeAk*{TOr@&yvY>b3V)v|!WI60^U3FU&qmVXFJM!W+qUu8 zeqBute&c0uE+8$^Kq_;-p-hl#4T&b?DAG z>8tNd>RTu1`uMZA>N`!%{n0yh9cudd#Nl^RI1d%UHKfA&y6R+;vRF$!uBIMWGZWTO zNj6Z1-!tXd)O+%|oO~`PpUcT-c8VV*PKO1QeE+mD1=0_zA0PAHcv;n%c3sK4+AY*Fk1d-@L7V2_cBQnG^@iyx`-)4I8 zZF@C%7iPQf;cPgojmTB3Db~YKdGek>g33+(0R$^{1*dK1M9&>sv|e`6M>A z^w1+D{CpCAzG$XDs%w5@%hBWwKl|ZqT9x@Oja$;4M+-L}EC9a)3&9g$5qJtb4Hkpn zgC)8(6Vuhp1n3p;DsgBb&ZTUZF(H2=cnT~LRj7QdBnzsnZlE_f6;z5U`y~pf?tXP0 zp$oQK=#u|lT_yPwXQ@z?$g@IK7fn*7Jr>l>r@fp{13%wdL|}V^eqaC?LBb?RnD(Fp z2~rAf2GdCx{eq9~R;9@WwEXq0KQE}^1vR`tcSJS3poSOJ@PZm%P{RvqctH&>sA1Op zS;F)Ounas8UH~rw9r!;29f4QCt3XGBT(IBZ{3cih)`E9hvdpd-HUA>;D=-RFlTtc- z^Cqj(ZVT$F312l4tR{Tbgs+J@^gzQA>|nO`Z&spV6vp zt1BZ<%4jMonXw&@&s1b;w16nVSPqU4%#^ckT4-`oC zg1Pg3JbXNS+EulVy3vv}*0qzQ`N`UOSg-P9HMNj%R}=1P!d*?cs|k0tX@y_me0aF4 z33oN&t|r{oazA1V0k0 z5Qb8MP|9aZ`D`hlE#@qJ62c zGC?yw`d_y*$@+%oV~S!*GSvn9s0|MNVGaFY4P9pqU1v?88wEewD5m^W&T28ELCVlM zyNj=-ayR*7*_+DUo5|fto7vK zvrW)Z%EiaDKwE%ri9RJMb!+rF*a{A{N)tWWcT%sC6dUH#-uT~|3>-!V4pVR8UR_s{ zBqxWdcer@Bt|pD5B-;OEc>kN=9<4+)G@=c4K6$7$)y1OhXDWTFRM6r!EfJ;!ocN1_ zjd}>v*wf;=PSw=AR34SEhW1{|w?Ay|e_3K5p2#yv&-;Fu*gr_?6H~>uDs+cxkxa>J zi66*oO-k$ky0E@QL0#RX(7xMPa1)5+2}E*g!UrOOOr9_$x%E*>^ChVgji{awr?3oB zun18=yAted5)ESq_S?8oMZpFnVebL#Rkim5H2<(LPdGP&N#GWM(gv2`3FlT&RX$Y} zCY`%+PGflB8L$F;3BF}k*9Mt@owjTw5wZ{zfnqR=rCe|vmZ1xlY750D6rW&8wqTL6 z2=o9w!EkUMmZ(OVYpyo3X#VKANryt7RhvIa&4E{PnZz_i$DtLxn4<$}<$Y4XW*;x9T6uvld zYG_IunR}!Bo+^ZKQwaMY3hkY$N(&d%O+@&ei10fRadV>e76SQd0Ku#3bhnYzCnBj& zL{guKq&^YqHBk>&xu^(2l$?l6IuV(4qI)jaBOtWP=%m(w^+syeBXG5_@>*ooiO8xG zRae|RhqONtX@4TJ>qKPNiGjP2`loZQ1owbXx&ExKwr${Z99!wOhcs=bY>1wNMB_N1 zUN)^7TB&Zy;QJ0uWJ);waY4Z&h;)rVC7P8jaD3vez3Pk=>$UWA0MA)#w5D71ydXfdc`y$?PBn^1-{ zY`V#SYBHdj45%gps>y&dGN6Wmtode8uLthl`1Jz=z`0zHpgUM*SYjCoUq-^0k?=LD zCzP`nfUS`M)nq`mT5Kq28JSQPxCQrJhDnx@5!GZwb-Tb!JZAxhGRT!0a;1h$sUcHp z0^9NX0_=dhoS+>Z%&8PXxKFMf@=5U5GlNfW^;M?249`G-Kq-G*UvmDI0!krgGND#x0X>FY2#P>4Xv&;;9+^DFp6fYA@btX}8*2G~}YtU++El{*20|A-MOilslEqFFVKG>h7H7}X+Rh!c%0%l{`e z;!;3d6>(L>6%nH*Kurtu06oEQa2}Wo7?w#pwjGByb+ti$6qo)#spP*zoch0%rh59C zI{g zlJ#{xs5E6%njTb`9!*+~a@CEYhVFoO(u!2lid52y44@S`Zvf560Ciejh3X3yn-P+R z=A@G5M2}18=41fP$pBiDN?MajT9ZmDR5=x@oC;M=g({~tsiZZjq&2A&*H&%6Pko;Z z)}=$$()CafR4pBi9$k{zsEp4;2G5MA2W5QFx54zy`|w z6KF|J0$o5I34o$3WdR#Fz$NUr0!EaAP`uzJ#N!UKR}V9ta>OtbtzreOVg;>Yg|&tj zb1k5*STG7}J%CkM8&K+(IZJixwvCaXo!~35yRMvOw3cSH*7+;g4E_fG4n6`5r8--{ zKfotdx6d-oY%R@fEzN8#&8(gjDyOtmP(mswA%}*$&gGgRFPhg{n%7!NMg=8ffTXO- zcffkw+i3%k_`M)#R=0sUj}0DEP+m&_bN7lsF<4@TIV&km1CkV{0Td@Qen#6{L2;^~ zIMq;`YA8nK6r*xVQ8{gLt(ppG5fv>O&2ufyb1lttt)jI;TBtN*Z+F#IP^u~^Rppeb za+>N|n(A7b>ROuWT1r+0C98sxRYA!@Qm(4H{kQ7-TmpS0^RLezB%#BG0m+|g@~4{o zsjk}eV5*+gI3FDHRZL2@>(P6>>@fX z#zP%JVX*+E8!@Z0#9{Qvk-!7A=#B!kdQKV$R<)^CrN`ysWNO1X3k(56K>`c|NQlk| zK;!R>teQ}*j`gp=c_otOtA0U+MF&sEKP zNcC&~7S7dR8=z3SUw|E8H=rYO>4aT6VV6$W{iZ5wHXMm4Nunef|3&(%ltJ9-AOo}j z1YhQXd~ho0k3f4m=QF_&+~bj}rh>ZxjT!@BW%Ux|L^|6t`6upsh4Y5GbaFeL-0nec z_b`Le6v-sx4Hb+xR50F9Va6MF)XkM&)@`Emoh!fM%yb|fa2X?KWput}jGUFx`Ia$q zRz}BL#=uz_17~{V^aNU^d|IV^I^Z$}(aPw6%KTk)$X|oKG~p^9a zC2Q5yRHSk+8jJ&UjcNjz2qsgc7}Y}Ftwi3fMBc4L-mOI5twi3fMBc4bE4c3^Kupz2 z@MnN1LDB0$(d)tBNCkr<6%@f9^l)X2k5n)|QW2o+1mqwNX?5w8%k%(A8Xz!%Ip7iS zD3}Kx1M|W2fR6=`SpshZL@NeaD(EsRS%L89svQp_Ijt6J#U!zT-I5h(R{5K_UHn~q z#$L;9=v28+Xl*L9tTeVn{?=@Ue3xyINy}o3XImqBRaRMlu}(nqQlZsL?^3j; zus`uU>kf1*U0}VyZp16BTD=d^dR^~Bv_5Aa;yu=Ot<%KXVb4n1v#gz3sfqO!I||>i z_8MhOg>3lyoY!o#ceBkA9U^u&qnN1|8~bcKt~c}91C4s7v)I2Evd`8#_w12+&z^k| zd-jIe)AT+)`#yH)op0aIuDmPl2ib{tgZ;SPiD%E(d+_YvIk!5=Dtn>cacBQg@3pf( z(2AVw&3b2@y@lO$`|Yi$b8_tO*e{o9*P;5Og%i-~KAa3T#C38q_4YR>8|5CooE)Rt zsijfvRH%2eImfVr?KjS`>{pxM^heRgZO#C9jyuO0Zqz)Tt9Pm;oe@UQ(|JbE)5UB_ z+v=3F+iWKqq`r2)a~{!q$ecx}d2*a5*%%gbma@64z*(s`bUCl;4PDNk*~%4lUX!J= z)Oka;maUyP^{y^wm24;5IdAD*UCwHDa`kc6$heF<>(ELu(0NDi+j5fc>TO!idwM&T zvr+4Oa{eM8kPkTjkX5n@OF!t2a6V!%dpxzGUT1N4cZ4^IY6zFR-KLyy*l;!3c zolnOZolnPmQ7`It(i?)@lk}D!x3k{t;||x`eB2RwYma*#TYILv7wNq_?kMkf-a_{h z@AuyC-OIey-fH)9t;or}LMw7|M{BJE?zLL$fIC(za&mv8RSdW{`pK>ScK0SW<9zMj zqIcf7Q?w!{_jVLHx$boK(*)cH^d1`bL9Gr&U06? zxn-ieo?R-_+^^V;@{s$zQU8?2PLsv5nO6TKo9k`#vV~UvBy;rU5*bo2C)J;2zSjRF zOV};)j%=;>iO6Hw8*)&#VIzo?$Lnn$vZLPiAv*_CnM4qCzcgU`K zdxz|%w|B_yS{0P+p?7phqXbGCB~a2Rfs$wFy&3Xsc4gcnhqCcJIa3bT`k&+oy$3^% z)cT*~`C9*z9HsY`%S+j7Q6n$Y`k&-gTK|(At#?z%G3=vwMUK^5C**j&bwWk)BU)h7$pdsRIiQ*+K>@QG>o zxL5<2L8VQKi}wIC!?a9su?hSYYzAL|FGbwS0?k1-XaRCSZq=COsGB?XNp*~MTGfyz zRiQPxYV?!pq;B`{>%$BI^#gG*0Gtj6f-}G%a5tC^DgpPiPdaYTtm^)PDr7rh++J8U z;stf=$*{0z{lVp;1lpE_>2Lk&pB_c%6w6k%H25sS#@B(Drsqd zkNY6wX*O`c+296nV^vx$y1vg_pl(Y#%tE8fDDDOU18*oFinAd%?w$Zn1`M#V`8Mu$ z2faXF&>s*(m)M~*D9&cvxH}jO0enPyzz4?xo|8PscF#CUUgD@X(Sv$%zZ>Yz0u{dp zj-G&s1srkJ8XNHh37!0gr&W;8E}-NG{>96&wKH1M-WlT5+~$#RKFUswv`Z z%Zj65!mQ{+dqg}i9!vn&1M-vIQ*rb|#MvhmXO~nwKmgb$6-VtuoNY*P_8`RrAA>D` zqJ#E@I9eCtXj_P9qF^D8Vud&g72?+KpWm`jO|;s-P5EB~)`AV-C+kVoor}~XGR}I8 zL{*z7RqMlRg>_HW+$Ytsr!C<13&9g$5#_QUh=T#(bTAN{0e-rY_`lO(PT4UPc~6|_C>4&Z1N^&1x@1d2$%~V1-gd*(h6Eig<|&TM=R*f{C>1bIvxLpirV@oYHE{8 zI{WvjN}8aOCa9zdDrtgBnxHdF(3vIZ%o22F2|BX`omoPBS=FaT703j-3NNlIt5Hdu zH0o8K)Tq|Qr-_7h1Go{~1a1bCz%5{MRjZ}yB>x_q4^!>Rma1s;1>$0=^2Jo;i>b;N z+x@C$E>(F2gQy;NgXy3W@C@Bsg6?hQQaZ`sReiWrwWhk#2{bN$N=?T!RNU-7%J?pY(OwXF2XZ`RQRidkKf}T}RDe7J|L9d#iSIv4>#gfhgxMzt3 zbvQwXnxI2X(4i*iP!n{h2|CmS9cqFOH9?1(aC@`7wlC*?ocnW*g8{ft=R6RQu5_*m zI@bi9Yl1p_F|%X3b4}2>Cg@xfbgl_H*94twvSHdRK@XdthfUDICg@-jbg)|c)y34| z1f6VxPBuX&o1l|T(8(s~WD|6<2|C#Xoos?mHbEzwpp#9|$tLJz6Lhi(I@tuBY=TZU zK_{D_lTFacCg@}n%r|q$2L+%dC z>0}dhvI#ob1f6VxPBuX&o1l|T(8(s)$$T+&I8Gf-(8(s~WD|6<2|C#Xoopg-Grv#f zTmhzl+rb@RI{x=^rl&cE-ZnvRo1nK%(Ay^HZ4>mi33}TEbvQvsn{W!N=xC$QPh6%J zTW9`Py)E76QKeG+Ls)beyPUeM`{LJ4U+kPlB`N2|VBfL@{*y#2tiAwEXC)>es8LzNn(@kuuTo6UXjw92KJ}S$imFI!(0u z#L?#ycj$ec^T5ce_g_@UW?X^uN^k>6iR8KU{Xc4X;*21dF@jviL|ormGeTU(2yq!B z#AS>Smo2X|-rzm!PNu8gI z?CT=?x-|Ok9{_pJ=-|SaRKI?-*J#FxGn8G%2;qG6;Kbc8zz(pJ_HQ@me}X;WUtllz z2K<}f_JQx{%G&*rd4KXsl2_=kiKD?LE;E2`AhT>W}_8WFE)|B@Ef=Daqq-pU6B~ zC%_2rVJziT)=T$cQ5?&G8DFeqSHOJ680X6~z#woY7|icyaUN1vnUq6uJi$wdBtyy! zGID0ZfMMktFP*&!86XRH0p}8y7KWift;Oqx2A#stG84b`bm$0yi(%%G2wlwQ{sb$6 zLha(FuT%7h@#z}Ir)wH%60?6lNtIYy_si)LjcqX~;h8XqfGDkrih)wl3j9D)V^ES+ zxr)Jb)e(^Fiey(LyXp*11`Mz(Qi7R>vLBV`4)p@BA129Rem$ zSSa#^-G9K~;nwVHE}1aKnkxpN*LsPy+JxJ@6ILA00oGwmpXMi(=f!Q+WN@t97oio|F)0yEsDB50f$u$$){L4Cx zzs%`#nRa)-?2_?UI0G)b?AK%6RhM1Y@kD1Z$4<^Ljwd-IId*o+IG*fW&asO#n&To|6ECS7*ji5-*96iz2PQ#p2WW^g>onRWR!%YiIVA<1V?(?Rd?# zmtEt`GslJIxOmLOUypO1y>{H?W85}lxo}pDCs@wQAW`n*O!fTR*xS~u-0?z zrTm-SiCPl<`{igX)DBj%nRCXl`X4T+_upFY|6=L|=y5hLL|<9zxpj?a6A-N% zRlm=lQ-6PD>g=tqzeew+{ym6NR}+BbxcV17c=#DLV5u8Xohi`d>8(heU38x7YxjQc z*XNa~`vRBOpY?rwAY)qUoN1@d5)JR#-<@0ko%-u!?!MFyD2z2Xq}Bi6FGyVnUQ3;` zx2MiIS*dd#8UW1;_omLQ12osH15BOSc4}hSE_L>nrq0N}#-B-3eNI~b%P9}pvi`g? zb#4fdb0Bq%!Y%Wlx4HhlgC;9%H2NJ#xlrC0GA`Hs%-xH=IDJJ)K+D@`hWmT#;E4X_ zSdgZJb4nUI?kv$YZ6(KUX{$JPPg~EiN7^QiJ=3;u?3Jct-aBnK$5YdEYV`@~7o8R) z`9%Duu1xbH~j~4sB`@~Q zK!M%;-V^@4{#qhNkq#}+DOcE9w zA1iMl38~A2z_JyIT1cYi-B5o|%4aG)$o=&`I@diEd_RV=JEqUPMcz~1(@dc)@oMzb zAsT`Z4?EL9p}7L^Cw|%|Nf;eQ5RjEh@>YQ9?f3d(@lf&GqJZ zkMI)Aa#WSQtwKrrfUW1|u%(eVEib#^Nv^Pcnm z;63A^bu2$ignld%_|L76Sh7jX3Z4~(XbJor9f8~Y?Pv$w!9?Uv|0}KF9A$t^N22a; zKkEPX`3F(<_aFZNlat^0|3bmJUG$NNP?CmF@`lQbWtsdHW$g?~<`7EUO_a|hD z{^GpkY;@K;uQ_ixtDM!&+s+#2Ej3R)rXE-G)dKZ9wNO2w7706ycJ``C>(oidjrS&a z*LgR1H!{n63v;{`%_D%ZszUaY^qd;;X+9T0?&onXG z?$H=I9DR`^&=aZkMcRd*i4G=iwv}e`K3(U%b0aV6DmoqZizyY(jk2szsThwTa zKFXpg!4Bw{HP|~oZ>?I6LhP=hSMJi>Ww|SIU&>vX`&#a*+%>uDb2sL0%Kb2ROYUd6 z+jDp3?#|ttyD#@Z2vZ;-g?f*yP);a6R1}JYT7}w#+J!oXI)}Q3dWQOh`iBOF28V`* zhKELmE(%qIMujd9T^+h6G&VFLbVFzoKDURahAKldL$gBFp*b`)u@$1%&%WqqUK5%Z zS`bTP@STBLzTMT8fW`gw+=(-(5efwB$VG+Y;EMa(5&SNRWLKa2LH~FTEh%PG6 z$ycf>_R-MD@8o_jDw zL_&80lQ}j{MN2RmPJyt6OmZCMdb!Qn#y}9T`_;)Mf zaL6lH%K>Gfibg*xL{FbVw;j5siQgz;t@?xa~Bu@)VNDst2wv)?D;e^_T+D0efP4a~H$2Rf0{kTHWQO1vlLJ-2};N0D@ z*Kq0k+-TR_4`WM18~AMlKIYln%^_F~uyZ$;POkTRqm(o#JR%K}g=oepTv0lrG1Ppd zZ~+g_EkzFG(TEOA;iVy$7mne&!Ouz`MBK&*bFRP7$|DtW7U4(fsP~h(J@tR6Qw$L~ z)Cu2I^opYUxlST4<#x^O8ku6eo!nS%EcOOLNYRzl=XH>>g;SVam>pZ%_+orp9uQ8; z13BNukfnHD2UYuS6;95UoGr228-4AZ)xo(0?Nz8R=lXlC;8dEloW;Vidzvzlaf2YNP76&v{Yytf>lri-l zyTxZ|+|}YkQSaiD`u$egJbbCRE!MPHquurX_J|hCa!HVEidlF zKjP0l;%binxIf>2)Su@+W?TzcpJ0+G|05yuKT7>aCN+MVw8(#rUtZJy*)K;fJ?xjK z_~ohmr?MAhFNh3G{W6NzIoZ>)rv=Ig@f2aFTn#bF9vh&pW<#j5$EMu%zc|?=0&N3r zh1DEERJ$8uS+qwC^cVV1_>24}{ipn=tM+YD=Oj1!fAQbCuc02TC!hA4=w$ z2SoOZoytJQ90JERPJKV!OYJ zs{!hCwTyL)c__F>*|=({3e`bXq>5EowNf!GDwSeSsSd5<$Er2~q1vkBweE4Pc^s=s zomEHGNu8ulWRc~`Xdv&3&hhT5hw6pa@!slG)kkX_XX)h`Dmh4wH0OLBh>}!Le^?tq!o~>Q79n4M13Bxu&;D^z*bkNE7k0P zV^ZcSb#=g1P9q^U$1UT27EP1-J)&|C{0I6 z(#h&Jl~lK?DXK!V5SW zwFW)ntI#g~HoC>%RjXMc`iA;MeWpHDn*sr~O}(hLYYR#rsK2Vs>Tl{p^>_7=`dDpI z|4_TsUbRR4TkTf=RNttt)xXpiYKQt#?Nnc>ed;>}g^cX8&im;c)|8xF?iaW^mBse@ zA7*lrT+XxWbRGwL=v;R4bS`^^hw|AuQ?+)kO69cmKtoOkd;WZ0J9S6o_75{V`J=f_ z*cwwy zyKjme7(YT>V+8)UteAfYON-jy#*EYfCttf$cVqC4x1g!giXcZu^j$W09nfd1FL&CJ z84(82BD3`G1o=65!;cNkMW#fi8KK42Y*XKEYpDt&usXh!tx*ES1d(x(iz1gtu8E8g ze&oT(oqS+SO84`YPpI!5K@`?veA8o&PXT*hl| zW{hr;f0vIIPwqQip2zsjWX9~C_V4!JG=78R1&roQNiu|2<5&8tjb}eOoZ+4u8RA>$ z-|4?bC>>&Y8gb|+%Z9+`YtTkgup0|)ejIx^eTPFT+ z5ezWh>?9i##8{t5JubC-xFcpy&EHibV|&zSR$9#|G{2nKJk+MM?UigAHrI%w$;n$-eG{T{*&C@?5Hh_ zZeR8o1Dcj-Za?ezKY3U38(xGpArkCf@tAnsYH78$+G7swR`&n=m6VwEgH$*s+#%eR zm<)w-FIZi{wN~B5fj_O175l zD*2XF@WPqlP`D&~Ov&bwElHgud?ueHX=xXtQHg&{Weie-MMNAQ$&BPjVv%-{E|ETw zL6PB+vdGnx`AL-YnUUF%1(79@6_HmXYa;JQwnTPB_C^jyRWv(V6g?)|G1@)aKRP5j zGJ0wBn(#;At>InaZ^H*8UU-8zKD<15Mt(pAy_;km?pNmy4p z2RmO3@H?|v&+i(0jS+lxxp|h#`vU8&d}A`rA#-09UXuKM6Xhds+ix@Ku5B^94{e?A+wb%62P~~hV}QDdSJ~8n*ZCJTOsmMe)vPmh*wBUPOgiosB4W&+MERvq zJRlyinp;IyN9#800rp#cY43BIIlpqoI(Int>efLf*JIWQlSXo*{0jqLTfI*){D)mt z76DvHmRxLKf@$X~?JEh~R2G(|n;D}_(>7*dx9ww*jjgutMS(Gs*2Ne_>t?E1f2!Fm zF~Hbm9*ITfzlrnNarFf%=(NqU(Z*UCW)??>tA!P&Ib__|3d117^T6X^0ayqYfv3P? zummgxB&DwZ;pJcjpnVU&1ZdyGwC`b>qVQ{gW<5+Ag=t;FYpRxRQ7v1BH{<>gd<3?D zPXK*ScM3xs_UNk1Mvgn4QDMgh<4;IZUda7ty(aVw5MXQQ7 zL^c+EShO|r5kp4%i{0YP;{4)Ral7I!k?qBOiU&pZ6b~;hiySDvx_Dgiq~be^XBN*c zUQoOwGOH+3)Fv{gsAEyr$bzCiMFS&Ki*iKQNcX~z3b#l47w#!Mkcx$MDZHiPBeNwbD zGOg&_Vr-fe=M@~Jq*Y14Kp?n-XEb<(Jau4Q{@-Fm<+_tu|BX;2bsp@%E&bY%%-)*HY;aFocS68fgSv{>6~r(t*7gv#Srp-e7scb zX`6;cMshWjHtM3tr8J0RxZ-s*j5p9;-Okk{#D}R`+Cb9qXuql>b7?G}iY(=75sl_D z+A=Nmc#)TB(^f~;(|~@+)y7D2Gc74{R)jnw@fOM7^J%}qFS3so*5!IX&7T)dr>)Ir zWXg}`L|aB9w7Tu0ouXa2?hx%v``afvAUZgTovi3UTH@i+3!4T=qojfhF$HvC4 zi%p76iA{~oh|OZyFc_O1n-^OcTO4~fwt}Z#i>;2WkG)UK6!P045$hX|&LFmwH@_5n zHMT0YF19hYIkqLXHMTRRQ`}7=RSlxJ4VFW(7&wfgmnAPk*eeiOrA0q{B(^Vhu+%M0 zE6pm^y?C15(aF<~%E!pO`Eouo>+j?fLL0tYK~P?lE3plz4c4_l%G)n;ybQ`%6iKfI zv&lT~BtNC9{BK`iiR0uA-bS;)K?%gaJvHgFd zLCp5|urATYuHG2xKZf+i$YnQ0Di8uIQ*E2bJJKiB+C`Q}UP3%vh19k&(%7&? z_L*fX$9We}3S1|TdH*inRn(Nx@+mKQu6HNS|B+8K$$Xc{k8X%=j($R8vM0JQueDj5K$70;bZb{){+}P929t_tajDKuc2x?)nsDBswNFE_He8n$*P9 z&8gc`)v4Ol3>M>zibtPd-?EY)Q`7#@ccL5V$?`$Tz4<6yf{)PeMlanr_Fn8g26ep0 zT>n<|jfYT~^zVr4-*MN!3tj*2>H2ps*R%UDz+BJp@$lGKe$o;BekKQiLFcD*(C4rie+wHhaFl;Pt%DxL0{s*=WjqRf9!vGNvOQx3w43J1ERSdW zrO~A<;Fq&$V-;7IMIUA{zk&@MbzDtiY5lxdO@`eZPjWe#Rd)ID_w3jcT;0Tq`>5E| z*c^6Y6!F-tDV@#(cR}eg9=EGYoBW%PDf3-SgJ<_yu=87v>A{WtJmsnNT>^HO)Drl)46 z=B5^=mZcs~)u+~`no=*P{+LP8uT>A8U4J+2#Z5c{tB@yqp=*aUV4j17aXpbOj*YyrOrz68IL9f`qr!H(lt7BhvcG!^bvxEr`f zVK=Z>VJ~pM!W39mm* z4zqZLZ*jlHr1oz+zi;xdo6~mk#NUgP=P~+Z9i3=%_yXcXt=nR^)1Bh+-tj%-d&Liq zACi6i3rvn_tJzFxk;uAjBv*l+bKk;2G1`gOjWe4N<_O~=GaT-irA~MH_X+sZ(`q=8{>z@56_rM zoJMi1xj8;KezM8LPmP~$s^e$I&oi|JU-LrECVD0gV^`d75)YWQe6q6Hw4u8nEHT|U(V5c*im-0 z-dBEJpp)F|Bz*vPdy77XGhb@-AaTLylf?z2htYw))|c{G^g!PpIX7CY@00UX%;>mc zU~>VdZxom@i2>|Myp)fUK4<17UPydso=5xr_-E+HY>&x@dN6zFwu1Qoku5Eat}qun zi@Kcd_L{kZ%|@+eV)UC>+}!AFtlZgHg|o3LXJgf3W1M;8jO=!2WYe6HWpU9SWM+z~ znPtw>Rya$0!dcpCXKCx4rM==TZN0O!&&1N~-dbhXcN7fHBny%~lf}t?$pOhh$sx(p zlcSPjlM|8?lT(s4$r;JH$)(Aa$+gKBlk0KXwc^P8s>GD+h8wR>N&k|8C4)Y8`x`Ihs zQ|ara?=bcHwDgM%lc<8So@K>l{mKTE4JsQ_c6!;Uvaw|o$|jagDXS@)Q8u@1Y1zuM zwPi1stuOmiS!>y6WnZODdbjjm=|1WH>4E9N>7nV7>Cx#+)7PXYr_0l|>6z&T>E-GA z^t$w`>9^A#r#sSH(%bvS`gZTTU*B}!L;D_Ew6bV*QB%>YMQ;{m{#3NF=u_N3Ul*I= zptvXApVH#~#YYqm!v8a@cx3VU#p3?FHR4Z{dyo)NL%-rnYmaRuA19 z|7%j0=mYeD_+gLK1NDjeTz$U2NME8Sa3or=j#XEFSZ)=Q~GJW zRi0dQ$XT3ph)nCd)Q@)zW@3^{|135)&V8$H954nypr) z@j~fod)a;MA$9=2>H3L16W8&@cAUM0m&>*GI{O=Yy}f~#Or@=|HEyGL=59N~-e(uu zMRu`WVwc$!_Ay(>rsC(=GAx^ipJ&7HD{LEn-+o{}u^ViwZL^(rv)vMj@h$B6k=2nk zJMDRtahUAJ+#rKlhO+I^j@Ub~cVi#LK8dx&IumPxfJ2D-1-}b2!4$@;6^90k7?Q3G zo($d(J`6qzJ`O%%;JGnq3EF}$gKdSo%XqS|C*#R7mJ!dDhAYX)(#Lf6vOlO6@e8^o zbRO}n|9wmLW=tvV*w?k>A+9A)*r_dVq&08NwdURV)|~yr?U`Xn`cInl2U>JSzD<3L zzU5joY)jvgySC#nS~6_Mt7ylJZ^+;08dCQA|LO&v5scGCqjj-w@ObPK z{UpvBcC^l6V{{Jmtms^DwxjQjX5=EPUg0_ZlEY8=g}$Mu3d+u1GIR^!8k!^O!)v!Z zu2lDUcdj?b`DF`;|2&7=<9!`1xIJF#une!k7Oo`RLC6v*sS7iXy;(9sDP)9V$cRxs z!fb4hx%e${wooFz8JA&%5Q?hcVt0QyG2+Qwx-i@k@0Uv-hTC2Ij_8(L7{>1)zljFlWc~DbU7rh^a$#LAY$QxMU1pxjlOhx{MJ%L5Fr-8@q`Yu5^$&T?{C2}rUbdOvbay3V_vv1UvOhyR({12N;KwWIkgeq61wtuem^Yuu)}2zA5qLr$Hy5&f-4;I zT~p}C9X{c3rNbv3vVD-)I*0WRc}&4!4>S0*!_^MgI9%)S8Hdk0e9qxIhq$ZbnemLq zM40Ip*zE8Hhc7yO$>GZmc}kMzRfqh>5Bhb7e{jf8_TcanJ#f84eBjV{&OyBBAbvIw z&pC(}Jw84Yf7e~S=kR@pA2|Hb;h!9S;&6k*j~ssN@Xro6I&5(${{GA2S2&#D@JfeQ zImE?J>@^Orb(p!%1$g?2xZdFn4ktRi(cvVAzjZj-;Y|*2c6f`!-#NsSOg>W_-sayZZ7e1{J@Tf&;J}#`hOTLy*{L*zk15YO4r;hdyImq3OxlCdN;6AU&^9QtJzoh2HgY| z20ejW!0GlliH)8nbo7^k>R;ewTGe2Jc1`QXS~&$wvU?4>Q)B0`4vnn_aFG{ST<8k+NOYWO48f!6h zLMrrU$=V(xvGymzvB!dK_QxV?2SIn(CtPfui(TnrpLDUSuzy_P!zEh%T(VZuLbYlH zSgB42Ic5r+uFe6gl(gJdbw24^)VVHp6m+LLPb#67!r81Ax|EnOIV=IonPW&kizTJz z0fmNmWMMJuv42|k4T;uox@ewas0EWD(HHQm^uN2LTV0wjU7BrDn4!ApW2B@pQqfw2 z9R!s|s#{^WrC_=l4OX$Ahf14^NZ(>EaIs?~A9Eqk|3V$1{VG7F~As0zXjgbahb+N?CsF>SJLU(FttPMjB zrgKt>2{KiB4neIJb#2x2L_pKy5qQuEEO7Vw0CcP2VG>ju9w6Kkg>kR5h@D_~yl}^} zNz-l~gWhZ&acP#hG%LVzvmC52k4m2AammwSH?h`?#jNN;A4nqmi6pWcB#{;4YO@>R zOx3qZQe6q%rOUx8{d+hqx&qv!t3*myLwDkAmZtes(wo0ZN?e+v{J%(gnI%w(E=g%N zyOfz0SktYvN2?tR-DNKVt1N93Yq7rqH`$9t%#IT=d#S6ttAwQzL9OMn9c;Byl@?3! z+=f)N!cr~LQ!NyJ7<8*X9DbEPTGHzQl3pK~k)(Q{B-KZNZTcuDa42+#-2-g3-9^mq zDPp!8oEF(LqanY%#iI^5ss?xM{VK*)2R;%w40qqP;i|JKpF~&|!laXGY2bEeHv0T%l#Jc9w zG$l79%~zwPDckku(9<;f=1FrO%hIi+%`*Q9s;B~OMV)CG>L#sJZa0G!b_@JY`!}%7 zZiQ20KZ9@BF-nOs9p!# z)VpwM)OzT4j;5rF>R+Kd)NAN7frG;a<>W0^)v7Kbp5L%tPSB;sgH`GZuvUo~Rw`+& zt?Jh#-K4|-%N3?aao57>R2V76(Qp(ehS{zzgPx{nb&8|a3loOi(1_$yZQ!F3WYGxL zz{Bbm(j-j=V?jN?y7jc~S_DbOiH0jNzXS8m9Z&chp$&O@b9-c4|7%tY{A zgIS@$8=&7a*MQT^&2T!*B=Sk9>$&qv?)e56wyB8{QuQ09{VS>Ql^8@j2`0F(O)p2d zRX<5ao%#u|TCV}Sw6tB7eiW?K(z09iYEo{}E1=7DBXp;xWrJ<{5$HDE1YM&ahi=!a zpr`4T;8gt>oDTgA_Rni{HW#h-K_WWsJh0k640hRvz$!Zjth7{!?zfbbo9rU!7P}bS z!1+oPY?pv-b|JXYO4glr8T2;$0CbzBcno(gbi1XZg=KaDoN0DG&wuP!?q-vv%h7kK zbzwp`pcM>7KP4ge`?R}m)AcTF*Xu+}-0yRQ9cV3vY%7~}sJiM2cBvBb*QcR-V=6*yhaL*H z>f!J^^=V+WJ`?QHBfu(sDp;w{Ak8LyB6PX_1z4fwmEEaN0o(L1;ne71(Crz0Iv3OQ zN#Jxn1XhRs7Hri!D6&X@2fx}F=)p#V#YXDhWw?*R{S6hup1FH0ncKjSsV;^rRqta0 zFlFSHHW|@Pxse;&XhbU&rW^cDlj+Vys}be28Btx0;a;(1l!FcLLl)i5-q2Ice$X*f zL~Msmf~~d`ey2@=)%F0e%a(yv_6SlYElq&k90^@w2ZDXdO{?KjqaOfI)82GO31E<{{3jLloe^gb86AhxZWD#CsD;SLAdU!b}^x+`_)NpJQ~WZiMAnL3hFmy3J_EZ`BvL zuuYGVkoLRKU3ch_grwJJ6H5B?!mg}G<+}1Yp^@ryCBz=ia@Xzr#sLpe#s$p|>m4?M zp}QyyB`$Oug`tnH%kdjsh%+J=hUuGevPgQ|5V2?!0F(waXI9|Fg@;u+;x~9SA)A2myO8dX2^wM`np_tao-T1AwejBbHOFVwU7%# z0o)3?>#%@E(ii9bV4iBu^Xl_dQ=Y2JQ(ji|C9?Q`@ZRL2MQLG%qBc)?VNqSk6Xkiz z%Zf+L^SrF+(DS^k=rQDpCOL*a!VC}ZO`hq6@!sTlURabG3X57j+p66vnyCF~X z>nShWNc-oRUKsC9o)-$Etemh=p|DV)tWcq>P@$|)UKZNrCtfly>owh+aTY4|l4vjN zRZX(Iuo!BX&Z}BteZgMU!t(`tRf{Xm%X&=kSL>s-{wTVR1hCSYNQ% zvFCYNuWD{1FN>cnmre{ilt9y&JQ)g$V=z>gP+_fw3WbFVg@psb^|A$w#P`=h) z)xz_&_No@1zhkdzs*;!WsurG?^+qkcP?joFY0hwnNbPgNLWQ*!Dijtfyknufuvazr zo0s*f7M_>&surG?^_oUQ*uS#?$b7*lC(rW*dsT~fH*6-MysTHX@Vu;7weWnwUem6A;Ve=6$%R#)|#5; zg}thU7Zxm(m-VU^o|pBi78kcK*lSvN883`cIi(BJ3wu?gm%Ol7weY;GSGDlGEH{wL zkLu(pUum!DI(h&3g1xE<^TJ-$!t=sj)xz_#Ue!qEWQ7U~7Alk#Dy+0nBFpnn$gtKF zmKXM_7M>UOsuo^YuuxvstD1`D3-+oOo-f#IT6m4&^N%~q7wlCnJYTR^weWnwUe)Lz zFY8q;JTL22Ej%ylHQg9Jio18Mg97ul_No@1ueDdT@ERLNmn70Q!b#Y=VM=L&kL*lQ ztFr6+CicyK)HhMk(AhU}S|q}!9$#x1*gtWWwl7E4WNQyfB(w7mN<j|6k7gQk!ZE*9j(ZYJu-1(Nu?SW zdlvT9>afV!YHs`@=t?y{Hb{++u25sL%||B2M}ouD$=Lw|`HIs=M1PyT3NkSzIzauF z|AvOg2PQU{Ze!H=_!;a;;XewUoqtSX|Dsu{+TO3O!`U&)-lQ&yys56@e^um4HNN4! zV-j7u*U{>F8~#`7RyCRbL$e(}P8|PVMKlZ_l;}~QD;vg~khns}UsS`RJ=LV_`V$ia zBhhD7?`*-4#KGBPha`^KeP-lKHJLja!>Oi2vo{Y(oQ;oXc=qifiIWbhLj@10tN0(w zwxO}iP46)M)Cp#UnvZvS9Uj?gKEk;wakZMzaK=fAlol;T=Ap<|ZhwqAUNjVWPOXYw z#D6a}GJDs_i9Pv#`k2UcA}SkJoSZmaXCp%s^Rr8bCVsA8Z}?(p;xV0FGAuD7TX0(9 z^WJv7dYf|A^8cmjP`|*-#k>L=BS{U~g$?9$F$wN)JXHX8cOvSGbcaeKLAC}uQ>n! diff --git a/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-SemiBold.otf b/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-SemiBold.otf index 52c84550ba03fa5543f14c5cb215b9b2c72946cb..b433abba597d420a1156a3f7c8448bc1ad779cf8 100644 GIT binary patch delta 170265 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"_dvnQ=rO_2bdg;Jjhfz@(`0lkUuh2fus`< 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�qFJAOT zZ8#-*z&HzZkoY5)7i0-LzkZP@=nm0*g|RSnVI2)iXLXnb>!lZLb3_T0zp5D~NllY( zi?seQutoMfZFuznwfx@nFsn9BFG!ia)imtey|?@HGleH&t7vJ4JW7c?b(N5UO#};6 z|Kn?_r`r2I2Ij64*flzxpCPRQxmS6-4Y!{Y>N6)y1D7nJeH{Ce(>FQP82qJOhKOVC{LfBuO3>gKU(IV5=Ck z9<~$&P{GE37u7T!4*ohR-C!qVuK|WqKFOX)Kwj<{~&e++1< zBO{|l$;zniM9(NdyeVd96d>dN{2{4|f)#?i8)n}b3Z{4Q&aJ`+k>6}&7<(tswIZv>`$r^rdPbgpqGR>wBJqh>&{SFm##L{iKBJ2n5Ww5AI|@!p$fW2^i9{ZYK=qV*<6QW*B^1k ztG;_woGj9lyt%G)-S}OHY8v~FR^}Qmh|JHAR-r-t_0nn>qyB!Z3iH>n1yY)t1}=IE zPpPY+zE7AX3s?j$k&;_asOw}sb2HhBFIi=Iu6eeg zUyg>&V)?9vxq_L{Y}Sr0&|i^_Qdk}8P217pnV)S1b!lI7O9h>wEK4$0DpJ-pSd{jq zU4HcCRXIBLL%Kk_o2^!eW;e4t+X`mbjm@K#6g0YT0(ij4$g~(F=ye9Zdu{4gA{3uWg=K5+n zT@;2%C8FRS73)>^T->8oi)YT8ryEiuHJ;gIRuI6C(NC-`9mMX8_>cdm?Ja~+q7=<~ zj1pDyo2JTd3bXZ!RsJacV~RlgAtZ#LF;rBq=V|cEPc&XnkFkAhEATy72lF(EE(H;% zF0yr=z^kN}qA8j7`H{m55CyK5qd;NPmMSN2_{tu+)Q9#dtF5*8%u0-p$0%(L<<@(q ztR>s1{Vv+*5N%_Bgtgkk0(LT(jyhBH%$<)f8rW4Br9ORR*37l~7POh7Xvm;(g&N_J z*=Ra#$BsZp+^7oF!HL#jD#|lA;pUmsH*UnAY7!iu7!q*dgy;Rt4VbrH$y;fmI|~t3#I2Z0;|P59N0+#?g>V;g8(wQ?YCqK zteqe$h0hs8>K!1SZFZgs#~X_=Ly0`YWFVaF}ztERZ~Hrd5Y0J^F|3Q6jWm*Qvl{vu=}hx z9SuW%ruY)m63J66R+|IUYKgN;4@t2g3YEc?PNHE{pfQK_^F;QAwqkwga~%uNDy+)` zGpaOyKOhQDBKuUj8;<;OH3o1s%Vby64qQ%>Xsk0%nP>S2Zj_rp8du>@w%x;EESLym&-E1%w?_8RK{j8$O%OZ8@F2;*z=tWjTIurLiZOzV4xR_?B6 zLz_#djqfKbn>A2Lw`}QLX&z5cnj#cCO4cslt68vS?3iNxX4*+HH$P`qmWI`66vTYu z^(@~!gyl)26g0fpqs+-rQ>0t8$~7UPa6z0V@ADb3FJ+0P{iN-QqPFzAsgs)SY^lUFg*4DD!1&2f{$&x*eXLHRn)HhF`x^X?>RFfu&iJ>8<5^w5Fm2CgV zF;!nt_T;PJ1_lLt$#?jnQ=g%!kHvE=)ea`kmAb)b_X)bitlzs|vmbK(`H*Xx(m>kr zM<5^OGh|4p{_Rz&dVB94?MwUEF*oX3mQt1iP$?ARWmAd?ewb328*`<7S)Y4>2JuHA z>sT5ntq@H$rS~9{qdcS5V*5XPA;&gJ zC+i2LXNH6x%(}Q_!Hn5+bi;gdo7HYn0W5A4o~gmEfJIF-e{Uumx$ey%SOnAj7(i8V zzYjHCL02=FGt;qfJ>b*lcWH^poT-jw=u}#MXrQQ?^(#6qep9A(5NHCeLG5XfUJf22 z6Fj98qL!aJPE^h0k+Xq~1$9rPFX?M4w_|A$#2g9i4SNLuF@Y6*v) zU+#^Kr)LDjGD0~7Fk8bL&uoW0ZRUujn&$F6yUKDzr-{bH3zXGB)>iVYz4>cLkDl&5 z-R%3k@AJ0PJJxcfC#b?q=hT`(3Y$RohyPy`3f@r zFVFz!a)NkRs6`0_e{Kp9=^I)Hz<9RVi8jbp7==0F`i1BJW*L6p>VFZK1u(k51;(Tj z;T2~I>Wv4jrWV71RZ@=Y2i{0cIb#@+CAhwe7wCev;dAP)Gx-4~%~7(&)Qfr2f#8rz zq=|G34~{1R#(qorXtZT-^}xmmrUoLb4lpf)io!MZiT&FT9c;EEIr%?BDZ6?Vt*KRT zGG05$(}DEK_3vwrZ@+E7z0sPqD~@2F9G}<;if884iK`N0xcC zhM=U2nWuCWq9jpT+Z3c|kdhw%FDgd`S~g<9h+pa{W0kTP;1Xm-J$8Q;T$09yvIOPe z5hI7_grV0pfV`DoX!J$BP&$S7Dide%)JW$GY^Z`wS5m_#I$1FjUIfgX9Ek`@uhz|L z>)NuyLp<0BXG$nohUZr<|3jQ2L7V_SuG)R$?7mNjLGmjyX9rU)QTQdwzysXY3)foQ zWIRo^V_SFuq*lRp@oYxfT$y|O9iv1;jB?Q+2PyK?A5o|BI4GrPVE2Ni0)$W*lD|o$ zJEJ_Hu6=}~$V*p)(dT!3--+f1#b)ut3sH9y6J_QFk_Vh>a%9>HkQB7Sqcvzh*L`~ zwaiLTOGQ95))ob}m$ij>dP6xz@p}8lsGF?R7@9_>XEfET6j6h7TL)`AL9%E#KbY=? z2)q&ViP4Rvy#Tw9r0r=S&4y<*$Y8DQ(`kY5`qKFqucFR*c?t@XjVQ>D^usSlI{2DK z7_okT(P0hkMJs%!nR>xb&unOY5LDM5)Vnj)uuLG-gljr#aJYM)BHGA-j)f=d_%qT6 zg`j74tQEBb&N0mt4$*3&z^nleHD+Fd%q_Bo5MQm_bK~66kB9WaVODjVe##R-4nV`v zJHJ9W!Np}lk&FK1)f3kaToW$5d2_d^k4`2^!y%9h0;eD&P!&X)2AM)NsyhP$7UZD1 zR11)@=?~1hNJmEiS-J7x)Z$g;3N5%v``Iv_-7+6h2=LlbvEFqr#k|oAIy!i_f`&rG zN#7}1N8x!WQ#waQ!t4C;BSL8{1v|sDIp&T69nUW;ou~jZQ7{E4jPamW?JcH(?YwhZ zG+P0ToewZ}J0M`Uxnf7HqB(UG1vzFM^ju`_bfgHg?yjfy7ERL+U%YVm$i<6?)0;+T zWJK$ML^F<^q8vg1j~K0{Dm8e7X!M+_4A1>VC0sh%yVVZe{~dPr(JB;xc%hST<3+kd zRGD1Njno6gDc9-EMYI#`xrHvZr%ixpy_3tP(^Pg>W46yVE}p8K;X%ViHrsso|A975 zFG^^-SXQ#Kc;aWh)i1Z1LDRu)YAaMQW>rLPkp@vqrGLd-?6S=66aI6y<}A;`W? zLxG^)-ci?+`O{ouQY93q8qO5y%-(_7d`_l%opE9%q%+cLDA2gB5^^yzE0kiqQ3-X| z{LcvzO!J{fz+@QrtB^+h4;XpzH(GZ8V4N(VnvK>|{xgknpgou$4P@7K=8M3zYni25 zilc{>H1I10?6})hSuOd{RZ8lAzX4M+JI4T4LvOq%An$)rgGS5BsCMxIlP0mD3|o`` zz}9kf?hZ7~A4E<8;{BE+!Q@RbI8j=MCWO8M(yHhnV6Q{mVyuP z5W8#ntpC_ZH$G)_IXm_24?CqVXDs%}vCl6IDrk9ScUnXIG23(&8spI!$}Gb*Q6;t0 z@)J6M3V^p7*sY*x{3~YpPZ-U{nuD8&QkfVP57g5cpq~6p4Mo7cHDpis5Zu8Sv78V4 z^~Bx30C;({bw*@Y=}6XHLOKdz=Pb!VG&!2JYI=nZp|L zyI8tP%x5k@X-$*B_580OZEUuJR#!m?QpUK(sZD=mf$^F1veBop{cw>uG$#%F7v4&`4&HsbiWZ^wtljR;(>gP39ibF45SmD)Mqudt{z| z|NhXKw{H$5)ppBF@YJh7lU2VML!oqo1k#ox{pBSZ+s{#kgvyiqqMX|JjkshIoeibm zO-k`smIjzgNHqMPYGMqmhO`ahKxVT5gYNpxCjT!G^qa`D%>T+a85dPUIwv62U&)O8 zk^iEk*{eS|)_AEJva^w+n`aT1Ay|&|^|=hujd55tRNY|v_wfigenpOYOzVNmu%Pql zaH*=EMw>s<)nX9 zhCCZ`U3b;!qWBvsv$H-A#JRm?jnSYrFDbAwl<8 zvQ_^`!0r*g{&8y3MgQNbW8l5WsHF= zql^qpaat*anvDDGkyt5PY~C^}b6>#;z0qo+vW@}3@QIsw;%{nX^gy6>AsLk?@;fJ= zT5()+Vhe36?#@pV{?#7`ItkwGB`+<2Txct1p9i_nTpHLCa-jf2$gP*sS&<2m-psSy zF&&sxvUSS|fZT!x!n_%OQ~MTljrTvfeQIfjOwkmG1lo&iyc|cGocSU0>nw!CyR=`rouE@0BNr)MqSP*d*&^~Z%om@F6q5N6>k5*)skRz|PywjqrGPXoLBk8-pNhG&rND(+f|2S7 zDZ+_jdA2ed9Eng;8mWdvL8LUDr<(x1_(Jxz7YhW`y-Cj|LuhHHp=JW&Q1jTmRX}(B zAzdymEhk+pWxh*hU1aKxm#I6wMkRd`;dzxEb7Rx=Bl#VYqry~;_AdLv3r2+wIo5uX zz;wVL1*L`aBPcc1OYPP)lhYtEptQ%oePsWT9Zr=5;V& zcL8WL7WIy76df!wduKsvPD|)|sh!lCmC$wOWW9M7L~h>LNayHxX^(=f z=K&(8=7ki77Dm~3u)owEY6@V)Bp^i(O2yI+wvmRh4U_c7pNo|>K?VM#_7jIjjRz9d zq_<;U)T>Na=9rVytZAzx`?*w@N8P_V&}&Mgq(`APQaunDX?uAgg>*tG-7&UtM9wv# zrem|&TdrDxY=m5`BBxjXD}XgFaYS`cC*u`I)Y8})B&CTR^?_I$C=(DnKU#s=Ko++F ztIVo0U%l%5_LU!(t{69Fg^p$_XB0M{DoE$Wf0oM##g%^OH9s~{(E)HJ+F;6VZ zV<}2j`8a4pUt^CN$hH1zQMxW?KA;qX$VpCM#H4yaStN?mnes*@y%T$W?)jnP2bqBs zqy-|Rrj3V}Dyw^e)fVKs5AF4P)CDL$sQVZ|RlSuFU0RmceV8@5a`h6_Ye*WwXbHYf z0r^*-2FCl#ln!{hXl&_()PB-1Q2?9D@@X79NQ)qz6QovRhK51ZSBnAg2eb{n{AZHe zc*+Us+$ZYF)>=H72&T{Bal{pWzlex>zE>ijj@PM7VWKH-y4oCX+F%ft%UzD%l`ax&<#;A$13DXn+DQ3$xjyBb3A)%ZmaN;+JfA<(?TExoFPNk z5v)Z=)((j1cECEZeLTBMyNg<;r3+x>x`B5)A{`Tf^eKSR18Z8Zyrc%G6q6was1#Zv z&}~4p$pSeJ1X60s#>vGlCRbcACB7PC&R9Cs- zQ|Z}ao^9Sn4L}8b(+L0K(sTX$#~%H_M#xVfjTL*zV(j z>8VPcrHD=X2soyOKoBBUiFxT&Jg7;BEeGA2BI*2sHWv`+1X3LRz8C;BLVubg|(;A?5UpZ6O27& zfK>^CWF~Xfndg|NL3X2@-2)E6;&TxcKG8(BpKUi;gD&h*OY3Ny0!V1E|8WXts}!IH z$7pszHpV+El&)3(%lM>&wi;`@BDehVij6<~82EI$59;#v@zMZ`-+QWmQ=oDLs$jkL zLV=BzPL->AZa`u+64WCRlEZSANzPe8UreJKi|y6`t1R26tn&a43c!(0V6a-YJpL%n8<*RV!R@r~xdWp^P8urYO@ zHqhP$B2A9^8$!j^M361NQa^R(udFz=GM`ik_3T?b?qIkU0=PSdF0*5&dEpm7-iJN0 zldZ>6lTnajO9ilM9~Ep7aE0cN3gMUO%`Z2-Cz?`gAYqe$k=H=MODn*#8kz(I{_}rH z@iVA5z_Lh|Hr1LgmBwoMx(eauDM(r-8X#+#09nh^khK(Uoj!5(O2P>U(vu^?PbWhb z{P|@_enejOsT&z7CqG{3h1VB>WsL^W5KJ{iZN>iUpc=AF)m{XzeyUjZl^dQe}O3z@Z>Qc>n+LMl8&W~7a z=wBRl1h?Ht&-{3Q_$iaP#tEyH6~(m0t48Zt2G8uLQRiSeZIdP!ZuF3{ft)nXU#;{G z04AIl-a=I4r=fM8I5GdZGMbF#Y1l8Bg3ulkDv5IP6f#z7T8pQSQeOq@Wc<8Z>19An z4T#*G+PTpE30AFG6Kr9q_u zEL8ZDs|D{N&?pLaI$|Ao525Zf<}s7i)WuRa0m^&lfbVe(W@>?{JufCx*PeQ6D*z^_ z^XbZ)je58ioEyw0u&oe%K%Ma!s56#JN`&9+#b97B1nDPzq`r7@2AOkOZwz0nbPHy2 z8a5beTA&63s#NS~9E`YH!SeZdvsx~t*#(mpK=%Q}r~xG*9nB7squ|H_;h%*wi!kn4 zt8~if*kOQv6u%TIUK`*$ zr_vcvX!{#1s8}Xd)}lRiDscb1G{#%rXt)7$yWvw~J2-?Jag8|m@EWX5L^w}q2XPfR zFK9<`JU0>A3Gm-Gc|$u1e%FC(_Q3uOt_oKd_V>ef5VlEh3_iBS9e`~w+;bJ&2|iIK zFZ_nD!?K;e(B6gLe$d|I1kT?8JFhs*9fI~PJg^?LU*QCNK#RcNamQdg%wbs8+Ma{2 zxDgF>q9L>*+$;cEXU>8Pgw_@Q?l`n=(871qU=5rq@H+B`?-6$r+9uHHFgSM#_M>3` zG_(nD55pPQNrPvdg*FRrb`IKH=+Jp+TflMn>=(IV}4#4NgxT|pCd-#JmIQA1B5D#C{9$^!^C94vDYwa+0ed&>zYCP z75=6<{LNF?m*5^xpe==I$$_uUSwhF3K?{q7V{QTL*ur3}gth=?PXQMdz}5z~RJ0GFvvX& zKgWZ7b6VK%3H$qDAHM0vb%fvjVH07~!|{V~Ob6{@_+1&c6|k*>tpv9DaQq0gEucLL zXN|BQ0$X>uMxHnUj$e``WI6m;13xaqi8;_-g$Y^=$0ooA@5#gL$_uFQ^31n`_AXb* zwT6$*MS{A`gSJ16%tAP~6!r&kJPP56as*t%!?A&IY!r<65ZEt*Z7}>E5A8^3<@*oi z>JcSqKQ{ulQLv4L6Y^k>hHVV&Pln+~(9Xhc++6su=pmegIAOrfH-4x98^XCkXSu-^ z+~6Q?@C0s1Rc=TeH)Itzl;?(Ka6^}HL*H|-{H|doXZX$y3*?67a>J%`!!b9!7dQMh zH=-*yvLZKfGB?VO8})@7eVHrr=8D>JMT@zjn_Q8J8&k-QS;dX5&yBs!jcd$}d&-Ru z;Konk#+Pyv7IPE68@P!*xQU;+NqO9)licJw+~hUfl-k^s>D*L3H+35~ErXj@#!X+y z6-RM1g1DLRzg^rcOKw(MZq^QN);G>Lk~7}qW@mA;FK~05xH)~fIVZTe-rU?(+&mRG zZyY!86E{Dco4r%T;P_^+A%WXj1hHc!&uH42e+$Mi+Qz^H(3%A9S+p6TY?&h}j<+lCgwvXj@ z7+km=o4B3%+)l>rn#1i5=60L7Ju|tz;oLr3Za>fMU&0+o=MF}2hq`iyExE(%xFb!u zBj32AtGHu1-0=|ZL17oXL|j zo#9GTIA+bUOPqNbSJs9rd(HhA$^G=^ettpRK!nl|u7a=;5idlJB8z57Q4J{oeXK%C zLp|6~1#eWL1XZksD&9bqdLluEg!`!SSY%lbSjzlBU*&$sq()~dCVMx!AV={8whH4ZdCqLxuiE0L*T6w5;C*-mW zx!EGOZ^-=`^0ZwtEOH}_RYH$`cJc9yeqQFt8 z(OA@YH41uwn)suTWE9#1g}EX_*nJd!14TSSkuOj*LQO>!OBheaYlV>p}vn$zg4Jz4>X_#8gLm6 zG@?Nr&|qIQ#19S4K!&==umuephlaO9!+)R=v(U&0H1ZA_wFHe$Kt(pF=zsx@>43)i zp|NH(ZWS7zjwWC<;TxJ*h9<2>liQ&w&CpaWn)(1uyMd;ELdB=ij5svoDVn(l%^HD> z1Q{ccaRoA#qS-lU_IfnO3(c*B=EkA9>(M+1G;bA}KLahuLJOl%i8EScixz9p5&?ATQUyfFIqZJgb%tx!Lp;b%K>H@U-1zJ;#)<&VVYtT9$wC*ul-yLlrXv0jj z(G_jni8ggbo1M_+610U!TawY1u4v0*v{gV`$D?g3wCyn39*wqdN84Ya9U8QwHQF%? z?f8IpCZL_S&@MgN)fVmAk9OOl-G)hM_ieOCjrR0Jdl=fAjrJ}<`zoV-8_~WGXn!W! ze;OU=f(~3m2LsW;CFoEkbZ8PfbQK*AL5CNjBbMk$2Xy2XI$94M9e|GRLq{K=V>QsR zw&>VXble>s-+)edqZ5753D|jwPP(9zebLE#=u|aysueo5!hlX!LZ`c-Gu6{tKbiol_h(;Igp^Hn=rBHMkq03v)m4WDL1iHEzT^oz8 zd!y^8(2cF=W-Pk76WwZrZXH0kGtlkZ=uTI3m!P{v=$;PU`-JYtq5HehgFfhCEPD6_ z86IswkA2YNZRkk?dU6>(9gLn;MbFlu=dtMd5A;^yvrsT!y|JMt@C1UklK;=IHxiL^~qM6-l#@$sU<*qS6J3 z^+M)cROX9**q|RX&`(1c`nel(E?_?~x{PrKCN(kHhb?+wMQyCOj`;;xSr02u;R@4n z#S~m|Bd$~*SK5h%>R4EVg}1n}AFf=2EvsV7u~=n|RWq?wV{CN{TPI=b@7Sgjwz-b0 zG{IG_e*kp4j&u_S=a4 zqp<%wTyG?uIq zF%D0`;VW@ORU9!FM|$JPjX25&M{UK?zBu|eZaNdkG{&)&aqKA^Hwwoi9B=4?;~7rq zjS~q@T#l3cancK%dJYCF9{^@Q9OmlpP*D7#E$# zV_opLt9ZhAJh2;|a1n39cykoqG6!$HkGI#xJ5JzTo$>C*c=r>$=L+7t z(t!8P#`}x$fh+jnczo~zKGY8%w!?=n<0Jj>Q9FF}06x|lANR#4T=B_T_*7kdItia? zj?Z?(=Unl*&G@_ypI?G6w8j@b@g;&UeZ-ef;47=})%*CmJ-)sG-&l=r?!~w6<2%;) zt}niqgYQ4U4-4_5#`w`UYLEd@UzkQxhsA?48Ks}7bWpS$2Mq4+N?{_80I+8BS` zhre0lZ|(5+8u0yH6oyOHxbz}sv$5H*5|{18KV0ySz4)gK{`rJ(iwN3C za5}*+3CSlGN@8)6C{7UmEKxor6%nbVCW05KJe62VM74`p{UkPVq{=E%4L-cllh|G- zc9V%iBGF_KZ4?ociLQX?cN51z;&_kL=uT?PCN<6xr%d8>m^gbGi1TJrGndp{Kx)+` zwfd7<&q(bEQhOb#T}E7Dh|5OeswJ))h+8Ugn@!vpagQVJdx%FB;t@$adJ|72@hl>q z--%ZQ@tR7!-VyJ%#QO@Vqak&MkUDos-7r#j2k{9aJ|~H9E8_c+_;n)wJn`>J{NE5m zy_TfjJyL%gX;6hUSV0=PkcNFoKsX6FLjprc;1|-UFKLWPVAPMs!VUI}od=jyqMCOsG01|bEL=Pj;pGiz7600Y%OG%sqiFYFLuSh}^Nwg)2 zUrACsk~Ehj3nbaFfTSdolr1E+AxS+!()y6JwIqEM$?zc=J4wb@lG%%7UM5*NB2b0!C2GaUGX_H6Vyd-U1N!t#j?P$_=32A$Uw8Nxb zIB7SMwA)77S0n9{N&Bv({Wj9UmUJj2h5n>)9w}s`qbKQ@M>>{}j*mzu8`7yK>9mn_ zI!`*QN$38g^J&s$2I;~`*BsI{pL8uCUE7dujY+rGq}xu?J&YK-Pa-|qk)9T$m!9~MAO$Jvb zL&C|B+hpi+GV}x)`jQybFt5ar26rchsl>3E7_N|E)?`>;GHeDJwuuZgli?9$cq=m8 zFpLaeK!)!p!yk|lS~6k;8L^0r*hfZIAS08>$gX7ML^5(M8F`M3!eo>W8P$r6Dkh`0 zkWrV&sGnrCj*Lzsql?MtH>9W{DGDG(gGkXFQgn(Gy(D8aWXyCj<~4bnYWG1cOdi6k_C;)0s~p_ zlq_^13%ih#E@V+NvZ#zKjwOpnkj3xF5*M=MGFhr3OLvlGVPx4#vfPI(Ur3ghkrf-r zN`b6QCM$Q6m5i)%AgflA)s@KVZe%qjYX*}wm&w{@WbH1p&XufdMb=#)>kTes{SdPL zAlcwaHmoBX?vssG$j1I;Qw_3dIoXWK<~C&WE3#!I*+R)yPqOtH**1!7D<#{TknJPL z_QPcR53(bO?8qZKrjVTt$mn+$|h3wXo-9yM8Z?b1B*>jHU^(A}zlD#v?K1Z@| z7}@un?C(PMe=(2)QRKh{a?q0;oKFtkAcw-pp?T!cXL8t&99~3@IFchtJa{MtlkwH$3BPT=2$vfm!0y#C6oVrR*S0Sg9$mxmX^lEbYE;(IB z&a@$C9+R^Udf6x&QIaBxib&7N`J)7FyihT^1I1hvM$;P>K~8+zzrpad){m zi!Qblm*Q><6c(7<-a>!xnOk=Ed7jVjkMHY6c~6p)larH^9bU?2+M@O2|vsWOOwdJy>4OB`+VASBl6h{pFRJ^2%@Ws*qPJ$*aBP)v5C8HF+(A zyf#5z*W~rG^7=@5{gu2iSKiDlZ;q5VZ^&C6(rT^3#0zIZS@3B){gBW=84yMaC_Var*$)?l_rHPA2r03D@K|FZped{B|~6eormG7m(i@$nOK? z_jU67?=rElOl&6;XUN3aGI5?vTqqM4%fw%0;tH9#N+zzAi5q0%W|_E6Chm}lyJg}& znRq}Z9#lWE5<`{due8oe1}W)Os)SO8Qco2HE9$A}u+q~gy{FRGD*co4s;0ud)+xtN z%F#+WcBy1Pt7JD-@@gviUX>!HO3_iJh*l}vsg!S&_YmcMUioBEK5dlGM&;vHsT!zM z8&#@jDs^F%dZJ3>uhOhhzJAJgg7Uqq{E8_*L;1Z?{%MteJLMm){Ff;I1Iqu73P`R3 zN~nOYDqw*M2!E>5W>slfr9G(9{-x6OQt4bO{Unusg9_ADV0jhzUS%*<#v3ZAs|q@( zf_+qQEfu^^1wT@m3ad=pR7iRi^0Nw=tU`9G&=D&1Hg@UTWD^+p3sIs`o(E-=Z2ER}IgqM$J?sQ#EGQq?Bs%N;Ms-nn~4cziK{LwFpx!v#VCR zYIRPvp03*DRBi65usy2nHP!BvYQIc%=%6|VsZOD)a~aj;C)H(z>N-eutE#&Fsk(nx zJszr_;a60zU8?t4)n||DdrS43ruuhQ1M;YW`P874YS3jhc$FG5Uk$CMhLupmd#e$R z)yP(A)O0nvyc)AajXkfzFRO9WRm5~PzOR}vTuq#yCbdzMN2|!0YDx|@<*J%GT20HP zrae{0C^g+rO~0yU>{BzRt65=ccFk}#C%u~ULd`YQyxMBMzncG-S`eugd{PS+DgH$* z%C8pfQ;UPu;&p0COSM#~r7`N)2(>J|TGmx9TdS7)sO2Nn@_4mkgj#VzMM)J^Lq%Oz zEB(~UIcimPwd$!_-CeCot=5cFYd)&AYt*`yYTYxnzPVZt={Gb|8_uYWp=#q;wehmr z)L(6Sp*B}nn>VPtnTTn%Z7mZQr4GeB@seLunzG&s_rS>;c2U4p8m(;Yz&P%X7=8XEinEL&I zIvb$Q4p8SNtMil8h5qW|X!S=ubtzO`daRx>a4>3Rkx-sN4C%)$Is%`@6c+Ox=lAF$Gmj4;8aP#e7$H_o;jR)xFQ^ z{&4jmpL%dkJ)Ei@rB;s?smFuWli})VA@y{FdX_~!JD{GAR4*E;7m4cSR`qJQdhMlN zPgHNDdb3`=ZLj{6>d(vS-4yk{j(UGteHf`?%d6O#>SGlZ{_(N;G+zCcLj5&XeRinN z`2VZ=QcHbVp}sCr=6L05tm3NSvy6&Atl~}O?xx%)R6FC(97K*ASb;LO z3#W|ZDB}|f%1=QZ1cNpb9MS1E{ zUXAi@rF;`9e_jgDe}W1mrviAFSEy1=s`Q*HM^KgUOjP9-Rjo@^ztYbm>E~xuEt0BdrRrJ8h4;3f||6UrWvW}4r*3}nnh9bfz+ZVwJb@k(ow6(aB7{ATKA&XAE`|pYV(!C z`cc>uYTJg|{z2`=Q+u7-&!+azs6!s=aF{y0rH&n_<6i1`jXHTzr{2`*5_K+4oflD; zwA7_Nbup;RMe6EHUE5OEqtrEyy0xNi7pU8J>b{7&yQ#-S>gk}K+o@Lu>b0H1dsnC4 zF6wiO`qrktSE%1I>c5l*G@}74X}}8_SdRuN8kBR7Bu!ag*T<}`!sGYMMP4>cN#yK zCUl^Q$!H=HCN8FlCQZ6QlSk8JlOl)HlwWA7plOn(wWMip$>>Pav(WU{G-CnHY)Lb3 z(5%ulYY@%4M6)Z?>=>FenC2X&xg}}tESj4@^Jdfh>@>d}&EH82rqjZTv@ni%CM_yM zia;kKmQ0`}cWLR^aQaoyuYG7)E?V}AmKUbwBWZ<$R^*`-ooK~gib_LKtto0h zt;|m=57Meav}zu$PEM;A)9T~2rUPHTf`ZC6_Rn%1qS_1S5CJ6ivcHY}ozGig&k z+BA(e=c3Jtv?Y|b%%H6~Y3m8vR)V%2qHUikeA^e=UWB%HqaES2V;AjsOgr<^&X%-u z2JPHJyC&1FGqgJe?e0grKhmC!v?r1F{!DvM)822iFC*x*f=`2la4*1-}2LM zJ?Xbgbi5}WUq&ZN(}|sQGAo@tO{c2SshM;tkxsXz)4$W1I&@|Q{ho_{A49)Cr?Y`{ zwrx0_b<(-)bUuJC2)eMIF6O6;SLu&2bjh18HK9vG=+bh!^oF8qQgkF;_NL42=<)-) z5=>V*;b-l1bw6DnPd7@_jY)Ll1>Hu-C9Anj?nEibh``PK1z3T(VZ0( zlZ;}9)7@fp_Y2+YK;ifPp!){h-%R%}(u3mkU>ZF*L=QgF!yNRmCq2AMkNoISReCgt z9<8QFarC$fJsv`j7t!N`^!Nik$wE(>(UURsQ8!|nqC*7*VF0sWqK1xZw}C#SbE!& z-ae*3o6?`>>0L{DH<8}$p?9z7eIUJWOYc|Hdy_uYqYo45!ygozf?|77Y#eXRpgZ}D5pOew&$@C=!eHln!9?;jkWM(DvA-UF*>o&z@2&cFm6!(JS%TfFeihoJ& zOxU4D?snuJNA9)czCj7)DWM}U(f5~>*ohJ^=sy+Je;Tg;^hg(N zb#X=)FLf=Wu9efZHoEq^E>q~Tt}bWm@(*35(A8vJ9n#e&owDdOQ>TY|IBrnWLv+2J zjw5;XC%RX#?o~ne8mxQG)xCD;URQ9xn(nBlJ6Lyo*OLv=lik;oSJRVs){`&PlRwr| zWYbfO)>B;9Q`Xm0p3%J{bf0p%&p})>r>AP6r`oBf4%1Vw*HeGg({$0(xOCt2x^IN; zo2dI`(*4Toe&PLezqPvGb=|+A?te!2f363R9*|WJ=%WYh*8^_oX{YFEFY9Sz^>iuq zbb0i2HS~0S^mOy}bbIymDfINk_4E;X`el0hXgx5E9#}{Z?5k&}s%KcEXZWaR%%f-A zr3VG-K?C)mdwOtVJ@|;8DW9I{m7aN{p81>}@>6|1BvcQnqK6oI$Zb6|yB^v{58bC{ zAw5eKJ4WHS<7L?plKY|Dk`B}f7I@%Aoa zcgitQLtSL{imPXKHaPQEEr2I<73V-wx0~1ui0dXc09JJu8v%8Ch?{_{Jw*Z_q?h;& zkfe-qz41kJBX8|3HfVdIIBYmR{toT~>3q0-f02$u`iiZhAYbY$E+X_J%A1e%6Hy|+ z6>(0qapoBy(g@MpS#F?6C%`;OCrKJ=F<1=rl<3C~2BXS{x$Tf2QC5p2ky{OuVq?O1 z)8FmyN@-^1ZM{VhPaTFL_Hg6jB2M@?>y8k~g(&E3F%p`ALnH2!rPk=FuV+ z5=|K+x?2)`9BX~C9m5^R*(&@t4j+}z@bU4YuNHTP_eP+l&v4oCHdwLZ6&IQS(pP+8 zf;bMCF;ScZG@K-MLML)EjHV%}I)ldCrX{Hk%= z#UeYNCoV>%Msl(x(9=ksy+ri!Kr8mCCR5QcgHS;4rRZxT`QB2o1u*qjaR$&}nXs50 zS!S~?y&R@LlDn@E{kiE1TU0!cN7UOD7y?G}$|xv$BoAGQ?l_WtR*6W!!d2pD0P0y) zJmSo&MN?t&kkw*=aBzw>Vuk3!o7ad#4q9= z>qQ$6nL`H;LAOj+;aWz^P559Qq}yGzk#7S!~ib4#UwG zpZNVQ{34<57MR>de!T@&xsjJ{MVH>lZMKPRfE3$*q)p?(J78lQxy24x-$wqj11U#% z&Q4VC2p8*d2oG`EQCasx zv{f9vUsMOAJs_3?avl`5IPm}mKl`~qV9`M|+$we)5(5Au4`F0k#ik&O{kv zUR-!r;-dCAij!RuMcHv$Toz8gb6SKY71%;Ee+ZD4@0<~jQSzbR#Tzk^SDq8; z`RG~kM67k<83WVwzvF!P>Ur4PYEQ(m3*wcy;@ogiG!x>nGw~1D3F_4*8YWbogKvpY zk(y_H)=O&Ns`I`37@dH7E{pM6!dk{QfU2O%aTOL@owr>Tr96<0Q(%h^o>7LNkgQBrj_u8T0h>+7N(0Q5Py?G3c2%`Pi%xPdmS&X;f4#Mr`P z<(YO<)YCFf`CHl#~Af%{l_-d(mzFG&3&3f{uCn-+vF)GuG4(|sp#dQ?*Xtm zy?q8no@U?YHr!PIvKOH9;~_85z*#xswFu;lFOf2iAH5P8c;`#>fR$E!25$5U zqE5Bqqr?g;YQ4C`x!;Jd;sJ-e6^Y=MB!eZA=*J)a6wSq7{L4Gh5NZEZcsd5v9Unka zjSswsvwFC*!WEh1B8A@Esyfj@51mz zc4i|H-o#N}k%$tHF36)z_d06Nt7ADl0sdS@q4^`ZkkDoVjtOlBpsuF<3TUWnodDRb zF;Y7k#lI4)|B2M5Ag-6vh6A1{4I?cxX$JsF^pLE*7I%Zwd1>$3v$-N=M z6`tp#Gb_EFA#b3z1xZE*Z3V|w zm%dgK0=p1bA*1#TOtJ=H$3B8NgSE35Ct`!OD;_xFsq0;ypIJ)~cb#)WARdwqglg|W z4{c<#RJ0n;P~t$$zFYHXhUPN4e>SMri%VqJE@2kGlT*vYS#xM7FqOZ^p?$(Ej;KeN zzz^oqFgEk*+?oL>m`5AqVKUvr^55-(#L<@QKd^g#?RW7z7b<|P7x-`itvw*Ppf(gR zzn~T=ZgNl|ZK5c~D+_58l1MZhL=ah6J0fB%iT$}{5pBG;4V{Ap7+9Imtmx$oe5Km%v(n!gx0q0@L*(s1W?816i|%eku>4tEdaarY$? zXg)G<@K;5{+~6?G_3lnM0q(#6hfBDcf@Kf9jDy?W6b63Em&0(cbNIaBBZu`O;tgl0 zu1x|&RoB`8zE#(10c!lBwFRvI1x@yb9W}I?UTc*mbHLP^b|$bdDrRz~TG+pC@W@(PI6}Q^YhhfvHF~7|JOFU4f!3ZY)PdQ~ zo|~IC)~b3^j{$6P_BFA~e$d1&W_VLugsjc9lU_6JDyQen zwX_yotvUMfOzziQyA7z(!Y;+DCCqmw*K4f>@rIV#2-I|cD=mW0)kYQV=LG;H9|WLU zIk;dO^f7}!wLvjEcv+Y>9j{+`+G;iRF=!`u6Mmck7j9Nt&3bFj+D_~5bsZBvT^+^) zI%s30Puz9R&|cdiuJeWV7(8s4!XG+let4E0VV&3cYDX}?&SN@ZSn0#Y5xs+E_Td?w z(c}7XKo=y!C+VUM6Tfk(uBi17n)ckkw^mg%f8&weuuHBzC-l&&bH?uA-JT0}*ZKmM zch}|s3iYrFj2>El4_!+@vz}TkU(HZ`I;2y|j^t0{fpu7T((%hGMgt zt;N-}T%yGoCgA+wl%~EIaZg(gPaymE(-!FRZ+9m*-|nZ~LcSgSq4XpXzVhq=TIYXw z)*WaM3(*6$Cg|?j25G$jvj?H{7)~)5HW{-=uxci#1tIG(L15VC|8hDu@>z(q1BV>|uBe zQ5<{(6HpYtJEE-@OL@Ujj3rUr;Fuj5@|z8@zuA$SkE3ta=FDed^|g892@DgXxYbFF z0=2o}ZGAmp`ziE~+FbZFeqT|W&z(l^v_k_p`V1;to4=gF)cZFNn^hDWXSKzaF6-aW zf_cjoRHW58I8agi^qh79u>HKPli?S%72>rs{Y9&G3pm3c7_p=H`XBHD;QC$C&U!`J z{jDiaKdS}u#At1{9%VV&?>rIDE^Fbu>$2txI%`cP!{5=^m(Me?$nvSI%`! zOB5%axvpDghnBqomoSWvyg~KC_|{wPCSc4h?H-`wTU6GDNj&Thj4F($-GTcS#-(E5 z6@>An7)Th#3-4lN4CBi8F#FgfeR$w~tsXAZ1ey67@ky^^Ys(WOMvR*Q=53%GkB_D-0HcN$f;jy+d1I{##sCLIN<6_ zbks2C`Bz$?mF?MUOgVqoEvYt1RZJ57_oezcEnxt=-f5LY2QK|y>mc^?()U_pykdWN zj|n-B8+_0jX4oG!G(HC|Vi;off%~!3*UV%xPQyIu=i<%pwaU8RXZP{A9h_#7$fUW( zaY!sQc$vS&g6#mV@DXe;bJRzzHwy9oqy1Apd1XgoO7bsS9f=herq4)&28xKiV z^M1E>Uu5Tn2{6AYocS9XVG7T3$gY6;-?hDfD^kt`%um#^q+enG#27x+N5gCe$0&%V z!)1zV&A%sV{dv%M<-ee|oG2m}T$aIU{);#cA83T^Wl{NQaRYdgkUPP*q$WFQI7V`* zhSg4uvq-t^pF-O!ITs;7Z*E62JDw+z9hF|UrCP7ceTZ!9C3kyGNqUKz?T~4?fJ3%N z0;K%G8ruDal2%)2tph zschngsbveKY)UPM0z%Ws+JHW3WLdy0U)ctr`^qW*gp#TO!F!+@QGRk2mVm1I%L*X5 zlooqd6N34TzZ{5(KP*75Myx=r2P*RVw6-81v{Yi#yX*1tbTUE|;*j*R8lY=>+1sm7 z(#v{idRdi&0;N9^3J1!*fT%#(3g8Zu{Q$i(K*&OTHiN7RfOh>k1RIaRy+KA93K*DC zRsrnI2!bvgmr;%Z3=5Lg#YH|E1a)WUD#0=w_In~2kzF`hCRxg>OH%m_Gs;ZdH51Ao z!J{(Ciby|{N!9}-&n&wD`e&9UL2Zp~RoSM#m|5ojXB8>o8J7u>oy2lp9wIx7(JVvd z8oU>62$k!_ZElc7cK6CS(d-sPIzKL_a&!AedRqRTMdDUUTLx(_M{%pHkYOJ8%PQN6 zj2xX+_6JnTCL;l7v&ojAwq(fZq3)ht=7w-kL5SvF%zLuS92p+kkcvkt@`k zi@!zwL4NnRe{NYk<&(OGJCnos)|Sjgyfe4VR@@zExP7ZObQg8_9iD(U4)+u+O}ifA z%TPOWrZwm!F`Mq5{trW*pF>W-QCuEoFUYVCk}w>DjD9ov&%%pNbJ{xo=;RXy4pe{0 z<#Wnq;vwJ7DUSh`=8_o*GWp&5za`4fA-QE<5Z1{pGf5C~pWL$4{|MeO`@@9#=1%jM z{}C}cPJrIxskh&A?w4DZ_@B(#c|{&so;zhz8QIJu8}a3ADmiy4qcZV;ymC7}QHAD{ zYrP_&gg)jtPE!OOy<$$-&}X?%Wp&XXq#_bnh($+*qL5rt$P z-c~?n3i@x=_`Ud{oGDQr2H2U|)RF<~R)rzWse;lEgE7Lo<-Gl*336!8Nhl8St{4+?_i3#_!t zatq)=WjhjS>6}lh$P@x`@2kqi9++&e$#_TDwvf^67B|4`#+53|9?aD+GDPr!YUqg( z+_t*h>Vc&=8VIRNZe~mUuo(vKzYDOMOp9B>5iR69d`Rrq5) zm1Klkww8Mk@@Zqk$u^klqIh7Kv>ZB{B#N)L#rzhBdq8jj(PO=wZTNl}m zf9;H+tN~+R`CvefE*Qh?l!<_%UFAAJOjkRyV>irU4ftI*J92(^IS7m44*d23FtCU0 ziH{NYd%z;n^PrycJfK1^G){W<=?&XS&j)+U>KbAUNez5yihA3j*l6KC;;39Vn@gG1z|lwC)g-31nC7D?FE%1@ME zk3UX637ha@iFtn$t6^{tw)4DUnEp<2{4iM_PI0N>m=k-izc*Zp;7x|vKCXksWG9$J zW5KA8wfM6f3eWlsJ!Qg#pWNyq}hz_+~_WTtheb@_Veyx;i!X^}O|kk5RDgQN}eyXU!S41;>Y zCTmFf#A}Aiu(Sysg5n`eJ*+@^?v=9%xbJ8Tbru8NFV_7&&cWh0EmI(JTDG6nQ>0y# zyAGVsSew+#@0EK-Q2cJb0$K-Xt#7xj>|z49eRtyqNUO$G$py58u!g40b}}Vo2#Vjv z*nOT2WhB+eRmEKE+uGdJ!d%qc-0b%%Nu19KXXAYMN*yhfV;x$smT--$gv$ov8qW)t zV>4g-KXr#WFiCgy!(}>4cV&6lIGG;`to=U+$Vc1$eQkC(7P{F%#tp zK&46YmiWVpgqu4VL(p^%dZ}Y^MB~s%`70tX35H)2#dxpKK&fKtcr8w4n)Pyu|?lKSKdZw`aH=gr;Ndo@b!kqe;Q_%=QK^c z{J6?|c@wFD3+$3UF0jiTvq*;UhK1;8&SCXyfjD#v-C zHNN%B94S3>cF^DX>vM(WGABrE9!Hm>nvwi`IY!AyKDJVB?PEiJA!jUEsp? za*=+`t`axQ3$J@ybCr^huE$8~VM=DhAeG1|PRKy6(9|m#qTL%XR!8!jjhG7}`P)WY zjsu%8MMiR?&2pdaQPJQ0)+9^P*^kzFvPB-_U2~-`@7@Xzpb59%CQAVpZhZX*XuVj@)t& zj0KT<=04>;@ z-ye{30OJnIA%L$3QEYRLID`ogp+jiv<~;f^RArNNqE>{o@^>nf3T<#Q{gc5xG6n>JK+c5jYRpJV#WkwFEtp{s9xw-ghaLmn1 zPQy3M&0kKV4!ODK8N7Vu=9n|G383Kbc)`id-+srt+Rfi#jP`R6K)17Y=8I=R_nbq| z$pNAU&pQVvejpz^CrhWjf-N4dYGytBO%R{VC=X8fR zV+Qb~^LR&F#XAq_rSW@O_PPLZ&hqFBa+WnaUxb73jK^JsMg7Sa|G=-;TsH1P7Yn~6 z-{SjpuW0!f_RB;w5Br`kn-?sAjIm_O`8>3a)0}KK`N^>|j z#>gx}%(0>aozL&eTEZ$bi6)J+?R_g5B|nfYt&;CPgtH?4a7I4HLIdho;i-IvPhDA` zNv9~!cb}osH@W_E3{U0x!E?AgwK(d99EES{K`&)@D16dO_#Tt^ln;G_Rf-z?+Z#Ang*oqA@ZQKP-a^D5-vCE&_djJL7}udc z;qEo%jPJl;8?S!{^%P+F9@9j9?*AUWFPsaU)5jvz@B`YtKA-%6$cvmk7EHr=aV%!& z?ffPdVpQjLA5q|+eEy>xCSGurPoP}PYd(SXRxb1xhNanj^e=Sm4_xW9T#9A;d!I3g z;H%ab%p+^~!Wa0Qv$^e8kUYfV6I{3Te8H4aVjcH($+6gg_tu4%{Ds^r4n2AdpNq4{ zg~st%Xvv0KV$of*@m8hgaoz-s$l1730+eh+dM^JBqenJQ{awa;Ab>*>;r`oEul#~> z4@Vx%^_qQ=t7WHlLIy4%)N2s6mnw&|f~G=+$mT?#4$vxVJz!1>m5%Et$YjnTq+m1u zj#;fM-=vr<&VI>ND#0%uh_Y#dEfM^kd6U^}Ej~7lT?PU*{$|xrq6C!g@*wkvRhkF1%t*J9Sz*kwi06%|T;;Vl9SK?hQ+aPWbpt5j3e|0M< z!PzE2f#$=7@A^BX-2(O|PN=7t;4s)L9IdLfQ*n} z1*Z#AmymWZSY=oktnPXq69D-6A1WTI?)qK+adEDtcsKNKLsz~kMFW8vzuVhmbthiSBQNp0?YSrI?VmZ_%5IoGGZd!3m3aRXT zFQ+=~iGwGSTcz zR)ZB~Sdu@l-!+%7KXrexY5X>#_D9IH}@|942XRgp(HT#j{ zhs(7_SuPSMRzoN6(*jDk!<|~9D~)CRpmr|ylPztfhGM6eZ)>#yFyoVcRC873QEk+B zt?DQ~+)ah>(lGT@RCR{8g;iRSU3#L~54MBJ*pWi;z7A-ostk$%=YtMP6G(a7QFR0| zFqC`sSH8|+omDX_28C?mX83h2sCsu*)vY*Spz~rkRm94g*j-^WU{waDa}MgMnkGfo z671KAoZEQ4up+VI&;e*W1aYfDgt|r68GjqOczd2vVX@dgHvjz^# z9cP%=@M+dIE?OO;L7Kr?q25ahGV+f8F#T5S0GV^wWHvT)VKTH+2zxAo@x_+c)f-#E1j*?FH{&3})9qm1X8JzX`D*05V) z3Ak4TKCd3xrzhvflT;SJ8kEq=nu4ofiK;uuBh1zuwNKCABro19A-LI^5{?2Bk_aaz zt!7)q;A^WFcQh=LaliiOho&I)g4|e``H|Cb)ga!!PfwdA_WxYtJ~sI{8gZg6GB1S$ zIYJDw4r(^Bif&(i?rscjXtRHF^%=nr$E%_k0M_^MDiFSQu-PJRzS-D}x6Rbthqm8m znQE%R0Y*Y*PqVv#*xbSC3R} zF{rGKR9)fErJSM$ioF~@MNJ0iQ!y*$(9 zb7vPs`lrIy{oi*W^$f$hX}OiVufw`&dA+GW#ZAkoW-$YIEw6SLb0lPi&fQhWl?}gQ zbeFX+Tt>biqex7DGo=GpF4G}giDMtBZhfMdHkgYVY7u#!s?%qo!-or}qI1DBeo zrelsdJx|TYuAWx&F)W9${{lq5<&_K2*z5Vt0#!$OWl3=Go}n_7>n&6TC@Ai=yAgjc zpk>m`%Di=3g_=K}LVHwxiYSNw`{2c6&{sykX!b49C8jgf7LhBxxLJ~25zMunvjJM%&pTm zVYgr!1DED@G2AyDMk5q-9(SO3LfGLBFv{O6_tfFn?sAYW-4z1d6}dw#6;Sc1JD=h1 zWX&PgMc$QBNF14k1B}7sw_=A;sB5L-hNFrRw$HfbFzz1Ncipg9958ka-QEkPK8N$K zRJ*ZM{dgrt^Ud646+DMG&U>pY4|XFzTdhuEAl|q}g<*f7*IK+Wyy9DH)qQMC-@6Wd zI3wp;kNJH$w_dOM11_$|0PcCS6kj>bM%BT8$}qE!>n85x+JU{2@u^LguJ7!?{?b^CiH%4ieE08lRMLq6R&qXN7JHL;4%xtT>+X(y3Yc9G8%5}(FD`S;ZBWF zejeJphjj!v27%vr$|hK21unT+6&J_3&t`QS`|PT3fy-yt{bw$@RaL?7u|{r%mv6sn zjzyJ=Z-c6a^1N+oDj;~fGDI|Q+^+fp((k|=8O<$ssQ!V`!_2{$aysI|mA<}~Rxp0A z!<3wzpX^W=O5aEaNJsBf9U6i3UkWT>X(s6Z)XZwsDCPgD8B5a@zRmxk5pKLm) zHgmLVfH_>4<>UL|beoBBO#{C7v&Mko6c6-?<|4;1tVZ+jW2yrn<{0W3&4r%hWvudV zY9F3mzhTmg=61*721WC+3O*6MXY<|;cpl5k`lqI{yl$sCtX(9fEmFXuh{ux zuc&G=!d;gOUs3^F_o~W`v|(3~KZXxnwKLYbW@o&8&3cnK%U(C|^01MY-%uCC5bk+X zgZmRrG71*7zwfZ#E4ssAbc<$ssn;f@N)ve`p|+exH#L&?j4AlFYG84-k# z?xDQ;jxEpQJGMN(#8~pUO8z5{tK@&mGcLxK=VFYiQGTeal`BTzvW*yN4v3F}?-@g` z7!=@w=-;who0$df2y)4!3rGy|+(3eozh&iycd=mcg!|uxn(FbKyBJ0L@$Yxh5+nKR zU37tUobw)_KDW3B%B(!>9x6YQ7u-_?a`*KxSLR7+DqJgL)`0t*%D!91s#oWvAtdl3KGr!_p$60!!7RPg|9DfzYm_BvDeQY1is(5t*X)klrW9kK7bIhJmUdKV)>}< zRYZ$x$d4YtVhM*uwnup~`}1{gJBo1Mc#gN3hpeo~?W32lzb(ucXL4JmIm* z2|M5XSY?M>d*w0ahrR6o1cG^Uizle8H&6Az!6%T&n-iXZnKzezstN=8J%y|6&6l65 zascmVkk6a*J%hD-^Pp#Nn7sMkGu0S?(d8lzf=t6{-Y7rzeSv=I&0SvDT-XEWUZ8Yu zPWjR+razSVTDfQf0za`2RDynBM&4CCtd1Ltfb;ReS|& z_2wzB;2e8%>?_p}Q029{2uStDjvV#|Dmcu`-l&Yimk+!_24B|R;>BP!_kRnW<--Cq zhM`Za{i)hz`Dnh!MOq(UnC0H$vYOoD9WFH;f-7Mv;SR)>W-b|5cHsvV9KOiC*l^## z41NQjM;Dtnthb%q0eJ0oH#eIZ<^%*Mn0PeDW5&l@STlDs!;M(?M0Yb>VTPA_tk;$c zFmo7`#e{FLVf!)TIxE{AO=Y#}o}(5y-C4a)T*z%a`Zen7n4*geGCfMeL8 zb6>b)J}x&Gc!!Y>cXhs3w?bU*!Deq)7TjYq%*=^PwtEXWpuNpqxQuirf=xK|z3Nom zz1*yVn@%nE7`a1X)Ag~Z5ng8j2$A0{zqsLrx}PAvPC{~&Jd8~A<9CL$y;0p^RBP83 zd#Zf4^2!f*tzOFBu__j8>fdAG&R^p>A2C&L<%*v$K}K`*C#TEZn9meI0TmD?+I5F3hyncnl$WKP$(v{t5P(wGz zg_spwE6obx3Vvr(*6br)k#Qjb<`Tm!YrUJoWro9478fBdflN#A%Ni`PxDo4KXyOrc zAb^V;YE&~RJ8T5OyjM&Gl{?I=#$~te`Tb4qYHo68L5bf^v+FbZ%Y82U1y7$tW4(}?vhy1Zp+V3Q?PR5&Jvj?x8V*%jRT&!lbf0AI&f2+ zAKmG3EzBtFFp5@h?FM7FuhHnjz)ueMz_#Rfdl%X}huhbTM3X%;Q^eH@fWPaYLVMd> zoO{zT`^%gCC;B_^mgGaPJM63-SJ7f;Ib4{+>+x0>oWSiI z?@}c(*k)d$cNdR&X&fBkynHJTtB!SfT)ZkTbH_XI+cnC>58~An`8Yl$zwx1rJkgDT zAc#M?RcAXgCKYAiK?#WT!S7~NZ+t|o_YLa>4|(f1EJWYuw%@UMc$yD=S3iqW3lrh0 zcz| zh8HEHCHU1^(d0A;s|D+mBl`iqmz zlL_=WgKx7J6S0M|y&v^Mqh0o+b|Rh&`4d{%eUU>2ntqo*^@L2p0W=X(tO}sUXpOG{ zc594H3t{f_y|l<~a-DQ`GfYZnH^ZlNb~DsYZ#Tor^ma2e2&C$qJCJgqE$|$UX1E+k z1<(wMfm9UDP&9+x42v_+8q}mhMj8YCAI@kuLm)1lL^F&EqLEPb*C4wY<^p*32D zqBZb)rBDhLjd*J)bw&5^&qAX`GoF(LmF&Uivrt(q|LIw&m)3ne|CSe;nwgcRYVF5! z&wP}bOJ#%F8uIFFkhvjKc4{knbLZ?7p>-b5r3=7#RSp^}R`P@#G(b4{OAe@^GiS?5 zy8*Xz(mbT~&P7AQTjK)AtOBdqdC-JrD*G#@^~*xDi#07}B`h`ody*SpHw`xstK5b= zE15u_gl^^oGoLV}>muf4*U*53i&knrasho3T4CzVYo;{w2s5?om^4$H%>rDdD5}tXX1^ z`;2QSoRgjMoplLpc1+ZsyW~*$Z-d5~Gu!M7yJ$P2=cpZ`asKr$*}H{1;D%leX!S^*m52lVF6n3Q2YB@57U zn9t1uG!&+VBk(NK8eNd~0*Vx(1xPzvhz5tZjt~FGwBk1XznWJ32s8f=(+W~!lWZ&h z58I0S_@A~F_wm1MD?H_Y+m`F`KgJb*>TlyJlw@3k{>!*(CK*@8e~in+!L}~f<0SJc z_Fv|eA<4YLYr?+%ZC)d+ro_c}FmR83VQFG=|X zeiE^u6kQezoLx&3ez(`nIkXJnL-i6qhTlqK#CDdW*J8MHWqHE>i3j|?0!HVP&W;s{ zglOmNUWp=v80LIa8MD3^y1s5zM4#e%Khq<8M<`g0-ibXN@(X3-%GK$CNbSUPU!f)Y z$vL|Q{ci1nXi6e3FU&ia^A zwy}3hFZ@LRFV-7is*U6wMZ6kWA6G}>XheM2C{fg_sOBEVxf-J5J>oeHK~$J`HpC>6 zi9cIVpG!8Pf>=uI)(8{92fow@Z0mD_7G6EIgd5zqG5nLZJh-@54V)B`vIzwPAVFps zEEyW_{0z4y-n#psxz+{AUO|cPRp3ma z4er_oeo|fj|9E>3=qQfnUv$&-?9NC_T*V!&asmV*Ba#RbL4lle&cT4lAh5{-j7cqn zG07N{F<_#J25f>wG$tEklQS6ita_z=zZuElyXX7g_s%`_wSjp3 z39UE?C3`|=4Z;w8h&~tuS~@~Y4F*}ip`8bV9Ny50gN2}!M4pM=V~u}0Nv64IGua$m z<7`wjFgp@QChun9)}k z!-U2(c{tt+rN$9LsM($$O4kpEh^Ajx2dFth*lDb>@5uGZKeywOItjzyQfLC1^}QUMN)6H?H)#_AJ}f<-VZ5OomMQ1#K|}(p5Eje2S0^P&gHRK7vmBRmis3o#emV$j=te8>{X6 zewqL`Zq?|m>B0l;^$)eXbm2$Bet;%3gdG5EhTsNxGgCMSuyvNO6rjOu;RgU|j&Ks- z!W{I{@*%VJ-ED#(;#qwJShFEPMTPVP7 zT{T)_k+2b9-y$IoVAdyEhWi>U76P<~otFq#0V*!l%l3Gwa2i)Tmg!k6U#`Dck7~8p z7nzGD#KX)_ghV_Cv=+xCZmiw*&aaN;_wZc09+dAPIz`b=s zA;2%|1+NCa5Prnl+cpSL7pu1K#Fs^gJ+o0*fTtb464n5yUttnfjplCBuWD`9TkFYY zJqjowi$321yy}ggMJH@Uf2l?fY!z+*EZHWU1?avVq+5+f@6eiop4};or`bD&=0)cx z02X|W$wzStt9BuU2zqCi@Ut;u-#5DjsC`Aydq)KaeX<9bj-aQ$5v~J#zE}7Tp!Yts zU&KCTzW}4#h<)J)w04Z3wGRrX0E~wqx<$}6hlDFdS7qqzZ-sAh-uN&khY|Z;92QDx z@evUViARACJ+n6emye;m#aaJwTsTs)=3n~{518I}X73y;op(a0sF7F%{qcnG45`8A zEVNi7=S*1`R!TZ zHqJjiht`Xr&Cd(3k#6lDg=$*5ALI!SLnAzISqC-vpO0c{Mb^%Ejnd|%a}?6uD$}E3y2y(1c{(O!P%}B>l(-m;Ai1i zJRE&pfX{=7eN%1-k``&sO|2dG^}2;Y0dV?lw1lizE`JLf0y`MjePIIiy9?rspylog zTL6B(3u!%qPX9%}s&G$hd;0hu=BGLzDhAn<-q)$<=ljBMcyj1B@CKCQcgR|xm;r!Vn%#$PNqQ}A!d?#t~1kC3!4R{LKDUGtH!eaQef@9_(7|{NF zhL|_$%I6T~uF>W%(Bmr6N-wdr(2pK`3Be|qhP@JI!|>1n<(=|HR*R=zp`0ygx7WgE zEUZ}HpirABobCqdCOraw<8;5HnQw&}L09zGtbf@TY1S~AY)iyDSQu$$D#cMBz6Hbf zr>=L94qwxu?=Y=-O}D&*2{n}6bMKN`reL@d!RR}o%@B&_U0TzhlBtUB`(R@JtqJdj< zsEynKW%!U;09SqB-QyY^=}R60bg+}d0FDwmxKe`L zgkr|_k|YzLpd@Jpzd9{SksN>{WynCks*oZ zxQOOmWnL(Gio0211ZJmLL<}dF0NO;5%b4~=N0Os(c#+2Dz$iTXTT>vGX@KW6x*>|p z#Pf2|MDtzpdoqoa% zBJINewk&7OwL*rlB7^V%tV4fVWNrQ54YiZ$#zayYlIg)j;u18&@Bf`qHWm{rBlc`M zx-$8Qo-I#&s9$AsDY~#S5ou5r6mB}5RE21E#1*T845ribRmo9+`PD$G(`lLNWH#t# zWp#23SDMi|ZaiRNfYtJXq2Thgty$OM4sB(fZ=>2MM`rY-%}Cf5Mk)gjve z%yo6}bzO2c;BVW+WYm2an>Co_4rVjU{B4_9&;YLde(g(S2J zl2NNUw0{G#uIOr-W+<2b*LnL!qz29xHX`2vv~G-E{Ug2Bm}nZD(^BBqqb+TeiZ0um zE=vVcd(&o3$mal$n}Cul!d)1d15m0N83k328O_LC0DE(ER9rO&BIBs1IcWpXG7U7f zhHgkBa9v2(q!Y~%&YTPauQ{|+CV2yp)&lC)@Wa!Rd<&ZTt|dvrgs!k93DiB9`29EH z=GWZ%IKiQ2(YW!6f|(b+sXW`UAiJis>tK zL7Us|4}B09Yr*$PIU z&>dKALHBn@V$W%_9)Izyq2L$&d*W&&_3H&5Ie_l$Meb;g+nbCEoIVEgxI?TwzCaGZ zx74|sx$#V_&d#L2)-+eAksZvHES}fyKpj*6p>0_ddrDF4|9{jjB_~^ik5vzyg1=rK z=#b9oOBP^p#IGOu5(Z9(`+>NFX|MidI1pOgByR>`lUA4?umNDN!F0+%bk^Avcl*Kx^7-BuO(d9hRkWBSB00c{7Iz5qv)TdLQu{vl!mUP3_o+40s z9AZwVT>vbzoq~z-al}c#8%L@lQFRk4H_XP&OVsTL&vm zY!gkKNX}tkE|>@zB#qvjL^O$W*kp{>N9c{oM3XqDP9a}I+Nd-YvPUKApN-DZkFL#z zbQFvQbiHFPnnu0>FHfBgks*M-nGU+xOn>;0gcMt+|KTCde1Z0yMxtrKN5rNvijg1T zvBp6}@E!fJYX%9T6Q^OoK^z%ax6J_7lWEHtq=~r!hX>%9B$$3PgY<<7Q_xI|vJL2} znPfVmxMl$#$#mc>U@n>N)UFy(_bfd7l}?(C+W65&v(f+myMJ=1$j_fk2AkOb@b~~_ zbAf|j=%#sO3}nZU9B}bCx-JI-RUA#2Pxb;lm`^^2_D$9TvJ^&u(n2t7I1*e4VXy{O z7lOn8NSl8QH2txB5nA9WUA2g`iBg+E|5g1MpWG`mf1^5styX_xtITX+epLsXr#2FD zocUkV6-P*DN%b4SgAYPH$J1VLcjG_OHSf$$RIl47D9k4M>nCIyO3`~U*^aNprItX5 zyieyX0TKU7pD)2E5J?X&B_AMW#bxME3uw<}=yEgZ>SZYCMp}9~8LQD{dWvZUhKOQs za#575f;aZ>DA{KWr;~Cq?98NZa=|Ra>55O$SM@K^gJAbHcLiAs(kr(Ta%wl&Sp)Nh zwAp7MpklS>Z|R6tWJ~rfPkm?#cVaEwgV+bgKcTxJvyJ$aKijOH^wf92TPF)W`r?k2 zVQ+YWNi0g>VazCOIkWO&&Lw<-8P5}06TWnfHHQjnIW+@fSh`TCY54OG1h)u?-89~M zO5?gc)c^7IrcMsCMCEX31Z2(4N}H8sojYHMxy~bh<>}yn!*aNS@AkYdzEBNilOotC zCN=@0LD?POaB4@E!foL_`*HA8cV<03evwvCu}2F+o7$tlNSK>caXcNOvp|$ z0-Y1)KTF{zKH_WA!q}0H{u;HPMBQJbpwnoZT@WuG(t=&+PP6FP-RLX#=#$-$T#KrP ztE+p+9@KvBH|U0ssPA5|$C`BXP_a$1IgLrxjcgW~xNdAx!Nd>HyL-tPlcz|%(^OEI zCLO?lH=1@lK&pVZ&Obo<0fTQ3kRB#}h_>AaRy%kj|!fQzIqJ~OnxNE!pIya>Ty4t;o$WJ_}}e}r!f z&G0{LvLy-XvY5kGqDL-~?%&~Y6*O6_p#cx|W_XcvvrH^kw3>`^N z-y|DSJ^|jKB05;TSY*8AHGE%;x4xJJ{ef?z_Z$~;E-XFsDHur$4Qpfm3)ZI2gigB7 z$ERsR?`?7c=~usldGvsdukT=;Vh(+Cm$U&@k!|@$ z1U7eZ2h#=}&Gr6M0@foBMr620`TtV_W>9+#)LhyqbpCTw7{uTv_rbSb(Le5EYF3f% z`;AP3pZhAmlRn1&l>Uwxlm3k^n7;U()VD8!TZR0caH-(5e8ASwym#jKI$K#|7V(;; zVyu`8^A+AIhd%_WpYldv;IqJ)U;-BTdJt<2#k3q@5C58F^GWPI_%eFung=A;p`{8H z-^(~YGOFLQpV()`iFf%wPCQ$E>v))R>0-_UYtDm|ix}Awb5c?@#kIsssj$|t>)gCa zv4a^*p6DaeVK{84bbnq(_iace|IZA<=5!P`GV7gd&?2!yiTEL}Tx9arrxHA9H%0x+ z=2X8ilKEQs?2i9o1eQj7J|;^vx){Kwu}^UfFsgOf3YPHydES%MHjb+~r%pjNH6Z6o zt5Xd%1D;l`G(CZar&_^)$Ih$Jc~7vC6HmW;0$J_>bv(tY+i&#sQ%u@_q+dKk*Vsh6 zKS!^AK;J$G4Sh>jzW~+z z-=oH=G~*puzYdz1_(A&1I}FMH-s+L*1n3pE0)RopFA1*n#DjQ z6Jr)fL9C3%^Cw~g*g+~0 zn_)g#ta}d4^(vu#oy5ZW84u^TGw08ClAj!f?KJVTpO6n|XK(>4iZ`&X`%Dz;BZYES zu`!tXNUPY#*p*(jiqjx^w6lr(K`(YmY=GRZf#dr{?7o zP{CyEb6KotJV^6oF&lz?rjIxfV#YonQE^p+Y3&gMfs(U2uXe&Ok!E`~Pi1|1PfkR{<$i zg)Zcczu&W?02TgA0oX@y&Qn}ZJ0z-hzG5Q21kCnDOSh*7eZ?wRW_YRH97RLzure4= zGwpbGjZU|V!MM4~4oZ1VZ`sB6*y_hR2sBY1TUu$I-51 zi_zeR(Cp^qeUW0IKO=u?irtrUei;2-2P+)lg$gx(=EAoeJfAPh;XPq<&8L9`rZb#s zOHHgSbp8+By>2a7#Sel$(ggQ8O-f6Hlx~6el&;d1e&R4~((f;>1=!*bLidL=6Cl~2 zjtLO8P2(N}h}{7i2ZH+j>9#=hW`9~aNNf!-Gf12RU=J4C0`v(M2LPN429o`$HyC{o z?>WVe0IQsOMzSKl!WCD!9q2f${uR_Hy05ZbF%>ZhcsHvjN2^UiVE`*Dr z0I$QvSb)F?F%6(!gkG|f5g-(QYKqiTnG-3t!qv@4aVkKkD6t+uZj_h;a5qZa2rw&J z+-mgSS0zR~W5i`athg6oPn?$M@_3MqKkXHdCibWEex*DJ>L_sS{!#gys z67*}RWoZj*(6y?pU$3nK9_O#AVD;0lGpdToxL#NlZ0&FGvgj(L8rUKly+|YLa5c~< z@Lf#|2Pjir3Y1qK3E*pma@<0&K1cx(9jG z(%Z0IEwMVT=GPLF0KTs!W&zYq(u+7f3H{Tb?oQH^ewd`wO#Rw=Gw0Msm-46I7F}8E zh}wp98|vsWuh-FuOsNa*fQr@?BLH&h>c!nwSL}oSD1PVFVr04&5f4=Cni4dq>~5Ln+?TTJ6P#xH(w^q4a2bFlc}3X^%z;r%4_3 zX85LqPUlZMfL>#1SVz>XNOKWIJJb>EMOTju!=gsTPGSgVhMAopbp+9c8bJ5!grwtW zsm`GDax}d&&=f_7br!3Il=I9}lZ^!ltclq(seyxIo17d^vc6r8o!_I!IwLg&N``nN zba@xO5Y@V%?_k{Pq7(S(E~s!gt69MGZVKJeQ#|+&7~D&oZ1P;Dt9ygB)`S`&QmRSo_7OW;YC0`H)5O8>NVl~Q2u-C8 z`y$gExiLn(UdxAFK)`~xJuvQR~ zy0g;)#yO~Q;{)5GjC#U9!+ z*bhTRe5RQ|uMHDxp^hboWAqHC%ZG!c_R#;sVQihLAdfB_g^K7Lwi-Ih1MO-%C8Ghl z(wNcUfl+kiXfUd1dRPP9sWe7x0upaM2G8KsX^fZ&UCF0o&@uI^3bbt&Mj=?vW?}FT zq-(N})INGVOLSsTgJ<9@i0&Ai#-f#@XkQKZ(DY;)EBlFKdl^$#lfh^RF;q3wGSo3NHMBBxHuN=&GE6jN z8)g{h7;+3t4eJfZ47Uv)qrWlASlO6tY-a3e?1k-W#~CLZ=NcCnKQpd1er5d5c*dA# zd|*m3wKjD$^)U@IWnsgz>86iOyG;j7M@?r;S4_7|znMH{(Ok+LV6KpDu5PYtZftID z?qcq59%deEo?xDD{@9#rUTcPvQ1f$G8Cxt?ODT)P;Lfvf+EBVm4rG%Gog#nLl{Bqqz)NE#*isw7dc3dkQ3ydXb|n9ON?8X``qc4h8UYuFpw)9h{So$c9u?ZfS3 z?NjYD?epzR>?`bR?Hlde?7Qs;?cbMhm8exBqeQ0?{YnfkF{;Fx5?`0NUoyI6YRLg5 zKPY*vR6wcFQt_oyN_8sLqtyITPfEv^&M3XHjIoSQnd)Vd%PcGNby-rjX4wU0zbw16 z>^X>D^S@YBF!fwux52fhmQ1SJL~1*HV_3R)7hF6ea7Z$a;ZBZAum zj|-j?ygYbS@cQ6O!8d~6Im4YP&hE}Z&f(5%=UnGfXRdR-^N91QA}E1Mm=dqlR9Yz$ zmF%U;e&w=qUwIzl2&og&C1iR?PRR0*Z6Rkuu7o@cc^y*d5?nS{l&hMnmaD64sw>Bp z>)PWw>iW)g+Vwb83iS&O3rz@Z5ZWoUU+4#+i$d3i9tb@h`g7>5(1)S#!?1yPShcX) zVa>u?g|!bG5H>t)blAsXpN6dt+Y)vv>}uHc?67-bkHQMW1H%)-Q^Q+_w-4_VJ|#RS zd`bAa@EzgbhhGc79sVN198oI584(}RAR;rOU&OG884-&kHboqWI1+Ip;(Eld5$_{y zk)d~q%Z%$B*FSDl+|;;vam(Y@#chu}73Gub! z8^^bZ?-<`JelVLR(H_}iQ1)rX-GJv7B#LaO#CO60QEhfQM9xz_QRHcg-N7QwV^g+H-R^9w|_mRC@(D12Vw zTb4^?ceODNrn0_p8NXtk;@YcVfsTzpL0<*SZXY~b0DUBxH9PKFsqnWjGRR^NLii4M z!y}4T6!wLCJYoHn8@!a-kJVP1Gok(O3Xv%cyGVAi=TlhJ^Ap%=QdAz6D-{*s zQ)TPtc`QxAZ9P`577GPqHKkKcwd%kP8G#`+%%g?eqBLA)0M>!dy zS|wTaQS5*D{v^8V&!%=3-&2y=M-s~wkxm4w4->ii0-L&o0PVYAw+Prmv8&@HwS~lN z(qV}`QV2WHjeo*=@Y~ZB_BG$H`Yy?O-ZeW#V%v1|yA2AvK-89soTRX{s*)p1%E(Nv ze@307Y?h!CGm_6F_Pb8Y8}+b)TqX~o!6bHUzqi}i?xDK*1 zy$G*UmED*0S`}30L)?{#-KAm4BxkeLZpGb9W+8qoS9bh-=7*oJWvKO}`e!n4us4!l zH)*L-(5xBS{!?X}x?7PuDg~eTu>whcgz7)IeCfgOjV~o8rleF(yp;05CBN1>z)Upe zOadg$WOKC>5PeJXe%U!zUC}6?)l=L%Fdti*cZOw`3}V9+o>`bi&MN%MU)|w%bW%A)e%v~~Pme)a zja^ggX!yxsu5ipR>bQ7yQY|IDeEG)P6<(J`@Bo$`BCF>W`;z%@Tv$t;tS(UO_a#pg zKXrigEh_ln(xnIZev+8jI5jcxGB9uF4d7Ak5qp9S{xaq33KVhdw8RWCFjC7VtSFai zdM>i#ts)PWcr~Zxk4TA`JvWcg?lZ(LX4NUtb2G$7OWwVYZk8wUj~71!?H%Fs?(_b9 z3{Nl5J2eYIq*-FUT61{&u_1iu7~VgPFA9PSt7_cF25J5JGMmEMOZNQ=pW~@F7rnRc zEU{VzmZmRSju`?Bfe|`9Rz4gaB8C_Eu~CXU5N=3v)NqbLq%;Z zxnwm$`kj}@B6$BwJb^cK$^3*GAPpBQ_itY}q(4|@&>qPXBs=b2ID7ME6OC7`lB%5K zwOze!q}Gzi zJvK~ZgVp&k!Lvl3s-VbLaYq%i0?xnE&ed8tVj-G8#8ce?b&f|YPEkMOf2w^kIvr6yX141r zB$$Ohs=-Th|4?XhF!;P^#d<2-c7xexxHL8ZuWMNni?%Qe(>V9hHX>( zt9|$yw$;xA)IEg)H z6;X|H5`X6;WBV*&g($F9d7$8%#YYMkSiFk`TG&$X%th)jO?1dDd?;2;YhR<%YgA~S zWLLXN+`|X*9iDNX@vJ|#yDD_CF&3G90$TTpmx_4SDUG>#d_5Sy=Yu8BCvLMlLSdQ8 z#sl=r;M?D|k(VeKX|kmB%xo~L%hrH{(gX1XHB5-ya{4)_O1t zmtg!ek-b(NdJmeq349B@lS6h$(nLBJ-g^b?RdZZc17aeTut0#W@U7++#@9=gn!Mq3-bHGNh{Y* z|0?(%%JI?Xgn`$7%Xaf`AvbEh?y2lrCSG0joeUMZ&v`E7WLBvzt01FSKd7SrwM7@N1YQjAq}AaE<1b*&-zy6>=*dt~%tx{qDS# z$bDorU4eflzx(w$`7(s9WI+<&63kUTjvw`W;@Qh~@W$+G*E}}N!K-qc+6($Bm5i#9;=0E&N7&x)nXQfx9WnC zT)n_XdP;n$c;a8uw~NJrzFU>$W7n?@+H!oQ+pN$5OT;P>?3LsR_uLlP2Ev}H3pH0C z(b57w*ul!H?In!G?<9I}iMXe_T3dnLDx1ybNRDR@)L02SvidzjGp-8)PRFo=koSW_ zYPds`KEZs>hZ0tjXUUQDb6;c6Kqtw8ND~i{X5xrmO(Ep?K9?Xz_L68ByRp5Q1uAr* z9jZUS+l{>{tDpaC`VcO$T~0x+s>sLSab=mpTeFIM^E+i`2wOs!bMea`-v!Gwx1=#6 zL7gaF{d3EyZ*ByBqh3?gDegW3KS6jp{{m#zzd=v+Cqa{Nnj zTJCuS=Af!mB|5Vd>>7GdF=fduZ&cYBNp(6!S2FrTLj^iADVAb@K&0@-WD-mi=Bw2tKA+cEsqvM@RTg(alPrs8r8hAv?TcAy8WY-KR%&M#rG=mG2B{)vF=7kIVwhy7 z>Zjsle}#SFbhA3rqx(v)rfDM~G(u_`DA8nx(NX`R;%)`Mz4rU$x33Ss*t_k+8Edm3 zEEJC5!_+cT9bh}utbZuL#Xhq9-TdwtC7PLed`cR&-g)L{46mw=RG#N7 zdgf}~q+OFPO$vmNJtwJzQ47d0ACZ4wP!B@WJbqp({11%C;*<1cv)UW+~F+W!Ts!K*{yd5#H|nyRqM zygq+|`;~dJ+*dep_=(y^S;7Xnn<{FkQcz{Ste#|x;pKgmSTUS!mUf@M)(tGLE#|VC zd_jqN?O&p?jIZy;`q|f%{4CG+(B6j7sJo2BSfk!o_&HFqXK85aTJXQzMI9osj=VoxB{yw*{6gMwjHI$VNy*>FSE>C#?yEIU z?{`!2RO6>BC{s{Umh0}Kt-q9Kw(@);uL-X`^XZmgV1 zY@?bi(Os*>_+U~uqg(CjLEQh(1}yf@)vL<2^WVKX=3-g$MmpGOEFW)|DpWeBwvwiX zwMyqD+gs)ClG>b=CG4C!9m@=ud~8uXTm00D5)ED>mRqhEqb6X9v-vJetZP1E zXD}2u$6|t77P9qNcLRlwvzHPq`GUK+7X`_zuY#FiILxvJQ)#^zmVHj)a!LX(uXn5?3$*3484lH? zi8AV9aleFVaRt5;DMm~4wUMU+MjlLI@&hr09Dx~RyP_E+)*+yARfAPyCUu3v49Xd- zbYvtKt#q)8A7gofq|clNw>m1^WbG zs^Mws=}heEVkKP@)SoJ>Q2Lk;<)it*Aij-tgHOQ~GQ0VQ!f!&x9IMdB>qW&;Q(_gJ zV*Ab*ocvf9MgH*{^*eScG)`+`}iS=i?(a68^M!ji3pN*Q99ifM6u_2<#%(Sa}iu~|vZur^gLoV6V7;#3A zoIV6`=&eX&U~eA5oqS9%|ClGM9VOYNHo;pimTyV#_RaU-@7sO;{C*ZFae{``Xq-UZ zxhm5X;3{DHG??kq5>}K>3GzRSlJf6x>t2Odsf^dUyXeR$V~|-*ljwpdV`%4x+9d2} ztO3{bgBXQLFt-d={@z2%<3$?(G#JDHh+ zv3fJOa5To$j_kSGPC~<0!(!}n?ZsJ`InE+#Q*9kvR!d5vT*UV(Fpce1;X(r*(-f;# zaT3RJ@WBRqF9uz>wvCMs!CL7+9!xyh<&a8T?o;GdC74ybAI__;0H)NVteod4VLld| z#pBG5i73`IFbNIe9mEf}VQYNkJUz4C9kQt!_W^|lqBbm zAlR7grQ`m*%a?x-x{txSGMH$0%&6ePb34|;1A2J66Z^kr`dTvc*)Br6Z4_e~`l)%W zknmQAFz>FyJ`7^JEa8 zRDP=zEii(r>Bcx?xq&QLO2eq)j>Md$@>Z~i6)dY@D;D@y%Kr@FGOJOUSAxtRz;XP} z6Xbjo*5eAsYZIw_r#c3dRO2_6z(0d4UK~|eCH=bq7K>RXQ3n(#0xgU;hWlurHU1(E z8dJ`wWQ*`~S^IEM^`so@hf>gazgNr;M zv=$G;jJOv2)}@WJg*!!_2vYG?o3QGyJ*}cyb$rnzF7?*{j&b}VSeO8j$>V^3B^eyEPGtV+;5^`%}ca5N&U3+pWK@gVou z0$mhT9q@)owz2No>Y1GXI9@7jt$*JDK6OJ6*m+!ekFuKloZ?_o*xX4H1o<4MziDi( zqDH%0bz@nDUFEcUU#(rXa%G4NA*ipm_lnH%jYG>y=AGf<)x-wNkcEsWKnEnoB?wB@ z>(8RTe6w5S|7ZwKBT))mP!lC8-oMcR&~5O7Jhtpa*qtpbG#A+ zKh3QnjjUj-(^@Sp@Ik~5S`rId$ofZ&OquH|r1H=DU@l{pn8mZ|)s5pNWv$LX5lnfz zYs-pt)P^4X)rMFhSdO`A50BMjhTfhrFx5#S9X!>O%u+FZ#X8z@lC=9ix5_6jTsYpg zX_I#Cnz-aEN0{%QO^@@kbAcou-dRheC+~qJlomzxx6|J%7^5pV?q0;2XR6Gmt7TkR zL15n#Hj&+zMLs4`;8<%N15v%-M}*DeD+O8?`U{~$+Xr_WzIOXJJ9o*mh25Lh9y_sN zcnA3*Tmv>{$?%IyJzGR)w!r{Z1CzlHh@bg9&R65uhPykAeg>m4z&H=#eB-AGR~oM) zylHeJ*DG%XA(H=H&=;&3MiH(2Up2g=Vk8Xfau=2qlYz(8uC~u(Tx_VXP${ zVFgP9!b+AZ2&-FaA*^jlN0@2JMA*{O7GZnK2!tP4K0r9yG6vyT%Q%BE+cLp24Hq9; zP(RB`3+ipzY1xf%pXCRH=Pkb>d}Mio@R{W`!nc;U2>%d(H^D5RK!UH}i?F0n5@Bhf z3_^$Ck1$XOK^P;%AS^GGN0=ZaBCH~yph8WdCc^9_p)Npup#j2XLNkPELK?yrLJNeg zgw_Z<37rsj5xO88C=5b4TtIDv)xtW2UkRHGMiM{*5k`;*gfXNc!W7a3VH<+lla8b( z!ro*w!m(sL!Wm>H!g<*w2Vfytgm69i0^vrYC3lz{LwJImKzNdzLU@jxLwJE)KzN1x zjPMS*gYXG?Z7_=_kr<3(d$B#j5#n5gIpTbTOT;Azmx;>|ZWTcv;u-NQ!b>9PL%bqp zUjcY3stDbp+hDc|*8T>gb&wUAS?^l!BD`;Xg!@me&vE|7`o>_i8EkfhC2S=OW?P^w z2&gxlh5pbT3T8&C}m5TM#t*9J`6l5NQd8`>HnOtGb812nTWLzrR9 zK-j_twA)(QS|My>YlExN&wyOwl*lr-aV|#$`i3Ads+Dc;$W@&;n4dEi`fg#(Bg(1{i@=Bm{S(HVDF4=`J zR*pp&FN1L8`f`1PSx%Nwb~#-}LFJZmOM^*nBcq6NTe&Tsc9**&>>;D2^)78N_@GCZ z)~?7agbwnQJR{G^3-S^;{SDcFA}!9AmPkvbWl)6KDec3D-`^xRlIxD>21BSJ$spn1 z(y+qtrJosbKA$Qo2VMCz2q@`>$>;aDfG-f*u7X8NdVz{dq?k$D~i{TN& zWyBkagBZ}!4A*hkaAq>>H0;M+lYah(@gdH&42nV81gs5d8{8mF4USa}25+`kub-Bg1(60ufMrB1 zk4Qq;Tz?{lzx?+fuN1vuEP5kuh8}B7RNKgPQHvr2BHQ9064^8Ac68&YQ8){U>>t^% z_}^KFouj{ve2!Q>qwSHMvm-nI>)$jgG%^!^K>U;NCy^r~Goz>eoy5ey&$L8~5{!&4 zjEu*B2L7G#c3T|URnN$+(0Qp8c`)*a$m)@GBCkc}YX7Lcf2Xl7vcbB@b$Xe5B6{&Z zDoHDVeq`!}NYYBH7js=?PlKt=w_2Usb?kW4(8!QX7xl6_X?!_r`0@yAX{YxMP_#yC z{r~)V`+3jOqzG#Q?HFP$O^-!bV`~%&*f47(4T`Y((7Yf#m>OiY zTZv($5-9d)Kmt(5bboQdw_DZ-ajq(3|f4o<6K)jdXhR{<`ly``4KUy@$M4mozBp zmyMI$q8kW9ygRgWJg(^NUijYotGAhcHOMS)*-~o^=>G-=N+LzZ$&-qkF#g` zS*ka$_$))a{*RxcUs2x=tTuWf(AtH*sbekY>)lfn$y*zV&=1O5BXqp_cvJs+*;||1 zQ>{T7M(icMJGI+dsl8unkoIhg=9}mbJS8;->Z|+zgY{#yWui5pw0D7besLc23m<#u zdwrvphwLV=vJzAaR`;^Dp;EYYntmyKuRq>d z&Wf!oTY$o!RkQj)={Gdk+K8@>Mj0!$vnJ9ZX$a0op#V0m@cB{JQd*H~Xc$kYJ0q;o zG$;;l&kwT>TONz5EW(L~z!LOXnl*4a{4^N7^pgtKGTM{=^k%ws2Hl=vjn^Z8Tp7ey zsVWlD-hgiy;4WP2mnEGVO%$X5(7#cPu7OHbMOpBQg?<=mtx2D@0ha9bzzFm_1~#(V zP2M~7c%Zcpo!PMn$<=AKhSrksm2Yif@s9Amrz?h`3+J`7Hm1(@)}YdbVB-J&d1q=g zkw86Y29x)pc9BfHm%P7u*Z*BgtJV8Td&m2Z+RIr3Ox}@tn1R6~0ZpEGi!Bz*o*VS5=PU>k5g$Gz5B9I>KX$_-2 z+o779hoS7idu2Ln1W4d%8hB8JP^%v-1Qz-MWuhN?Ykdd$b3g)^qQL6=qv{!$wJ@x)p z^z`pA_OCPVT)kOM-c2-hu(iC8UNrro_cfg}*xH^(4*?=lhgy?q{t)0QHVpWzH`F>= z!(~-Ee;82EvW``dPye0dU7876GI{rE1J4Ytg+hyZT;K?hH!eeH@))aSc}4WB3nPH= zyg+LPy;mRO(8v^P4?264^&^dD(z1<7m@h%NT!GM#bWc0iw-bU$f-(h>YmCPCsih{7G=uJDVP zZ~f7lXNC0t-v!eDK^}D=dvvv=#W>JXNuT5R0tYA}DSLDA35FKE-2c7oh9po}(oG!q za6H8E9Q7%ILz5C^!*WQ4YYnHMTmQY`iQ#}zGR`&J#>98Mv8!=|@uhK$@wGAEcm(^A za^o3`&C=F*UT7>dHU(s3LPAV|wg6joQz&K!8%*_WXKi_=ftZ{<_nrn~MX)8K*a0+V z6h1+}Fp?#j5KHD7Drq6;&L~7{_wjU^9v;%)((XiK+(rt9K!Zt3hg|gTHkgE6-W^D< zJIf?;S1$6(1wA$LK1W{9h3s_iG$g$qNzX@An0^-?GT4M2-W|dnWOx_H zFWxL@X~H?g$OF6pc+H!IET)NtfL`x3D`X0T57Nm)I(bMZ zk4RoOk#YC}XC-m?XM5d9I1dTuAz{!qL^xlxOD+)g88X;}4CW()O~_zAGSCWn9*En4 zj5Z;o`N(J!GMaC&3l~w1OE~U$k0HZj$ncof>PY{X)$Cnwwcz*>=Xp3Td5_sjde_^s zOM$#fSY+>cWI9Ml#jy*=Ss*#jTU)G#%xdANqi5P3nbt;zwWV0^c`43&UQPy0l*Aj; z@J6a|9_{+0-nOa2L!jIW)Z1|QdM~54mq{s{??iz>aY!i@DWzsx@sc4C>qIHW97Bp; z^BBO2Xn;yM5^>bTb!{AVaMVTp>UkrC27nELjYfbeIGW&SilZ5h=6Ie4n2zU}fE$p; zPQ1Iz+g&&ecox@rD2jxJ&6W|^ap4aL34kbu6s&`s5{-rwu`bYD4@Z5RC*x>Wn(A?0>&;}f#2PUgBIKnnVHNy_WNkc>9SmRhjN7&YUYUqTe zuyuz1;0qfK!?Upp*4FTWslREaVY2CS(^|u4`ij^ZtcdM2tTi{q%GYLnwQGyM*mV%g zT#F5dEtM^m4VNr!u{?Fz^1|}Ma0PC`gA7+;H4|d^Nnbbm8P+q2hU@x@(M^5D=oX11 zafaKZ94TkGLlQ`W;V#LpMUo7^kj~`)V(nYtbgI_>*IxVb?mahS%*_~MF7M2|^WH|h z<2ojHk{lr$9G{-nG|Sd#}s0*81+Xo@WgZUl;?8f#OT!3gZg#f5x@Obz&cXtl5tbG*W!) z8SNP@4tZ|$+$g^DjQ5Ne-+S)x+$nzWEb}ZAKY3PoR*1u%Ri0JiXGq>`5Jx;edVUl~ zJxB3<=2tV(Occk>WV4?5%}h5lMbs=cBZ@Tp+GbzHG%qy=DwcVLd8LvFv7EbvzlkoB6iUI|+ptPM(I`qHADXYH`;ol3+yY8_RY#~E>k zf^R)ytmr?e<`hEKS`a}Ao`qTOf zeWm`2{;Ix4U#q{Szp1~azo);iZ_z){x9T72yWHVR|4QGlf2V)1|DgY<|D+$$kLthL z`fvIP9s3Xr#ZV2+Fbt1jB70bFF%pbKNIfMRb&U)o+h}N9WZY}a!k4yZjK#)s;}zpo z$U$wxSDyq=fye79^R)Dod)h$U_rDJyzy#T3uEi(aHvwO)P7CGNmsgr<*wX zZ`XLHN3tXN5nm)6i9}jO+D1A@k|XK3cc$-`k?xTre_(oH%k{a;jIwi>$N@ICd-=<> zETwFkYa;z)u3FcjWt0EdL?#`(*-Uk`QN45g5HGD!pfyoledhGwGJ z6X1t1WjXN6L5a+O^_I;*PkAkDYXPA|>MC1d>hw0m6yFh_h^xil@s)PG(heQwGs;9| zqWC9-5#JGeluxmOP>mIYA4C)@2suicERgM#mJm+tuk@!LRJl~XAXh3k%T;odax1MS zC=bwTf-+N0SGy>WsJ+$R$|m(;b(ZoD779L6-dFAY>M`k2PpBtk7Of7*23m8ixy;r& zX`N(4`j9Vk=p(&stk=`)$@8e2l}+f2xonDW<;Aj$x>MQAC^brDb83CEh0)q*En6Dr z8|TYb_2qhN`@_)XmCv9^GTe&h#BzcExw_ z8{`Gl*~)I7n>;tk3q7}cZkOFXw#SwiLBR1Y*~0_9@A7Z>GQL#yr0!Qsc#%dtURrCi{5a@Vp@}@x1MMTlU50@i^I!I$?RaS>Mc-SDIea_RFiyGP8{wVRke- z%W-Bmv$vc;9kRUBtTczpDduSNCLD4&*_(?RR_l;; zNPcL2Z+$PfSwC4n$?ew9*3WW>^)KsR@+0enbwcj6s;z4IaU5pja#x%hr^-+0Gr0UT z{-XGc+$=kd$pLdckxMeZ)Y~5zX>>aS_Jux5XUs4jSZ(N*yIt9L18> zcu3BoSt^$)lay(g-(z`8xrWAcWgN!zPnFwgkxO}jo9K2l(XPrbG|0;a)KF!Syb`7u z^0Ze;pB!q-`(%l{U(S$!lQZQ4*_%dxc{N7=m1xnckCO ztcrD!FQ^x){pD}8DyCXAPf+X8JVDK;~~?E>ur^$qPp?Lu`Ut%s>^Y8Pu4t8dY?Lw%c8 z#neq$2^+8Or6n-+3*r{_U$pF{#cRK4)mi}-xl}Dg{G)|wkxMHjF47tk7is6wWX0B+ z&}>DE&?=W!hE=Xotr^W(v=(|Ry12ZGz`!&+Xbo@X1u|F7U?l+Wim(eo1@K^Rj2HHVa&_Nqd|YjkKr156J&2 zd@}TF>&&3pSNl8K{ZL)Q3epRDin+>MtzSkhTOUL%TfdT8wq8jsTfd50wth8Q_91;3 zttsi(T3J?>elx8m>9^22l71UaP4r3B;`KYI#p`#`a*;lnmWA}YX<100VuJ}r>-Si9 zTX*Zzta~h+?P@)0Ir?}hSV8)yzQFq2`dnWK{`pFOn)pY5*80x+PG4f#hpof< zbJj1`FZxpJSL+Rx2eq0wLGutNKydv+tvj$gI05bZ zVsJqM@qm_0Yr>kJ)`YbnEeS)k9sGb)9@my4ES7||!NeQd5ax~Xv?Q!OKuf~fLpH4m zYmRmV>{6v;nMhl}OtVlo^f>KlW}PL>I?vJiu(lNI!)ef1$p_N{}f>wI<^J%45zl>IT z^~)lB0#TFNz+)AFscf|hTM7l`eQRm672OSEKbtfpmJ<7N3- zaP|LcN{*G-)qc$%=TG*h`?LM|u>?yFyDkJc^M3HZ`T2dpAOyR^{)oSozpcNszq`Me zzdxm9b8?e{F#bVA|Je8+L6{-ICH`yuqx|FjxB2h%Pvv+I&>ff-|JnFw`=9bJ@-OwT z^uOX??|&<3Ba;6;|2B@=B>4Z$_>cQ{`FH!j^dInl?>|E6`j4MVJs{wQ?uKBJ?Oy&m z4H&_`=QaUHAA5EY=!cbEm7_|S) zV^##Z1}g(S0(}Al0)qoX10w=s0uurg1Cs;O0y6@$0&{|M1M>rm1Iq%-&~G#etO~3N zYzS-$YzgcLd>Ysj*cUh$_%U!aa3Uy!W~`6lYYqPgPjda~49F~U8gIC5KE~;_n`x|3 zooXGYS7J@Y)GBW(C%fph*1Yf>g-$O=Mb#oW3{7Z7tq>Ks(=pf${ymu$Cm~cN{!usz zIg-Ot*K`Z)l;CtU+?lXd!MVYO`pfXF`>Sx7c6YIF?e;5!ZFj z`=9#R6gMj__uJ&$7YrA-4~9>fz%7B`e`CDO0>Oe^#a#=w756Ckvbc}eC>~I-E0$7z z5}D$`fsUt)ead;Z%fIJz6IgxffANTtY^W@mP&~1Ca`Cj{8G%E^LyJfF_nhhL-{U?u zFxI`EL2Z7g{G>o7-fRo(tl~Mv^NSZ3FDqVEyry^qzwsuzgD@@rvnk$D{Aux?;(f&j zi+?OWT6}_H_@vL|nB4-kOb|*{f+fb;@|An#tAd>%} zFUhylo8U_=7QVfdu>atxRz!g>KrC8)7RJ6H?aRt8v73d`YHp`+t@b{Td-h!mEOhy8JK$xvm&q}m|V*Ys^yOP z_YeMo37B@ktbNlr%>CyZ8K?+U;GqL+8{gPK%?r7&btVl|2FChs@l6Vb;X2KD8wa}w zyZfg2rqC58_G&gc;!ggJc_;g(pQ~{HfBOZJY~Rd4l52cbzN)}XybO$Qu5YgEI-LfF z{jq^ErX_)qfswuyM9(l|181AmKx)7S@vVmAzc5s4zIA7p-JkUdWCaG=AX$Ojv&`Xu zYl;H@(fBq7ig*tp?IS#C0-Jq@sYmc_rEaX~xbHLHUf+J-A>ZcHd~EVMOg)?LSm3k3 zPG5D27T6kC7X+05tEPmj?(_=#5C4+wKT%lFvi4U@Nivzh>cDE=!b#gWb5NRxO43WR zz1~3If&(S_{v9PgjJNAb>@ZCRN+Kn#O4^omF8IErdr7a7{w0G-#+N)$GNfc>$+ab; z;J&To&XTF{d8A}^$x|hZN|xfzD<$ip%Im#?BPH8Pc9ragLa!tK1b^d_10~;=9D!ml z;WzL<1S>U@Cx`(_D}QA@TT}@`R8~I{~DP2{>A<+{tfV3=1uUg!gT|DH~2SsGyPk5 zHqkBU!?@TJ0}}d;KqbmL4*WARFg7+%^4m1|LJ82^=hQqU(9xY}#3l;?B;*dwJQ$xo zX1e2GY}CUTclK}=8=h!Tat9+CWAKVCYO(W@0^ukQ*B_nc}rkYeiCYH3JQ1~UZ4v3pBq>hSQ1!)*1H-EnGb&q z(s8Kx&KNnG zq4atM?f%BArPt>9bC38pktw~FOkNJT+<*Q}xySQFjlYqXKra6#y5^9%=>(AMBd=Mp>`hTta)Rox#dmBn@HEvI5K(DU?vkS zjSCEfPjcRjyjgj3N|Rj^nix75+D9hu$GrKVi{1Zu%W#dEedNkpmA58u1N-5B-X_?C zd0X;!`|B#`7+d%47Y!?=9+pgKQu-&KMN)o*CN;;`M4&( zMSewo$NX;jJ)sJ5V18x(u>2*aBe;xi!;(t@Z zhr@?U!}z~7e`o&m{F(Vx`E&CZ<}b-#k-r)tHs){6--^3C19J<)?lc8j7Gd%~E66X% z4$RHp%m1iV&CNfQe>neGeszIXV8<0C7o_7>zPE9Kk0KYeDu}?sgnEQ}6tpd9%h%4u zlS4g9wSw-Y8ks;U(SlwD{c%k%7*sH%G(BcQeG0BE7zH{CW_+km%oIFOFcs#uf;&MU zAm2a}yI@zrN}kCx`xQI_Hf%zcTm`e~PQg=r|Kx1HU{S%+Q!#L#;!~`V1+PGh7p{$cOP7O{i%neQr%`Z$UOyz%B;PA9USt zH7RUCZr2o6xZ{9b*s&0xBe1bF;u^v-MPZ`!A3YsRXuf+b?CD-l(*1?Ep!eHJrm!#U zK=)r^CH09lW+z<>hZT-29LqlRe<$MY3{NkdS!hoxoL)EuwhDG8=-ki-GKEWE7S>!> z6s|5@9h(h>_lNhFMuJ-5I+%^PZg%e!?#;+A+*-T^bSJy_rY|H@yd!-f{PlWkiD!l5?)xug-wNy!q2CoCrhp( zA5}w9I95IGwJ1{5id=3C+;8i~I6YMCAJTuSs55N$qFzN$h4+T{q74isQ`Fxs>W|AH zvM@u6t_=+hMsRBcnW9leqlm(eukpdPcvI1Bp)sK`MRyWq*VLNp1EC2qQ}l@IDw>^< zoxY-IX+}04UCCx{xH2P~46Zgi$XT?=^^8#pib#k^g;unZ3a+LA_r!{iuH@%Za#3*? zy;6M84dE7kuzS&4Mekv_9aOZfXjjp0HeUt@1qX%K*+mD6z7MYp-d3CtybV;q7)3|O zMgNPAvmd^4;p%?png;(n$>4hzee?2@J9IG61Rs_#&!Mkc#qEo``bQM^DDG1{pt$i_ zK7;8?QSq42L3};3Cl*f(o5hpExq&97*A`EMoe?e~Q#{L8fp0b`;xJjX9zTD7YUy)sUtuGkrN;95tlCKHPe|#1AB-0{n`YJ+4ecgOCD0TDo z#8-`hz;BhlVZM<*M)^SV(_v=9Q~@so{rXn;R{PfZHo6$^B;o_W^Bn`Qn_8lk!~q)t z2bJWP_)5ZnJ$4Q9If;9QoPl`GiFtr^4%DEY1MEJDc`!$~HqZpfXNlGaq~*$SO?_f%%gRo8+b$6K2v`;aqfa!ElqX-6C8O?ilWdAU(rd>4k7gja-DgS$5((T(BF;jQr98s3@vJ$g1C-|?RY-9vcT zv2Zo!$N(^yA7_{5m-aY>&u(N2cchS4R2ivX@w42@ym4sa^@ae91N0^KBi%>B=P}}EmZChO17T30gdcGU- zFH`lYXgk=b4fp-1d6jEE6E#0uc=gBi$Az7#&(Y`L&lCC+B1NC8&qd>T5)C7T+eJOJ ziv@5m)EC14Y5i#tuP;JNvACsJ+)^MdqAwTcV-NTWWM-wlQkZBjYw@sk`a0p)Uqjnb zxz(s>HSa-C<9+>oG*|2n7l}4Dh;N10hx&)`+J;6I$BhbNBWP3}Zd5uN)jpwP^Z0(q zh8)ljh0U8_B8(>rU5j^au{wv(S>D7?_fq`fa_Ljqqo#i5( z_Lhsf*j=6ge>>4g6h3S-PZIHHoyl<5MH@}$Hd+^L6f*YMdfre(&`{e8!{}gi#0;&I z(Mhy7Izvl@VRSVv5P3#7<3hN*8{I_(HmYAFS{Xfzzrm*`ns*a!-i2u1H$kds0(3~^ z7&jZYz>W5QEB@SO+=f558@G!##zbSHXldBs1PM-<3VJVOokFzzNMtcrv}3Nw1y?*O zT4P82EYSkIQH8sYfkPTIhomxx6fuVcnM2ZOr#vL7uvZ?GIK%{p*e!7>_mqQT>%54^ z=J^gnV|LN7dH%TYcz*Mo5IVNe|1OfSmA+aec%q)DfOt2UDS??O4$QPgB+>?Z;W0ln zw+Y?c4)*exADJJCO!H&#m<}GRE8?saD@D|?>RI(fiIr-l+W3=ZrQuIHSg;PWpbi%F ziTF57R)ofk=&ElpnGutj5j8O4W6X#uc8gvu>M%PtWp?y1I|i8@>o7a2+-I81f-1A1 z$}E_s+u%WTh{S>w%z{22D7j!3)b)FHsJdWAl=^giI^4vLx<1p^XNtzmm8r~?In0%*%#=CIj&*hFpzAUV z)@2qnnc>P=0e*Hys(+b#b9TFvm3vg$xFx%;8v)xIqvtw)*UyJQ5u-!fgmwlx} z`9>|a%VxG~$ZVI*Y}b(4PU?sCpAnLnPuG9Ze}S7=Q0m7p0=SGQ^{4^e63mXeAq@#P zn9@f3)(z->VBW09yqV0rsYCiB5npDAHBDwsFSBMnX3b<~%|^_cDywd3!VDV63|hbp zdOove17^)QX3cVDP3(dLYsMM9j9$XdF#15tO9u0%#$1`j?5Ht2wq|y0&g`f$J8I01 z=P^5`8`F*Z!TS$F1xyJuWqsoj;}P^8#F{OcHJcfZ;fOFZWePK8J~L&hM}dr$YI_nr zb-<6wp1MLZS9*Bd@-S0+m?=$WO4ZZP(@#X0HC1L!i&@k7x2zdoi#07~O@mp}V%AJG z?VTnhT$w`+^AqzEVKAS@GoKbRpB59Jib7`7VrJ7KW>bSlN)I!r&LgFV8MF>FD71$B z{wT^qQMzN7EEFFR{rzzdG|v1!%kw3CpcOzU*}p%|w=na4d%)dp~E zJnord%TIKu&QVE_SdRK*|wr9;pP1B!+Q3Vk>5zmO?Z z(;ziS>LLXQ$HM;~8dSJQAE*2^(?s$yY!WOnVYFI7^0G z-{W-%R%1FzvAEbh9XTZD-h)PDBcZGK_DxJT5LLJ}s9Y)9UF4%JV2TMe-1CX5+nDYp zDoIU^BBMlgZghGHxs54Ixhyg9Bp--KBg{ukNx0oswA=X)wN1s?B@cjpP1Nkj^lGNv znO;TI*g(|7iRwe7j^vmbjCVN&sDnTlgQ)s1qPmx;m`2S_a`6DISxZFb?HBRFUR`!wN@K@RyP zhfE@Wy$889c59a?X>ijh2Z z+64LoeP=}PV9JcAZsI`PdgW4f|H$+!rlhh#(XU{74g1U_D$ggXB{RL0=_I21KbclD z~vVA_tTI)?qBbpXj-Ocb~bRJoFA zf1+YXHFQ2HHOiHEoBuaH?JCbTCov2BOAmMAb$_ zl?#||Ar@5*Go4RNsJJ7=26n&7G?D3A=^*#7$frPelaG9e{Xb;7k*L@s=fnRsn=WDx z-&nxZ$Mj>SZxWS**u9e7&$8R4^NGt9cUaoM?pK*6GF|)o*YtRD%ZJ$KL#7*viaoy{ zrpNzo<0AI(jRj17Oh0D&CQ&(v-7DGsEW4R%E_bw`E=A{7qK~9<(s)GBxuyXj;iEsy zlpDDIK(rb@++cN7J^Fur9N%Uh)wrlJeWqw*nN~4nw$!Yc!G^dz@cc_{^gUPhw)czHX!EuzY9qS8|x z!CjNx+nGMk)a8i2`?y@jWnjx|$V-jm8(b3dUUrYI?uo~=CAabr z`*7K)=dt@~ru-^uD!adBx|66;$nH;=a{s9FOUTabV-r=~a=M(fS|Rs*gLzu*&hBrR z?xo_DL)gv5t}^>62K)48T0vCh;#C~(bd%VBtTxD*`kSXkM1Ji7Xj1FZTtLkss!d?} z7}GnLIz-h?On2!!oB=014bm3#-*1`L_1upDbv+L|b53|FBI-}%t4X3bN|Wd{9BwAl ze-M?o(}U$$c8~Sk?@apL)5O-2>A!X<(;JvhB8ra_M5~#8#qAgVb;_eI%Gmogs>1d6}tr<)kvVY!%e7TG$qCLzMn)4ur3mM-$*$l~ zPY~6P6V)3qbu(O_{kt&jM^xF(Ded+kB^9%-N3+ZaiuiUpQJsq#vi#(B-!GNQMt=j3 zOIOTD65WxrDG|{7oly$(K`m3v=Ak#~j?s?k`5b>Dhy4eK{RcmAH2G+AsM@4?zH*tf zNJ6)krkdwji}CqIQF zLp-9H12r|z5YAxT%ntJVy0i_s0n>@DVfqT+{hH~o$kV5~S>aO;(tj1zgA}<%%A@Qa z%P%ul2l|l_JgKK)o^RhvFQE=$+K6B1aiS2cqxbK`^adSBK;;G^=W|kS!7gO?ET+sA zax%GNkj@_@ayM-)+ z&%5LnyQD_%Au$;c|0K73h{JrybR$tI*!=<1zD(y472hf!A)W2)^CnSw6}wk5Rktaf zoUN8Q(pI}0_0UYw1VM9%s%@cP1#@$96vRlb3X8%kmS;Fo zq+}#PYgRDHEOf3)g2t^|lgx&i9Ef(gI0=vP408@9nOSl27)4W4@jt7MnVrf1uELid zMJ6!4foW@JKpnHpZo^ONMNd@|C=+r!Q8kX;4>M&3QeNjbZAnxqW3EgfD(7+-E@!!( z-Rrsgc%9vQHA2L+Y?CwnA;iynMOgs!4R-cmrUOboZvVnvof40%%Bv4$ zkv_U{gNIKMw?dyq?O%=)Zf|BlAD-!aQ_oC?L!(2|Q_W&hyyzq4dns55feub*kQYkX zNF8F@TKuO8iimzj6xRTBJI=k{OizYFE!O=Q{TSCTqK`R)q4YAH^hM%7;zcKM1d8*u zvn?0R6gup_Ayt;KUz8?r;$jbKOoMAo9bd6LG zI?J#*&wz%#AE0q?P){>R8V3;#O7x~fA?SMQ_68 zq!Lu}gYOYihKlQODF1^>RJdp^iT`d9(+lx`R*A|ks6~Z#$5NcP9{WXy@{I}fc-FtT z71wW1(;-MN82dGJp2{@SN)JO_GW~)G`~&PER3Xh;-5**S{c5xyCZjg?W|~FW@Hv78417n;bRV=l4g-zi^8ln|m2xv&H%gIu?h z;1bb6h_y!)iah#9KV<47XK*o^&UxcaZzJXkcoRyX3A_7i=%yH*?o4b5<)KbPvta@! z>ei7#{MMje9ybd@9Q2$?&|#b7d|zlbWM!3cInXuwvY#}JrlGM8$T5=|N1H`gM3+SY z2BMwZ>aJcvY2cR?y)n9tbiT%ZxU+l~^z@da%`J-(_JFd@T2)&UF4`;>;nX!ct{N;E z?F`+rKjxU(8Xh`_nX^taQ`hj|EPDS;r@Rq0?MVna9MC=s*Lz^sM*qc0?IB7JbQRj7 z$u7Y?gcfVS1RH89vz9_#3Qxc2;OYaei~msyQ@|1fx!D8Bot6pbh741uA~O0S_36=> zHBXP}04@cr$>emHZ4jGSXbw^Kt+~Q)h3mt<^xXhIl;J?iY8Gitj+4=j&bsT(W~59x z+1WB2gp?^id=a|R=}<^3qXTC(K=Wks>8}L|hIVtCikV4n?Cl$J8yLrAW2a0Z?g1WxTf}G35eDhM`Qs_yp zQQ@0HTBf_6{G02l)`dRa`lMPn)7ekY92Efj{#J;FA75lPI)~2PfHSJtOiqnufpdP5 zNJSesM3Eabs6enNFOsd^UqcO9eL&mSLZ2L z@jW*nHK;JPB=~%=4?4729W68*8%_!|;5t8cz@Qo{6pNU-p%ctC8FOOCKI`;+441jrbH5hU*Rvd7`oy~k1o#*ByrUW-G5?#$1=U%0DQ6Sb~ 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 A2LJ#7 delta 171877 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¥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 diff --git a/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-SemiBoldItalic.otf b/flatlaf-fonts/flatlaf-fonts-inter/src/main/resources/com/formdev/flatlaf/fonts/inter/Inter-SemiBoldItalic.otf index b725bfc8831803ecb4f15ad162edeba9d55a4fbb..076622e645c07eb1a7c8da91c75be3fbf77fbd7a 100644 GIT binary patch delta 164588 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

Jp@@GYD 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%0DaO<;Q&>@L4$~|=2e_& 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