diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 214e7d48..e9b8aa99 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,11 +97,22 @@ jobs: restore-keys: ${{ runner.os }}-gradle - name: Publish snapshot to oss.sonatype.org - run: ./gradlew publish -Dorg.gradle.internal.publish.checksums.insecure=true + run: ./gradlew publish :flatlaf-theme-editor:build -Dorg.gradle.internal.publish.checksums.insecure=true env: OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} + - name: Upload theme editor + uses: sebastianpopp/ftp-action@releases/v2 + with: + host: ${{ secrets.FTP_SERVER }} + user: ${{ secrets.FTP_USERNAME }} + password: ${{ secrets.FTP_PASSWORD }} + forceSsl: true + localDir: "flatlaf-theme-editor/build/libs" + remoteDir: "snapshots" + options: "--only-newer --no-recursion --verbose=1" + release: runs-on: ubuntu-latest @@ -133,7 +144,7 @@ jobs: restore-keys: ${{ runner.os }}-gradle - name: Release a new stable version to Maven Central - run: ./gradlew publish :flatlaf-demo:build -Drelease=true + run: ./gradlew publish :flatlaf-demo:build :flatlaf-theme-editor:build -Drelease=true env: OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} @@ -150,3 +161,14 @@ jobs: localDir: "flatlaf-demo/build/libs" remoteDir: "." options: "--only-newer --no-recursion --verbose=1" + + - name: Upload theme editor + uses: sebastianpopp/ftp-action@releases/v2 + with: + host: ${{ secrets.FTP_SERVER }} + user: ${{ secrets.FTP_USERNAME }} + password: ${{ secrets.FTP_PASSWORD }} + forceSsl: true + localDir: "flatlaf-theme-editor/build/libs" + remoteDir: "." + options: "--only-newer --no-recursion --verbose=1" diff --git a/CHANGELOG.md b/CHANGELOG.md index dd68d6d0..e4c7d432 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,55 @@ FlatLaf Change Log ================== -## 1.4-SNAPSHOT +## 1.6-SNAPSHOT + +#### New features and improvements + +- InternalFrame: Double-click on icon in internal frame title bar now closes the + internal frame. (issue #374) +- IntelliJ Themes: Removed deprecated `install()` methods. + +#### Fixed bugs + +- Menus: Fixed missing modifiers flags in `ActionEvent` (e.g. `Ctrl` key + pressed) when running in Java 9+ on Linux, macOS. Occurs also on Windows in + large popup menus that do not fit into the window. (issue #371; regression + since FlatLaf 1.3) +- OptionPane: Fixed `OptionPane.sameSizeButtons`, which did not work as expected + when setting to `false`. + + +## 1.5 + +#### New features and improvements + +- SwingX: Added search and clear icons to `JXSearchField`. (issue #359) + +#### Fixed bugs + +- Button and TextComponent: Do not apply minimum width/height if margins are + set. (issue #364) +- ComboBox and Spinner: Limit arrow button width if component has large + preferred height. (issue #361) +- FileChooser: Fixed missing (localized) texts when FlatLaf is loaded in special + classloader (e.g. plugin system in Apache NetBeans). +- InternalFrame: Limit internal frame bounds to parent bounds on resize. Also + honor maximum size of internal frame. (issue #362) +- Popup: Fixed incorrectly placed drop shadow for medium-weight popups in + maximized windows. (issue #358) +- Native window decorations (Windows 10 only): + - Fixed occasional application crash in `flatlaf-windows.dll`. (issue #357) + - When window is initially shown, fill background with window background color + (instead of white), which avoids flickering in dark themes. (issue 339) + - When resizing a window at the right/bottom edge, then first fill the new + space with the window background color (instead of black) before the layout + is updated. + - When resizing a window at the left/top edge, then first fill the new space + with the window background color (instead of garbage) before the layout is + updated. + + +## 1.4 #### New features and improvements @@ -13,7 +61,7 @@ FlatLaf Change Log - Table and PopupFactory: Use `StackWalker` in Java 9+ for better performance. (issue #334) - ToolBar: Paint focus indicator for focused button in toolbar. (issue #346) -- ToolBar: Support focusable buttons in toolbar (set UI values +- ToolBar: Support focusable buttons in toolbar (set UI value `ToolBar.focusableButtons` to `true`). (issue #346) #### Fixed bugs diff --git a/README.md b/README.md index 79a647b5..f8c441fd 100644 --- a/README.md +++ b/README.md @@ -67,10 +67,13 @@ docs). Addons ------ -- [IntelliJ Themes Pack](flatlaf-intellij-themes) -- [Extras](flatlaf-extras) -- [SwingX](flatlaf-swingx) -- [JIDE Common Layer](flatlaf-jide-oss) +- [IntelliJ Themes Pack](flatlaf-intellij-themes) - bundles many popular + open-source 3rd party themes +- [Extras](flatlaf-extras) - SVG icon, tri-state check box, UI inspectors, and + more +- [SwingX](flatlaf-swingx) - support for SwingX components +- [JIDE Common Layer](flatlaf-jide-oss) - support for JIDE Common Layer + components Getting started diff --git a/build.gradle.kts b/build.gradle.kts index 4537b107..711ea707 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,8 +14,8 @@ * limitations under the License. */ -val releaseVersion = "1.3" -val developmentVersion = "1.4-SNAPSHOT" +val releaseVersion = "1.5" +val developmentVersion = "1.6-SNAPSHOT" version = if( java.lang.Boolean.getBoolean( "release" ) ) releaseVersion else developmentVersion 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 c98ebf42..b5801a41 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -32,10 +32,14 @@ import java.beans.PropertyChangeListener; import java.io.File; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.Enumeration; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; +import java.util.MissingResourceException; import java.util.Properties; +import java.util.ResourceBundle; import java.util.ServiceLoader; import java.util.function.Consumer; import java.util.function.Function; @@ -63,9 +67,11 @@ import javax.swing.text.html.HTMLEditorKit; import com.formdev.flatlaf.ui.FlatNativeWindowBorder; import com.formdev.flatlaf.ui.FlatPopupFactory; import com.formdev.flatlaf.ui.FlatRootPaneUI; +import com.formdev.flatlaf.ui.FlatUIUtils; import com.formdev.flatlaf.util.GrayFilter; import com.formdev.flatlaf.util.LoggingFacade; import com.formdev.flatlaf.util.MultiResolutionImageSupport; +import com.formdev.flatlaf.util.StringUtils; import com.formdev.flatlaf.util.SystemInfo; import com.formdev.flatlaf.util.UIScale; @@ -92,6 +98,7 @@ public abstract class FlatLaf private MnemonicHandler mnemonicHandler; private Consumer postInitialization; + private List> uiDefaultsGetters; /** * Sets the application look and feel to the given LaF @@ -350,14 +357,21 @@ public abstract class FlatLaf @Override public UIDefaults getDefaults() { - UIDefaults defaults = super.getDefaults(); + // use larger initial capacity to avoid resizing UI defaults hash table + // (from 610 to 1221 to 2443 entries) and to save some memory + UIDefaults defaults = new FlatUIDefaults( 1500, 0.75f ); + + // initialize basic defaults (see super.getDefaults()) + initClassDefaults( defaults ); + initSystemColorDefaults( defaults ); + initComponentDefaults( defaults ); // add flag that indicates whether the LaF is light or dark // (can be queried without using FlatLaf API) defaults.put( "laf.dark", isDark() ); - // add resource bundle for localized texts - defaults.addResourceBundle( "com.formdev.flatlaf.resources.Bundle" ); + // init resource bundle for localized texts + initResourceBundle( defaults, "com.formdev.flatlaf.resources.Bundle" ); // initialize some defaults (for overriding) that are used in UI delegates, // but are not set in BasicLookAndFeel @@ -453,6 +467,45 @@ public abstract class FlatLaf return null; } + private void initResourceBundle( UIDefaults defaults, String bundleName ) { + // add resource bundle for localized texts + defaults.addResourceBundle( bundleName ); + + // Check whether Swing can not load the FlatLaf resource bundle, + // which can happen in applications that use some plugin system + // and load FlatLaf in a plugin that uses its own classloader. + // (e.g. Apache NetBeans) + if( defaults.get( "FileChooser.fileNameHeaderText" ) != null ) + return; + + // load FlatLaf resource bundle and add content to defaults + try { + ResourceBundle bundle = ResourceBundle.getBundle( bundleName, defaults.getDefaultLocale() ); + + Enumeration keys = bundle.getKeys(); + while( keys.hasMoreElements() ) { + String key = keys.nextElement(); + String value = bundle.getString( key ); + + String baseKey = StringUtils.removeTrailing( key, ".textAndMnemonic" ); + if( baseKey != key ) { + String text = value.replace( "&", "" ); + String mnemonic = null; + int index = value.indexOf( '&' ); + if( index >= 0 ) + mnemonic = Integer.toString( Character.toUpperCase( value.charAt( index + 1 ) ) ); + + defaults.put( baseKey + "Text", text ); + if( mnemonic != null ) + defaults.put( baseKey + "Mnemonic", mnemonic ); + } else + defaults.put( key, value ); + } + } catch( MissingResourceException ex ) { + LoggingFacade.INSTANCE.logSevere( null, ex ); + } + } + private void initFonts( UIDefaults defaults ) { FontUIResource uiFont = null; @@ -886,6 +939,139 @@ public abstract class FlatLaf return super.hashCode(); } + /** + * Registers a UI defaults getter function that is invoked before the standard getter. + * This allows using different UI defaults for special purposes + * (e.g. using multiple themes at the same time). + *

+ * The key is passed as parameter to the function. + * If the function returns {@code null}, then the next registered function is invoked. + * If all registered functions return {@code null}, then the current look and feel is asked. + * If the function returns {@link #NULL_VALUE}, then the UI value becomes {@code null}. + * + * @see #unregisterUIDefaultsGetter(Function) + * @see #runWithUIDefaultsGetter(Function, Runnable) + * @since 1.6 + */ + public void registerUIDefaultsGetter( Function uiDefaultsGetter ) { + if( uiDefaultsGetters == null ) + uiDefaultsGetters = new ArrayList<>(); + + uiDefaultsGetters.remove( uiDefaultsGetter ); + uiDefaultsGetters.add( uiDefaultsGetter ); + + // disable shared UIs + FlatUIUtils.setUseSharedUIs( false ); + } + + /** + * Unregisters a UI defaults getter function that was invoked before the standard getter. + * + * @see #registerUIDefaultsGetter(Function) + * @see #runWithUIDefaultsGetter(Function, Runnable) + * @since 1.6 + */ + public void unregisterUIDefaultsGetter( Function uiDefaultsGetter ) { + if( uiDefaultsGetters == null ) + return; + + uiDefaultsGetters.remove( uiDefaultsGetter ); + + // enable shared UIs + if( uiDefaultsGetters.isEmpty() ) + FlatUIUtils.setUseSharedUIs( true ); + } + + /** + * Registers a UI defaults getter function that is invoked before the standard getter, + * runs the given runnable and unregisters the UI defaults getter function again. + * This allows using different UI defaults for special purposes + * (e.g. using multiple themes at the same time). + * If the current look and feel is not FlatLaf, then the getter is ignored and + * the given runnable invoked. + *

+ * The key is passed as parameter to the function. + * If the function returns {@code null}, then the next registered function is invoked. + * If all registered functions return {@code null}, then the current look and feel is asked. + * If the function returns {@link #NULL_VALUE}, then the UI value becomes {@code null}. + *

+ * Example: + *

{@code
+	 * // create secondary theme
+	 * UIDefaults darkDefaults = new FlatDarkLaf().getDefaults();
+	 *
+	 * // create panel using secondary theme
+	 * FlatLaf.runWithUIDefaultsGetter( key -> {
+	 *     Object value = darkDefaults.get( key );
+	 *     return (value != null) ? value : FlatLaf.NULL_VALUE;
+	 * }, () -> {
+	 *     // TODO create components that should use secondary theme here
+	 * } );
+	 * }
+ * + * @see #registerUIDefaultsGetter(Function) + * @see #unregisterUIDefaultsGetter(Function) + * @since 1.6 + */ + public static void runWithUIDefaultsGetter( Function uiDefaultsGetter, Runnable runnable ) { + LookAndFeel laf = UIManager.getLookAndFeel(); + if( laf instanceof FlatLaf ) { + ((FlatLaf)laf).registerUIDefaultsGetter( uiDefaultsGetter ); + try { + runnable.run(); + } finally { + ((FlatLaf)laf).unregisterUIDefaultsGetter( uiDefaultsGetter ); + } + } else + runnable.run(); + } + + /** + * Special value returned by functions used in {@link #runWithUIDefaultsGetter(Function, Runnable)} + * or {@link #registerUIDefaultsGetter(Function)} to indicate that the UI value should + * become {@code null}. + * + * @see #runWithUIDefaultsGetter(Function, Runnable) + * @see #registerUIDefaultsGetter(Function) + * @since 1.6 + */ + public static final Object NULL_VALUE = new Object(); + + //---- class FlatUIDefaults ----------------------------------------------- + + private class FlatUIDefaults + extends UIDefaults + { + FlatUIDefaults( int initialCapacity, float loadFactor ) { + super( initialCapacity, loadFactor ); + } + + @Override + public Object get( Object key ) { + Object value = getValue( key ); + return (value != null) ? (value != NULL_VALUE ? value : null) : super.get( key ); + } + + @Override + public Object get( Object key, Locale l ) { + Object value = getValue( key ); + return (value != null) ? (value != NULL_VALUE ? value : null) : super.get( key, l ); + } + + private Object getValue( Object key ) { + if( uiDefaultsGetters == null ) + return null; + + for( int i = uiDefaultsGetters.size() - 1; i >= 0; i-- ) { + Object value = uiDefaultsGetters.get( i ).apply( key ); + if( value != null ) + return value; + } + + return null; + } + } + //---- class ActiveFont --------------------------------------------------- private static class ActiveFont 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 38ecb4ec..f71cf72c 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java @@ -605,6 +605,13 @@ class UIDefaultsLoader case "fadeout": return parseColorHSLIncreaseDecrease( 3, false, params, resolver, reportError ); case "fade": return parseColorFade( params, resolver, reportError ); case "spin": return parseColorSpin( params, resolver, reportError ); + case "changeHue": return parseColorChange( 0, params, resolver, reportError ); + case "changeSaturation":return parseColorChange( 1, params, resolver, reportError ); + case "changeLightness": return parseColorChange( 2, params, resolver, reportError ); + case "changeAlpha": return parseColorChange( 3, params, resolver, reportError ); + case "mix": return parseColorMix( null, params, resolver, reportError ); + case "tint": return parseColorMix( "#fff", params, resolver, reportError ); + case "shade": return parseColorMix( "#000", params, resolver, reportError ); } } finally { parseColorDepth--; @@ -754,6 +761,68 @@ class UIDefaultsLoader return parseFunctionBaseColor( colorStr, function, derived, resolver, reportError ); } + /** + * Syntax: changeHue(color,value[,options]) or + * changeSaturation(color,value[,options]) or + * changeLightness(color,value[,options]) or + * 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] + */ + private static Object parseColorChange( int hslIndex, + List params, Function resolver, boolean reportError ) + { + String colorStr = params.get( 0 ); + int value = (hslIndex == 0) + ? parseInteger( params.get( 1 ), true ) + : parsePercentage( params.get( 1 ) ); + boolean derived = false; + + if( params.size() > 2 ) { + String options = params.get( 2 ); + derived = options.contains( "derived" ); + } + + // create function + ColorFunction function = new ColorFunctions.HSLChange( hslIndex, value ); + + // parse base color, apply function and create derived color + return parseFunctionBaseColor( colorStr, function, derived, resolver, reportError ); + } + + /** + * Syntax: mix(color1,color2[,weight]) or + * tint(color[,weight]) or + * shade(color[,weight]) + * - 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 + */ + private static Object parseColorMix( String color1Str, List params, Function resolver, boolean reportError ) { + int i = 0; + if( color1Str == null ) + color1Str = params.get( i++ ); + String color2Str = params.get( i++ ); + int weight = 50; + + if( params.size() > i ) + weight = parsePercentage( params.get( i++ ) ); + + // parse second color + String resolvedColor2Str = resolver.apply( color2Str ); + ColorUIResource color2 = (ColorUIResource) parseColorOrFunction( resolvedColor2Str, resolver, reportError ); + if( color2 == null ) + return null; + + // create function + ColorFunction function = new ColorFunctions.Mix( color2, weight ); + + // parse first color, apply function and create mixed color + return parseFunctionBaseColor( color1Str, function, false, resolver, reportError ); + } + private static Object parseFunctionBaseColor( String colorStr, ColorFunction function, boolean derived, Function resolver, boolean reportError ) { diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatClearIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatClearIcon.java new file mode 100644 index 00000000..b756b509 --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatClearIcon.java @@ -0,0 +1,85 @@ +/* + * Copyright 2021 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.icons; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics2D; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Line2D; +import java.awt.geom.Path2D; +import javax.swing.AbstractButton; +import javax.swing.ButtonModel; +import javax.swing.UIManager; +import com.formdev.flatlaf.ui.FlatUIUtils; + +/** + * "clear" icon for search fields. + * + * @uiDefault SearchField.clearIconColor Color + * @uiDefault SearchField.clearIconHoverColor Color + * @uiDefault SearchField.clearIconPressedColor Color + * + * @author Karl Tauber + * @since 1.5 + */ +public class FlatClearIcon + extends FlatAbstractIcon +{ + protected Color clearIconColor = UIManager.getColor( "SearchField.clearIconColor" ); + protected Color clearIconHoverColor = UIManager.getColor( "SearchField.clearIconHoverColor" ); + protected Color clearIconPressedColor = UIManager.getColor( "SearchField.clearIconPressedColor" ); + + public FlatClearIcon() { + super( 16, 16, null ); + } + + @Override + protected void paintIcon( Component c, Graphics2D g ) { + if( c instanceof AbstractButton ) { + ButtonModel model = ((AbstractButton)c).getModel(); + if( model.isPressed() || model.isRollover() ) { + /* + + + + */ + + // paint filled circle with cross + g.setColor( model.isPressed() ? clearIconPressedColor : clearIconHoverColor ); + Path2D path = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + path.append( new Ellipse2D.Float( 1.75f, 1.75f, 12.5f, 12.5f ), false ); + path.append( FlatUIUtils.createPath( 4.5,5.5, 5.5,4.5, 8,7, 10.5,4.5, 11.5,5.5, 9,8, 11.5,10.5, 10.5,11.5, 8,9, 5.5,11.5, 4.5,10.5, 7,8 ), false ); + g.fill( path ); + return; + } + } + + /* + + + + */ + + // paint cross + g.setColor( clearIconColor ); + Path2D path = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + path.append( new Line2D.Float( 5,5, 11,11 ), false ); + path.append( new Line2D.Float( 5,11, 11,5 ), false ); + g.draw( path ); + } +} diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchIcon.java new file mode 100644 index 00000000..1bc726a6 --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchIcon.java @@ -0,0 +1,69 @@ +/* + * Copyright 2021 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.icons; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics2D; +import java.awt.geom.Area; +import java.awt.geom.Ellipse2D; +import javax.swing.UIManager; +import com.formdev.flatlaf.ui.FlatButtonUI; +import com.formdev.flatlaf.ui.FlatUIUtils; + +/** + * "search" icon for search fields. + * + * @uiDefault SearchField.searchIconColor Color + * @uiDefault SearchField.searchIconHoverColor Color + * @uiDefault SearchField.searchIconPressedColor Color + * + * @author Karl Tauber + * @since 1.5 + */ +public class FlatSearchIcon + extends FlatAbstractIcon +{ + protected Color searchIconColor = UIManager.getColor( "SearchField.searchIconColor" ); + protected Color searchIconHoverColor = UIManager.getColor( "SearchField.searchIconHoverColor" ); + protected Color searchIconPressedColor = UIManager.getColor( "SearchField.searchIconPressedColor" ); + + public FlatSearchIcon() { + super( 16, 16, null ); + } + + @Override + protected void paintIcon( Component c, Graphics2D g ) { + /* + + + + + + + */ + + g.setColor( FlatButtonUI.buttonStateColor( c, searchIconColor, searchIconColor, + null, searchIconHoverColor, searchIconPressedColor ) ); + + // paint magnifier + Area area = new Area( new Ellipse2D.Float( 2, 2, 10, 10 ) ); + area.subtract( new Area( new Ellipse2D.Float( 3, 3, 8, 8 ) ) ); + area.add( new Area( FlatUIUtils.createPath( 10.813,9.75, 14,12.938, 12.938,14, 9.75,10.813 ) ) ); + g.fill( area ); + } +} diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchWithHistoryIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchWithHistoryIcon.java new file mode 100644 index 00000000..262bb8fc --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchWithHistoryIcon.java @@ -0,0 +1,55 @@ +/* + * Copyright 2021 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.icons; + +import java.awt.Component; +import java.awt.Graphics2D; +import com.formdev.flatlaf.ui.FlatUIUtils; + +/** + * "search with history" icon for search fields. + * + * @author Karl Tauber + * @since 1.5 + */ +public class FlatSearchWithHistoryIcon + extends FlatSearchIcon +{ + public FlatSearchWithHistoryIcon() { + } + + @Override + protected void paintIcon( Component c, Graphics2D g ) { + /* + + + + + + + + */ + + // paint magnifier + g.translate( -2, 0 ); + super.paintIcon( c, g ); + g.translate( 2, 0 ); + + // paint history arrow + g.fill( FlatUIUtils.createPath( 11,7, 16,7, 13.5,10 ) ); + } +} 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 b4bad010..ea4a30d1 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 @@ -31,6 +31,7 @@ import java.awt.Rectangle; import java.awt.geom.RoundRectangle2D; import java.beans.PropertyChangeEvent; import java.util.Map; +import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; import javax.swing.AbstractButton; import javax.swing.ButtonModel; @@ -137,6 +138,7 @@ public class FlatButtonUI @Styleable(dot=true) protected Color toolbarSelectedBackground; private Icon helpButtonIcon; + private Insets defaultMargin; private final boolean shared; private boolean helpButtonIconShared = true; @@ -204,8 +206,9 @@ public class FlatButtonUI toolbarSelectedBackground = UIManager.getColor( prefix + "toolbar.selectedBackground" ); helpButtonIcon = UIManager.getIcon( "HelpButton.icon" ); - helpButtonIconShared = true; + defaultMargin = UIManager.getInsets( prefix + "margin" ); + helpButtonIconShared = true; defaults_initialized = true; } @@ -581,7 +584,9 @@ public class FlatButtonUI } else if( isIconOnlyOrSingleCharacter && ((AbstractButton)c).getIcon() == null ) { // make single-character-no-icon button square (increase width) prefSize.width = Math.max( prefSize.width, prefSize.height ); - } else if( !isIconOnlyOrSingleCharacter && !isToolBarButton( c ) && c.getBorder() instanceof FlatButtonBorder ) { + } else if( !isIconOnlyOrSingleCharacter && !isToolBarButton( c ) && + c.getBorder() instanceof FlatButtonBorder && hasDefaultMargins( c ) ) + { // apply minimum width/height int fw = Math.round( FlatUIUtils.getBorderFocusWidth( c ) * 2 ); prefSize.width = Math.max( prefSize.width, scale( FlatUIUtils.minimumWidth( c, minimumWidth ) ) + fw ); @@ -591,6 +596,11 @@ public class FlatButtonUI return prefSize; } + private boolean hasDefaultMargins( JComponent c ) { + Insets margin = ((AbstractButton)c).getMargin(); + return margin instanceof UIResource && Objects.equals( margin, defaultMargin ); + } + //---- class FlatButtonListener ------------------------------------------- protected class FlatButtonListener 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 5e5e6a1c..6a35558e 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 @@ -23,6 +23,7 @@ import java.awt.Component; import java.awt.ComponentOrientation; import java.awt.Container; import java.awt.Dimension; +import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GraphicsConfiguration; @@ -280,8 +281,12 @@ public class FlatComboBoxUI super.layoutContainer( parent ); if( arrowButton != null ) { + // limit button width to height of a raw combobox (without insets) + FontMetrics fm = comboBox.getFontMetrics( comboBox.getFont() ); + int maxButtonWidth = fm.getHeight() + scale( padding.top ) + scale( padding.bottom ); + Insets insets = getInsets(); - int buttonWidth = parent.getPreferredSize().height - insets.top - insets.bottom; + int buttonWidth = Math.min( parent.getPreferredSize().height - insets.top - insets.bottom, maxButtonWidth ); if( buttonWidth != arrowButton.getWidth() ) { // set width of arrow button to preferred height of combobox int xOffset = comboBox.getComponentOrientation().isLeftToRight() diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatEditorPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatEditorPaneUI.java index 01e24725..1936f63a 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatEditorPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatEditorPaneUI.java @@ -21,6 +21,7 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; +import java.awt.Insets; import java.awt.event.FocusListener; import java.beans.PropertyChangeEvent; import java.util.Map; @@ -76,6 +77,8 @@ public class FlatEditorPaneUI private Color oldDisabledBackground; private Color oldInactiveBackground; + private Insets defaultMargin; + private Object oldHonorDisplayProperties; private FocusListener focusListener; private Map oldStyleValues; @@ -103,6 +106,8 @@ public class FlatEditorPaneUI inactiveBackground = UIManager.getColor( prefix + ".inactiveBackground" ); focusedBackground = UIManager.getColor( prefix + ".focusedBackground" ); + defaultMargin = UIManager.getInsets( prefix + ".margin" ); + // use component font and foreground for HTML text oldHonorDisplayProperties = getComponent().getClientProperty( JEditorPane.HONOR_DISPLAY_PROPERTIES ); getComponent().putClientProperty( JEditorPane.HONOR_DISPLAY_PROPERTIES, true ); @@ -202,15 +207,19 @@ public class FlatEditorPaneUI @Override public Dimension getPreferredSize( JComponent c ) { - return applyMinimumWidth( c, super.getPreferredSize( c ), minimumWidth ); + return applyMinimumWidth( c, super.getPreferredSize( c ), minimumWidth, defaultMargin ); } @Override public Dimension getMinimumSize( JComponent c ) { - return applyMinimumWidth( c, super.getMinimumSize( c ), minimumWidth ); + return applyMinimumWidth( c, super.getMinimumSize( c ), minimumWidth, defaultMargin ); } - static Dimension applyMinimumWidth( JComponent c, Dimension size, int minimumWidth ) { + static Dimension applyMinimumWidth( JComponent c, Dimension size, int minimumWidth, Insets defaultMargin ) { + // do not apply minimum width if JTextComponent.margin is set + if( !FlatTextFieldUI.hasDefaultMargins( c, defaultMargin ) ) + return size; + // Assume that text area is in a scroll pane (that displays the border) // and subtract 1px border line width. // Using "(scale( 1 ) * 2)" instead of "scale( 2 )" to deal with rounding diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatInternalFrameTitlePane.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatInternalFrameTitlePane.java index 3e4f7c1a..a8be1e2f 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatInternalFrameTitlePane.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatInternalFrameTitlePane.java @@ -21,6 +21,7 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.LayoutManager; +import java.awt.Rectangle; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.BorderFactory; @@ -146,6 +147,19 @@ public class FlatInternalFrameTitlePane closeButton.setVisible( frame.isClosable() ); } + Rectangle getFrameIconBounds() { + Icon icon = titleLabel.getIcon(); + if( icon == null ) + return null; + + int iconWidth = icon.getIconWidth(); + int iconHeight = icon.getIconHeight(); + boolean leftToRight = titleLabel.getComponentOrientation().isLeftToRight(); + int x = titleLabel.getX() + (leftToRight ? 0 : (titleLabel.getWidth() - iconWidth)); + int y = titleLabel.getY() + ((titleLabel.getHeight() - iconHeight) / 2); + return new Rectangle( x, y, iconWidth, iconHeight ); + } + /** * Does nothing because FlatLaf internal frames do not have system menus. */ diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatInternalFrameUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatInternalFrameUI.java index 3e3bf482..d4077457 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatInternalFrameUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatInternalFrameUI.java @@ -22,6 +22,8 @@ import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Insets; +import java.awt.Rectangle; +import java.awt.event.MouseEvent; import java.beans.PropertyChangeListener; import java.util.LinkedHashMap; import java.util.Map; @@ -30,6 +32,7 @@ import javax.swing.JComponent; import javax.swing.JInternalFrame; import javax.swing.LookAndFeel; import javax.swing.UIManager; +import javax.swing.event.MouseInputAdapter; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.basic.BasicInternalFrameUI; import com.formdev.flatlaf.ui.FlatStyleSupport.Styleable; @@ -138,6 +141,11 @@ public class FlatInternalFrameUI return new FlatWindowResizer.InternalFrameResizer( frame, this::getDesktopManager ); } + @Override + protected MouseInputAdapter createBorderListener( JInternalFrame w ) { + return new FlatBorderListener(); + } + @Override protected PropertyChangeListener createPropertyChangeListener() { return FlatStyleSupport.createPropertyChangeListener( frame, this::applyStyle, @@ -272,4 +280,26 @@ public class FlatInternalFrameUI } } } + + //---- class FlatBorderListener ------------------------------------------- + + protected class FlatBorderListener + extends BorderListener + { + @Override + public void mouseClicked( MouseEvent e ) { + if( e.getClickCount() == 2 && !frame.isIcon() && + e.getSource() instanceof FlatInternalFrameTitlePane ) + { + Rectangle iconBounds = ((FlatInternalFrameTitlePane)e.getSource()).getFrameIconBounds(); + if( iconBounds != null && iconBounds.contains( e.getX(), e.getY() ) ) { + if( frame.isClosable() ) + frame.doDefaultCloseAction(); + return; + } + } + + super.mouseClicked( e ); + } + } } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatOptionPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatOptionPaneUI.java index 7475ce9b..2bb2c8f9 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatOptionPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatOptionPaneUI.java @@ -91,6 +91,7 @@ public class FlatOptionPaneUI protected int messagePadding; protected int maxCharactersPerLine; private int focusWidth; + private boolean sameSizeButtons; public static ComponentUI createUI( JComponent c ) { return new FlatOptionPaneUI(); @@ -104,6 +105,7 @@ public class FlatOptionPaneUI messagePadding = UIManager.getInt( "OptionPane.messagePadding" ); maxCharactersPerLine = UIManager.getInt( "OptionPane.maxCharactersPerLine" ); focusWidth = UIManager.getInt( "Component.focusWidth" ); + sameSizeButtons = FlatUIUtils.getUIBoolean( "OptionPane.sameSizeButtons", true ); } @Override @@ -217,6 +219,11 @@ public class FlatOptionPaneUI return null; } + @Override + protected boolean getSizeButtonsToSameWidth() { + return sameSizeButtons; + } + //---- class NonUIResourceBorder ------------------------------------------ private static class NonUIResourceBorder 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 374e5e6a..94c65fa9 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 @@ -489,6 +489,9 @@ public class FlatPopupFactory JLayeredPane layeredPane = ((RootPaneContainer)window).getLayeredPane(); layeredPane.add( dropShadowPanel, JLayeredPane.POPUP_LAYER, 0 ); + moveMediumWeightDropShadow(); + resizeMediumWeightDropShadow(); + mediumPanelListener = new ComponentListener() { @Override public void componentShown( ComponentEvent e ) { @@ -504,17 +507,12 @@ public class FlatPopupFactory @Override public void componentMoved( ComponentEvent e ) { - if( dropShadowPanel != null && mediumWeightPanel != null ) { - Point location = mediumWeightPanel.getLocation(); - Insets insets = dropShadowPanel.getInsets(); - dropShadowPanel.setLocation( location.x - insets.left, location.y - insets.top ); - } + moveMediumWeightDropShadow(); } @Override public void componentResized( ComponentEvent e ) { - if( dropShadowPanel != null ) - dropShadowPanel.setSize( FlatUIUtils.addInsets( mediumWeightPanel.getSize(), dropShadowPanel.getInsets() ) ); + resizeMediumWeightDropShadow(); } }; mediumWeightPanel.addComponentListener( mediumPanelListener ); @@ -530,5 +528,18 @@ public class FlatPopupFactory parent.repaint( bounds.x, bounds.y, bounds.width, bounds.height ); } } + + private void moveMediumWeightDropShadow() { + if( dropShadowPanel != null && mediumWeightPanel != null ) { + Point location = mediumWeightPanel.getLocation(); + Insets insets = dropShadowPanel.getInsets(); + dropShadowPanel.setLocation( location.x - insets.left, location.y - insets.top ); + } + } + + private void resizeMediumWeightDropShadow() { + if( dropShadowPanel != null && mediumWeightPanel != null ) + dropShadowPanel.setSize( FlatUIUtils.addInsets( mediumWeightPanel.getSize(), dropShadowPanel.getInsets() ) ); + } } } 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 35d50741..1209b6c8 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 @@ -27,9 +27,11 @@ import java.awt.Insets; import java.awt.LayoutManager; import java.awt.LayoutManager2; import java.awt.Window; -import java.awt.event.HierarchyEvent; -import java.awt.event.HierarchyListener; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.awt.event.ComponentListener; import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.function.Function; import javax.swing.JComponent; import javax.swing.JDialog; @@ -38,6 +40,7 @@ import javax.swing.JLayeredPane; import javax.swing.JMenuBar; import javax.swing.JRootPane; import javax.swing.LookAndFeel; +import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.border.Border; import javax.swing.plaf.BorderUIResource; @@ -81,7 +84,8 @@ public class FlatRootPaneUI private Object nativeWindowBorderData; private LayoutManager oldLayout; - private HierarchyListener hierarchyListener; + private PropertyChangeListener ancestorListener; + private ComponentListener componentListener; public static ComponentUI createUI( JComponent c ) { return new FlatRootPaneUI(); @@ -149,16 +153,32 @@ public class FlatRootPaneUI // This is very disturbing in dark themes, but hard to notice in light themes. // Seems to be a rounding issue when Swing adds dirty region of window // using RepaintManager.nativeAddDirtyRegion(). - hierarchyListener = e -> { - if( (e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0 && - rootPane.getParent() instanceof Window ) - { - // add whole root pane to dirty regions when window is initially shown - rootPane.getParent().repaint( rootPane.getX(), rootPane.getY(), - rootPane.getWidth(), rootPane.getHeight() ); + // + // Note: Not using a HierarchyListener here, which would be much easier, + // because this causes problems with mouse clicks in heavy-weight popups. + // Instead, add a listener to the root pane that waits until it is added + // to a window, then add a component listener to the window. + // See: https://github.com/JFormDesigner/FlatLaf/issues/371 + ancestorListener = e -> { + Object oldValue = e.getOldValue(); + Object newValue = e.getNewValue(); + if( newValue instanceof Window ) { + if( componentListener == null ) { + componentListener = new ComponentAdapter() { + @Override + public void componentShown( ComponentEvent e ) { + // add whole root pane to dirty regions when window is initially shown + root.getParent().repaint( root.getX(), root.getY(), root.getWidth(), root.getHeight() ); + } + }; + } + ((Window)newValue).addComponentListener( componentListener ); + } else if( newValue == null && oldValue instanceof Window ) { + if( componentListener != null ) + ((Window)oldValue).removeComponentListener( componentListener ); } }; - root.addHierarchyListener( hierarchyListener ); + root.addPropertyChangeListener( "ancestor", ancestorListener ); } } @@ -167,8 +187,14 @@ public class FlatRootPaneUI super.uninstallListeners( root ); if( SystemInfo.isJava_9_orLater ) { - root.removeHierarchyListener( hierarchyListener ); - hierarchyListener = null; + if( componentListener != null ) { + Window window = SwingUtilities.windowForComponent( root ); + if( window != null ) + window.removeComponentListener( componentListener ); + componentListener = null; + } + root.removePropertyChangeListener( "ancestor", ancestorListener ); + ancestorListener = null; } } 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 a59d924b..b35beafe 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 @@ -21,6 +21,7 @@ import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; +import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Insets; @@ -464,8 +465,12 @@ public class FlatSpinnerUI Rectangle editorRect = new Rectangle( r ); Rectangle buttonsRect = new Rectangle( r ); + // limit buttons width to height of a raw spinner (without insets) + FontMetrics fm = spinner.getFontMetrics( spinner.getFont() ); + int maxButtonWidth = fm.getHeight() + scale( padding.top ) + scale( padding.bottom ); + // make button area square (if spinner has preferred height) - int buttonsWidth = parent.getPreferredSize().height - insets.top - insets.bottom; + int buttonsWidth = Math.min( parent.getPreferredSize().height - insets.top - insets.bottom, maxButtonWidth ); buttonsRect.width = buttonsWidth; if( parent.getComponentOrientation().isLeftToRight() ) { diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java index 9bf6f17f..baccb168 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java @@ -928,6 +928,17 @@ public class FlatTabbedPaneUI paintTabArea( g, tabPlacement, selectedIndex ); } + @Override + protected void paintTabArea( Graphics g, int tabPlacement, int selectedIndex ) { + // need to set rendering hints here too because this method is also invoked + // from BasicTabbedPaneUI.ScrollableTabPanel.paintComponent() + Object[] oldHints = FlatUIUtils.setRenderingHints( g ); + + super.paintTabArea( g, tabPlacement, selectedIndex ); + + FlatUIUtils.resetRenderingHints( g, oldHints ); + } + @Override protected void paintTab( Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect ) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java index 43bb1eae..5cb0ab82 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java @@ -173,6 +173,12 @@ public class FlatTableHeaderUI } } + // overridden and made public to allow usage in custom renderers + @Override + public int getRolloverColumn() { + return super.getRolloverColumn(); + } + @Override public void paint( Graphics g, JComponent c ) { TableColumnModel columnModel = header.getColumnModel(); diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java index 8600994e..ae694d2c 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java @@ -20,6 +20,7 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; +import java.awt.Insets; import java.awt.event.FocusListener; import java.beans.PropertyChangeEvent; import java.util.Map; @@ -72,6 +73,8 @@ public class FlatTextAreaUI private Color oldDisabledBackground; private Color oldInactiveBackground; + private Insets defaultMargin; + private FocusListener focusListener; private Map oldStyleValues; @@ -96,6 +99,8 @@ public class FlatTextAreaUI disabledBackground = UIManager.getColor( "TextArea.disabledBackground" ); inactiveBackground = UIManager.getColor( "TextArea.inactiveBackground" ); focusedBackground = UIManager.getColor( "TextArea.focusedBackground" ); + + defaultMargin = UIManager.getInsets( "TextArea.margin" ); } @Override @@ -189,7 +194,7 @@ public class FlatTextAreaUI if( c instanceof JTextArea && ((JTextArea)c).getColumns() > 0 ) return size; - return FlatEditorPaneUI.applyMinimumWidth( c, size, minimumWidth ); + return FlatEditorPaneUI.applyMinimumWidth( c, size, minimumWidth, defaultMargin ); } @Override 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 2c173f08..70abb546 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 @@ -28,6 +28,7 @@ import java.awt.Rectangle; import java.awt.event.FocusListener; import java.beans.PropertyChangeEvent; import java.util.Map; +import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import javax.swing.JComboBox; @@ -92,6 +93,8 @@ public class FlatTextFieldUI private Color oldDisabledBackground; private Color oldInactiveBackground; + private Insets defaultMargin; + private FocusListener focusListener; private Map oldStyleValues; private AtomicBoolean borderShared; @@ -120,6 +123,8 @@ public class FlatTextFieldUI placeholderForeground = UIManager.getColor( prefix + ".placeholderForeground" ); focusedBackground = UIManager.getColor( prefix + ".focusedBackground" ); + defaultMargin = UIManager.getInsets( prefix + ".margin" ); + LookAndFeel.installProperty( getComponent(), "opaque", false ); MigLayoutVisualPadding.install( getComponent() ); @@ -355,11 +360,15 @@ public class FlatTextFieldUI return applyMinimumWidth( c, super.getMinimumSize( c ), minimumWidth ); } - static Dimension applyMinimumWidth( JComponent c, Dimension size, int minimumWidth ) { + private Dimension applyMinimumWidth( JComponent c, Dimension size, int minimumWidth ) { // do not apply minimum width if JTextField.columns is set if( c instanceof JTextField && ((JTextField)c).getColumns() > 0 ) return size; + // do not apply minimum width if JTextComponent.margin is set + if( !hasDefaultMargins( c, defaultMargin ) ) + return size; + // do not apply minimum width if used in combobox or spinner Container parent = c.getParent(); if( parent instanceof JComboBox || @@ -373,6 +382,11 @@ public class FlatTextFieldUI return size; } + static boolean hasDefaultMargins( JComponent c, Insets defaultMargin ) { + Insets margin = ((JTextComponent)c).getMargin(); + return margin instanceof UIResource && Objects.equals( margin, defaultMargin ); + } + @Override protected Rectangle getVisibleEditorRect() { Rectangle r = super.getVisibleEditorRect(); diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextPaneUI.java index 395c07f1..3ebf2d20 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextPaneUI.java @@ -20,6 +20,7 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; +import java.awt.Insets; import java.awt.event.FocusListener; import java.beans.PropertyChangeEvent; import java.util.Map; @@ -72,6 +73,8 @@ public class FlatTextPaneUI private Color oldDisabledBackground; private Color oldInactiveBackground; + private Insets defaultMargin; + private Object oldHonorDisplayProperties; private FocusListener focusListener; private Map oldStyleValues; @@ -99,6 +102,8 @@ public class FlatTextPaneUI inactiveBackground = UIManager.getColor( prefix + ".inactiveBackground" ); focusedBackground = UIManager.getColor( prefix + ".focusedBackground" ); + defaultMargin = UIManager.getInsets( prefix + ".margin" ); + // use component font and foreground for HTML text oldHonorDisplayProperties = getComponent().getClientProperty( JEditorPane.HONOR_DISPLAY_PROPERTIES ); getComponent().putClientProperty( JEditorPane.HONOR_DISPLAY_PROPERTIES, true ); @@ -184,12 +189,12 @@ public class FlatTextPaneUI @Override public Dimension getPreferredSize( JComponent c ) { - return FlatEditorPaneUI.applyMinimumWidth( c, super.getPreferredSize( c ), minimumWidth ); + return FlatEditorPaneUI.applyMinimumWidth( c, super.getPreferredSize( c ), minimumWidth, defaultMargin ); } @Override public Dimension getMinimumSize( JComponent c ) { - return FlatEditorPaneUI.applyMinimumWidth( c, super.getMinimumSize( c ), minimumWidth ); + return FlatEditorPaneUI.applyMinimumWidth( c, super.getMinimumSize( c ), minimumWidth, defaultMargin ); } @Override diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java index 0c626f6f..3f3962d8 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java @@ -289,6 +289,26 @@ public class FlatTreeUI tree.repaint( 0, r.y, tree.getWidth(), r.height ); } + @Override + public Rectangle getPathBounds( JTree tree, TreePath path ) { + Rectangle bounds = super.getPathBounds( tree, path ); + + // If this method was invoked from JTree.getPathForLocation(int x, int y) to check whether + // the location is within tree node bounds, then return the bounds of a wide node. + // This changes the behavior of JTree.getPathForLocation(int x, int y) and + // JTree.getRowForLocation(int x, int y), which now return the path/row even + // if [x,y] is in the wide row area outside of the actual tree node. + if( bounds != null && + isWideSelection() && + UIManager.getBoolean( "FlatLaf.experimental.tree.widePathForLocation" ) && + StackUtils.wasInvokedFrom( JTree.class.getName(), "getPathForLocation", 5 ) ) + { + bounds.x = 0; + bounds.width = tree.getWidth(); + } + return bounds; + } + /** * @since TODO */ diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatUIUtils.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatUIUtils.java index 48c09318..2ee0fc55 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatUIUtils.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatUIUtils.java @@ -69,6 +69,7 @@ public class FlatUIUtils { public static final boolean MAC_USE_QUARTZ = Boolean.getBoolean( "apple.awt.graphics.UseQuartz" ); + private static boolean useSharedUIs = true; private static WeakHashMap> sharedUIinstances = new WeakHashMap<>(); public static Rectangle addInsets( Rectangle r, Insets insets ) { @@ -825,6 +826,27 @@ debug*/ return explicitlySet; } + /** + * Returns whether shared UI delegates are used. + * + * @since 1.6 + */ + public static boolean isUseSharedUIs() { + return useSharedUIs; + } + + /** + * Specifies whether shared UI delegates are used. + * This does not change already existing UI delegates. + * + * @since 1.6 + */ + public static boolean setUseSharedUIs( boolean useSharedUIs ) { + boolean old = FlatUIUtils.useSharedUIs; + FlatUIUtils.useSharedUIs = useSharedUIs; + return old; + } + /** * Creates a shared component UI for the given key and the current Laf. * Each Laf instance has its own shared component UI instance. @@ -833,6 +855,9 @@ debug*/ * may use multiple Laf instances at the same time. */ public static ComponentUI createSharedUI( Object key, Supplier newInstanceSupplier ) { + if( !useSharedUIs ) + return newInstanceSupplier.get(); + return sharedUIinstances .computeIfAbsent( UIManager.getLookAndFeel(), k -> new IdentityHashMap<>() ) .computeIfAbsent( key, k -> newInstanceSupplier.get() ); 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 22821b11..d6be28d1 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 @@ -181,8 +181,12 @@ public abstract class FlatWindowResizer protected abstract boolean isWindowResizable(); protected abstract Rectangle getWindowBounds(); protected abstract void setWindowBounds( Rectangle r ); + protected abstract boolean limitToParentBounds(); + protected abstract Rectangle getParentBounds(); protected abstract boolean honorMinimumSizeOnResize(); + protected abstract boolean honorMaximumSizeOnResize(); protected abstract Dimension getWindowMinimumSize(); + protected abstract Dimension getWindowMaximumSize(); protected void beginResizing( int direction ) {} protected void endResizing() {} @@ -283,6 +287,16 @@ public abstract class FlatWindowResizer } } + @Override + protected boolean limitToParentBounds() { + return false; + } + + @Override + protected Rectangle getParentBounds() { + return null; + } + @Override protected boolean honorMinimumSizeOnResize() { return @@ -290,11 +304,21 @@ public abstract class FlatWindowResizer (honorDialogMinimumSizeOnResize && window instanceof Dialog); } + @Override + protected boolean honorMaximumSizeOnResize() { + return false; + } + @Override protected Dimension getWindowMinimumSize() { return window.getMinimumSize(); } + @Override + protected Dimension getWindowMaximumSize() { + return window.getMaximumSize(); + } + @Override boolean isDialog() { return window instanceof Dialog; @@ -354,16 +378,36 @@ public abstract class FlatWindowResizer desktopManager.get().resizeFrame( getFrame(), r.x, r.y, r.width, r.height ); } + @Override + protected boolean limitToParentBounds() { + return true; + } + + @Override + protected Rectangle getParentBounds() { + return getFrame().getParent().getBounds(); + } + @Override protected boolean honorMinimumSizeOnResize() { return true; } + @Override + protected boolean honorMaximumSizeOnResize() { + return true; + } + @Override protected Dimension getWindowMinimumSize() { return getFrame().getMinimumSize(); } + @Override + protected Dimension getWindowMaximumSize() { + return getFrame().getMaximumSize(); + } + @Override protected void beginResizing( int direction ) { desktopManager.get().beginResizingFrame( getFrame(), direction ); @@ -521,7 +565,7 @@ debug*/ int xOnScreen = e.getXOnScreen(); int yOnScreen = e.getYOnScreen(); - // Get current window bounds and compute new bounds based them. + // Get current window bounds and compute new bounds based on them. // This is necessary because window manager may alter window bounds while resizing. // E.g. when having two monitors with different scale factors and resizing // a window on first screen to the second screen, then the window manager may @@ -535,41 +579,72 @@ debug*/ // top if( resizeDir == N_RESIZE_CURSOR || resizeDir == NW_RESIZE_CURSOR || resizeDir == NE_RESIZE_CURSOR ) { newBounds.y = yOnScreen - dragTopOffset; + if( limitToParentBounds() && newBounds.y < 0 ) + newBounds.y = 0; newBounds.height += (oldBounds.y - newBounds.y); } // bottom - if( resizeDir == S_RESIZE_CURSOR || resizeDir == SW_RESIZE_CURSOR || resizeDir == SE_RESIZE_CURSOR ) + if( resizeDir == S_RESIZE_CURSOR || resizeDir == SW_RESIZE_CURSOR || resizeDir == SE_RESIZE_CURSOR ) { newBounds.height = (yOnScreen + dragBottomOffset) - newBounds.y; + if( limitToParentBounds() ) { + int parentHeight = getParentBounds().height; + if( newBounds.y + newBounds.height > parentHeight ) + newBounds.height = parentHeight - newBounds.y; + } + } // left if( resizeDir == W_RESIZE_CURSOR || resizeDir == NW_RESIZE_CURSOR || resizeDir == SW_RESIZE_CURSOR ) { newBounds.x = xOnScreen - dragLeftOffset; + if( limitToParentBounds() && newBounds.x < 0 ) + newBounds.x = 0; newBounds.width += (oldBounds.x - newBounds.x); } // right - if( resizeDir == E_RESIZE_CURSOR || resizeDir == NE_RESIZE_CURSOR || resizeDir == SE_RESIZE_CURSOR ) + if( resizeDir == E_RESIZE_CURSOR || resizeDir == NE_RESIZE_CURSOR || resizeDir == SE_RESIZE_CURSOR ) { newBounds.width = (xOnScreen + dragRightOffset) - newBounds.x; + if( limitToParentBounds() ) { + int parentWidth = getParentBounds().width; + if( newBounds.x + newBounds.width > parentWidth ) + newBounds.width = parentWidth - newBounds.x; + } + } // apply minimum window size Dimension minimumSize = honorMinimumSizeOnResize() ? getWindowMinimumSize() : null; if( minimumSize == null ) minimumSize = UIScale.scale( new Dimension( 150, 50 ) ); - if( newBounds.width < minimumSize.width ) { - if( newBounds.x != oldBounds.x ) - newBounds.x -= (minimumSize.width - newBounds.width); - newBounds.width = minimumSize.width; - } - if( newBounds.height < minimumSize.height ) { - if( newBounds.y != oldBounds.y ) - newBounds.y -= (minimumSize.height - newBounds.height); - newBounds.height = minimumSize.height; + if( newBounds.width < minimumSize.width ) + changeWidth( oldBounds, newBounds, minimumSize.width ); + if( newBounds.height < minimumSize.height ) + changeHeight( oldBounds, newBounds, minimumSize.height ); + + // apply maximum window size + if( honorMaximumSizeOnResize() ) { + Dimension maximumSize = getWindowMaximumSize(); + if( newBounds.width > maximumSize.width ) + changeWidth( oldBounds, newBounds, maximumSize.width ); + if( newBounds.height > maximumSize.height ) + changeHeight( oldBounds, newBounds, maximumSize.height ); } // set window bounds if( !newBounds.equals( oldBounds ) ) setWindowBounds( newBounds ); } + + private void changeWidth( Rectangle oldBounds, Rectangle newBounds, int width ) { + if( newBounds.x != oldBounds.x ) + newBounds.x -= (width - newBounds.width); + newBounds.width = width; + } + + private void changeHeight( Rectangle oldBounds, Rectangle newBounds, int height ) { + if( newBounds.y != oldBounds.y ) + newBounds.y -= (height - newBounds.height); + newBounds.height = height; + } } } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowsNativeWindowBorder.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowsNativeWindowBorder.java index 458877bd..9bcca253 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowsNativeWindowBorder.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatWindowsNativeWindowBorder.java @@ -25,6 +25,8 @@ import java.awt.Point; import java.awt.Rectangle; import java.awt.Window; import java.awt.geom.AffineTransform; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.IdentityHashMap; import java.util.List; @@ -289,6 +291,7 @@ class FlatWindowsNativeWindowBorder //---- class WndProc ------------------------------------------------------ private class WndProc + implements PropertyChangeListener { // WM_NCHITTEST mouse position codes private static final int @@ -313,18 +316,36 @@ class FlatWindowsNativeWindowBorder // remove the OS window title bar updateFrame( hwnd, (window instanceof JFrame) ? ((JFrame)window).getExtendedState() : 0 ); + + // set window background (used when resizing window) + updateWindowBackground(); + window.addPropertyChangeListener( "background", this ); } void uninstall() { + window.removePropertyChangeListener( "background", this ); + uninstallImpl( hwnd ); // cleanup window = null; } + @Override + public void propertyChange( PropertyChangeEvent e ) { + updateWindowBackground(); + } + + private void updateWindowBackground() { + Color bg = window.getBackground(); + if( bg != null ) + setWindowBackground( hwnd, bg.getRed(), bg.getGreen(), bg.getBlue() ); + } + private native long installImpl( Window window ); private native void uninstallImpl( long hwnd ); private native void updateFrame( long hwnd, int state ); + private native void setWindowBackground( long hwnd, int r, int g, int b ); private native void showWindow( long hwnd, int cmd ); // invoked from native code 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 66c7cf20..0b7e99f9 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 @@ -26,13 +26,16 @@ import java.awt.Color; public class ColorFunctions { public static Color applyFunctions( Color color, ColorFunction... functions ) { + // convert RGB to HSL float[] hsl = HSLColor.fromRGB( color ); float alpha = color.getAlpha() / 255f; float[] hsla = { hsl[0], hsl[1], hsl[2], alpha * 100 }; + // apply color functions for( ColorFunction function : functions ) function.apply( hsla ); + // convert HSL to RGB return HSLColor.toRGB( hsla[0], hsla[1], hsla[2], hsla[3] / 100 ); } @@ -145,7 +148,46 @@ public class ColorFunctions } } - //---- class HSLIncreaseDecrease ------------------------------------------ + //---- class HSLChange ---------------------------------------------------- + + /** + * Set the hue, saturation, luminance or alpha of a color. + * + * @since 1.6 + */ + public static class HSLChange + implements ColorFunction + { + public final int hslIndex; + public final float value; + + public HSLChange( int hslIndex, float value ) { + this.hslIndex = hslIndex; + this.value = value; + } + + @Override + public void apply( float[] hsla ) { + hsla[hslIndex] = (hslIndex == 0) + ? value % 360 + : clamp( value ); + } + + @Override + public String toString() { + String name; + switch( hslIndex ) { + case 0: name = "changeHue"; break; + case 1: name = "changeSaturation"; break; + case 2: name = "changeLightness"; break; + case 3: name = "changeAlpha"; break; + default: throw new IllegalArgumentException(); + } + return String.format( "%s(%.0f%s)", name, value, (hslIndex == 0 ? "" : "%") ); + } + } + + //---- class Fade --------------------------------------------------------- /** * Set the alpha of a color. @@ -169,4 +211,42 @@ public class ColorFunctions return String.format( "fade(%.0f%%)", amount ); } } + + //---- class Mix ---------------------------------------------------------- + + /** + * Mix two colors. + * + * @since 1.6 + */ + public static class Mix + implements ColorFunction + { + public final Color color2; + public final float weight; + + public Mix( Color color2, float weight ) { + this.color2 = color2; + this.weight = weight; + } + + @Override + public void apply( float[] hsla ) { + // convert from HSL to RGB because color mixing is done on RGB values + Color color1 = 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( "mix(#%08x,%.0f%%)", color2.getRGB(), weight ); + } + } } 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 90c86413..5688074e 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties @@ -514,6 +514,17 @@ ScrollPane.fillUpperCorner = true ScrollPane.smoothScrolling = true +#---- SearchField ---- + +SearchField.searchIconColor = fadeout(Actions.GreyInline,10%,lazy) +SearchField.searchIconHoverColor = fadeout(Actions.GreyInline,30%,lazy) +SearchField.searchIconPressedColor = fadeout(Actions.GreyInline,50%,lazy) + +SearchField.clearIconColor = fadeout(Actions.GreyInline,50%,lazy) +SearchField.clearIconHoverColor = $SearchField.clearIconColor +SearchField.clearIconPressedColor = fadeout(Actions.GreyInline,20%,lazy) + + #---- Separator ---- Separator.height = 3 diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/natives/flatlaf-windows-x86.dll b/flatlaf-core/src/main/resources/com/formdev/flatlaf/natives/flatlaf-windows-x86.dll index 13999d84..9ae26477 100644 Binary files a/flatlaf-core/src/main/resources/com/formdev/flatlaf/natives/flatlaf-windows-x86.dll and b/flatlaf-core/src/main/resources/com/formdev/flatlaf/natives/flatlaf-windows-x86.dll differ diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/natives/flatlaf-windows-x86_64.dll b/flatlaf-core/src/main/resources/com/formdev/flatlaf/natives/flatlaf-windows-x86_64.dll index ee84ce5b..d559992d 100644 Binary files a/flatlaf-core/src/main/resources/com/formdev/flatlaf/natives/flatlaf-windows-x86_64.dll and b/flatlaf-core/src/main/resources/com/formdev/flatlaf/natives/flatlaf-windows-x86_64.dll differ diff --git a/flatlaf-core/svg/CapsLockIcon.svg b/flatlaf-core/svg/CapsLockIcon.svg index 1c45373d..a81e218e 100644 --- a/flatlaf-core/svg/CapsLockIcon.svg +++ b/flatlaf-core/svg/CapsLockIcon.svg @@ -1,7 +1,7 @@ - + diff --git a/flatlaf-core/svg/ClearHoveredIcon.svg b/flatlaf-core/svg/ClearHoveredIcon.svg new file mode 100644 index 00000000..21a9bf01 --- /dev/null +++ b/flatlaf-core/svg/ClearHoveredIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/flatlaf-core/svg/ClearIcon.svg b/flatlaf-core/svg/ClearIcon.svg new file mode 100644 index 00000000..092f8b4e --- /dev/null +++ b/flatlaf-core/svg/ClearIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/flatlaf-core/svg/FlatLaf Icons.sketch b/flatlaf-core/svg/FlatLaf Icons.sketch index 708e7fd1..3f5c46d7 100644 Binary files a/flatlaf-core/svg/FlatLaf Icons.sketch and b/flatlaf-core/svg/FlatLaf Icons.sketch differ diff --git a/flatlaf-core/svg/SearchIcon.svg b/flatlaf-core/svg/SearchIcon.svg new file mode 100644 index 00000000..08fb4505 --- /dev/null +++ b/flatlaf-core/svg/SearchIcon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/flatlaf-core/svg/SearchWithHistoryIcon.svg b/flatlaf-core/svg/SearchWithHistoryIcon.svg new file mode 100644 index 00000000..23903a08 --- /dev/null +++ b/flatlaf-core/svg/SearchWithHistoryIcon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java index 6ab88a5e..942d2472 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java @@ -18,6 +18,10 @@ package com.formdev.flatlaf.demo; import java.awt.*; import java.awt.event.*; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.time.Year; import java.util.ArrayList; import java.util.Arrays; import java.util.prefs.Preferences; @@ -34,8 +38,10 @@ import com.formdev.flatlaf.extras.FlatUIDefaultsInspector; import com.formdev.flatlaf.extras.components.FlatButton; import com.formdev.flatlaf.extras.components.FlatButton.ButtonType; import com.formdev.flatlaf.extras.FlatSVGUtils; +import com.formdev.flatlaf.ui.FlatUIUtils; import com.formdev.flatlaf.ui.JBRCustomDecorations; import com.formdev.flatlaf.util.SystemInfo; +import com.formdev.flatlaf.util.UIScale; import net.miginfocom.layout.ConstraintParser; import net.miginfocom.layout.LC; import net.miginfocom.layout.UnitValue; @@ -127,7 +133,36 @@ class DemoFrame } private void aboutActionPerformed() { - JOptionPane.showMessageDialog( this, "FlatLaf Demo", "About", JOptionPane.PLAIN_MESSAGE ); + JLabel titleLabel = new JLabel( "FlatLaf Demo" ); + Font titleFont = titleLabel.getFont(); + titleLabel.setFont( titleFont.deriveFont( (float) titleFont.getSize() + UIScale.scale( 6 ) ) ); + + String link = "https://www.formdev.com/flatlaf/"; + JLabel linkLabel = new JLabel( "" + link + "" ); + linkLabel.setCursor( Cursor.getPredefinedCursor( Cursor.HAND_CURSOR ) ); + linkLabel.addMouseListener( new MouseAdapter() { + @Override + public void mouseClicked( MouseEvent e ) { + try { + Desktop.getDesktop().browse( new URI( link ) ); + } catch( IOException | URISyntaxException ex ) { + JOptionPane.showMessageDialog( linkLabel, + "Failed to open '" + link + "' in browser.", + "About", JOptionPane.PLAIN_MESSAGE ); + } + } + } ); + + + JOptionPane.showMessageDialog( this, + new Object[] { + titleLabel, + "Demonstrates FlatLaf Swing look and feel", + " ", + "Copyright 2019-" + Year.now() + " FormDev Software GmbH", + linkLabel, + }, + "About", JOptionPane.PLAIN_MESSAGE ); } private void selectedTabChanged() { @@ -185,6 +220,8 @@ class DemoFrame Font font = UIManager.getFont( "defaultFont" ); Font newFont = StyleContext.getDefaultStyleContext().getFont( fontFamily, font.getStyle(), font.getSize() ); + // StyleContext.getFont() may return a UIResource, which would cause loosing user scale factor on Windows + newFont = FlatUIUtils.nonUIResource( newFont ); UIManager.put( "defaultFont", newFont ); FlatLaf.updateUI(); 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 f523e4e6..eb9fcadd 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 @@ -169,14 +169,6 @@ public class IJThemesClassGenerator " }\n" + " }\n" + "\n" + - " /**\n" + - " * @deprecated use {@link #setup()} instead; this method will be removed in a future version\n" + - " */\n" + - " @Deprecated\n" + - " public static boolean install() {\n" + - " return setup();\n" + - " }\n" + - "\n" + " public static void installLafInfo() {\n" + " installLafInfo( NAME, ${themeClass}.class );\n" + " }\n" + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/colors.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/colors.svg index bddfa1b6..012ac84d 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/colors.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/colors.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/copy.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/copy.svg index cfbf4d6d..2200896e 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/copy.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/copy.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/execute.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/execute.svg index 6b05be3b..e6f91072 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/execute.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/execute.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/intentionBulb.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/intentionBulb.svg index 41566135..c92116c9 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/intentionBulb.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/intentionBulb.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/quickfixOffBulb.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/quickfixOffBulb.svg index e53c922b..31a9c5e2 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/quickfixOffBulb.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/quickfixOffBulb.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/suspend.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/suspend.svg index 718f3c31..06de4b81 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/suspend.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/actions/suspend.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/errorDialog.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/errorDialog.svg index c941d6bc..d2bfefae 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/errorDialog.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/errorDialog.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/informationDialog.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/informationDialog.svg index 599b9759..6de434d3 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/informationDialog.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/informationDialog.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/abstractClass.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/abstractClass.svg index fdd31bbc..60182030 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/abstractClass.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/abstractClass.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/abstractMethod.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/abstractMethod.svg index 0ac6b954..7768df1a 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/abstractMethod.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/abstractMethod.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/annotationtype.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/annotationtype.svg index ce03c7e5..b80c54b4 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/annotationtype.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/annotationtype.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/css.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/css.svg index fad092bf..e9c2a887 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/css.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/css.svg @@ -1,10 +1,17 @@ - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/javaScript.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/javaScript.svg index 603b1d9f..0d8fa6fb 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/javaScript.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/javaScript.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/xhtml.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/xhtml.svg index 229a9660..cf262c6a 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/xhtml.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/objects/xhtml.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/warningDialog.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/warningDialog.svg index ce5eb81d..3f405409 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/warningDialog.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/extras/svg/warningDialog.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/RecentlyUsed.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/RecentlyUsed.svg index 10e24cb8..a18b9ec2 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/RecentlyUsed.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/RecentlyUsed.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/back.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/back.svg index c5b84d14..ff353eaa 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/back.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/back.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/buildLoadChanges.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/buildLoadChanges.svg index 02f46df0..4bdef62d 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/buildLoadChanges.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/buildLoadChanges.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/commit.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/commit.svg index a3bc7b6d..8648ba4b 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/commit.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/commit.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/copy.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/copy.svg index cfbf4d6d..2200896e 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/copy.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/copy.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/diff.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/diff.svg index 56821e70..5531b21b 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/diff.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/diff.svg @@ -1,3 +1,4 @@ + 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 index 0d6b0150..c0f92903 100644 --- 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 @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/favorite.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/favorite.svg index 592c1dcc..aa7a7165 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/favorite.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/favorite.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/forward.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/forward.svg index 0ce7c70f..f6a08db2 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/forward.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/forward.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/github.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/github.svg index ac34d527..9224a759 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/github.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/github.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/github_dark.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/github_dark.svg index e406754b..fa10baa3 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/github_dark.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/github_dark.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/listFiles.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/listFiles.svg index 24227136..d08381a3 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/listFiles.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/listFiles.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/menu-cut.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/menu-cut.svg index de353764..924dd144 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/menu-cut.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/menu-cut.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/menu-paste.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/menu-paste.svg index 0e88bad0..3dbe8064 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/menu-paste.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/menu-paste.svg @@ -1,3 +1,8 @@ - - + + + + + + + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/project.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/project.svg index 42dda739..178b315b 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/project.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/project.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/redo.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/redo.svg index 98f4a4cb..f4304ba9 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/redo.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/redo.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/refresh.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/refresh.svg index 74318a20..b1e80620 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/refresh.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/refresh.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/search.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/search.svg index 1cf5bf50..e6982071 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/search.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/search.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/show.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/show.svg index 370c995f..a14861f8 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/show.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/show.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/undo.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/undo.svg index 81bea6ba..c114a458 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/undo.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/undo.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/users.svg b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/users.svg index 135e8e60..23bc7bb4 100644 --- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/users.svg +++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/icons/users.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + + diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatUIDefaultsInspector.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatUIDefaultsInspector.java index 6a49e7c8..596f490e 100644 --- a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatUIDefaultsInspector.java +++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatUIDefaultsInspector.java @@ -700,16 +700,16 @@ public class FlatUIDefaultsInspector if( value instanceof Color ) { Color color = (info instanceof Color[]) ? ((Color[])info)[0] : (Color) value; HSLColor hslColor = new HSLColor( color ); + int hue = Math.round( hslColor.getHue() ); + int saturation = Math.round( hslColor.getSaturation() ); + int luminance = Math.round( hslColor.getLuminance() ); if( color.getAlpha() == 255 ) { return String.format( "%-9s HSL %3d %3d %3d", - color2hex( color ), - (int) hslColor.getHue(), (int) hslColor.getSaturation(), - (int) hslColor.getLuminance() ); + color2hex( color ), hue, saturation, luminance ); } else { + int alpha = Math.round( hslColor.getAlpha() * 100 ); return String.format( "%-9s HSL %3d %3d %3d %2d", - color2hex( color ), - (int) hslColor.getHue(), (int) hslColor.getSaturation(), - (int) hslColor.getLuminance(), (int) (hslColor.getAlpha() * 100) ); + color2hex( color ), hue, saturation, luminance, alpha ); } } else if( value instanceof Insets ) { Insets insets = (Insets) value; diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcDarkIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcDarkIJTheme.java index 0084400e..e0f9d6b1 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcDarkIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcDarkIJTheme.java @@ -39,14 +39,6 @@ public class FlatArcDarkIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatArcDarkIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcDarkOrangeIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcDarkOrangeIJTheme.java index 72c08628..628d4434 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcDarkOrangeIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcDarkOrangeIJTheme.java @@ -39,14 +39,6 @@ public class FlatArcDarkOrangeIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatArcDarkOrangeIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcIJTheme.java index 4e948758..17fbc7ba 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcIJTheme.java @@ -39,14 +39,6 @@ public class FlatArcIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatArcIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcOrangeIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcOrangeIJTheme.java index e9ed5044..d40509f5 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcOrangeIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatArcOrangeIJTheme.java @@ -39,14 +39,6 @@ public class FlatArcOrangeIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatArcOrangeIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCarbonIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCarbonIJTheme.java index fd2c962c..48bf96f0 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCarbonIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCarbonIJTheme.java @@ -39,14 +39,6 @@ public class FlatCarbonIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatCarbonIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCobalt2IJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCobalt2IJTheme.java index 41000f3f..2cc1499e 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCobalt2IJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCobalt2IJTheme.java @@ -39,14 +39,6 @@ public class FlatCobalt2IJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatCobalt2IJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCyanLightIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCyanLightIJTheme.java index 37eda60a..ed4ff2d0 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCyanLightIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatCyanLightIJTheme.java @@ -39,14 +39,6 @@ public class FlatCyanLightIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatCyanLightIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDarkFlatIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDarkFlatIJTheme.java index 34ecd687..dfaa0595 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDarkFlatIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDarkFlatIJTheme.java @@ -39,14 +39,6 @@ public class FlatDarkFlatIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatDarkFlatIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDarkPurpleIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDarkPurpleIJTheme.java index 9bad9449..fe58f92c 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDarkPurpleIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDarkPurpleIJTheme.java @@ -39,14 +39,6 @@ public class FlatDarkPurpleIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatDarkPurpleIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDraculaIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDraculaIJTheme.java index 89abe663..4cdbaf69 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDraculaIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatDraculaIJTheme.java @@ -39,14 +39,6 @@ public class FlatDraculaIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatDraculaIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoDarkFuchsiaIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoDarkFuchsiaIJTheme.java index 01b36571..0040d110 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoDarkFuchsiaIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoDarkFuchsiaIJTheme.java @@ -39,14 +39,6 @@ public class FlatGradiantoDarkFuchsiaIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGradiantoDarkFuchsiaIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoDeepOceanIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoDeepOceanIJTheme.java index 8804f47c..184027d9 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoDeepOceanIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoDeepOceanIJTheme.java @@ -39,14 +39,6 @@ public class FlatGradiantoDeepOceanIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGradiantoDeepOceanIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoMidnightBlueIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoMidnightBlueIJTheme.java index ec0c30dd..24ccae7c 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoMidnightBlueIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoMidnightBlueIJTheme.java @@ -39,14 +39,6 @@ public class FlatGradiantoMidnightBlueIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGradiantoMidnightBlueIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoNatureGreenIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoNatureGreenIJTheme.java index d39f5ff4..5effda2c 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoNatureGreenIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoNatureGreenIJTheme.java @@ -39,14 +39,6 @@ public class FlatGradiantoNatureGreenIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGradiantoNatureGreenIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGrayIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGrayIJTheme.java index 4c32e9d1..a402ec58 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGrayIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGrayIJTheme.java @@ -39,14 +39,6 @@ public class FlatGrayIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGrayIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkHardIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkHardIJTheme.java index 015796df..bc59fe28 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkHardIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkHardIJTheme.java @@ -39,14 +39,6 @@ public class FlatGruvboxDarkHardIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGruvboxDarkHardIJTheme.class ); } 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 index 59253fff..19be856d 100644 --- 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 @@ -39,14 +39,6 @@ public class FlatGruvboxDarkMediumIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGruvboxDarkMediumIJTheme.class ); } 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 index a9fea531..a85e6b69 100644 --- 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 @@ -39,14 +39,6 @@ public class FlatGruvboxDarkSoftIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGruvboxDarkSoftIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatHiberbeeDarkIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatHiberbeeDarkIJTheme.java index 0b2804db..89424ae5 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatHiberbeeDarkIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatHiberbeeDarkIJTheme.java @@ -39,14 +39,6 @@ public class FlatHiberbeeDarkIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatHiberbeeDarkIJTheme.class ); } 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 2b8b9cb1..7fe86eb3 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 @@ -39,14 +39,6 @@ public class FlatHighContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatHighContrastIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatLightFlatIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatLightFlatIJTheme.java index cb8bbd0f..230a282d 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatLightFlatIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatLightFlatIJTheme.java @@ -39,14 +39,6 @@ public class FlatLightFlatIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatLightFlatIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatMaterialDesignDarkIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatMaterialDesignDarkIJTheme.java index 4d33d029..4faf5bef 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatMaterialDesignDarkIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatMaterialDesignDarkIJTheme.java @@ -39,14 +39,6 @@ public class FlatMaterialDesignDarkIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMaterialDesignDarkIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatMonocaiIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatMonocaiIJTheme.java index 411fcc23..dbd61b32 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatMonocaiIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatMonocaiIJTheme.java @@ -39,14 +39,6 @@ public class FlatMonocaiIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMonocaiIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatNordIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatNordIJTheme.java index 73ce2031..369f4eaa 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatNordIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatNordIJTheme.java @@ -39,14 +39,6 @@ public class FlatNordIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatNordIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatOneDarkIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatOneDarkIJTheme.java index 6d7be7f9..f3ea80ea 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatOneDarkIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatOneDarkIJTheme.java @@ -39,14 +39,6 @@ public class FlatOneDarkIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatOneDarkIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSolarizedDarkIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSolarizedDarkIJTheme.java index 90d4be48..3818c59e 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSolarizedDarkIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSolarizedDarkIJTheme.java @@ -39,14 +39,6 @@ public class FlatSolarizedDarkIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatSolarizedDarkIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSolarizedLightIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSolarizedLightIJTheme.java index e886bffa..bf7d22df 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSolarizedLightIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSolarizedLightIJTheme.java @@ -39,14 +39,6 @@ public class FlatSolarizedLightIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatSolarizedLightIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSpacegrayIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSpacegrayIJTheme.java index 1f8fe489..15b23360 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSpacegrayIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatSpacegrayIJTheme.java @@ -39,14 +39,6 @@ public class FlatSpacegrayIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatSpacegrayIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatVuesionIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatVuesionIJTheme.java index d790020c..f97c15ed 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatVuesionIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatVuesionIJTheme.java @@ -39,14 +39,6 @@ public class FlatVuesionIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatVuesionIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatArcDarkContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatArcDarkContrastIJTheme.java index da7947aa..b03012bb 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatArcDarkContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatArcDarkContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatArcDarkContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatArcDarkContrastIJTheme.class ); } 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/FlatArcDarkIJTheme.java index fdb9e716..0cbce003 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/FlatArcDarkIJTheme.java @@ -39,14 +39,6 @@ public class FlatArcDarkIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatArcDarkIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneDarkContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneDarkContrastIJTheme.java index 866f290f..33ef4994 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneDarkContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneDarkContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatAtomOneDarkContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatAtomOneDarkContrastIJTheme.class ); } 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/FlatAtomOneDarkIJTheme.java index 08b985c1..e72a2814 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/FlatAtomOneDarkIJTheme.java @@ -39,14 +39,6 @@ public class FlatAtomOneDarkIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatAtomOneDarkIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneLightContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneLightContrastIJTheme.java index eabeb68b..4945d26a 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneLightContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatAtomOneLightContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatAtomOneLightContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatAtomOneLightContrastIJTheme.class ); } 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/FlatAtomOneLightIJTheme.java index 044f35ae..9c47569f 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/FlatAtomOneLightIJTheme.java @@ -39,14 +39,6 @@ public class FlatAtomOneLightIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatAtomOneLightIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatDraculaContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatDraculaContrastIJTheme.java index ffef1ed3..787ad8bc 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatDraculaContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatDraculaContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatDraculaContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatDraculaContrastIJTheme.class ); } 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/FlatDraculaIJTheme.java index 6e70268f..c3f44f7f 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/FlatDraculaIJTheme.java @@ -39,14 +39,6 @@ public class FlatDraculaIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatDraculaIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubContrastIJTheme.java index d97c3ae2..a6bacee4 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatGitHubContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGitHubContrastIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubDarkContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubDarkContrastIJTheme.java index 715a5c71..3673dc1c 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubDarkContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatGitHubDarkContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatGitHubDarkContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGitHubDarkContrastIJTheme.class ); } 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/FlatGitHubDarkIJTheme.java index 7f29cc09..176e3ac6 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/FlatGitHubDarkIJTheme.java @@ -39,14 +39,6 @@ public class FlatGitHubDarkIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGitHubDarkIJTheme.class ); } 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/FlatGitHubIJTheme.java index 669899fd..ece0d023 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/FlatGitHubIJTheme.java @@ -39,14 +39,6 @@ public class FlatGitHubIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatGitHubIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatLightOwlContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatLightOwlContrastIJTheme.java index 761c08a7..527b8a48 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatLightOwlContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatLightOwlContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatLightOwlContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatLightOwlContrastIJTheme.class ); } 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/FlatLightOwlIJTheme.java index dada52e8..6bdc770f 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/FlatLightOwlIJTheme.java @@ -39,14 +39,6 @@ public class FlatLightOwlIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatLightOwlIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDarkerContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDarkerContrastIJTheme.java index 37ee447a..49101b37 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDarkerContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDarkerContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatMaterialDarkerContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMaterialDarkerContrastIJTheme.class ); } 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/FlatMaterialDarkerIJTheme.java index f373c39a..26d460f7 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/FlatMaterialDarkerIJTheme.java @@ -39,14 +39,6 @@ public class FlatMaterialDarkerIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMaterialDarkerIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDeepOceanContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDeepOceanContrastIJTheme.java index f49e78c1..4d81f51c 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDeepOceanContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialDeepOceanContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatMaterialDeepOceanContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMaterialDeepOceanContrastIJTheme.class ); } 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/FlatMaterialDeepOceanIJTheme.java index 423ce388..d1e1a00a 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/FlatMaterialDeepOceanIJTheme.java @@ -39,14 +39,6 @@ public class FlatMaterialDeepOceanIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMaterialDeepOceanIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialLighterContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialLighterContrastIJTheme.java index 1f589f52..86318c39 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialLighterContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialLighterContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatMaterialLighterContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMaterialLighterContrastIJTheme.class ); } 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/FlatMaterialLighterIJTheme.java index ceb13702..08fe26cb 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/FlatMaterialLighterIJTheme.java @@ -39,14 +39,6 @@ public class FlatMaterialLighterIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMaterialLighterIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialOceanicContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialOceanicContrastIJTheme.java index 829df8ac..18031bc9 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialOceanicContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialOceanicContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatMaterialOceanicContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMaterialOceanicContrastIJTheme.class ); } 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/FlatMaterialOceanicIJTheme.java index ae83dc5f..1e3dae88 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/FlatMaterialOceanicIJTheme.java @@ -39,14 +39,6 @@ public class FlatMaterialOceanicIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMaterialOceanicIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialPalenightContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialPalenightContrastIJTheme.java index 898306ce..f375fbfe 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialPalenightContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMaterialPalenightContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatMaterialPalenightContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMaterialPalenightContrastIJTheme.class ); } 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/FlatMaterialPalenightIJTheme.java index 492276ff..173f05b2 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/FlatMaterialPalenightIJTheme.java @@ -39,14 +39,6 @@ public class FlatMaterialPalenightIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMaterialPalenightIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMonokaiProContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMonokaiProContrastIJTheme.java index 732213eb..b0beb52b 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMonokaiProContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMonokaiProContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatMonokaiProContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMonokaiProContrastIJTheme.class ); } 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/FlatMonokaiProIJTheme.java index 7c780377..a1c84b1d 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/FlatMonokaiProIJTheme.java @@ -39,14 +39,6 @@ public class FlatMonokaiProIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMonokaiProIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMoonlightContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMoonlightContrastIJTheme.java index c4a77641..71b1c538 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMoonlightContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMoonlightContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatMoonlightContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMoonlightContrastIJTheme.class ); } 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/FlatMoonlightIJTheme.java index f0b8af7f..e0d6c261 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/FlatMoonlightIJTheme.java @@ -39,14 +39,6 @@ public class FlatMoonlightIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatMoonlightIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatNightOwlContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatNightOwlContrastIJTheme.java index 7c17e496..714c727c 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatNightOwlContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatNightOwlContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatNightOwlContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatNightOwlContrastIJTheme.class ); } 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/FlatNightOwlIJTheme.java index b2b153a4..3c3a1d6e 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/FlatNightOwlIJTheme.java @@ -39,14 +39,6 @@ public class FlatNightOwlIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatNightOwlIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedDarkContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedDarkContrastIJTheme.java index 6dc7ac5a..32bcd01e 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedDarkContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedDarkContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatSolarizedDarkContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatSolarizedDarkContrastIJTheme.class ); } 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/FlatSolarizedDarkIJTheme.java index cce0d2eb..9c5c66b2 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/FlatSolarizedDarkIJTheme.java @@ -39,14 +39,6 @@ public class FlatSolarizedDarkIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatSolarizedDarkIJTheme.class ); } diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedLightContrastIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedLightContrastIJTheme.java index fedf9929..696a83df 100644 --- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedLightContrastIJTheme.java +++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatSolarizedLightContrastIJTheme.java @@ -39,14 +39,6 @@ public class FlatSolarizedLightContrastIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatSolarizedLightContrastIJTheme.class ); } 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/FlatSolarizedLightIJTheme.java index b57bea3a..970293e7 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/FlatSolarizedLightIJTheme.java @@ -39,14 +39,6 @@ public class FlatSolarizedLightIJTheme } } - /** - * @deprecated use {@link #setup()} instead; this method will be removed in a future version - */ - @Deprecated - public static boolean install() { - return setup(); - } - public static void installLafInfo() { installLafInfo( NAME, FlatSolarizedLightIJTheme.class ); } diff --git a/flatlaf-natives/flatlaf-natives-jna/src/main/java/com/formdev/flatlaf/natives/jna/windows/FlatWindowsNativeWindowBorder.java b/flatlaf-natives/flatlaf-natives-jna/src/main/java/com/formdev/flatlaf/natives/jna/windows/FlatWindowsNativeWindowBorder.java index 148c204e..59180560 100644 --- a/flatlaf-natives/flatlaf-natives-jna/src/main/java/com/formdev/flatlaf/natives/jna/windows/FlatWindowsNativeWindowBorder.java +++ b/flatlaf-natives/flatlaf-natives-jna/src/main/java/com/formdev/flatlaf/natives/jna/windows/FlatWindowsNativeWindowBorder.java @@ -28,6 +28,8 @@ import java.awt.Point; import java.awt.Rectangle; import java.awt.Window; import java.awt.geom.AffineTransform; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.IdentityHashMap; import java.util.List; @@ -47,6 +49,7 @@ import com.sun.jna.Structure.FieldOrder; import com.sun.jna.platform.win32.Advapi32Util; import com.sun.jna.platform.win32.BaseTSD; import com.sun.jna.platform.win32.BaseTSD.ULONG_PTR; +import com.sun.jna.platform.win32.GDI32; import com.sun.jna.platform.win32.Shell32; import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.WTypes.LPWSTR; @@ -282,11 +285,12 @@ public class FlatWindowsNativeWindowBorder //---- class WndProc ------------------------------------------------------ private class WndProc - implements WindowProc + implements WindowProc, PropertyChangeListener { private static final int GWLP_WNDPROC = -4; private static final int + WM_ERASEBKGND = 0x0014, WM_NCCALCSIZE = 0x0083, WM_NCHITTEST = 0x0084, WM_NCRBUTTONUP = 0x00A5, @@ -326,6 +330,7 @@ public class FlatWindowsNativeWindowBorder private final HWND hwnd; private final BaseTSD.LONG_PTR defaultWndProc; private int wmSizeWParam = -1; + private HBRUSH background; private int titleBarHeight; private Rectangle[] hitTestSpots; @@ -345,9 +350,15 @@ public class FlatWindowsNativeWindowBorder // remove the OS window title bar updateFrame( (window instanceof JFrame) ? ((JFrame)window).getExtendedState() : 0 ); + + // set window background (used when resizing window) + updateWindowBackground(); + window.addPropertyChangeListener( "background", this ); } void uninstall() { + window.removePropertyChangeListener( "background", this ); + // restore original window procedure if( SystemInfo.isX86_64 ) User32Ex.INSTANCE.SetWindowLongPtr( hwnd, GWLP_WNDPROC, defaultWndProc ); @@ -358,6 +369,8 @@ public class FlatWindowsNativeWindowBorder updateFrame( 0 ); // cleanup + if( background != null ) + GDI32.INSTANCE.DeleteObject( background ); window = null; } @@ -382,6 +395,26 @@ public class FlatWindowsNativeWindowBorder wmSizeWParam = -1; } + @Override + public void propertyChange( PropertyChangeEvent evt ) { + updateWindowBackground(); + } + + private void updateWindowBackground() { + Color bg = window.getBackground(); + if( bg != null ) + setWindowBackground( bg.getRed(), bg.getGreen(), bg.getBlue() ); + } + + private void setWindowBackground( int r, int g, int b ) { + // delete old background brush + if( background != null ) + GDI32.INSTANCE.DeleteObject( background ); + + // create new background brush + background = GDI32Ex.INSTANCE.CreateSolidBrush( RGB( r, g, b ) ); + } + /** * NOTE: This method is invoked on the AWT-Windows thread (not the AWT-EventQueue thread). */ @@ -408,6 +441,9 @@ public class FlatWindowsNativeWindowBorder wParam = new WPARAM( wmSizeWParam ); break; + case WM_ERASEBKGND: + return WmEraseBkgnd( hwnd, uMsg, wParam, lParam ); + case WM_DESTROY: return WmDestroy( hwnd, uMsg, wParam, lParam ); } @@ -432,11 +468,30 @@ public class FlatWindowsNativeWindowBorder // cleanup windowsMap.remove( window ); + if( background != null ) + GDI32.INSTANCE.DeleteObject( background ); window = null; return lResult; } + /** + * Handle WM_ERASEBKGND + * + * https://docs.microsoft.com/en-us/windows/win32/winmsg/wm-erasebkgnd + */ + LRESULT WmEraseBkgnd( HWND hwnd, int uMsg, WPARAM wParam, LPARAM lParam ) { + if( background == null ) + return new LRESULT( 0 ); + + // fill background + HDC hdc = new HDC( wParam.toPointer() ); + RECT rect = new RECT(); + User32.INSTANCE.GetClientRect( hwnd, rect ); + User32Ex.INSTANCE.FillRect( hdc, rect, background ); + return new LRESULT( 1 ); + } + /** * Handle WM_NCCALCSIZE * @@ -637,6 +692,13 @@ public class FlatWindowsNativeWindowBorder return (short) ((lParam.longValue() >> 16) & 0xffff); } + /** + * Same implementation as RGB(r,g,b) macro in wingdi.h. + */ + private DWORD RGB( int r, int g, int b ) { + return new DWORD( (r & 0xff) | ((g & 0xff) << 8) | ((b & 0xff) << 16) ); + } + /** * Opens the window's system menu. * The system menu is the menu that opens when the user presses Alt+Space or @@ -690,6 +752,8 @@ public class FlatWindowsNativeWindowBorder LONG_PTR SetWindowLong( HWND hWnd, int nIndex, LONG_PTR wndProc ); LRESULT CallWindowProc( LONG_PTR lpPrevWndFunc, HWND hWnd, int uMsg, WPARAM wParam, LPARAM lParam ); + int FillRect( HDC hDC, RECT lprc, HBRUSH hbr ); + int GetDpiForWindow( HWND hwnd ); int GetSystemMetricsForDpi( int nIndex, int dpi ); @@ -702,6 +766,16 @@ public class FlatWindowsNativeWindowBorder BOOL TrackPopupMenu( HMENU hMenu, int uFlags, int x, int y, int nReserved, HWND hWnd, RECT prcRect ); } + //---- interface GDI32Ex -------------------------------------------------- + + private interface GDI32Ex + extends GDI32 + { + GDI32Ex INSTANCE = Native.load( "gdi32", GDI32Ex.class, W32APIOptions.DEFAULT_OPTIONS ); + + HBRUSH CreateSolidBrush( DWORD color ); + } + //---- class NCCALCSIZE_PARAMS -------------------------------------------- @FieldOrder( { "rgrc" } ) diff --git a/flatlaf-natives/flatlaf-natives-windows/build.gradle.kts b/flatlaf-natives/flatlaf-natives-windows/build.gradle.kts index 0dfa7b08..ba831e20 100644 --- a/flatlaf-natives/flatlaf-natives-windows/build.gradle.kts +++ b/flatlaf-natives/flatlaf-natives-windows/build.gradle.kts @@ -73,8 +73,8 @@ library { linkerArgs.addAll( toolChain.map { when( it ) { - is Gcc, is Clang -> listOf( "-l${jawt}", "-lUser32", "-lshell32", "-lAdvAPI32", "-lKernel32" ) - is VisualCpp -> listOf( "${jawt}.lib", "User32.lib", "shell32.lib", "AdvAPI32.lib", "Kernel32.lib", "/NODEFAULTLIB" ) + is Gcc, is Clang -> listOf( "-l${jawt}", "-lUser32", "-lGdi32", "-lshell32", "-lAdvAPI32", "-lKernel32" ) + is VisualCpp -> listOf( "${jawt}.lib", "User32.lib", "Gdi32.lib", "shell32.lib", "AdvAPI32.lib", "Kernel32.lib", "/NODEFAULTLIB" ) else -> emptyList() } } ) diff --git a/flatlaf-natives/flatlaf-natives-windows/src/main/cpp/FlatWndProc.cpp b/flatlaf-natives/flatlaf-natives-windows/src/main/cpp/FlatWndProc.cpp index 5708b1a0..0e33534c 100644 --- a/flatlaf-natives/flatlaf-natives-windows/src/main/cpp/FlatWndProc.cpp +++ b/flatlaf-natives/flatlaf-natives-windows/src/main/cpp/FlatWndProc.cpp @@ -52,6 +52,13 @@ JNIEXPORT void JNICALL Java_com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder FlatWndProc::updateFrame( reinterpret_cast( hwnd ), state ); } +extern "C" +JNIEXPORT void JNICALL Java_com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_00024WndProc_setWindowBackground + ( JNIEnv* env, jobject obj, jlong hwnd, jint r, jint g, jint b ) +{ + FlatWndProc::setWindowBackground( reinterpret_cast( hwnd ), r, g, b ); +} + extern "C" JNIEXPORT void JNICALL Java_com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_00024WndProc_showWindow ( JNIEnv* env, jobject obj, jlong hwnd, jint cmd ) @@ -80,6 +87,7 @@ FlatWndProc::FlatWndProc() { hwnd = NULL; defaultWndProc = NULL; wmSizeWParam = -1; + background = NULL; } HWND FlatWndProc::install( JNIEnv *env, jobject obj, jobject window ) { @@ -128,6 +136,8 @@ void FlatWndProc::uninstall( JNIEnv *env, jobject obj, HWND hwnd ) { // cleanup env->DeleteGlobalRef( fwp->obj ); + if( fwp->background != NULL ) + ::DeleteObject( fwp->background ); delete fwp; } @@ -174,8 +184,23 @@ void FlatWndProc::updateFrame( HWND hwnd, int state ) { fwp->wmSizeWParam = -1; } +void FlatWndProc::setWindowBackground( HWND hwnd, int r, int g, int b ) { + FlatWndProc* fwp = (FlatWndProc*) hwndMap->get( hwnd ); + if( fwp == NULL ) + return; + + // delete old background brush + if( fwp->background != NULL ) + ::DeleteObject( fwp->background ); + + // create new background brush + fwp->background = ::CreateSolidBrush( RGB( r, g, b ) ); +} + LRESULT CALLBACK FlatWndProc::StaticWindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { FlatWndProc* fwp = (FlatWndProc*) hwndMap->get( hwnd ); + if( fwp == NULL ) + return 0; return fwp->WindowProc( hwnd, uMsg, wParam, lParam ); } @@ -204,12 +229,16 @@ LRESULT CALLBACK FlatWndProc::WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, L wParam = wmSizeWParam; break; + case WM_ERASEBKGND: + return WmEraseBkgnd( hwnd, uMsg, wParam, lParam ); + case WM_DESTROY: return WmDestroy( hwnd, uMsg, wParam, lParam ); } return ::CallWindowProc( defaultWndProc, hwnd, uMsg, wParam, lParam ); } + /** * Handle WM_DESTROY * @@ -223,6 +252,8 @@ LRESULT FlatWndProc::WmDestroy( HWND hwnd, int uMsg, WPARAM wParam, LPARAM lPara // cleanup getEnv()->DeleteGlobalRef( obj ); + if( background != NULL ) + ::DeleteObject( background ); hwndMap->remove( hwnd ); delete this; @@ -230,6 +261,23 @@ LRESULT FlatWndProc::WmDestroy( HWND hwnd, int uMsg, WPARAM wParam, LPARAM lPara return ::CallWindowProc( defaultWndProc2, hwnd, uMsg, wParam, lParam ); } +/** + * Handle WM_ERASEBKGND + * + * https://docs.microsoft.com/en-us/windows/win32/winmsg/wm-erasebkgnd + */ +LRESULT FlatWndProc::WmEraseBkgnd( HWND hwnd, int uMsg, WPARAM wParam, LPARAM lParam ) { + if( background == NULL ) + return FALSE; + + // fill background + HDC hdc = (HDC) wParam; + RECT rect; + ::GetClientRect( hwnd, &rect ); + ::FillRect( hdc, &rect, background ); + return TRUE; +} + /** * Handle WM_NCCALCSIZE * diff --git a/flatlaf-natives/flatlaf-natives-windows/src/main/cpp/FlatWndProc.h b/flatlaf-natives/flatlaf-natives-windows/src/main/cpp/FlatWndProc.h index 52d68789..900286c0 100644 --- a/flatlaf-natives/flatlaf-natives-windows/src/main/cpp/FlatWndProc.h +++ b/flatlaf-natives/flatlaf-natives-windows/src/main/cpp/FlatWndProc.h @@ -26,6 +26,7 @@ public: static HWND install( JNIEnv *env, jobject obj, jobject window ); static void uninstall( JNIEnv *env, jobject obj, HWND hwnd ); static void updateFrame( HWND hwnd, int state ); + static void setWindowBackground( HWND hwnd, int r, int g, int b ); private: static int initialized; @@ -41,6 +42,7 @@ private: HWND hwnd; WNDPROC defaultWndProc; int wmSizeWParam; + HBRUSH background; FlatWndProc(); static void initIDs( JNIEnv *env, jobject obj ); @@ -48,6 +50,7 @@ private: static LRESULT CALLBACK StaticWindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); LRESULT CALLBACK WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); LRESULT WmDestroy( HWND hwnd, int uMsg, WPARAM wParam, LPARAM lParam ); + LRESULT WmEraseBkgnd( HWND hwnd, int uMsg, WPARAM wParam, LPARAM lParam ); LRESULT WmNcCalcSize( HWND hwnd, int uMsg, WPARAM wParam, LPARAM lParam ); LRESULT WmNcHitTest( HWND hwnd, int uMsg, WPARAM wParam, LPARAM lParam ); diff --git a/flatlaf-natives/flatlaf-natives-windows/src/main/headers/com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_WndProc.h b/flatlaf-natives/flatlaf-natives-windows/src/main/headers/com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_WndProc.h index 7e586697..8f5e28e0 100644 --- a/flatlaf-natives/flatlaf-natives-windows/src/main/headers/com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_WndProc.h +++ b/flatlaf-natives/flatlaf-natives-windows/src/main/headers/com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_WndProc.h @@ -39,6 +39,14 @@ JNIEXPORT void JNICALL Java_com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder JNIEXPORT void JNICALL Java_com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_00024WndProc_updateFrame (JNIEnv *, jobject, jlong, jint); +/* + * Class: com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_WndProc + * Method: setWindowBackground + * Signature: (JIII)V + */ +JNIEXPORT void JNICALL Java_com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_00024WndProc_setWindowBackground + (JNIEnv *, jobject, jlong, jint, jint, jint); + /* * Class: com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_WndProc * Method: showWindow 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 b15408db..54e323ce 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 @@ -42,3 +42,18 @@ JXTitledPanel.borderColor = $Button.borderColor JXTitledPanel.titleBackground = $TaskPane.titleBackgroundGradientStart JXTitledPanel.titleForeground = $TaskPane.titleForeground JXTitledPanel.captionInsets = 4,10,4,10 + + +#---- SearchField ---- + +SearchField.icon = com.formdev.flatlaf.icons.FlatSearchIcon +SearchField.rolloverIcon = lazy(SearchField.icon) +SearchField.pressedIcon = lazy(SearchField.icon) + +SearchField.popupIcon = com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon +SearchField.popupRolloverIcon = lazy(SearchField.popupIcon) +SearchField.popupPressedIcon = lazy(SearchField.popupIcon) + +SearchField.clearIcon = com.formdev.flatlaf.icons.FlatClearIcon +SearchField.clearRolloverIcon = lazy(SearchField.clearIcon) +SearchField.clearPressedIcon = lazy(SearchField.clearIcon) diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0_202.txt index 3f8b2da4..90eae36a 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0_202.txt @@ -18,7 +18,7 @@ #---- CheckBox ---- -- CheckBox.icon.focusedBackground #466d944d 30% javax.swing.plaf.ColorUIResource [UI] +- CheckBox.icon.focusedBackground #466d944d 30% HSLA 210 36 43 30 javax.swing.plaf.ColorUIResource [UI] #---- ComboBox ---- @@ -71,11 +71,11 @@ #---- ProgressBar ---- -- ProgressBar.foreground #4a88c7 javax.swing.plaf.ColorUIResource [UI] -+ ProgressBar.foreground #a0a0a0 javax.swing.plaf.ColorUIResource [UI] +- ProgressBar.foreground #4a88c7 HSL 210 53 54 javax.swing.plaf.ColorUIResource [UI] ++ ProgressBar.foreground #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] -- ProgressBar.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -+ ProgressBar.selectionForeground #3c3f41 javax.swing.plaf.ColorUIResource [UI] +- ProgressBar.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] ++ ProgressBar.selectionForeground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] #---- RadioButton ---- diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202.txt index 8ddfceaa..2f401fdc 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202.txt @@ -12,12 +12,12 @@ AATextInfoPropertyKey [unknown type] sun.swing.SwingUtilities2$AATextIn #---- Actions ---- -Actions.Blue #3592c4 javax.swing.plaf.ColorUIResource [UI] -Actions.Green #499c54 javax.swing.plaf.ColorUIResource [UI] -Actions.Grey #afb1b3 javax.swing.plaf.ColorUIResource [UI] -Actions.GreyInline #7f8b91 javax.swing.plaf.ColorUIResource [UI] -Actions.Red #c75450 javax.swing.plaf.ColorUIResource [UI] -Actions.Yellow #f0a732 javax.swing.plaf.ColorUIResource [UI] +Actions.Blue #3592c4 HSL 201 57 49 javax.swing.plaf.ColorUIResource [UI] +Actions.Green #499c54 HSL 128 36 45 javax.swing.plaf.ColorUIResource [UI] +Actions.Grey #afb1b3 HSL 210 3 69 javax.swing.plaf.ColorUIResource [UI] +Actions.GreyInline #7f8b91 HSL 200 8 53 javax.swing.plaf.ColorUIResource [UI] +Actions.Red #c75450 HSL 2 52 55 javax.swing.plaf.ColorUIResource [UI] +Actions.Yellow #f0a732 HSL 37 86 57 javax.swing.plaf.ColorUIResource [UI] #---- AuditoryCues ---- @@ -62,49 +62,49 @@ BusyLabelUI com.formdev.flatlaf.swingx.ui.FlatBusyLabelUI #---- Button ---- Button.arc 6 -Button.background #4c5052 javax.swing.plaf.ColorUIResource [UI] +Button.background #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] Button.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] -Button.borderColor #5e6060 javax.swing.plaf.ColorUIResource [UI] +Button.borderColor #5e6060 HSL 180 1 37 javax.swing.plaf.ColorUIResource [UI] Button.borderWidth 1 -Button.darkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI] -Button.default.background #365880 javax.swing.plaf.ColorUIResource [UI] +Button.darkShadow #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] +Button.default.background #365880 HSL 212 41 36 javax.swing.plaf.ColorUIResource [UI] Button.default.boldText true -Button.default.borderColor #4c708c javax.swing.plaf.ColorUIResource [UI] +Button.default.borderColor #4c708c HSL 206 30 42 javax.swing.plaf.ColorUIResource [UI] Button.default.borderWidth 1 -Button.default.focusColor #43688c javax.swing.plaf.ColorUIResource [UI] -Button.default.focusedBorderColor #537699 javax.swing.plaf.ColorUIResource [UI] -Button.default.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Button.default.hoverBackground #3b5f8b com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) -Button.default.hoverBorderColor #537699 javax.swing.plaf.ColorUIResource [UI] -Button.default.pressedBackground #3f6796 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) +Button.default.focusColor #43688c HSL 210 35 41 javax.swing.plaf.ColorUIResource [UI] +Button.default.focusedBorderColor #537699 HSL 210 30 46 javax.swing.plaf.ColorUIResource [UI] +Button.default.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Button.default.hoverBackground #3b5f8b HSL 213 40 39 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) +Button.default.hoverBorderColor #537699 HSL 210 30 46 javax.swing.plaf.ColorUIResource [UI] +Button.default.pressedBackground #3f6796 HSL 212 41 42 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) Button.defaultButtonFollowsFocus false -Button.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -Button.disabledBorderColor #5e6060 javax.swing.plaf.ColorUIResource [UI] -Button.disabledForeground #888888 javax.swing.plaf.ColorUIResource [UI] -Button.disabledSelectedBackground #53585a com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) -Button.disabledText #888888 javax.swing.plaf.ColorUIResource [UI] -Button.focusedBorderColor #466d94 javax.swing.plaf.ColorUIResource [UI] +Button.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +Button.disabledBorderColor #5e6060 HSL 180 1 37 javax.swing.plaf.ColorUIResource [UI] +Button.disabledForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +Button.disabledSelectedBackground #53585a HSL 197 4 34 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) +Button.disabledText #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +Button.focusedBorderColor #466d94 HSL 210 36 43 javax.swing.plaf.ColorUIResource [UI] Button.font [active] $defaultFont [UI] -Button.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Button.highlight #242424 javax.swing.plaf.ColorUIResource [UI] -Button.hoverBackground #53585a com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) -Button.hoverBorderColor #466d94 javax.swing.plaf.ColorUIResource [UI] +Button.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Button.highlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] +Button.hoverBackground #53585a HSL 197 4 34 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) +Button.hoverBorderColor #466d94 HSL 210 36 43 javax.swing.plaf.ColorUIResource [UI] Button.iconTextGap 4 Button.innerFocusWidth 1 -Button.light #313131 javax.swing.plaf.ColorUIResource [UI] +Button.light #313131 HSL 0 0 19 javax.swing.plaf.ColorUIResource [UI] Button.margin 2,14,2,14 javax.swing.plaf.InsetsUIResource [UI] Button.minimumWidth 72 -Button.pressedBackground #5b5f62 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) +Button.pressedBackground #5b5f62 HSL 206 4 37 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) Button.rollover true -Button.selectedBackground #656a6c com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) -Button.selectedForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Button.shadow #646464 javax.swing.plaf.ColorUIResource [UI] +Button.selectedBackground #656a6c HSL 197 3 41 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +Button.selectedForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Button.shadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] Button.textIconGap 4 Button.textShiftOffset 0 -Button.toolbar.hoverBackground #4e5355 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1% autoInverse) +Button.toolbar.hoverBackground #4e5355 HSL 197 4 32 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1% autoInverse) Button.toolbar.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -Button.toolbar.pressedBackground #565a5d com.formdev.flatlaf.util.DerivedColor [UI] lighten(4% autoInverse) -Button.toolbar.selectedBackground #5d6265 com.formdev.flatlaf.util.DerivedColor [UI] lighten(7% autoInverse) +Button.toolbar.pressedBackground #565a5d HSL 206 4 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(4% autoInverse) +Button.toolbar.selectedBackground #5d6265 HSL 203 4 38 com.formdev.flatlaf.util.DerivedColor [UI] lighten(7% autoInverse) Button.toolbar.spacingInsets 1,2,1,2 javax.swing.plaf.InsetsUIResource [UI] ButtonUI com.formdev.flatlaf.ui.FlatButtonUI @@ -117,31 +117,31 @@ Caret.width [active] 1 #---- CheckBox ---- CheckBox.arc 4 -CheckBox.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] +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 #888888 javax.swing.plaf.ColorUIResource [UI] +CheckBox.disabledText #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] CheckBox.font [active] $defaultFont [UI] -CheckBox.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.background #43494a javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.borderColor #6b6b6b javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.checkmarkColor #a7a7a7 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.disabledBorderColor #545556 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.disabledCheckmarkColor #606060 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.focusedBackground #466d944d 30% javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.focusedBorderColor #466d94 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.hoverBackground #4a5152 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) -CheckBox.icon.hoverBorderColor #466d94 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.pressedBackground #52595a com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) -CheckBox.icon.selectedBackground #43494a javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.selectedBorderColor #6b6b6b javax.swing.plaf.ColorUIResource [UI] +CheckBox.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.background #43494a HSL 189 5 28 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.borderColor #6b6b6b HSL 0 0 42 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.checkmarkColor #a7a7a7 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledBorderColor #545556 HSL 210 1 33 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledCheckmarkColor #606060 HSL 0 0 38 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.focusedBackground #466d944d 30% HSLA 210 36 43 30 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.focusedBorderColor #466d94 HSL 210 36 43 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.hoverBackground #4a5152 HSL 188 5 31 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) +CheckBox.icon.hoverBorderColor #466d94 HSL 210 36 43 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.pressedBackground #52595a HSL 188 5 34 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) +CheckBox.icon.selectedBackground #43494a HSL 189 5 28 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.selectedBorderColor #6b6b6b HSL 0 0 42 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.iconTextGap 4 -CheckBox.icon[filled].checkmarkColor #43494a javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedBackground #a7a7a7 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedBorderColor #a7a7a7 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedHoverBackground #9f9f9f com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) -CheckBox.icon[filled].selectedPressedBackground #989898 com.formdev.flatlaf.util.DerivedColor [UI] darken(6% autoInverse) +CheckBox.icon[filled].checkmarkColor #43494a HSL 189 5 28 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].selectedBackground #a7a7a7 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].selectedBorderColor #a7a7a7 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].selectedHoverBackground #9f9f9f HSL 0 0 62 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) +CheckBox.icon[filled].selectedPressedBackground #989898 HSL 0 0 60 com.formdev.flatlaf.util.DerivedColor [UI] darken(6% autoInverse) CheckBox.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] CheckBox.rollover true CheckBox.textIconGap 4 @@ -151,20 +151,20 @@ CheckBox.textShiftOffset 0 #---- CheckBoxMenuItem ---- CheckBoxMenuItem.acceleratorFont [active] $defaultFont [UI] -CheckBoxMenuItem.acceleratorForeground #959595 javax.swing.plaf.ColorUIResource [UI] -CheckBoxMenuItem.acceleratorSelectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [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.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] -CheckBoxMenuItem.background #303234 javax.swing.plaf.ColorUIResource [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 #888888 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.disabledForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.font [active] $defaultFont [UI] -CheckBoxMenuItem.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.margin 3,6,3,6 javax.swing.plaf.InsetsUIResource [UI] CheckBoxMenuItem.opaque false -CheckBoxMenuItem.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -CheckBoxMenuItem.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItemUI com.formdev.flatlaf.ui.FlatCheckBoxMenuItemUI @@ -175,10 +175,10 @@ CheckBoxUI com.formdev.flatlaf.ui.FlatCheckBoxUI #---- ColorChooser ---- -ColorChooser.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] +ColorChooser.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] ColorChooser.font [active] $defaultFont [UI] -ColorChooser.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -ColorChooser.swatchesDefaultRecentColor #3c3f41 javax.swing.plaf.ColorUIResource [UI] +ColorChooser.foreground #bbbbbb HSL 0 0 73 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] ColorChooserUI com.formdev.flatlaf.ui.FlatColorChooserUI @@ -186,30 +186,30 @@ ColorChooserUI com.formdev.flatlaf.ui.FlatColorChooserUI #---- ComboBox ---- -ComboBox.background #45494a javax.swing.plaf.ColorUIResource [UI] +ComboBox.background #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] ComboBox.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI] -ComboBox.buttonArrowColor #9a9da1 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonBackground #45494a javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonDarkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonDisabledArrowColor #5a5d61 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonEditableBackground #404445 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonHighlight #242424 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonHoverArrowColor #b4b7ba com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) -ComboBox.buttonPressedArrowColor #cfd0d2 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) -ComboBox.buttonShadow #646464 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonArrowColor #9a9da1 HSL 214 4 62 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonBackground #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonDarkShadow #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonDisabledArrowColor #5a5d61 HSL 214 4 37 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonEditableBackground #404445 HSL 192 4 26 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonHighlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonHoverArrowColor #b4b7ba HSL 210 4 72 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) +ComboBox.buttonPressedArrowColor #cfd0d2 HSL 220 3 82 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) +ComboBox.buttonShadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonStyle auto -ComboBox.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -ComboBox.disabledForeground #888888 javax.swing.plaf.ColorUIResource [UI] +ComboBox.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +ComboBox.disabledForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] ComboBox.editorColumns 0 ComboBox.font [active] $defaultFont [UI] -ComboBox.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +ComboBox.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] ComboBox.isEnterSelectablePopup false ComboBox.maximumRowCount 15 ComboBox.minimumWidth 72 ComboBox.noActionOnKeyNavigation false ComboBox.padding 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -ComboBox.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -ComboBox.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +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.timeFactor 1000 ComboBoxUI com.formdev.flatlaf.ui.FlatComboBoxUI @@ -218,22 +218,22 @@ ComboBoxUI com.formdev.flatlaf.ui.FlatComboBoxUI Component.arc 5 Component.arrowType chevron -Component.borderColor #646464 javax.swing.plaf.ColorUIResource [UI] -Component.custom.borderColor #bf4040 com.formdev.flatlaf.util.DerivedColor [UI] desaturate(50% relative) -Component.disabledBorderColor #646464 javax.swing.plaf.ColorUIResource [UI] -Component.error.borderColor #725555 javax.swing.plaf.ColorUIResource [UI] -Component.error.focusedBorderColor #8b3c3c javax.swing.plaf.ColorUIResource [UI] -Component.focusColor #3d6185 javax.swing.plaf.ColorUIResource [UI] +Component.borderColor #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] +Component.custom.borderColor #bf4040 HSL 0 50 50 com.formdev.flatlaf.util.DerivedColor [UI] desaturate(50% relative) +Component.disabledBorderColor #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] +Component.error.borderColor #725555 HSL 0 15 39 javax.swing.plaf.ColorUIResource [UI] +Component.error.focusedBorderColor #8b3c3c HSL 0 40 39 javax.swing.plaf.ColorUIResource [UI] +Component.focusColor #3d6185 HSL 210 37 38 javax.swing.plaf.ColorUIResource [UI] Component.focusWidth 0 -Component.focusedBorderColor #466d94 javax.swing.plaf.ColorUIResource [UI] +Component.focusedBorderColor #466d94 HSL 210 36 43 javax.swing.plaf.ColorUIResource [UI] Component.grayFilter [lazy] [unknown type] com.formdev.flatlaf.util.GrayFilter Component.hideMnemonics true Component.innerFocusWidth 0.5 Component.innerOutlineWidth 1.0 -Component.linkColor #589df6 javax.swing.plaf.ColorUIResource [UI] +Component.linkColor #589df6 HSL 214 90 65 javax.swing.plaf.ColorUIResource [UI] Component.minimumWidth 64 -Component.warning.borderColor #725627 javax.swing.plaf.ColorUIResource [UI] -Component.warning.focusedBorderColor #ac7920 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] #---- DatePicker ---- @@ -243,17 +243,17 @@ DatePickerUI com.formdev.flatlaf.swingx.ui.FlatDatePickerUI #---- Desktop ---- -Desktop.background #3e434c javax.swing.plaf.ColorUIResource [UI] +Desktop.background #3e434c HSL 219 10 27 javax.swing.plaf.ColorUIResource [UI] Desktop.minOnScreenInsets 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] #---- DesktopIcon ---- -DesktopIcon.background #555c68 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +DesktopIcon.background #555c68 HSL 218 10 37 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) 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 javax.swing.plaf.ColorUIResource [UI] +DesktopIcon.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] DesktopIcon.iconSize 64,64 javax.swing.plaf.DimensionUIResource [UI] DesktopIconUI com.formdev.flatlaf.ui.FlatDesktopIconUI @@ -265,18 +265,18 @@ DesktopPaneUI com.formdev.flatlaf.ui.FlatDesktopPaneUI #---- EditorPane ---- -EditorPane.background #45494a javax.swing.plaf.ColorUIResource [UI] +EditorPane.background #45494a HSL 192 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 javax.swing.plaf.ColorUIResource [UI] -EditorPane.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] +EditorPane.caretForeground #bbbbbb HSL 0 0 73 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 javax.swing.plaf.ColorUIResource [UI] -EditorPane.inactiveBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -EditorPane.inactiveForeground #888888 javax.swing.plaf.ColorUIResource [UI] +EditorPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +EditorPane.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +EditorPane.inactiveForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] EditorPane.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -EditorPane.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -EditorPane.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [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] EditorPaneUI com.formdev.flatlaf.ui.FlatEditorPaneUI @@ -304,19 +304,19 @@ FileView.hardDriveIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatFil #---- FormattedTextField ---- -FormattedTextField.background #45494a javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.background #45494a HSL 192 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 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.caretForeground #bbbbbb HSL 0 0 73 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 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.inactiveBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.inactiveForeground #888888 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.inactiveForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -FormattedTextField.placeholderForeground #888888 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.placeholderForeground #888888 HSL 0 0 53 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] FormattedTextFieldUI com.formdev.flatlaf.ui.FlatFormattedTextFieldUI @@ -327,60 +327,60 @@ HeaderUI com.formdev.flatlaf.swingx.ui.FlatHeaderUI #---- HelpButton ---- -HelpButton.background #43494a javax.swing.plaf.ColorUIResource [UI] -HelpButton.borderColor #6b6b6b javax.swing.plaf.ColorUIResource [UI] +HelpButton.background #43494a HSL 189 5 28 javax.swing.plaf.ColorUIResource [UI] +HelpButton.borderColor #6b6b6b HSL 0 0 42 javax.swing.plaf.ColorUIResource [UI] HelpButton.borderWidth 1 -HelpButton.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -HelpButton.disabledBorderColor #545556 javax.swing.plaf.ColorUIResource [UI] -HelpButton.disabledQuestionMarkColor #606060 javax.swing.plaf.ColorUIResource [UI] -HelpButton.focusedBorderColor #466d94 javax.swing.plaf.ColorUIResource [UI] -HelpButton.hoverBackground #4a5152 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) -HelpButton.hoverBorderColor #466d94 javax.swing.plaf.ColorUIResource [UI] +HelpButton.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +HelpButton.disabledBorderColor #545556 HSL 210 1 33 javax.swing.plaf.ColorUIResource [UI] +HelpButton.disabledQuestionMarkColor #606060 HSL 0 0 38 javax.swing.plaf.ColorUIResource [UI] +HelpButton.focusedBorderColor #466d94 HSL 210 36 43 javax.swing.plaf.ColorUIResource [UI] +HelpButton.hoverBackground #4a5152 HSL 188 5 31 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) +HelpButton.hoverBorderColor #466d94 HSL 210 36 43 javax.swing.plaf.ColorUIResource [UI] HelpButton.icon [lazy] 22,22 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI] HelpButton.innerFocusWidth 1 -HelpButton.pressedBackground #52595a com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) -HelpButton.questionMarkColor #a7a7a7 javax.swing.plaf.ColorUIResource [UI] +HelpButton.pressedBackground #52595a HSL 188 5 34 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) +HelpButton.questionMarkColor #a7a7a7 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] #---- Hyperlink ---- -Hyperlink.disabledText #888888 javax.swing.plaf.ColorUIResource [UI] -Hyperlink.linkColor #589df6 javax.swing.plaf.ColorUIResource [UI] -Hyperlink.visitedColor #589df6 javax.swing.plaf.ColorUIResource [UI] +Hyperlink.disabledText #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +Hyperlink.linkColor #589df6 HSL 214 90 65 javax.swing.plaf.ColorUIResource [UI] +Hyperlink.visitedColor #589df6 HSL 214 90 65 javax.swing.plaf.ColorUIResource [UI] HyperlinkUI com.formdev.flatlaf.swingx.ui.FlatHyperlinkUI #---- InternalFrame ---- -InternalFrame.activeBorderColor #2b2d2e javax.swing.plaf.ColorUIResource [UI] +InternalFrame.activeBorderColor #2b2d2e HSL 200 3 17 javax.swing.plaf.ColorUIResource [UI] InternalFrame.activeDropShadowInsets 5,5,6,6 javax.swing.plaf.InsetsUIResource [UI] InternalFrame.activeDropShadowOpacity 0.5 -InternalFrame.activeTitleBackground #242526 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.activeTitleForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +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.border [lazy] 6,6,6,6 false com.formdev.flatlaf.ui.FlatInternalFrameUI$FlatInternalFrameBorder [UI] -InternalFrame.borderColor #3c3f41 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.borderDarkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI] -InternalFrame.borderHighlight #242424 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.borderLight #313131 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderColor #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderDarkShadow #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderHighlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderLight #313131 HSL 0 0 19 javax.swing.plaf.ColorUIResource [UI] InternalFrame.borderLineWidth 1 InternalFrame.borderMargins 6,6,6,6 javax.swing.plaf.InsetsUIResource [UI] -InternalFrame.borderShadow #646464 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.buttonHoverBackground #3d3f40 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) -InternalFrame.buttonPressedBackground #56585a com.formdev.flatlaf.util.DerivedColor [UI] lighten(20% autoInverse) +InternalFrame.borderShadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.buttonHoverBackground #3d3f40 HSL 200 2 25 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +InternalFrame.buttonPressedBackground #56585a HSL 210 2 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20% autoInverse) InternalFrame.buttonSize 24,24 javax.swing.plaf.DimensionUIResource [UI] -InternalFrame.closeHoverBackground [lazy] #c75450 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.closeHoverForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closeHoverBackground [lazy] #c75450 HSL 2 52 55 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closeHoverForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] InternalFrame.closeIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameCloseIcon [UI] -InternalFrame.closePressedBackground [lazy] #ad3b37 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.closePressedForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closePressedBackground [lazy] #ad3b37 HSL 2 52 45 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closePressedForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] InternalFrame.dropShadowPainted true InternalFrame.icon [lazy] 16,16 sun.swing.ImageIconUIResource [UI] (sun.awt.image.ToolkitImage) InternalFrame.iconifyIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameIconifyIcon [UI] -InternalFrame.inactiveBorderColor #353739 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.inactiveBorderColor #353739 HSL 210 4 22 javax.swing.plaf.ColorUIResource [UI] InternalFrame.inactiveDropShadowInsets 3,3,4,4 javax.swing.plaf.InsetsUIResource [UI] InternalFrame.inactiveDropShadowOpacity 0.75 -InternalFrame.inactiveTitleBackground #303234 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.inactiveTitleForeground #888888 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.inactiveTitleBackground #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.inactiveTitleForeground #888888 HSL 0 0 53 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] @@ -401,8 +401,8 @@ InternalFrameUI com.formdev.flatlaf.ui.FlatInternalFrameUI #---- JXBusyLabel ---- -JXBusyLabel.baseColor #777777 javax.swing.plaf.ColorUIResource [UI] -JXBusyLabel.highlightColor #e0e0e0 javax.swing.plaf.ColorUIResource [UI] +JXBusyLabel.baseColor #777777 HSL 0 0 47 javax.swing.plaf.ColorUIResource [UI] +JXBusyLabel.highlightColor #e0e0e0 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] #---- JXDatePicker ---- @@ -412,59 +412,59 @@ JXDatePicker.border [lazy] 1,1,1,1 false com.formdev.flatlaf.swin #---- JXHeader ---- -JXHeader.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] -JXHeader.startBackground #4c5052 javax.swing.plaf.ColorUIResource [UI] +JXHeader.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +JXHeader.startBackground #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] #---- JXMonthView ---- -JXMonthView.arrowColor #bbbbbb javax.swing.plaf.ColorUIResource [UI] -JXMonthView.background #45494a javax.swing.plaf.ColorUIResource [UI] -JXMonthView.daysOfTheWeekForeground #aaaaaa javax.swing.plaf.ColorUIResource [UI] -JXMonthView.disabledArrowColor #888888 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.flaggedDayForeground #e05555 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.leadingDayForeground #888888 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.arrowColor #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.background #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.daysOfTheWeekForeground #aaaaaa HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.disabledArrowColor #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.flaggedDayForeground #e05555 HSL 0 69 61 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.leadingDayForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon [UI] -JXMonthView.monthStringBackground #4c5052 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthStringForeground #bbbbbb javax.swing.plaf.ColorUIResource [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.monthUpFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon [UI] -JXMonthView.selectedBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -JXMonthView.trailingDayForeground #888888 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.unselectableDayForeground #e05555 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.weekOfTheYearForeground #888888 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.selectedBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.trailingDayForeground #888888 HSL 0 0 53 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] #---- JXTitledPanel ---- -JXTitledPanel.borderColor #5e6060 javax.swing.plaf.ColorUIResource [UI] +JXTitledPanel.borderColor #5e6060 HSL 180 1 37 javax.swing.plaf.ColorUIResource [UI] JXTitledPanel.captionInsets 4,10,4,10 javax.swing.plaf.InsetsUIResource [UI] -JXTitledPanel.titleBackground #4c5052 javax.swing.plaf.ColorUIResource [UI] -JXTitledPanel.titleForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +JXTitledPanel.titleBackground #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] +JXTitledPanel.titleForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] #---- JideButton ---- -JideButton.background #4c5052 javax.swing.plaf.ColorUIResource [UI] +JideButton.background #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] JideButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -JideButton.borderColor #5e6060 javax.swing.plaf.ColorUIResource [UI] -JideButton.darkShadow #5e6060 javax.swing.plaf.ColorUIResource [UI] -JideButton.focusedBackground #4e5355 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1% autoInverse) -JideButton.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -JideButton.highlight #656a6c com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) -JideButton.light #5e6060 javax.swing.plaf.ColorUIResource [UI] +JideButton.borderColor #5e6060 HSL 180 1 37 javax.swing.plaf.ColorUIResource [UI] +JideButton.darkShadow #5e6060 HSL 180 1 37 javax.swing.plaf.ColorUIResource [UI] +JideButton.focusedBackground #4e5355 HSL 197 4 32 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1% autoInverse) +JideButton.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +JideButton.highlight #656a6c HSL 197 3 41 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +JideButton.light #5e6060 HSL 180 1 37 javax.swing.plaf.ColorUIResource [UI] JideButton.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -JideButton.selectedAndFocusedBackground #565a5d com.formdev.flatlaf.util.DerivedColor [UI] lighten(4% autoInverse) -JideButton.selectedBackground #5d6265 com.formdev.flatlaf.util.DerivedColor [UI] lighten(7% autoInverse) -JideButton.shadow #5e6060 javax.swing.plaf.ColorUIResource [UI] +JideButton.selectedAndFocusedBackground #565a5d HSL 206 4 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(4% autoInverse) +JideButton.selectedBackground #5d6265 HSL 203 4 38 com.formdev.flatlaf.util.DerivedColor [UI] lighten(7% autoInverse) +JideButton.shadow #5e6060 HSL 180 1 37 javax.swing.plaf.ColorUIResource [UI] JideButton.textIconGap [active] 4 JideButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideButtonUI #---- JideLabel ---- -JideLabel.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] -JideLabel.disabledForeground #888888 javax.swing.plaf.ColorUIResource [UI] -JideLabel.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +JideLabel.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +JideLabel.disabledForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +JideLabel.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] JideLabelUI com.formdev.flatlaf.jideoss.ui.FlatJideLabelUI @@ -475,28 +475,28 @@ JidePopupMenuUI com.formdev.flatlaf.jideoss.ui.FlatJidePopupMenuU #---- JideSplitButton ---- -JideSplitButton.background #4c5052 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.background #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -JideSplitButton.buttonArrowColor #9a9da1 javax.swing.plaf.ColorUIResource [UI] -JideSplitButton.buttonDisabledArrowColor #5a5d61 javax.swing.plaf.ColorUIResource [UI] -JideSplitButton.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.buttonArrowColor #9a9da1 HSL 214 4 62 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.buttonDisabledArrowColor #5a5d61 HSL 214 4 37 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -JideSplitButton.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.textIconGap [active] 4 JideSplitButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideSplitButtonUI #---- JideTabbedPane ---- -JideTabbedPane.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] +JideTabbedPane.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] JideTabbedPane.closeButtonLeftMargin 0 JideTabbedPane.closeButtonRightMargin 0 JideTabbedPane.contentBorderInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] JideTabbedPane.fitStyleBoundSize 0 JideTabbedPane.fitStyleFirstTabMargin 0 -JideTabbedPane.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -JideTabbedPane.shadow #3c3f41 javax.swing.plaf.ColorUIResource [UI] -JideTabbedPane.tabAreaBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] +JideTabbedPane.foreground #bbbbbb HSL 0 0 73 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] JideTabbedPane.tabInsets 4,12,4,12 javax.swing.plaf.InsetsUIResource [UI] JideTabbedPane.tabRunOverlay 0 @@ -505,34 +505,34 @@ JideTabbedPaneUI com.formdev.flatlaf.jideoss.ui.FlatJideTabbedPane #---- Label ---- -Label.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] -Label.disabledForeground #888888 javax.swing.plaf.ColorUIResource [UI] -Label.disabledShadow #646464 javax.swing.plaf.ColorUIResource [UI] +Label.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +Label.disabledForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +Label.disabledShadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] Label.font [active] $defaultFont [UI] -Label.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +Label.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] LabelUI com.formdev.flatlaf.ui.FlatLabelUI #---- List ---- -List.background #45494a javax.swing.plaf.ColorUIResource [UI] +List.background #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] List.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] -List.cellFocusColor #000000 javax.swing.plaf.ColorUIResource [UI] +List.cellFocusColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] 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=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +List.cellNoFocusBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Default [UI] lineColor=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 List.cellRenderer [active] javax.swing.DefaultListCellRenderer$UIResource [UI] -List.dropCellBackground [lazy] #3c588b javax.swing.plaf.ColorUIResource [UI] -List.dropCellForeground [lazy] #bbbbbb javax.swing.plaf.ColorUIResource [UI] -List.dropLineColor [lazy] #6d8ac0 javax.swing.plaf.ColorUIResource [UI] -List.focusCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Focused [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 -List.focusSelectedCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Selected [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +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.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=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +List.focusSelectedCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Selected [UI] lineColor=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 List.font [active] $defaultFont [UI] -List.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +List.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] List.noFocusBorder 1,1,1,1 false javax.swing.plaf.BorderUIResource$EmptyBorderUIResource [UI] -List.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -List.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -List.selectionInactiveBackground #0d293e javax.swing.plaf.ColorUIResource [UI] -List.selectionInactiveForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +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.selectionInactiveBackground #0d293e HSL 206 65 15 javax.swing.plaf.ColorUIResource [UI] +List.selectionInactiveForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] List.showCellFocusIndicator false List.timeFactor 1000 ListUI com.formdev.flatlaf.ui.FlatListUI @@ -541,26 +541,26 @@ ListUI com.formdev.flatlaf.ui.FlatListUI #---- Menu ---- Menu.acceleratorFont [active] $defaultFont [UI] -Menu.acceleratorForeground #959595 javax.swing.plaf.ColorUIResource [UI] -Menu.acceleratorSelectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [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.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuArrowIcon [UI] -Menu.background #303234 javax.swing.plaf.ColorUIResource [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 #888888 javax.swing.plaf.ColorUIResource [UI] +Menu.disabledForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] Menu.font [active] $defaultFont [UI] -Menu.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Menu.icon.arrowColor #a7a7a7 javax.swing.plaf.ColorUIResource [UI] -Menu.icon.disabledArrowColor #606060 javax.swing.plaf.ColorUIResource [UI] +Menu.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Menu.icon.arrowColor #a7a7a7 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] +Menu.icon.disabledArrowColor #606060 HSL 0 0 38 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 javax.swing.plaf.ColorUIResource [UI] -Menu.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +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.shortcutKeys length=1 [I [0] 8 Menu.submenuPopupOffsetX [active] -4 @@ -569,15 +569,15 @@ Menu.submenuPopupOffsetY [active] -4 #---- MenuBar ---- -MenuBar.background #303234 javax.swing.plaf.ColorUIResource [UI] +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 #515151 javax.swing.plaf.ColorUIResource [UI] +MenuBar.borderColor #515151 HSL 0 0 32 javax.swing.plaf.ColorUIResource [UI] MenuBar.font [active] $defaultFont [UI] -MenuBar.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -MenuBar.highlight #242424 javax.swing.plaf.ColorUIResource [UI] -MenuBar.hoverBackground #484c4f com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +MenuBar.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +MenuBar.highlight #242424 HSL 0 0 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] -MenuBar.shadow #646464 javax.swing.plaf.ColorUIResource [UI] +MenuBar.shadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] MenuBar.windowBindings length=2 [Ljava.lang.Object; [0] F10 [1] takeFocus @@ -589,36 +589,36 @@ MenuBarUI com.formdev.flatlaf.ui.FlatMenuBarUI MenuItem.acceleratorArrowGap 2 MenuItem.acceleratorDelimiter - MenuItem.acceleratorFont [active] $defaultFont [UI] -MenuItem.acceleratorForeground #959595 javax.swing.plaf.ColorUIResource [UI] -MenuItem.acceleratorSelectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [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.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] -MenuItem.background #303234 javax.swing.plaf.ColorUIResource [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 com.formdev.flatlaf.util.DerivedColor [UI] darken(10%) +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 #888888 javax.swing.plaf.ColorUIResource [UI] +MenuItem.disabledForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] MenuItem.font [active] $defaultFont [UI] -MenuItem.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +MenuItem.foreground #bbbbbb HSL 0 0 73 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] MenuItem.minimumWidth 72 MenuItem.opaque false -MenuItem.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -MenuItem.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +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.textAcceleratorGap 24 MenuItem.textNoAcceleratorGap 6 -MenuItem.underlineSelectionBackground #484c4f com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) -MenuItem.underlineSelectionCheckBackground #3c588b com.formdev.flatlaf.util.DerivedColor [UI] darken(10%) -MenuItem.underlineSelectionColor #4a88c7 javax.swing.plaf.ColorUIResource [UI] +MenuItem.underlineSelectionBackground #484c4f HSL 206 5 30 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +MenuItem.underlineSelectionCheckBackground #3c588b HSL 219 40 39 com.formdev.flatlaf.util.DerivedColor [UI] darken(10%) +MenuItem.underlineSelectionColor #4a88c7 HSL 210 53 54 javax.swing.plaf.ColorUIResource [UI] MenuItem.underlineSelectionHeight 3 #---- MenuItemCheckBox ---- -MenuItemCheckBox.icon.checkmarkColor #a7a7a7 javax.swing.plaf.ColorUIResource [UI] -MenuItemCheckBox.icon.disabledCheckmarkColor #606060 javax.swing.plaf.ColorUIResource [UI] +MenuItemCheckBox.icon.checkmarkColor #a7a7a7 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] +MenuItemCheckBox.icon.disabledCheckmarkColor #606060 HSL 0 0 38 javax.swing.plaf.ColorUIResource [UI] #---- MenuItem ---- @@ -638,22 +638,22 @@ MonthViewUI com.formdev.flatlaf.swingx.ui.FlatMonthViewUI #---- Objects ---- -Objects.BlackText #231f20 javax.swing.plaf.ColorUIResource [UI] -Objects.Blue #40b6e0 javax.swing.plaf.ColorUIResource [UI] -Objects.Green #62b543 javax.swing.plaf.ColorUIResource [UI] -Objects.GreenAndroid #a4c639 javax.swing.plaf.ColorUIResource [UI] -Objects.Grey #9aa7b0 javax.swing.plaf.ColorUIResource [UI] -Objects.Pink #f98b9e javax.swing.plaf.ColorUIResource [UI] -Objects.Purple #b99bf8 javax.swing.plaf.ColorUIResource [UI] -Objects.Red #f26522 javax.swing.plaf.ColorUIResource [UI] -Objects.RedStatus #e05555 javax.swing.plaf.ColorUIResource [UI] -Objects.Yellow #f4af3d javax.swing.plaf.ColorUIResource [UI] -Objects.YellowDark #d9a343 javax.swing.plaf.ColorUIResource [UI] +Objects.BlackText #231f20 HSL 345 6 13 javax.swing.plaf.ColorUIResource [UI] +Objects.Blue #40b6e0 HSL 196 72 56 javax.swing.plaf.ColorUIResource [UI] +Objects.Green #62b543 HSL 104 46 49 javax.swing.plaf.ColorUIResource [UI] +Objects.GreenAndroid #a4c639 HSL 74 55 50 javax.swing.plaf.ColorUIResource [UI] +Objects.Grey #9aa7b0 HSL 205 12 65 javax.swing.plaf.ColorUIResource [UI] +Objects.Pink #f98b9e HSL 350 90 76 javax.swing.plaf.ColorUIResource [UI] +Objects.Purple #b99bf8 HSL 259 87 79 javax.swing.plaf.ColorUIResource [UI] +Objects.Red #f26522 HSL 19 89 54 javax.swing.plaf.ColorUIResource [UI] +Objects.RedStatus #e05555 HSL 0 69 61 javax.swing.plaf.ColorUIResource [UI] +Objects.Yellow #f4af3d HSL 37 89 60 javax.swing.plaf.ColorUIResource [UI] +Objects.YellowDark #d9a343 HSL 38 66 56 javax.swing.plaf.ColorUIResource [UI] #---- OptionPane ---- -OptionPane.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] +OptionPane.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] OptionPane.border [lazy] 12,12,12,12 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] OptionPane.buttonAreaBorder [lazy] 12,0,0,0 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] OptionPane.buttonClickThreshhold 500 @@ -662,7 +662,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 javax.swing.plaf.ColorUIResource [UI] +OptionPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] OptionPane.iconMessageGap 16 OptionPane.informationIcon [lazy] 32,32 com.formdev.flatlaf.icons.FlatOptionPaneInformationIcon [UI] OptionPane.maxCharactersPerLine 80 @@ -681,37 +681,37 @@ OptionPaneUI com.formdev.flatlaf.ui.FlatOptionPaneUI #---- Panel ---- -Panel.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] +Panel.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] Panel.font [active] $defaultFont [UI] -Panel.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +Panel.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] PanelUI com.formdev.flatlaf.ui.FlatPanelUI #---- PasswordField ---- -PasswordField.background #45494a javax.swing.plaf.ColorUIResource [UI] +PasswordField.background #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] PasswordField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI] PasswordField.capsLockIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatCapsLockIcon [UI] -PasswordField.capsLockIconColor #ffffff64 39% javax.swing.plaf.ColorUIResource [UI] +PasswordField.capsLockIconColor #ffffff64 39% HSLA 0 0 100 39 javax.swing.plaf.ColorUIResource [UI] PasswordField.caretBlinkRate 500 -PasswordField.caretForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -PasswordField.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] +PasswordField.caretForeground #bbbbbb HSL 0 0 73 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 javax.swing.plaf.ColorUIResource [UI] -PasswordField.inactiveBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -PasswordField.inactiveForeground #888888 javax.swing.plaf.ColorUIResource [UI] +PasswordField.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +PasswordField.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +PasswordField.inactiveForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] PasswordField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -PasswordField.placeholderForeground #888888 javax.swing.plaf.ColorUIResource [UI] -PasswordField.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -PasswordField.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +PasswordField.placeholderForeground #888888 HSL 0 0 53 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.showCapsLock true PasswordFieldUI com.formdev.flatlaf.ui.FlatPasswordFieldUI #---- Popup ---- -Popup.dropShadowColor #000000 javax.swing.plaf.ColorUIResource [UI] +Popup.dropShadowColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] Popup.dropShadowInsets -4,-4,4,4 javax.swing.plaf.InsetsUIResource [UI] Popup.dropShadowOpacity 0.25 Popup.dropShadowPainted true @@ -719,13 +719,13 @@ Popup.dropShadowPainted true #---- PopupMenu ---- -PopupMenu.background #303234 javax.swing.plaf.ColorUIResource [UI] -PopupMenu.border [lazy] 4,1,4,1 false com.formdev.flatlaf.ui.FlatPopupMenuBorder [UI] lineColor=#5e5e5e javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 -PopupMenu.borderColor #5e5e5e javax.swing.plaf.ColorUIResource [UI] +PopupMenu.background #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] +PopupMenu.border [lazy] 4,1,4,1 false com.formdev.flatlaf.ui.FlatPopupMenuBorder [UI] lineColor=#5e5e5e HSL 0 0 37 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +PopupMenu.borderColor #5e5e5e HSL 0 0 37 javax.swing.plaf.ColorUIResource [UI] PopupMenu.borderInsets 4,1,4,1 javax.swing.plaf.InsetsUIResource [UI] PopupMenu.consumeEventOnClose false PopupMenu.font [active] $defaultFont [UI] -PopupMenu.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +PopupMenu.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] #---- PopupMenuSeparator ---- @@ -744,38 +744,38 @@ PopupMenuUI com.formdev.flatlaf.ui.FlatPopupMenuUI #---- ProgressBar ---- ProgressBar.arc 4 -ProgressBar.background #555555 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.background #555555 HSL 0 0 33 javax.swing.plaf.ColorUIResource [UI] ProgressBar.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] ProgressBar.cellLength 1 ProgressBar.cellSpacing 0 ProgressBar.cycleTime 4000 ProgressBar.font [active] Segoe UI plain 10 javax.swing.plaf.FontUIResource [UI] -ProgressBar.foreground #4a88c7 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.foreground #4a88c7 HSL 210 53 54 javax.swing.plaf.ColorUIResource [UI] ProgressBar.horizontalSize 146,4 javax.swing.plaf.DimensionUIResource [UI] ProgressBar.repaintInterval 15 -ProgressBar.selectionBackground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -ProgressBar.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +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.verticalSize 4,146 javax.swing.plaf.DimensionUIResource [UI] ProgressBarUI com.formdev.flatlaf.ui.FlatProgressBarUI #---- RadioButton ---- -RadioButton.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] +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 #7e7e7e javax.swing.plaf.ColorUIResource [UI] -RadioButton.disabledText #888888 javax.swing.plaf.ColorUIResource [UI] +RadioButton.darkShadow #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] +RadioButton.disabledText #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] RadioButton.font [active] $defaultFont [UI] -RadioButton.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -RadioButton.highlight #242424 javax.swing.plaf.ColorUIResource [UI] +RadioButton.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +RadioButton.highlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] RadioButton.icon.centerDiameter 8 RadioButton.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonIcon [UI] RadioButton.iconTextGap 4 RadioButton.icon[filled].centerDiameter 5 -RadioButton.light #313131 javax.swing.plaf.ColorUIResource [UI] +RadioButton.light #313131 HSL 0 0 19 javax.swing.plaf.ColorUIResource [UI] RadioButton.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] RadioButton.rollover true -RadioButton.shadow #646464 javax.swing.plaf.ColorUIResource [UI] +RadioButton.shadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] RadioButton.textIconGap 4 RadioButton.textShiftOffset 0 @@ -783,20 +783,20 @@ RadioButton.textShiftOffset 0 #---- RadioButtonMenuItem ---- RadioButtonMenuItem.acceleratorFont [active] $defaultFont [UI] -RadioButtonMenuItem.acceleratorForeground #959595 javax.swing.plaf.ColorUIResource [UI] -RadioButtonMenuItem.acceleratorSelectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [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.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] -RadioButtonMenuItem.background #303234 javax.swing.plaf.ColorUIResource [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 #888888 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.disabledForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.font [active] $defaultFont [UI] -RadioButtonMenuItem.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.margin 3,6,3,6 javax.swing.plaf.InsetsUIResource [UI] RadioButtonMenuItem.opaque false -RadioButtonMenuItem.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -RadioButtonMenuItem.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItemUI com.formdev.flatlaf.ui.FlatRadioButtonMenuItemUI @@ -812,12 +812,12 @@ RangeSliderUI com.formdev.flatlaf.jideoss.ui.FlatRangeSliderUI #---- Resizable ---- -Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#5e5e5e javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#5e5e5e HSL 0 0 37 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 #---- RootPane ---- -RootPane.activeBorderColor #4d5154 com.formdev.flatlaf.util.DerivedColor [UI] lighten(7% autoInverse) +RootPane.activeBorderColor #4d5154 HSL 206 4 32 com.formdev.flatlaf.util.DerivedColor [UI] lighten(7% autoInverse) RootPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRootPaneUI$FlatWindowBorder [UI] RootPane.borderDragThickness 5 RootPane.cornerDragWidth 16 @@ -832,37 +832,37 @@ RootPane.defaultButtonWindowKeyBindings length=8 [Ljava.lang.Object; [7] release RootPane.honorDialogMinimumSizeOnResize true RootPane.honorFrameMinimumSizeOnResize false -RootPane.inactiveBorderColor #484c4e com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse) +RootPane.inactiveBorderColor #484c4e HSL 200 4 29 com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse) RootPaneUI com.formdev.flatlaf.ui.FlatRootPaneUI #---- ScrollBar ---- ScrollBar.allowsAbsolutePositioning true -ScrollBar.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.buttonArrowColor #9a9da1 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.buttonDisabledArrowColor #5a5d61 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -ScrollBar.hoverButtonBackground #484c4e com.formdev.flatlaf.util.DerivedColor [UI] lighten(5%) -ScrollBar.hoverThumbColor #6e767a com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) +ScrollBar.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.buttonArrowColor #9a9da1 HSL 214 4 62 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.buttonDisabledArrowColor #5a5d61 HSL 214 4 37 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.foreground #bbbbbb HSL 0 0 73 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 -ScrollBar.hoverTrackColor #484c4f com.formdev.flatlaf.util.DerivedColor [UI] lighten(4%) +ScrollBar.hoverTrackColor #484c4f HSL 206 5 30 com.formdev.flatlaf.util.DerivedColor [UI] lighten(4%) ScrollBar.maximumThumbSize 100000,100000 javax.swing.plaf.DimensionUIResource [UI] ScrollBar.minimumThumbSize 10,10 javax.swing.plaf.DimensionUIResource [UI] -ScrollBar.pressedButtonBackground #54595c com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) -ScrollBar.pressedThumbColor #7a8387 com.formdev.flatlaf.util.DerivedColor [UI] lighten(15%) +ScrollBar.pressedButtonBackground #54595c HSL 203 5 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) +ScrollBar.pressedThumbColor #7a8387 HSL 198 5 50 com.formdev.flatlaf.util.DerivedColor [UI] lighten(15%) ScrollBar.pressedThumbWithTrack false ScrollBar.showButtons false ScrollBar.squareButtons false -ScrollBar.thumb #565c5f com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) +ScrollBar.thumb #565c5f HSL 200 5 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) ScrollBar.thumbArc 0 -ScrollBar.thumbDarkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI] -ScrollBar.thumbHighlight #242424 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.thumbDarkShadow #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.thumbHighlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] ScrollBar.thumbInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -ScrollBar.thumbShadow #646464 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.track #3e4244 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) +ScrollBar.thumbShadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.track #3e4244 HSL 200 5 25 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) ScrollBar.trackArc 0 -ScrollBar.trackHighlight #7e7e7e javax.swing.plaf.ColorUIResource [UI] +ScrollBar.trackHighlight #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] ScrollBar.trackInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ScrollBar.width 10 ScrollBarUI com.formdev.flatlaf.ui.FlatScrollBarUI @@ -870,22 +870,41 @@ ScrollBarUI com.formdev.flatlaf.ui.FlatScrollBarUI #---- ScrollPane ---- -ScrollPane.background #3e4244 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) +ScrollPane.background #3e4244 HSL 200 5 25 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) ScrollPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI] ScrollPane.fillUpperCorner true ScrollPane.font [active] $defaultFont [UI] -ScrollPane.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +ScrollPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] ScrollPane.smoothScrolling true ScrollPaneUI com.formdev.flatlaf.ui.FlatScrollPaneUI +#---- SearchField ---- + +SearchField.clearIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatClearIcon [UI] +SearchField.clearIconColor [lazy] #7f8b9180 50% HSLA 200 8 53 50 javax.swing.plaf.ColorUIResource [UI] +SearchField.clearIconHoverColor [lazy] #7f8b9180 50% HSLA 200 8 53 50 javax.swing.plaf.ColorUIResource [UI] +SearchField.clearIconPressedColor [lazy] #7f8b91cc 80% HSLA 200 8 53 80 javax.swing.plaf.ColorUIResource [UI] +SearchField.clearPressedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatClearIcon [UI] +SearchField.clearRolloverIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatClearIcon [UI] +SearchField.icon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchIcon [UI] +SearchField.popupIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon [UI] +SearchField.popupPressedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon [UI] +SearchField.popupRolloverIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon [UI] +SearchField.pressedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchIcon [UI] +SearchField.rolloverIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchIcon [UI] +SearchField.searchIconColor [lazy] #7f8b91e6 90% HSLA 200 8 53 90 javax.swing.plaf.ColorUIResource [UI] +SearchField.searchIconHoverColor [lazy] #7f8b91b3 70% HSLA 200 8 53 70 javax.swing.plaf.ColorUIResource [UI] +SearchField.searchIconPressedColor [lazy] #7f8b9180 50% HSLA 200 8 53 50 javax.swing.plaf.ColorUIResource [UI] + + #---- Separator ---- -Separator.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] -Separator.foreground #515151 javax.swing.plaf.ColorUIResource [UI] +Separator.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +Separator.foreground #515151 HSL 0 0 32 javax.swing.plaf.ColorUIResource [UI] Separator.height 3 -Separator.highlight #242424 javax.swing.plaf.ColorUIResource [UI] -Separator.shadow #646464 javax.swing.plaf.ColorUIResource [UI] +Separator.highlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] +Separator.shadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] Separator.stripeIndent 1 Separator.stripeWidth 1 SeparatorUI com.formdev.flatlaf.ui.FlatSeparatorUI @@ -893,28 +912,28 @@ SeparatorUI com.formdev.flatlaf.ui.FlatSeparatorUI #---- Slider ---- -Slider.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] -Slider.disabledThumbColor #4c5052 javax.swing.plaf.ColorUIResource [UI] -Slider.disabledTrackColor #4c5052 javax.swing.plaf.ColorUIResource [UI] -Slider.focus #7e7e7e javax.swing.plaf.ColorUIResource [UI] +Slider.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +Slider.disabledThumbColor #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] +Slider.disabledTrackColor #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] +Slider.focus #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] Slider.focusInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Slider.focusWidth 4 -Slider.focusedColor #3d6185b3 70% com.formdev.flatlaf.util.DerivedColor [UI] fade(70%) +Slider.focusedColor #3d6185b3 70% HSLA 210 37 38 70 com.formdev.flatlaf.util.DerivedColor [UI] fade(70%) Slider.font [active] $defaultFont [UI] -Slider.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Slider.highlight #242424 javax.swing.plaf.ColorUIResource [UI] +Slider.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Slider.highlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] Slider.horizontalSize 200,21 java.awt.Dimension -Slider.hoverThumbColor #5d95cd com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse) +Slider.hoverThumbColor #5d95cd HSL 210 53 58 com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse) Slider.minimumHorizontalSize 36,21 java.awt.Dimension Slider.minimumVerticalSize 21,36 java.awt.Dimension Slider.onlyLeftMouseButtonDrag true -Slider.pressedThumbColor #699cd1 com.formdev.flatlaf.util.DerivedColor [UI] lighten(8% autoInverse) -Slider.shadow #646464 javax.swing.plaf.ColorUIResource [UI] -Slider.thumbColor #4a88c7 javax.swing.plaf.ColorUIResource [UI] +Slider.pressedThumbColor #699cd1 HSL 211 53 62 com.formdev.flatlaf.util.DerivedColor [UI] lighten(8% autoInverse) +Slider.shadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] +Slider.thumbColor #4a88c7 HSL 210 53 54 javax.swing.plaf.ColorUIResource [UI] Slider.thumbSize 12,12 javax.swing.plaf.DimensionUIResource [UI] -Slider.tickColor #888888 javax.swing.plaf.ColorUIResource [UI] -Slider.trackColor #646464 javax.swing.plaf.ColorUIResource [UI] -Slider.trackValueColor #4a88c7 javax.swing.plaf.ColorUIResource [UI] +Slider.tickColor #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +Slider.trackColor #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] +Slider.trackValueColor #4a88c7 HSL 210 53 54 javax.swing.plaf.ColorUIResource [UI] Slider.trackWidth 2 Slider.verticalSize 21,200 java.awt.Dimension SliderUI com.formdev.flatlaf.ui.FlatSliderUI @@ -923,47 +942,47 @@ SliderUI com.formdev.flatlaf.ui.FlatSliderUI #---- Spinner ---- Spinner.arrowButtonSize 16,5 java.awt.Dimension -Spinner.background #45494a javax.swing.plaf.ColorUIResource [UI] +Spinner.background #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] Spinner.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI] -Spinner.buttonArrowColor #9a9da1 javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonBackground #404445 javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonDisabledArrowColor #5a5d61 javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonHoverArrowColor #b4b7ba com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) -Spinner.buttonPressedArrowColor #cfd0d2 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) +Spinner.buttonArrowColor #9a9da1 HSL 214 4 62 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonBackground #404445 HSL 192 4 26 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonDisabledArrowColor #5a5d61 HSL 214 4 37 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonHoverArrowColor #b4b7ba HSL 210 4 72 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) +Spinner.buttonPressedArrowColor #cfd0d2 HSL 220 3 82 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) Spinner.buttonStyle button -Spinner.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -Spinner.disabledForeground #888888 javax.swing.plaf.ColorUIResource [UI] +Spinner.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +Spinner.disabledForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] Spinner.editorAlignment 11 Spinner.editorBorderPainted false Spinner.font [active] $defaultFont [UI] -Spinner.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +Spinner.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] Spinner.padding 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] SpinnerUI com.formdev.flatlaf.ui.FlatSpinnerUI #---- SplitPane ---- -SplitPane.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] +SplitPane.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] SplitPane.centerOneTouchButtons true SplitPane.continuousLayout true -SplitPane.darkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI] +SplitPane.darkShadow #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] SplitPane.dividerSize 5 -SplitPane.highlight #242424 javax.swing.plaf.ColorUIResource [UI] +SplitPane.highlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] SplitPane.oneTouchButtonOffset [active] 2 SplitPane.oneTouchButtonSize [active] 6 -SplitPane.shadow #646464 javax.swing.plaf.ColorUIResource [UI] +SplitPane.shadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] #---- SplitPaneDivider ---- -SplitPaneDivider.draggingColor #646464 javax.swing.plaf.ColorUIResource [UI] -SplitPaneDivider.gripColor #adadad javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.draggingColor #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.gripColor #adadad HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] SplitPaneDivider.gripDotCount 3 SplitPaneDivider.gripDotSize 3 SplitPaneDivider.gripGap 2 -SplitPaneDivider.oneTouchArrowColor #9a9da1 javax.swing.plaf.ColorUIResource [UI] -SplitPaneDivider.oneTouchHoverArrowColor #b4b7ba com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) -SplitPaneDivider.oneTouchPressedArrowColor #cfd0d2 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) +SplitPaneDivider.oneTouchArrowColor #9a9da1 HSL 214 4 62 javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.oneTouchHoverArrowColor #b4b7ba HSL 210 4 72 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%) +SplitPaneDivider.oneTouchPressedArrowColor #cfd0d2 HSL 220 3 82 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) SplitPaneDivider.style grip @@ -975,44 +994,44 @@ SplitPaneUI com.formdev.flatlaf.ui.FlatSplitPaneUI #---- TabbedPane ---- TabbedPane.arrowType chevron -TabbedPane.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] TabbedPane.buttonArc 6 -TabbedPane.buttonHoverBackground #303234 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%) +TabbedPane.buttonHoverBackground #303234 HSL 210 4 20 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%) TabbedPane.buttonInsets 2,1,2,1 javax.swing.plaf.InsetsUIResource [UI] -TabbedPane.buttonPressedBackground #282a2c com.formdev.flatlaf.util.DerivedColor [UI] darken(8%) +TabbedPane.buttonPressedBackground #282a2c HSL 210 5 16 com.formdev.flatlaf.util.DerivedColor [UI] darken(8%) TabbedPane.closeArc 4 TabbedPane.closeCrossFilledSize 7.5 TabbedPane.closeCrossLineWidth 1.0 TabbedPane.closeCrossPlainSize 7.5 -TabbedPane.closeForeground #888888 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.closeHoverBackground #484c4e com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse) -TabbedPane.closeHoverForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closeForeground #888888 HSL 0 0 53 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.closeIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTabbedPaneCloseIcon [UI] -TabbedPane.closePressedBackground #54595c com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) -TabbedPane.closePressedForeground #bbbbbb javax.swing.plaf.ColorUIResource [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.closeSize 16,16 javax.swing.plaf.DimensionUIResource [UI] -TabbedPane.contentAreaColor #646464 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.contentAreaColor #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] TabbedPane.contentOpaque true TabbedPane.contentSeparatorHeight 1 -TabbedPane.darkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI] -TabbedPane.disabledForeground #888888 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.disabledUnderlineColor #7a7a7a javax.swing.plaf.ColorUIResource [UI] -TabbedPane.focus #bbbbbb javax.swing.plaf.ColorUIResource [UI] -TabbedPane.focusColor #3d4b5c javax.swing.plaf.ColorUIResource [UI] +TabbedPane.darkShadow #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.disabledForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.disabledUnderlineColor #7a7a7a HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.focus #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.focusColor #3d4b5c HSL 213 20 30 javax.swing.plaf.ColorUIResource [UI] TabbedPane.font [active] $defaultFont [UI] -TabbedPane.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +TabbedPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] TabbedPane.hasFullBorder false TabbedPane.hiddenTabsNavigation moreTabsButton -TabbedPane.highlight #242424 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.hoverColor #303234 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%) +TabbedPane.highlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.hoverColor #303234 HSL 210 4 20 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%) TabbedPane.labelShift 1 -TabbedPane.light #313131 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.light #313131 HSL 0 0 19 javax.swing.plaf.ColorUIResource [UI] TabbedPane.scrollButtonsPlacement both TabbedPane.scrollButtonsPolicy asNeededSingle TabbedPane.selectedLabelShift -1 TabbedPane.selectedTabPadInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TabbedPane.selectionFollowsFocus true -TabbedPane.shadow #3c3f41 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.shadow #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] TabbedPane.showTabSeparators false TabbedPane.tabAlignment center TabbedPane.tabAreaAlignment leading @@ -1027,53 +1046,53 @@ TabbedPane.tabsOpaque true TabbedPane.tabsOverlapBorder false TabbedPane.tabsPopupPolicy asNeeded TabbedPane.textIconGap 4 -TabbedPane.underlineColor #4a88c7 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.underlineColor #4a88c7 HSL 210 53 54 javax.swing.plaf.ColorUIResource [UI] TabbedPaneUI com.formdev.flatlaf.ui.FlatTabbedPaneUI #---- Table ---- Table.ascendingSortIcon [lazy] 10,5 com.formdev.flatlaf.icons.FlatAscendingSortIcon [UI] -Table.background #45494a javax.swing.plaf.ColorUIResource [UI] -Table.cellFocusColor #000000 javax.swing.plaf.ColorUIResource [UI] +Table.background #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] +Table.cellFocusColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] Table.cellMargins 2,3,2,3 javax.swing.plaf.InsetsUIResource [UI] -Table.cellNoFocusBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Default [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Table.cellNoFocusBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Default [UI] lineColor=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 Table.consistentHomeEndKeyBehavior true Table.descendingSortIcon [lazy] 10,5 com.formdev.flatlaf.icons.FlatDescendingSortIcon [UI] -Table.dropCellBackground [lazy] #3c588b javax.swing.plaf.ColorUIResource [UI] -Table.dropCellForeground [lazy] #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Table.dropLineColor [lazy] #6d8ac0 javax.swing.plaf.ColorUIResource [UI] -Table.dropLineShortColor [lazy] #b4c3df javax.swing.plaf.ColorUIResource [UI] -Table.focusCellBackground #45494a javax.swing.plaf.ColorUIResource [UI] -Table.focusCellForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Table.focusCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Focused [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 -Table.focusSelectedCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Selected [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +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.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.focusCellBackground #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] +Table.focusCellForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Table.focusCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Focused [UI] lineColor=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Table.focusSelectedCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Selected [UI] lineColor=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 Table.font [active] $defaultFont [UI] -Table.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Table.gridColor #515657 javax.swing.plaf.ColorUIResource [UI] +Table.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Table.gridColor #515657 HSL 190 4 33 javax.swing.plaf.ColorUIResource [UI] Table.intercellSpacing 0,0 javax.swing.plaf.DimensionUIResource [UI] Table.rowHeight 20 Table.scrollPaneBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI] -Table.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -Table.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Table.selectionInactiveBackground #0d293e javax.swing.plaf.ColorUIResource [UI] -Table.selectionInactiveForeground #bbbbbb javax.swing.plaf.ColorUIResource [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.selectionInactiveBackground #0d293e HSL 206 65 15 javax.swing.plaf.ColorUIResource [UI] +Table.selectionInactiveForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] Table.showHorizontalLines false Table.showVerticalLines false -Table.sortIconColor #adadad javax.swing.plaf.ColorUIResource [UI] +Table.sortIconColor #adadad HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] #---- TableHeader ---- -TableHeader.background #45494a javax.swing.plaf.ColorUIResource [UI] -TableHeader.bottomSeparatorColor #5e6364 javax.swing.plaf.ColorUIResource [UI] +TableHeader.background #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] +TableHeader.bottomSeparatorColor #5e6364 HSL 190 3 38 javax.swing.plaf.ColorUIResource [UI] TableHeader.cellBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableHeaderBorder [UI] TableHeader.cellMargins 2,3,2,3 javax.swing.plaf.InsetsUIResource [UI] -TableHeader.focusCellBackground #45494a javax.swing.plaf.ColorUIResource [UI] +TableHeader.focusCellBackground #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] TableHeader.font [active] $defaultFont [UI] -TableHeader.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +TableHeader.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] TableHeader.height 25 -TableHeader.separatorColor #5e6364 javax.swing.plaf.ColorUIResource [UI] +TableHeader.separatorColor #5e6364 HSL 190 3 38 javax.swing.plaf.ColorUIResource [UI] TableHeaderUI com.formdev.flatlaf.ui.FlatTableHeaderUI @@ -1084,37 +1103,37 @@ TableUI com.formdev.flatlaf.ui.FlatTableUI #---- TaskPane ---- -TaskPane.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] -TaskPane.borderColor #5e6060 javax.swing.plaf.ColorUIResource [UI] +TaskPane.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +TaskPane.borderColor #5e6060 HSL 180 1 37 javax.swing.plaf.ColorUIResource [UI] TaskPane.contentInsets 10,10,10,10 javax.swing.plaf.InsetsUIResource [UI] -TaskPane.specialTitleBackground #afafaf javax.swing.plaf.ColorUIResource [UI] -TaskPane.specialTitleForeground #222222 javax.swing.plaf.ColorUIResource [UI] -TaskPane.specialTitleOver #666666 javax.swing.plaf.ColorUIResource [UI] -TaskPane.titleBackgroundGradientStart #4c5052 javax.swing.plaf.ColorUIResource [UI] -TaskPane.titleForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -TaskPane.titleOver #888888 javax.swing.plaf.ColorUIResource [UI] +TaskPane.specialTitleBackground #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +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.titleOver #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] #---- TaskPaneContainer ---- -TaskPaneContainer.background #3e434c javax.swing.plaf.ColorUIResource [UI] +TaskPaneContainer.background #3e434c HSL 219 10 27 javax.swing.plaf.ColorUIResource [UI] TaskPaneContainer.border [lazy] 10,10,10,10 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] #---- TextArea ---- -TextArea.background #45494a javax.swing.plaf.ColorUIResource [UI] +TextArea.background #45494a HSL 192 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 javax.swing.plaf.ColorUIResource [UI] -TextArea.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] +TextArea.caretForeground #bbbbbb HSL 0 0 73 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 javax.swing.plaf.ColorUIResource [UI] -TextArea.inactiveBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -TextArea.inactiveForeground #888888 javax.swing.plaf.ColorUIResource [UI] +TextArea.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextArea.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +TextArea.inactiveForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] TextArea.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextArea.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -TextArea.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [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] TextAreaUI com.formdev.flatlaf.ui.FlatTextAreaUI @@ -1127,65 +1146,65 @@ TextComponent.selectAllOnMouseClick false #---- TextField ---- -TextField.background #45494a javax.swing.plaf.ColorUIResource [UI] +TextField.background #45494a HSL 192 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 javax.swing.plaf.ColorUIResource [UI] -TextField.darkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI] -TextField.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] +TextField.caretForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextField.darkShadow #7e7e7e HSL 0 0 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 javax.swing.plaf.ColorUIResource [UI] -TextField.highlight #242424 javax.swing.plaf.ColorUIResource [UI] -TextField.inactiveBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -TextField.inactiveForeground #888888 javax.swing.plaf.ColorUIResource [UI] -TextField.light #313131 javax.swing.plaf.ColorUIResource [UI] +TextField.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextField.highlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] +TextField.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +TextField.inactiveForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +TextField.light #313131 HSL 0 0 19 javax.swing.plaf.ColorUIResource [UI] TextField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextField.placeholderForeground #888888 javax.swing.plaf.ColorUIResource [UI] -TextField.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -TextField.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -TextField.shadow #646464 javax.swing.plaf.ColorUIResource [UI] +TextField.placeholderForeground #888888 HSL 0 0 53 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.shadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] TextFieldUI com.formdev.flatlaf.ui.FlatTextFieldUI #---- TextPane ---- -TextPane.background #45494a javax.swing.plaf.ColorUIResource [UI] +TextPane.background #45494a HSL 192 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 javax.swing.plaf.ColorUIResource [UI] -TextPane.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] +TextPane.caretForeground #bbbbbb HSL 0 0 73 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 javax.swing.plaf.ColorUIResource [UI] -TextPane.inactiveBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -TextPane.inactiveForeground #888888 javax.swing.plaf.ColorUIResource [UI] +TextPane.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +TextPane.inactiveBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +TextPane.inactiveForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] TextPane.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextPane.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -TextPane.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [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] TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI #---- TitlePane ---- -TitlePane.background #303234 javax.swing.plaf.ColorUIResource [UI] -TitlePane.buttonHoverBackground #484c4f com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +TitlePane.background #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] +TitlePane.buttonHoverBackground #484c4f HSL 206 5 30 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) TitlePane.buttonMaximizedHeight 22 -TitlePane.buttonPressedBackground #616569 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20% autoInverse) +TitlePane.buttonPressedBackground #616569 HSL 210 4 40 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20% autoInverse) TitlePane.buttonSize 44,30 javax.swing.plaf.DimensionUIResource [UI] TitlePane.centerTitle false TitlePane.centerTitleIfMenuBarEmbedded true -TitlePane.closeHoverBackground #e81123 javax.swing.plaf.ColorUIResource [UI] -TitlePane.closeHoverForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeHoverBackground #e81123 HSL 355 86 49 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeHoverForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TitlePane.closeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] -TitlePane.closePressedBackground #e8112399 60% javax.swing.plaf.ColorUIResource [UI] -TitlePane.closePressedForeground #ffffff javax.swing.plaf.ColorUIResource [UI] -TitlePane.embeddedForeground #959595 javax.swing.plaf.ColorUIResource [UI] -TitlePane.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +TitlePane.closePressedBackground #e8112399 60% HSLA 355 86 49 60 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.foreground #bbbbbb HSL 0 0 73 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 javax.swing.plaf.ColorUIResource [UI] -TitlePane.inactiveForeground #888888 javax.swing.plaf.ColorUIResource [UI] +TitlePane.inactiveBackground #303234 HSL 210 4 20 javax.swing.plaf.ColorUIResource [UI] +TitlePane.inactiveForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] TitlePane.maximizeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] TitlePane.menuBarEmbedded true TitlePane.menuBarTitleGap 20 @@ -1197,9 +1216,9 @@ TitlePane.useWindowDecorations true #---- TitledBorder ---- -TitledBorder.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#515151 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +TitledBorder.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#515151 HSL 0 0 32 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 TitledBorder.font [active] $defaultFont [UI] -TitledBorder.titleColor #bbbbbb javax.swing.plaf.ColorUIResource [UI] +TitledBorder.titleColor #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] #---- TitledPanel ---- @@ -1209,56 +1228,56 @@ TitledPanelUI com.formdev.flatlaf.swingx.ui.FlatTitledPanelUI #---- ToggleButton ---- -ToggleButton.background #4c5052 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.background #4c5052 HSL 200 4 31 javax.swing.plaf.ColorUIResource [UI] ToggleButton.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] -ToggleButton.darkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI] -ToggleButton.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.disabledSelectedBackground #53585a com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) -ToggleButton.disabledText #888888 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.darkShadow #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.disabledBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.disabledSelectedBackground #53585a HSL 197 4 34 com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse) +ToggleButton.disabledText #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] ToggleButton.font [active] $defaultFont [UI] -ToggleButton.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -ToggleButton.highlight #242424 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.highlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] ToggleButton.iconTextGap 4 -ToggleButton.light #313131 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.light #313131 HSL 0 0 19 javax.swing.plaf.ColorUIResource [UI] ToggleButton.margin 2,14,2,14 javax.swing.plaf.InsetsUIResource [UI] -ToggleButton.pressedBackground #5b5f62 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) +ToggleButton.pressedBackground #5b5f62 HSL 206 4 37 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse) ToggleButton.rollover true -ToggleButton.selectedBackground #656a6c com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) -ToggleButton.selectedForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -ToggleButton.shadow #646464 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.tab.disabledUnderlineColor #7a7a7a javax.swing.plaf.ColorUIResource [UI] -ToggleButton.tab.focusBackground #3d4b5c javax.swing.plaf.ColorUIResource [UI] -ToggleButton.tab.hoverBackground #303234 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%) -ToggleButton.tab.underlineColor #4a88c7 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.selectedBackground #656a6c HSL 197 3 41 com.formdev.flatlaf.util.DerivedColor [UI] lighten(10% autoInverse) +ToggleButton.selectedForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.shadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.tab.disabledUnderlineColor #7a7a7a HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.tab.focusBackground #3d4b5c HSL 213 20 30 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.tab.hoverBackground #303234 HSL 210 4 20 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%) +ToggleButton.tab.underlineColor #4a88c7 HSL 210 53 54 javax.swing.plaf.ColorUIResource [UI] ToggleButton.tab.underlineHeight 2 ToggleButton.textIconGap 4 ToggleButton.textShiftOffset 0 -ToggleButton.toolbar.hoverBackground #4e5355 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1% autoInverse) -ToggleButton.toolbar.pressedBackground #565a5d com.formdev.flatlaf.util.DerivedColor [UI] lighten(4% autoInverse) -ToggleButton.toolbar.selectedBackground #5d6265 com.formdev.flatlaf.util.DerivedColor [UI] lighten(7% autoInverse) +ToggleButton.toolbar.hoverBackground #4e5355 HSL 197 4 32 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1% autoInverse) +ToggleButton.toolbar.pressedBackground #565a5d HSL 206 4 35 com.formdev.flatlaf.util.DerivedColor [UI] lighten(4% autoInverse) +ToggleButton.toolbar.selectedBackground #5d6265 HSL 203 4 38 com.formdev.flatlaf.util.DerivedColor [UI] lighten(7% autoInverse) ToggleButtonUI com.formdev.flatlaf.ui.FlatToggleButtonUI #---- ToolBar ---- -ToolBar.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] +ToolBar.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] ToolBar.border [lazy] 2,2,2,2 false com.formdev.flatlaf.ui.FlatToolBarBorder [UI] ToolBar.borderMargins 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] -ToolBar.darkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI] -ToolBar.dockingBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -ToolBar.dockingForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -ToolBar.floatingBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI] -ToolBar.floatingForeground #888888 javax.swing.plaf.ColorUIResource [UI] +ToolBar.darkShadow #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] +ToolBar.dockingBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +ToolBar.dockingForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ToolBar.floatingBackground #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +ToolBar.floatingForeground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] ToolBar.focusableButtons false ToolBar.font [active] $defaultFont [UI] -ToolBar.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -ToolBar.gripColor #adadad javax.swing.plaf.ColorUIResource [UI] -ToolBar.highlight #242424 javax.swing.plaf.ColorUIResource [UI] +ToolBar.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +ToolBar.gripColor #adadad HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] +ToolBar.highlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] ToolBar.isRollover true -ToolBar.light #313131 javax.swing.plaf.ColorUIResource [UI] -ToolBar.separatorColor #515151 javax.swing.plaf.ColorUIResource [UI] +ToolBar.light #313131 HSL 0 0 19 javax.swing.plaf.ColorUIResource [UI] +ToolBar.separatorColor #515151 HSL 0 0 32 javax.swing.plaf.ColorUIResource [UI] ToolBar.separatorWidth 7 -ToolBar.shadow #646464 javax.swing.plaf.ColorUIResource [UI] +ToolBar.shadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] ToolBar.spacingBorder [lazy] 1,2,1,2 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] @@ -1274,10 +1293,10 @@ ToolBarUI com.formdev.flatlaf.ui.FlatToolBarUI #---- ToolTip ---- -ToolTip.background #1e2123 javax.swing.plaf.ColorUIResource [UI] +ToolTip.background #1e2123 HSL 204 8 13 javax.swing.plaf.ColorUIResource [UI] ToolTip.border [lazy] 4,6,4,6 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] ToolTip.font [active] $defaultFont [UI] -ToolTip.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +ToolTip.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] #---- ToolTipManager ---- @@ -1292,25 +1311,25 @@ ToolTipUI com.formdev.flatlaf.ui.FlatToolTipUI #---- Tree ---- -Tree.background #45494a javax.swing.plaf.ColorUIResource [UI] +Tree.background #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] Tree.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] Tree.changeSelectionWithFocus true Tree.closedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTreeClosedIcon [UI] Tree.collapsedIcon [lazy] 11,11 com.formdev.flatlaf.icons.FlatTreeCollapsedIcon [UI] Tree.drawsFocusBorderAroundIcon false -Tree.dropCellBackground [lazy] #3c588b javax.swing.plaf.ColorUIResource [UI] -Tree.dropCellForeground [lazy] #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Tree.dropLineColor [lazy] #6d8ac0 javax.swing.plaf.ColorUIResource [UI] -Tree.editorBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +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.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=#000000 HSL 0 0 0 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 javax.swing.plaf.ColorUIResource [UI] -Tree.hash #515657 javax.swing.plaf.ColorUIResource [UI] -Tree.icon.closedColor #adadad javax.swing.plaf.ColorUIResource [UI] -Tree.icon.collapsedColor #adadad javax.swing.plaf.ColorUIResource [UI] -Tree.icon.expandedColor #adadad javax.swing.plaf.ColorUIResource [UI] -Tree.icon.leafColor #adadad javax.swing.plaf.ColorUIResource [UI] -Tree.icon.openColor #adadad javax.swing.plaf.ColorUIResource [UI] +Tree.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Tree.hash #515657 HSL 190 4 33 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.closedColor #adadad HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.collapsedColor #adadad HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.expandedColor #adadad HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.leafColor #adadad HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.openColor #adadad HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] Tree.leafIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTreeLeafIcon [UI] Tree.leftChildIndent 7 Tree.lineTypeDashed false @@ -1322,14 +1341,14 @@ Tree.repaintWholeRow true Tree.rightChildIndent 11 Tree.rowHeight 0 Tree.scrollsOnExpand true -Tree.selectionBackground #4b6eaf javax.swing.plaf.ColorUIResource [UI] -Tree.selectionBorderColor #000000 javax.swing.plaf.ColorUIResource [UI] -Tree.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Tree.selectionInactiveBackground #0d293e javax.swing.plaf.ColorUIResource [UI] -Tree.selectionInactiveForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +Tree.selectionBackground #4b6eaf HSL 219 40 49 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionBorderColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionInactiveBackground #0d293e HSL 206 65 15 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionInactiveForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] Tree.showCellFocusIndicator false -Tree.textBackground #45494a javax.swing.plaf.ColorUIResource [UI] -Tree.textForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +Tree.textBackground #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] +Tree.textForeground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] Tree.timeFactor 1000 Tree.wideSelection true TreeUI com.formdev.flatlaf.ui.FlatTreeUI @@ -1347,30 +1366,30 @@ TristateCheckBox.setMixed.clientProperty length=2 [Ljava.lang.Object; #---- UIColorHighlighter ---- -UIColorHighlighter.stripingBackground #515657 javax.swing.plaf.ColorUIResource [UI] +UIColorHighlighter.stripingBackground #515657 HSL 190 4 33 javax.swing.plaf.ColorUIResource [UI] #---- Viewport ---- -Viewport.background #3c3f41 javax.swing.plaf.ColorUIResource [UI] +Viewport.background #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] Viewport.font [active] $defaultFont [UI] -Viewport.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +Viewport.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] ViewportUI com.formdev.flatlaf.ui.FlatViewportUI #---- ---- -activeCaption #434e60 javax.swing.plaf.ColorUIResource [UI] -activeCaptionBorder #434e60 javax.swing.plaf.ColorUIResource [UI] -activeCaptionText #bbbbbb javax.swing.plaf.ColorUIResource [UI] -control #3c3f41 javax.swing.plaf.ColorUIResource [UI] -controlDkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI] -controlHighlight #313131 javax.swing.plaf.ColorUIResource [UI] -controlLtHighlight #242424 javax.swing.plaf.ColorUIResource [UI] -controlShadow #646464 javax.swing.plaf.ColorUIResource [UI] -controlText #bbbbbb javax.swing.plaf.ColorUIResource [UI] +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] +control #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +controlDkShadow #7e7e7e HSL 0 0 49 javax.swing.plaf.ColorUIResource [UI] +controlHighlight #313131 HSL 0 0 19 javax.swing.plaf.ColorUIResource [UI] +controlLtHighlight #242424 HSL 0 0 14 javax.swing.plaf.ColorUIResource [UI] +controlShadow #646464 HSL 0 0 39 javax.swing.plaf.ColorUIResource [UI] +controlText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] defaultFont Segoe UI plain 12 javax.swing.plaf.FontUIResource [UI] -desktop #45494a javax.swing.plaf.ColorUIResource [UI] +desktop #45494a HSL 192 3 28 javax.swing.plaf.ColorUIResource [UI] #---- html ---- @@ -1381,11 +1400,11 @@ html.pendingImage [lazy] 38,38 sun.swing.ImageIconUIResource [UI #---- ---- -inactiveCaption #393c3d javax.swing.plaf.ColorUIResource [UI] -inactiveCaptionBorder #393c3d javax.swing.plaf.ColorUIResource [UI] -inactiveCaptionText #bbbbbb javax.swing.plaf.ColorUIResource [UI] -info #1e2123 javax.swing.plaf.ColorUIResource [UI] -infoText #bbbbbb javax.swing.plaf.ColorUIResource [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] +info #1e2123 HSL 204 8 13 javax.swing.plaf.ColorUIResource [UI] +infoText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] #---- laf ---- @@ -1396,9 +1415,9 @@ laf.scaleFactor [active] 1.0 #---- ---- -menu #3c3f41 javax.swing.plaf.ColorUIResource [UI] -menuText #bbbbbb javax.swing.plaf.ColorUIResource [UI] -scrollbar #3e4244 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) +menu #3c3f41 HSL 204 4 25 javax.swing.plaf.ColorUIResource [UI] +menuText #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +scrollbar #3e4244 HSL 200 5 25 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) #---- swingx/TaskPane ---- @@ -1408,11 +1427,11 @@ swingx/TaskPaneUI com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI #---- ---- -text #45494a javax.swing.plaf.ColorUIResource [UI] -textHighlight #4b6eaf javax.swing.plaf.ColorUIResource [UI] -textHighlightText #bbbbbb javax.swing.plaf.ColorUIResource [UI] -textInactiveText #888888 javax.swing.plaf.ColorUIResource [UI] -textText #bbbbbb javax.swing.plaf.ColorUIResource [UI] -window #3c3f41 javax.swing.plaf.ColorUIResource [UI] -windowBorder #bbbbbb javax.swing.plaf.ColorUIResource [UI] -windowText #bbbbbb javax.swing.plaf.ColorUIResource [UI] +text #45494a HSL 192 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 #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +textText #bbbbbb HSL 0 0 73 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] diff --git a/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0_202.txt index c5364197..3b7d35be 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0_202.txt @@ -12,44 +12,44 @@ - Button.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] + Button.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] -- Button.default.background #ffffff javax.swing.plaf.ColorUIResource [UI] -+ Button.default.background #4d8ac9 javax.swing.plaf.ColorUIResource [UI] +- Button.default.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ++ Button.default.background #4d8ac9 HSL 210 53 55 javax.swing.plaf.ColorUIResource [UI] + Button.default.boldText true -- Button.default.borderColor #4f9ee3 javax.swing.plaf.ColorUIResource [UI] -+ Button.default.borderColor #3d75b2 javax.swing.plaf.ColorUIResource [UI] +- Button.default.borderColor #4f9ee3 HSL 208 73 60 javax.swing.plaf.ColorUIResource [UI] ++ Button.default.borderColor #3d75b2 HSL 211 49 47 javax.swing.plaf.ColorUIResource [UI] - Button.default.borderWidth 2 + Button.default.borderWidth 1 -- Button.default.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI] +- Button.default.focusedBackground #e3f1fa HSL 203 70 94 javax.swing.plaf.ColorUIResource [UI] -- Button.default.focusedBorderColor #87afda javax.swing.plaf.ColorUIResource [UI] -+ Button.default.focusedBorderColor #a9c9f5 javax.swing.plaf.ColorUIResource [UI] +- Button.default.focusedBorderColor #87afda HSL 211 53 69 javax.swing.plaf.ColorUIResource [UI] ++ Button.default.focusedBorderColor #a9c9f5 HSL 215 79 81 javax.swing.plaf.ColorUIResource [UI] -- Button.default.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -+ Button.default.foreground #ffffff javax.swing.plaf.ColorUIResource [UI] +- Button.default.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] ++ Button.default.foreground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] -- Button.default.hoverBackground #f7f7f7 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) -+ Button.default.hoverBackground #4182c5 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) +- Button.default.hoverBackground #f7f7f7 HSL 0 0 97 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) ++ Button.default.hoverBackground #4182c5 HSL 210 53 51 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) -- Button.default.hoverBorderColor #87afda javax.swing.plaf.ColorUIResource [UI] -+ Button.default.hoverBorderColor #a9c9f5 javax.swing.plaf.ColorUIResource [UI] +- Button.default.hoverBorderColor #87afda HSL 211 53 69 javax.swing.plaf.ColorUIResource [UI] ++ Button.default.hoverBorderColor #a9c9f5 HSL 215 79 81 javax.swing.plaf.ColorUIResource [UI] -- Button.default.pressedBackground #e6e6e6 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) -+ Button.default.pressedBackground #3571ae com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +- Button.default.pressedBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) ++ Button.default.pressedBackground #3571ae HSL 210 53 45 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) -- Button.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI] +- Button.focusedBackground #e3f1fa HSL 203 70 94 javax.swing.plaf.ColorUIResource [UI] #---- CheckBox ---- -- CheckBox.icon.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI] +- CheckBox.icon.focusedBackground #e3f1fa HSL 203 70 94 javax.swing.plaf.ColorUIResource [UI] + CheckBox.icon.style filled -- CheckBox.icon[filled].selectedFocusedCheckmarkColor #e3f1fa javax.swing.plaf.ColorUIResource [UI] +- CheckBox.icon[filled].selectedFocusedCheckmarkColor #e3f1fa HSL 203 70 94 javax.swing.plaf.ColorUIResource [UI] #---- ComboBox ---- @@ -81,7 +81,7 @@ #---- HelpButton ---- -- HelpButton.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI] +- HelpButton.focusedBackground #e3f1fa HSL 203 70 94 javax.swing.plaf.ColorUIResource [UI] - HelpButton.icon [lazy] 22,22 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI] + HelpButton.icon [lazy] 26,26 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202.txt index 2a118223..d3942343 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202.txt @@ -12,12 +12,12 @@ AATextInfoPropertyKey [unknown type] sun.swing.SwingUtilities2$AATextIn #---- Actions ---- -Actions.Blue #389fd6 javax.swing.plaf.ColorUIResource [UI] -Actions.Green #59a869 javax.swing.plaf.ColorUIResource [UI] -Actions.Grey #6e6e6e javax.swing.plaf.ColorUIResource [UI] -Actions.GreyInline #7f8b91 javax.swing.plaf.ColorUIResource [UI] -Actions.Red #db5860 javax.swing.plaf.ColorUIResource [UI] -Actions.Yellow #eda200 javax.swing.plaf.ColorUIResource [UI] +Actions.Blue #389fd6 HSL 201 66 53 javax.swing.plaf.ColorUIResource [UI] +Actions.Green #59a869 HSL 132 31 50 javax.swing.plaf.ColorUIResource [UI] +Actions.Grey #6e6e6e HSL 0 0 43 javax.swing.plaf.ColorUIResource [UI] +Actions.GreyInline #7f8b91 HSL 200 8 53 javax.swing.plaf.ColorUIResource [UI] +Actions.Red #db5860 HSL 356 65 60 javax.swing.plaf.ColorUIResource [UI] +Actions.Yellow #eda200 HSL 41 100 46 javax.swing.plaf.ColorUIResource [UI] #---- AuditoryCues ---- @@ -62,50 +62,50 @@ BusyLabelUI com.formdev.flatlaf.swingx.ui.FlatBusyLabelUI #---- Button ---- Button.arc 6 -Button.background #ffffff javax.swing.plaf.ColorUIResource [UI] +Button.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Button.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] -Button.borderColor #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +Button.borderColor #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] Button.borderWidth 1 -Button.darkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI] -Button.default.background #ffffff javax.swing.plaf.ColorUIResource [UI] -Button.default.borderColor #4f9ee3 javax.swing.plaf.ColorUIResource [UI] +Button.darkShadow #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] +Button.default.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Button.default.borderColor #4f9ee3 HSL 208 73 60 javax.swing.plaf.ColorUIResource [UI] Button.default.borderWidth 2 -Button.default.focusColor #97c3f3 javax.swing.plaf.ColorUIResource [UI] -Button.default.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI] -Button.default.focusedBorderColor #87afda javax.swing.plaf.ColorUIResource [UI] -Button.default.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -Button.default.hoverBackground #f7f7f7 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) -Button.default.hoverBorderColor #87afda javax.swing.plaf.ColorUIResource [UI] -Button.default.pressedBackground #e6e6e6 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +Button.default.focusColor #97c3f3 HSL 211 79 77 javax.swing.plaf.ColorUIResource [UI] +Button.default.focusedBackground #e3f1fa HSL 203 70 94 javax.swing.plaf.ColorUIResource [UI] +Button.default.focusedBorderColor #87afda HSL 211 53 69 javax.swing.plaf.ColorUIResource [UI] +Button.default.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +Button.default.hoverBackground #f7f7f7 HSL 0 0 97 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) +Button.default.hoverBorderColor #87afda HSL 211 53 69 javax.swing.plaf.ColorUIResource [UI] +Button.default.pressedBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) Button.defaultButtonFollowsFocus false -Button.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -Button.disabledBorderColor #cfcfcf javax.swing.plaf.ColorUIResource [UI] -Button.disabledForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] -Button.disabledSelectedBackground #dedede com.formdev.flatlaf.util.DerivedColor [UI] darken(13% autoInverse) -Button.disabledText #8c8c8c javax.swing.plaf.ColorUIResource [UI] -Button.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI] -Button.focusedBorderColor #87afda javax.swing.plaf.ColorUIResource [UI] +Button.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +Button.disabledBorderColor #cfcfcf HSL 0 0 81 javax.swing.plaf.ColorUIResource [UI] +Button.disabledForeground #8c8c8c HSL 0 0 55 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.focusedBackground #e3f1fa HSL 203 70 94 javax.swing.plaf.ColorUIResource [UI] +Button.focusedBorderColor #87afda HSL 211 53 69 javax.swing.plaf.ColorUIResource [UI] Button.font [active] $defaultFont [UI] -Button.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -Button.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -Button.hoverBackground #f7f7f7 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) -Button.hoverBorderColor #87afda javax.swing.plaf.ColorUIResource [UI] +Button.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +Button.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Button.hoverBackground #f7f7f7 HSL 0 0 97 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) +Button.hoverBorderColor #87afda HSL 211 53 69 javax.swing.plaf.ColorUIResource [UI] Button.iconTextGap 4 Button.innerFocusWidth 0 -Button.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +Button.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] Button.margin 2,14,2,14 javax.swing.plaf.InsetsUIResource [UI] Button.minimumWidth 72 -Button.pressedBackground #e6e6e6 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +Button.pressedBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) Button.rollover true -Button.selectedBackground #cccccc com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) -Button.selectedForeground #000000 javax.swing.plaf.ColorUIResource [UI] -Button.shadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +Button.selectedBackground #cccccc HSL 0 0 80 com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) +Button.selectedForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +Button.shadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] Button.textIconGap 4 Button.textShiftOffset 0 -Button.toolbar.hoverBackground #e0e0e0 com.formdev.flatlaf.util.DerivedColor [UI] darken(12% autoInverse) +Button.toolbar.hoverBackground #e0e0e0 HSL 0 0 88 com.formdev.flatlaf.util.DerivedColor [UI] darken(12% autoInverse) Button.toolbar.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -Button.toolbar.pressedBackground #d9d9d9 com.formdev.flatlaf.util.DerivedColor [UI] darken(15% autoInverse) -Button.toolbar.selectedBackground #cccccc com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) +Button.toolbar.pressedBackground #d9d9d9 HSL 0 0 85 com.formdev.flatlaf.util.DerivedColor [UI] darken(15% autoInverse) +Button.toolbar.selectedBackground #cccccc HSL 0 0 80 com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) Button.toolbar.spacingInsets 1,2,1,2 javax.swing.plaf.InsetsUIResource [UI] ButtonUI com.formdev.flatlaf.ui.FlatButtonUI @@ -118,34 +118,34 @@ Caret.width [active] 1 #---- CheckBox ---- CheckBox.arc 4 -CheckBox.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +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 javax.swing.plaf.ColorUIResource [UI] +CheckBox.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] CheckBox.font [active] $defaultFont [UI] -CheckBox.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.background #ffffff javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.borderColor #b0b0b0 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.checkmarkColor #4f9ee3 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.disabledBorderColor #bdbdbd javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.disabledCheckmarkColor #ababab javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.focusedBorderColor #7b9fc7 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.hoverBackground #f7f7f7 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) -CheckBox.icon.hoverBorderColor #7b9fc7 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.pressedBackground #e6e6e6 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) -CheckBox.icon.selectedBackground #ffffff javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.selectedBorderColor #b0b0b0 javax.swing.plaf.ColorUIResource [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] +CheckBox.icon.borderColor #b0b0b0 HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.checkmarkColor #4f9ee3 HSL 208 73 60 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledBorderColor #bdbdbd HSL 0 0 74 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledCheckmarkColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.focusedBackground #e3f1fa HSL 203 70 94 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.focusedBorderColor #7b9fc7 HSL 212 40 63 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.hoverBackground #f7f7f7 HSL 0 0 97 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) +CheckBox.icon.hoverBorderColor #7b9fc7 HSL 212 40 63 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.pressedBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +CheckBox.icon.selectedBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.selectedBorderColor #b0b0b0 HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI] CheckBox.iconTextGap 4 -CheckBox.icon[filled].checkmarkColor #ffffff javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedBackground #4f9ee3 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedBorderColor #4b97d9 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedFocusedBackground #4f9ee3 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedFocusedBorderColor #accff7 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedFocusedCheckmarkColor #e3f1fa javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon[filled].selectedHoverBackground #3992e0 com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse) -CheckBox.icon[filled].selectedPressedBackground #2386dc com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +CheckBox.icon[filled].checkmarkColor #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].selectedBackground #4f9ee3 HSL 208 73 60 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].selectedBorderColor #4b97d9 HSL 208 65 57 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].selectedFocusedBackground #4f9ee3 HSL 208 73 60 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].selectedFocusedBorderColor #accff7 HSL 212 82 82 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].selectedFocusedCheckmarkColor #e3f1fa HSL 203 70 94 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon[filled].selectedHoverBackground #3992e0 HSL 208 73 55 com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse) +CheckBox.icon[filled].selectedPressedBackground #2386dc HSL 208 73 50 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) CheckBox.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] CheckBox.rollover true CheckBox.textIconGap 4 @@ -155,20 +155,20 @@ CheckBox.textShiftOffset 0 #---- CheckBoxMenuItem ---- CheckBoxMenuItem.acceleratorFont [active] $defaultFont [UI] -CheckBoxMenuItem.acceleratorForeground #4d4d4d javax.swing.plaf.ColorUIResource [UI] -CheckBoxMenuItem.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.acceleratorForeground #4d4d4d HSL 0 0 30 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.acceleratorSelectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] -CheckBoxMenuItem.background #ffffff javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.background #ffffff HSL 0 0 100 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 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.font [active] $defaultFont [UI] -CheckBoxMenuItem.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.margin 3,6,3,6 javax.swing.plaf.InsetsUIResource [UI] CheckBoxMenuItem.opaque false -CheckBoxMenuItem.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -CheckBoxMenuItem.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItemUI com.formdev.flatlaf.ui.FlatCheckBoxMenuItemUI @@ -179,10 +179,10 @@ CheckBoxUI com.formdev.flatlaf.ui.FlatCheckBoxUI #---- ColorChooser ---- -ColorChooser.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +ColorChooser.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] ColorChooser.font [active] $defaultFont [UI] -ColorChooser.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -ColorChooser.swatchesDefaultRecentColor #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +ColorChooser.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +ColorChooser.swatchesDefaultRecentColor #f2f2f2 HSL 0 0 95 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] ColorChooserUI com.formdev.flatlaf.ui.FlatColorChooserUI @@ -190,30 +190,30 @@ ColorChooserUI com.formdev.flatlaf.ui.FlatColorChooserUI #---- ComboBox ---- -ComboBox.background #ffffff javax.swing.plaf.ColorUIResource [UI] +ComboBox.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ComboBox.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI] -ComboBox.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonBackground #ffffff javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonDarkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonDisabledArrowColor #a6a6a6 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonEditableBackground #fafafa javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonHoverArrowColor #999999 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) -ComboBox.buttonPressedArrowColor #b3b3b3 com.formdev.flatlaf.util.DerivedColor [UI] lighten(30%) -ComboBox.buttonShadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonArrowColor #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonDarkShadow #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonDisabledArrowColor #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonEditableBackground #fafafa HSL 0 0 98 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonHighlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonHoverArrowColor #999999 HSL 0 0 60 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) +ComboBox.buttonPressedArrowColor #b3b3b3 HSL 0 0 70 com.formdev.flatlaf.util.DerivedColor [UI] lighten(30%) +ComboBox.buttonShadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonStyle auto -ComboBox.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -ComboBox.disabledForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] +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.editorColumns 0 ComboBox.font [active] $defaultFont [UI] -ComboBox.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +ComboBox.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] ComboBox.isEnterSelectablePopup false ComboBox.maximumRowCount 15 ComboBox.minimumWidth 72 ComboBox.noActionOnKeyNavigation false ComboBox.padding 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -ComboBox.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -ComboBox.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +ComboBox.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] +ComboBox.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ComboBox.timeFactor 1000 ComboBoxUI com.formdev.flatlaf.ui.FlatComboBoxUI @@ -222,22 +222,22 @@ ComboBoxUI com.formdev.flatlaf.ui.FlatComboBoxUI Component.arc 5 Component.arrowType chevron -Component.borderColor #c4c4c4 javax.swing.plaf.ColorUIResource [UI] -Component.custom.borderColor #f38d8d com.formdev.flatlaf.util.DerivedColor [UI] desaturate(20%) lighten(25%) -Component.disabledBorderColor #cfcfcf javax.swing.plaf.ColorUIResource [UI] -Component.error.borderColor #ebb8bc javax.swing.plaf.ColorUIResource [UI] -Component.error.focusedBorderColor #e53e4d javax.swing.plaf.ColorUIResource [UI] -Component.focusColor #97c3f3 javax.swing.plaf.ColorUIResource [UI] +Component.borderColor #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] +Component.custom.borderColor #f38d8d HSL 0 81 75 com.formdev.flatlaf.util.DerivedColor [UI] desaturate(20%) lighten(25%) +Component.disabledBorderColor #cfcfcf HSL 0 0 81 javax.swing.plaf.ColorUIResource [UI] +Component.error.borderColor #ebb8bc HSL 355 56 82 javax.swing.plaf.ColorUIResource [UI] +Component.error.focusedBorderColor #e53e4d HSL 355 76 57 javax.swing.plaf.ColorUIResource [UI] +Component.focusColor #97c3f3 HSL 211 79 77 javax.swing.plaf.ColorUIResource [UI] Component.focusWidth 0 -Component.focusedBorderColor #87afda javax.swing.plaf.ColorUIResource [UI] +Component.focusedBorderColor #87afda HSL 211 53 69 javax.swing.plaf.ColorUIResource [UI] Component.grayFilter [lazy] [unknown type] com.formdev.flatlaf.util.GrayFilter Component.hideMnemonics true Component.innerFocusWidth 0.5 Component.innerOutlineWidth 1.0 -Component.linkColor #2470b3 javax.swing.plaf.ColorUIResource [UI] +Component.linkColor #2470b3 HSL 208 67 42 javax.swing.plaf.ColorUIResource [UI] Component.minimumWidth 64 -Component.warning.borderColor #fed284 javax.swing.plaf.ColorUIResource [UI] -Component.warning.focusedBorderColor #e2a53a 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] #---- DatePicker ---- @@ -247,17 +247,17 @@ DatePickerUI com.formdev.flatlaf.swingx.ui.FlatDatePickerUI #---- Desktop ---- -Desktop.background #e6ebf0 javax.swing.plaf.ColorUIResource [UI] +Desktop.background #e6ebf0 HSL 210 25 92 javax.swing.plaf.ColorUIResource [UI] Desktop.minOnScreenInsets 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] #---- DesktopIcon ---- -DesktopIcon.background #c6d2dd com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +DesktopIcon.background #c6d2dd HSL 209 25 82 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) 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 #000000 javax.swing.plaf.ColorUIResource [UI] +DesktopIcon.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] DesktopIcon.iconSize 64,64 javax.swing.plaf.DimensionUIResource [UI] DesktopIconUI com.formdev.flatlaf.ui.FlatDesktopIconUI @@ -269,18 +269,18 @@ DesktopPaneUI com.formdev.flatlaf.ui.FlatDesktopPaneUI #---- EditorPane ---- -EditorPane.background #ffffff javax.swing.plaf.ColorUIResource [UI] +EditorPane.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] EditorPane.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] EditorPane.caretBlinkRate 500 -EditorPane.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] -EditorPane.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +EditorPane.caretForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +EditorPane.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] EditorPane.font [active] $defaultFont [UI] -EditorPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -EditorPane.inactiveBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -EditorPane.inactiveForeground #8c8c8c javax.swing.plaf.ColorUIResource [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.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -EditorPane.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -EditorPane.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [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] EditorPaneUI com.formdev.flatlaf.ui.FlatEditorPaneUI @@ -308,19 +308,19 @@ FileView.hardDriveIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatFil #---- FormattedTextField ---- -FormattedTextField.background #ffffff javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI] FormattedTextField.caretBlinkRate 500 -FormattedTextField.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.caretForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.font [active] $defaultFont [UI] -FormattedTextField.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.inactiveBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.inactiveForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +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.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -FormattedTextField.placeholderForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.placeholderForeground #8c8c8c HSL 0 0 55 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 @@ -331,61 +331,61 @@ HeaderUI com.formdev.flatlaf.swingx.ui.FlatHeaderUI #---- HelpButton ---- -HelpButton.background #ffffff javax.swing.plaf.ColorUIResource [UI] -HelpButton.borderColor #b0b0b0 javax.swing.plaf.ColorUIResource [UI] +HelpButton.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +HelpButton.borderColor #b0b0b0 HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] HelpButton.borderWidth 1 -HelpButton.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -HelpButton.disabledBorderColor #bdbdbd javax.swing.plaf.ColorUIResource [UI] -HelpButton.disabledQuestionMarkColor #ababab javax.swing.plaf.ColorUIResource [UI] -HelpButton.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI] -HelpButton.focusedBorderColor #7b9fc7 javax.swing.plaf.ColorUIResource [UI] -HelpButton.hoverBackground #f7f7f7 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) -HelpButton.hoverBorderColor #7b9fc7 javax.swing.plaf.ColorUIResource [UI] +HelpButton.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +HelpButton.disabledBorderColor #bdbdbd HSL 0 0 74 javax.swing.plaf.ColorUIResource [UI] +HelpButton.disabledQuestionMarkColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +HelpButton.focusedBackground #e3f1fa HSL 203 70 94 javax.swing.plaf.ColorUIResource [UI] +HelpButton.focusedBorderColor #7b9fc7 HSL 212 40 63 javax.swing.plaf.ColorUIResource [UI] +HelpButton.hoverBackground #f7f7f7 HSL 0 0 97 com.formdev.flatlaf.util.DerivedColor [UI] darken(3% autoInverse) +HelpButton.hoverBorderColor #7b9fc7 HSL 212 40 63 javax.swing.plaf.ColorUIResource [UI] HelpButton.icon [lazy] 22,22 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI] HelpButton.innerFocusWidth 0 -HelpButton.pressedBackground #e6e6e6 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) -HelpButton.questionMarkColor #4f9ee3 javax.swing.plaf.ColorUIResource [UI] +HelpButton.pressedBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +HelpButton.questionMarkColor #4f9ee3 HSL 208 73 60 javax.swing.plaf.ColorUIResource [UI] #---- Hyperlink ---- -Hyperlink.disabledText #8c8c8c javax.swing.plaf.ColorUIResource [UI] -Hyperlink.linkColor #2470b3 javax.swing.plaf.ColorUIResource [UI] -Hyperlink.visitedColor #2470b3 javax.swing.plaf.ColorUIResource [UI] +Hyperlink.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +Hyperlink.linkColor #2470b3 HSL 208 67 42 javax.swing.plaf.ColorUIResource [UI] +Hyperlink.visitedColor #2470b3 HSL 208 67 42 javax.swing.plaf.ColorUIResource [UI] HyperlinkUI com.formdev.flatlaf.swingx.ui.FlatHyperlinkUI #---- InternalFrame ---- -InternalFrame.activeBorderColor #919191 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.activeBorderColor #919191 HSL 0 0 57 javax.swing.plaf.ColorUIResource [UI] InternalFrame.activeDropShadowInsets 5,5,6,6 javax.swing.plaf.InsetsUIResource [UI] InternalFrame.activeDropShadowOpacity 0.25 -InternalFrame.activeTitleBackground #ffffff javax.swing.plaf.ColorUIResource [UI] -InternalFrame.activeTitleForeground #000000 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.activeTitleBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.activeTitleForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] InternalFrame.border [lazy] 6,6,6,6 false com.formdev.flatlaf.ui.FlatInternalFrameUI$FlatInternalFrameBorder [UI] -InternalFrame.borderColor #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.borderDarkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI] -InternalFrame.borderHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] -InternalFrame.borderLight #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderColor #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderDarkShadow #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderHighlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderLight #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] InternalFrame.borderLineWidth 1 InternalFrame.borderMargins 6,6,6,6 javax.swing.plaf.InsetsUIResource [UI] -InternalFrame.borderShadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.buttonHoverBackground #e6e6e6 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) -InternalFrame.buttonPressedBackground #cccccc com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) +InternalFrame.borderShadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.buttonHoverBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +InternalFrame.buttonPressedBackground #cccccc HSL 0 0 80 com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) InternalFrame.buttonSize 24,24 javax.swing.plaf.DimensionUIResource [UI] -InternalFrame.closeHoverBackground [lazy] #db5860 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.closeHoverForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closeHoverBackground [lazy] #db5860 HSL 356 65 60 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closeHoverForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] InternalFrame.closeIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameCloseIcon [UI] -InternalFrame.closePressedBackground [lazy] #d22e38 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.closePressedForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closePressedBackground [lazy] #d22e38 HSL 356 65 50 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closePressedForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] InternalFrame.dropShadowPainted true InternalFrame.icon [lazy] 16,16 sun.swing.ImageIconUIResource [UI] (sun.awt.image.ToolkitImage) InternalFrame.iconifyIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameIconifyIcon [UI] -InternalFrame.inactiveBorderColor #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.inactiveBorderColor #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] InternalFrame.inactiveDropShadowInsets 3,3,4,4 javax.swing.plaf.InsetsUIResource [UI] InternalFrame.inactiveDropShadowOpacity 0.5 -InternalFrame.inactiveTitleBackground #fafafa javax.swing.plaf.ColorUIResource [UI] -InternalFrame.inactiveTitleForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] +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.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] @@ -406,8 +406,8 @@ InternalFrameUI com.formdev.flatlaf.ui.FlatInternalFrameUI #---- JXBusyLabel ---- -JXBusyLabel.baseColor #c4c4c4 javax.swing.plaf.ColorUIResource [UI] -JXBusyLabel.highlightColor #808080 javax.swing.plaf.ColorUIResource [UI] +JXBusyLabel.baseColor #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] +JXBusyLabel.highlightColor #808080 HSL 0 0 50 javax.swing.plaf.ColorUIResource [UI] #---- JXDatePicker ---- @@ -417,59 +417,59 @@ JXDatePicker.border [lazy] 1,1,1,1 false com.formdev.flatlaf.swin #---- JXHeader ---- -JXHeader.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -JXHeader.startBackground #ffffff javax.swing.plaf.ColorUIResource [UI] +JXHeader.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +JXHeader.startBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] #---- JXMonthView ---- -JXMonthView.arrowColor #000000 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.background #ffffff javax.swing.plaf.ColorUIResource [UI] -JXMonthView.daysOfTheWeekForeground #444444 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.disabledArrowColor #8c8c8c javax.swing.plaf.ColorUIResource [UI] -JXMonthView.flaggedDayForeground #e02222 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.leadingDayForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] +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.flaggedDayForeground #e02222 HSL 0 75 51 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.leadingDayForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] JXMonthView.monthDownFileName [lazy] 20,20 com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon [UI] -JXMonthView.monthStringBackground #dfdfdf javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthStringForeground #000000 javax.swing.plaf.ColorUIResource [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 #b9cef8 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.trailingDayForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] -JXMonthView.unselectableDayForeground #e02222 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.weekOfTheYearForeground #666666 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.selectedBackground #b9cef8 HSL 220 82 85 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.trailingDayForeground #8c8c8c HSL 0 0 55 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] #---- JXTitledPanel ---- -JXTitledPanel.borderColor #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +JXTitledPanel.borderColor #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] JXTitledPanel.captionInsets 4,10,4,10 javax.swing.plaf.InsetsUIResource [UI] -JXTitledPanel.titleBackground #dfdfdf javax.swing.plaf.ColorUIResource [UI] -JXTitledPanel.titleForeground #222222 javax.swing.plaf.ColorUIResource [UI] +JXTitledPanel.titleBackground #dfdfdf HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +JXTitledPanel.titleForeground #222222 HSL 0 0 13 javax.swing.plaf.ColorUIResource [UI] #---- JideButton ---- -JideButton.background #ffffff javax.swing.plaf.ColorUIResource [UI] +JideButton.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] JideButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -JideButton.borderColor #c4c4c4 javax.swing.plaf.ColorUIResource [UI] -JideButton.darkShadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] -JideButton.focusedBackground #e0e0e0 com.formdev.flatlaf.util.DerivedColor [UI] darken(12% autoInverse) -JideButton.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -JideButton.highlight #cccccc com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) -JideButton.light #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +JideButton.borderColor #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] +JideButton.darkShadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] +JideButton.focusedBackground #e0e0e0 HSL 0 0 88 com.formdev.flatlaf.util.DerivedColor [UI] darken(12% autoInverse) +JideButton.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +JideButton.highlight #cccccc HSL 0 0 80 com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) +JideButton.light #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] JideButton.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -JideButton.selectedAndFocusedBackground #d9d9d9 com.formdev.flatlaf.util.DerivedColor [UI] darken(15% autoInverse) -JideButton.selectedBackground #cccccc com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) -JideButton.shadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +JideButton.selectedAndFocusedBackground #d9d9d9 HSL 0 0 85 com.formdev.flatlaf.util.DerivedColor [UI] darken(15% autoInverse) +JideButton.selectedBackground #cccccc HSL 0 0 80 com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) +JideButton.shadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] JideButton.textIconGap [active] 4 JideButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideButtonUI #---- JideLabel ---- -JideLabel.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -JideLabel.disabledForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] -JideLabel.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +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.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] JideLabelUI com.formdev.flatlaf.jideoss.ui.FlatJideLabelUI @@ -480,28 +480,28 @@ JidePopupMenuUI com.formdev.flatlaf.jideoss.ui.FlatJidePopupMenuU #---- JideSplitButton ---- -JideSplitButton.background #ffffff javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -JideSplitButton.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI] -JideSplitButton.buttonDisabledArrowColor #a6a6a6 javax.swing.plaf.ColorUIResource [UI] -JideSplitButton.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.buttonArrowColor #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.buttonDisabledArrowColor #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -JideSplitButton.selectionForeground #000000 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.selectionForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.textIconGap [active] 4 JideSplitButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideSplitButtonUI #---- JideTabbedPane ---- -JideTabbedPane.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +JideTabbedPane.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] JideTabbedPane.closeButtonLeftMargin 0 JideTabbedPane.closeButtonRightMargin 0 JideTabbedPane.contentBorderInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] JideTabbedPane.fitStyleBoundSize 0 JideTabbedPane.fitStyleFirstTabMargin 0 -JideTabbedPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -JideTabbedPane.shadow #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -JideTabbedPane.tabAreaBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +JideTabbedPane.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +JideTabbedPane.shadow #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +JideTabbedPane.tabAreaBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] JideTabbedPane.tabAreaInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] JideTabbedPane.tabInsets 4,12,4,12 javax.swing.plaf.InsetsUIResource [UI] JideTabbedPane.tabRunOverlay 0 @@ -510,34 +510,34 @@ JideTabbedPaneUI com.formdev.flatlaf.jideoss.ui.FlatJideTabbedPane #---- Label ---- -Label.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -Label.disabledForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] -Label.disabledShadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +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.disabledShadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] Label.font [active] $defaultFont [UI] -Label.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +Label.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] LabelUI com.formdev.flatlaf.ui.FlatLabelUI #---- List ---- -List.background #ffffff javax.swing.plaf.ColorUIResource [UI] +List.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] List.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] -List.cellFocusColor #000000 javax.swing.plaf.ColorUIResource [UI] +List.cellFocusColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] 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=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +List.cellNoFocusBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Default [UI] lineColor=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 List.cellRenderer [active] javax.swing.DefaultListCellRenderer$UIResource [UI] -List.dropCellBackground [lazy] #3f8fd9 javax.swing.plaf.ColorUIResource [UI] -List.dropCellForeground [lazy] #ffffff javax.swing.plaf.ColorUIResource [UI] -List.dropLineColor [lazy] #6aa7e1 javax.swing.plaf.ColorUIResource [UI] -List.focusCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Focused [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 -List.focusSelectedCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Selected [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +List.dropCellBackground [lazy] #3f8fd9 HSL 209 67 55 javax.swing.plaf.ColorUIResource [UI] +List.dropCellForeground [lazy] #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +List.dropLineColor [lazy] #6aa7e1 HSL 209 66 65 javax.swing.plaf.ColorUIResource [UI] +List.focusCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Focused [UI] lineColor=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +List.focusSelectedCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatListCellBorder$Selected [UI] lineColor=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 List.font [active] $defaultFont [UI] -List.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +List.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] List.noFocusBorder 1,1,1,1 false javax.swing.plaf.BorderUIResource$EmptyBorderUIResource [UI] -List.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -List.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] -List.selectionInactiveBackground #d4d4d4 javax.swing.plaf.ColorUIResource [UI] -List.selectionInactiveForeground #000000 javax.swing.plaf.ColorUIResource [UI] +List.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] +List.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +List.selectionInactiveBackground #d4d4d4 HSL 0 0 83 javax.swing.plaf.ColorUIResource [UI] +List.selectionInactiveForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] List.showCellFocusIndicator false List.timeFactor 1000 ListUI com.formdev.flatlaf.ui.FlatListUI @@ -546,26 +546,26 @@ ListUI com.formdev.flatlaf.ui.FlatListUI #---- Menu ---- Menu.acceleratorFont [active] $defaultFont [UI] -Menu.acceleratorForeground #4d4d4d javax.swing.plaf.ColorUIResource [UI] -Menu.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +Menu.acceleratorForeground #4d4d4d HSL 0 0 30 javax.swing.plaf.ColorUIResource [UI] +Menu.acceleratorSelectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Menu.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuArrowIcon [UI] -Menu.background #ffffff javax.swing.plaf.ColorUIResource [UI] +Menu.background #ffffff HSL 0 0 100 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 javax.swing.plaf.ColorUIResource [UI] +Menu.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] Menu.font [active] $defaultFont [UI] -Menu.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -Menu.icon.arrowColor #666666 javax.swing.plaf.ColorUIResource [UI] -Menu.icon.disabledArrowColor #ababab javax.swing.plaf.ColorUIResource [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] +Menu.icon.disabledArrowColor #ababab HSL 0 0 67 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 #2675bf javax.swing.plaf.ColorUIResource [UI] -Menu.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +Menu.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] +Menu.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Menu.shortcutKeys length=1 [I [0] 8 Menu.submenuPopupOffsetX [active] -4 @@ -574,15 +574,15 @@ Menu.submenuPopupOffsetY [active] -4 #---- MenuBar ---- -MenuBar.background #ffffff javax.swing.plaf.ColorUIResource [UI] +MenuBar.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] MenuBar.border [lazy] 0,0,1,0 false com.formdev.flatlaf.ui.FlatMenuBarBorder [UI] -MenuBar.borderColor #cdcdcd javax.swing.plaf.ColorUIResource [UI] +MenuBar.borderColor #cdcdcd HSL 0 0 80 javax.swing.plaf.ColorUIResource [UI] MenuBar.font [active] $defaultFont [UI] -MenuBar.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -MenuBar.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -MenuBar.hoverBackground #e6e6e6 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +MenuBar.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +MenuBar.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +MenuBar.hoverBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) MenuBar.itemMargins 3,8,3,8 javax.swing.plaf.InsetsUIResource [UI] -MenuBar.shadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +MenuBar.shadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] MenuBar.windowBindings length=2 [Ljava.lang.Object; [0] F10 [1] takeFocus @@ -594,36 +594,36 @@ MenuBarUI com.formdev.flatlaf.ui.FlatMenuBarUI MenuItem.acceleratorArrowGap 2 MenuItem.acceleratorDelimiter - MenuItem.acceleratorFont [active] $defaultFont [UI] -MenuItem.acceleratorForeground #4d4d4d javax.swing.plaf.ColorUIResource [UI] -MenuItem.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +MenuItem.acceleratorForeground #4d4d4d HSL 0 0 30 javax.swing.plaf.ColorUIResource [UI] +MenuItem.acceleratorSelectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] MenuItem.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] -MenuItem.background #ffffff javax.swing.plaf.ColorUIResource [UI] +MenuItem.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] MenuItem.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMenuItemBorder [UI] MenuItem.borderPainted true -MenuItem.checkBackground #bfd9f2 com.formdev.flatlaf.util.DerivedColor [UI] lighten(40%) +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 javax.swing.plaf.ColorUIResource [UI] +MenuItem.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] MenuItem.font [active] $defaultFont [UI] -MenuItem.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +MenuItem.foreground #000000 HSL 0 0 0 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] MenuItem.minimumWidth 72 MenuItem.opaque false -MenuItem.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -MenuItem.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +MenuItem.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] +MenuItem.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] MenuItem.textAcceleratorGap 24 MenuItem.textNoAcceleratorGap 6 -MenuItem.underlineSelectionBackground #e6e6e6 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) -MenuItem.underlineSelectionCheckBackground #bfd9f2 com.formdev.flatlaf.util.DerivedColor [UI] lighten(40%) -MenuItem.underlineSelectionColor #4083c9 javax.swing.plaf.ColorUIResource [UI] +MenuItem.underlineSelectionBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +MenuItem.underlineSelectionCheckBackground #bfd9f2 HSL 209 66 85 com.formdev.flatlaf.util.DerivedColor [UI] lighten(40%) +MenuItem.underlineSelectionColor #4083c9 HSL 211 56 52 javax.swing.plaf.ColorUIResource [UI] MenuItem.underlineSelectionHeight 3 #---- MenuItemCheckBox ---- -MenuItemCheckBox.icon.checkmarkColor #4f9ee3 javax.swing.plaf.ColorUIResource [UI] -MenuItemCheckBox.icon.disabledCheckmarkColor #ababab javax.swing.plaf.ColorUIResource [UI] +MenuItemCheckBox.icon.checkmarkColor #4f9ee3 HSL 208 73 60 javax.swing.plaf.ColorUIResource [UI] +MenuItemCheckBox.icon.disabledCheckmarkColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] #---- MenuItem ---- @@ -643,22 +643,22 @@ MonthViewUI com.formdev.flatlaf.swingx.ui.FlatMonthViewUI #---- Objects ---- -Objects.BlackText #231f20 javax.swing.plaf.ColorUIResource [UI] -Objects.Blue #40b6e0 javax.swing.plaf.ColorUIResource [UI] -Objects.Green #62b543 javax.swing.plaf.ColorUIResource [UI] -Objects.GreenAndroid #a4c639 javax.swing.plaf.ColorUIResource [UI] -Objects.Grey #9aa7b0 javax.swing.plaf.ColorUIResource [UI] -Objects.Pink #f98b9e javax.swing.plaf.ColorUIResource [UI] -Objects.Purple #b99bf8 javax.swing.plaf.ColorUIResource [UI] -Objects.Red #f26522 javax.swing.plaf.ColorUIResource [UI] -Objects.RedStatus #e05555 javax.swing.plaf.ColorUIResource [UI] -Objects.Yellow #f4af3d javax.swing.plaf.ColorUIResource [UI] -Objects.YellowDark #d9a343 javax.swing.plaf.ColorUIResource [UI] +Objects.BlackText #231f20 HSL 345 6 13 javax.swing.plaf.ColorUIResource [UI] +Objects.Blue #40b6e0 HSL 196 72 56 javax.swing.plaf.ColorUIResource [UI] +Objects.Green #62b543 HSL 104 46 49 javax.swing.plaf.ColorUIResource [UI] +Objects.GreenAndroid #a4c639 HSL 74 55 50 javax.swing.plaf.ColorUIResource [UI] +Objects.Grey #9aa7b0 HSL 205 12 65 javax.swing.plaf.ColorUIResource [UI] +Objects.Pink #f98b9e HSL 350 90 76 javax.swing.plaf.ColorUIResource [UI] +Objects.Purple #b99bf8 HSL 259 87 79 javax.swing.plaf.ColorUIResource [UI] +Objects.Red #f26522 HSL 19 89 54 javax.swing.plaf.ColorUIResource [UI] +Objects.RedStatus #e05555 HSL 0 69 61 javax.swing.plaf.ColorUIResource [UI] +Objects.Yellow #f4af3d HSL 37 89 60 javax.swing.plaf.ColorUIResource [UI] +Objects.YellowDark #d9a343 HSL 38 66 56 javax.swing.plaf.ColorUIResource [UI] #---- OptionPane ---- -OptionPane.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +OptionPane.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] OptionPane.border [lazy] 12,12,12,12 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] OptionPane.buttonAreaBorder [lazy] 12,0,0,0 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] OptionPane.buttonClickThreshhold 500 @@ -667,7 +667,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 #000000 javax.swing.plaf.ColorUIResource [UI] +OptionPane.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] OptionPane.iconMessageGap 16 OptionPane.informationIcon [lazy] 32,32 com.formdev.flatlaf.icons.FlatOptionPaneInformationIcon [UI] OptionPane.maxCharactersPerLine 80 @@ -686,37 +686,37 @@ OptionPaneUI com.formdev.flatlaf.ui.FlatOptionPaneUI #---- Panel ---- -Panel.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +Panel.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] Panel.font [active] $defaultFont [UI] -Panel.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +Panel.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] PanelUI com.formdev.flatlaf.ui.FlatPanelUI #---- PasswordField ---- -PasswordField.background #ffffff javax.swing.plaf.ColorUIResource [UI] +PasswordField.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] PasswordField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI] PasswordField.capsLockIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatCapsLockIcon [UI] -PasswordField.capsLockIconColor #00000064 39% javax.swing.plaf.ColorUIResource [UI] +PasswordField.capsLockIconColor #00000064 39% HSLA 0 0 0 39 javax.swing.plaf.ColorUIResource [UI] PasswordField.caretBlinkRate 500 -PasswordField.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] -PasswordField.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +PasswordField.caretForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +PasswordField.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] PasswordField.echoChar '\u2022' PasswordField.font [active] $defaultFont [UI] -PasswordField.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -PasswordField.inactiveBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -PasswordField.inactiveForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] +PasswordField.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +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.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -PasswordField.placeholderForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] -PasswordField.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -PasswordField.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +PasswordField.placeholderForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] +PasswordField.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] +PasswordField.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] PasswordField.showCapsLock true PasswordFieldUI com.formdev.flatlaf.ui.FlatPasswordFieldUI #---- Popup ---- -Popup.dropShadowColor #000000 javax.swing.plaf.ColorUIResource [UI] +Popup.dropShadowColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] Popup.dropShadowInsets -4,-4,4,4 javax.swing.plaf.InsetsUIResource [UI] Popup.dropShadowOpacity 0.15 Popup.dropShadowPainted true @@ -724,13 +724,13 @@ Popup.dropShadowPainted true #---- PopupMenu ---- -PopupMenu.background #ffffff javax.swing.plaf.ColorUIResource [UI] -PopupMenu.border [lazy] 4,1,4,1 false com.formdev.flatlaf.ui.FlatPopupMenuBorder [UI] lineColor=#adadad javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 -PopupMenu.borderColor #adadad javax.swing.plaf.ColorUIResource [UI] +PopupMenu.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +PopupMenu.border [lazy] 4,1,4,1 false com.formdev.flatlaf.ui.FlatPopupMenuBorder [UI] lineColor=#adadad HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +PopupMenu.borderColor #adadad HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] PopupMenu.borderInsets 4,1,4,1 javax.swing.plaf.InsetsUIResource [UI] PopupMenu.consumeEventOnClose false PopupMenu.font [active] $defaultFont [UI] -PopupMenu.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +PopupMenu.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] #---- PopupMenuSeparator ---- @@ -749,38 +749,38 @@ PopupMenuUI com.formdev.flatlaf.ui.FlatPopupMenuUI #---- ProgressBar ---- ProgressBar.arc 4 -ProgressBar.background #d1d1d1 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.background #d1d1d1 HSL 0 0 82 javax.swing.plaf.ColorUIResource [UI] ProgressBar.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] ProgressBar.cellLength 1 ProgressBar.cellSpacing 0 ProgressBar.cycleTime 4000 ProgressBar.font [active] Segoe UI plain 10 javax.swing.plaf.FontUIResource [UI] -ProgressBar.foreground #1e82e6 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.foreground #1e82e6 HSL 210 80 51 javax.swing.plaf.ColorUIResource [UI] ProgressBar.horizontalSize 146,4 javax.swing.plaf.DimensionUIResource [UI] ProgressBar.repaintInterval 15 -ProgressBar.selectionBackground #000000 javax.swing.plaf.ColorUIResource [UI] -ProgressBar.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +ProgressBar.selectionBackground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ProgressBar.verticalSize 4,146 javax.swing.plaf.DimensionUIResource [UI] ProgressBarUI com.formdev.flatlaf.ui.FlatProgressBarUI #---- RadioButton ---- -RadioButton.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +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 #9e9e9e javax.swing.plaf.ColorUIResource [UI] -RadioButton.disabledText #8c8c8c javax.swing.plaf.ColorUIResource [UI] +RadioButton.darkShadow #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] +RadioButton.disabledText #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] RadioButton.font [active] $defaultFont [UI] -RadioButton.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -RadioButton.highlight #ffffff javax.swing.plaf.ColorUIResource [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.iconTextGap 4 RadioButton.icon[filled].centerDiameter 5 -RadioButton.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +RadioButton.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] RadioButton.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] RadioButton.rollover true -RadioButton.shadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +RadioButton.shadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] RadioButton.textIconGap 4 RadioButton.textShiftOffset 0 @@ -788,20 +788,20 @@ RadioButton.textShiftOffset 0 #---- RadioButtonMenuItem ---- RadioButtonMenuItem.acceleratorFont [active] $defaultFont [UI] -RadioButtonMenuItem.acceleratorForeground #4d4d4d javax.swing.plaf.ColorUIResource [UI] -RadioButtonMenuItem.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.acceleratorForeground #4d4d4d HSL 0 0 30 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.acceleratorSelectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] -RadioButtonMenuItem.background #ffffff javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.background #ffffff HSL 0 0 100 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 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.disabledForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.font [active] $defaultFont [UI] -RadioButtonMenuItem.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.margin 3,6,3,6 javax.swing.plaf.InsetsUIResource [UI] RadioButtonMenuItem.opaque false -RadioButtonMenuItem.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -RadioButtonMenuItem.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItemUI com.formdev.flatlaf.ui.FlatRadioButtonMenuItemUI @@ -817,12 +817,12 @@ RangeSliderUI com.formdev.flatlaf.jideoss.ui.FlatRangeSliderUI #---- Resizable ---- -Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#adadad javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#adadad HSL 0 0 68 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 #---- RootPane ---- -RootPane.activeBorderColor #737373 com.formdev.flatlaf.util.DerivedColor [UI] darken(50% autoInverse) +RootPane.activeBorderColor #737373 HSL 0 0 45 com.formdev.flatlaf.util.DerivedColor [UI] darken(50% autoInverse) RootPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRootPaneUI$FlatWindowBorder [UI] RootPane.borderDragThickness 5 RootPane.cornerDragWidth 16 @@ -837,37 +837,37 @@ RootPane.defaultButtonWindowKeyBindings length=8 [Ljava.lang.Object; [7] release RootPane.honorDialogMinimumSizeOnResize true RootPane.honorFrameMinimumSizeOnResize false -RootPane.inactiveBorderColor #a6a6a6 com.formdev.flatlaf.util.DerivedColor [UI] darken(30% autoInverse) +RootPane.inactiveBorderColor #a6a6a6 HSL 0 0 65 com.formdev.flatlaf.util.DerivedColor [UI] darken(30% autoInverse) RootPaneUI com.formdev.flatlaf.ui.FlatRootPaneUI #---- ScrollBar ---- ScrollBar.allowsAbsolutePositioning true -ScrollBar.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.buttonDisabledArrowColor #a6a6a6 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.hoverButtonBackground #e5e5e5 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%) -ScrollBar.hoverThumbColor #c3c3c3 com.formdev.flatlaf.util.DerivedColor [UI] darken(10%) +ScrollBar.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.buttonArrowColor #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.buttonDisabledArrowColor #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.hoverButtonBackground #e5e5e5 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%) +ScrollBar.hoverThumbColor #c3c3c3 HSL 0 0 76 com.formdev.flatlaf.util.DerivedColor [UI] darken(10%) ScrollBar.hoverThumbWithTrack false -ScrollBar.hoverTrackColor #ededed com.formdev.flatlaf.util.DerivedColor [UI] darken(3%) +ScrollBar.hoverTrackColor #ededed HSL 0 0 93 com.formdev.flatlaf.util.DerivedColor [UI] darken(3%) ScrollBar.maximumThumbSize 100000,100000 javax.swing.plaf.DimensionUIResource [UI] ScrollBar.minimumThumbSize 10,10 javax.swing.plaf.DimensionUIResource [UI] -ScrollBar.pressedButtonBackground #d9d9d9 com.formdev.flatlaf.util.DerivedColor [UI] darken(10%) -ScrollBar.pressedThumbColor #a9a9a9 com.formdev.flatlaf.util.DerivedColor [UI] darken(20%) +ScrollBar.pressedButtonBackground #d9d9d9 HSL 0 0 85 com.formdev.flatlaf.util.DerivedColor [UI] darken(10%) +ScrollBar.pressedThumbColor #a9a9a9 HSL 0 0 66 com.formdev.flatlaf.util.DerivedColor [UI] darken(20%) ScrollBar.pressedThumbWithTrack false ScrollBar.showButtons false ScrollBar.squareButtons false -ScrollBar.thumb #dcdcdc com.formdev.flatlaf.util.DerivedColor [UI] darken(10%) +ScrollBar.thumb #dcdcdc HSL 0 0 86 com.formdev.flatlaf.util.DerivedColor [UI] darken(10%) ScrollBar.thumbArc 0 -ScrollBar.thumbDarkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI] -ScrollBar.thumbHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] +ScrollBar.thumbDarkShadow #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.thumbHighlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ScrollBar.thumbInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -ScrollBar.thumbShadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.track #f5f5f5 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) +ScrollBar.thumbShadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.track #f5f5f5 HSL 0 0 96 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) ScrollBar.trackArc 0 -ScrollBar.trackHighlight #9e9e9e javax.swing.plaf.ColorUIResource [UI] +ScrollBar.trackHighlight #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] ScrollBar.trackInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ScrollBar.width 10 ScrollBarUI com.formdev.flatlaf.ui.FlatScrollBarUI @@ -875,22 +875,41 @@ ScrollBarUI com.formdev.flatlaf.ui.FlatScrollBarUI #---- ScrollPane ---- -ScrollPane.background #f5f5f5 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) +ScrollPane.background #f5f5f5 HSL 0 0 96 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) ScrollPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI] ScrollPane.fillUpperCorner true ScrollPane.font [active] $defaultFont [UI] -ScrollPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +ScrollPane.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] ScrollPane.smoothScrolling true ScrollPaneUI com.formdev.flatlaf.ui.FlatScrollPaneUI +#---- SearchField ---- + +SearchField.clearIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatClearIcon [UI] +SearchField.clearIconColor [lazy] #7f8b9180 50% HSLA 200 8 53 50 javax.swing.plaf.ColorUIResource [UI] +SearchField.clearIconHoverColor [lazy] #7f8b9180 50% HSLA 200 8 53 50 javax.swing.plaf.ColorUIResource [UI] +SearchField.clearIconPressedColor [lazy] #7f8b91cc 80% HSLA 200 8 53 80 javax.swing.plaf.ColorUIResource [UI] +SearchField.clearPressedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatClearIcon [UI] +SearchField.clearRolloverIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatClearIcon [UI] +SearchField.icon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchIcon [UI] +SearchField.popupIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon [UI] +SearchField.popupPressedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon [UI] +SearchField.popupRolloverIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon [UI] +SearchField.pressedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchIcon [UI] +SearchField.rolloverIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchIcon [UI] +SearchField.searchIconColor [lazy] #7f8b91e6 90% HSLA 200 8 53 90 javax.swing.plaf.ColorUIResource [UI] +SearchField.searchIconHoverColor [lazy] #7f8b91b3 70% HSLA 200 8 53 70 javax.swing.plaf.ColorUIResource [UI] +SearchField.searchIconPressedColor [lazy] #7f8b9180 50% HSLA 200 8 53 50 javax.swing.plaf.ColorUIResource [UI] + + #---- Separator ---- -Separator.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -Separator.foreground #d1d1d1 javax.swing.plaf.ColorUIResource [UI] +Separator.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +Separator.foreground #d1d1d1 HSL 0 0 82 javax.swing.plaf.ColorUIResource [UI] Separator.height 3 -Separator.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -Separator.shadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +Separator.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Separator.shadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] Separator.stripeIndent 1 Separator.stripeWidth 1 SeparatorUI com.formdev.flatlaf.ui.FlatSeparatorUI @@ -898,28 +917,28 @@ SeparatorUI com.formdev.flatlaf.ui.FlatSeparatorUI #---- Slider ---- -Slider.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -Slider.disabledThumbColor #c0c0c0 javax.swing.plaf.ColorUIResource [UI] -Slider.disabledTrackColor #c0c0c0 javax.swing.plaf.ColorUIResource [UI] -Slider.focus #9e9e9e javax.swing.plaf.ColorUIResource [UI] +Slider.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +Slider.disabledThumbColor #c0c0c0 HSL 0 0 75 javax.swing.plaf.ColorUIResource [UI] +Slider.disabledTrackColor #c0c0c0 HSL 0 0 75 javax.swing.plaf.ColorUIResource [UI] +Slider.focus #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] Slider.focusInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Slider.focusWidth 4 -Slider.focusedColor #97c3f380 50% com.formdev.flatlaf.util.DerivedColor [UI] fade(50%) +Slider.focusedColor #97c3f380 50% HSLA 211 79 77 50 com.formdev.flatlaf.util.DerivedColor [UI] fade(50%) Slider.font [active] $defaultFont [UI] -Slider.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -Slider.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] +Slider.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +Slider.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Slider.horizontalSize 200,21 java.awt.Dimension -Slider.hoverThumbColor #1775d3 com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse) +Slider.hoverThumbColor #1775d3 HSL 210 80 46 com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse) Slider.minimumHorizontalSize 36,21 java.awt.Dimension Slider.minimumVerticalSize 21,36 java.awt.Dimension Slider.onlyLeftMouseButtonDrag true -Slider.pressedThumbColor #166ec5 com.formdev.flatlaf.util.DerivedColor [UI] darken(8% autoInverse) -Slider.shadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] -Slider.thumbColor #1e82e6 javax.swing.plaf.ColorUIResource [UI] +Slider.pressedThumbColor #166ec5 HSL 210 80 43 com.formdev.flatlaf.util.DerivedColor [UI] darken(8% autoInverse) +Slider.shadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] +Slider.thumbColor #1e82e6 HSL 210 80 51 javax.swing.plaf.ColorUIResource [UI] Slider.thumbSize 12,12 javax.swing.plaf.DimensionUIResource [UI] -Slider.tickColor #888888 javax.swing.plaf.ColorUIResource [UI] -Slider.trackColor #c4c4c4 javax.swing.plaf.ColorUIResource [UI] -Slider.trackValueColor #1e82e6 javax.swing.plaf.ColorUIResource [UI] +Slider.tickColor #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +Slider.trackColor #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] +Slider.trackValueColor #1e82e6 HSL 210 80 51 javax.swing.plaf.ColorUIResource [UI] Slider.trackWidth 2 Slider.verticalSize 21,200 java.awt.Dimension SliderUI com.formdev.flatlaf.ui.FlatSliderUI @@ -928,47 +947,47 @@ SliderUI com.formdev.flatlaf.ui.FlatSliderUI #---- Spinner ---- Spinner.arrowButtonSize 16,5 java.awt.Dimension -Spinner.background #ffffff javax.swing.plaf.ColorUIResource [UI] +Spinner.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Spinner.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI] -Spinner.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonBackground #fafafa javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonDisabledArrowColor #a6a6a6 javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonHoverArrowColor #999999 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) -Spinner.buttonPressedArrowColor #b3b3b3 com.formdev.flatlaf.util.DerivedColor [UI] lighten(30%) +Spinner.buttonArrowColor #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonBackground #fafafa HSL 0 0 98 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonDisabledArrowColor #a6a6a6 HSL 0 0 65 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonHoverArrowColor #999999 HSL 0 0 60 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) +Spinner.buttonPressedArrowColor #b3b3b3 HSL 0 0 70 com.formdev.flatlaf.util.DerivedColor [UI] lighten(30%) Spinner.buttonStyle button -Spinner.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -Spinner.disabledForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] +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.editorAlignment 11 Spinner.editorBorderPainted false Spinner.font [active] $defaultFont [UI] -Spinner.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +Spinner.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] Spinner.padding 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] SpinnerUI com.formdev.flatlaf.ui.FlatSpinnerUI #---- SplitPane ---- -SplitPane.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +SplitPane.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] SplitPane.centerOneTouchButtons true SplitPane.continuousLayout true -SplitPane.darkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI] +SplitPane.darkShadow #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] SplitPane.dividerSize 5 -SplitPane.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] +SplitPane.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] SplitPane.oneTouchButtonOffset [active] 2 SplitPane.oneTouchButtonSize [active] 6 -SplitPane.shadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +SplitPane.shadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] #---- SplitPaneDivider ---- -SplitPaneDivider.draggingColor #c4c4c4 javax.swing.plaf.ColorUIResource [UI] -SplitPaneDivider.gripColor #afafaf javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.draggingColor #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.gripColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] SplitPaneDivider.gripDotCount 3 SplitPaneDivider.gripDotSize 3 SplitPaneDivider.gripGap 2 -SplitPaneDivider.oneTouchArrowColor #666666 javax.swing.plaf.ColorUIResource [UI] -SplitPaneDivider.oneTouchHoverArrowColor #999999 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) -SplitPaneDivider.oneTouchPressedArrowColor #b3b3b3 com.formdev.flatlaf.util.DerivedColor [UI] lighten(30%) +SplitPaneDivider.oneTouchArrowColor #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.oneTouchHoverArrowColor #999999 HSL 0 0 60 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20%) +SplitPaneDivider.oneTouchPressedArrowColor #b3b3b3 HSL 0 0 70 com.formdev.flatlaf.util.DerivedColor [UI] lighten(30%) SplitPaneDivider.style grip @@ -980,44 +999,44 @@ SplitPaneUI com.formdev.flatlaf.ui.FlatSplitPaneUI #---- TabbedPane ---- TabbedPane.arrowType chevron -TabbedPane.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] TabbedPane.buttonArc 6 -TabbedPane.buttonHoverBackground #e0e0e0 com.formdev.flatlaf.util.DerivedColor [UI] darken(7% autoInverse) +TabbedPane.buttonHoverBackground #e0e0e0 HSL 0 0 88 com.formdev.flatlaf.util.DerivedColor [UI] darken(7% autoInverse) TabbedPane.buttonInsets 2,1,2,1 javax.swing.plaf.InsetsUIResource [UI] -TabbedPane.buttonPressedBackground #d9d9d9 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +TabbedPane.buttonPressedBackground #d9d9d9 HSL 0 0 85 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) TabbedPane.closeArc 4 TabbedPane.closeCrossFilledSize 7.5 TabbedPane.closeCrossLineWidth 1.0 TabbedPane.closeCrossPlainSize 7.5 -TabbedPane.closeForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] -TabbedPane.closeHoverBackground #bfbfbf com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) -TabbedPane.closeHoverForeground #000000 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closeForeground #8c8c8c HSL 0 0 55 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] -TabbedPane.closePressedBackground #b2b2b2 com.formdev.flatlaf.util.DerivedColor [UI] darken(25% autoInverse) -TabbedPane.closePressedForeground #000000 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closePressedBackground #b2b2b2 HSL 0 0 70 com.formdev.flatlaf.util.DerivedColor [UI] darken(25% autoInverse) +TabbedPane.closePressedForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] TabbedPane.closeSize 16,16 javax.swing.plaf.DimensionUIResource [UI] -TabbedPane.contentAreaColor #bfbfbf javax.swing.plaf.ColorUIResource [UI] +TabbedPane.contentAreaColor #bfbfbf HSL 0 0 75 javax.swing.plaf.ColorUIResource [UI] TabbedPane.contentOpaque true TabbedPane.contentSeparatorHeight 1 -TabbedPane.darkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI] -TabbedPane.disabledForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] -TabbedPane.disabledUnderlineColor #ababab javax.swing.plaf.ColorUIResource [UI] -TabbedPane.focus #000000 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.focusColor #dae4ed javax.swing.plaf.ColorUIResource [UI] +TabbedPane.darkShadow #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.disabledForeground #8c8c8c HSL 0 0 55 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 #dae4ed HSL 208 35 89 javax.swing.plaf.ColorUIResource [UI] TabbedPane.font [active] $defaultFont [UI] -TabbedPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] TabbedPane.hasFullBorder false TabbedPane.hiddenTabsNavigation moreTabsButton -TabbedPane.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -TabbedPane.hoverColor #e0e0e0 com.formdev.flatlaf.util.DerivedColor [UI] darken(7% autoInverse) +TabbedPane.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.hoverColor #e0e0e0 HSL 0 0 88 com.formdev.flatlaf.util.DerivedColor [UI] darken(7% autoInverse) TabbedPane.labelShift 1 -TabbedPane.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] TabbedPane.scrollButtonsPlacement both TabbedPane.scrollButtonsPolicy asNeededSingle TabbedPane.selectedLabelShift -1 TabbedPane.selectedTabPadInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TabbedPane.selectionFollowsFocus true -TabbedPane.shadow #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.shadow #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] TabbedPane.showTabSeparators false TabbedPane.tabAlignment center TabbedPane.tabAreaAlignment leading @@ -1032,53 +1051,53 @@ TabbedPane.tabsOpaque true TabbedPane.tabsOverlapBorder false TabbedPane.tabsPopupPolicy asNeeded TabbedPane.textIconGap 4 -TabbedPane.underlineColor #4083c9 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.underlineColor #4083c9 HSL 211 56 52 javax.swing.plaf.ColorUIResource [UI] TabbedPaneUI com.formdev.flatlaf.ui.FlatTabbedPaneUI #---- Table ---- Table.ascendingSortIcon [lazy] 10,5 com.formdev.flatlaf.icons.FlatAscendingSortIcon [UI] -Table.background #ffffff javax.swing.plaf.ColorUIResource [UI] -Table.cellFocusColor #000000 javax.swing.plaf.ColorUIResource [UI] +Table.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Table.cellFocusColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] Table.cellMargins 2,3,2,3 javax.swing.plaf.InsetsUIResource [UI] -Table.cellNoFocusBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Default [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Table.cellNoFocusBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Default [UI] lineColor=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 Table.consistentHomeEndKeyBehavior true Table.descendingSortIcon [lazy] 10,5 com.formdev.flatlaf.icons.FlatDescendingSortIcon [UI] -Table.dropCellBackground [lazy] #3f8fd9 javax.swing.plaf.ColorUIResource [UI] -Table.dropCellForeground [lazy] #ffffff javax.swing.plaf.ColorUIResource [UI] -Table.dropLineColor [lazy] #6aa7e1 javax.swing.plaf.ColorUIResource [UI] -Table.dropLineShortColor [lazy] #15416a javax.swing.plaf.ColorUIResource [UI] -Table.focusCellBackground #ffffff javax.swing.plaf.ColorUIResource [UI] -Table.focusCellForeground #000000 javax.swing.plaf.ColorUIResource [UI] -Table.focusCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Focused [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 -Table.focusSelectedCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Selected [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Table.dropCellBackground [lazy] #3f8fd9 HSL 209 67 55 javax.swing.plaf.ColorUIResource [UI] +Table.dropCellForeground [lazy] #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Table.dropLineColor [lazy] #6aa7e1 HSL 209 66 65 javax.swing.plaf.ColorUIResource [UI] +Table.dropLineShortColor [lazy] #15416a HSL 209 67 25 javax.swing.plaf.ColorUIResource [UI] +Table.focusCellBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Table.focusCellForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +Table.focusCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Focused [UI] lineColor=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Table.focusSelectedCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Selected [UI] lineColor=#000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 Table.font [active] $defaultFont [UI] -Table.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -Table.gridColor #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +Table.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +Table.gridColor #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] Table.intercellSpacing 0,0 javax.swing.plaf.DimensionUIResource [UI] Table.rowHeight 20 Table.scrollPaneBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI] -Table.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -Table.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] -Table.selectionInactiveBackground #d4d4d4 javax.swing.plaf.ColorUIResource [UI] -Table.selectionInactiveForeground #000000 javax.swing.plaf.ColorUIResource [UI] +Table.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] +Table.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Table.selectionInactiveBackground #d4d4d4 HSL 0 0 83 javax.swing.plaf.ColorUIResource [UI] +Table.selectionInactiveForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] Table.showHorizontalLines false Table.showVerticalLines false -Table.sortIconColor #afafaf javax.swing.plaf.ColorUIResource [UI] +Table.sortIconColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] #---- TableHeader ---- -TableHeader.background #ffffff javax.swing.plaf.ColorUIResource [UI] -TableHeader.bottomSeparatorColor #e6e6e6 javax.swing.plaf.ColorUIResource [UI] +TableHeader.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +TableHeader.bottomSeparatorColor #e6e6e6 HSL 0 0 90 javax.swing.plaf.ColorUIResource [UI] TableHeader.cellBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableHeaderBorder [UI] TableHeader.cellMargins 2,3,2,3 javax.swing.plaf.InsetsUIResource [UI] -TableHeader.focusCellBackground #ffffff javax.swing.plaf.ColorUIResource [UI] +TableHeader.focusCellBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TableHeader.font [active] $defaultFont [UI] -TableHeader.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +TableHeader.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] TableHeader.height 25 -TableHeader.separatorColor #e6e6e6 javax.swing.plaf.ColorUIResource [UI] +TableHeader.separatorColor #e6e6e6 HSL 0 0 90 javax.swing.plaf.ColorUIResource [UI] TableHeaderUI com.formdev.flatlaf.ui.FlatTableHeaderUI @@ -1089,37 +1108,37 @@ TableUI com.formdev.flatlaf.ui.FlatTableUI #---- TaskPane ---- -TaskPane.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -TaskPane.borderColor #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +TaskPane.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +TaskPane.borderColor #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] TaskPane.contentInsets 10,10,10,10 javax.swing.plaf.InsetsUIResource [UI] -TaskPane.specialTitleBackground #afafaf javax.swing.plaf.ColorUIResource [UI] -TaskPane.specialTitleForeground #222222 javax.swing.plaf.ColorUIResource [UI] -TaskPane.specialTitleOver #666666 javax.swing.plaf.ColorUIResource [UI] -TaskPane.titleBackgroundGradientStart #dfdfdf javax.swing.plaf.ColorUIResource [UI] -TaskPane.titleForeground #222222 javax.swing.plaf.ColorUIResource [UI] -TaskPane.titleOver #666666 javax.swing.plaf.ColorUIResource [UI] +TaskPane.specialTitleBackground #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +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 #dfdfdf HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +TaskPane.titleForeground #222222 HSL 0 0 13 javax.swing.plaf.ColorUIResource [UI] +TaskPane.titleOver #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] #---- TaskPaneContainer ---- -TaskPaneContainer.background #e6ebf0 javax.swing.plaf.ColorUIResource [UI] +TaskPaneContainer.background #e6ebf0 HSL 210 25 92 javax.swing.plaf.ColorUIResource [UI] TaskPaneContainer.border [lazy] 10,10,10,10 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] #---- TextArea ---- -TextArea.background #ffffff javax.swing.plaf.ColorUIResource [UI] +TextArea.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TextArea.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] TextArea.caretBlinkRate 500 -TextArea.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] -TextArea.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +TextArea.caretForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +TextArea.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] TextArea.font [active] $defaultFont [UI] -TextArea.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -TextArea.inactiveBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -TextArea.inactiveForeground #8c8c8c javax.swing.plaf.ColorUIResource [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.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextArea.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -TextArea.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [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] TextAreaUI com.formdev.flatlaf.ui.FlatTextAreaUI @@ -1132,65 +1151,65 @@ TextComponent.selectAllOnMouseClick false #---- TextField ---- -TextField.background #ffffff javax.swing.plaf.ColorUIResource [UI] +TextField.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TextField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI] TextField.caretBlinkRate 500 -TextField.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] -TextField.darkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI] -TextField.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +TextField.caretForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +TextField.darkShadow #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] +TextField.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] TextField.font [active] $defaultFont [UI] -TextField.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -TextField.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -TextField.inactiveBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -TextField.inactiveForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] -TextField.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +TextField.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +TextField.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +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.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] TextField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextField.placeholderForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] -TextField.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -TextField.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] -TextField.shadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +TextField.placeholderForeground #8c8c8c HSL 0 0 55 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 #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] TextFieldUI com.formdev.flatlaf.ui.FlatTextFieldUI #---- TextPane ---- -TextPane.background #ffffff javax.swing.plaf.ColorUIResource [UI] +TextPane.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TextPane.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] TextPane.caretBlinkRate 500 -TextPane.caretForeground #000000 javax.swing.plaf.ColorUIResource [UI] -TextPane.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +TextPane.caretForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +TextPane.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] TextPane.font [active] $defaultFont [UI] -TextPane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -TextPane.inactiveBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -TextPane.inactiveForeground #8c8c8c javax.swing.plaf.ColorUIResource [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.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextPane.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -TextPane.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [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] TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI #---- TitlePane ---- -TitlePane.background #ffffff javax.swing.plaf.ColorUIResource [UI] -TitlePane.buttonHoverBackground #e6e6e6 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +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.buttonMaximizedHeight 22 -TitlePane.buttonPressedBackground #cccccc com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) +TitlePane.buttonPressedBackground #cccccc HSL 0 0 80 com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) TitlePane.buttonSize 44,30 javax.swing.plaf.DimensionUIResource [UI] TitlePane.centerTitle false TitlePane.centerTitleIfMenuBarEmbedded true -TitlePane.closeHoverBackground #e81123 javax.swing.plaf.ColorUIResource [UI] -TitlePane.closeHoverForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeHoverBackground #e81123 HSL 355 86 49 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeHoverForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TitlePane.closeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] -TitlePane.closePressedBackground #e8112399 60% javax.swing.plaf.ColorUIResource [UI] -TitlePane.closePressedForeground #ffffff javax.swing.plaf.ColorUIResource [UI] -TitlePane.embeddedForeground #595959 javax.swing.plaf.ColorUIResource [UI] -TitlePane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closePressedBackground #e8112399 60% HSLA 355 86 49 60 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closePressedForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +TitlePane.embeddedForeground #595959 HSL 0 0 35 javax.swing.plaf.ColorUIResource [UI] +TitlePane.foreground #000000 HSL 0 0 0 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 #ffffff javax.swing.plaf.ColorUIResource [UI] -TitlePane.inactiveForeground #8c8c8c javax.swing.plaf.ColorUIResource [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.maximizeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] TitlePane.menuBarEmbedded true TitlePane.menuBarTitleGap 20 @@ -1202,9 +1221,9 @@ TitlePane.useWindowDecorations true #---- TitledBorder ---- -TitledBorder.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#d1d1d1 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +TitledBorder.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#d1d1d1 HSL 0 0 82 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 TitledBorder.font [active] $defaultFont [UI] -TitledBorder.titleColor #000000 javax.swing.plaf.ColorUIResource [UI] +TitledBorder.titleColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] #---- TitledPanel ---- @@ -1214,56 +1233,56 @@ TitledPanelUI com.formdev.flatlaf.swingx.ui.FlatTitledPanelUI #---- ToggleButton ---- -ToggleButton.background #ffffff javax.swing.plaf.ColorUIResource [UI] +ToggleButton.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ToggleButton.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] -ToggleButton.darkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI] -ToggleButton.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.disabledSelectedBackground #dedede com.formdev.flatlaf.util.DerivedColor [UI] darken(13% autoInverse) -ToggleButton.disabledText #8c8c8c javax.swing.plaf.ColorUIResource [UI] +ToggleButton.darkShadow #9e9e9e HSL 0 0 62 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.font [active] $defaultFont [UI] -ToggleButton.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.highlight #ffffff javax.swing.plaf.ColorUIResource [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] ToggleButton.iconTextGap 4 -ToggleButton.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] ToggleButton.margin 2,14,2,14 javax.swing.plaf.InsetsUIResource [UI] -ToggleButton.pressedBackground #e6e6e6 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) +ToggleButton.pressedBackground #e6e6e6 HSL 0 0 90 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse) ToggleButton.rollover true -ToggleButton.selectedBackground #cccccc com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) -ToggleButton.selectedForeground #000000 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.shadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.tab.disabledUnderlineColor #ababab javax.swing.plaf.ColorUIResource [UI] -ToggleButton.tab.focusBackground #dae4ed javax.swing.plaf.ColorUIResource [UI] -ToggleButton.tab.hoverBackground #e0e0e0 com.formdev.flatlaf.util.DerivedColor [UI] darken(7% autoInverse) -ToggleButton.tab.underlineColor #4083c9 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.selectedBackground #cccccc HSL 0 0 80 com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) +ToggleButton.selectedForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.shadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.tab.disabledUnderlineColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.tab.focusBackground #dae4ed HSL 208 35 89 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.tab.hoverBackground #e0e0e0 HSL 0 0 88 com.formdev.flatlaf.util.DerivedColor [UI] darken(7% autoInverse) +ToggleButton.tab.underlineColor #4083c9 HSL 211 56 52 javax.swing.plaf.ColorUIResource [UI] ToggleButton.tab.underlineHeight 2 ToggleButton.textIconGap 4 ToggleButton.textShiftOffset 0 -ToggleButton.toolbar.hoverBackground #e0e0e0 com.formdev.flatlaf.util.DerivedColor [UI] darken(12% autoInverse) -ToggleButton.toolbar.pressedBackground #d9d9d9 com.formdev.flatlaf.util.DerivedColor [UI] darken(15% autoInverse) -ToggleButton.toolbar.selectedBackground #cccccc com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) +ToggleButton.toolbar.hoverBackground #e0e0e0 HSL 0 0 88 com.formdev.flatlaf.util.DerivedColor [UI] darken(12% autoInverse) +ToggleButton.toolbar.pressedBackground #d9d9d9 HSL 0 0 85 com.formdev.flatlaf.util.DerivedColor [UI] darken(15% autoInverse) +ToggleButton.toolbar.selectedBackground #cccccc HSL 0 0 80 com.formdev.flatlaf.util.DerivedColor [UI] darken(20% autoInverse) ToggleButtonUI com.formdev.flatlaf.ui.FlatToggleButtonUI #---- ToolBar ---- -ToolBar.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +ToolBar.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] ToolBar.border [lazy] 2,2,2,2 false com.formdev.flatlaf.ui.FlatToolBarBorder [UI] ToolBar.borderMargins 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] -ToolBar.darkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI] -ToolBar.dockingBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -ToolBar.dockingForeground #000000 javax.swing.plaf.ColorUIResource [UI] -ToolBar.floatingBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -ToolBar.floatingForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI] +ToolBar.darkShadow #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] +ToolBar.dockingBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +ToolBar.dockingForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +ToolBar.floatingBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +ToolBar.floatingForeground #8c8c8c HSL 0 0 55 javax.swing.plaf.ColorUIResource [UI] ToolBar.focusableButtons false ToolBar.font [active] $defaultFont [UI] -ToolBar.foreground #000000 javax.swing.plaf.ColorUIResource [UI] -ToolBar.gripColor #afafaf javax.swing.plaf.ColorUIResource [UI] -ToolBar.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] +ToolBar.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +ToolBar.gripColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +ToolBar.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ToolBar.isRollover true -ToolBar.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] -ToolBar.separatorColor #d1d1d1 javax.swing.plaf.ColorUIResource [UI] +ToolBar.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] +ToolBar.separatorColor #d1d1d1 HSL 0 0 82 javax.swing.plaf.ColorUIResource [UI] ToolBar.separatorWidth 7 -ToolBar.shadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] +ToolBar.shadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] ToolBar.spacingBorder [lazy] 1,2,1,2 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] @@ -1279,10 +1298,10 @@ ToolBarUI com.formdev.flatlaf.ui.FlatToolBarUI #---- ToolTip ---- -ToolTip.background #fafafa javax.swing.plaf.ColorUIResource [UI] -ToolTip.border [lazy] 4,6,4,6 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#919191 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +ToolTip.background #fafafa HSL 0 0 98 javax.swing.plaf.ColorUIResource [UI] +ToolTip.border [lazy] 4,6,4,6 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#919191 HSL 0 0 57 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 ToolTip.font [active] $defaultFont [UI] -ToolTip.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +ToolTip.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] #---- ToolTipManager ---- @@ -1297,25 +1316,25 @@ ToolTipUI com.formdev.flatlaf.ui.FlatToolTipUI #---- Tree ---- -Tree.background #ffffff javax.swing.plaf.ColorUIResource [UI] +Tree.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Tree.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] Tree.changeSelectionWithFocus true Tree.closedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTreeClosedIcon [UI] Tree.collapsedIcon [lazy] 11,11 com.formdev.flatlaf.icons.FlatTreeCollapsedIcon [UI] Tree.drawsFocusBorderAroundIcon false -Tree.dropCellBackground [lazy] #3f8fd9 javax.swing.plaf.ColorUIResource [UI] -Tree.dropCellForeground [lazy] #ffffff javax.swing.plaf.ColorUIResource [UI] -Tree.dropLineColor [lazy] #6aa7e1 javax.swing.plaf.ColorUIResource [UI] -Tree.editorBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#000000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Tree.dropCellBackground [lazy] #3f8fd9 HSL 209 67 55 javax.swing.plaf.ColorUIResource [UI] +Tree.dropCellForeground [lazy] #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Tree.dropLineColor [lazy] #6aa7e1 HSL 209 66 65 javax.swing.plaf.ColorUIResource [UI] +Tree.editorBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#000000 HSL 0 0 0 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 #000000 javax.swing.plaf.ColorUIResource [UI] -Tree.hash #e6e6e6 javax.swing.plaf.ColorUIResource [UI] -Tree.icon.closedColor #afafaf javax.swing.plaf.ColorUIResource [UI] -Tree.icon.collapsedColor #afafaf javax.swing.plaf.ColorUIResource [UI] -Tree.icon.expandedColor #afafaf javax.swing.plaf.ColorUIResource [UI] -Tree.icon.leafColor #afafaf javax.swing.plaf.ColorUIResource [UI] -Tree.icon.openColor #afafaf javax.swing.plaf.ColorUIResource [UI] +Tree.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +Tree.hash #e6e6e6 HSL 0 0 90 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.closedColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.collapsedColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.expandedColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.leafColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.openColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] Tree.leafIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTreeLeafIcon [UI] Tree.leftChildIndent 7 Tree.lineTypeDashed false @@ -1327,14 +1346,14 @@ Tree.repaintWholeRow true Tree.rightChildIndent 11 Tree.rowHeight 0 Tree.scrollsOnExpand true -Tree.selectionBackground #2675bf javax.swing.plaf.ColorUIResource [UI] -Tree.selectionBorderColor #000000 javax.swing.plaf.ColorUIResource [UI] -Tree.selectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] -Tree.selectionInactiveBackground #d4d4d4 javax.swing.plaf.ColorUIResource [UI] -Tree.selectionInactiveForeground #000000 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionBackground #2675bf HSL 209 67 45 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionBorderColor #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionInactiveBackground #d4d4d4 HSL 0 0 83 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionInactiveForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] Tree.showCellFocusIndicator false -Tree.textBackground #ffffff javax.swing.plaf.ColorUIResource [UI] -Tree.textForeground #000000 javax.swing.plaf.ColorUIResource [UI] +Tree.textBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Tree.textForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] Tree.timeFactor 1000 Tree.wideSelection true TreeUI com.formdev.flatlaf.ui.FlatTreeUI @@ -1352,30 +1371,30 @@ TristateCheckBox.setMixed.clientProperty length=2 [Ljava.lang.Object; #---- UIColorHighlighter ---- -UIColorHighlighter.stripingBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +UIColorHighlighter.stripingBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] #---- Viewport ---- -Viewport.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI] +Viewport.background #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] Viewport.font [active] $defaultFont [UI] -Viewport.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +Viewport.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] ViewportUI com.formdev.flatlaf.ui.FlatViewportUI #---- ---- -activeCaption #99b4d1 javax.swing.plaf.ColorUIResource [UI] -activeCaptionBorder #99b4d1 javax.swing.plaf.ColorUIResource [UI] -activeCaptionText #000000 javax.swing.plaf.ColorUIResource [UI] -control #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -controlDkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI] -controlHighlight #e3e3e3 javax.swing.plaf.ColorUIResource [UI] -controlLtHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] -controlShadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI] -controlText #000000 javax.swing.plaf.ColorUIResource [UI] +activeCaption #99b4d1 HSL 211 38 71 javax.swing.plaf.ColorUIResource [UI] +activeCaptionBorder #99b4d1 HSL 211 38 71 javax.swing.plaf.ColorUIResource [UI] +activeCaptionText #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +control #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +controlDkShadow #9e9e9e HSL 0 0 62 javax.swing.plaf.ColorUIResource [UI] +controlHighlight #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] +controlLtHighlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +controlShadow #c4c4c4 HSL 0 0 77 javax.swing.plaf.ColorUIResource [UI] +controlText #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] defaultFont Segoe UI plain 12 javax.swing.plaf.FontUIResource [UI] -desktop #ffffff javax.swing.plaf.ColorUIResource [UI] +desktop #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] #---- html ---- @@ -1386,11 +1405,11 @@ html.pendingImage [lazy] 38,38 sun.swing.ImageIconUIResource [UI #---- ---- -inactiveCaption #bfcddb javax.swing.plaf.ColorUIResource [UI] -inactiveCaptionBorder #bfcddb javax.swing.plaf.ColorUIResource [UI] -inactiveCaptionText #000000 javax.swing.plaf.ColorUIResource [UI] -info #fafafa javax.swing.plaf.ColorUIResource [UI] -infoText #000000 javax.swing.plaf.ColorUIResource [UI] +inactiveCaption #bfcddb HSL 210 28 80 javax.swing.plaf.ColorUIResource [UI] +inactiveCaptionBorder #bfcddb HSL 210 28 80 javax.swing.plaf.ColorUIResource [UI] +inactiveCaptionText #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +info #fafafa HSL 0 0 98 javax.swing.plaf.ColorUIResource [UI] +infoText #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] #---- laf ---- @@ -1401,9 +1420,9 @@ laf.scaleFactor [active] 1.0 #---- ---- -menu #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -menuText #000000 javax.swing.plaf.ColorUIResource [UI] -scrollbar #f5f5f5 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) +menu #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +menuText #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +scrollbar #f5f5f5 HSL 0 0 96 com.formdev.flatlaf.util.DerivedColor [UI] lighten(1%) #---- swingx/TaskPane ---- @@ -1413,11 +1432,11 @@ swingx/TaskPaneUI com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI #---- ---- -text #ffffff javax.swing.plaf.ColorUIResource [UI] -textHighlight #2675bf javax.swing.plaf.ColorUIResource [UI] -textHighlightText #ffffff javax.swing.plaf.ColorUIResource [UI] -textInactiveText #8c8c8c javax.swing.plaf.ColorUIResource [UI] -textText #000000 javax.swing.plaf.ColorUIResource [UI] -window #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -windowBorder #000000 javax.swing.plaf.ColorUIResource [UI] -windowText #000000 javax.swing.plaf.ColorUIResource [UI] +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] +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] +windowText #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0_202.txt index 833e85f4..40d64308 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0_202.txt @@ -12,12 +12,12 @@ AATextInfoPropertyKey [unknown type] sun.swing.SwingUtilities2$AATextIn #---- Actions ---- -Actions.Blue #389fd6 javax.swing.plaf.ColorUIResource [UI] -Actions.Green #59a869 javax.swing.plaf.ColorUIResource [UI] -Actions.Grey #6e6e6e javax.swing.plaf.ColorUIResource [UI] -Actions.GreyInline #7f8b91 javax.swing.plaf.ColorUIResource [UI] -Actions.Red #db5860 javax.swing.plaf.ColorUIResource [UI] -Actions.Yellow #eda200 javax.swing.plaf.ColorUIResource [UI] +Actions.Blue #389fd6 HSL 201 66 53 javax.swing.plaf.ColorUIResource [UI] +Actions.Green #59a869 HSL 132 31 50 javax.swing.plaf.ColorUIResource [UI] +Actions.Grey #6e6e6e HSL 0 0 43 javax.swing.plaf.ColorUIResource [UI] +Actions.GreyInline #7f8b91 HSL 200 8 53 javax.swing.plaf.ColorUIResource [UI] +Actions.Red #db5860 HSL 356 65 60 javax.swing.plaf.ColorUIResource [UI] +Actions.Yellow #eda200 HSL 41 100 46 javax.swing.plaf.ColorUIResource [UI] #---- AuditoryCues ---- @@ -62,54 +62,54 @@ BusyLabelUI com.formdev.flatlaf.swingx.ui.FlatBusyLabelUI #---- Button ---- Button.arc 6 -Button.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +Button.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] Button.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] -Button.borderColor #00ff00 javax.swing.plaf.ColorUIResource [UI] +Button.borderColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] Button.borderWidth 1 -Button.darkShadow #696969 javax.swing.plaf.ColorUIResource [UI] +Button.darkShadow #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] Button.default.borderWidth 1 -Button.default.endBackground #888888 javax.swing.plaf.ColorUIResource [UI] -Button.default.endBorderColor #0000ff javax.swing.plaf.ColorUIResource [UI] -Button.default.focusColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -Button.default.focusedBackground #00ffff javax.swing.plaf.ColorUIResource [UI] -Button.default.focusedBorderColor #537699 javax.swing.plaf.ColorUIResource [UI] -Button.default.foreground #880000 javax.swing.plaf.ColorUIResource [UI] -Button.default.hoverBackground #ffff00 javax.swing.plaf.ColorUIResource [UI] -Button.default.hoverBorderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -Button.default.pressedBackground #ffc800 javax.swing.plaf.ColorUIResource [UI] -Button.default.startBackground #dddddd javax.swing.plaf.ColorUIResource [UI] -Button.default.startBorderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] +Button.default.endBackground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +Button.default.endBorderColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.default.focusColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.default.focusedBackground #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.default.focusedBorderColor #537699 HSL 210 30 46 javax.swing.plaf.ColorUIResource [UI] +Button.default.foreground #880000 HSL 0 100 27 javax.swing.plaf.ColorUIResource [UI] +Button.default.hoverBackground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.default.hoverBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.default.pressedBackground #ffc800 HSL 47 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.default.startBackground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +Button.default.startBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] Button.defaultButtonFollowsFocus false -Button.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI] -Button.disabledBorderColor #000088 javax.swing.plaf.ColorUIResource [UI] -Button.disabledForeground #000088 javax.swing.plaf.ColorUIResource [UI] -Button.disabledText #000088 javax.swing.plaf.ColorUIResource [UI] -Button.endBackground #bbbbbb javax.swing.plaf.ColorUIResource [UI] -Button.endBorderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -Button.focusedBackground #00ffff javax.swing.plaf.ColorUIResource [UI] -Button.focusedBorderColor #466d94 javax.swing.plaf.ColorUIResource [UI] +Button.disabledBackground #e0e0e0 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] +Button.disabledBorderColor #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +Button.disabledForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +Button.disabledText #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +Button.endBackground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI] +Button.endBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.focusedBackground #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.focusedBorderColor #466d94 HSL 210 36 43 javax.swing.plaf.ColorUIResource [UI] Button.font [active] $defaultFont [UI] -Button.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -Button.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -Button.hoverBackground #ffff00 javax.swing.plaf.ColorUIResource [UI] -Button.hoverBorderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] +Button.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Button.hoverBackground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +Button.hoverBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] Button.iconTextGap 4 Button.innerFocusWidth 1 -Button.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +Button.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] Button.margin 2,14,2,14 javax.swing.plaf.InsetsUIResource [UI] Button.minimumWidth 72 -Button.pressedBackground #ffc800 javax.swing.plaf.ColorUIResource [UI] +Button.pressedBackground #ffc800 HSL 47 100 50 javax.swing.plaf.ColorUIResource [UI] Button.rollover true -Button.selectedBackground #ffbbbb javax.swing.plaf.ColorUIResource [UI] -Button.shadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] -Button.startBackground #ffffff javax.swing.plaf.ColorUIResource [UI] -Button.startBorderColor #0000ff javax.swing.plaf.ColorUIResource [UI] +Button.selectedBackground #ffbbbb HSL 0 100 87 javax.swing.plaf.ColorUIResource [UI] +Button.shadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] +Button.startBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Button.startBorderColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] Button.textIconGap 4 Button.textShiftOffset 0 -Button.toolbar.hoverBackground #ffffff javax.swing.plaf.ColorUIResource [UI] +Button.toolbar.hoverBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Button.toolbar.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -Button.toolbar.pressedBackground #eeeeee javax.swing.plaf.ColorUIResource [UI] -Button.toolbar.selectedBackground #dddddd javax.swing.plaf.ColorUIResource [UI] +Button.toolbar.pressedBackground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] +Button.toolbar.selectedBackground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] Button.toolbar.spacingInsets 1,2,1,2 javax.swing.plaf.InsetsUIResource [UI] ButtonUI com.formdev.flatlaf.ui.FlatButtonUI @@ -122,25 +122,25 @@ Caret.width [active] 1 #---- CheckBox ---- CheckBox.arc 4 -CheckBox.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +CheckBox.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] CheckBox.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -CheckBox.disabledText #000088 javax.swing.plaf.ColorUIResource [UI] +CheckBox.disabledText #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] CheckBox.font [active] $defaultFont [UI] -CheckBox.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.background #ffffff javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.borderColor #878787 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.checkmarkColor #ffffff javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.disabledBorderColor #bdbdbd javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.disabledCheckmarkColor #ababab javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.focusedBackground #00ffff javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.focusedBorderColor #7b9fc7 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.hoverBackground #ffff00 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.hoverBorderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.pressedBackground #ffc800 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.selectedBackground #4d89c9 javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.selectedBorderColor #4982cc javax.swing.plaf.ColorUIResource [UI] -CheckBox.icon.selectedFocusedBorderColor #accff7 javax.swing.plaf.ColorUIResource [UI] +CheckBox.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [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] +CheckBox.icon.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledBorderColor #bdbdbd HSL 0 0 74 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.disabledCheckmarkColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.focusedBackground #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.focusedBorderColor #7b9fc7 HSL 212 40 63 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.hoverBackground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.hoverBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +CheckBox.icon.pressedBackground #ffc800 HSL 47 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.selectedFocusedBorderColor #accff7 HSL 212 82 82 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] @@ -152,20 +152,20 @@ CheckBox.textShiftOffset 0 #---- CheckBoxMenuItem ---- CheckBoxMenuItem.acceleratorFont [active] $defaultFont [UI] -CheckBoxMenuItem.acceleratorForeground #ff8888 javax.swing.plaf.ColorUIResource [UI] -CheckBoxMenuItem.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.acceleratorForeground #ff8888 HSL 0 100 77 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.acceleratorSelectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] -CheckBoxMenuItem.background #ffffff javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.background #ffffff HSL 0 0 100 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 #000088 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.disabledForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.font [active] $defaultFont [UI] -CheckBoxMenuItem.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItem.margin 3,6,3,6 javax.swing.plaf.InsetsUIResource [UI] CheckBoxMenuItem.opaque false -CheckBoxMenuItem.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -CheckBoxMenuItem.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +CheckBoxMenuItem.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] CheckBoxMenuItemUI com.formdev.flatlaf.ui.FlatCheckBoxMenuItemUI @@ -176,10 +176,10 @@ CheckBoxUI com.formdev.flatlaf.ui.FlatCheckBoxUI #---- ColorChooser ---- -ColorChooser.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +ColorChooser.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] ColorChooser.font [active] $defaultFont [UI] -ColorChooser.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -ColorChooser.swatchesDefaultRecentColor #ccffcc javax.swing.plaf.ColorUIResource [UI] +ColorChooser.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +ColorChooser.swatchesDefaultRecentColor #ccffcc HSL 120 100 90 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] ColorChooserUI com.formdev.flatlaf.ui.FlatColorChooserUI @@ -187,33 +187,33 @@ ColorChooserUI com.formdev.flatlaf.ui.FlatColorChooserUI #---- ComboBox ---- -ComboBox.background #ffffff javax.swing.plaf.ColorUIResource [UI] +ComboBox.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ComboBox.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI] -ComboBox.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonBackground #f0f0f0 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonDarkShadow #696969 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonDisabledArrowColor #ababab javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonEditableBackground #cccccc javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonFocusedBackground #ffff00 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonHoverArrowColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonPressedArrowColor #0000ff javax.swing.plaf.ColorUIResource [UI] -ComboBox.buttonShadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonArrowColor #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonBackground #f0f0f0 HSL 0 0 94 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonDarkShadow #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonDisabledArrowColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonEditableBackground #cccccc HSL 0 0 80 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonFocusedBackground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonHighlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonHoverArrowColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonPressedArrowColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +ComboBox.buttonShadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] ComboBox.buttonStyle auto -ComboBox.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI] -ComboBox.disabledForeground #000088 javax.swing.plaf.ColorUIResource [UI] +ComboBox.disabledBackground #e0e0e0 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] +ComboBox.disabledForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] ComboBox.editorColumns 0 -ComboBox.focusedBackground #ffff88 javax.swing.plaf.ColorUIResource [UI] +ComboBox.focusedBackground #ffff88 HSL 60 100 77 javax.swing.plaf.ColorUIResource [UI] ComboBox.font [active] $defaultFont [UI] -ComboBox.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +ComboBox.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] ComboBox.isEnterSelectablePopup false ComboBox.maximumRowCount 15 ComboBox.minimumWidth 72 ComboBox.noActionOnKeyNavigation false ComboBox.padding 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -ComboBox.popupBackground #ffffcc javax.swing.plaf.ColorUIResource [UI] -ComboBox.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -ComboBox.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] +ComboBox.popupBackground #ffffcc HSL 60 100 90 javax.swing.plaf.ColorUIResource [UI] +ComboBox.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +ComboBox.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] ComboBox.timeFactor 1000 ComboBoxUI com.formdev.flatlaf.ui.FlatComboBoxUI @@ -222,11 +222,11 @@ ComboBoxUI com.formdev.flatlaf.ui.FlatComboBoxUI Component.arc 5 Component.arrowType chevron -Component.borderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -Component.disabledBorderColor #000088 javax.swing.plaf.ColorUIResource [UI] -Component.focusColor #97c3f3 javax.swing.plaf.ColorUIResource [UI] +Component.borderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Component.disabledBorderColor #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +Component.focusColor #97c3f3 HSL 211 79 77 javax.swing.plaf.ColorUIResource [UI] Component.focusWidth 0 -Component.focusedBorderColor #466d94 javax.swing.plaf.ColorUIResource [UI] +Component.focusedBorderColor #466d94 HSL 210 36 43 javax.swing.plaf.ColorUIResource [UI] Component.grayFilter [lazy] [unknown type] com.formdev.flatlaf.util.GrayFilter Component.hideMnemonics true Component.innerFocusWidth 0.5 @@ -241,17 +241,17 @@ DatePickerUI com.formdev.flatlaf.swingx.ui.FlatDatePickerUI #---- Desktop ---- -Desktop.background #aaffee javax.swing.plaf.ColorUIResource [UI] +Desktop.background #aaffee HSL 168 100 83 javax.swing.plaf.ColorUIResource [UI] Desktop.minOnScreenInsets 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] #---- DesktopIcon ---- -DesktopIcon.background #44ffda javax.swing.plaf.ColorUIResource [UI] +DesktopIcon.background #44ffda HSL 168 100 63 javax.swing.plaf.ColorUIResource [UI] 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 #ff0000 javax.swing.plaf.ColorUIResource [UI] +DesktopIcon.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] DesktopIcon.iconSize 64,64 javax.swing.plaf.DimensionUIResource [UI] DesktopIconUI com.formdev.flatlaf.ui.FlatDesktopIconUI @@ -263,19 +263,19 @@ DesktopPaneUI com.formdev.flatlaf.ui.FlatDesktopPaneUI #---- EditorPane ---- -EditorPane.background #ffffff javax.swing.plaf.ColorUIResource [UI] +EditorPane.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] EditorPane.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] EditorPane.caretBlinkRate 500 -EditorPane.caretForeground #0000ff javax.swing.plaf.ColorUIResource [UI] -EditorPane.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI] -EditorPane.focusedBackground #ffff88 javax.swing.plaf.ColorUIResource [UI] +EditorPane.caretForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +EditorPane.disabledBackground #e0e0e0 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] +EditorPane.focusedBackground #ffff88 HSL 60 100 77 javax.swing.plaf.ColorUIResource [UI] EditorPane.font [active] $defaultFont [UI] -EditorPane.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -EditorPane.inactiveBackground #f0f0f0 javax.swing.plaf.ColorUIResource [UI] -EditorPane.inactiveForeground #000088 javax.swing.plaf.ColorUIResource [UI] +EditorPane.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +EditorPane.inactiveBackground #f0f0f0 HSL 0 0 94 javax.swing.plaf.ColorUIResource [UI] +EditorPane.inactiveForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] EditorPane.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -EditorPane.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -EditorPane.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] +EditorPane.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +EditorPane.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] EditorPaneUI com.formdev.flatlaf.ui.FlatEditorPaneUI @@ -303,20 +303,20 @@ FileView.hardDriveIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatFil #---- FormattedTextField ---- -FormattedTextField.background #ffffff javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI] FormattedTextField.caretBlinkRate 500 -FormattedTextField.caretForeground #0000ff javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.focusedBackground #ffff88 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.caretForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.disabledBackground #e0e0e0 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.focusedBackground #ffff88 HSL 60 100 77 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.font [active] $defaultFont [UI] -FormattedTextField.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.inactiveBackground #f0f0f0 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.inactiveForeground #000088 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.inactiveBackground #f0f0f0 HSL 0 0 94 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.inactiveForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] FormattedTextField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -FormattedTextField.placeholderForeground #000088 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -FormattedTextField.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.placeholderForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +FormattedTextField.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] FormattedTextFieldUI com.formdev.flatlaf.ui.FlatFormattedTextFieldUI @@ -327,59 +327,59 @@ HeaderUI com.formdev.flatlaf.swingx.ui.FlatHeaderUI #---- HelpButton ---- -HelpButton.background #ffffff javax.swing.plaf.ColorUIResource [UI] -HelpButton.borderColor #878787 javax.swing.plaf.ColorUIResource [UI] +HelpButton.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +HelpButton.borderColor #878787 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] HelpButton.borderWidth 1 -HelpButton.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI] -HelpButton.disabledBorderColor #bdbdbd javax.swing.plaf.ColorUIResource [UI] -HelpButton.disabledQuestionMarkColor #ababab javax.swing.plaf.ColorUIResource [UI] -HelpButton.focusedBackground #00ffff javax.swing.plaf.ColorUIResource [UI] -HelpButton.focusedBorderColor #7b9fc7 javax.swing.plaf.ColorUIResource [UI] -HelpButton.hoverBackground #ffff00 javax.swing.plaf.ColorUIResource [UI] -HelpButton.hoverBorderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] +HelpButton.disabledBackground #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI] +HelpButton.disabledBorderColor #bdbdbd HSL 0 0 74 javax.swing.plaf.ColorUIResource [UI] +HelpButton.disabledQuestionMarkColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +HelpButton.focusedBackground #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] +HelpButton.focusedBorderColor #7b9fc7 HSL 212 40 63 javax.swing.plaf.ColorUIResource [UI] +HelpButton.hoverBackground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +HelpButton.hoverBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] HelpButton.icon [lazy] 22,22 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI] HelpButton.innerFocusWidth 1 -HelpButton.pressedBackground #ffc800 javax.swing.plaf.ColorUIResource [UI] -HelpButton.questionMarkColor #0000ff javax.swing.plaf.ColorUIResource [UI] +HelpButton.pressedBackground #ffc800 HSL 47 100 50 javax.swing.plaf.ColorUIResource [UI] +HelpButton.questionMarkColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] #---- Hyperlink ---- -Hyperlink.disabledText #000088 javax.swing.plaf.ColorUIResource [UI] -Hyperlink.linkColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -Hyperlink.visitedColor #0000ff javax.swing.plaf.ColorUIResource [UI] +Hyperlink.disabledText #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +Hyperlink.linkColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Hyperlink.visitedColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] HyperlinkUI com.formdev.flatlaf.swingx.ui.FlatHyperlinkUI #---- InternalFrame ---- -InternalFrame.activeBorderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.activeBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] InternalFrame.activeDropShadowInsets 5,5,6,6 javax.swing.plaf.InsetsUIResource [UI] -InternalFrame.activeTitleBackground #880000 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.activeTitleForeground #ffaaaa javax.swing.plaf.ColorUIResource [UI] +InternalFrame.activeTitleBackground #880000 HSL 0 100 27 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.activeTitleForeground #ffaaaa HSL 0 100 83 javax.swing.plaf.ColorUIResource [UI] InternalFrame.border [lazy] 6,6,6,6 false com.formdev.flatlaf.ui.FlatInternalFrameUI$FlatInternalFrameBorder [UI] -InternalFrame.borderColor #ccffcc javax.swing.plaf.ColorUIResource [UI] -InternalFrame.borderDarkShadow #696969 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.borderHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] -InternalFrame.borderLight #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderColor #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderDarkShadow #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderHighlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderLight #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] InternalFrame.borderLineWidth 1 InternalFrame.borderMargins 6,6,6,6 javax.swing.plaf.InsetsUIResource [UI] -InternalFrame.borderShadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.buttonHoverBackground #006600 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.buttonPressedBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.borderShadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.buttonHoverBackground #006600 HSL 120 100 20 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.buttonPressedBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] InternalFrame.buttonSize 24,24 javax.swing.plaf.DimensionUIResource [UI] -InternalFrame.closeHoverBackground #000088 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.closeHoverForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closeHoverBackground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closeHoverForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] InternalFrame.closeIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameCloseIcon [UI] -InternalFrame.closePressedBackground #0000ff javax.swing.plaf.ColorUIResource [UI] -InternalFrame.closePressedForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closePressedBackground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.closePressedForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] InternalFrame.dropShadowPainted true InternalFrame.icon [lazy] 16,16 sun.swing.ImageIconUIResource [UI] (sun.awt.image.ToolkitImage) InternalFrame.iconifyIcon [lazy] 24,24 com.formdev.flatlaf.icons.FlatInternalFrameIconifyIcon [UI] -InternalFrame.inactiveBorderColor #00ff00 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.inactiveBorderColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] InternalFrame.inactiveDropShadowInsets 3,3,4,4 javax.swing.plaf.InsetsUIResource [UI] -InternalFrame.inactiveTitleBackground #008800 javax.swing.plaf.ColorUIResource [UI] -InternalFrame.inactiveTitleForeground #aaffaa javax.swing.plaf.ColorUIResource [UI] +InternalFrame.inactiveTitleBackground #008800 HSL 120 100 27 javax.swing.plaf.ColorUIResource [UI] +InternalFrame.inactiveTitleForeground #aaffaa HSL 120 100 83 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] @@ -400,8 +400,8 @@ InternalFrameUI com.formdev.flatlaf.ui.FlatInternalFrameUI #---- JXBusyLabel ---- -JXBusyLabel.baseColor #00ff00 javax.swing.plaf.ColorUIResource [UI] -JXBusyLabel.highlightColor #ff0000 javax.swing.plaf.ColorUIResource [UI] +JXBusyLabel.baseColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +JXBusyLabel.highlightColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] #---- JXDatePicker ---- @@ -411,61 +411,61 @@ JXDatePicker.border [lazy] 1,1,1,1 false com.formdev.flatlaf.swin #---- JXHeader ---- -JXHeader.background #ff8888 javax.swing.plaf.ColorUIResource [UI] -JXHeader.descriptionForeground #ff0000 javax.swing.plaf.ColorUIResource [UI] -JXHeader.startBackground #ffcccc javax.swing.plaf.ColorUIResource [UI] -JXHeader.titleForeground #0000ff javax.swing.plaf.ColorUIResource [UI] +JXHeader.background #ff8888 HSL 0 100 77 javax.swing.plaf.ColorUIResource [UI] +JXHeader.descriptionForeground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +JXHeader.startBackground #ffcccc HSL 0 100 90 javax.swing.plaf.ColorUIResource [UI] +JXHeader.titleForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] #---- JXMonthView ---- -JXMonthView.arrowColor #0000ff javax.swing.plaf.ColorUIResource [UI] -JXMonthView.background #ffffff javax.swing.plaf.ColorUIResource [UI] -JXMonthView.daysOfTheWeekForeground #00ff00 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.disabledArrowColor #ababab javax.swing.plaf.ColorUIResource [UI] -JXMonthView.flaggedDayForeground #00ffff javax.swing.plaf.ColorUIResource [UI] -JXMonthView.leadingDayForeground #c0c0c0 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.arrowColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.daysOfTheWeekForeground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.disabledArrowColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.flaggedDayForeground #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [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.monthStringBackground #00ff00 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.monthStringForeground #0000ff javax.swing.plaf.ColorUIResource [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.selectedBackground #aaffaa javax.swing.plaf.ColorUIResource [UI] -JXMonthView.trailingDayForeground #c0c0c0 javax.swing.plaf.ColorUIResource [UI] -JXMonthView.unselectableDayForeground #0000ff javax.swing.plaf.ColorUIResource [UI] -JXMonthView.weekOfTheYearForeground #0000ff javax.swing.plaf.ColorUIResource [UI] +JXMonthView.selectedBackground #aaffaa HSL 120 100 83 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.trailingDayForeground #c0c0c0 HSL 0 0 75 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.unselectableDayForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +JXMonthView.weekOfTheYearForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] #---- JXTitledPanel ---- -JXTitledPanel.borderColor #0000ff javax.swing.plaf.ColorUIResource [UI] +JXTitledPanel.borderColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] JXTitledPanel.captionInsets 4,10,4,10 javax.swing.plaf.InsetsUIResource [UI] -JXTitledPanel.titleBackground #ffff00 javax.swing.plaf.ColorUIResource [UI] -JXTitledPanel.titleForeground #ff00ff javax.swing.plaf.ColorUIResource [UI] +JXTitledPanel.titleBackground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +JXTitledPanel.titleForeground #ff00ff HSL 300 100 50 javax.swing.plaf.ColorUIResource [UI] #---- JideButton ---- -JideButton.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +JideButton.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] JideButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -JideButton.borderColor #00ff00 javax.swing.plaf.ColorUIResource [UI] -JideButton.darkShadow #00ff00 javax.swing.plaf.ColorUIResource [UI] -JideButton.focusedBackground #ffffff javax.swing.plaf.ColorUIResource [UI] -JideButton.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -JideButton.highlight #ffbbbb javax.swing.plaf.ColorUIResource [UI] -JideButton.light #00ff00 javax.swing.plaf.ColorUIResource [UI] +JideButton.borderColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +JideButton.darkShadow #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +JideButton.focusedBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +JideButton.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +JideButton.highlight #ffbbbb HSL 0 100 87 javax.swing.plaf.ColorUIResource [UI] +JideButton.light #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] JideButton.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -JideButton.selectedAndFocusedBackground #eeeeee javax.swing.plaf.ColorUIResource [UI] -JideButton.selectedBackground #dddddd javax.swing.plaf.ColorUIResource [UI] -JideButton.shadow #00ff00 javax.swing.plaf.ColorUIResource [UI] +JideButton.selectedAndFocusedBackground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] +JideButton.selectedBackground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +JideButton.shadow #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] JideButton.textIconGap [active] 4 JideButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideButtonUI #---- JideLabel ---- -JideLabel.background #ccffcc javax.swing.plaf.ColorUIResource [UI] -JideLabel.disabledForeground #000088 javax.swing.plaf.ColorUIResource [UI] -JideLabel.foreground #008800 javax.swing.plaf.ColorUIResource [UI] +JideLabel.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] +JideLabel.disabledForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +JideLabel.foreground #008800 HSL 120 100 27 javax.swing.plaf.ColorUIResource [UI] JideLabelUI com.formdev.flatlaf.jideoss.ui.FlatJideLabelUI @@ -476,28 +476,28 @@ JidePopupMenuUI com.formdev.flatlaf.jideoss.ui.FlatJidePopupMenuU #---- JideSplitButton ---- -JideSplitButton.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -JideSplitButton.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI] -JideSplitButton.buttonDisabledArrowColor #ababab javax.swing.plaf.ColorUIResource [UI] -JideSplitButton.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.buttonArrowColor #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.buttonDisabledArrowColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.margin 3,3,3,3 javax.swing.plaf.InsetsUIResource [UI] -JideSplitButton.selectionForeground #ff0000 javax.swing.plaf.ColorUIResource [UI] +JideSplitButton.selectionForeground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] JideSplitButton.textIconGap [active] 4 JideSplitButtonUI com.formdev.flatlaf.jideoss.ui.FlatJideSplitButtonUI #---- JideTabbedPane ---- -JideTabbedPane.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +JideTabbedPane.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] JideTabbedPane.closeButtonLeftMargin 0 JideTabbedPane.closeButtonRightMargin 0 JideTabbedPane.contentBorderInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] JideTabbedPane.fitStyleBoundSize 0 JideTabbedPane.fitStyleFirstTabMargin 0 -JideTabbedPane.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -JideTabbedPane.shadow #ccffcc javax.swing.plaf.ColorUIResource [UI] -JideTabbedPane.tabAreaBackground #ccffcc javax.swing.plaf.ColorUIResource [UI] +JideTabbedPane.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +JideTabbedPane.shadow #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] +JideTabbedPane.tabAreaBackground #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] JideTabbedPane.tabAreaInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] JideTabbedPane.tabInsets 4,12,4,12 javax.swing.plaf.InsetsUIResource [UI] JideTabbedPane.tabRunOverlay 0 @@ -506,34 +506,34 @@ JideTabbedPaneUI com.formdev.flatlaf.jideoss.ui.FlatJideTabbedPane #---- Label ---- -Label.background #ccffcc javax.swing.plaf.ColorUIResource [UI] -Label.disabledForeground #000088 javax.swing.plaf.ColorUIResource [UI] -Label.disabledShadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] +Label.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] +Label.disabledForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +Label.disabledShadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] Label.font [active] $defaultFont [UI] -Label.foreground #008800 javax.swing.plaf.ColorUIResource [UI] +Label.foreground #008800 HSL 120 100 27 javax.swing.plaf.ColorUIResource [UI] LabelUI com.formdev.flatlaf.ui.FlatLabelUI #---- List ---- -List.background #f0ffff javax.swing.plaf.ColorUIResource [UI] +List.background #f0ffff HSL 180 100 97 javax.swing.plaf.ColorUIResource [UI] List.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] -List.cellFocusColor #ff0000 javax.swing.plaf.ColorUIResource [UI] +List.cellFocusColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] List.cellMargins 1,6,1,6 javax.swing.plaf.InsetsUIResource [UI] List.cellNoFocusBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] List.cellRenderer [active] javax.swing.DefaultListCellRenderer$UIResource [UI] -List.dropCellBackground #ff0000 javax.swing.plaf.ColorUIResource [UI] -List.dropCellForeground #00ff00 javax.swing.plaf.ColorUIResource [UI] -List.dropLineColor #0000ff javax.swing.plaf.ColorUIResource [UI] -List.focusCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#880000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 -List.focusSelectedCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#880000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +List.dropCellBackground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +List.dropCellForeground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +List.dropLineColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +List.focusCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#880000 HSL 0 100 27 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +List.focusSelectedCellHighlightBorder [lazy] 1,6,1,6 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#880000 HSL 0 100 27 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 List.font [active] $defaultFont [UI] -List.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +List.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] List.noFocusBorder 1,1,1,1 false javax.swing.plaf.BorderUIResource$EmptyBorderUIResource [UI] -List.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -List.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] -List.selectionInactiveBackground #888888 javax.swing.plaf.ColorUIResource [UI] -List.selectionInactiveForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +List.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +List.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +List.selectionInactiveBackground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +List.selectionInactiveForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] List.showCellFocusIndicator false List.timeFactor 1000 ListUI com.formdev.flatlaf.ui.FlatListUI @@ -542,26 +542,26 @@ ListUI com.formdev.flatlaf.ui.FlatListUI #---- Menu ---- Menu.acceleratorFont [active] $defaultFont [UI] -Menu.acceleratorForeground #ff8888 javax.swing.plaf.ColorUIResource [UI] -Menu.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +Menu.acceleratorForeground #ff8888 HSL 0 100 77 javax.swing.plaf.ColorUIResource [UI] +Menu.acceleratorSelectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Menu.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuArrowIcon [UI] -Menu.background #ffffff javax.swing.plaf.ColorUIResource [UI] +Menu.background #ffffff HSL 0 0 100 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 #000088 javax.swing.plaf.ColorUIResource [UI] +Menu.disabledForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] Menu.font [active] $defaultFont [UI] -Menu.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -Menu.icon.arrowColor #4d89c9 javax.swing.plaf.ColorUIResource [UI] -Menu.icon.disabledArrowColor #ababab javax.swing.plaf.ColorUIResource [UI] +Menu.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Menu.icon.arrowColor #4d89c9 HSL 211 53 55 javax.swing.plaf.ColorUIResource [UI] +Menu.icon.disabledArrowColor #ababab HSL 0 0 67 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 #00aa00 javax.swing.plaf.ColorUIResource [UI] -Menu.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] +Menu.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +Menu.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] Menu.shortcutKeys length=1 [I [0] 8 Menu.submenuPopupOffsetX [active] -4 @@ -570,17 +570,17 @@ Menu.submenuPopupOffsetY [active] -4 #---- MenuBar ---- -MenuBar.background #ffffff javax.swing.plaf.ColorUIResource [UI] +MenuBar.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] MenuBar.border [lazy] 0,0,1,0 false com.formdev.flatlaf.ui.FlatMenuBarBorder [UI] -MenuBar.borderColor #4444ff javax.swing.plaf.ColorUIResource [UI] +MenuBar.borderColor #4444ff HSL 240 100 63 javax.swing.plaf.ColorUIResource [UI] MenuBar.font [active] $defaultFont [UI] -MenuBar.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -MenuBar.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -MenuBar.hoverBackground #ffdddd javax.swing.plaf.ColorUIResource [UI] +MenuBar.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +MenuBar.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +MenuBar.hoverBackground #ffdddd HSL 0 100 93 javax.swing.plaf.ColorUIResource [UI] MenuBar.itemMargins 3,8,3,8 javax.swing.plaf.InsetsUIResource [UI] -MenuBar.shadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] -MenuBar.underlineSelectionBackground #00ff00 javax.swing.plaf.ColorUIResource [UI] -MenuBar.underlineSelectionColor #ff0000 javax.swing.plaf.ColorUIResource [UI] +MenuBar.shadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] +MenuBar.underlineSelectionBackground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +MenuBar.underlineSelectionColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] MenuBar.underlineSelectionHeight 5 MenuBar.windowBindings length=2 [Ljava.lang.Object; [0] F10 @@ -593,36 +593,36 @@ MenuBarUI com.formdev.flatlaf.ui.FlatMenuBarUI MenuItem.acceleratorArrowGap 2 MenuItem.acceleratorDelimiter - MenuItem.acceleratorFont [active] $defaultFont [UI] -MenuItem.acceleratorForeground #ff8888 javax.swing.plaf.ColorUIResource [UI] -MenuItem.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +MenuItem.acceleratorForeground #ff8888 HSL 0 100 77 javax.swing.plaf.ColorUIResource [UI] +MenuItem.acceleratorSelectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] MenuItem.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] -MenuItem.background #ffffff javax.swing.plaf.ColorUIResource [UI] +MenuItem.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] MenuItem.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMenuItemBorder [UI] MenuItem.borderPainted true -MenuItem.checkBackground #ccccff javax.swing.plaf.ColorUIResource [UI] +MenuItem.checkBackground #ccccff HSL 240 100 90 javax.swing.plaf.ColorUIResource [UI] MenuItem.checkMargins 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] -MenuItem.disabledForeground #000088 javax.swing.plaf.ColorUIResource [UI] +MenuItem.disabledForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] MenuItem.font [active] $defaultFont [UI] -MenuItem.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +MenuItem.foreground #ff0000 HSL 0 100 50 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] MenuItem.minimumWidth 72 MenuItem.opaque false -MenuItem.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -MenuItem.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] +MenuItem.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +MenuItem.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] MenuItem.textAcceleratorGap 24 MenuItem.textNoAcceleratorGap 6 -MenuItem.underlineSelectionBackground #e6e6e6 javax.swing.plaf.ColorUIResource [UI] -MenuItem.underlineSelectionCheckBackground #ccccff javax.swing.plaf.ColorUIResource [UI] -MenuItem.underlineSelectionColor #ffff00 javax.swing.plaf.ColorUIResource [UI] +MenuItem.underlineSelectionBackground #e6e6e6 HSL 0 0 90 javax.swing.plaf.ColorUIResource [UI] +MenuItem.underlineSelectionCheckBackground #ccccff HSL 240 100 90 javax.swing.plaf.ColorUIResource [UI] +MenuItem.underlineSelectionColor #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] MenuItem.underlineSelectionHeight 3 #---- MenuItemCheckBox ---- -MenuItemCheckBox.icon.checkmarkColor #4d89c9 javax.swing.plaf.ColorUIResource [UI] -MenuItemCheckBox.icon.disabledCheckmarkColor #ababab javax.swing.plaf.ColorUIResource [UI] +MenuItemCheckBox.icon.checkmarkColor #4d89c9 HSL 211 53 55 javax.swing.plaf.ColorUIResource [UI] +MenuItemCheckBox.icon.disabledCheckmarkColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] #---- MenuItem ---- @@ -642,22 +642,22 @@ MonthViewUI com.formdev.flatlaf.swingx.ui.FlatMonthViewUI #---- Objects ---- -Objects.BlackText #231f20 javax.swing.plaf.ColorUIResource [UI] -Objects.Blue #40b6e0 javax.swing.plaf.ColorUIResource [UI] -Objects.Green #62b543 javax.swing.plaf.ColorUIResource [UI] -Objects.GreenAndroid #a4c639 javax.swing.plaf.ColorUIResource [UI] -Objects.Grey #9aa7b0 javax.swing.plaf.ColorUIResource [UI] -Objects.Pink #f98b9e javax.swing.plaf.ColorUIResource [UI] -Objects.Purple #b99bf8 javax.swing.plaf.ColorUIResource [UI] -Objects.Red #f26522 javax.swing.plaf.ColorUIResource [UI] -Objects.RedStatus #e05555 javax.swing.plaf.ColorUIResource [UI] -Objects.Yellow #f4af3d javax.swing.plaf.ColorUIResource [UI] -Objects.YellowDark #d9a343 javax.swing.plaf.ColorUIResource [UI] +Objects.BlackText #231f20 HSL 345 6 13 javax.swing.plaf.ColorUIResource [UI] +Objects.Blue #40b6e0 HSL 196 72 56 javax.swing.plaf.ColorUIResource [UI] +Objects.Green #62b543 HSL 104 46 49 javax.swing.plaf.ColorUIResource [UI] +Objects.GreenAndroid #a4c639 HSL 74 55 50 javax.swing.plaf.ColorUIResource [UI] +Objects.Grey #9aa7b0 HSL 205 12 65 javax.swing.plaf.ColorUIResource [UI] +Objects.Pink #f98b9e HSL 350 90 76 javax.swing.plaf.ColorUIResource [UI] +Objects.Purple #b99bf8 HSL 259 87 79 javax.swing.plaf.ColorUIResource [UI] +Objects.Red #f26522 HSL 19 89 54 javax.swing.plaf.ColorUIResource [UI] +Objects.RedStatus #e05555 HSL 0 69 61 javax.swing.plaf.ColorUIResource [UI] +Objects.Yellow #f4af3d HSL 37 89 60 javax.swing.plaf.ColorUIResource [UI] +Objects.YellowDark #d9a343 HSL 38 66 56 javax.swing.plaf.ColorUIResource [UI] #---- OptionPane ---- -OptionPane.background #ffdddd javax.swing.plaf.ColorUIResource [UI] +OptionPane.background #ffdddd HSL 0 100 93 javax.swing.plaf.ColorUIResource [UI] OptionPane.border [lazy] 12,12,12,12 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] OptionPane.buttonAreaBorder [lazy] 12,0,0,0 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] OptionPane.buttonClickThreshhold 500 @@ -666,12 +666,12 @@ OptionPane.buttonOrientation 4 OptionPane.buttonPadding 8 OptionPane.errorIcon [lazy] 32,32 com.formdev.flatlaf.icons.FlatOptionPaneErrorIcon [UI] OptionPane.font [active] $defaultFont [UI] -OptionPane.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -OptionPane.icon.errorColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -OptionPane.icon.foreground #ffffff javax.swing.plaf.ColorUIResource [UI] -OptionPane.icon.informationColor #00ff00 javax.swing.plaf.ColorUIResource [UI] -OptionPane.icon.questionColor #0000ff javax.swing.plaf.ColorUIResource [UI] -OptionPane.icon.warningColor #ffcc00 javax.swing.plaf.ColorUIResource [UI] +OptionPane.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +OptionPane.icon.errorColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +OptionPane.icon.foreground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +OptionPane.icon.informationColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +OptionPane.icon.questionColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +OptionPane.icon.warningColor #ffcc00 HSL 48 100 50 javax.swing.plaf.ColorUIResource [UI] OptionPane.iconMessageGap 16 OptionPane.informationIcon [lazy] 32,32 com.formdev.flatlaf.icons.FlatOptionPaneInformationIcon [UI] OptionPane.maxCharactersPerLine 80 @@ -690,37 +690,37 @@ OptionPaneUI com.formdev.flatlaf.ui.FlatOptionPaneUI #---- Panel ---- -Panel.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +Panel.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] Panel.font [active] $defaultFont [UI] -Panel.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +Panel.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] PanelUI com.formdev.flatlaf.ui.FlatPanelUI #---- PasswordField ---- -PasswordField.background #ffffff javax.swing.plaf.ColorUIResource [UI] +PasswordField.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] PasswordField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI] PasswordField.capsLockIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatCapsLockIcon [UI] PasswordField.caretBlinkRate 500 -PasswordField.caretForeground #0000ff javax.swing.plaf.ColorUIResource [UI] -PasswordField.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI] +PasswordField.caretForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +PasswordField.disabledBackground #e0e0e0 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] PasswordField.echoChar '\u2022' -PasswordField.focusedBackground #ffff88 javax.swing.plaf.ColorUIResource [UI] +PasswordField.focusedBackground #ffff88 HSL 60 100 77 javax.swing.plaf.ColorUIResource [UI] PasswordField.font [active] $defaultFont [UI] -PasswordField.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -PasswordField.inactiveBackground #f0f0f0 javax.swing.plaf.ColorUIResource [UI] -PasswordField.inactiveForeground #000088 javax.swing.plaf.ColorUIResource [UI] +PasswordField.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +PasswordField.inactiveBackground #f0f0f0 HSL 0 0 94 javax.swing.plaf.ColorUIResource [UI] +PasswordField.inactiveForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] PasswordField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -PasswordField.placeholderForeground #000088 javax.swing.plaf.ColorUIResource [UI] -PasswordField.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -PasswordField.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] +PasswordField.placeholderForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +PasswordField.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +PasswordField.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] PasswordField.showCapsLock true PasswordFieldUI com.formdev.flatlaf.ui.FlatPasswordFieldUI #---- Popup ---- -Popup.dropShadowColor #00ff00 javax.swing.plaf.ColorUIResource [UI] +Popup.dropShadowColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] Popup.dropShadowInsets -6,6,6,6 javax.swing.plaf.InsetsUIResource [UI] Popup.dropShadowOpacity 0.5 Popup.dropShadowPainted true @@ -728,13 +728,13 @@ Popup.dropShadowPainted true #---- PopupMenu ---- -PopupMenu.background #ffffff javax.swing.plaf.ColorUIResource [UI] -PopupMenu.border [lazy] 4,1,4,1 false com.formdev.flatlaf.ui.FlatPopupMenuBorder [UI] lineColor=#0000ff javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 -PopupMenu.borderColor #0000ff javax.swing.plaf.ColorUIResource [UI] +PopupMenu.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +PopupMenu.border [lazy] 4,1,4,1 false com.formdev.flatlaf.ui.FlatPopupMenuBorder [UI] lineColor=#0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +PopupMenu.borderColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] PopupMenu.borderInsets 4,1,4,1 javax.swing.plaf.InsetsUIResource [UI] PopupMenu.consumeEventOnClose false PopupMenu.font [active] $defaultFont [UI] -PopupMenu.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +PopupMenu.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] #---- PopupMenuSeparator ---- @@ -753,38 +753,38 @@ PopupMenuUI com.formdev.flatlaf.ui.FlatPopupMenuUI #---- ProgressBar ---- ProgressBar.arc 4 -ProgressBar.background #88ff88 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.background #88ff88 HSL 120 100 77 javax.swing.plaf.ColorUIResource [UI] ProgressBar.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] ProgressBar.cellLength 1 ProgressBar.cellSpacing 0 ProgressBar.cycleTime 10000 ProgressBar.font [active] Segoe UI plain 10 javax.swing.plaf.FontUIResource [UI] -ProgressBar.foreground #73737333 20% javax.swing.plaf.ColorUIResource [UI] +ProgressBar.foreground #73737333 20% HSLA 0 0 45 20 javax.swing.plaf.ColorUIResource [UI] ProgressBar.horizontalSize 146,4 javax.swing.plaf.DimensionUIResource [UI] ProgressBar.repaintInterval 15 -ProgressBar.selectionBackground #000088 javax.swing.plaf.ColorUIResource [UI] -ProgressBar.selectionForeground #ff0000 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.selectionBackground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +ProgressBar.selectionForeground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] ProgressBar.verticalSize 4,146 javax.swing.plaf.DimensionUIResource [UI] ProgressBarUI com.formdev.flatlaf.ui.FlatProgressBarUI #---- RadioButton ---- -RadioButton.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +RadioButton.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] RadioButton.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] -RadioButton.darkShadow #696969 javax.swing.plaf.ColorUIResource [UI] -RadioButton.disabledText #000088 javax.swing.plaf.ColorUIResource [UI] +RadioButton.darkShadow #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] +RadioButton.disabledText #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] RadioButton.font [active] $defaultFont [UI] -RadioButton.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -RadioButton.highlight #ffffff javax.swing.plaf.ColorUIResource [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.iconTextGap 4 RadioButton.icon[filled].centerDiameter 5 -RadioButton.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +RadioButton.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] RadioButton.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] RadioButton.rollover true -RadioButton.shadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] +RadioButton.shadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] RadioButton.textIconGap 4 RadioButton.textShiftOffset 0 @@ -792,20 +792,20 @@ RadioButton.textShiftOffset 0 #---- RadioButtonMenuItem ---- RadioButtonMenuItem.acceleratorFont [active] $defaultFont [UI] -RadioButtonMenuItem.acceleratorForeground #ff8888 javax.swing.plaf.ColorUIResource [UI] -RadioButtonMenuItem.acceleratorSelectionForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.acceleratorForeground #ff8888 HSL 0 100 77 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.acceleratorSelectionForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenuItemArrowIcon [UI] -RadioButtonMenuItem.background #ffffff javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.background #ffffff HSL 0 0 100 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 #000088 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.disabledForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.font [active] $defaultFont [UI] -RadioButtonMenuItem.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItem.margin 3,6,3,6 javax.swing.plaf.InsetsUIResource [UI] RadioButtonMenuItem.opaque false -RadioButtonMenuItem.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -RadioButtonMenuItem.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +RadioButtonMenuItem.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] RadioButtonMenuItemUI com.formdev.flatlaf.ui.FlatRadioButtonMenuItemUI @@ -821,7 +821,7 @@ RangeSliderUI com.formdev.flatlaf.jideoss.ui.FlatRangeSliderUI #---- Resizable ---- -Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#0000ff javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 #---- RootPane ---- @@ -846,27 +846,27 @@ RootPaneUI com.formdev.flatlaf.ui.FlatRootPaneUI #---- ScrollBar ---- ScrollBar.allowsAbsolutePositioning true -ScrollBar.background #ccffcc javax.swing.plaf.ColorUIResource [UI] -ScrollBar.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.buttonDisabledArrowColor #ababab javax.swing.plaf.ColorUIResource [UI] -ScrollBar.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.hoverThumbColor #ff0000 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.buttonArrowColor #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.buttonDisabledArrowColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.hoverThumbColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] ScrollBar.hoverThumbWithTrack false -ScrollBar.hoverTrackColor #00ff00 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.hoverTrackColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] ScrollBar.maximumThumbSize 100000,100000 javax.swing.plaf.DimensionUIResource [UI] ScrollBar.minimumThumbSize 10,10 javax.swing.plaf.DimensionUIResource [UI] ScrollBar.pressedThumbWithTrack false ScrollBar.showButtons false ScrollBar.squareButtons false -ScrollBar.thumb #73737333 20% javax.swing.plaf.ColorUIResource [UI] +ScrollBar.thumb #73737333 20% HSLA 0 0 45 20 javax.swing.plaf.ColorUIResource [UI] ScrollBar.thumbArc 0 -ScrollBar.thumbDarkShadow #696969 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.thumbHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] +ScrollBar.thumbDarkShadow #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.thumbHighlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ScrollBar.thumbInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] -ScrollBar.thumbShadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] -ScrollBar.track #88ff88 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.thumbShadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.track #88ff88 HSL 120 100 77 javax.swing.plaf.ColorUIResource [UI] ScrollBar.trackArc 0 -ScrollBar.trackHighlight #696969 javax.swing.plaf.ColorUIResource [UI] +ScrollBar.trackHighlight #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] ScrollBar.trackInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] ScrollBar.width 10 ScrollBarUI com.formdev.flatlaf.ui.FlatScrollBarUI @@ -874,22 +874,41 @@ ScrollBarUI com.formdev.flatlaf.ui.FlatScrollBarUI #---- ScrollPane ---- -ScrollPane.background #88ff88 javax.swing.plaf.ColorUIResource [UI] +ScrollPane.background #88ff88 HSL 120 100 77 javax.swing.plaf.ColorUIResource [UI] ScrollPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI] ScrollPane.fillUpperCorner true ScrollPane.font [active] $defaultFont [UI] -ScrollPane.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +ScrollPane.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] ScrollPane.smoothScrolling true ScrollPaneUI com.formdev.flatlaf.ui.FlatScrollPaneUI +#---- SearchField ---- + +SearchField.clearIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatClearIcon [UI] +SearchField.clearIconColor [lazy] #7f8b9180 50% HSLA 200 8 53 50 javax.swing.plaf.ColorUIResource [UI] +SearchField.clearIconHoverColor [lazy] #7f8b9180 50% HSLA 200 8 53 50 javax.swing.plaf.ColorUIResource [UI] +SearchField.clearIconPressedColor [lazy] #7f8b91cc 80% HSLA 200 8 53 80 javax.swing.plaf.ColorUIResource [UI] +SearchField.clearPressedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatClearIcon [UI] +SearchField.clearRolloverIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatClearIcon [UI] +SearchField.icon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchIcon [UI] +SearchField.popupIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon [UI] +SearchField.popupPressedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon [UI] +SearchField.popupRolloverIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon [UI] +SearchField.pressedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchIcon [UI] +SearchField.rolloverIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatSearchIcon [UI] +SearchField.searchIconColor [lazy] #7f8b91e6 90% HSLA 200 8 53 90 javax.swing.plaf.ColorUIResource [UI] +SearchField.searchIconHoverColor [lazy] #7f8b91b3 70% HSLA 200 8 53 70 javax.swing.plaf.ColorUIResource [UI] +SearchField.searchIconPressedColor [lazy] #7f8b9180 50% HSLA 200 8 53 50 javax.swing.plaf.ColorUIResource [UI] + + #---- Separator ---- -Separator.background #ccffcc javax.swing.plaf.ColorUIResource [UI] -Separator.foreground #00bb00 javax.swing.plaf.ColorUIResource [UI] +Separator.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] +Separator.foreground #00bb00 HSL 120 100 37 javax.swing.plaf.ColorUIResource [UI] Separator.height 20 -Separator.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -Separator.shadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] +Separator.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Separator.shadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] Separator.stripeIndent 5 Separator.stripeWidth 10 SeparatorUI com.formdev.flatlaf.ui.FlatSeparatorUI @@ -897,30 +916,30 @@ SeparatorUI com.formdev.flatlaf.ui.FlatSeparatorUI #---- Slider ---- -Slider.background #ccffcc javax.swing.plaf.ColorUIResource [UI] -Slider.disabledThumbColor #888800 javax.swing.plaf.ColorUIResource [UI] -Slider.disabledTrackColor #ffff88 javax.swing.plaf.ColorUIResource [UI] -Slider.focus #696969 javax.swing.plaf.ColorUIResource [UI] +Slider.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] +Slider.disabledThumbColor #888800 HSL 60 100 27 javax.swing.plaf.ColorUIResource [UI] +Slider.disabledTrackColor #ffff88 HSL 60 100 77 javax.swing.plaf.ColorUIResource [UI] +Slider.focus #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] Slider.focusInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] Slider.focusWidth 4 -Slider.focusedColor #97c3f3 javax.swing.plaf.ColorUIResource [UI] +Slider.focusedColor #97c3f3 HSL 211 79 77 javax.swing.plaf.ColorUIResource [UI] Slider.font [active] $defaultFont [UI] -Slider.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -Slider.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] +Slider.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Slider.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Slider.horizontalSize 200,21 java.awt.Dimension -Slider.hoverThumbColor #0000ff javax.swing.plaf.ColorUIResource [UI] -Slider.hoverTrackColor #4444ff javax.swing.plaf.ColorUIResource [UI] +Slider.hoverThumbColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +Slider.hoverTrackColor #4444ff HSL 240 100 63 javax.swing.plaf.ColorUIResource [UI] Slider.minimumHorizontalSize 36,21 java.awt.Dimension Slider.minimumVerticalSize 21,36 java.awt.Dimension Slider.onlyLeftMouseButtonDrag true -Slider.pressedThumbColor #00ff00 javax.swing.plaf.ColorUIResource [UI] -Slider.pressedTrackColor #88ff88 javax.swing.plaf.ColorUIResource [UI] -Slider.shadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] -Slider.thumbBorderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -Slider.thumbColor #ffaaaa javax.swing.plaf.ColorUIResource [UI] +Slider.pressedThumbColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +Slider.pressedTrackColor #88ff88 HSL 120 100 77 javax.swing.plaf.ColorUIResource [UI] +Slider.shadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] +Slider.thumbBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Slider.thumbColor #ffaaaa HSL 0 100 83 javax.swing.plaf.ColorUIResource [UI] Slider.thumbSize 12,12 javax.swing.plaf.DimensionUIResource [UI] -Slider.tickColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -Slider.trackColor #88ff88 javax.swing.plaf.ColorUIResource [UI] +Slider.tickColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Slider.trackColor #88ff88 HSL 120 100 77 javax.swing.plaf.ColorUIResource [UI] Slider.trackWidth 2 Slider.verticalSize 21,200 java.awt.Dimension SliderUI com.formdev.flatlaf.ui.FlatSliderUI @@ -929,48 +948,48 @@ SliderUI com.formdev.flatlaf.ui.FlatSliderUI #---- Spinner ---- Spinner.arrowButtonSize 16,5 java.awt.Dimension -Spinner.background #ffffff javax.swing.plaf.ColorUIResource [UI] +Spinner.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Spinner.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI] -Spinner.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonBackground #cccccc javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonDisabledArrowColor #ababab javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonHoverArrowColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -Spinner.buttonPressedArrowColor #0000ff javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonArrowColor #666666 HSL 0 0 40 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonBackground #cccccc HSL 0 0 80 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonDisabledArrowColor #ababab HSL 0 0 67 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonHoverArrowColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Spinner.buttonPressedArrowColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] Spinner.buttonStyle button -Spinner.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI] -Spinner.disabledForeground #000088 javax.swing.plaf.ColorUIResource [UI] +Spinner.disabledBackground #e0e0e0 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] +Spinner.disabledForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] Spinner.editorAlignment 11 Spinner.editorBorderPainted false -Spinner.focusedBackground #ffff88 javax.swing.plaf.ColorUIResource [UI] +Spinner.focusedBackground #ffff88 HSL 60 100 77 javax.swing.plaf.ColorUIResource [UI] Spinner.font [active] $defaultFont [UI] -Spinner.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +Spinner.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] Spinner.padding 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] SpinnerUI com.formdev.flatlaf.ui.FlatSpinnerUI #---- SplitPane ---- -SplitPane.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +SplitPane.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] SplitPane.centerOneTouchButtons true SplitPane.continuousLayout true -SplitPane.darkShadow #696969 javax.swing.plaf.ColorUIResource [UI] +SplitPane.darkShadow #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] SplitPane.dividerSize 5 -SplitPane.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] +SplitPane.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] SplitPane.oneTouchButtonOffset [active] 2 SplitPane.oneTouchButtonSize [active] 6 -SplitPane.shadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] +SplitPane.shadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] #---- SplitPaneDivider ---- -SplitPaneDivider.draggingColor #880000 javax.swing.plaf.ColorUIResource [UI] -SplitPaneDivider.gripColor #afafaf javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.draggingColor #880000 HSL 0 100 27 javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.gripColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] SplitPaneDivider.gripDotCount 3 SplitPaneDivider.gripDotSize 3 SplitPaneDivider.gripGap 2 -SplitPaneDivider.oneTouchArrowColor #00ff00 javax.swing.plaf.ColorUIResource [UI] -SplitPaneDivider.oneTouchHoverArrowColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -SplitPaneDivider.oneTouchPressedArrowColor #0000ff javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.oneTouchArrowColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.oneTouchHoverArrowColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +SplitPaneDivider.oneTouchPressedArrowColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] SplitPaneDivider.style grip @@ -982,46 +1001,46 @@ SplitPaneUI com.formdev.flatlaf.ui.FlatSplitPaneUI #---- TabbedPane ---- TabbedPane.arrowType chevron -TabbedPane.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +TabbedPane.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] TabbedPane.buttonArc 6 -TabbedPane.buttonHoverBackground #ffff00 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.buttonHoverBackground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] TabbedPane.buttonInsets 2,1,2,1 javax.swing.plaf.InsetsUIResource [UI] -TabbedPane.buttonPressedBackground #ffc800 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.buttonPressedBackground #ffc800 HSL 47 100 50 javax.swing.plaf.ColorUIResource [UI] TabbedPane.closeArc 999 TabbedPane.closeCrossFilledSize 6.5 TabbedPane.closeCrossLineWidth 2.0 TabbedPane.closeCrossPlainSize 12.0 -TabbedPane.closeForeground #ff0000 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.closeHoverBackground #aa0000 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.closeHoverForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closeForeground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closeHoverBackground #aa0000 HSL 0 100 33 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closeHoverForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TabbedPane.closeIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTabbedPaneCloseIcon [UI] -TabbedPane.closePressedBackground #00ff00 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.closePressedForeground #000000 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closePressedBackground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.closePressedForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] TabbedPane.closeSize 16,16 javax.swing.plaf.DimensionUIResource [UI] -TabbedPane.contentAreaColor #ff0000 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.contentAreaColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] TabbedPane.contentOpaque true TabbedPane.contentSeparatorHeight 1 -TabbedPane.darkShadow #696969 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.disabledForeground #777777 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.disabledUnderlineColor #7a7a7a javax.swing.plaf.ColorUIResource [UI] -TabbedPane.focus #ff0000 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.focusColor #dddddd javax.swing.plaf.ColorUIResource [UI] +TabbedPane.darkShadow #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.disabledForeground #777777 HSL 0 0 47 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.disabledUnderlineColor #7a7a7a HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.focus #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.focusColor #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] TabbedPane.font [active] $defaultFont [UI] -TabbedPane.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] TabbedPane.hasFullBorder false TabbedPane.hiddenTabsNavigation moreTabsButton -TabbedPane.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -TabbedPane.hoverColor #eeeeee javax.swing.plaf.ColorUIResource [UI] +TabbedPane.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.hoverColor #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] TabbedPane.labelShift 1 -TabbedPane.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] TabbedPane.scrollButtonsPlacement both TabbedPane.scrollButtonsPolicy asNeededSingle -TabbedPane.selectedBackground #00ff00 javax.swing.plaf.ColorUIResource [UI] -TabbedPane.selectedForeground #0000ff javax.swing.plaf.ColorUIResource [UI] +TabbedPane.selectedBackground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.selectedForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] TabbedPane.selectedLabelShift -1 TabbedPane.selectedTabPadInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI] TabbedPane.selectionFollowsFocus true -TabbedPane.shadow #ccffcc javax.swing.plaf.ColorUIResource [UI] +TabbedPane.shadow #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] TabbedPane.showTabSeparators false TabbedPane.tabAlignment center TabbedPane.tabAreaAlignment leading @@ -1030,60 +1049,60 @@ TabbedPane.tabHeight 32 TabbedPane.tabInsets 4,12,4,12 javax.swing.plaf.InsetsUIResource [UI] TabbedPane.tabRunOverlay 0 TabbedPane.tabSelectionHeight 3 -TabbedPane.tabSeparatorColor #0000ff javax.swing.plaf.ColorUIResource [UI] +TabbedPane.tabSeparatorColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] TabbedPane.tabSeparatorsFullHeight false TabbedPane.tabWidthMode preferred TabbedPane.tabsOpaque true TabbedPane.tabsOverlapBorder false TabbedPane.tabsPopupPolicy asNeeded TabbedPane.textIconGap 4 -TabbedPane.underlineColor #ffff00 javax.swing.plaf.ColorUIResource [UI] +TabbedPane.underlineColor #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] TabbedPaneUI com.formdev.flatlaf.ui.FlatTabbedPaneUI #---- Table ---- Table.ascendingSortIcon [lazy] 10,5 com.formdev.flatlaf.icons.FlatAscendingSortIcon [UI] -Table.background #fffff0 javax.swing.plaf.ColorUIResource [UI] -Table.cellFocusColor #ff0000 javax.swing.plaf.ColorUIResource [UI] +Table.background #fffff0 HSL 60 100 97 javax.swing.plaf.ColorUIResource [UI] +Table.cellFocusColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] Table.cellMargins 2,3,2,3 javax.swing.plaf.InsetsUIResource [UI] -Table.cellNoFocusBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Default [UI] lineColor=#ff0000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Table.cellNoFocusBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Default [UI] lineColor=#ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 Table.consistentHomeEndKeyBehavior true Table.descendingSortIcon [lazy] 10,5 com.formdev.flatlaf.icons.FlatDescendingSortIcon [UI] -Table.dropCellBackground #ff0000 javax.swing.plaf.ColorUIResource [UI] -Table.dropCellForeground #00ff00 javax.swing.plaf.ColorUIResource [UI] -Table.dropLineColor #0000ff javax.swing.plaf.ColorUIResource [UI] -Table.dropLineShortColor #ffff00 javax.swing.plaf.ColorUIResource [UI] -Table.focusCellBackground #ffffff javax.swing.plaf.ColorUIResource [UI] -Table.focusCellForeground #ff0000 javax.swing.plaf.ColorUIResource [UI] -Table.focusCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Focused [UI] lineColor=#ff0000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 -Table.focusSelectedCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Selected [UI] lineColor=#ff0000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Table.dropCellBackground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Table.dropCellForeground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +Table.dropLineColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +Table.dropLineShortColor #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +Table.focusCellBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +Table.focusCellForeground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Table.focusCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Focused [UI] lineColor=#ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +Table.focusSelectedCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableCellBorder$Selected [UI] lineColor=#ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 Table.font [active] $defaultFont [UI] -Table.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -Table.gridColor #00ffff javax.swing.plaf.ColorUIResource [UI] +Table.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Table.gridColor #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] Table.intercellSpacing 0,0 javax.swing.plaf.DimensionUIResource [UI] Table.rowHeight 25 Table.scrollPaneBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI] -Table.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -Table.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] -Table.selectionInactiveBackground #888888 javax.swing.plaf.ColorUIResource [UI] -Table.selectionInactiveForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +Table.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +Table.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +Table.selectionInactiveBackground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +Table.selectionInactiveForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Table.showHorizontalLines false Table.showVerticalLines false -Table.sortIconColor #ffff00 javax.swing.plaf.ColorUIResource [UI] +Table.sortIconColor #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] #---- TableHeader ---- -TableHeader.background #4444ff javax.swing.plaf.ColorUIResource [UI] -TableHeader.bottomSeparatorColor #00ff00 javax.swing.plaf.ColorUIResource [UI] +TableHeader.background #4444ff HSL 240 100 63 javax.swing.plaf.ColorUIResource [UI] +TableHeader.bottomSeparatorColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] TableHeader.cellBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.FlatTableHeaderBorder [UI] TableHeader.cellMargins 2,3,2,3 javax.swing.plaf.InsetsUIResource [UI] -TableHeader.focusCellBackground #4444ff javax.swing.plaf.ColorUIResource [UI] +TableHeader.focusCellBackground #4444ff HSL 240 100 63 javax.swing.plaf.ColorUIResource [UI] TableHeader.font [active] $defaultFont [UI] -TableHeader.foreground #ffffff javax.swing.plaf.ColorUIResource [UI] +TableHeader.foreground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TableHeader.height 25 -TableHeader.separatorColor #00ff00 javax.swing.plaf.ColorUIResource [UI] +TableHeader.separatorColor #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] TableHeaderUI com.formdev.flatlaf.ui.FlatTableHeaderUI @@ -1094,38 +1113,38 @@ TableUI com.formdev.flatlaf.ui.FlatTableUI #---- TaskPane ---- -TaskPane.background #00ff00 javax.swing.plaf.ColorUIResource [UI] -TaskPane.borderColor #0000ff javax.swing.plaf.ColorUIResource [UI] +TaskPane.background #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +TaskPane.borderColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] TaskPane.contentInsets 10,10,10,10 javax.swing.plaf.InsetsUIResource [UI] -TaskPane.specialTitleBackground #00ffff javax.swing.plaf.ColorUIResource [UI] -TaskPane.specialTitleForeground #444444 javax.swing.plaf.ColorUIResource [UI] -TaskPane.specialTitleOver #dd0000 javax.swing.plaf.ColorUIResource [UI] -TaskPane.titleBackgroundGradientStart #ffff00 javax.swing.plaf.ColorUIResource [UI] -TaskPane.titleForeground #ff00ff javax.swing.plaf.ColorUIResource [UI] -TaskPane.titleOver #0000aa javax.swing.plaf.ColorUIResource [UI] +TaskPane.specialTitleBackground #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] +TaskPane.specialTitleForeground #444444 HSL 0 0 27 javax.swing.plaf.ColorUIResource [UI] +TaskPane.specialTitleOver #dd0000 HSL 0 100 43 javax.swing.plaf.ColorUIResource [UI] +TaskPane.titleBackgroundGradientStart #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +TaskPane.titleForeground #ff00ff HSL 300 100 50 javax.swing.plaf.ColorUIResource [UI] +TaskPane.titleOver #0000aa HSL 240 100 33 javax.swing.plaf.ColorUIResource [UI] #---- TaskPaneContainer ---- -TaskPaneContainer.background #ff8888 javax.swing.plaf.ColorUIResource [UI] +TaskPaneContainer.background #ff8888 HSL 0 100 77 javax.swing.plaf.ColorUIResource [UI] TaskPaneContainer.border [lazy] 10,10,10,10 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] #---- TextArea ---- -TextArea.background #ffffff javax.swing.plaf.ColorUIResource [UI] +TextArea.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TextArea.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] TextArea.caretBlinkRate 500 -TextArea.caretForeground #0000ff javax.swing.plaf.ColorUIResource [UI] -TextArea.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI] -TextArea.focusedBackground #ffff88 javax.swing.plaf.ColorUIResource [UI] +TextArea.caretForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +TextArea.disabledBackground #e0e0e0 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] +TextArea.focusedBackground #ffff88 HSL 60 100 77 javax.swing.plaf.ColorUIResource [UI] TextArea.font [active] $defaultFont [UI] -TextArea.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -TextArea.inactiveBackground #f0f0f0 javax.swing.plaf.ColorUIResource [UI] -TextArea.inactiveForeground #000088 javax.swing.plaf.ColorUIResource [UI] +TextArea.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +TextArea.inactiveBackground #f0f0f0 HSL 0 0 94 javax.swing.plaf.ColorUIResource [UI] +TextArea.inactiveForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] TextArea.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextArea.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -TextArea.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] +TextArea.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +TextArea.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] TextAreaUI com.formdev.flatlaf.ui.FlatTextAreaUI @@ -1138,65 +1157,65 @@ TextComponent.selectAllOnMouseClick false #---- TextField ---- -TextField.background #ffffff javax.swing.plaf.ColorUIResource [UI] +TextField.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TextField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI] TextField.caretBlinkRate 500 -TextField.caretForeground #0000ff javax.swing.plaf.ColorUIResource [UI] -TextField.darkShadow #696969 javax.swing.plaf.ColorUIResource [UI] -TextField.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI] -TextField.focusedBackground #ffff88 javax.swing.plaf.ColorUIResource [UI] +TextField.caretForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +TextField.darkShadow #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] +TextField.disabledBackground #e0e0e0 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] +TextField.focusedBackground #ffff88 HSL 60 100 77 javax.swing.plaf.ColorUIResource [UI] TextField.font [active] $defaultFont [UI] -TextField.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -TextField.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -TextField.inactiveBackground #f0f0f0 javax.swing.plaf.ColorUIResource [UI] -TextField.inactiveForeground #000088 javax.swing.plaf.ColorUIResource [UI] -TextField.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +TextField.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +TextField.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +TextField.inactiveBackground #f0f0f0 HSL 0 0 94 javax.swing.plaf.ColorUIResource [UI] +TextField.inactiveForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +TextField.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] TextField.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextField.placeholderForeground #000088 javax.swing.plaf.ColorUIResource [UI] -TextField.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -TextField.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] -TextField.shadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] +TextField.placeholderForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +TextField.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +TextField.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +TextField.shadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] TextFieldUI com.formdev.flatlaf.ui.FlatTextFieldUI #---- TextPane ---- -TextPane.background #ffffff javax.swing.plaf.ColorUIResource [UI] +TextPane.background #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TextPane.border [lazy] 0,0,0,0 false com.formdev.flatlaf.ui.FlatMarginBorder [UI] TextPane.caretBlinkRate 500 -TextPane.caretForeground #0000ff javax.swing.plaf.ColorUIResource [UI] -TextPane.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI] -TextPane.focusedBackground #ffff88 javax.swing.plaf.ColorUIResource [UI] +TextPane.caretForeground #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +TextPane.disabledBackground #e0e0e0 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] +TextPane.focusedBackground #ffff88 HSL 60 100 77 javax.swing.plaf.ColorUIResource [UI] TextPane.font [active] $defaultFont [UI] -TextPane.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -TextPane.inactiveBackground #f0f0f0 javax.swing.plaf.ColorUIResource [UI] -TextPane.inactiveForeground #000088 javax.swing.plaf.ColorUIResource [UI] +TextPane.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +TextPane.inactiveBackground #f0f0f0 HSL 0 0 94 javax.swing.plaf.ColorUIResource [UI] +TextPane.inactiveForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] TextPane.margin 2,6,2,6 javax.swing.plaf.InsetsUIResource [UI] -TextPane.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -TextPane.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] +TextPane.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +TextPane.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI #---- TitlePane ---- -TitlePane.background #00ff00 javax.swing.plaf.ColorUIResource [UI] -TitlePane.borderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] +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.buttonMaximizedHeight 22 TitlePane.buttonSize 44,30 javax.swing.plaf.DimensionUIResource [UI] TitlePane.centerTitle false TitlePane.centerTitleIfMenuBarEmbedded true -TitlePane.closeHoverBackground #e81123 javax.swing.plaf.ColorUIResource [UI] -TitlePane.closeHoverForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeHoverBackground #e81123 HSL 355 86 49 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closeHoverForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TitlePane.closeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowCloseIcon [UI] -TitlePane.closePressedBackground #e8112399 60% javax.swing.plaf.ColorUIResource [UI] -TitlePane.closePressedForeground #ffffff javax.swing.plaf.ColorUIResource [UI] -TitlePane.foreground #0000ff javax.swing.plaf.ColorUIResource [UI] +TitlePane.closePressedBackground #e8112399 60% HSLA 355 86 49 60 javax.swing.plaf.ColorUIResource [UI] +TitlePane.closePressedForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [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) 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 #008800 javax.swing.plaf.ColorUIResource [UI] -TitlePane.inactiveForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +TitlePane.inactiveBackground #008800 HSL 120 100 27 javax.swing.plaf.ColorUIResource [UI] +TitlePane.inactiveForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] TitlePane.maximizeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowMaximizeIcon [UI] TitlePane.menuBarEmbedded true TitlePane.menuBarTitleGap 20 @@ -1208,9 +1227,9 @@ TitlePane.useWindowDecorations true #---- TitledBorder ---- -TitledBorder.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#ff00ff javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 +TitledBorder.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#ff00ff HSL 300 100 50 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 TitledBorder.font [active] $defaultFont [UI] -TitledBorder.titleColor #ff00ff javax.swing.plaf.ColorUIResource [UI] +TitledBorder.titleColor #ff00ff HSL 300 100 50 javax.swing.plaf.ColorUIResource [UI] #---- TitledPanel ---- @@ -1220,59 +1239,59 @@ TitledPanelUI com.formdev.flatlaf.swingx.ui.FlatTitledPanelUI #---- ToggleButton ---- -ToggleButton.background #ddddff javax.swing.plaf.ColorUIResource [UI] +ToggleButton.background #ddddff HSL 240 100 93 javax.swing.plaf.ColorUIResource [UI] ToggleButton.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI] -ToggleButton.darkShadow #696969 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.disabledSelectedBackground #44dd44 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.disabledText #000088 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.focusedBackground #00ffff javax.swing.plaf.ColorUIResource [UI] +ToggleButton.darkShadow #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.disabledBackground #e0e0e0 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.disabledSelectedBackground #44dd44 HSL 120 69 57 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.disabledText #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.focusedBackground #00ffff HSL 180 100 50 javax.swing.plaf.ColorUIResource [UI] ToggleButton.font [active] $defaultFont [UI] -ToggleButton.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] -ToggleButton.hoverBackground #ffff00 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.hoverBackground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] ToggleButton.iconTextGap 4 -ToggleButton.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] ToggleButton.margin 2,14,2,14 javax.swing.plaf.InsetsUIResource [UI] -ToggleButton.pressedBackground #ffc800 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.pressedBackground #ffc800 HSL 47 100 50 javax.swing.plaf.ColorUIResource [UI] ToggleButton.rollover true -ToggleButton.selectedBackground #44ff44 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.selectedForeground #000000 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.shadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.tab.disabledUnderlineColor #7a7a7a javax.swing.plaf.ColorUIResource [UI] -ToggleButton.tab.focusBackground #dddddd javax.swing.plaf.ColorUIResource [UI] -ToggleButton.tab.hoverBackground #eeeeee javax.swing.plaf.ColorUIResource [UI] -ToggleButton.tab.selectedBackground #00ff00 javax.swing.plaf.ColorUIResource [UI] -ToggleButton.tab.underlineColor #ffff00 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.selectedBackground #44ff44 HSL 120 100 63 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.selectedForeground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.shadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.tab.disabledUnderlineColor #7a7a7a HSL 0 0 48 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.tab.focusBackground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.tab.hoverBackground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.tab.selectedBackground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.tab.underlineColor #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] ToggleButton.tab.underlineHeight 2 ToggleButton.textIconGap 4 ToggleButton.textShiftOffset 0 -ToggleButton.toolbar.hoverBackground #ffffff javax.swing.plaf.ColorUIResource [UI] -ToggleButton.toolbar.pressedBackground #eeeeee javax.swing.plaf.ColorUIResource [UI] -ToggleButton.toolbar.selectedBackground #dddddd javax.swing.plaf.ColorUIResource [UI] +ToggleButton.toolbar.hoverBackground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.toolbar.pressedBackground #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI] +ToggleButton.toolbar.selectedBackground #dddddd HSL 0 0 87 javax.swing.plaf.ColorUIResource [UI] ToggleButtonUI com.formdev.flatlaf.ui.FlatToggleButtonUI #---- ToolBar ---- -ToolBar.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +ToolBar.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] ToolBar.border [lazy] 2,2,2,2 false com.formdev.flatlaf.ui.FlatToolBarBorder [UI] ToolBar.borderMargins 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI] -ToolBar.darkShadow #696969 javax.swing.plaf.ColorUIResource [UI] -ToolBar.dockingBackground #ccffcc javax.swing.plaf.ColorUIResource [UI] -ToolBar.dockingForeground #ff0000 javax.swing.plaf.ColorUIResource [UI] -ToolBar.floatingBackground #ccffcc javax.swing.plaf.ColorUIResource [UI] -ToolBar.floatingForeground #000088 javax.swing.plaf.ColorUIResource [UI] +ToolBar.darkShadow #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] +ToolBar.dockingBackground #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] +ToolBar.dockingForeground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +ToolBar.floatingBackground #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] +ToolBar.floatingForeground #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] ToolBar.focusableButtons true ToolBar.font [active] $defaultFont [UI] -ToolBar.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -ToolBar.gripColor #afafaf javax.swing.plaf.ColorUIResource [UI] -ToolBar.highlight #ffffff javax.swing.plaf.ColorUIResource [UI] +ToolBar.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +ToolBar.gripColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +ToolBar.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] ToolBar.isRollover true -ToolBar.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI] -ToolBar.separatorColor #00bb00 javax.swing.plaf.ColorUIResource [UI] +ToolBar.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] +ToolBar.separatorColor #00bb00 HSL 120 100 37 javax.swing.plaf.ColorUIResource [UI] ToolBar.separatorWidth 7 -ToolBar.shadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] +ToolBar.shadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] ToolBar.spacingBorder [lazy] 1,2,1,2 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] @@ -1288,10 +1307,10 @@ ToolBarUI com.formdev.flatlaf.ui.FlatToolBarUI #---- ToolTip ---- -ToolTip.background #eeeeff 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.background #eeeeff HSL 240 100 97 javax.swing.plaf.ColorUIResource [UI] +ToolTip.border [lazy] line: #000000 HSL 0 0 0 java.awt.Color 1 false 1,1,1,1 true javax.swing.plaf.BorderUIResource$LineBorderUIResource [UI] ToolTip.font [active] $defaultFont [UI] -ToolTip.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +ToolTip.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] #---- ToolTipManager ---- @@ -1306,26 +1325,26 @@ ToolTipUI com.formdev.flatlaf.ui.FlatToolTipUI #---- Tree ---- -Tree.background #fff0ff javax.swing.plaf.ColorUIResource [UI] +Tree.background #fff0ff HSL 300 100 97 javax.swing.plaf.ColorUIResource [UI] Tree.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatEmptyBorder [UI] Tree.changeSelectionWithFocus true Tree.closedIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTreeClosedIcon [UI] Tree.collapsedIcon [lazy] 11,11 com.formdev.flatlaf.icons.FlatTreeCollapsedIcon [UI] Tree.drawsFocusBorderAroundIcon false -Tree.dropCellBackground #ff0000 javax.swing.plaf.ColorUIResource [UI] -Tree.dropCellForeground #00ff00 javax.swing.plaf.ColorUIResource [UI] -Tree.dropLineColor #0000ff javax.swing.plaf.ColorUIResource [UI] -Tree.editorBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatLineBorder [UI] lineColor=#ff0000 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000 -Tree.editorBorderSelectionColor #0000ff javax.swing.plaf.ColorUIResource [UI] +Tree.dropCellBackground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Tree.dropCellForeground #00ff00 HSL 120 100 50 javax.swing.plaf.ColorUIResource [UI] +Tree.dropLineColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] +Tree.editorBorder [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 +Tree.editorBorderSelectionColor #0000ff HSL 240 100 50 javax.swing.plaf.ColorUIResource [UI] Tree.expandedIcon [lazy] 11,11 com.formdev.flatlaf.icons.FlatTreeExpandedIcon [UI] Tree.font [active] $defaultFont [UI] -Tree.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] -Tree.hash #ff0000 javax.swing.plaf.ColorUIResource [UI] -Tree.icon.closedColor #afafaf javax.swing.plaf.ColorUIResource [UI] -Tree.icon.collapsedColor #afafaf javax.swing.plaf.ColorUIResource [UI] -Tree.icon.expandedColor #afafaf javax.swing.plaf.ColorUIResource [UI] -Tree.icon.leafColor #afafaf javax.swing.plaf.ColorUIResource [UI] -Tree.icon.openColor #afafaf javax.swing.plaf.ColorUIResource [UI] +Tree.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Tree.hash #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.closedColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.collapsedColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.expandedColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.leafColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] +Tree.icon.openColor #afafaf HSL 0 0 69 javax.swing.plaf.ColorUIResource [UI] Tree.leafIcon [lazy] 16,16 com.formdev.flatlaf.icons.FlatTreeLeafIcon [UI] Tree.leftChildIndent 7 Tree.lineTypeDashed false @@ -1337,14 +1356,14 @@ Tree.repaintWholeRow true Tree.rightChildIndent 11 Tree.rowHeight 0 Tree.scrollsOnExpand true -Tree.selectionBackground #00aa00 javax.swing.plaf.ColorUIResource [UI] -Tree.selectionBorderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] -Tree.selectionForeground #ffff00 javax.swing.plaf.ColorUIResource [UI] -Tree.selectionInactiveBackground #888888 javax.swing.plaf.ColorUIResource [UI] -Tree.selectionInactiveForeground #ffffff javax.swing.plaf.ColorUIResource [UI] +Tree.selectionBackground #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionBorderColor #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionForeground #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionInactiveBackground #888888 HSL 0 0 53 javax.swing.plaf.ColorUIResource [UI] +Tree.selectionInactiveForeground #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] Tree.showCellFocusIndicator false -Tree.textBackground #fff0ff javax.swing.plaf.ColorUIResource [UI] -Tree.textForeground #ff0000 javax.swing.plaf.ColorUIResource [UI] +Tree.textBackground #fff0ff HSL 300 100 97 javax.swing.plaf.ColorUIResource [UI] +Tree.textForeground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] Tree.timeFactor 1000 Tree.wideSelection true TreeUI com.formdev.flatlaf.ui.FlatTreeUI @@ -1362,25 +1381,25 @@ TristateCheckBox.setMixed.clientProperty length=2 [Ljava.lang.Object; #---- Viewport ---- -Viewport.background #ccffcc javax.swing.plaf.ColorUIResource [UI] +Viewport.background #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] Viewport.font [active] $defaultFont [UI] -Viewport.foreground #ff0000 javax.swing.plaf.ColorUIResource [UI] +Viewport.foreground #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] ViewportUI com.formdev.flatlaf.ui.FlatViewportUI #---- ---- -activeCaption #99b4d1 javax.swing.plaf.ColorUIResource [UI] -activeCaptionBorder #99b4d1 javax.swing.plaf.ColorUIResource [UI] -activeCaptionText #ff0000 javax.swing.plaf.ColorUIResource [UI] -control #ccffcc javax.swing.plaf.ColorUIResource [UI] -controlDkShadow #696969 javax.swing.plaf.ColorUIResource [UI] -controlHighlight #e3e3e3 javax.swing.plaf.ColorUIResource [UI] -controlLtHighlight #ffffff javax.swing.plaf.ColorUIResource [UI] -controlShadow #a0a0a0 javax.swing.plaf.ColorUIResource [UI] -controlText #ff0000 javax.swing.plaf.ColorUIResource [UI] +activeCaption #99b4d1 HSL 211 38 71 javax.swing.plaf.ColorUIResource [UI] +activeCaptionBorder #99b4d1 HSL 211 38 71 javax.swing.plaf.ColorUIResource [UI] +activeCaptionText #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +control #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] +controlDkShadow #696969 HSL 0 0 41 javax.swing.plaf.ColorUIResource [UI] +controlHighlight #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI] +controlLtHighlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +controlShadow #a0a0a0 HSL 0 0 63 javax.swing.plaf.ColorUIResource [UI] +controlText #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] defaultFont Segoe UI plain 12 javax.swing.plaf.FontUIResource [UI] -desktop #ffffff javax.swing.plaf.ColorUIResource [UI] +desktop #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] #---- html ---- @@ -1391,11 +1410,11 @@ html.pendingImage [lazy] 38,38 sun.swing.ImageIconUIResource [UI #---- ---- -inactiveCaption #bfcddb javax.swing.plaf.ColorUIResource [UI] -inactiveCaptionBorder #bfcddb javax.swing.plaf.ColorUIResource [UI] -inactiveCaptionText #ff0000 javax.swing.plaf.ColorUIResource [UI] -info #eeeeff javax.swing.plaf.ColorUIResource [UI] -infoText #ff0000 javax.swing.plaf.ColorUIResource [UI] +inactiveCaption #bfcddb HSL 210 28 80 javax.swing.plaf.ColorUIResource [UI] +inactiveCaptionBorder #bfcddb HSL 210 28 80 javax.swing.plaf.ColorUIResource [UI] +inactiveCaptionText #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +info #eeeeff HSL 240 100 97 javax.swing.plaf.ColorUIResource [UI] +infoText #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] #---- laf ---- @@ -1406,9 +1425,9 @@ laf.scaleFactor [active] 1.0 #---- ---- -menu #ccffcc javax.swing.plaf.ColorUIResource [UI] -menuText #ff0000 javax.swing.plaf.ColorUIResource [UI] -scrollbar #88ff88 javax.swing.plaf.ColorUIResource [UI] +menu #ccffcc HSL 120 100 90 javax.swing.plaf.ColorUIResource [UI] +menuText #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +scrollbar #88ff88 HSL 120 100 77 javax.swing.plaf.ColorUIResource [UI] #---- swingx/TaskPane ---- @@ -1418,11 +1437,11 @@ swingx/TaskPaneUI com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI #---- ---- -text #ffffff javax.swing.plaf.ColorUIResource [UI] -textHighlight #00aa00 javax.swing.plaf.ColorUIResource [UI] -textHighlightText #ffff00 javax.swing.plaf.ColorUIResource [UI] -textInactiveText #000088 javax.swing.plaf.ColorUIResource [UI] -textText #ff0000 javax.swing.plaf.ColorUIResource [UI] -window #ccffcc javax.swing.plaf.ColorUIResource [UI] -windowBorder #ff0000 javax.swing.plaf.ColorUIResource [UI] -windowText #ff0000 javax.swing.plaf.ColorUIResource [UI] +text #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI] +textHighlight #00aa00 HSL 120 100 33 javax.swing.plaf.ColorUIResource [UI] +textHighlightText #ffff00 HSL 60 100 50 javax.swing.plaf.ColorUIResource [UI] +textInactiveText #000088 HSL 240 100 27 javax.swing.plaf.ColorUIResource [UI] +textText #ff0000 HSL 0 100 50 javax.swing.plaf.ColorUIResource [UI] +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] diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponents2Test.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponents2Test.java index 3546933c..0b7d09c3 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponents2Test.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponents2Test.java @@ -24,6 +24,7 @@ import java.awt.EventQueue; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; +import java.awt.event.*; import java.io.File; import java.util.ArrayList; import java.util.HashMap; @@ -39,6 +40,7 @@ import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreePath; import com.formdev.flatlaf.FlatClientProperties; import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.icons.FlatMenuArrowIcon; @@ -69,6 +71,7 @@ public class FlatComponents2Test SwingUtilities.invokeLater( () -> { FlatTestFrame frame = FlatTestFrame.create( args, "FlatComponents2Test" ); frame.useApplyComponentOrientation = true; + UIManager.put( "FlatLaf.experimental.tree.widePathForLocation", true ); frame.showFrame( FlatComponents2Test::new ); } ); } @@ -378,6 +381,23 @@ public class FlatComponents2Test tree.putClientProperty( FlatClientProperties.TREE_PAINT_SELECTION, paintSelection ); } + private void treeMouseClicked( MouseEvent e ) { + JTree tree = (JTree) e.getSource(); + int x = e.getX(); + int y = e.getY(); + + TreePath path = tree.getPathForLocation( x, y ); + TreePath closestPath = tree.getClosestPathForLocation( x, y ); + int row = tree.getRowForLocation( x, y ); + int closestRow = tree.getClosestRowForLocation( x, y ); + + System.out.println( "---- tree mouseClicked " + x + "," + y + " ----" ); + System.out.println( " path: " + path ); + System.out.println( "closest path: " + closestPath ); + System.out.println( " row: " + row ); + System.out.println( "closest row: " + closestRow ); + } + @Override public void applyComponentOrientation( ComponentOrientation o ) { super.applyComponentOrientation( o ); @@ -605,6 +625,12 @@ public class FlatComponents2Test //---- tree1 ---- tree1.setShowsRootHandles(true); tree1.setEditable(true); + tree1.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + treeMouseClicked(e); + } + }); scrollPane3.setViewportView(tree1); } add(scrollPane3, "cell 1 2"); @@ -614,6 +640,12 @@ public class FlatComponents2Test //---- tree2 ---- tree2.setEnabled(false); + tree2.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + treeMouseClicked(e); + } + }); scrollPane4.setViewportView(tree2); } add(scrollPane4, "cell 2 2"); @@ -655,12 +687,28 @@ public class FlatComponents2Test //======== scrollPane5 ======== { + + //---- xTree1 ---- + xTree1.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + treeMouseClicked(e); + } + }); scrollPane5.setViewportView(xTree1); } add(scrollPane5, "cell 1 3"); //======== scrollPane6 ======== { + + //---- checkBoxTree1 ---- + checkBoxTree1.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + treeMouseClicked(e); + } + }); scrollPane6.setViewportView(checkBoxTree1); } add(scrollPane6, "cell 2 3"); diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponents2Test.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponents2Test.jfd index caa82559..8cf889d1 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponents2Test.jfd +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponents2Test.jfd @@ -1,4 +1,4 @@ -JFDML JFormDesigner: "7.0.3.1.342" Java: "16" encoding: "UTF-8" +JFDML JFormDesigner: "7.0.4.0.360" Java: "16" encoding: "UTF-8" new FormModel { contentType: "form/swing" @@ -185,6 +185,7 @@ new FormModel { auxiliary() { "JavaCodeGenerator.variableLocal": false } + addEvent( new FormEvent( "java.awt.event.MouseListener", "mouseClicked", "treeMouseClicked", true ) ) } ) }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 1 2" @@ -197,6 +198,7 @@ new FormModel { auxiliary() { "JavaCodeGenerator.variableLocal": false } + addEvent( new FormEvent( "java.awt.event.MouseListener", "mouseClicked", "treeMouseClicked", true ) ) } ) }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 2 2" @@ -255,6 +257,7 @@ new FormModel { auxiliary() { "JavaCodeGenerator.variableLocal": false } + addEvent( new FormEvent( "java.awt.event.MouseListener", "mouseClicked", "treeMouseClicked", true ) ) } ) }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 1 3" @@ -266,6 +269,7 @@ new FormModel { auxiliary() { "JavaCodeGenerator.variableLocal": false } + addEvent( new FormEvent( "java.awt.event.MouseListener", "mouseClicked", "treeMouseClicked", true ) ) } ) }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 2 3" diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatInternalFrameTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatInternalFrameTest.java index 5ebe5c84..75a328ae 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatInternalFrameTest.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatInternalFrameTest.java @@ -89,6 +89,15 @@ public class FlatInternalFrameTest }; internalFrame.setContentPane( panel ); + if( minSizeCheckBox.isSelected() ) { + internalFrame.setMinimumSize( new Dimension( 300, 150 ) ); + panel.add( new JLabel( "min 300,150" ) ); + } + if( maxSizeCheckBox.isSelected() ) { + internalFrame.setMaximumSize( new Dimension( 400, 200 ) ); + panel.add( new JLabel( "max 400,200" ) ); + } + if( !palette.getComponentOrientation().isLeftToRight() ) internalFrame.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT ); @@ -123,6 +132,8 @@ public class FlatInternalFrameTest maximizableCheckBox = new JCheckBox(); iconCheckBox = new FlatTriStateCheckBox(); menuBarCheckBox = new JCheckBox(); + minSizeCheckBox = new JCheckBox(); + maxSizeCheckBox = new JCheckBox(); titleLabel = new JLabel(); titleField = new JTextField(); createFrameButton = new JButton(); @@ -158,6 +169,8 @@ public class FlatInternalFrameTest "[fill]0" + "[]0" + "[]0" + + "[]0" + + "[]0" + "[]unrel" + "[]unrel")); @@ -189,18 +202,26 @@ public class FlatInternalFrameTest menuBarCheckBox.setText("Menu Bar"); paletteContentPane.add(menuBarCheckBox, "cell 1 2"); + //---- minSizeCheckBox ---- + minSizeCheckBox.setText("Minimum size 300,150"); + paletteContentPane.add(minSizeCheckBox, "cell 0 3 2 1,alignx left,growx 0"); + + //---- maxSizeCheckBox ---- + maxSizeCheckBox.setText("Maximum size 400,200"); + paletteContentPane.add(maxSizeCheckBox, "cell 0 4 2 1,alignx left,growx 0"); + //---- titleLabel ---- titleLabel.setText("Frame title:"); - paletteContentPane.add(titleLabel, "cell 0 3"); - paletteContentPane.add(titleField, "cell 1 3"); + paletteContentPane.add(titleLabel, "cell 0 5"); + paletteContentPane.add(titleField, "cell 1 5"); //---- createFrameButton ---- createFrameButton.setText("Create Frame"); createFrameButton.addActionListener(e -> createInternalFrame()); - paletteContentPane.add(createFrameButton, "cell 1 4,alignx right,growx 0"); + paletteContentPane.add(createFrameButton, "cell 1 6,alignx right,growx 0"); } desktopPane.add(palette, JLayeredPane.PALETTE_LAYER); - palette.setBounds(15, 25, 275, 185); + palette.setBounds(15, 25, 275, 275); } add(desktopPane, "cell 0 0,width 600,height 600"); @@ -234,6 +255,8 @@ public class FlatInternalFrameTest private JCheckBox maximizableCheckBox; private FlatTriStateCheckBox iconCheckBox; private JCheckBox menuBarCheckBox; + private JCheckBox minSizeCheckBox; + private JCheckBox maxSizeCheckBox; private JLabel titleLabel; private JTextField titleField; private JButton createFrameButton; diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatInternalFrameTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatInternalFrameTest.jfd index 34cb827d..c35083f0 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatInternalFrameTest.jfd +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatInternalFrameTest.jfd @@ -1,4 +1,4 @@ -JFDML JFormDesigner: "7.0.3.1.342" Java: "16" encoding: "UTF-8" +JFDML JFormDesigner: "7.0.4.0.360" Java: "16" encoding: "UTF-8" new FormModel { contentType: "form/swing" @@ -14,7 +14,7 @@ new FormModel { add( new FormContainer( "javax.swing.JInternalFrame", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) { "$layoutConstraints": "hidemode 3" "$columnConstraints": "[fill][fill]" - "$rowConstraints": "[fill]0[]0[]0[]unrel[]unrel" + "$rowConstraints": "[fill]0[]0[]0[]0[]0[]unrel[]unrel" } ) { name: "palette" "visible": true @@ -62,29 +62,41 @@ new FormModel { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 1 2" } ) + add( new FormComponent( "javax.swing.JCheckBox" ) { + name: "minSizeCheckBox" + "text": "Minimum size 300,150" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 3 2 1,alignx left,growx 0" + } ) + add( new FormComponent( "javax.swing.JCheckBox" ) { + name: "maxSizeCheckBox" + "text": "Maximum size 400,200" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 4 2 1,alignx left,growx 0" + } ) add( new FormComponent( "javax.swing.JLabel" ) { name: "titleLabel" "text": "Frame title:" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 0 3" + "value": "cell 0 5" } ) add( new FormComponent( "javax.swing.JTextField" ) { name: "titleField" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 3" + "value": "cell 1 5" } ) add( new FormComponent( "javax.swing.JButton" ) { name: "createFrameButton" "text": "Create Frame" addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "createInternalFrame", false ) ) }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 4,alignx right,growx 0" + "value": "cell 1 6,alignx right,growx 0" } ) }, new FormLayoutConstraints( null ) { "x": 15 "y": 25 "width": 275 - "height": 185 + "height": 275 "layer": 100 } ) }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { 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 new file mode 100644 index 00000000..05788bc9 --- /dev/null +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPopupTest.java @@ -0,0 +1,361 @@ +/* + * Copyright 2021 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.*; +import java.awt.Point; +import javax.swing.*; +import com.formdev.flatlaf.util.Animator; +import net.miginfocom.swing.*; + +/** + * @author Karl Tauber + */ +public class FlatPopupTest + extends FlatTestPanel +{ + private Popup popup; + + public static void main( String[] args ) { + SwingUtilities.invokeLater( () -> { + FlatTestFrame frame = FlatTestFrame.create( args, "FlatPopupTest" ); + frame.showFrame( FlatPopupTest::new ); + } ); + } + + FlatPopupTest() { + initComponents(); + } + + private void showPopupMenu() { + popupMenu1.show( showPopupMenuButton, 0, showPopupMenuButton.getHeight() ); + } + + private void showLargePopupMenu() { + popupMenu2.show( showLargePopupMenuButton, 0, showLargePopupMenuButton.getHeight() ); + } + + private void showPopup() { + showPopup( 0, 0 ); + } + + private void showPopup( int xoffset, int yoffset ) { + hidePopup(); + + Point pt = showPopupButton.getLocationOnScreen(); + popup = PopupFactory.getSharedInstance().getPopup( showPopupButton, popupPanel, + pt.x + xoffset, pt.y + showPopupButton.getHeight() + yoffset ); + popup.show(); + } + + private void hidePopup() { + if( popup == null ) + return; + + popup.hide(); + popup = null; + } + + private void movePopupDown() { + movePopup( 0, 600 ); + } + + private void movePopupRight() { + movePopup( 600, 0 ); + } + + private void movePopup( int xoffset, int yoffset ) { + showPopup(); + + Animator animator = new Animator( 1000, fraction -> { + System.out.println(fraction); + showPopup( (int) (fraction * xoffset), (int) (fraction * yoffset) ); + } ); + animator.start(); + } + + private void initComponents() { + // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents + label1 = new JLabel(); + label2 = new JLabel(); + showPopupMenuButton = new JButton(); + showLargePopupMenuButton = new JButton(); + showPopupButton = new JButton(); + hidePopupButton = new JButton(); + movePopupDownButton = new JButton(); + movePopuprightButton = new JButton(); + label4 = new JLabel(); + popupMenu1 = new JPopupMenu(); + menuItem1 = new JMenuItem(); + menuItem2 = new JMenuItem(); + menu1 = new JMenu(); + menuItem3 = new JMenuItem(); + menuItem4 = new JMenuItem(); + popupPanel = new JPanel(); + label3 = new JLabel(); + popupMenu2 = new JPopupMenu(); + menuItem5 = new JMenuItem(); + menuItem6 = new JMenuItem(); + menuItem7 = new JMenuItem(); + menuItem8 = new JMenuItem(); + menuItem9 = new JMenuItem(); + menuItem10 = new JMenuItem(); + menuItem11 = new JMenuItem(); + menuItem12 = new JMenuItem(); + menuItem13 = new JMenuItem(); + menuItem14 = new JMenuItem(); + menuItem15 = new JMenuItem(); + menuItem16 = new JMenuItem(); + menuItem17 = new JMenuItem(); + menuItem18 = new JMenuItem(); + menuItem19 = new JMenuItem(); + menuItem20 = new JMenuItem(); + menuItem21 = new JMenuItem(); + menu2 = new JMenu(); + menuItem22 = new JMenuItem(); + menuItem23 = new JMenuItem(); + + //======== this ======== + setLayout(new MigLayout( + "ltr,insets dialog,hidemode 3", + // columns + "[fill]" + + "[fill]" + + "[fill]" + + "[fill]", + // rows + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]")); + + //---- label1 ---- + label1.setText("Label with light-weight tooltip"); + label1.setToolTipText("some tip"); + add(label1, "cell 0 0"); + + //---- label2 ---- + label2.setText("Label with heavy-weight tooltip"); + label2.setToolTipText("some tip\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25"); + add(label2, "cell 0 1"); + + //---- showPopupMenuButton ---- + showPopupMenuButton.setText("show light-weight JPopupMenu"); + showPopupMenuButton.addActionListener(e -> showPopupMenu()); + add(showPopupMenuButton, "cell 0 2"); + + //---- showLargePopupMenuButton ---- + showLargePopupMenuButton.setText("show heavy-weight JPopupMenu"); + showLargePopupMenuButton.addActionListener(e -> showLargePopupMenu()); + add(showLargePopupMenuButton, "cell 0 3"); + + //---- showPopupButton ---- + showPopupButton.setText("show medium-weight popup"); + showPopupButton.addActionListener(e -> showPopup()); + add(showPopupButton, "cell 0 4"); + + //---- hidePopupButton ---- + hidePopupButton.setText("hide"); + hidePopupButton.addActionListener(e -> hidePopup()); + add(hidePopupButton, "cell 1 4"); + + //---- movePopupDownButton ---- + movePopupDownButton.setText("move down"); + movePopupDownButton.addActionListener(e -> movePopupDown()); + add(movePopupDownButton, "cell 2 4"); + + //---- movePopuprightButton ---- + movePopuprightButton.setText("move right"); + movePopuprightButton.addActionListener(e -> movePopupRight()); + add(movePopuprightButton, "cell 3 4"); + + //---- label4 ---- + label4.setText("(switches to heavy-weight when moving outside of window)"); + add(label4, "cell 0 5 4 1,alignx right,growx 0"); + + //======== popupMenu1 ======== + { + + //---- menuItem1 ---- + menuItem1.setText("text"); + popupMenu1.add(menuItem1); + + //---- menuItem2 ---- + menuItem2.setText("text"); + popupMenu1.add(menuItem2); + + //======== menu1 ======== + { + menu1.setText("text"); + + //---- menuItem3 ---- + menuItem3.setText("text"); + menu1.add(menuItem3); + + //---- menuItem4 ---- + menuItem4.setText("text"); + menu1.add(menuItem4); + } + popupMenu1.add(menu1); + } + + //======== popupPanel ======== + { + popupPanel.setBackground(new Color(153, 255, 153)); + popupPanel.setLayout(new MigLayout( + "hidemode 3", + // columns + "[fill]", + // rows + "[]")); + + //---- label3 ---- + label3.setText("popup"); + popupPanel.add(label3, "cell 0 0"); + } + + //======== popupMenu2 ======== + { + + //---- menuItem5 ---- + menuItem5.setText("text"); + popupMenu2.add(menuItem5); + + //---- menuItem6 ---- + menuItem6.setText("text"); + popupMenu2.add(menuItem6); + + //---- menuItem7 ---- + menuItem7.setText("text"); + popupMenu2.add(menuItem7); + + //---- menuItem8 ---- + menuItem8.setText("text"); + popupMenu2.add(menuItem8); + + //---- menuItem9 ---- + menuItem9.setText("text"); + popupMenu2.add(menuItem9); + + //---- menuItem10 ---- + menuItem10.setText("text"); + popupMenu2.add(menuItem10); + + //---- menuItem11 ---- + menuItem11.setText("text"); + popupMenu2.add(menuItem11); + + //---- menuItem12 ---- + menuItem12.setText("text"); + popupMenu2.add(menuItem12); + + //---- menuItem13 ---- + menuItem13.setText("text"); + popupMenu2.add(menuItem13); + + //---- menuItem14 ---- + menuItem14.setText("text"); + popupMenu2.add(menuItem14); + + //---- menuItem15 ---- + menuItem15.setText("text"); + popupMenu2.add(menuItem15); + + //---- menuItem16 ---- + menuItem16.setText("text"); + popupMenu2.add(menuItem16); + + //---- menuItem17 ---- + menuItem17.setText("text"); + popupMenu2.add(menuItem17); + + //---- menuItem18 ---- + menuItem18.setText("text"); + popupMenu2.add(menuItem18); + + //---- menuItem19 ---- + menuItem19.setText("text"); + popupMenu2.add(menuItem19); + + //---- menuItem20 ---- + menuItem20.setText("text"); + popupMenu2.add(menuItem20); + + //---- menuItem21 ---- + menuItem21.setText("text"); + popupMenu2.add(menuItem21); + + //======== menu2 ======== + { + menu2.setText("text"); + + //---- menuItem22 ---- + menuItem22.setText("text"); + menu2.add(menuItem22); + + //---- menuItem23 ---- + menuItem23.setText("text"); + menu2.add(menuItem23); + } + popupMenu2.add(menu2); + } + // JFormDesigner - End of component initialization //GEN-END:initComponents + } + + // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables + private JLabel label1; + private JLabel label2; + private JButton showPopupMenuButton; + private JButton showLargePopupMenuButton; + private JButton showPopupButton; + private JButton hidePopupButton; + private JButton movePopupDownButton; + private JButton movePopuprightButton; + private JLabel label4; + private JPopupMenu popupMenu1; + private JMenuItem menuItem1; + private JMenuItem menuItem2; + private JMenu menu1; + private JMenuItem menuItem3; + private JMenuItem menuItem4; + private JPanel popupPanel; + private JLabel label3; + private JPopupMenu popupMenu2; + private JMenuItem menuItem5; + private JMenuItem menuItem6; + private JMenuItem menuItem7; + private JMenuItem menuItem8; + private JMenuItem menuItem9; + private JMenuItem menuItem10; + private JMenuItem menuItem11; + private JMenuItem menuItem12; + private JMenuItem menuItem13; + private JMenuItem menuItem14; + private JMenuItem menuItem15; + private JMenuItem menuItem16; + private JMenuItem menuItem17; + private JMenuItem menuItem18; + private JMenuItem menuItem19; + private JMenuItem menuItem20; + private JMenuItem menuItem21; + private JMenu menu2; + private JMenuItem menuItem22; + private JMenuItem menuItem23; + // JFormDesigner - End of variables declaration //GEN-END:variables +} 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 new file mode 100644 index 00000000..9b225101 --- /dev/null +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPopupTest.jfd @@ -0,0 +1,206 @@ +JFDML JFormDesigner: "7.0.4.0.360" Java: "16" encoding: "UTF-8" + +new FormModel { + contentType: "form/swing" + root: new FormRoot { + add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) { + "$layoutConstraints": "ltr,insets dialog,hidemode 3" + "$columnConstraints": "[fill][fill][fill][fill]" + "$rowConstraints": "[][][][][][]" + } ) { + name: "this" + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label1" + "text": "Label with light-weight tooltip" + "toolTipText": "some tip" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 0" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label2" + "text": "Label with heavy-weight tooltip" + "toolTipText": "some tip\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 1" + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "showPopupMenuButton" + "text": "show light-weight JPopupMenu" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showPopupMenu", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 2" + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "showLargePopupMenuButton" + "text": "show heavy-weight JPopupMenu" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showLargePopupMenu", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 3" + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "showPopupButton" + "text": "show medium-weight popup" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showPopup", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 4" + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "hidePopupButton" + "text": "hide" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "hidePopup", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 4" + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "movePopupDownButton" + "text": "move down" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "movePopupDown", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 4" + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "movePopuprightButton" + "text": "move right" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "movePopupRight", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 3 4" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label4" + "text": "(switches to heavy-weight when moving outside of window)" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 5 4 1,alignx right,growx 0" + } ) + }, new FormLayoutConstraints( null ) { + "location": new java.awt.Point( 0, 0 ) + "size": new java.awt.Dimension( 490, 350 ) + } ) + add( new FormContainer( "javax.swing.JPopupMenu", new FormLayoutManager( class javax.swing.JPopupMenu ) ) { + name: "popupMenu1" + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem1" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem2" + "text": "text" + } ) + add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) { + name: "menu1" + "text": "text" + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem3" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem4" + "text": "text" + } ) + } ) + }, new FormLayoutConstraints( null ) { + "location": new java.awt.Point( 5, 395 ) + } ) + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) { + "$layoutConstraints": "hidemode 3" + "$columnConstraints": "[fill]" + "$rowConstraints": "[]" + } ) { + name: "popupPanel" + "background": new java.awt.Color( 153, 255, 153, 255 ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label3" + "text": "popup" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 0" + } ) + }, new FormLayoutConstraints( null ) { + "location": new java.awt.Point( 225, 395 ) + "size": new java.awt.Dimension( 200, 200 ) + } ) + add( new FormContainer( "javax.swing.JPopupMenu", new FormLayoutManager( class javax.swing.JPopupMenu ) ) { + name: "popupMenu2" + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem5" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem6" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem7" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem8" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem9" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem10" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem11" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem12" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem13" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem14" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem15" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem16" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem17" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem18" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem19" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem20" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem21" + "text": "text" + } ) + add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) { + name: "menu2" + "text": "text" + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem22" + "text": "text" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem23" + "text": "text" + } ) + } ) + }, new FormLayoutConstraints( null ) { + "location": new java.awt.Point( 5, 505 ) + } ) + } +} 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 new file mode 100644 index 00000000..33981036 --- /dev/null +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatSingleComponentTest.java @@ -0,0 +1,236 @@ +/* + * Copyright 2021 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.Container; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.awt.event.KeyEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.KeyStroke; +import javax.swing.UIManager; +import javax.swing.plaf.metal.MetalLookAndFeel; +import javax.swing.plaf.nimbus.NimbusLookAndFeel; +import com.formdev.flatlaf.FlatDarculaLaf; +import com.formdev.flatlaf.FlatDarkLaf; +import com.formdev.flatlaf.FlatIntelliJLaf; +import com.formdev.flatlaf.FlatLaf; +import com.formdev.flatlaf.FlatLightLaf; +import com.formdev.flatlaf.FlatSystemProperties; +import com.formdev.flatlaf.demo.DemoPrefs; +import com.formdev.flatlaf.extras.FlatInspector; +import com.formdev.flatlaf.extras.FlatUIDefaultsInspector; +import com.formdev.flatlaf.util.SystemInfo; +import com.formdev.flatlaf.util.UIScale; +import net.miginfocom.swing.MigLayout; + +/** + * @author Karl Tauber + */ +public class FlatSingleComponentTest + extends JFrame +{ + private static final String PREFS_ROOT_PATH = "/flatlaf-test-single"; + private static final String KEY_SCALE_FACTOR = "scaleFactor"; + + private final JLabel infoLabel; + + private JComponent createSingleComponent() { + return new JButton( "hello" ); + } + + public static void main( String[] args ) { + DemoPrefs.init( PREFS_ROOT_PATH ); + + // set scale factor + if( System.getProperty( FlatSystemProperties.UI_SCALE ) == null ) { + String scaleFactor = DemoPrefs.getState().get( KEY_SCALE_FACTOR, null ); + if( scaleFactor != null ) + System.setProperty( FlatSystemProperties.UI_SCALE, scaleFactor ); + } + + // install inspectors + FlatInspector.install( "ctrl shift alt X" ); + FlatUIDefaultsInspector.install( "ctrl shift alt Y" ); + + // disable animated Laf change + System.setProperty( "flatlaf.animatedLafChange", "false" ); + + // test loading custom defaults from package + FlatLaf.registerCustomDefaultsSource( "com.formdev.flatlaf.testing.customdefaults" ); + + // set look and feel + DemoPrefs.setupLaf( args ); + + // create and show frame + new FlatSingleComponentTest(); + } + + private FlatSingleComponentTest() { + super( "FlatSingleComponentTest" ); + setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); + + JComponent c = createSingleComponent(); + + Container contentPane = getContentPane(); + contentPane.setLayout( new MigLayout( null, null, "[][grow]") ); + contentPane.add( c ); + + infoLabel = new JLabel(); + infoLabel.setEnabled( false ); + contentPane.add( infoLabel, "newline, aligny bottom,growy 0" ); + + // register F1, F2, ... keys to switch to Light, Dark or other LaFs + registerSwitchToLookAndFeel( "F1", FlatLightLaf.class.getName() ); + registerSwitchToLookAndFeel( "F2", FlatDarkLaf.class.getName() ); + registerSwitchToLookAndFeel( "F3", FlatIntelliJLaf.class.getName() ); + registerSwitchToLookAndFeel( "F4", FlatDarculaLaf.class.getName() ); + + registerSwitchToLookAndFeel( "F8", FlatTestLaf.class.getName() ); + + if( SystemInfo.isWindows ) + registerSwitchToLookAndFeel( "F9", "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" ); + else if( SystemInfo.isMacOS ) + registerSwitchToLookAndFeel( "F9", "com.apple.laf.AquaLookAndFeel" ); + else if( SystemInfo.isLinux ) + registerSwitchToLookAndFeel( "F9", "com.sun.java.swing.plaf.gtk.GTKLookAndFeel" ); + registerSwitchToLookAndFeel( "F12", MetalLookAndFeel.class.getName() ); + registerSwitchToLookAndFeel( "F11", NimbusLookAndFeel.class.getName() ); + + // register Alt+F1, F2, ... keys to change scale factor + registerScaleFactor( "alt F1", "1" ); + registerScaleFactor( "alt F2", "1.25" ); + registerScaleFactor( "alt F3", "1.5" ); + registerScaleFactor( "alt F4", "1.75" ); + registerScaleFactor( "alt F5", "2" ); + registerScaleFactor( "alt F6", "2.5" ); + registerScaleFactor( "alt F7", "3" ); + registerScaleFactor( "alt F8", "3.5" ); + registerScaleFactor( "alt F9", "4" ); + registerScaleFactor( "alt F10", "5" ); + registerScaleFactor( "alt F11", "6" ); + registerScaleFactor( "alt F12", null ); + + // register ESC key to close frame + ((JComponent)getContentPane()).registerKeyboardAction( + e -> { + dispose(); + }, + KeyStroke.getKeyStroke( KeyEvent.VK_ESCAPE, 0, false ), + JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT ); + + // update info + addWindowListener( new WindowAdapter() { + @Override + public void windowOpened( WindowEvent e ) { + updateInfo(); + } + } ); + + // update info when moved to another screen + addComponentListener( new ComponentAdapter() { + @Override + public void componentMoved( ComponentEvent e ) { + updateInfo(); + } + } ); + + UIManager.addPropertyChangeListener( e -> { + if( "lookAndFeel".equals( e.getPropertyName() ) ) { + EventQueue.invokeLater( () -> { + // update info because user scale factor may change + updateInfo(); + } ); + } + } ); + + UIScale.addPropertyChangeListener( e -> { + // update info because user scale factor may change + updateInfo(); + } ); + + setMinimumSize( UIScale.scale( new Dimension( 300, 150 ) ) ); + pack(); + setLocationRelativeTo( null ); + setVisible( true ); + } + + private void updateInfo() { + double systemScaleFactor = UIScale.getSystemScaleFactor( getGraphicsConfiguration() ); + float userScaleFactor = UIScale.getUserScaleFactor(); + infoLabel.setText( " (Java " + System.getProperty( "java.version" ) + + (systemScaleFactor != 1 ? ("; system scale factor " + systemScaleFactor) : "") + + (userScaleFactor != 1 ? ("; user scale factor " + userScaleFactor) : "") + + (systemScaleFactor == 1 && userScaleFactor == 1 ? "; no scaling" : "") + + ")" ); + } + + private void registerSwitchToLookAndFeel( String keyStrokeStr, String lafClassName ) { + KeyStroke keyStroke = KeyStroke.getKeyStroke( keyStrokeStr ); + if( keyStroke == null ) + throw new IllegalArgumentException( "Invalid key stroke '" + keyStrokeStr + "'" ); + + ((JComponent)getContentPane()).registerKeyboardAction( + e -> { + applyLookAndFeel( lafClassName ); + }, + keyStroke, + JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT ); + } + + private void applyLookAndFeel( String lafClassName ) { + try { + UIManager.setLookAndFeel( lafClassName ); + FlatLaf.updateUI(); + } catch( Exception ex ) { + ex.printStackTrace(); + } + } + + private void registerScaleFactor( String keyStrokeStr, String scaleFactor ) { + KeyStroke keyStroke = KeyStroke.getKeyStroke( keyStrokeStr ); + if( keyStroke == null ) + throw new IllegalArgumentException( "Invalid key stroke '" + keyStrokeStr + "'" ); + + ((JComponent)getContentPane()).registerKeyboardAction( + e -> { + applyScaleFactor( scaleFactor ); + }, + keyStroke, + JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT ); + } + + private void applyScaleFactor( String scaleFactor ) { + if( scaleFactor != null ) { + System.setProperty( FlatSystemProperties.UI_SCALE, scaleFactor ); + DemoPrefs.getState().put( KEY_SCALE_FACTOR, scaleFactor ); + } else { + System.clearProperty( FlatSystemProperties.UI_SCALE ); + DemoPrefs.getState().remove( KEY_SCALE_FACTOR ); + } + + applyLookAndFeel( UIManager.getLookAndFeel().getClass().getName() ); + pack(); + } +} diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.java index ecb55f42..24ebced1 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.java @@ -17,6 +17,7 @@ package com.formdev.flatlaf.testing; import java.awt.Component; +import java.awt.Dimension; import java.awt.Insets; import javax.swing.*; import javax.swing.border.*; @@ -102,10 +103,18 @@ public class FlatTextComponentsTest JComboBox comboBox3 = new JComboBox<>(); JLabel spinnerLabel = new JLabel(); JSpinner spinner1 = new JSpinner(); - JSpinner spinner2 = new JSpinner(); - JSpinner spinner3 = new JSpinner(); + JLabel label2 = new JLabel(); JComboBox comboBox2 = new JComboBox<>(); + JSpinner spinner2 = new JSpinner(); + JLabel label1 = new JLabel(); + JComboBox comboBox5 = new JComboBox<>(); + JSpinner spinner4 = new JSpinner(); + JLabel label3 = new JLabel(); JComboBox comboBox4 = new JComboBox<>(); + JSpinner spinner3 = new JSpinner(); + JLabel label4 = new JLabel(); + JComboBox comboBox6 = new JComboBox<>(); + JSpinner spinner5 = new JSpinner(); JPopupMenu popupMenu1 = new JPopupMenu(); JMenuItem cutMenuItem = new JMenuItem(); JMenuItem copyMenuItem = new JMenuItem(); @@ -130,8 +139,12 @@ public class FlatTextComponentsTest "[50,fill]" + "[]" + "[]para" + + "[40]" + + "[40]" + "[]" + "[]" + + "[::14]" + + "[::14]" + "[]" + "[]")); @@ -401,23 +414,67 @@ public class FlatTextComponentsTest spinner1.setName("spinner1"); add(spinner1, "cell 1 7,growx"); - //---- spinner2 ---- - spinner2.setName("spinner2"); - add(spinner2, "cell 1 8,growx,height 40"); - - //---- spinner3 ---- - spinner3.setName("spinner3"); - add(spinner3, "cell 1 9,growx,hmax 14"); + //---- label2 ---- + label2.setText("Large row height:
(default pref height)"); + label2.setName("label2"); + add(label2, "cell 0 8,aligny top,growy 0"); //---- comboBox2 ---- comboBox2.setEditable(true); comboBox2.setName("comboBox2"); - add(comboBox2, "cell 1 10,growx,height 40"); + add(comboBox2, "cell 1 8,grow"); + + //---- spinner2 ---- + spinner2.setName("spinner2"); + add(spinner2, "cell 1 9,grow"); + + //---- label1 ---- + label1.setText("Large pref height:"); + label1.setName("label1"); + add(label1, "cell 0 10,aligny top,growy 0"); + + //---- comboBox5 ---- + comboBox5.setPreferredSize(new Dimension(60, 40)); + comboBox5.setEditable(true); + comboBox5.setName("comboBox5"); + add(comboBox5, "cell 1 10,growx"); + + //---- spinner4 ---- + spinner4.setPreferredSize(new Dimension(60, 40)); + spinner4.setName("spinner4"); + add(spinner4, "cell 1 11,growx"); + + //---- label3 ---- + label3.setText("Small row height:
(default pref height)"); + label3.setName("label3"); + add(label3, "cell 0 12 1 2,aligny top,growy 0"); //---- comboBox4 ---- comboBox4.setEditable(true); comboBox4.setName("comboBox4"); - add(comboBox4, "cell 1 11,growx,hmax 14"); + add(comboBox4, "cell 1 12,growx"); + + //---- spinner3 ---- + spinner3.setName("spinner3"); + add(spinner3, "cell 1 13,growx"); + + //---- label4 ---- + label4.setText("Small pref height:"); + label4.setName("label4"); + add(label4, "cell 0 14 1 2,aligny top,growy 0"); + + //---- comboBox6 ---- + comboBox6.setEditable(true); + comboBox6.setPreferredSize(new Dimension(60, 14)); + comboBox6.setMinimumSize(new Dimension(60, 14)); + comboBox6.setName("comboBox6"); + add(comboBox6, "cell 1 14,growx"); + + //---- spinner5 ---- + spinner5.setMinimumSize(new Dimension(60, 14)); + spinner5.setPreferredSize(new Dimension(60, 14)); + spinner5.setName("spinner5"); + add(spinner5, "cell 1 15,growx,hmax 14"); //======== popupMenu1 ======== { diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.jfd index b8bcac13..8ea38154 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.jfd +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTextComponentsTest.jfd @@ -10,7 +10,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": "[][][::100][100,fill][fill]" - "$rowConstraints": "[][][][50,fill][50,fill][50,fill][][]para[][][][]" + "$rowConstraints": "[][][][50,fill][50,fill][50,fill][][]para[40][40][][][::14][::14][][]" } ) { name: "this" add( new FormComponent( "javax.swing.JLabel" ) { @@ -303,15 +303,11 @@ new FormModel { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 1 7,growx" } ) - add( new FormComponent( "javax.swing.JSpinner" ) { - name: "spinner2" + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label2" + "text": "Large row height:
(default pref height)" }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 8,growx,height 40" - } ) - add( new FormComponent( "javax.swing.JSpinner" ) { - name: "spinner3" - }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 9,growx,hmax 14" + "value": "cell 0 8,aligny top,growy 0" } ) add( new FormComponent( "javax.swing.JComboBox" ) { name: "comboBox2" @@ -320,7 +316,40 @@ new FormModel { "JavaCodeGenerator.typeParameters": "String" } }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 10,growx,height 40" + "value": "cell 1 8,grow" + } ) + add( new FormComponent( "javax.swing.JSpinner" ) { + name: "spinner2" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 9,grow" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label1" + "text": "Large pref height:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 10,aligny top,growy 0" + } ) + add( new FormComponent( "javax.swing.JComboBox" ) { + name: "comboBox5" + "preferredSize": new java.awt.Dimension( 60, 40 ) + "editable": true + auxiliary() { + "JavaCodeGenerator.typeParameters": "String" + } + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 10,growx" + } ) + add( new FormComponent( "javax.swing.JSpinner" ) { + name: "spinner4" + "preferredSize": new java.awt.Dimension( 60, 40 ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 11,growx" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label3" + "text": "Small row height:
(default pref height)" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 12 1 2,aligny top,growy 0" } ) add( new FormComponent( "javax.swing.JComboBox" ) { name: "comboBox4" @@ -329,11 +358,40 @@ new FormModel { "JavaCodeGenerator.typeParameters": "String" } }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { - "value": "cell 1 11,growx,hmax 14" + "value": "cell 1 12,growx" + } ) + add( new FormComponent( "javax.swing.JSpinner" ) { + name: "spinner3" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 13,growx" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label4" + "text": "Small pref height:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 14 1 2,aligny top,growy 0" + } ) + add( new FormComponent( "javax.swing.JComboBox" ) { + name: "comboBox6" + "editable": true + "preferredSize": new java.awt.Dimension( 60, 14 ) + "minimumSize": new java.awt.Dimension( 60, 14 ) + auxiliary() { + "JavaCodeGenerator.typeParameters": "String" + } + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 14,growx" + } ) + add( new FormComponent( "javax.swing.JSpinner" ) { + name: "spinner5" + "minimumSize": new java.awt.Dimension( 60, 14 ) + "preferredSize": new java.awt.Dimension( 60, 14 ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 15,growx,hmax 14" } ) }, new FormLayoutConstraints( null ) { "location": new java.awt.Point( 0, 0 ) - "size": new java.awt.Dimension( 530, 580 ) + "size": new java.awt.Dimension( 530, 660 ) } ) add( new FormContainer( "javax.swing.JPopupMenu", new FormLayoutManager( class javax.swing.JPopupMenu ) ) { name: "popupMenu1" @@ -350,7 +408,7 @@ new FormModel { "text": "Paste" } ) }, new FormLayoutConstraints( null ) { - "location": new java.awt.Point( 0, 680 ) + "location": new java.awt.Point( 0, 705 ) "size": new java.awt.Dimension( 91, 87 ) } ) } 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 7b982cc5..07e7afd0 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 @@ -124,6 +124,11 @@ public class FlatSwingXTest JTextField textField3 = new JTextField(); JLabel label10 = new JLabel(); JTextField textField4 = new JTextField(); + JLabel label11 = new JLabel(); + JXSearchField xSearchField1 = new JXSearchField(); + JXSearchField xSearchField2 = new JXSearchField(); + JXSearchField xSearchField3 = new JXSearchField(); + JXSearchField xSearchField4 = new JXSearchField(); JButton button1 = new JButton(); JButton button2 = new JButton(); @@ -146,6 +151,8 @@ public class FlatSwingXTest "[]" + "[]" + "[]" + + "[]" + + "[]" + "[37]")); //---- label1 ---- @@ -425,6 +432,30 @@ public class FlatSwingXTest } add(xTitledPanel2, "cell 3 8,grow"); + //---- label11 ---- + label11.setText("JXSearchField:"); + add(label11, "cell 0 9"); + + //---- xSearchField1 ---- + xSearchField1.setText("abc"); + add(xSearchField1, "cell 1 9,growx"); + + //---- xSearchField2 ---- + xSearchField2.setEnabled(false); + xSearchField2.setText("abc"); + add(xSearchField2, "cell 2 9,growx"); + + //---- xSearchField3 ---- + xSearchField3.setRecentSearchesSaveKey("flatlaf.swingx.search.recent"); + xSearchField3.setText("abc"); + add(xSearchField3, "cell 1 10,growx"); + + //---- xSearchField4 ---- + xSearchField4.setRecentSearchesSaveKey("flatlaf.swingx.search.recent"); + xSearchField4.setEnabled(false); + xSearchField4.setText("abc"); + add(xSearchField4, "cell 2 10,growx"); + //---- button1 ---- button1.setText("<"); 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 567d0e87..a4d1affd 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.0.0.194" Java: "11.0.2" encoding: "UTF-8" +JFDML JFormDesigner: "7.0.4.0.360" Java: "16" 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][][][][][][][][37]" } ) { name: "this" add( new FormComponent( "javax.swing.JLabel" ) { @@ -354,6 +354,40 @@ new FormModel { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 3 8,grow" } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label11" + "text": "JXSearchField:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 9" + } ) + add( new FormComponent( "org.jdesktop.swingx.JXSearchField" ) { + name: "xSearchField1" + "text": "abc" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 9,growx" + } ) + add( new FormComponent( "org.jdesktop.swingx.JXSearchField" ) { + name: "xSearchField2" + "enabled": false + "text": "abc" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 9,growx" + } ) + add( new FormComponent( "org.jdesktop.swingx.JXSearchField" ) { + name: "xSearchField3" + "recentSearchesSaveKey": "flatlaf.swingx.search.recent" + "text": "abc" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 10,growx" + } ) + add( new FormComponent( "org.jdesktop.swingx.JXSearchField" ) { + name: "xSearchField4" + "recentSearchesSaveKey": "flatlaf.swingx.search.recent" + "enabled": false + "text": "abc" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 2 10,growx" + } ) }, new FormLayoutConstraints( null ) { "location": new java.awt.Point( 0, 0 ) "size": new java.awt.Dimension( 700, 600 ) 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 0042a763..a1aa6b40 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 @@ -70,6 +70,7 @@ import com.formdev.flatlaf.ui.FlatUIUtils; import com.formdev.flatlaf.util.ColorFunctions.ColorFunction; import com.jidesoft.plaf.LookAndFeelFactory; import com.formdev.flatlaf.util.DerivedColor; +import com.formdev.flatlaf.util.HSLColor; import com.formdev.flatlaf.util.StringUtils; import com.formdev.flatlaf.util.SystemInfo; @@ -84,6 +85,7 @@ public class UIDefaultsDump private final UIDefaults defaults; private final Properties derivedColorKeys; private final boolean isIntelliJTheme; + private final boolean dumpHSL; private String lastPrefix; private JComponent dummyComponent; @@ -349,6 +351,7 @@ public class UIDefaultsDump derivedColorKeys = loadDerivedColorKeys(); isIntelliJTheme = (lookAndFeel instanceof IntelliJTheme.ThemeLaf); + dumpHSL = lookAndFeel instanceof FlatLaf; } private void dump( PrintWriter out, Predicate keyFilter ) { @@ -457,16 +460,16 @@ public class UIDefaultsDump if( resolvedColor != color && resolvedColor.getRGB() != color.getRGB() ) { if( !isIntelliJTheme ) { System.err.println( "Key '" + key + "': derived colors not equal" ); - System.err.println( " Default color: " + dumpColorHex( color ) ); - System.err.println( " Resolved color: " + dumpColorHex( resolvedColor ) ); + System.err.println( " Default color: " + dumpColorHexAndHSL( color ) ); + System.err.println( " Resolved color: " + dumpColorHexAndHSL( resolvedColor ) ); } out.printf( "%s / ", - dumpColorHex( resolvedColor ) ); + dumpColorHexAndHSL( resolvedColor ) ); } out.printf( "%s %s", - dumpColorHex( color ), + dumpColorHexAndHSL( color ), dumpClass( color ) ); if( color instanceof DerivedColor ) { @@ -479,6 +482,13 @@ public class UIDefaultsDump } } + private String dumpColorHexAndHSL( Color color ) { + String hex = dumpColorHex( color ); + return dumpHSL + ? hex + " " + dumpColorHSL( color ) + : hex; + } + private String dumpColorHex( Color color ) { boolean hasAlpha = (color.getAlpha() != 255); return hasAlpha @@ -486,6 +496,21 @@ public class UIDefaultsDump : String.format( "#%06x", color.getRGB() & 0xffffff ); } + private String dumpColorHSL( Color color ) { + HSLColor hslColor = new HSLColor( color ); + int hue = Math.round( hslColor.getHue() ); + int saturation = Math.round( hslColor.getSaturation() ); + int luminance = Math.round( hslColor.getLuminance() ); + if( color.getAlpha() == 255 ) { + return String.format( "HSL %3d %3d %3d", + hue, saturation, luminance ); + } else { + int alpha = Math.round( hslColor.getAlpha() * 100 ); + return String.format( "HSLA %3d %3d %3d %2d", + hue, saturation, luminance, alpha ); + } + } + private void dumpFont( PrintWriter out, Font font ) { String strStyle = font.isBold() ? font.isItalic() ? "bolditalic" : "bold" diff --git a/flatlaf-theme-editor/README.md b/flatlaf-theme-editor/README.md index 049861c7..6714c1d0 100644 --- a/flatlaf-theme-editor/README.md +++ b/flatlaf-theme-editor/README.md @@ -1,4 +1,16 @@ FlatLaf Theme Editor ==================== -under development \ No newline at end of file +This sub-project contains the FlatLaf Theme Editor that supports editing FlatLaf +theme properties files. + + +Download +-------- + +### Snapshot + +[![Download Demo](https://download.formdev.com/flatlaf/images/download-theme-editor-snapshot.svg)](https://download.formdev.com/flatlaf/snapshots/flatlaf-theme-editor-latest.jar) + +Run with `java -jar flatlaf-theme-editor-.jar` (or double-click it). +Requires Java 8 or newer. diff --git a/flatlaf-theme-editor/build.gradle.kts b/flatlaf-theme-editor/build.gradle.kts index 8841a49f..1ceec77c 100644 --- a/flatlaf-theme-editor/build.gradle.kts +++ b/flatlaf-theme-editor/build.gradle.kts @@ -23,9 +23,9 @@ dependencies { implementation( project( ":flatlaf-extras" ) ) implementation( "com.miglayout:miglayout-swing:5.3" ) - implementation( "com.fifesoft:rsyntaxtextarea:3.1.2" ) - implementation( "com.fifesoft:autocomplete:3.1.1" ) - implementation( "com.fifesoft:rstaui:3.1.1" ) + implementation( "com.fifesoft:rsyntaxtextarea:3.1.3" ) + implementation( "com.fifesoft:autocomplete:3.1.2" ) + implementation( "com.fifesoft:rstaui:3.1.2" ) } tasks { @@ -34,7 +34,7 @@ tasks { dependsOn( ":flatlaf-extras:jar" ) manifest { - attributes( "Main-Class" to "com.formdev.flatlaf.themeeditor.FlatThemeFileEditor" ) + attributes( "Main-Class" to "com.formdev.flatlaf.themeeditor.FlatThemeEditor" ) if( JavaVersion.current() >= JavaVersion.VERSION_1_9 ) attributes( "Multi-Release" to "true" ) 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 c26f9bde..c9522891 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 @@ -21,10 +21,13 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.StringReader; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Objects; +import java.util.Properties; import java.util.Set; import javax.swing.text.BadLocationException; import javax.swing.text.JTextComponent; @@ -110,14 +113,13 @@ class FlatCompletionProvider switch( lineBeforeCaret.charAt( i ) ) { case '=': case '(': + case ',': return getValueProvider(); case '$': case '@': return getReferenceProvider(); - case ' ': - case '\t': case '#': // colors return null; } @@ -158,6 +160,9 @@ class FlatCompletionProvider { private static KeyCompletionProvider instance; + private final Set knownKeys; + private Set lastKeys; + static KeyCompletionProvider getInstance() { if( instance == null ) instance = new KeyCompletionProvider(); @@ -165,17 +170,17 @@ class FlatCompletionProvider } KeyCompletionProvider() { - setAutoActivationRules( true, "." ); + setAutoActivationRules( true, "@." ); - // load all keys - HashSet keys = new HashSet<>(); + knownKeys = new HashSet<>(); try { try( InputStream in = getClass().getResourceAsStream( "/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt" ) ) { if( in != null ) { try( BufferedReader reader = new BufferedReader( new InputStreamReader( in, "UTF-8" ) ) ) { String key; while( (key = reader.readLine()) != null ) { - keys.add( key ); + if( !isIgnored( key ) ) + knownKeys.add( key ); } } } @@ -184,27 +189,96 @@ class FlatCompletionProvider ex.printStackTrace(); // TODO } - // collect key parts + setCompletions( knownKeys ); + } + + private boolean isIgnored( String key ) { + return key.endsWith( ".font" ) || + key.endsWith( "Font" ) || + key.endsWith( "InputMap" ); + } + + private void setCompletions( Set keys ) { HashSet keyParts = new HashSet<>(); for( String key : keys ) { int delimIndex = key.length() + 1; - while( (delimIndex = key.lastIndexOf( '.', delimIndex - 1 )) >= 0 ) { - String part = key.substring( 0, delimIndex ); - if( !keys.contains( part ) ) - keyParts.add( part ); - } + while( (delimIndex = key.lastIndexOf( '.', delimIndex - 1 )) >= 0 ) + keyParts.add( key.substring( 0, delimIndex ) ); } + completions.clear(); + // add key parts - addWordCompletions( keyParts.toArray( new String[keyParts.size()] ) ); + for( String key : keyParts ) + completions.add( new BasicCompletion( this, key ) ); // add all keys - addWordCompletions( keys.toArray( new String[keys.size()] ) ); + for( String key : keys ) { + if( !keyParts.contains( key ) ) + completions.add( new BasicCompletion( this, key.concat( " = " ) ) ); + } + + Collections.sort( completions ); } @Override protected boolean isValidChar( char ch ) { - return super.isValidChar( ch ) || ch == '.'; + return super.isValidChar( ch ) || ch == '.' || ch == '@'; + } + + @Override + protected List getCompletionsImpl( JTextComponent comp ) { + updateCompletions( comp ); + return super.getCompletionsImpl( comp ); + } + + @Override + public List getCompletionsAt( JTextComponent comp, Point pt ) { + updateCompletions( comp ); + return super.getCompletionsAt( comp, pt ); + } + + @Override + public List getParameterizedCompletions( JTextComponent comp ) { + updateCompletions( comp ); + return super.getParameterizedCompletions( comp ); + } + + private void updateCompletions( JTextComponent comp ) { + FlatSyntaxTextArea fsta = (FlatSyntaxTextArea) comp; + Set keys = fsta.propertiesSupport.getAllKeys(); + if( Objects.equals( keys, lastKeys ) ) + return; + lastKeys = keys; + + // get key at current line + String keyAtCurrentLine = null; + try { + int caretPosition = fsta.getCaretPosition(); + int currentLine = fsta.getLineOfOffset( caretPosition ); + int lineStart = fsta.getLineStartOffset( currentLine ); + int lineEnd = fsta.getLineEndOffset( currentLine ); + String line = fsta.getText( lineStart, lineEnd - lineStart ); + Properties properties = new Properties(); + properties.load( new StringReader( line ) ); + if( !properties.isEmpty() ) + keyAtCurrentLine = (String) properties.keys().nextElement(); + } catch( BadLocationException | IOException ex ) { + ex.printStackTrace(); + } + + Set completionKeys = new HashSet<>( knownKeys ); + for( String key : keys ) { + if( key.startsWith( "*." ) || key.startsWith( "[" ) ) + continue; + + // ignore key at current line + if( key.equals( keyAtCurrentLine ) ) + continue; + + completionKeys.add( key ); + } + setCompletions( completionKeys ); } } @@ -281,13 +355,28 @@ class FlatCompletionProvider private void updateCompletions( JTextComponent comp ) { FlatSyntaxTextArea fsta = (FlatSyntaxTextArea) comp; Set keys = fsta.propertiesSupport.getAllKeys(); - if( keys == lastKeys ) + if( Objects.equals( keys, lastKeys ) ) return; + lastKeys = keys; completions.clear(); for( String key : keys ) { - if( key.startsWith( "*." ) || key.startsWith( "[" ) ) + if( key.startsWith( "[" ) ) { + // remove prefix + int closeIndex = key.indexOf( ']' ); + if( closeIndex < 0 ) + continue; + key = key.substring( closeIndex + 1 ); + } + + if( key.startsWith( "*." ) ) { + // resolve wildcard + for( String k : FlatThemePropertiesSupport.getKeysForWildcard( key ) ) { + if( !keys.contains( k ) ) + completions.add( new BasicCompletion( this, "$".concat( k ) ) ); + } continue; + } if( !key.startsWith( "@" ) ) key = "$".concat( key ); @@ -297,7 +386,7 @@ class FlatCompletionProvider completion.setRelevance( 1 ); completions.add( completion ); } - Collections.sort(completions); + Collections.sort( completions ); } } @@ -355,8 +444,33 @@ class FlatCompletionProvider "options", "(optional) [derived]" ); addFunction( "spin", "color", colorParamDesc, - "angle", "number of degrees to rotate", + "angle", "number of degrees to rotate (0-360)", "options", "(optional) [derived]" ); + + addFunction( "changeHue", + "color", colorParamDesc, + "angle", "number of degrees (0-360)", + "options", "(optional) [derived]" ); + String[] hslChangeParams = { + "color", colorParamDesc, + "value", "0-100%", + "options", "(optional) [derived]" + }; + addFunction( "changeSaturation", hslChangeParams ); + addFunction( "changeLightness", hslChangeParams ); + addFunction( "changeAlpha", hslChangeParams ); + + String weightParamDesc = "(optional) 0-100%, default is 50%"; + addFunction( "mix", + "color1", colorParamDesc, + "color2", colorParamDesc, + "weight", weightParamDesc ); + addFunction( "tint", + "color", colorParamDesc, + "weight", weightParamDesc ); + addFunction( "shade", + "color", colorParamDesc, + "weight", weightParamDesc ); } private void addFunction( String name, String... paramNamesAndDescs ) { diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatFindReplaceBar.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatFindReplaceBar.java index f906c9fe..3c907a2d 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatFindReplaceBar.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatFindReplaceBar.java @@ -19,12 +19,18 @@ package com.formdev.flatlaf.themeeditor; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; +import java.util.List; import java.util.function.Consumer; import javax.swing.*; +import javax.swing.border.MatteBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; +import com.formdev.flatlaf.extras.components.*; import org.fife.rsta.ui.CollapsibleSectionPanel; +import org.fife.ui.rsyntaxtextarea.DocumentRange; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; +import org.fife.ui.rsyntaxtextarea.RSyntaxUtilities; +import org.fife.ui.rtextarea.RTextAreaHighlighter; import org.fife.ui.rtextarea.SearchContext; import org.fife.ui.rtextarea.SearchEngine; import org.fife.ui.rtextarea.SearchResult; @@ -53,11 +59,13 @@ class FlatFindReplaceBar InputMap inputMap = getInputMap( JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT ); inputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_UP, 0 ), "findPrevious" ); inputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_DOWN, 0 ), "findNext" ); - inputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_F12, 0 ), "focusEditor" ); + inputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_PAGE_UP, 0 ), "editorPageUp" ); + inputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_PAGE_DOWN, 0 ), "editorPageDown" ); ActionMap actionMap = getActionMap(); actionMap.put( "findPrevious", new ConsumerAction( e -> findPrevious() ) ); actionMap.put( "findNext", new ConsumerAction( e -> findNext() ) ); - actionMap.put( "focusEditor", new ConsumerAction( e -> textArea.requestFocusInWindow() ) ); + actionMap.put( "editorPageUp", new ConsumerAction( e -> notifyEditorAction( "page-up" ) ) ); + actionMap.put( "editorPageDown", new ConsumerAction( e -> notifyEditorAction( "page-down" ) ) ); findPreviousButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/themeeditor/icons/findAndShowPrevMatches.svg" ) ); findNextButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/themeeditor/icons/findAndShowNextMatches.svg" ) ); @@ -71,6 +79,13 @@ class FlatFindReplaceBar setSearchContext( context ); } + @Override + public void updateUI() { + super.updateUI(); + + setBorder( new MatteBorder( 1, 0, 0, 0, UIManager.getColor( "Component.borderColor" ) ) ); + } + SearchContext getSearchContext() { return context; } @@ -126,7 +141,7 @@ class FlatFindReplaceBar findOrMarkAll( true ); } - private void markAll() { + void markAll() { findOrMarkAll( false ); } @@ -140,6 +155,10 @@ class FlatFindReplaceBar ? SearchEngine.find( textArea, context ) : SearchEngine.markAll( textArea, context ); + // select (and scroll to) match near caret + if( !find && result.getMarkedCount() > 0 ) + selectMatchNearCaret(); + // update matches info label updateMatchesLabel( result, false ); @@ -181,16 +200,57 @@ class FlatFindReplaceBar context.setSearchFor( findField.getText() ); context.setReplaceWith( replaceField.getText() ); + // make sure that search wrap is disabled because otherwise it is easy + // to have endeless loop when replacing e.g. "a" with "aa" + boolean oldSearchWrap = context.getSearchWrap(); + context.setSearchWrap( false ); + // replace all SearchResult result = SearchEngine.replaceAll( textArea, context ); + // restore search wrap + context.setSearchWrap( oldSearchWrap ); + // update matches info labels updateMatchesLabel( result, true ); } + private void selectMatchNearCaret() { + RTextAreaHighlighter highlighter = (RTextAreaHighlighter) textArea.getHighlighter(); + if( highlighter == null ) + return; + + List ranges = highlighter.getMarkAllHighlightRanges(); + if( ranges.isEmpty() ) + return; + + DocumentRange selectRange = null; + if( ranges.size() > 1 ) { + int selStart = textArea.getSelectionStart(); + for( DocumentRange range : ranges ) { + if( range.getEndOffset() >= selStart ) { + selectRange = range; + break; + } + } + } + if( selectRange == null ) + selectRange = ranges.get( 0 ); + + RSyntaxUtilities.selectAndPossiblyCenter( textArea, selectRange, true ); + } + private void updateMatchesLabel( SearchResult result, boolean replace ) { matchesLabel.setText( result.getMarkedCount() + " matches" ); replaceMatchesLabel.setText( replace ? result.getCount() + " matches replaced" : null ); + + findField.setOutline( result.getMarkedCount() > 0 ? null : "error" ); + } + + private void notifyEditorAction( String actionKey ) { + Action action = textArea.getActionMap().get( actionKey ); + if( action != null ) + action.actionPerformed( new ActionEvent( textArea, ActionEvent.ACTION_PERFORMED, null ) ); } private void close() { @@ -204,7 +264,7 @@ class FlatFindReplaceBar private void initComponents() { // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents findLabel = new JLabel(); - findField = new JTextField(); + findField = new FlatTextField(); findToolBar = new JToolBar(); findPreviousButton = new JButton(); findNextButton = new JButton(); @@ -215,7 +275,7 @@ class FlatFindReplaceBar closeToolBar = new JToolBar(); closeButton = new JButton(); replaceLabel = new JLabel(); - replaceField = new JTextField(); + replaceField = new FlatTextField(); toolBar1 = new JToolBar(); replaceButton = new JButton(); replaceAllButton = new JButton(); @@ -243,13 +303,14 @@ class FlatFindReplaceBar //---- findField ---- findField.setColumns(16); + findField.setSelectAllOnFocusPolicy(FlatTextField.SelectAllOnFocusPolicy.always); findField.addActionListener(e -> find()); add(findField, "cell 1 0"); //======== findToolBar ======== { findToolBar.setFloatable(false); - findToolBar.setBorder(null); + findToolBar.setBorder(BorderFactory.createEmptyBorder()); //---- findPreviousButton ---- findPreviousButton.setToolTipText("Previous Occurrence"); @@ -286,7 +347,7 @@ class FlatFindReplaceBar //======== closeToolBar ======== { closeToolBar.setFloatable(false); - closeToolBar.setBorder(null); + closeToolBar.setBorder(BorderFactory.createEmptyBorder()); //---- closeButton ---- closeButton.setToolTipText("Close"); @@ -303,12 +364,13 @@ class FlatFindReplaceBar //---- replaceField ---- replaceField.setColumns(16); + replaceField.setSelectAllOnFocusPolicy(FlatTextField.SelectAllOnFocusPolicy.always); add(replaceField, "cell 1 1"); //======== toolBar1 ======== { toolBar1.setFloatable(false); - toolBar1.setBorder(null); + toolBar1.setBorder(BorderFactory.createEmptyBorder()); //---- replaceButton ---- replaceButton.setText("Replace"); @@ -332,7 +394,7 @@ class FlatFindReplaceBar // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables private JLabel findLabel; - private JTextField findField; + private FlatTextField findField; private JToolBar findToolBar; private JButton findPreviousButton; private JButton findNextButton; @@ -343,7 +405,7 @@ class FlatFindReplaceBar private JToolBar closeToolBar; private JButton closeButton; private JLabel replaceLabel; - private JTextField replaceField; + private FlatTextField replaceField; private JToolBar toolBar1; private JButton replaceButton; private JButton replaceAllButton; diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatFindReplaceBar.jfd b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatFindReplaceBar.jfd index a5ed0622..e852b805 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatFindReplaceBar.jfd +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatFindReplaceBar.jfd @@ -1,4 +1,4 @@ -JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8" +JFDML JFormDesigner: "7.0.4.0.360" Java: "16" encoding: "UTF-8" new FormModel { contentType: "form/swing" @@ -18,9 +18,10 @@ new FormModel { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 0 0" } ) - add( new FormComponent( "javax.swing.JTextField" ) { + add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTextField" ) { name: "findField" "columns": 16 + "selectAllOnFocusPolicy": enum com.formdev.flatlaf.extras.components.FlatTextField$SelectAllOnFocusPolicy always addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "find", false ) ) }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 1 0" @@ -28,7 +29,7 @@ new FormModel { add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) { name: "findToolBar" "floatable": false - "border": sfield com.jformdesigner.model.FormObject NULL_VALUE + "border": new javax.swing.border.EmptyBorder( 0, 0, 0, 0 ) add( new FormComponent( "javax.swing.JButton" ) { name: "findPreviousButton" "toolTipText": "Previous Occurrence" @@ -69,7 +70,7 @@ new FormModel { add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) { name: "closeToolBar" "floatable": false - "border": sfield com.jformdesigner.model.FormObject NULL_VALUE + "border": new javax.swing.border.EmptyBorder( 0, 0, 0, 0 ) add( new FormComponent( "javax.swing.JButton" ) { name: "closeButton" "toolTipText": "Close" @@ -86,16 +87,17 @@ new FormModel { }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 0 1" } ) - add( new FormComponent( "javax.swing.JTextField" ) { + add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTextField" ) { name: "replaceField" "columns": 16 + "selectAllOnFocusPolicy": enum com.formdev.flatlaf.extras.components.FlatTextField$SelectAllOnFocusPolicy always }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { "value": "cell 1 1" } ) add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) { name: "toolBar1" "floatable": false - "border": sfield com.jformdesigner.model.FormObject NULL_VALUE + "border": new javax.swing.border.EmptyBorder( 0, 0, 0, 0 ) add( new FormComponent( "javax.swing.JButton" ) { name: "replaceButton" "text": "Replace" diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatRSyntaxTextAreaUI.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatRSyntaxTextAreaUI.java new file mode 100644 index 00000000..b59f90e6 --- /dev/null +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatRSyntaxTextAreaUI.java @@ -0,0 +1,52 @@ +/* + * Copyright 2021 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.themeeditor; + +import java.awt.Graphics; +import java.awt.Rectangle; +import javax.swing.JComponent; +import javax.swing.text.BadLocationException; +import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaUI; + +/** + * @author Karl Tauber + */ +class FlatRSyntaxTextAreaUI + extends RSyntaxTextAreaUI +{ + FlatRSyntaxTextAreaUI( JComponent rSyntaxTextArea ) { + super( rSyntaxTextArea ); + } + + @Override + protected void paintCurrentLineHighlight( Graphics g, Rectangle visibleRect ) { + if( !textArea.getHighlightCurrentLine() ) + return; + + // paint current line highlight always in the line where the caret is + try { + int dot = textArea.getCaret().getDot(); + Rectangle dotRect = textArea.modelToView( dot ); + int height = textArea.getLineHeight(); + + g.setColor( textArea.getCurrentLineHighlightColor() ); + g.fillRect( visibleRect.x, dotRect.y, visibleRect.width, height ); + } catch( BadLocationException ex ) { + super.paintCurrentLineHighlight( g, visibleRect ); + } + } +} diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatSyntaxTextArea.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatSyntaxTextArea.java index 05f7f8b3..6a15ad85 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatSyntaxTextArea.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatSyntaxTextArea.java @@ -18,13 +18,26 @@ package com.formdev.flatlaf.themeeditor; import java.awt.Color; import java.awt.KeyboardFocusManager; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import javax.swing.ActionMap; +import javax.swing.InputMap; +import javax.swing.KeyStroke; +import javax.swing.UIManager; import javax.swing.text.BadLocationException; +import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaEditorKit; import org.fife.ui.rsyntaxtextarea.TextEditorPane; import org.fife.ui.rsyntaxtextarea.Token; +import org.fife.ui.rtextarea.RTextArea; +import org.fife.ui.rtextarea.RTextAreaUI; +import org.fife.ui.rtextarea.RUndoManager; import com.formdev.flatlaf.UIDefaultsLoaderAccessor; +import com.formdev.flatlaf.themeeditor.FlatSyntaxTextAreaActions.InsertColorAction; +import com.formdev.flatlaf.themeeditor.FlatSyntaxTextAreaActions.DuplicateLinesAction; +import com.formdev.flatlaf.themeeditor.FlatSyntaxTextAreaActions.IncrementNumberAction; /** * A text area that supports editing FlatLaf themes. @@ -34,15 +47,58 @@ import com.formdev.flatlaf.UIDefaultsLoaderAccessor; class FlatSyntaxTextArea extends TextEditorPane { + private RUndoManager undoManager; private boolean useColorOfColorTokens; final FlatThemePropertiesSupport propertiesSupport = new FlatThemePropertiesSupport( this ); private final Map parsedColorsMap = new HashMap<>(); FlatSyntaxTextArea() { + // this is necessary because RTextAreaBase.init() always sets foreground to black + setForeground( UIManager.getColor( "TextArea.foreground" ) ); + // remove Ctrl+Tab and Ctrl+Shift+Tab focus traversal keys to allow tabbed pane to process them setFocusTraversalKeys( KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.emptySet() ); setFocusTraversalKeys( KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, Collections.emptySet() ); + + // add editor actions + ActionMap actionMap = getActionMap(); + actionMap.put( FlatSyntaxTextAreaActions.duplicateLinesUpAction, new DuplicateLinesAction( FlatSyntaxTextAreaActions.duplicateLinesUpAction, true ) ); + actionMap.put( FlatSyntaxTextAreaActions.duplicateLinesDownAction, new DuplicateLinesAction( FlatSyntaxTextAreaActions.duplicateLinesDownAction, false ) ); + actionMap.put( FlatSyntaxTextAreaActions.incrementNumberAction, new IncrementNumberAction( FlatSyntaxTextAreaActions.incrementNumberAction, true ) ); + actionMap.put( FlatSyntaxTextAreaActions.decrementNumberAction, new IncrementNumberAction( FlatSyntaxTextAreaActions.decrementNumberAction, false ) ); + actionMap.put( FlatSyntaxTextAreaActions.insertColorAction, new InsertColorAction( FlatSyntaxTextAreaActions.insertColorAction ) ); + + // add editor key strokes + InputMap inputMap = getInputMap(); + int defaultModifier = RTextArea.getDefaultModifier(); + int alt = InputEvent.ALT_DOWN_MASK; + inputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_UP, defaultModifier|alt), FlatSyntaxTextAreaActions.duplicateLinesUpAction ); + inputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_DOWN, defaultModifier|alt), FlatSyntaxTextAreaActions.duplicateLinesDownAction ); + inputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_UP, defaultModifier), FlatSyntaxTextAreaActions.incrementNumberAction ); + inputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_DOWN, defaultModifier), FlatSyntaxTextAreaActions.decrementNumberAction ); + // add Ctrl+7 for German keyboards where Ctrl+/ does not work + inputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_7, defaultModifier), RSyntaxTextAreaEditorKit.rstaToggleCommentAction ); + } + + @Override + protected RTextAreaUI createRTextAreaUI() { + return new FlatRSyntaxTextAreaUI( this ); + } + + @Override + protected RUndoManager createUndoManager() { + undoManager = super.createUndoManager(); + return undoManager; + } + + void runWithoutUndo( Runnable runnable ) { + getDocument().removeUndoableEditListener( undoManager ); + try { + runnable.run(); + } finally { + getDocument().addUndoableEditListener( undoManager ); + } } boolean isUseColorOfColorTokens() { diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatSyntaxTextAreaActions.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatSyntaxTextAreaActions.java new file mode 100644 index 00000000..30e5321b --- /dev/null +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatSyntaxTextAreaActions.java @@ -0,0 +1,387 @@ +/* + * Copyright 2021 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.themeeditor; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Point; +import java.awt.Window; +import java.awt.event.ActionEvent; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.prefs.Preferences; +import javax.swing.JColorChooser; +import javax.swing.JDialog; +import javax.swing.JTabbedPane; +import javax.swing.SwingUtilities; +import javax.swing.text.BadLocationException; +import org.fife.ui.rtextarea.RTextArea; +import org.fife.ui.rtextarea.RecordableTextAction; +import com.formdev.flatlaf.UIDefaultsLoaderAccessor; + +/** + * @author Karl Tauber + */ +class FlatSyntaxTextAreaActions +{ + static final String duplicateLinesUpAction = "FlatLaf.DuplicateLinesUpAction"; + static final String duplicateLinesDownAction = "FlatLaf.DuplicateLinesDownAction"; + static final String incrementNumberAction = "FlatLaf.IncrementNumberAction"; + static final String decrementNumberAction = "FlatLaf.DecrementNumberAction"; + static final String insertColorAction = "FlatLaf.InsertColorAction"; + + static int[] findColorAt( RTextArea textArea, int position ) { + try { + int start = position; + int end = position; + + // find first '#' or hex digit + for( int i = position - 1; i >= 0; i-- ) { + char ch = textArea.getText( i, 1 ).charAt( 0 ); + if( ch != '#' && !isHexDigit( ch ) ) + break; + start = i; + } + + // find last hex digit + int length = textArea.getDocument().getLength(); + for( int i = position; i < length; i++ ) { + if( !isHexDigit( textArea.getText( i, 1 ).charAt( 0 ) ) ) + break; + end = i + 1; + } + + // check for valid length (#RGB, #RGBA, #RRGGBB or #RRGGBBAA) + int len = end - start; + if( len != 4 && len != 5 && len != 7 && len != 9 ) + return null; + + // check whether starts with '#' + if( textArea.getText( start, 1 ).charAt( 0 ) != '#' ) + return null; + + return new int[] { start, end - start }; + } catch( BadLocationException | IndexOutOfBoundsException | NumberFormatException ex ) { + ex.printStackTrace(); + return null; + } + } + + static boolean isHexDigit( char ch ) { + return Character.isDigit( ch ) || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F'); + } + + static String colorToString( Color color ) { + int rgb = color.getRGB(); + int alpha = color.getAlpha(); + String format; + if( (rgb & 0xf) == ((rgb >> 4) & 0xf) && + ((rgb >> 8) & 0xf) == ((rgb >> 12) & 0xf) && + ((rgb >> 16) & 0xf) == ((rgb >> 20) & 0xf) && + ((rgb >> 24) & 0xf) == ((rgb >> 28) & 0xf) ) + { + // short format (#RGB or #RGBA) + format = (alpha != 255) ? "#%03x%01x" : "#%03x"; + rgb = (rgb & 0xf) | ((rgb >> 4) & 0xf0) | ((rgb >> 8) & 0xf00); + alpha &= 0xf; + } else { + // long format (#RRGGBB or #RRGGBBAA) + format = (alpha != 255) ? "#%06x%02x" : "#%06x"; + rgb &= 0xffffff; + } + + return String.format( format, rgb, alpha ); + } + + //---- class DuplicateLinesAction ----------------------------------------- + + static class DuplicateLinesAction + extends RecordableTextAction + { + private final boolean up; + + public DuplicateLinesAction( String name, boolean up ) { + super( name ); + this.up = up; + } + + @Override + public void actionPerformedImpl( ActionEvent e, RTextArea textArea ) { + try { + int selStart = textArea.getSelectionStart(); + int selEnd = textArea.getSelectionEnd(); + + int selStartLine = textArea.getLineOfOffset( selStart ); + int selEndLine = textArea.getLineOfOffset( selEnd ); + + // check whether selection end is at the beginning of the next line + if( selEnd > selStart && textArea.getLineOfOffset( selEnd - 1 ) < selEndLine ) + selEndLine--; + + int linesStart = textArea.getLineStartOffset( selStartLine ); + int linesEnd = textArea.getLineEndOffset( selEndLine ); + + String linesText = textArea.getText( linesStart, linesEnd - linesStart ); + if( !linesText.endsWith( "\n" ) ) + linesText += "\n"; + + textArea.replaceRange( linesText, linesStart, linesStart ); + + if( up ) + textArea.select( linesStart, linesStart + linesText.length() - 1 ); + else { + int newSelStart = linesStart + linesText.length(); + int newSelEnd = newSelStart + linesText.length(); + if( linesText.endsWith( "\n" ) ) + newSelEnd--; + textArea.select( newSelStart, newSelEnd ); + } + } catch( BadLocationException ex ) { + ex.printStackTrace(); + } + } + + @Override + public String getMacroID() { + return getName(); + } + } + + //---- class IncrementNumberAction ---------------------------------------- + + static class IncrementNumberAction + extends RecordableTextAction + { + private final boolean increment; + + IncrementNumberAction( String name, boolean increment ) { + super( name ); + this.increment = increment; + } + + @Override + public void actionPerformedImpl( ActionEvent e, RTextArea textArea ) { + if( !incrementRGBColor( textArea ) ) + incrementNumber( textArea ); + } + + private void incrementNumber( RTextArea textArea ) { + try { + int caretPosition = textArea.getCaretPosition(); + int start = caretPosition; + int end = caretPosition; + + // find first digit + for( int i = caretPosition - 1; i >= 0; i-- ) { + if( !Character.isDigit( textArea.getText( i, 1 ).charAt( 0 ) ) ) + break; + start = i; + } + + // find last digit + int length = textArea.getDocument().getLength(); + for( int i = caretPosition; i < length; i++ ) { + if( !Character.isDigit( textArea.getText( i, 1 ).charAt( 0 ) ) ) + break; + end = i + 1; + } + + if( start == end ) + return; + + // parse number + String str = textArea.getText( start, end - start ); + long number = Long.parseLong( str ); + + // increment/decrement number + if( increment ) + number++; + else + number--; + + if( number < 0 ) + return; + + // update editor + textArea.replaceRange( Long.toString( number ), start, end ); + } catch( BadLocationException | IndexOutOfBoundsException | NumberFormatException ex ) { + ex.printStackTrace(); + } + } + + private boolean incrementRGBColor( RTextArea textArea ) { + try { + int caretPosition = textArea.getCaretPosition(); + int[] result = findColorAt( textArea, caretPosition ); + if( result == null ) + return false; + + int start = result[0]; + int len = result[1]; + + // find start of color part that should be changed (red, green, blue or alpha) + int start2; + int hexDigitCount = (len == 4 || len == 5) ? 1 : 2; + if( hexDigitCount == 1 ) { + // #RGB or #RGBA + start2 = caretPosition - 1; + } else { + // #RRGGBB or #RRGGBBAA + int offset = caretPosition - (start + 1); + offset += (offset % 2); + start2 = start + 1 + offset - 2; + } + start2 = Math.max( start2, start + 1 ); + + // parse number + String str = textArea.getText( start2, hexDigitCount ); + int number = Integer.parseInt( str, 16 ); + + // increment/decrement number + if( increment ) + number++; + else + number--; + + // wrap numbers if less than zero or too large + int maxNumber = (hexDigitCount == 1) ? 15 : 255; + if( number < 0 ) + number = maxNumber; + else if( number > maxNumber ) + number = 0; + + // update editor + String newStr = String.format( hexDigitCount == 1 ? "%1x" : "%02x", number ); + textArea.replaceRange( newStr, start2, start2 + hexDigitCount ); + return true; + } catch( BadLocationException | IndexOutOfBoundsException | NumberFormatException ex ) { + ex.printStackTrace(); + return false; + } + } + + @Override + public String getMacroID() { + return getName(); + } + } + + //---- class InsertColorAction -------------------------------------------- + + static class InsertColorAction + extends RecordableTextAction + { + private static final String KEY_SELECTED_TAB = "colorchooser.selectedTab"; + + private static Point lastLocation; + + InsertColorAction( String name ) { + super( name ); + } + + @Override + public void actionPerformedImpl( ActionEvent e, RTextArea textArea ) { + try { + // find current color at caret + Color currentColor = Color.white; + int caretPosition = textArea.getCaretPosition(); + int start; + int len = 0; + String oldStr; + int[] result = findColorAt( textArea, caretPosition ); + if( result != null ) { + start = result[0]; + len = result[1]; + + oldStr = textArea.getText( start, len ); + int rgb = UIDefaultsLoaderAccessor.parseColorRGBA( oldStr ); + currentColor = new Color( rgb, true ); + } else { + start = caretPosition; + oldStr = ""; + } + + // create color chooser + JColorChooser chooser = new JColorChooser( currentColor ); + Component tabbedPane = chooser.getComponent( 0 ); + Preferences state = Preferences.userRoot().node( FlatThemeFileEditor.PREFS_ROOT_PATH ); + int selectedTab = state.getInt( KEY_SELECTED_TAB, -1 ); + if( tabbedPane instanceof JTabbedPane && selectedTab >= 0 && selectedTab < ((JTabbedPane)tabbedPane).getTabCount() ) + ((JTabbedPane)tabbedPane).setSelectedIndex( selectedTab ); + + // update editor immediately for live preview + AtomicInteger length = new AtomicInteger( len ); + AtomicBoolean changed = new AtomicBoolean(); + chooser.getSelectionModel().addChangeListener( e2 -> { + String str = colorToString( chooser.getColor() ); + ((FlatSyntaxTextArea)textArea).runWithoutUndo( () -> { + textArea.replaceRange( str, start, start + length.get() ); + } ); + length.set( str.length() ); + changed.set( true ); + } ); + Runnable restore = () -> { + if( changed.get() ) { + ((FlatSyntaxTextArea)textArea).runWithoutUndo( () -> { + textArea.replaceRange( oldStr, start, start + length.get() ); + } ); + length.set( oldStr.length() ); + } + }; + + // show color chooser dialog + Window window = SwingUtilities.windowForComponent( textArea ); + JDialog dialog = JColorChooser.createDialog( window, "Insert Color", true, chooser, + // okListener + e2 -> { + // restore original string + restore.run(); + + // update editor + String newStr = colorToString( chooser.getColor() ); + try { + if( !newStr.equals( textArea.getText( start, length.get() ) ) ) + textArea.replaceRange( newStr, start, start + length.get() ); + } catch( BadLocationException ex ) { + ex.printStackTrace(); + } + + // remember selected tab + if( tabbedPane instanceof JTabbedPane ) + state.putInt( KEY_SELECTED_TAB, ((JTabbedPane)tabbedPane).getSelectedIndex() ); + }, + // cancelListener + e2 -> { + // restore original string + restore.run(); + } ); + if( lastLocation != null ) + dialog.setLocation( lastLocation ); + dialog.setVisible( true ); + + lastLocation = dialog.getLocation(); + } catch( BadLocationException | IndexOutOfBoundsException | NumberFormatException ex ) { + ex.printStackTrace(); + } + } + + @Override + public String getMacroID() { + return getName(); + } + } +} diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditor.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditor.java new file mode 100644 index 00000000..5bd9efdb --- /dev/null +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditor.java @@ -0,0 +1,29 @@ +/* + * Copyright 2021 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.themeeditor; + +/** + * FlatLaf Theme Editor + * + * @author Karl Tauber + */ +public class FlatThemeEditor +{ + public static void main( String[] args ) { + FlatThemeFileEditor.main( args ); + } +} diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorOverlay.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorOverlay.java index 987e4f4d..e769a37c 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorOverlay.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorOverlay.java @@ -24,9 +24,11 @@ import java.awt.Point; import java.awt.Rectangle; import javax.swing.JComponent; import javax.swing.JLayer; +import javax.swing.UIDefaults.LazyValue; import javax.swing.plaf.LayerUI; import javax.swing.text.BadLocationException; import org.fife.ui.rsyntaxtextarea.Token; +import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.UIDefaultsLoaderAccessor; import com.formdev.flatlaf.ui.FlatUIUtils; import com.formdev.flatlaf.util.HSLColor; @@ -42,6 +44,9 @@ class FlatThemeEditorOverlay { private static final int COLOR_PREVIEW_WIDTH = 100; + static boolean showHSL = true; + static boolean showRGB; + private Font font; private Font baseFont; @@ -75,15 +80,22 @@ class FlatThemeEditorOverlay } FontMetrics fm = c.getFontMetrics( font ); - int maxTextWidth = fm.stringWidth( "HSL 360 100 100" ); + int maxTextWidth = 0; + if( showHSL ) + maxTextWidth += fm.stringWidth( "HSL 360 100 100" ); + if( showRGB ) + maxTextWidth += fm.stringWidth( "#ffffff" ); + if( showHSL && showRGB ) + maxTextWidth += fm.stringWidth( " " ); int textHeight = fm.getAscent() - fm.getLeading(); int width = c.getWidth(); int previewWidth = UIScale.scale( COLOR_PREVIEW_WIDTH ); int gap = UIScale.scale( 4 ); + int textGap = (showHSL || showRGB) ? UIScale.scale( 6 ) : 0; // check whether preview is outside of clip bounds - if( clipBounds.x + clipBounds.width < width - previewWidth - maxTextWidth - gap ) + if( clipBounds.x + clipBounds.width < width - previewWidth - maxTextWidth - gap - textGap ) return; g.setFont( font ); @@ -111,14 +123,33 @@ class FlatThemeEditorOverlay } // paint text - int textX = px - maxTextWidth; - if( textX > r.x + gap) { - float[] hsl = HSLColor.fromRGB( color ); - String hslStr = String.format( "HSL %3d %2d %2d", - Math.round( hsl[0] ), Math.round( hsl[1] ), Math.round( hsl[2] ) ); - g.setColor( textArea.getForeground() ); - FlatUIUtils.drawString( textArea, g, hslStr, textX, - r.y + ((r.height - textHeight) / 2) + textHeight ); + if( showHSL || showRGB ) { + int textX = px - textGap - maxTextWidth; + if( textX > r.x + gap) { + String colorStr = null; + if( showHSL ) { + float[] hsl = HSLColor.fromRGB( color ); + colorStr = String.format( (alpha != 255) ? "HSLA %3d %3d %3d %3d" : "HSL %3d %3d %3d", + Math.round( hsl[0] ), Math.round( hsl[1] ), Math.round( hsl[2] ), + Math.round( alpha / 255f * 100 ) ); + } + if( showRGB ) { + String rgbStr = String.format( (alpha != 255) ? "#%06x%02x" : "#%06x", + color.getRGB() & 0xffffff, alpha ); + if( colorStr != null ) + colorStr += " " + rgbStr; + else + colorStr = rgbStr; + } + + int textWidth = fm.stringWidth( colorStr ); + if( textWidth > maxTextWidth ) + textX -= (textWidth - maxTextWidth); + + g.setColor( textArea.getForeground() ); + FlatUIUtils.drawString( textArea, g, colorStr, textX, + r.y + ((r.height - textHeight) / 2) + textHeight ); + } } } catch( BadLocationException ex ) { // ignore @@ -128,6 +159,20 @@ class FlatThemeEditorOverlay private Color getColorInLine( FlatSyntaxTextArea textArea, int line ) { Object value = textArea.propertiesSupport.getParsedValueAtLine( line ); + + // resolve lazy value + if( value instanceof LazyValue ) { + Object[] pValue = new Object[] { value }; + FlatLaf.runWithUIDefaultsGetter( key -> { + return (key instanceof String) + ? textArea.propertiesSupport.getParsedProperty( (String) key ) + : null; + }, () -> { + pValue[0] = ((LazyValue)pValue[0]).createValue( null ); + } ); + value = pValue[0]; + } + if( value instanceof Color ) return (Color) value; diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java index d09b4c4f..f0d37ff6 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeEditorPane.java @@ -20,28 +20,34 @@ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.Window; +import java.awt.event.ActionEvent; import java.io.File; import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.List; +import javax.swing.Action; +import javax.swing.BorderFactory; +import javax.swing.InputMap; +import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLayer; import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import javax.swing.UIManager; -import javax.swing.border.MatteBorder; import org.fife.rsta.ui.CollapsibleSectionPanel; import org.fife.ui.autocomplete.AutoCompletion; import org.fife.ui.autocomplete.CompletionProvider; import org.fife.ui.rsyntaxtextarea.AbstractTokenMakerFactory; import org.fife.ui.rsyntaxtextarea.ErrorStrip; import org.fife.ui.rsyntaxtextarea.FileLocation; +import org.fife.ui.rsyntaxtextarea.Style; import org.fife.ui.rsyntaxtextarea.SyntaxScheme; import org.fife.ui.rsyntaxtextarea.TextEditorPane; -import org.fife.ui.rsyntaxtextarea.Theme; import org.fife.ui.rsyntaxtextarea.TokenMakerFactory; +import org.fife.ui.rsyntaxtextarea.TokenTypes; +import org.fife.ui.rtextarea.Gutter; +import org.fife.ui.rtextarea.RTextArea; import org.fife.ui.rtextarea.RTextScrollPane; import com.formdev.flatlaf.util.UIScale; @@ -60,7 +66,10 @@ class FlatThemeEditorPane private final CollapsibleSectionPanel collapsiblePanel; private final RTextScrollPane scrollPane; private final FlatSyntaxTextArea textArea; + private final ErrorStrip errorStrip; private FlatFindReplaceBar findReplaceBar; + private JScrollPane previewScrollPane; + private FlatThemePreview preview; private File file; @@ -82,20 +91,6 @@ class FlatThemeEditorPane firePropertyChange( DIRTY_PROPERTY, e.getOldValue(), e.getNewValue() ); } ); - // theme - try( InputStream in = getClass().getResourceAsStream( "light.xml" ) ) { - Theme theme = Theme.load( in ); - theme.apply( textArea ); - } catch( IOException ex ) { - ex.printStackTrace(); - } - - // use semitransparent token background because token background - // is painted over mark occurrences background - SyntaxScheme scheme = textArea.getSyntaxScheme(); - scheme.getStyle( FlatThemeTokenMaker.TOKEN_COLOR ).background = new Color( 0x0a000000, true ); - scheme.getStyle( FlatThemeTokenMaker.TOKEN_VARIABLE ).background = new Color( 0x1800cc00, true ); - // autocomplete CompletionProvider provider = new FlatCompletionProvider(); AutoCompletion ac = new AutoCompletion( provider ); @@ -111,29 +106,66 @@ class FlatThemeEditorPane // create scroll pane scrollPane = new RTextScrollPane( overlay ); - scrollPane.setBorder( null ); + scrollPane.setBorder( BorderFactory.createEmptyBorder() ); scrollPane.setLineNumbersEnabled( true ); - // scale fonts - if( UIScale.getUserScaleFactor() != 1 ) - textArea.setFont( scaleFont( textArea.getFont() ) ); - - // use same font for line numbers as in editor - scrollPane.getGutter().setLineNumberFont( textArea.getFont() ); + // map Ctrl+PageUp/Down to a not-existing action to avoid that the scrollpane catches them + InputMap inputMap = scrollPane.getInputMap( JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT ); + inputMap.put( KeyStroke.getKeyStroke( "ctrl PAGE_UP" ), "__dummy__" ); + inputMap.put( KeyStroke.getKeyStroke( "ctrl PAGE_DOWN" ), "__dummy__" ); // create error strip - ErrorStrip errorStrip = new ErrorStrip( textArea ); + errorStrip = new ErrorStrip( textArea ); // create collapsible panel collapsiblePanel = new CollapsibleSectionPanel(); collapsiblePanel.add( scrollPane ); collapsiblePanel.add( errorStrip, BorderLayout.LINE_END ); add( collapsiblePanel, BorderLayout.CENTER ); + + updateTheme(); } - private static Font scaleFont( Font font ) { - int newFontSize = UIScale.scale( font.getSize() ); - return font.deriveFont( (float) newFontSize ); + void updateTheme() { + Font defaultFont = RTextArea.getDefaultFont(); + Font font = defaultFont.deriveFont( (float) UIManager.getFont( "defaultFont" ).getSize() ); + + textArea.setFont( font ); + textArea.setBackground( UIManager.getColor( "FlatThemeEditorPane.background" ) ); + textArea.setCaretColor( UIManager.getColor( "FlatThemeEditorPane.caretColor" ) ); + textArea.setSelectionColor( UIManager.getColor( "FlatThemeEditorPane.selectionBackground" ) ); + textArea.setCurrentLineHighlightColor( UIManager.getColor( "FlatThemeEditorPane.currentLineHighlight" ) ); + textArea.setMarkAllHighlightColor( UIManager.getColor( "FlatThemeEditorPane.markAllHighlightColor" ) ); + textArea.setMarkOccurrencesColor( UIManager.getColor( "FlatThemeEditorPane.markOccurrencesColor" ) ); + textArea.setMatchedBracketBGColor( UIManager.getColor( "FlatThemeEditorPane.matchedBracketBackground" ) ); + textArea.setMatchedBracketBorderColor( UIManager.getColor( "FlatThemeEditorPane.matchedBracketBorderColor" ) ); + textArea.setPaintMatchedBracketPair( true ); + textArea.setAnimateBracketMatching( false ); + + // syntax + textArea.setSyntaxScheme( new FlatSyntaxScheme( font ) ); + + // gutter + Gutter gutter = scrollPane.getGutter(); + gutter.setBackground( UIManager.getColor( "FlatThemeEditorPane.gutter.background" ) ); + gutter.setBorderColor( UIManager.getColor( "FlatThemeEditorPane.gutter.borderColor" ) ); + gutter.setLineNumberColor( UIManager.getColor( "FlatThemeEditorPane.gutter.lineNumberColor" ) ); + gutter.setLineNumberFont( font ); + + // error strip + errorStrip.setCaretMarkerColor( UIManager.getColor( "FlatThemeEditorPane.errorstrip.caretMarkerColor" ) ); + + if( preview != null ) + preview.updateLater(); + } + + void updateFontSize( int sizeIncr ) { + Font defaultFont = RTextArea.getDefaultFont(); + Font font = defaultFont.deriveFont( (float) UIManager.getFont( "defaultFont" ).getSize() + sizeIncr ); + + textArea.setFont( font ); + textArea.setSyntaxScheme( new FlatSyntaxScheme( font ) ); + scrollPane.getGutter().setLineNumberFont( font ); } @Override @@ -141,8 +173,8 @@ class FlatThemeEditorPane return textArea.requestFocusInWindow(); } - void setBaseFiles( List baseFiles ) { - textArea.propertiesSupport.setBaseFiles( baseFiles ); + void initBasePropertyProvider( FlatThemePropertiesBaseManager propertiesBaseManager ) { + textArea.propertiesSupport.setBasePropertyProvider( propertiesBaseManager.create( file, textArea.propertiesSupport ) ); } File getFile() { @@ -152,7 +184,7 @@ class FlatThemeEditorPane void load( File file ) throws IOException { this.file = file; - textArea.load( FileLocation.create( file ), StandardCharsets.ISO_8859_1 ); + textArea.load( FileLocation.create( file ), "UTF-8" ); } boolean reloadIfNecessary() { @@ -191,6 +223,9 @@ class FlatThemeEditorPane textArea.reload(); textArea.select( selectionStart, selectionEnd ); + + if( findReplaceBar != null && findReplaceBar.isShowing() ) + findReplaceBar.markAll(); } catch( IOException ex ) { JOptionPane.showMessageDialog( this, "Failed to reload '" + textArea.getFileName() + "'\n\nReason: " + ex.getMessage(), @@ -226,11 +261,78 @@ class FlatThemeEditorPane void showFindReplaceBar() { if( findReplaceBar == null ) { findReplaceBar = new FlatFindReplaceBar( textArea ); - findReplaceBar.setBorder( new MatteBorder( 1, 0, 0, 0, - UIManager.getColor( "Component.borderColor" ) ) ); collapsiblePanel.addBottomComponent( findReplaceBar ); } collapsiblePanel.showBottomComponent( findReplaceBar ); } + + void showPreview( boolean show ) { + if( show ) { + if( preview != null ) + return; + + preview = new FlatThemePreview( textArea ); + previewScrollPane = new JScrollPane( preview ); + previewScrollPane.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_NEVER ); + previewScrollPane.setBorder( BorderFactory.createEmptyBorder() ); + previewScrollPane.getVerticalScrollBar().setUnitIncrement( 20 ); + previewScrollPane.getHorizontalScrollBar().setUnitIncrement( 20 ); + add( previewScrollPane, BorderLayout.LINE_END ); + } else { + if( preview == null ) + return; + + remove( previewScrollPane ); + previewScrollPane = null; + preview = null; + } + + revalidate(); + } + + void notifyTextAreaAction( String actionKey ) { + Action action = textArea.getActionMap().get( actionKey ); + if( action != null && action.isEnabled() ) + action.actionPerformed( new ActionEvent( textArea, ActionEvent.ACTION_PERFORMED, null ) ); + } + + //---- class FlatSyntaxScheme --------------------------------------------- + + private static class FlatSyntaxScheme + extends SyntaxScheme + { + FlatSyntaxScheme( Font baseFont ) { + super( false ); + + Style[] styles = getStyles(); + for( int i = 0; i < styles.length; i++ ) + styles[i] = new Style( Color.red ); + + init( "property", FlatThemeTokenMaker.TOKEN_PROPERTY, baseFont ); + init( "variable", FlatThemeTokenMaker.TOKEN_VARIABLE, baseFont ); + init( "number", FlatThemeTokenMaker.TOKEN_NUMBER, baseFont ); + init( "color", FlatThemeTokenMaker.TOKEN_COLOR, baseFont ); + init( "string", FlatThemeTokenMaker.TOKEN_STRING, baseFont ); + init( "function", FlatThemeTokenMaker.TOKEN_FUNCTION, baseFont ); + init( "type", FlatThemeTokenMaker.TOKEN_TYPE, baseFont ); + init( "reservedWord", TokenTypes.RESERVED_WORD, baseFont ); + init( "literalBoolean", TokenTypes.LITERAL_BOOLEAN, baseFont ); + init( "operator", TokenTypes.OPERATOR, baseFont ); + init( "separator", TokenTypes.SEPARATOR, baseFont ); + init( "whitespace", TokenTypes.WHITESPACE, baseFont ); + init( "comment", TokenTypes.COMMENT_EOL, baseFont ); + } + + private void init( String key, int token, Font baseFont ) { + String prefix = "FlatThemeEditorPane.style."; + Color fg = UIManager.getColor( prefix + key ); + Color bg = UIManager.getColor( prefix + key + ".background" ); + boolean italic = UIManager.getBoolean( prefix + key + ".italic" ); + Font font = Style.DEFAULT_FONT; + if( italic ) + font = baseFont.deriveFont( Font.ITALIC ); + getStyles()[token] = new Style( fg, bg, font ); + } + } } diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java index f2e74feb..c3b53a64 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.java @@ -16,32 +16,53 @@ package com.formdev.flatlaf.themeeditor; +import java.awt.AWTEvent; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Component; import java.awt.Container; +import java.awt.Cursor; +import java.awt.Desktop; import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Font; +import java.awt.Graphics; import java.awt.GraphicsConfiguration; import java.awt.Insets; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.event.*; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.net.URI; +import java.net.URISyntaxException; +import java.time.Year; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Objects; import java.util.function.Supplier; import java.util.prefs.Preferences; +import javax.lang.model.SourceVersion; import javax.swing.*; import net.miginfocom.swing.*; +import com.formdev.flatlaf.FlatDarculaLaf; +import com.formdev.flatlaf.FlatDarkLaf; +import com.formdev.flatlaf.FlatIntelliJLaf; +import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.FlatLightLaf; import com.formdev.flatlaf.extras.FlatInspector; import com.formdev.flatlaf.extras.FlatSVGIcon; +import com.formdev.flatlaf.extras.FlatSVGUtils; import com.formdev.flatlaf.extras.FlatUIDefaultsInspector; import com.formdev.flatlaf.extras.components.*; +import com.formdev.flatlaf.icons.FlatClearIcon; import com.formdev.flatlaf.ui.FlatUIUtils; import com.formdev.flatlaf.util.StringUtils; import com.formdev.flatlaf.util.UIScale; @@ -51,26 +72,45 @@ import com.formdev.flatlaf.util.UIScale; * * @author Karl Tauber */ -public class FlatThemeFileEditor +class FlatThemeFileEditor extends JFrame { - private static final String PREFS_ROOT_PATH = "/flatlaf-theme-editor"; + static final String PREFS_ROOT_PATH = "/flatlaf-theme-editor"; private static final String KEY_DIRECTORIES = "directories"; private static final String KEY_RECENT_DIRECTORY = "recentDirectory"; private static final String KEY_RECENT_FILE = "recentFile"; private static final String KEY_WINDOW_BOUNDS = "windowBounds"; + private static final String KEY_PREVIEW = "preview"; + private static final String KEY_LAF = "laf"; + private static final String KEY_FONT_SIZE_INCR = "fontSizeIncr"; + private static final String KEY_HSL_COLORS = "hslColors"; + private static final String KEY_RGB_COLORS = "rgbColors"; private File dir; private Preferences state; private boolean inLoadDirectory; - public static void main( String[] args ) { + private final FlatThemePropertiesBaseManager propertiesBaseManager = new FlatThemePropertiesBaseManager(); + private final JButton newButton; + + static void main( String[] args ) { File dir = (args.length > 0) ? new File( args[0] ) : null; + Locale.setDefault( Locale.ENGLISH ); + System.setProperty( "user.language", "en" ); + SwingUtilities.invokeLater( () -> { - FlatLightLaf.setup(); + FlatLaf.registerCustomDefaultsSource( "com.formdev.flatlaf.themeeditor" ); + + try { + String laf = Preferences.userRoot().node( PREFS_ROOT_PATH ).get( KEY_LAF, FlatLightLaf.class.getName() ); + UIManager.setLookAndFeel( laf ); + } catch( Exception ex ) { + FlatLightLaf.setup(); + } + FlatInspector.install( "ctrl alt shift X" ); FlatUIDefaultsInspector.install( "ctrl shift alt Y" ); @@ -80,9 +120,24 @@ public class FlatThemeFileEditor } private FlatThemeFileEditor( File dir ) { + setIconImages( FlatSVGUtils.createWindowIconImages( "/com/formdev/flatlaf/themeeditor/FlatLaf.svg" ) ); + initComponents(); + directoryField.setRenderer( new DirectoryRenderer( directoryField ) ); + openDirectoryButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/themeeditor/icons/menu-open.svg" ) ); + if( UIManager.getLookAndFeel() instanceof FlatDarkLaf ) + darkLafMenuItem.setSelected( true ); + + // add "+" button to tabbed pane + newButton = new JButton( new FlatSVGIcon( "com/formdev/flatlaf/themeeditor/icons/add.svg" ) ); + newButton.setToolTipText( "New Properties File" ); + newButton.addActionListener( e -> newPropertiesFile() ); + JToolBar trailingToolBar = new JToolBar(); + trailingToolBar.setFloatable( false ); + trailingToolBar.add( newButton ); + tabbedPane.setTrailingComponent( trailingToolBar ); restoreState(); restoreWindowBounds(); @@ -97,6 +152,10 @@ public class FlatThemeFileEditor dir = null; if( dir != null ) loadDirectory( dir ); + else if( directoryField.getSelectedItem() != null ) + loadDirectory( (File) directoryField.getSelectedItem() ); + + enableDisableActions(); } private void openDirectory() { @@ -135,9 +194,37 @@ public class FlatThemeFileEditor } if( getPropertiesFiles( dir ).length == 0 ) { - JOptionPane.showMessageDialog( parentComponent, - "Directory '" + dir + "' does not contain properties files.", - getTitle(), JOptionPane.INFORMATION_MESSAGE ); + UIManager.put( "OptionPane.sameSizeButtons", false ); + int result = JOptionPane.showOptionDialog( parentComponent, + "Directory '" + dir + "' does not contain properties files.\n\n" + + "Do you want create a new theme in this directory?\n\n" + + "Or do you want modify/extend core themes and create empty" + + " 'FlatLightLaf.properties' and 'FlatDarkLaf.properties' files in this directory?", + getTitle(), JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, + new Object[] { "New Theme", "Modify Core Themes", "Cancel" }, null ); + UIManager.put( "OptionPane.sameSizeButtons", null ); + + if( result == 0 ) + return newPropertiesFile( dir ); + else if( result == 1 ) { + try { + String content = + "# To use this in your application, make sure that this properties file\n" + + "# is included in your application JAR (e.g. in package `com.myapp.themes`)\n" + + "# and invoke `FlatLaf.registerCustomDefaultsSource( \"com.myapp.themes\" );`\n" + + "# before setting the look and feel.\n" + + "# https://www.formdev.com/flatlaf/how-to-customize/#application_properties\n" + + "\n"; + writeFile( new File( dir, "FlatLightLaf.properties" ), content ); + writeFile( new File( dir, "FlatDarkLaf.properties" ), content ); + return true; + } catch( IOException ex ) { + ex.printStackTrace(); + + JOptionPane.showMessageDialog( parentComponent, + "Failed to create 'FlatLightLaf.properties' or 'FlatDarkLaf.properties'." ); + } + } return false; } @@ -148,16 +235,15 @@ public class FlatThemeFileEditor if( inLoadDirectory ) return; - Object selectedItem = directoryField.getSelectedItem(); - if( selectedItem == null ) + File dir = (File) directoryField.getSelectedItem(); + if( dir == null ) return; - File dir = new File( (String) selectedItem ); if( checkDirectory( this, dir ) ) loadDirectory( dir ); else { // remove from directories history - directoryField.removeItem( selectedItem ); + directoryField.removeItem( dir ); directoryField.setSelectedItem( this.dir.getAbsolutePath() ); saveState(); } @@ -173,6 +259,7 @@ public class FlatThemeFileEditor return; this.dir = dir; + propertiesBaseManager.clear(); inLoadDirectory = true; @@ -182,23 +269,20 @@ public class FlatThemeFileEditor tabbedPane.removeTabAt( i ); // update directory field - DefaultComboBoxModel model = (DefaultComboBoxModel) directoryField.getModel(); - String dirStr = dir.getAbsolutePath(); - int indexOf = model.getIndexOf( dirStr ); + DefaultComboBoxModel model = (DefaultComboBoxModel) directoryField.getModel(); + int indexOf = model.getIndexOf( dir ); if( indexOf < 0 ) - model.addElement( dirStr ); - directoryField.setSelectedItem( dirStr ); + model.addElement( dir ); + directoryField.setSelectedItem( dir ); // open all properties files in directory String recentFile = state.get( KEY_RECENT_FILE, null ); for( File file : getPropertiesFiles( dir ) ) openFile( file, file.getName().equals( recentFile ) ); - FlatThemeEditorPane themeEditorPane = (FlatThemeEditorPane) tabbedPane.getSelectedComponent(); - if( themeEditorPane != null ) - themeEditorPane.requestFocusInWindow(); - + activateEditor(); saveState(); + enableDisableActions(); inLoadDirectory = false; } @@ -240,18 +324,36 @@ public class FlatThemeFileEditor File[] propertiesFiles = dir.listFiles( (d, name) -> { return name.endsWith( ".properties" ); } ); - Arrays.sort( propertiesFiles ); + Arrays.sort( propertiesFiles, (f1, f2) -> { + String n1 = toSortName( f1.getName() ); + String n2 = toSortName( f2.getName() ); + return n1.compareToIgnoreCase( n2 ); + } ); return propertiesFiles; } + private String toSortName( String name ) { + switch( name ) { + case "FlatLaf.properties": return "\0\0"; + case "FlatLightLaf.properties": return "\0\1"; + case "FlatDarkLaf.properties": return "\0\2"; + case "FlatIntelliJLaf.properties": return "\0\3"; + case "FlatDarculaLaf.properties": return "\0\4"; + default: return name; + } + } + private void openFile( File file, boolean select ) { FlatThemeEditorPane themeEditorPane = new FlatThemeEditorPane(); + themeEditorPane.updateFontSize( getFontSizeIncr() ); try { themeEditorPane.load( file ); } catch( IOException ex ) { ex.printStackTrace(); // TODO } + themeEditorPane.initBasePropertyProvider( propertiesBaseManager ); + Supplier titleFun = () -> { return (themeEditorPane.isDirty() ? "* " : "") + StringUtils.removeTrailing( themeEditorPane.getFile().getName(), ".properties" ); @@ -262,6 +364,9 @@ public class FlatThemeFileEditor tabbedPane.setTitleAt( index, titleFun.get() ); } ); + if( state.getBoolean( KEY_PREVIEW, true ) ) + themeEditorPane.showPreview( true ); + tabbedPane.addTab( titleFun.get(), null, themeEditorPane, file.getAbsolutePath() ); if( select ) @@ -272,11 +377,204 @@ public class FlatThemeFileEditor if( inLoadDirectory ) return; + enableDisableActions(); + FlatThemeEditorPane themeEditorPane = (FlatThemeEditorPane) tabbedPane.getSelectedComponent(); String filename = (themeEditorPane != null) ? themeEditorPane.getFile().getName() : null; putPrefsString( state, KEY_RECENT_FILE, filename ); } + private void enableDisableActions() { + boolean dirOpen = (directoryField.getSelectedItem() != null); + boolean editorOpen = (dirOpen &&tabbedPane.getSelectedIndex() >= 0); + + // enable/disable buttons + newButton.setEnabled( dirOpen ); + + // enable/disable menu items + newPropertiesFileMenuItem.setEnabled( dirOpen ); + saveAllMenuItem.setEnabled( editorOpen ); + findMenuItem.setEnabled( editorOpen ); + insertColorMenuItem.setEnabled( editorOpen ); + activateEditorMenuItem.setEnabled( editorOpen ); + nextEditorMenuItem.setEnabled( editorOpen ); + previousEditorMenuItem.setEnabled( editorOpen ); + } + + private boolean newPropertiesFile() { + return newPropertiesFile( dir ); + } + + private boolean newPropertiesFile( File dir ) { + String title = "New Properties File"; + JTextField themeNameField = new JTextField(); + JComboBox baseThemeField = new JComboBox<>( new String[] { + FlatLightLaf.NAME, + FlatDarkLaf.NAME, + FlatIntelliJLaf.NAME, + FlatDarculaLaf.NAME, + } ); + + JOptionPane optionPane = new JOptionPane( new Object[] { + new JLabel( "Theme name:" ), + themeNameField, + new JLabel( "Base Theme:" ), + baseThemeField, + }, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION ) { + @Override + public void selectInitialValue() { + super.selectInitialValue(); + themeNameField.requestFocusInWindow(); + } + + @Override + public void setValue( Object newValue ) { + if( Objects.equals( newValue, JOptionPane.OK_OPTION ) ) { + String themeName = themeNameField.getText().trim(); + if( themeName.isEmpty() ) + return; + + if( !SourceVersion.isIdentifier( themeName ) ) { + JOptionPane.showMessageDialog( this, + "'" + themeName + "' is not a valid Java identifier.", + title, JOptionPane.INFORMATION_MESSAGE ); + return; + } + + File file = new File( dir, themeName + ".properties" ); + if( file.exists() ) { + JOptionPane.showMessageDialog( this, "Theme '" + themeName + "' already exists.", title, JOptionPane.INFORMATION_MESSAGE ); + return; + } + + try { + String baseTheme = (String) baseThemeField.getSelectedItem(); + createTheme( file, baseTheme ); + createThemeClass( dir, themeName, baseTheme ); + openFile( file, true ); + } catch( IOException ex ) { + ex.printStackTrace(); + + JOptionPane.showMessageDialog( this, + "Failed to create '" + file + "'." ); + return; + } + } + + super.setValue( newValue ); + } + }; + + JDialog dialog = optionPane.createDialog( this, title ); + dialog.setVisible( true ); + + return Objects.equals( optionPane.getValue(), JOptionPane.OK_OPTION ); + } + + private void createTheme( File file, String baseTheme ) + throws IOException + { + StringBuilder buf = new StringBuilder(); + buf.append( "# base theme (light, dark, intellij or darcula); only used by theme editor\n" ); + switch( baseTheme ) { + case FlatLightLaf.NAME: buf.append( "@baseTheme = light\n" ); break; + case FlatDarkLaf.NAME: buf.append( "@baseTheme = dark\n" ); break; + case FlatIntelliJLaf.NAME: buf.append( "@baseTheme = intellij\n" ); break; + case FlatDarculaLaf.NAME: buf.append( "@baseTheme = darcula\n" ); break; + } + + writeFile( file, buf.toString() ); + } + + private void createThemeClass( File dir, String themeName, String baseTheme ) + throws IOException + { + // search for "resources" parent directory that has "java" directory at same level + File classDir = dir; + String subPath = null; + String pkg = null; + for( File d = dir; d != null; d = d.getParentFile() ) { + String name = d.getName(); + if( name.equals( "resources" ) ) { + File javaDir = new File( d.getParentFile(), "java" ); + if( javaDir.isDirectory() ) { + classDir = new File( javaDir, subPath ); + classDir.mkdirs(); + pkg = subPath.replace( '/', '.' ); + } + break; + } + subPath = (subPath != null) ? (name + '/' + subPath) : name; + } + + // search for "java" or "src" parent directories for package statement + if( pkg == null ) { + String pkg2 = null; + for( File d = dir; d != null; d = d.getParentFile() ) { + String name = d.getName(); + if( name.equals( "java" ) || name.equals( "src" )) { + pkg = pkg2; + break; + } + pkg2 = (pkg2 != null) ? (name + '.' + pkg2) : name; + } + } + + // do not overwrite exiting class + File file = new File( classDir, themeName + ".java" ); + if( file.exists() ) + return; + + String themeBaseClass; + switch( baseTheme ) { + default: + case FlatLightLaf.NAME: themeBaseClass = "FlatLightLaf"; break; + case FlatDarkLaf.NAME: themeBaseClass = "FlatDarkLaf"; break; + case FlatIntelliJLaf.NAME: themeBaseClass = "FlatIntelliJLaf"; break; + case FlatDarculaLaf.NAME: themeBaseClass = "FlatDarculaLaf"; break; + } + + String pkgStmt = (pkg != null) ? "package " + pkg + ";\n\n" : ""; + String classBody = CLASS_TEMPLATE + .replace( "${themeClass}", themeName ) + .replace( "${themeBaseClass}", themeBaseClass ); + + writeFile( file, pkgStmt + classBody ); + } + + private static final String CLASS_TEMPLATE = + "import com.formdev.flatlaf.${themeBaseClass};\n" + + "\n" + + "public class ${themeClass}\n" + + " extends ${themeBaseClass}\n" + + "{\n" + + " public static final String NAME = \"${themeClass}\";\n" + + "\n" + + " public static boolean setup() {\n" + + " return setup( new ${themeClass}() );\n" + + " }\n" + + "\n" + + " public static void installLafInfo() {\n" + + " installLafInfo( NAME, ${themeClass}.class );\n" + + " }\n" + + "\n" + + " @Override\n" + + " public String getName() {\n" + + " return NAME;\n" + + " }\n" + + "}\n"; + + private static void writeFile( File file, String content ) + throws IOException + { + try( + FileOutputStream out = new FileOutputStream( file ); + Writer writer = new OutputStreamWriter( out, "UTF-8" ); + ) { + writer.write( content ); + } + } + private boolean saveAll() { for( FlatThemeEditorPane themeEditorPane : getThemeEditorPanes() ) { if( !themeEditorPane.saveIfDirty() ) @@ -312,24 +610,23 @@ public class FlatThemeFileEditor return result; } - private void nextEditor() { - if( tabbedPane.getTabCount() == 0 ) - return; + private void activateEditor() { + FlatThemeEditorPane themeEditorPane = (FlatThemeEditorPane) tabbedPane.getSelectedComponent(); + if( themeEditorPane != null ) + themeEditorPane.requestFocusInWindow(); + } - int index = tabbedPane.getSelectedIndex() + 1; - if( index >= tabbedPane.getTabCount() ) - index = 0; - tabbedPane.setSelectedIndex( index ); + private void nextEditor() { + notifyTabbedPaneAction( tabbedPane.getActionMap().get( "navigatePageDown" ) ); } private void previousEditor() { - if( tabbedPane.getTabCount() == 0 ) - return; + notifyTabbedPaneAction( tabbedPane.getActionMap().get( "navigatePageUp" ) ); + } - int index = tabbedPane.getSelectedIndex() - 1; - if( index < 0 ) - index = tabbedPane.getTabCount() - 1; - tabbedPane.setSelectedIndex( index ); + private void notifyTabbedPaneAction( Action action ) { + if( action != null && action.isEnabled() ) + action.actionPerformed( new ActionEvent( tabbedPane, ActionEvent.ACTION_PERFORMED, null ) ); } private void find() { @@ -338,21 +635,141 @@ public class FlatThemeFileEditor themeEditorPane.showFindReplaceBar(); } + private void insertColor() { + FlatThemeEditorPane themeEditorPane = (FlatThemeEditorPane) tabbedPane.getSelectedComponent(); + if( themeEditorPane != null ) + themeEditorPane.notifyTextAreaAction( FlatSyntaxTextAreaActions.insertColorAction ); + } + + private void showHidePreview() { + boolean show = previewMenuItem.isSelected(); + for( FlatThemeEditorPane themeEditorPane : getThemeEditorPanes() ) + themeEditorPane.showPreview( show ); + putPrefsBoolean( state, KEY_PREVIEW, show, true ); + } + + private void lightLaf() { + applyLookAndFeel( FlatLightLaf.class.getName() ); + } + + private void darkLaf() { + applyLookAndFeel( FlatDarkLaf.class.getName() ); + } + + private void applyLookAndFeel( String lafClassName ) { + if( UIManager.getLookAndFeel().getClass().getName().equals( lafClassName ) ) + return; + + try { + UIManager.setLookAndFeel( lafClassName ); + FlatLaf.updateUI(); + for( FlatThemeEditorPane themeEditorPane : getThemeEditorPanes() ) + themeEditorPane.updateTheme(); + state.put( KEY_LAF, lafClassName ); + } catch( Exception ex ) { + ex.printStackTrace(); + } + } + + private void incrFontSize() { + applyFontSizeIncr( getFontSizeIncr() + 1 ); + } + + private void decrFontSize() { + applyFontSizeIncr( getFontSizeIncr() - 1 ); + } + + private void resetFontSize() { + applyFontSizeIncr( 0 ); + } + + private void applyFontSizeIncr( int sizeIncr ) { + if( sizeIncr < -5 ) + sizeIncr = -5; + if( sizeIncr == getFontSizeIncr() ) + return; + + for( FlatThemeEditorPane themeEditorPane : getThemeEditorPanes() ) + themeEditorPane.updateFontSize( sizeIncr ); + state.putInt( KEY_FONT_SIZE_INCR, sizeIncr ); + } + + private int getFontSizeIncr() { + return state.getInt( KEY_FONT_SIZE_INCR, 0 ); + } + + private void colorModelChanged() { + FlatThemeEditorOverlay.showHSL = showHSLColorsMenuItem.isSelected(); + FlatThemeEditorOverlay.showRGB = showRGBColorsMenuItem.isSelected(); + + putPrefsBoolean( state, KEY_HSL_COLORS, FlatThemeEditorOverlay.showHSL, true ); + putPrefsBoolean( state, KEY_RGB_COLORS, FlatThemeEditorOverlay.showRGB, false ); + + repaint(); + } + + private void about() { + JLabel titleLabel = new JLabel( "FlatLaf Theme Editor" ); + Font titleFont = titleLabel.getFont(); + titleLabel.setFont( titleFont.deriveFont( (float) titleFont.getSize() + UIScale.scale( 6 ) ) ); + + String link = "https://www.formdev.com/flatlaf/"; + JLabel linkLabel = new JLabel( "" + link + "" ); + linkLabel.setCursor( Cursor.getPredefinedCursor( Cursor.HAND_CURSOR ) ); + linkLabel.addMouseListener( new MouseAdapter() { + @Override + public void mouseClicked( MouseEvent e ) { + try { + Desktop.getDesktop().browse( new URI( link ) ); + } catch( IOException | URISyntaxException ex ) { + JOptionPane.showMessageDialog( linkLabel, + "Failed to open '" + link + "' in browser.", + "About", JOptionPane.PLAIN_MESSAGE ); + } + } + } ); + + + JOptionPane.showMessageDialog( this, + new Object[] { + titleLabel, + "Edits FlatLaf Swing look and feel theme files", + " ", + "Copyright 2019-" + Year.now() + " FormDev Software GmbH", + linkLabel, + }, + "About", JOptionPane.PLAIN_MESSAGE ); + } + private void restoreState() { state = Preferences.userRoot().node( PREFS_ROOT_PATH ); // restore directories history String[] directories = getPrefsStrings( state, KEY_DIRECTORIES ); - SortedComboBoxModel model = new SortedComboBoxModel<>( directories ); + SortedComboBoxModel model = new SortedComboBoxModel<>( new File[0] ); + for( String dirStr : directories ) { + File dir = new File( dirStr ); + if( dir.isDirectory() ) + model.addElement( dir ); + } directoryField.setModel( model ); + + // restore overlay color models + FlatThemeEditorOverlay.showHSL = state.getBoolean( KEY_HSL_COLORS, true ); + FlatThemeEditorOverlay.showRGB = state.getBoolean( KEY_RGB_COLORS, false ); + + // restore menu item selection + previewMenuItem.setSelected( state.getBoolean( KEY_PREVIEW, true ) ); + showHSLColorsMenuItem.setSelected( FlatThemeEditorOverlay.showHSL ); + showRGBColorsMenuItem.setSelected( FlatThemeEditorOverlay.showRGB ); } private void saveState() { // save directories history - ComboBoxModel model = directoryField.getModel(); + ComboBoxModel model = directoryField.getModel(); String[] directories = new String[model.getSize()]; for( int i = 0; i < directories.length; i++ ) - directories[i] = model.getElementAt( i ); + directories[i] = model.getElementAt( i ).getAbsolutePath(); putPrefsStrings( state, KEY_DIRECTORIES, directories ); // save recent directory @@ -365,10 +782,10 @@ public class FlatThemeFileEditor List list = StringUtils.split( windowBoundsStr, ',' ); if( list.size() >= 4 ) { try { - int x = Integer.parseInt( list.get( 0 ) ); - int y = Integer.parseInt( list.get( 1 ) ); - int w = Integer.parseInt( list.get( 2 ) ); - int h = Integer.parseInt( list.get( 3 ) ); + int x = UIScale.scale( Integer.parseInt( list.get( 0 ) ) ); + int y = UIScale.scale( Integer.parseInt( list.get( 1 ) ) ); + int w = UIScale.scale( Integer.parseInt( list.get( 2 ) ) ); + int h = UIScale.scale( Integer.parseInt( list.get( 3 ) ) ); // limit to screen size GraphicsConfiguration gc = getGraphicsConfiguration(); @@ -400,7 +817,18 @@ public class FlatThemeFileEditor private void saveWindowBounds() { Rectangle r = getBounds(); - state.put( KEY_WINDOW_BOUNDS, r.x + "," + r.y + ',' + r.width + ',' + r.height ); + int x = UIScale.unscale( r.x ); + int y = UIScale.unscale( r.y ); + int width = UIScale.unscale( r.width ); + int height = UIScale.unscale( r.height ); + state.put( KEY_WINDOW_BOUNDS, x + "," + y + ',' + width + ',' + height ); + } + + private static void putPrefsBoolean( Preferences prefs, String key, boolean value, boolean defaultValue ) { + if( value != defaultValue ) + prefs.putBoolean( key, value ); + else + prefs.remove( key ); } private static void putPrefsString( Preferences prefs, String key, String value ) { @@ -434,16 +862,30 @@ public class FlatThemeFileEditor menuBar = new JMenuBar(); fileMenu = new JMenu(); openDirectoryMenuItem = new JMenuItem(); + newPropertiesFileMenuItem = new JMenuItem(); saveAllMenuItem = new JMenuItem(); exitMenuItem = new JMenuItem(); editMenu = new JMenu(); findMenuItem = new JMenuItem(); + insertColorMenuItem = new JMenuItem(); + viewMenu = new JMenu(); + previewMenuItem = new JCheckBoxMenuItem(); + lightLafMenuItem = new JRadioButtonMenuItem(); + darkLafMenuItem = new JRadioButtonMenuItem(); + incrFontSizeMenuItem = new JMenuItem(); + decrFontSizeMenuItem = new JMenuItem(); + resetFontSizeMenuItem = new JMenuItem(); + showHSLColorsMenuItem = new JCheckBoxMenuItem(); + showRGBColorsMenuItem = new JCheckBoxMenuItem(); windowMenu = new JMenu(); + activateEditorMenuItem = new JMenuItem(); nextEditorMenuItem = new JMenuItem(); previousEditorMenuItem = new JMenuItem(); + helpMenu = new JMenu(); + aboutMenuItem = new JMenuItem(); controlPanel = new JPanel(); directoryLabel = new JLabel(); - directoryField = new JComboBox<>(); + directoryField = new FlatThemeFileEditor.DirectoryComboBox(); openDirectoryButton = new JButton(); tabbedPane = new FlatTabbedPane(); @@ -481,6 +923,13 @@ public class FlatThemeFileEditor openDirectoryMenuItem.addActionListener(e -> openDirectory()); fileMenu.add(openDirectoryMenuItem); + //---- newPropertiesFileMenuItem ---- + newPropertiesFileMenuItem.setText("New Properties File..."); + newPropertiesFileMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_DOWN_MASK)); + newPropertiesFileMenuItem.setMnemonic('N'); + newPropertiesFileMenuItem.addActionListener(e -> newPropertiesFile()); + fileMenu.add(newPropertiesFileMenuItem); + //---- saveAllMenuItem ---- saveAllMenuItem.setText("Save All"); saveAllMenuItem.setMnemonic('S'); @@ -504,22 +953,95 @@ public class FlatThemeFileEditor editMenu.setMnemonic('E'); //---- findMenuItem ---- - findMenuItem.setText("Find/Replace..."); + findMenuItem.setText("Find/Replace"); findMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); findMenuItem.setMnemonic('F'); findMenuItem.addActionListener(e -> find()); editMenu.add(findMenuItem); + editMenu.addSeparator(); + + //---- insertColorMenuItem ---- + insertColorMenuItem.setText("Insert Color"); + insertColorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, KeyEvent.CTRL_DOWN_MASK)); + insertColorMenuItem.addActionListener(e -> insertColor()); + editMenu.add(insertColorMenuItem); } menuBar.add(editMenu); + //======== viewMenu ======== + { + viewMenu.setText("View"); + viewMenu.setMnemonic('V'); + + //---- previewMenuItem ---- + previewMenuItem.setText("Preview"); + previewMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_DOWN_MASK)); + previewMenuItem.addActionListener(e -> showHidePreview()); + viewMenu.add(previewMenuItem); + viewMenu.addSeparator(); + + //---- lightLafMenuItem ---- + lightLafMenuItem.setText("Light Laf"); + lightLafMenuItem.setMnemonic('L'); + lightLafMenuItem.setSelected(true); + lightLafMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, KeyEvent.ALT_DOWN_MASK)); + lightLafMenuItem.addActionListener(e -> lightLaf()); + viewMenu.add(lightLafMenuItem); + + //---- darkLafMenuItem ---- + darkLafMenuItem.setText("Dark Laf"); + darkLafMenuItem.setMnemonic('D'); + darkLafMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2, KeyEvent.ALT_DOWN_MASK)); + darkLafMenuItem.addActionListener(e -> darkLaf()); + viewMenu.add(darkLafMenuItem); + viewMenu.addSeparator(); + + //---- incrFontSizeMenuItem ---- + incrFontSizeMenuItem.setText("Increase Font Size"); + incrFontSizeMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + incrFontSizeMenuItem.addActionListener(e -> incrFontSize()); + viewMenu.add(incrFontSizeMenuItem); + + //---- decrFontSizeMenuItem ---- + decrFontSizeMenuItem.setText("Decrease Font Size"); + decrFontSizeMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + decrFontSizeMenuItem.addActionListener(e -> decrFontSize()); + viewMenu.add(decrFontSizeMenuItem); + + //---- resetFontSizeMenuItem ---- + resetFontSizeMenuItem.setText("Reset Font Size"); + resetFontSizeMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_0, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + resetFontSizeMenuItem.addActionListener(e -> resetFontSize()); + viewMenu.add(resetFontSizeMenuItem); + viewMenu.addSeparator(); + + //---- showHSLColorsMenuItem ---- + showHSLColorsMenuItem.setText("Show HSL colors"); + showHSLColorsMenuItem.addActionListener(e -> colorModelChanged()); + viewMenu.add(showHSLColorsMenuItem); + + //---- showRGBColorsMenuItem ---- + showRGBColorsMenuItem.setText("Show RGB colors (hex)"); + showRGBColorsMenuItem.addActionListener(e -> colorModelChanged()); + viewMenu.add(showRGBColorsMenuItem); + } + menuBar.add(viewMenu); + //======== windowMenu ======== { windowMenu.setText("Window"); windowMenu.setMnemonic('W'); + //---- activateEditorMenuItem ---- + activateEditorMenuItem.setText("Activate Editor"); + activateEditorMenuItem.setMnemonic('A'); + activateEditorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F12, 0)); + activateEditorMenuItem.addActionListener(e -> activateEditor()); + windowMenu.add(activateEditorMenuItem); + //---- nextEditorMenuItem ---- nextEditorMenuItem.setText("Next Editor"); - nextEditorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + nextEditorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); nextEditorMenuItem.setMnemonic('N'); nextEditorMenuItem.addActionListener(e -> nextEditor()); windowMenu.add(nextEditorMenuItem); @@ -527,11 +1049,24 @@ public class FlatThemeFileEditor //---- previousEditorMenuItem ---- previousEditorMenuItem.setText("Previous Editor"); previousEditorMenuItem.setMnemonic('P'); - previousEditorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()|KeyEvent.SHIFT_DOWN_MASK)); + previousEditorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); previousEditorMenuItem.addActionListener(e -> previousEditor()); windowMenu.add(previousEditorMenuItem); } menuBar.add(windowMenu); + + //======== helpMenu ======== + { + helpMenu.setText("Help"); + helpMenu.setMnemonic('H'); + + //---- aboutMenuItem ---- + aboutMenuItem.setText("About"); + aboutMenuItem.setMnemonic('A'); + aboutMenuItem.addActionListener(e -> about()); + helpMenu.add(aboutMenuItem); + } + menuBar.add(helpMenu); } setJMenuBar(menuBar); @@ -553,6 +1088,7 @@ public class FlatThemeFileEditor //---- directoryField ---- directoryField.setEditable(false); directoryField.setFocusable(false); + directoryField.setMaximumRowCount(30); directoryField.addActionListener(e -> directoryChanged()); controlPanel.add(directoryField, "cell 1 0"); @@ -570,6 +1106,11 @@ public class FlatThemeFileEditor tabbedPane.addChangeListener(e -> selectedTabChanged()); } contentPane.add(tabbedPane, BorderLayout.CENTER); + + //---- lafButtonGroup ---- + ButtonGroup lafButtonGroup = new ButtonGroup(); + lafButtonGroup.add(lightLafMenuItem); + lafButtonGroup.add(darkLafMenuItem); // JFormDesigner - End of component initialization //GEN-END:initComponents } @@ -577,16 +1118,30 @@ public class FlatThemeFileEditor private JMenuBar menuBar; private JMenu fileMenu; private JMenuItem openDirectoryMenuItem; + private JMenuItem newPropertiesFileMenuItem; private JMenuItem saveAllMenuItem; private JMenuItem exitMenuItem; private JMenu editMenu; private JMenuItem findMenuItem; + private JMenuItem insertColorMenuItem; + private JMenu viewMenu; + private JCheckBoxMenuItem previewMenuItem; + private JRadioButtonMenuItem lightLafMenuItem; + private JRadioButtonMenuItem darkLafMenuItem; + private JMenuItem incrFontSizeMenuItem; + private JMenuItem decrFontSizeMenuItem; + private JMenuItem resetFontSizeMenuItem; + private JCheckBoxMenuItem showHSLColorsMenuItem; + private JCheckBoxMenuItem showRGBColorsMenuItem; private JMenu windowMenu; + private JMenuItem activateEditorMenuItem; private JMenuItem nextEditorMenuItem; private JMenuItem previousEditorMenuItem; + private JMenu helpMenu; + private JMenuItem aboutMenuItem; private JPanel controlPanel; private JLabel directoryLabel; - private JComboBox directoryField; + private JComboBox directoryField; private JButton openDirectoryButton; private FlatTabbedPane tabbedPane; // JFormDesigner - End of variables declaration //GEN-END:variables @@ -644,9 +1199,139 @@ public class FlatThemeFileEditor else if( cmp > 0 ) high = mid - 1; else - return mid; // key found + return mid; // found } - return -(low + 1); // key not found. + + // not found + return -(low + 1); } } + + //---- class DirectoryComboBox -------------------------------------------- + + private class DirectoryComboBox + extends JComboBox + { + static final int CLEAR_WIDTH = 24; + + @Override + public void setSelectedIndex( int index ) { + if( isClearHit() ) { + removeItemAt( index ); + saveState(); + return; + } + + super.setSelectedIndex( index ); + } + + @Override + public void setPopupVisible( boolean v ) { + if( isClearHit() ) + return; + + super.setPopupVisible( v ); + } + + private boolean isClearHit() { + AWTEvent currentEvent = EventQueue.getCurrentEvent(); + if( currentEvent instanceof MouseEvent && currentEvent.getSource() instanceof JList ) { + MouseEvent e = (MouseEvent) currentEvent; + JList list = (JList) currentEvent.getSource(); + if( e.getX() >= list.getWidth() - UIScale.scale( CLEAR_WIDTH ) ) + return true; + } + return false; + } + } + + //---- class DirectoryRenderer -------------------------------------------- + + private static class DirectoryRenderer + extends DefaultListCellRenderer + { + private static class MyClearIcon + extends FlatClearIcon + { + void setClearIconColor( Color color ) { + clearIconColor = color; + } + } + + private final JComboBox comboBox; + private final MyClearIcon clearIcon = new MyClearIcon(); + private boolean paintClearIcon; + private Color highlightColor; + + DirectoryRenderer( JComboBox comboBox ) { + this.comboBox = comboBox; + } + + @Override + public Component getListCellRendererComponent( JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus ) + { + if( index > 0 && !isSelected ) { + File dir = (File) value; + File previousDir = (File) list.getModel().getElementAt( index - 1 ); + String path = dir.getAbsolutePath(); + String previousPath = previousDir.getAbsolutePath(); + for( File d = dir.getParentFile(); d != null; d = d.getParentFile() ) { + String p = d.getAbsolutePath(); + if( previousPath.startsWith( p ) && d.getParent() != null ) { + value = "" + toDimmedText( p ) + path.substring( p.length() ) + ""; + break; + } + } + } + + super.getListCellRendererComponent( list, value, index, isSelected, cellHasFocus ); + + highlightColor =(index >= 0 && index == comboBox.getSelectedIndex()) + ? list.getSelectionBackground() + : null; + + paintClearIcon = isSelected; + if( paintClearIcon ) + clearIcon.setClearIconColor( getForeground() ); + + return this; + } + + private static String toDimmedText( String text ) { + Color color = UIManager.getColor( "Label.disabledForeground" ); + if( color == null ) + color = UIManager.getColor( "Label.disabledText" ); + if( color == null ) + color = Color.GRAY; + return String.format( "%s", + color.getRGB() & 0xffffff, text ); + } + + @Override + protected void paintComponent( Graphics g ) { + super.paintComponent( g ); + + if( highlightColor != null ) { + g.setColor( new Color( 0x33000000 | (highlightColor.getRGB() & 0xffffff), true ) ); + g.fillRect( 0, 0, getWidth(), getHeight() ); + } + + if( paintClearIcon ) { + int width = UIScale.scale( DirectoryComboBox.CLEAR_WIDTH ); + int height = getHeight(); + int x = getWidth() - width; + int y = 0; + + // make clear button area brighter + g.setColor( new Color( 0x33ffffff, true ) ); + g.fillRect( x, y, width, height ); + + // paint clear icon + int ix = x + ((width - clearIcon.getIconWidth()) / 2); + int iy = y + ((height - clearIcon.getIconHeight()) / 2); + clearIcon.paintIcon( this, g, ix, iy ); + } + } + } } diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.jfd b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.jfd index b8d961e0..f6f2f336 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.jfd +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeFileEditor.jfd @@ -1,4 +1,4 @@ -JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8" +JFDML JFormDesigner: "7.0.4.0.360" Java: "16" encoding: "UTF-8" new FormModel { contentType: "form/swing" @@ -28,8 +28,10 @@ new FormModel { name: "directoryField" "editable": false "focusable": false + "maximumRowCount": 30 auxiliary() { - "JavaCodeGenerator.typeParameters": "String" + "JavaCodeGenerator.typeParameters": "File" + "JavaCodeGenerator.customCreateCode": "new FlatThemeFileEditor.DirectoryComboBox();" } addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "directoryChanged", false ) ) }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { @@ -65,6 +67,13 @@ new FormModel { "accelerator": static javax.swing.KeyStroke getKeyStroke( 79, 4226, false ) addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "openDirectory", false ) ) } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "newPropertiesFileMenuItem" + "text": "New Properties File..." + "accelerator": static javax.swing.KeyStroke getKeyStroke( 78, 130, false ) + "mnemonic": 78 + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "newPropertiesFile", false ) ) + } ) add( new FormComponent( "javax.swing.JMenuItem" ) { name: "saveAllMenuItem" "text": "Save All" @@ -89,20 +98,101 @@ new FormModel { "mnemonic": 69 add( new FormComponent( "javax.swing.JMenuItem" ) { name: "findMenuItem" - "text": "Find/Replace..." + "text": "Find/Replace" "accelerator": static javax.swing.KeyStroke getKeyStroke( 70, 4226, false ) "mnemonic": 70 addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "find", false ) ) } ) + add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) { + name: "separator5" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "insertColorMenuItem" + "text": "Insert Color" + "accelerator": static javax.swing.KeyStroke getKeyStroke( 71, 130, false ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "insertColor", false ) ) + } ) + } ) + add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) { + name: "viewMenu" + "text": "View" + "mnemonic": 86 + add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) { + name: "previewMenuItem" + "text": "Preview" + "accelerator": static javax.swing.KeyStroke getKeyStroke( 80, 130, false ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showHidePreview", false ) ) + } ) + add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) { + name: "separator3" + } ) + add( new FormComponent( "javax.swing.JRadioButtonMenuItem" ) { + name: "lightLafMenuItem" + "text": "Light Laf" + "$buttonGroup": new FormReference( "lafButtonGroup" ) + "mnemonic": 76 + "selected": true + "accelerator": static javax.swing.KeyStroke getKeyStroke( 112, 520, false ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "lightLaf", false ) ) + } ) + add( new FormComponent( "javax.swing.JRadioButtonMenuItem" ) { + name: "darkLafMenuItem" + "text": "Dark Laf" + "$buttonGroup": new FormReference( "lafButtonGroup" ) + "mnemonic": 68 + "accelerator": static javax.swing.KeyStroke getKeyStroke( 113, 520, false ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "darkLaf", false ) ) + } ) + add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) { + name: "separator2" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "incrFontSizeMenuItem" + "text": "Increase Font Size" + "accelerator": static javax.swing.KeyStroke getKeyStroke( 521, 4226, false ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "incrFontSize", false ) ) + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "decrFontSizeMenuItem" + "text": "Decrease Font Size" + "accelerator": static javax.swing.KeyStroke getKeyStroke( 45, 4226, false ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "decrFontSize", false ) ) + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "resetFontSizeMenuItem" + "text": "Reset Font Size" + "accelerator": static javax.swing.KeyStroke getKeyStroke( 48, 4226, false ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "resetFontSize", false ) ) + } ) + add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) { + name: "separator4" + } ) + add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) { + name: "showHSLColorsMenuItem" + "text": "Show HSL colors" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "colorModelChanged", false ) ) + } ) + add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) { + name: "showRGBColorsMenuItem" + "text": "Show RGB colors (hex)" + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "colorModelChanged", false ) ) + } ) } ) add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) { name: "windowMenu" "text": "Window" "mnemonic": 87 + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "activateEditorMenuItem" + "text": "Activate Editor" + "mnemonic": 65 + "accelerator": static javax.swing.KeyStroke getKeyStroke( 123, 0, false ) + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "activateEditor", false ) ) + } ) add( new FormComponent( "javax.swing.JMenuItem" ) { name: "nextEditorMenuItem" "text": "Next Editor" - "accelerator": static javax.swing.KeyStroke getKeyStroke( 9, 4226, false ) + "accelerator": static javax.swing.KeyStroke getKeyStroke( 34, 4226, false ) "mnemonic": 78 addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "nextEditor", false ) ) } ) @@ -110,14 +200,30 @@ new FormModel { name: "previousEditorMenuItem" "text": "Previous Editor" "mnemonic": 80 - "accelerator": static javax.swing.KeyStroke getKeyStroke( 9, 4291, false ) + "accelerator": static javax.swing.KeyStroke getKeyStroke( 33, 4226, false ) addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "previousEditor", false ) ) } ) } ) + add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) { + name: "helpMenu" + "text": "Help" + "mnemonic": 72 + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "aboutMenuItem" + "text": "About" + "mnemonic": 65 + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "about", false ) ) + } ) + } ) } }, new FormLayoutConstraints( null ) { "location": new java.awt.Point( 0, 0 ) "size": new java.awt.Dimension( 535, 300 ) } ) + add( new FormNonVisual( "javax.swing.ButtonGroup" ) { + name: "lafButtonGroup" + }, new FormLayoutConstraints( null ) { + "location": new java.awt.Point( 0, 310 ) + } ) } } diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePreview.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePreview.java new file mode 100644 index 00000000..eb3d857d --- /dev/null +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePreview.java @@ -0,0 +1,1096 @@ +/* +/* + * Copyright 2021 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.themeeditor; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.HierarchyEvent; +import java.beans.PropertyVetoException; +import java.util.Map; +import java.util.WeakHashMap; +import java.util.function.Function; +import javax.swing.*; +import javax.swing.UIDefaults.ActiveValue; +import javax.swing.UIDefaults.LazyValue; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableRowSorter; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeModel; +import com.formdev.flatlaf.FlatLaf; +import com.formdev.flatlaf.extras.components.*; +import com.formdev.flatlaf.ui.FlatTabbedPaneUI; +import net.miginfocom.swing.*; + +/** + * @author Karl Tauber + */ +class FlatThemePreview + extends JPanel + implements DocumentListener +{ + private final FlatSyntaxTextArea textArea; + private final Timer timer; + + private final Map lazyValueCache = new WeakHashMap<>(); + private int runWithUIDefaultsGetterLevel; + + FlatThemePreview( FlatSyntaxTextArea textArea ) { + this.textArea = textArea; + + initComponents(); + + tabbedPane1.uiDefaultsGetter = this::getUIDefaultProperty; + tabbedPane1.setTabLayoutPolicy( JTabbedPane.SCROLL_TAB_LAYOUT ); + tabbedPane1.addTab( "Tab 1", null ); + tabbedPane1.addTab( "Tab 2", null ); + tabbedPane1.addTab( "Tab 3", null ); + tabbedPane1.addTab( "Tab 4", null ); + tabbedPane1.addTab( "Tab 5", null ); + tabbedPane1.addTab( "Tab 6", null ); + tabbedPane1.addTab( "Tab 7", null ); + tabbedPane1.addTab( "Tab 8", null ); + + list1.setSelectedIndex( 1 ); + tree1.setSelectionRow( 1 ); + table1.setRowSelectionInterval( 1, 1 ); + table1.setRowSorter( new TableRowSorter<>( table1.getModel() ) ); + table1.getRowSorter().toggleSortOrder( 0 ); + table1.uiDefaultsGetter = this::getUIDefaultProperty; + + EventQueue.invokeLater( () -> { + int width = desktopPane1.getWidth(); + int height = desktopPane1.getHeight() / 2; + internalFrame1.setBounds( 0, 0, width, height ); + internalFrame2.setBounds( 0, height, width, height ); + + try { + internalFrame1.setSelected( true ); + } catch( PropertyVetoException ex ) { + // ignore + } + } ); + + // timer used for delayed preview updates + timer = new Timer( 300, e -> update() ); + timer.setRepeats( false ); + + // listen to changes in text area to automatically update preview + textArea.getDocument().addDocumentListener( this ); + + // update when showing preview (e.g. activating tab) + addHierarchyListener( e -> { + if( (e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0 && isShowing() ) + updateLater(); + } ); + } + + @Override + public void insertUpdate( DocumentEvent e ) { + timer.restart(); + } + + @Override + public void removeUpdate( DocumentEvent e ) { + timer.restart(); + } + + @Override + public void changedUpdate( DocumentEvent e ) { + } + + void updateLater() { + EventQueue.invokeLater( this::update ); + } + + private void update() { + if( !isShowing() ) + return; + + runWithUIDefaultsGetter( this::updateComponentTreeUI ); + } + + private void updateComponentTreeUI() { + try { + SwingUtilities.updateComponentTreeUI( this ); + } catch( Exception ex ) { + ex.printStackTrace(); + } + } + + private void runWithUIDefaultsGetter( Runnable runnable ) { + try { + runWithUIDefaultsGetterLevel++; + if( runWithUIDefaultsGetterLevel == 1 ) + FlatLaf.runWithUIDefaultsGetter( this::getUIDefaultProperty, runnable ); + else + runnable.run(); + } finally { + runWithUIDefaultsGetterLevel--; + } + } + + private Object getUIDefaultProperty( Object key ) { + if( !(key instanceof String) ) + return null; + + // ignore custom UI delegates for preview because those classes + // are not available in theme editor + if( ((String)key).endsWith( "UI" ) ) + return null; + + Object value = textArea.propertiesSupport.getParsedProperty( (String) key ); + if( value instanceof LazyValue ) { + value = lazyValueCache.computeIfAbsent( (LazyValue) value, k -> { + return k.createValue( null ); + } ); + } else if( value instanceof ActiveValue ) + value = ((ActiveValue)value).createValue( null ); + +// System.out.println( key + " = " + value ); + + // If value is null and is a property that is defined in a core theme, + // then force the value to null. + // This is necessary for cases where the current application Laf defines a property + // but the edited theme does not (or has set the value explicitly to null). + // E.g. FlatLightLaf defines Button.focusedBackground, but in FlatDarkLaf + // it is not defined. Without this code, the preview for FlatDarkLaf would use + // Button.focusedBackground from FlatLightLaf if FlatLightLaf is the current application Laf. + if( value == null && FlatThemePropertiesBaseManager.getDefindedCoreKeys().contains( key ) ) + return FlatLaf.NULL_VALUE; + + return value; + } + + @SuppressWarnings( "deprecation" ) + @Override + public void layout() { + try { + runWithUIDefaultsGetter( () -> { + super.layout(); + } ); + } catch( Exception ex ) { + ex.printStackTrace(); + } + } + + @Override + protected void validateTree() { + try { + runWithUIDefaultsGetter( () -> { + super.validateTree(); + } ); + } catch( Exception ex ) { + ex.printStackTrace(); + } + } + + @Override + public Dimension getPreferredSize() { + try { + return super.getPreferredSize(); + } catch( Exception ex ) { + ex.printStackTrace(); + return new Dimension( 100, 100 ); + } + } + + @Override + public Dimension getMinimumSize() { + try { + return super.getMinimumSize(); + } catch( Exception ex ) { + ex.printStackTrace(); + return new Dimension( 100, 100 ); + } + } + + @Override + public Dimension getMaximumSize() { + try { + return super.getMaximumSize(); + } catch( Exception ex ) { + ex.printStackTrace(); + return new Dimension( Short.MAX_VALUE, Short.MAX_VALUE ); + } + } + + @Override + public void paint( Graphics g ) { + try { + runWithUIDefaultsGetter( () -> { + super.paint( g ); + } ); + } catch( Exception ex ) { + ex.printStackTrace(); + } + } + + @Override + protected void paintComponent( Graphics g ) { + try { + runWithUIDefaultsGetter( () -> { + super.paintComponent( g ); + } ); + } catch( Exception ex ) { + ex.printStackTrace(); + } + } + + @Override + protected void paintChildren( Graphics g ) { + try { + runWithUIDefaultsGetter( () -> { + super.paintChildren( g ); + } ); + } catch( Exception ex ) { + ex.printStackTrace(); + } + } + + private void enabledChanged() { + runWithUIDefaultsGetter( () -> { + enableDisable( this, enabledCheckBox.isSelected() ); + } ); + } + + private void enableDisable( Component comp, boolean enabled ) { + if( comp != previewLabel && comp != enabledCheckBox && comp != menu2 ) + comp.setEnabled( enabled ); + + if( !(comp instanceof Container) || comp instanceof JInternalFrame ) + return; + + for( Component c : ((Container)comp).getComponents() ) { + if( c instanceof JScrollPane ) + c = ((JScrollPane)c).getViewport().getView(); + + // make sure that background is updated correctly in BasicTextUI.updateBackground() + if( c instanceof JTextPane ) + c.setBackground( UIManager.getColor( "TextPane.background" ) ); + else if( c instanceof JEditorPane ) + c.setBackground( UIManager.getColor( "EditorPane.background" ) ); + + enableDisable( c, enabled ); + } + + if( comp instanceof JMenu ) { + JMenu menu = (JMenu) comp; + int count = menu.getMenuComponentCount(); + for( int i = 0; i < count; i++ ) + enableDisable( menu.getMenuComponent( i ), enabled ); + } + } + + private void changeProgress() { + int value = slider3.getValue(); + progressBar1.setValue( value ); + progressBar2.setValue( value ); + } + + private Object toolbarCons; + + @Override + protected void addImpl( Component comp, Object constraints, int index ) { + // if floating toolbar window is closed, then place toolbar at original location + if( comp == toolBar1 ) { + if( toolbarCons == null ) + toolbarCons = constraints; + else if( comp.getParent() == null && toolbarCons != null ) + constraints = toolbarCons; + } + + super.addImpl( comp, constraints, index ); + } + + private void initComponents() { + // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents + previewSeparator = new JSeparator(); + previewLabel = new JLabel(); + enabledCheckBox = new JCheckBox(); + separator2 = new JSeparator(); + labelLabel = new JLabel(); + label1 = new JLabel(); + flatButton1 = new FlatButton(); + buttonLabel = new JLabel(); + button1 = new JButton(); + testDefaultButton1 = new FlatThemePreview.PreviewDefaultButton(); + helpButton = new FlatButton(); + hSpacer2 = new JPanel(null); + toggleButtonLabel = new JLabel(); + toggleButton1 = new JToggleButton(); + toggleButton3 = new JToggleButton(); + hSpacer1 = new JPanel(null); + checkBoxLabel = new JLabel(); + checkBox1 = new JCheckBox(); + checkBox3 = new JCheckBox(); + hSpacer3 = new JPanel(null); + radioButtonLabel = new JLabel(); + radioButton1 = new JRadioButton(); + radioButton3 = new JRadioButton(); + hSpacer4 = new JPanel(null); + comboBoxLabel = new JLabel(); + comboBox1 = new FlatComboBox<>(); + comboBox3 = new JComboBox<>(); + spinnerLabel = new JLabel(); + spinner1 = new JSpinner(); + textFieldLabel = new JLabel(); + textField1 = new FlatTextField(); + formattedTextField1 = new FlatFormattedTextField(); + passwordField1 = new FlatPasswordField(); + textAreaLabel = new JLabel(); + scrollPane1 = new JScrollPane(); + textArea1 = new JTextArea(); + scrollPane5 = new JScrollPane(); + editorPane1 = new JEditorPane(); + scrollPane9 = new JScrollPane(); + textPane1 = new JTextPane(); + menuBarLabel = new JLabel(); + menuBar1 = new JMenuBar(); + menu2 = new JMenu(); + menuItem3 = new JMenuItem(); + menuItem4 = new JMenuItem(); + checkBoxMenuItem2 = new JCheckBoxMenuItem(); + checkBoxMenuItem3 = new JCheckBoxMenuItem(); + radioButtonMenuItem4 = new JRadioButtonMenuItem(); + radioButtonMenuItem5 = new JRadioButtonMenuItem(); + menu4 = new JMenu(); + menuItem6 = new JMenuItem(); + menu5 = new JMenu(); + menuItem7 = new JMenuItem(); + menu3 = new JMenu(); + menuItem5 = new JMenuItem(); + menuItem8 = new JMenuItem(); + menuItem9 = new JMenuItem(); + scrollBarLabel = new JLabel(); + scrollBar1 = new JScrollBar(); + scrollBar5 = new FlatScrollBar(); + separatorLabel = new JLabel(); + separator1 = new JSeparator(); + sliderLabel = new JLabel(); + slider1 = new JSlider(); + slider3 = new JSlider(); + progressBarLabel = new JLabel(); + progressBar1 = new FlatProgressBar(); + progressBar2 = new FlatProgressBar(); + toolTipLabel = new JLabel(); + toolTip1 = new JToolTip(); + toolBarLabel = new JLabel(); + toolBar1 = new JToolBar(); + button4 = new JButton(); + button6 = new JButton(); + button7 = new JToggleButton(); + button8 = new JToggleButton(); + tabbedPaneLabel = new JLabel(); + tabbedPane1 = new FlatThemePreview.PreviewTabbedPane(); + listTreeLabel = new JLabel(); + splitPane1 = new JSplitPane(); + scrollPane2 = new JScrollPane(); + list1 = new JList<>(); + scrollPane3 = new JScrollPane(); + tree1 = new JTree(); + tableLabel = new JLabel(); + scrollPane4 = new JScrollPane(); + table1 = new FlatThemePreview.PreviewTable(); + internalFrameLabel = new JLabel(); + desktopPane1 = new JDesktopPane(); + internalFrame1 = new JInternalFrame(); + internalFrame2 = new JInternalFrame(); + + //======== this ======== + setLayout(new MigLayout( + "insets dialog,hidemode 3", + // columns + "[fill]" + + "[130,fill]", + // rows + "[]0" + + "[]unrel" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[]" + + "[100,fill]" + + "[grow]")); + + //---- previewSeparator ---- + previewSeparator.setOrientation(SwingConstants.VERTICAL); + add(previewSeparator, "west"); + + //---- previewLabel ---- + previewLabel.setText("Preview"); + previewLabel.setFont(previewLabel.getFont().deriveFont(previewLabel.getFont().getSize() + 6f)); + add(previewLabel, "cell 0 0 2 1,alignx left,growx 0"); + + //---- enabledCheckBox ---- + enabledCheckBox.setText("Enabled"); + enabledCheckBox.setSelected(true); + enabledCheckBox.addActionListener(e -> enabledChanged()); + add(enabledCheckBox, "cell 0 0 2 1,align right top,grow 0 0"); + add(separator2, "cell 0 1 2 1"); + + //---- labelLabel ---- + labelLabel.setText("JLabel:"); + add(labelLabel, "cell 0 2"); + + //---- label1 ---- + label1.setText("Some Text"); + add(label1, "cell 1 2"); + + //---- flatButton1 ---- + flatButton1.setText("Help"); + flatButton1.setButtonType(FlatButton.ButtonType.help); + flatButton1.setVisible(false); + add(flatButton1, "cell 1 1,alignx right,growx 0"); + + //---- buttonLabel ---- + buttonLabel.setText("JButton:"); + add(buttonLabel, "cell 0 3"); + + //---- button1 ---- + button1.setText("OK"); + add(button1, "cell 1 3,alignx left,growx 0"); + + //---- testDefaultButton1 ---- + testDefaultButton1.setText("Default"); + add(testDefaultButton1, "cell 1 3"); + + //---- helpButton ---- + helpButton.setButtonType(FlatButton.ButtonType.help); + add(helpButton, "cell 1 3"); + add(hSpacer2, "cell 1 3"); + + //---- toggleButtonLabel ---- + toggleButtonLabel.setText("JToggleButton:"); + add(toggleButtonLabel, "cell 0 4"); + + //---- toggleButton1 ---- + toggleButton1.setText("Unselected"); + add(toggleButton1, "cell 1 4,alignx left,growx 0"); + + //---- toggleButton3 ---- + toggleButton3.setText("Selected"); + toggleButton3.setSelected(true); + add(toggleButton3, "cell 1 4"); + add(hSpacer1, "cell 1 4"); + + //---- checkBoxLabel ---- + checkBoxLabel.setText("JCheckBox"); + add(checkBoxLabel, "cell 0 5"); + + //---- checkBox1 ---- + checkBox1.setText("Unselected"); + add(checkBox1, "cell 1 5,alignx left,growx 0"); + + //---- checkBox3 ---- + checkBox3.setText("Selected"); + checkBox3.setSelected(true); + add(checkBox3, "cell 1 5,alignx left,growx 0"); + add(hSpacer3, "cell 1 5"); + + //---- radioButtonLabel ---- + radioButtonLabel.setText("JRadioButton:"); + add(radioButtonLabel, "cell 0 6"); + + //---- radioButton1 ---- + radioButton1.setText("Unselected"); + add(radioButton1, "cell 1 6,alignx left,growx 0"); + + //---- radioButton3 ---- + radioButton3.setText("Selected"); + radioButton3.setSelected(true); + add(radioButton3, "cell 1 6,alignx left,growx 0"); + add(hSpacer4, "cell 1 6"); + + //---- comboBoxLabel ---- + comboBoxLabel.setText("JComboBox:"); + add(comboBoxLabel, "cell 0 7"); + + //---- comboBox1 ---- + comboBox1.setEditable(true); + comboBox1.setModel(new DefaultComboBoxModel<>(new String[] { + "Editable", + "a", + "bb", + "ccc", + "dd", + "e", + "ff", + "ggg", + "hh", + "i", + "jj", + "kkk" + })); + comboBox1.setMaximumRowCount(6); + comboBox1.setPlaceholderText("placeholder text"); + add(comboBox1, "cell 1 7,width 50"); + + //---- comboBox3 ---- + comboBox3.setModel(new DefaultComboBoxModel<>(new String[] { + "Not edit", + "a", + "bb", + "ccc", + "dd", + "e", + "ff", + "ggg", + "hh", + "i", + "jj", + "kkk" + })); + comboBox3.setMaximumRowCount(6); + add(comboBox3, "cell 1 7,width 50"); + + //---- spinnerLabel ---- + spinnerLabel.setText("JSpinner:"); + add(spinnerLabel, "cell 0 8"); + add(spinner1, "cell 1 8"); + + //---- textFieldLabel ---- + textFieldLabel.setText("JTextField:
JFormattedTextF.:
JPasswordField:"); + add(textFieldLabel, "cell 0 9 1 2"); + + //---- textField1 ---- + textField1.setText("Some Text"); + textField1.setPlaceholderText("placeholder text"); + add(textField1, "cell 1 9"); + + //---- formattedTextField1 ---- + formattedTextField1.setText("Some Text"); + formattedTextField1.setPlaceholderText("placeholder text"); + add(formattedTextField1, "cell 1 10,width 50"); + + //---- passwordField1 ---- + passwordField1.setText("Some Text"); + passwordField1.setPlaceholderText("placeholder text"); + add(passwordField1, "cell 1 10,width 50"); + + //---- textAreaLabel ---- + textAreaLabel.setText("JTextArea:

JEditorPane:
JTextPane:"); + add(textAreaLabel, "cell 0 11 1 2"); + + //======== scrollPane1 ======== + { + scrollPane1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); + scrollPane1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + + //---- textArea1 ---- + textArea1.setText("Some Text"); + textArea1.setRows(2); + scrollPane1.setViewportView(textArea1); + } + add(scrollPane1, "cell 1 11"); + + //======== scrollPane5 ======== + { + scrollPane5.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); + scrollPane5.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + + //---- editorPane1 ---- + editorPane1.setText("Some Text"); + scrollPane5.setViewportView(editorPane1); + } + add(scrollPane5, "cell 1 12,width 50"); + + //======== scrollPane9 ======== + { + scrollPane9.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); + scrollPane9.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + + //---- textPane1 ---- + textPane1.setText("Some Text"); + scrollPane9.setViewportView(textPane1); + } + add(scrollPane9, "cell 1 12,width 50"); + + //---- menuBarLabel ---- + menuBarLabel.setText("JMenuBar:"); + add(menuBarLabel, "cell 0 13"); + + //======== menuBar1 ======== + { + + //======== menu2 ======== + { + menu2.setText("JMenu"); + + //---- menuItem3 ---- + menuItem3.setText("JMenuItem"); + menu2.add(menuItem3); + + //---- menuItem4 ---- + menuItem4.setText("JMenuItem"); + menu2.add(menuItem4); + menu2.addSeparator(); + + //---- checkBoxMenuItem2 ---- + checkBoxMenuItem2.setText("JCheckBoxMenuItem"); + checkBoxMenuItem2.setSelected(true); + menu2.add(checkBoxMenuItem2); + + //---- checkBoxMenuItem3 ---- + checkBoxMenuItem3.setText("JCheckBoxMenuItem"); + menu2.add(checkBoxMenuItem3); + menu2.addSeparator(); + + //---- radioButtonMenuItem4 ---- + radioButtonMenuItem4.setText("JRadioButtonMenuItem"); + radioButtonMenuItem4.setSelected(true); + menu2.add(radioButtonMenuItem4); + + //---- radioButtonMenuItem5 ---- + radioButtonMenuItem5.setText("JRadioButtonMenuItem"); + menu2.add(radioButtonMenuItem5); + menu2.addSeparator(); + + //======== menu4 ======== + { + menu4.setText("JMenu"); + + //---- menuItem6 ---- + menuItem6.setText("JMenuItem"); + menu4.add(menuItem6); + } + menu2.add(menu4); + + //======== menu5 ======== + { + menu5.setText("JMenu"); + + //---- menuItem7 ---- + menuItem7.setText("JMenuItem"); + menu5.add(menuItem7); + } + menu2.add(menu5); + } + menuBar1.add(menu2); + + //======== menu3 ======== + { + menu3.setText("JMenu"); + + //---- menuItem5 ---- + menuItem5.setText("JMenuItem"); + menu3.add(menuItem5); + + //---- menuItem8 ---- + menuItem8.setText("JMenuItem"); + menu3.add(menuItem8); + + //---- menuItem9 ---- + menuItem9.setText("JMenuItem"); + menu3.add(menuItem9); + } + menuBar1.add(menu3); + } + add(menuBar1, "cell 1 13"); + + //---- scrollBarLabel ---- + scrollBarLabel.setText("JScrollBar:"); + add(scrollBarLabel, "cell 0 14"); + + //---- scrollBar1 ---- + scrollBar1.setOrientation(Adjustable.HORIZONTAL); + add(scrollBar1, "cell 1 14"); + + //---- scrollBar5 ---- + scrollBar5.setOrientation(Adjustable.HORIZONTAL); + scrollBar5.setShowButtons(true); + add(scrollBar5, "cell 1 15"); + + //---- separatorLabel ---- + separatorLabel.setText("JSeparator:"); + add(separatorLabel, "cell 0 16"); + add(separator1, "cell 1 16"); + + //---- sliderLabel ---- + sliderLabel.setText("JSlider:"); + add(sliderLabel, "cell 0 17"); + + //---- slider1 ---- + slider1.setValue(30); + add(slider1, "cell 1 17"); + + //---- slider3 ---- + slider3.setMinorTickSpacing(10); + slider3.setPaintTicks(true); + slider3.setMajorTickSpacing(50); + slider3.setPaintLabels(true); + slider3.setValue(30); + slider3.addChangeListener(e -> changeProgress()); + add(slider3, "cell 1 18"); + + //---- progressBarLabel ---- + progressBarLabel.setText("JProgressBar:"); + add(progressBarLabel, "cell 0 19"); + + //---- progressBar1 ---- + progressBar1.setValue(60); + add(progressBar1, "cell 1 19"); + + //---- progressBar2 ---- + progressBar2.setValue(50); + progressBar2.setStringPainted(true); + add(progressBar2, "cell 1 20"); + + //---- toolTipLabel ---- + toolTipLabel.setText("JToolTip:"); + add(toolTipLabel, "cell 0 21"); + + //---- toolTip1 ---- + toolTip1.setTipText("Some text in tool tip."); + add(toolTip1, "cell 1 21,alignx left,growx 0"); + + //---- toolBarLabel ---- + toolBarLabel.setText("JToolBar:"); + add(toolBarLabel, "cell 0 22"); + + //======== toolBar1 ======== + { + + //---- button4 ---- + button4.setIcon(UIManager.getIcon("Tree.closedIcon")); + toolBar1.add(button4); + + //---- button6 ---- + button6.setIcon(UIManager.getIcon("Tree.openIcon")); + toolBar1.add(button6); + toolBar1.addSeparator(); + + //---- button7 ---- + button7.setIcon(UIManager.getIcon("Tree.leafIcon")); + toolBar1.add(button7); + + //---- button8 ---- + button8.setIcon(UIManager.getIcon("Tree.leafIcon")); + button8.setSelected(true); + toolBar1.add(button8); + } + add(toolBar1, "cell 1 22"); + + //---- tabbedPaneLabel ---- + tabbedPaneLabel.setText("JTabbedPane:"); + add(tabbedPaneLabel, "cell 0 23"); + add(tabbedPane1, "cell 1 23"); + + //---- listTreeLabel ---- + listTreeLabel.setText("JList / JTree:
JSplitPane:"); + add(listTreeLabel, "cell 0 24,aligny top,growy 0"); + + //======== splitPane1 ======== + { + splitPane1.setResizeWeight(0.5); + + //======== scrollPane2 ======== + { + scrollPane2.setPreferredSize(new Dimension(50, 50)); + + //---- list1 ---- + list1.setModel(new AbstractListModel() { + String[] values = { + "Item 1", + "Item 2", + "Item 3" + }; + @Override + public int getSize() { return values.length; } + @Override + public String getElementAt(int i) { return values[i]; } + }); + scrollPane2.setViewportView(list1); + } + splitPane1.setLeftComponent(scrollPane2); + + //======== scrollPane3 ======== + { + scrollPane3.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + scrollPane3.setPreferredSize(new Dimension(50, 50)); + + //---- tree1 ---- + tree1.setModel(new DefaultTreeModel( + new DefaultMutableTreeNode("Item 1") { + { + add(new DefaultMutableTreeNode("Item 2")); + add(new DefaultMutableTreeNode("Item 3")); + } + })); + scrollPane3.setViewportView(tree1); + } + splitPane1.setRightComponent(scrollPane3); + } + add(splitPane1, "cell 1 24,height 50"); + + //---- tableLabel ---- + tableLabel.setText("JTable:"); + add(tableLabel, "cell 0 25"); + + //======== scrollPane4 ======== + { + + //---- table1 ---- + table1.setModel(new DefaultTableModel( + new Object[][] { + {"Item 1a", "Item 1b"}, + {"Item 2a", "Item 2b"}, + }, + new String[] { + "Column 1", "Column 2" + } + )); + scrollPane4.setViewportView(table1); + } + add(scrollPane4, "cell 1 25,height 70"); + + //---- internalFrameLabel ---- + internalFrameLabel.setText("JDesktopPane:
JInternalFrame:"); + add(internalFrameLabel, "cell 0 26,aligny top,growy 0"); + + //======== desktopPane1 ======== + { + + //======== internalFrame1 ======== + { + internalFrame1.setVisible(true); + internalFrame1.setTitle("Active"); + internalFrame1.setClosable(true); + internalFrame1.setMaximizable(true); + internalFrame1.setIconifiable(true); + internalFrame1.setResizable(true); + Container internalFrame1ContentPane = internalFrame1.getContentPane(); + internalFrame1ContentPane.setLayout(new BorderLayout()); + } + desktopPane1.add(internalFrame1, JLayeredPane.DEFAULT_LAYER); + internalFrame1.setBounds(new Rectangle(new Point(5, 5), internalFrame1.getPreferredSize())); + + //======== internalFrame2 ======== + { + internalFrame2.setVisible(true); + internalFrame2.setClosable(true); + internalFrame2.setIconifiable(true); + internalFrame2.setMaximizable(true); + internalFrame2.setResizable(true); + internalFrame2.setTitle("Inactive"); + Container internalFrame2ContentPane = internalFrame2.getContentPane(); + internalFrame2ContentPane.setLayout(new BorderLayout()); + } + desktopPane1.add(internalFrame2, JLayeredPane.DEFAULT_LAYER); + internalFrame2.setBounds(new Rectangle(new Point(5, 50), internalFrame2.getPreferredSize())); + } + add(desktopPane1, "cell 1 26"); + + //---- buttonGroup1 ---- + ButtonGroup buttonGroup1 = new ButtonGroup(); + buttonGroup1.add(radioButton1); + buttonGroup1.add(radioButton3); + + //---- buttonGroup2 ---- + ButtonGroup buttonGroup2 = new ButtonGroup(); + buttonGroup2.add(radioButtonMenuItem4); + buttonGroup2.add(radioButtonMenuItem5); + // JFormDesigner - End of component initialization //GEN-END:initComponents + } + + // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables + private JSeparator previewSeparator; + private JLabel previewLabel; + private JCheckBox enabledCheckBox; + private JSeparator separator2; + private JLabel labelLabel; + private JLabel label1; + private FlatButton flatButton1; + private JLabel buttonLabel; + private JButton button1; + private FlatThemePreview.PreviewDefaultButton testDefaultButton1; + private FlatButton helpButton; + private JPanel hSpacer2; + private JLabel toggleButtonLabel; + private JToggleButton toggleButton1; + private JToggleButton toggleButton3; + private JPanel hSpacer1; + private JLabel checkBoxLabel; + private JCheckBox checkBox1; + private JCheckBox checkBox3; + private JPanel hSpacer3; + private JLabel radioButtonLabel; + private JRadioButton radioButton1; + private JRadioButton radioButton3; + private JPanel hSpacer4; + private JLabel comboBoxLabel; + private FlatComboBox comboBox1; + private JComboBox comboBox3; + private JLabel spinnerLabel; + private JSpinner spinner1; + private JLabel textFieldLabel; + private FlatTextField textField1; + private FlatFormattedTextField formattedTextField1; + private FlatPasswordField passwordField1; + private JLabel textAreaLabel; + private JScrollPane scrollPane1; + private JTextArea textArea1; + private JScrollPane scrollPane5; + private JEditorPane editorPane1; + private JScrollPane scrollPane9; + private JTextPane textPane1; + private JLabel menuBarLabel; + private JMenuBar menuBar1; + private JMenu menu2; + private JMenuItem menuItem3; + private JMenuItem menuItem4; + private JCheckBoxMenuItem checkBoxMenuItem2; + private JCheckBoxMenuItem checkBoxMenuItem3; + private JRadioButtonMenuItem radioButtonMenuItem4; + private JRadioButtonMenuItem radioButtonMenuItem5; + private JMenu menu4; + private JMenuItem menuItem6; + private JMenu menu5; + private JMenuItem menuItem7; + private JMenu menu3; + private JMenuItem menuItem5; + private JMenuItem menuItem8; + private JMenuItem menuItem9; + private JLabel scrollBarLabel; + private JScrollBar scrollBar1; + private FlatScrollBar scrollBar5; + private JLabel separatorLabel; + private JSeparator separator1; + private JLabel sliderLabel; + private JSlider slider1; + private JSlider slider3; + private JLabel progressBarLabel; + private FlatProgressBar progressBar1; + private FlatProgressBar progressBar2; + private JLabel toolTipLabel; + private JToolTip toolTip1; + private JLabel toolBarLabel; + private JToolBar toolBar1; + private JButton button4; + private JButton button6; + private JToggleButton button7; + private JToggleButton button8; + private JLabel tabbedPaneLabel; + private FlatThemePreview.PreviewTabbedPane tabbedPane1; + private JLabel listTreeLabel; + private JSplitPane splitPane1; + private JScrollPane scrollPane2; + private JList list1; + private JScrollPane scrollPane3; + private JTree tree1; + private JLabel tableLabel; + private JScrollPane scrollPane4; + private FlatThemePreview.PreviewTable table1; + private JLabel internalFrameLabel; + private JDesktopPane desktopPane1; + private JInternalFrame internalFrame1; + private JInternalFrame internalFrame2; + // JFormDesigner - End of variables declaration //GEN-END:variables + + //---- class PreviewDefaultButton ----------------------------------------- + + private static class PreviewDefaultButton + extends JButton + { + @Override + public boolean isDefaultButton() { + return true; + } + } + + //---- class PreviewTabbedPane -------------------------------------------- + + private static class PreviewTabbedPane + extends JTabbedPane + { + Function uiDefaultsGetter; + + @Override + public void updateUI() { + setUI( new PreviewFlatTabbedPaneUI( uiDefaultsGetter ) ); + } + } + + //---- class PreviewFlatTabbedPaneUI -------------------------------------- + + private static class PreviewFlatTabbedPaneUI + extends FlatTabbedPaneUI + { + private final Function uiDefaultsGetter; + + PreviewFlatTabbedPaneUI( Function uiDefaultsGetter ) { + this.uiDefaultsGetter = uiDefaultsGetter; + } + + @Override + protected JButton createMoreTabsButton() { + return new PreviewFlatMoreTabsButton(); + } + + //---- class PreviewFlatMoreTabsButton -------------------------------- + + protected class PreviewFlatMoreTabsButton + extends FlatMoreTabsButton + { + @Override + public void actionPerformed( ActionEvent e ) { + // needed for "more tabs" popup creation + FlatLaf.runWithUIDefaultsGetter( uiDefaultsGetter, () -> { + super.actionPerformed( e ); + } ); + } + } + } + + //---- class PreviewTable ------------------------------------------------- + + private static class PreviewTable + extends JTable + { + Function uiDefaultsGetter; + + @Override + public void paint( Graphics g ) { + // needed for DefaultTableCellRenderer + FlatLaf.runWithUIDefaultsGetter( uiDefaultsGetter, () -> { + super.paint( g ); + } ); + } + } +} diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePreview.jfd b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePreview.jfd new file mode 100644 index 00000000..f031b2b1 --- /dev/null +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePreview.jfd @@ -0,0 +1,642 @@ +JFDML JFormDesigner: "7.0.4.0.360" Java: "16" encoding: "UTF-8" + +new FormModel { + contentType: "form/swing" + root: new FormRoot { + add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) { + "$layoutConstraints": "insets dialog,hidemode 3" + "$columnConstraints": "[fill][130,fill]" + "$rowConstraints": "[]0[]unrel[][][][][][][][][][][][][][][][][][][][][][][][][100,fill][grow]" + } ) { + name: "this" + add( new FormComponent( "javax.swing.JSeparator" ) { + name: "previewSeparator" + "orientation": 1 + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "west" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "previewLabel" + "text": "Preview" + "font": new com.jformdesigner.model.SwingDerivedFont( null, 0, 6, false ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 0 2 1,alignx left,growx 0" + } ) + add( new FormComponent( "javax.swing.JCheckBox" ) { + name: "enabledCheckBox" + "text": "Enabled" + "selected": true + addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "enabledChanged", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 0 2 1,align right top,grow 0 0" + } ) + add( new FormComponent( "javax.swing.JSeparator" ) { + name: "separator2" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 1 2 1" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "labelLabel" + "text": "JLabel:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 2" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "label1" + "text": "Some Text" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 2" + } ) + add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) { + name: "flatButton1" + "text": "Help" + "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType help + "visible": false + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 1,alignx right,growx 0" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "buttonLabel" + "text": "JButton:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 3" + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "button1" + "text": "OK" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 3,alignx left,growx 0" + } ) + add( new FormComponent( "com.formdev.flatlaf.themeeditor.FlatThemePreview$PreviewDefaultButton" ) { + name: "testDefaultButton1" + "text": "Default" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 3" + } ) + add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) { + name: "helpButton" + "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType help + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 3" + } ) + add( new FormComponent( "com.jformdesigner.designer.wrapper.HSpacer" ) { + name: "hSpacer2" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 3" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "toggleButtonLabel" + "text": "JToggleButton:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 4" + } ) + add( new FormComponent( "javax.swing.JToggleButton" ) { + name: "toggleButton1" + "text": "Unselected" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 4,alignx left,growx 0" + } ) + add( new FormComponent( "javax.swing.JToggleButton" ) { + name: "toggleButton3" + "text": "Selected" + "selected": true + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 4" + } ) + add( new FormComponent( "com.jformdesigner.designer.wrapper.HSpacer" ) { + name: "hSpacer1" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 4" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "checkBoxLabel" + "text": "JCheckBox" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 5" + } ) + add( new FormComponent( "javax.swing.JCheckBox" ) { + name: "checkBox1" + "text": "Unselected" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 5,alignx left,growx 0" + } ) + add( new FormComponent( "javax.swing.JCheckBox" ) { + name: "checkBox3" + "text": "Selected" + "selected": true + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 5,alignx left,growx 0" + } ) + add( new FormComponent( "com.jformdesigner.designer.wrapper.HSpacer" ) { + name: "hSpacer3" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 5" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "radioButtonLabel" + "text": "JRadioButton:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 6" + } ) + add( new FormComponent( "javax.swing.JRadioButton" ) { + name: "radioButton1" + "text": "Unselected" + "$buttonGroup": new FormReference( "buttonGroup1" ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 6,alignx left,growx 0" + } ) + add( new FormComponent( "javax.swing.JRadioButton" ) { + name: "radioButton3" + "text": "Selected" + "selected": true + "$buttonGroup": new FormReference( "buttonGroup1" ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 6,alignx left,growx 0" + } ) + add( new FormComponent( "com.jformdesigner.designer.wrapper.HSpacer" ) { + name: "hSpacer4" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 6" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "comboBoxLabel" + "text": "JComboBox:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 7" + } ) + add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatComboBox" ) { + name: "comboBox1" + "editable": true + "model": new javax.swing.DefaultComboBoxModel { + selectedItem: "Editable" + addElement( "Editable" ) + addElement( "a" ) + addElement( "bb" ) + addElement( "ccc" ) + addElement( "dd" ) + addElement( "e" ) + addElement( "ff" ) + addElement( "ggg" ) + addElement( "hh" ) + addElement( "i" ) + addElement( "jj" ) + addElement( "kkk" ) + } + "maximumRowCount": 6 + "placeholderText": "placeholder text" + auxiliary() { + "JavaCodeGenerator.typeParameters": "String" + } + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 7,width 50" + } ) + add( new FormComponent( "javax.swing.JComboBox" ) { + name: "comboBox3" + "model": new javax.swing.DefaultComboBoxModel { + selectedItem: "Not edit" + addElement( "Not edit" ) + addElement( "a" ) + addElement( "bb" ) + addElement( "ccc" ) + addElement( "dd" ) + addElement( "e" ) + addElement( "ff" ) + addElement( "ggg" ) + addElement( "hh" ) + addElement( "i" ) + addElement( "jj" ) + addElement( "kkk" ) + } + "maximumRowCount": 6 + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 7,width 50" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "spinnerLabel" + "text": "JSpinner:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 8" + } ) + add( new FormComponent( "javax.swing.JSpinner" ) { + name: "spinner1" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 8" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "textFieldLabel" + "text": "JTextField:
JFormattedTextF.:
JPasswordField:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 9 1 2" + } ) + add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTextField" ) { + name: "textField1" + "text": "Some Text" + "placeholderText": "placeholder text" + auxiliary() { + "JavaCodeGenerator.variableLocal": false + } + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 9" + } ) + add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatFormattedTextField" ) { + name: "formattedTextField1" + "text": "Some Text" + "placeholderText": "placeholder text" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 10,width 50" + } ) + add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatPasswordField" ) { + name: "passwordField1" + "text": "Some Text" + "placeholderText": "placeholder text" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 10,width 50" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "textAreaLabel" + "text": "JTextArea:

JEditorPane:
JTextPane:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 11 1 2" + } ) + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane1" + "verticalScrollBarPolicy": 21 + "horizontalScrollBarPolicy": 31 + add( new FormComponent( "javax.swing.JTextArea" ) { + name: "textArea1" + "text": "Some Text" + "rows": 2 + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 11" + } ) + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane5" + "verticalScrollBarPolicy": 21 + "horizontalScrollBarPolicy": 31 + add( new FormComponent( "javax.swing.JEditorPane" ) { + name: "editorPane1" + "text": "Some Text" + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 12,width 50" + } ) + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane9" + "verticalScrollBarPolicy": 21 + "horizontalScrollBarPolicy": 31 + add( new FormComponent( "javax.swing.JTextPane" ) { + name: "textPane1" + "text": "Some Text" + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 12,width 50" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "menuBarLabel" + "text": "JMenuBar:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 13" + } ) + 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: "menu2" + "text": "JMenu" + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem3" + "text": "JMenuItem" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem4" + "text": "JMenuItem" + } ) + add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) { + name: "separator7" + } ) + add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) { + name: "checkBoxMenuItem2" + "text": "JCheckBoxMenuItem" + "selected": true + } ) + add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) { + name: "checkBoxMenuItem3" + "text": "JCheckBoxMenuItem" + } ) + add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) { + name: "separator9" + } ) + add( new FormComponent( "javax.swing.JRadioButtonMenuItem" ) { + name: "radioButtonMenuItem4" + "text": "JRadioButtonMenuItem" + "$buttonGroup": new FormReference( "buttonGroup2" ) + "selected": true + } ) + add( new FormComponent( "javax.swing.JRadioButtonMenuItem" ) { + name: "radioButtonMenuItem5" + "text": "JRadioButtonMenuItem" + "$buttonGroup": new FormReference( "buttonGroup2" ) + } ) + add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) { + name: "separator3" + } ) + add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) { + name: "menu4" + "text": "JMenu" + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem6" + "text": "JMenuItem" + } ) + } ) + add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) { + name: "menu5" + "text": "JMenu" + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem7" + "text": "JMenuItem" + } ) + } ) + } ) + add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) { + name: "menu3" + "text": "JMenu" + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem5" + "text": "JMenuItem" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem8" + "text": "JMenuItem" + } ) + add( new FormComponent( "javax.swing.JMenuItem" ) { + name: "menuItem9" + "text": "JMenuItem" + } ) + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 13" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "scrollBarLabel" + "text": "JScrollBar:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 14" + } ) + add( new FormComponent( "javax.swing.JScrollBar" ) { + name: "scrollBar1" + "orientation": 0 + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 14" + } ) + add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatScrollBar" ) { + name: "scrollBar5" + "orientation": 0 + "showButtons": true + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 15" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "separatorLabel" + "text": "JSeparator:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 16" + } ) + add( new FormComponent( "javax.swing.JSeparator" ) { + name: "separator1" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 16" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "sliderLabel" + "text": "JSlider:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 17" + } ) + add( new FormComponent( "javax.swing.JSlider" ) { + name: "slider1" + "value": 30 + auxiliary() { + "JavaCodeGenerator.variableLocal": false + } + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 17" + } ) + add( new FormComponent( "javax.swing.JSlider" ) { + name: "slider3" + "minorTickSpacing": 10 + "paintTicks": true + "majorTickSpacing": 50 + "paintLabels": true + "value": 30 + auxiliary() { + "JavaCodeGenerator.variableLocal": false + } + addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "changeProgress", false ) ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 18" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "progressBarLabel" + "text": "JProgressBar:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 19" + } ) + add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatProgressBar" ) { + name: "progressBar1" + "value": 60 + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 19" + } ) + add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatProgressBar" ) { + name: "progressBar2" + "value": 50 + "stringPainted": true + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 20" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "toolTipLabel" + "text": "JToolTip:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 21" + } ) + add( new FormComponent( "javax.swing.JToolTip" ) { + name: "toolTip1" + "tipText": "Some text in tool tip." + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 21,alignx left,growx 0" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "toolBarLabel" + "text": "JToolBar:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 22" + } ) + add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) { + name: "toolBar1" + add( new FormComponent( "javax.swing.JButton" ) { + name: "button4" + "icon": new com.jformdesigner.model.SwingIcon( 2, "Tree.closedIcon" ) + } ) + add( new FormComponent( "javax.swing.JButton" ) { + name: "button6" + "icon": new com.jformdesigner.model.SwingIcon( 2, "Tree.openIcon" ) + } ) + add( new FormComponent( "javax.swing.JToolBar$Separator" ) { + name: "separator4" + } ) + add( new FormComponent( "javax.swing.JToggleButton" ) { + name: "button7" + "icon": &SwingIcon0 new com.jformdesigner.model.SwingIcon( 2, "Tree.leafIcon" ) + } ) + add( new FormComponent( "javax.swing.JToggleButton" ) { + name: "button8" + "icon": #SwingIcon0 + "selected": true + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 22" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "tabbedPaneLabel" + "text": "JTabbedPane:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 23" + } ) + add( new FormContainer( "com.formdev.flatlaf.themeeditor.FlatThemePreview$PreviewTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) { + name: "tabbedPane1" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 23" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "listTreeLabel" + "text": "JList / JTree:
JSplitPane:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 24,aligny top,growy 0" + } ) + add( new FormContainer( "javax.swing.JSplitPane", new FormLayoutManager( class javax.swing.JSplitPane ) ) { + name: "splitPane1" + "resizeWeight": 0.5 + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane2" + "preferredSize": new java.awt.Dimension( 50, 50 ) + add( new FormComponent( "javax.swing.JList" ) { + name: "list1" + "model": new javax.swing.DefaultListModel { + addElement( "Item 1" ) + addElement( "Item 2" ) + addElement( "Item 3" ) + } + } ) + }, new FormLayoutConstraints( class java.lang.String ) { + "value": "left" + } ) + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane3" + "horizontalScrollBarPolicy": 31 + "preferredSize": new java.awt.Dimension( 50, 50 ) + add( new FormComponent( "javax.swing.JTree" ) { + name: "tree1" + "model": new javax.swing.tree.DefaultTreeModel( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "Item 1" + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "Item 2" + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "Item 3" + } ) + } ) + } ) + }, new FormLayoutConstraints( class java.lang.String ) { + "value": "right" + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 24,height 50" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "tableLabel" + "text": "JTable:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 25" + } ) + add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) { + name: "scrollPane4" + add( new FormComponent( "com.formdev.flatlaf.themeeditor.FlatThemePreview$PreviewTable" ) { + name: "table1" + "model": new com.jformdesigner.model.SwingTableModel( new java.util.Vector { + add( new java.util.Vector { + add( "Item 1a" ) + add( "Item 1b" ) + } ) + add( new java.util.Vector { + add( "Item 2a" ) + add( "Item 2b" ) + } ) + }, new java.util.Vector { + add( "Column 1" ) + add( "Column 2" ) + }, new java.util.Vector { + add( null ) + add( null ) + }, new java.util.Vector { + add( null ) + add( null ) + }, new java.util.Vector { + add( null ) + add( null ) + } ) + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 25,height 70" + } ) + add( new FormComponent( "javax.swing.JLabel" ) { + name: "internalFrameLabel" + "text": "JDesktopPane:
JInternalFrame:" + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 0 26,aligny top,growy 0" + } ) + add( new FormContainer( "javax.swing.JDesktopPane", new FormLayoutManager( class javax.swing.JDesktopPane ) ) { + name: "desktopPane1" + add( new FormContainer( "javax.swing.JInternalFrame", new FormLayoutManager( class java.awt.BorderLayout ) ) { + name: "internalFrame1" + "visible": true + "title": "Active" + "closable": true + "maximizable": true + "iconifiable": true + "resizable": true + }, new FormLayoutConstraints( null ) { + "x": 5 + "y": 5 + } ) + add( new FormContainer( "javax.swing.JInternalFrame", new FormLayoutManager( class java.awt.BorderLayout ) ) { + name: "internalFrame2" + "visible": true + "closable": true + "iconifiable": true + "maximizable": true + "resizable": true + "title": "Inactive" + }, new FormLayoutConstraints( null ) { + "x": 5 + "y": 50 + } ) + }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) { + "value": "cell 1 26" + } ) + }, new FormLayoutConstraints( null ) { + "location": new java.awt.Point( 0, 0 ) + "size": new java.awt.Dimension( 400, 1070 ) + } ) + add( new FormNonVisual( "javax.swing.ButtonGroup" ) { + name: "buttonGroup1" + }, new FormLayoutConstraints( null ) { + "location": new java.awt.Point( 0, 1095 ) + } ) + add( new FormNonVisual( "javax.swing.ButtonGroup" ) { + name: "buttonGroup2" + }, new FormLayoutConstraints( null ) { + "location": new java.awt.Point( 0, 1145 ) + } ) + } +} 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 new file mode 100644 index 00000000..d3152cdd --- /dev/null +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemePropertiesBaseManager.java @@ -0,0 +1,301 @@ +/* + * Copyright 2021 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.themeeditor; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Properties; +import java.util.Set; +import com.formdev.flatlaf.FlatDarculaLaf; +import com.formdev.flatlaf.FlatDarkLaf; +import com.formdev.flatlaf.FlatIconColors; +import com.formdev.flatlaf.FlatIntelliJLaf; +import com.formdev.flatlaf.FlatLaf; +import com.formdev.flatlaf.FlatLightLaf; +import com.formdev.flatlaf.util.StringUtils; + +/** + * @author Karl Tauber + */ +class FlatThemePropertiesBaseManager +{ + private static Class[] CORE_THEMES = { + FlatLaf.class, + FlatLightLaf.class, + FlatDarkLaf.class, + FlatIntelliJLaf.class, + FlatDarculaLaf.class, + }; + + private final Map providers = new HashMap<>(); + private static Map coreThemes; + private static Set definedCoreKeys; + + FlatThemePropertiesSupport.BasePropertyProvider create( File file, FlatThemePropertiesSupport propertiesSupport ) { + String name = StringUtils.removeTrailing( file.getName(), ".properties" ); + boolean isCoreTheme = file.getParent().replace( '\\', '/' ).endsWith( "/com/formdev/flatlaf" ); + MyBasePropertyProvider provider = new MyBasePropertyProvider( name, propertiesSupport, isCoreTheme ); + providers.put( name, provider ); + return provider; + } + + void clear() { + providers.clear(); + } + + static Set getDefindedCoreKeys() { + if( definedCoreKeys != null ) + return definedCoreKeys; + + loadCoreThemes(); + + definedCoreKeys = new HashSet<>(); + for( Properties properties : coreThemes.values() ) { + for( Object k : properties.keySet() ) { + String key = (String) k; + if( key.startsWith( "*." ) || key.startsWith( "@" ) ) + continue; + if( key.startsWith( "[" ) ) { + int closeIndex = key.indexOf( ']' ); + if( closeIndex < 0 ) + continue; + key = key.substring( closeIndex + 1 ); + } + definedCoreKeys.add( key ); + } + } + return definedCoreKeys; + } + + private static void loadCoreThemes() { + if( coreThemes != null ) + return; + + coreThemes = new HashMap<>(); + + for( Class lafClass : CORE_THEMES ) { + String propertiesName = '/' + lafClass.getName().replace( '.', '/' ) + ".properties"; + try( InputStream in = lafClass.getResourceAsStream( propertiesName ) ) { + Properties properties = new Properties(); + if( in != null ) + properties.load( in ); + coreThemes.put( lafClass.getSimpleName(), properties ); + } catch( IOException ex ) { + ex.printStackTrace(); + } + } + } + + private static List baseFiles( String name, String baseTheme ) { + ArrayList result = new ArrayList<>(); + + // core themes + switch( name ) { + case "FlatLightLaf": + case "FlatDarkLaf": + result.add( "FlatLaf" ); + break; + + case "FlatIntelliJLaf": + result.add( "FlatLightLaf" ); + result.add( "FlatLaf" ); + break; + + case "FlatDarculaLaf": + result.add( "FlatDarkLaf" ); + result.add( "FlatLaf" ); + break; + } + + // custom themes based on core themes + if( result.isEmpty() ) { + if( baseTheme == null ) + baseTheme = "light"; + + switch( baseTheme ) { + default: + case "light": + result.add( "FlatLightLaf" ); + result.add( "FlatLaf" ); + break; + + case "dark": + result.add( "FlatDarkLaf" ); + result.add( "FlatLaf" ); + break; + + case "intellij": + result.add( "FlatIntelliJLaf" ); + result.add( "FlatLightLaf" ); + result.add( "FlatLaf" ); + break; + + case "darcula": + result.add( "FlatDarculaLaf" ); + result.add( "FlatDarkLaf" ); + result.add( "FlatLaf" ); + break; + } + + // exclude base properties if editing base properties + if( name.equals( "FlatLaf" ) ) + result.remove( "FlatLaf" ); + } + + return result; + } + + //---- class MyBasePropertyProvider --------------------------------------- + + private class MyBasePropertyProvider + implements FlatThemePropertiesSupport.BasePropertyProvider + { + private final String name; + private final FlatThemePropertiesSupport propertiesSupport; + private final boolean isCoreTheme; + private final String coreBaseTheme; + + private List baseFiles; + private String lastBaseTheme; + + MyBasePropertyProvider( String name, FlatThemePropertiesSupport propertiesSupport, boolean isCoreTheme ) { + this.name = name; + this.propertiesSupport = propertiesSupport; + this.isCoreTheme = isCoreTheme; + + switch( name ) { + case "FlatLightLaf": coreBaseTheme = "light"; break; + case "FlatDarkLaf": coreBaseTheme = "dark"; break; + case "FlatIntelliJLaf": coreBaseTheme = "intellij"; break; + case "FlatDarculaLaf": coreBaseTheme = "darcula"; break; + default: coreBaseTheme = null; break; + } + } + + @Override + public String getProperty( String key, String baseTheme ) { + // override base theme for core themes + if( coreBaseTheme != null ) + baseTheme = coreBaseTheme; + + updateBaseFiles( baseTheme ); + + // search in opened editors + for( String baseFile : baseFiles ) { + String value = getPropertyFromBase( baseFile, key ); + if( value != null ) + return value; + } + + // search in core themes + if( !isCoreTheme ) { + loadCoreThemes(); + + String value = getPropertyFromCore( name, key ); + if( value != null ) + return value; + + for( String baseFile : baseFiles ) { + value = getPropertyFromCore( baseFile, key ); + if( value != null ) + return value; + } + } + + // search in icon colors + if( key.startsWith( "Actions." ) || key.startsWith( "Objects." ) ) { + boolean dark = FlatThemePropertiesSupport.isDark( baseTheme ); + for( FlatIconColors c : FlatIconColors.values() ) { + if( c.key.equals( key ) && (c.light == !dark || c.dark == dark) ) + return String.format( "#%06x", c.rgb ); + } + } + + return null; + } + + private String getPropertyFromBase( String baseFile, String key ) { + MyBasePropertyProvider provider = providers.get( baseFile ); + return (provider != null) + ? provider.propertiesSupport.getProperties().getProperty( key ) + : null; + } + + private String getPropertyFromCore( String baseFile, String key ) { + Properties properties = coreThemes.get( baseFile ); + return (properties != null) + ? properties.getProperty( key ) + : null; + } + + private void updateBaseFiles( String baseTheme ) { + if( baseFiles != null && Objects.equals( baseTheme, lastBaseTheme ) ) + return; + + baseFiles = baseFiles( name, baseTheme ); + lastBaseTheme = baseTheme; + } + + @Override + public void addAllKeys( Set allKeys, String baseTheme ) { + // override base theme for core themes + if( coreBaseTheme != null ) + baseTheme = coreBaseTheme; + + updateBaseFiles( baseTheme ); + + // search in opened editors + for( String baseFile : baseFiles ) { + MyBasePropertyProvider provider = providers.get( baseFile ); + if( provider == null ) + continue; + + for( Object key : provider.propertiesSupport.getProperties().keySet() ) + allKeys.add( (String) key ); + } + + // search in core themes + if( !isCoreTheme ) { + loadCoreThemes(); + + copyKeys( coreThemes.get( name ), allKeys ); + + for( String baseFile : baseFiles ) + copyKeys( coreThemes.get( baseFile ), allKeys ); + } + + // icon colors + for( FlatIconColors c : FlatIconColors.values() ) + allKeys.add( c.key ); + } + + private void copyKeys( Properties properties, Set allKeys ) { + if( properties == null ) + return; + + for( Object key : properties.keySet() ) + allKeys.add( (String) 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 163c6fa2..ba669e66 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 @@ -17,20 +17,20 @@ package com.formdev.flatlaf.themeeditor; import java.awt.Color; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.io.StringReader; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.function.Function; +import javax.swing.UIDefaults; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; +import javax.swing.plaf.basic.BasicLookAndFeel; import javax.swing.text.BadLocationException; import com.formdev.flatlaf.UIDefaultsLoaderAccessor; @@ -45,20 +45,25 @@ class FlatThemePropertiesSupport private final FlatSyntaxTextArea textArea; private final Function propertiesGetter; private final Function resolver; + private BasePropertyProvider basePropertyProvider; + + // caches private Properties propertiesCache; private final Map parsedValueCache = new HashMap<>(); - - private File[] baseFiles; - private long[] baseFilesLastModified; - private Properties[] basePropertiesCache; - + private final Map parsedValueCache2 = new HashMap<>(); private Set allKeysCache; + private String baseTheme; + + private static long globalCacheInvalidationCounter; + private long cacheInvalidationCounter; + + private static Set wildcardKeys; FlatThemePropertiesSupport( FlatSyntaxTextArea textArea ) { this.textArea = textArea; propertiesGetter = key -> { - return getProperty( key ); + return getPropertyOrWildcard( key ); }; resolver = v -> { return resolveValue( v ); @@ -67,12 +72,8 @@ class FlatThemePropertiesSupport textArea.getDocument().addDocumentListener( this ); } - void setBaseFiles( List baseFiles ) { - int size = baseFiles.size(); - this.baseFiles = baseFiles.toArray( new File[size] ); - - baseFilesLastModified = new long[size]; - basePropertiesCache = new Properties[size]; + void setBasePropertyProvider( BasePropertyProvider basePropertyProvider ) { + this.basePropertyProvider = basePropertyProvider; } private String resolveValue( String value ) { @@ -80,6 +81,8 @@ class FlatThemePropertiesSupport } Object getParsedValueAtLine( int line ) { + autoClearCache(); + Integer lineKey = line; Object parsedValue = parsedValueCache.get( lineKey ); if( parsedValue != null ) @@ -96,7 +99,7 @@ class FlatThemePropertiesSupport parsedValueCache.put( lineKey, parsedValue ); return parsedValue; } catch( Exception ex ) { - System.out.println( ex.getMessage() ); //TODO + System.out.println( textArea.getFileName() + ": " + ex.getMessage() ); //TODO parsedValueCache.put( lineKey, ex ); return null; } @@ -122,26 +125,58 @@ class FlatThemePropertiesSupport } } + Object getParsedProperty( String key ) { + Object parsedValue = parsedValueCache2.get( key ); + if( parsedValue != null ) + return !(parsedValue instanceof Exception) ? parsedValue : null; + + String str = getPropertyOrWildcard( key ); + if( str == null ) + return null; + + try { + Object[] resultValueType = new Object[1]; + String value = resolveValue( str ); + parsedValue = UIDefaultsLoaderAccessor.parseValue( key, value, resultValueType, resolver ); + parsedValueCache2.put( key, parsedValue ); + return parsedValue; + } catch( Exception ex ) { + System.out.println( textArea.getFileName() + ": " + ex.getMessage() ); //TODO + parsedValueCache2.put( key, ex ); + return null; + } + } + + private String getPropertyOrWildcard( String key ) { + String value = getProperty( key ); + if( value != null ) + return value; + + if( !isKeyAllowedForWildcard( key ) ) + return null; + + int lastDotIndex = key.lastIndexOf( '.' ); + if( lastDotIndex < 0 ) + return null; + + String wildcardKey = "*.".concat( key.substring( lastDotIndex + 1 ) ); + return getProperty( wildcardKey ); + } + private String getProperty( String key ) { // look in current text area String value = getProperties().getProperty( key ); if( value != null ) return value; - if( baseFiles == null ) + if( basePropertyProvider == null ) return null; // look in base properties files - for( int i = 0; i < baseFiles.length; i++ ) { - value = getBaseProperties( i ).getProperty( key ); - if( value != null ) - return value; - } - - return null; + return basePropertyProvider.getProperty( key, getBaseTheme() ); } - private Properties getProperties() { + Properties getProperties() { if( propertiesCache != null ) return propertiesCache; @@ -154,23 +189,9 @@ class FlatThemePropertiesSupport return propertiesCache; } - private Properties getBaseProperties( int index ) { - long lastModified = baseFiles[index].lastModified(); - if( baseFilesLastModified[index] != lastModified || basePropertiesCache[index] == null ) { - // (re)load base properties file - baseFilesLastModified[index] = lastModified; - basePropertiesCache[index] = new Properties(); - try( InputStream in = new FileInputStream( baseFiles[index] ) ) { - basePropertiesCache[index].load( in ); - } catch( IOException ex ) { - ex.printStackTrace(); //TODO - } - } - - return basePropertiesCache[index]; - } - Set getAllKeys() { + autoClearCache(); + if( allKeysCache != null ) return allKeysCache; @@ -179,21 +200,112 @@ class FlatThemePropertiesSupport for( Object key : getProperties().keySet() ) allKeysCache.add( (String) key ); - if( baseFiles == null ) - return allKeysCache; - - for( int i = 0; i < baseFiles.length; i++ ) { - for( Object key : getBaseProperties( i ).keySet() ) - allKeysCache.add( (String) key ); - } + // look in base properties files + if( basePropertyProvider != null ) + basePropertyProvider.addAllKeys( allKeysCache, getBaseTheme() ); return allKeysCache; } + static boolean isDark( String baseTheme ) { + return "dark".equals( baseTheme ) || "darcula".equals( baseTheme ); + } + + private String getBaseTheme() { + if( baseTheme == null ) + baseTheme = getProperties().getProperty( "@baseTheme", "light" ); + return baseTheme; + } + private void clearCache() { propertiesCache = null; parsedValueCache.clear(); + parsedValueCache2.clear(); allKeysCache = null; + baseTheme = null; + + // increase global cache invalidation counter to allow auto-clear caches + globalCacheInvalidationCounter++; + cacheInvalidationCounter = globalCacheInvalidationCounter; + } + + /** + * Clear caches that may depend on other editors if cache of another editor was invalidated. + */ + private void autoClearCache() { + if( cacheInvalidationCounter == globalCacheInvalidationCounter ) + return; + + parsedValueCache.clear(); + parsedValueCache2.clear(); + allKeysCache = null; + } + + static Set getKeysForWildcard( String key ) { + if( !key.startsWith( "*." ) ) + return Collections.emptySet(); + + loadKeysAllowedForWildcard(); + + String suffix = key.substring( 1 ); + Set result = new HashSet<>(); + for( String k : wildcardKeys ) { + if( k.endsWith( suffix ) ) + result.add( k ); + } + return result; + } + + private static boolean isKeyAllowedForWildcard( String key ) { + loadKeysAllowedForWildcard(); + return wildcardKeys.contains( key ); + } + + private static void loadKeysAllowedForWildcard() { + if( wildcardKeys != null ) + return; + wildcardKeys = new HashSet<>(); + + UIDefaults basicDefaults = new BasicLookAndFeel() { + @Override public String getName() { return "Basic"; } + @Override public String getID() { return "Basic"; } + @Override public String getDescription() { return "Basic"; } + @Override public boolean isNativeLookAndFeel() { return false; } + @Override public boolean isSupportedLookAndFeel() { return true; } + }.getDefaults(); + + for( Object key : basicDefaults.keySet() ) { + if( key instanceof String ) + wildcardKeys.add( (String) key ); + } + + // same as added in FlatLaf.getDefaults() + wildcardKeys.addAll( Arrays.asList( + "Button.disabledBackground", + "EditorPane.disabledBackground", + "EditorPane.inactiveBackground", + "FormattedTextField.disabledBackground", + "PasswordField.disabledBackground", + "Spinner.disabledBackground", + "TextArea.disabledBackground", + "TextArea.inactiveBackground", + "TextField.disabledBackground", + "TextPane.disabledBackground", + "TextPane.inactiveBackground", + "ToggleButton.disabledBackground", + + "Button.disabledText", + "CheckBox.disabledText", + "CheckBoxMenuItem.disabledForeground", + "Menu.disabledForeground", + "MenuItem.disabledForeground", + "RadioButton.disabledText", + "RadioButtonMenuItem.disabledForeground", + "Spinner.disabledForeground", + "ToggleButton.disabledText", + + "DesktopIcon.foreground" + ) ); } //---- interface DocumentListener ---- @@ -233,4 +345,11 @@ class FlatThemePropertiesSupport this.value = value; } } + + //---- interface BasePropertyProvider ------------------------------------- + + interface BasePropertyProvider { + String getProperty( String key, String baseTheme ); + void addAllKeys( Set allKeys, String baseTheme ); + } } diff --git a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeTokenMaker.java b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeTokenMaker.java index f8d7adc3..6f540cdf 100644 --- a/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeTokenMaker.java +++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatThemeTokenMaker.java @@ -60,6 +60,17 @@ public class FlatThemeTokenMaker tokenMap.put( "darken", TOKEN_FUNCTION ); tokenMap.put( "saturate", TOKEN_FUNCTION ); tokenMap.put( "desaturate", TOKEN_FUNCTION ); + tokenMap.put( "fadein", TOKEN_FUNCTION ); + tokenMap.put( "fadeout", TOKEN_FUNCTION ); + tokenMap.put( "fade", TOKEN_FUNCTION ); + tokenMap.put( "spin", TOKEN_FUNCTION ); + tokenMap.put( "changeHue", TOKEN_FUNCTION ); + tokenMap.put( "changeSaturation", TOKEN_FUNCTION ); + tokenMap.put( "changeLightness", TOKEN_FUNCTION ); + tokenMap.put( "changeAlpha", TOKEN_FUNCTION ); + tokenMap.put( "mix", TOKEN_FUNCTION ); + tokenMap.put( "tint", TOKEN_FUNCTION ); + tokenMap.put( "shade", TOKEN_FUNCTION ); tokenMap.put( "lazy", TOKEN_FUNCTION ); // function options @@ -116,8 +127,10 @@ public class FlatThemeTokenMaker newTokenType = TOKEN_VARIABLE; else if( currentTokenType != TOKEN_STRING && (RSyntaxUtilities.isDigit( ch ) || (currentTokenType == TOKEN_NUMBER && ch == '.')) ) newTokenType = TOKEN_NUMBER; - else if( ch == ',' || ch == '(' || ch == ')' || ch == '"' || ch == '%' ) + else if( ch == ',' || ch == '"' || ch == '%' ) newTokenType = TokenTypes.OPERATOR; + else if( ch == '(' || ch == ')' ) + newTokenType = TokenTypes.SEPARATOR; // necessary for bracket matching else newTokenType = TOKEN_STRING; diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatDarkLaf.properties b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatDarkLaf.properties new file mode 100644 index 00000000..04e68e5d --- /dev/null +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatDarkLaf.properties @@ -0,0 +1,65 @@ +# +# Copyright 2021 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. +# + +#---- TabbedPane ---- + +#TabbedPane.selectedBackground = darken($TabbedPane.background,5%) + + +#---- FlatThemeEditorPane ---- + +FlatThemeEditorPane.background = #2b2b2b +FlatThemeEditorPane.caretColor = @foreground +FlatThemeEditorPane.selectionBackground = #214283 +FlatThemeEditorPane.currentLineHighlight = #323232 +FlatThemeEditorPane.markOccurrencesColor = #52503A +FlatThemeEditorPane.markAllHighlightColor = #32593D +FlatThemeEditorPane.matchedBracketBackground = lighten(#3B514D,3%) +FlatThemeEditorPane.matchedBracketBorderColor = $FlatThemeEditorPane.matchedBracketBackground + + +#---- FlatThemeEditorPane.style ---- + +FlatThemeEditorPane.style.property = @foreground +FlatThemeEditorPane.style.variable = @foreground +# use semitransparent background because it is painted over mark occurrences background +FlatThemeEditorPane.style.variable.background = #00ff0018 +FlatThemeEditorPane.style.number = #6897BB +FlatThemeEditorPane.style.color = #6897BB +# use semitransparent background because it is painted over mark occurrences background +FlatThemeEditorPane.style.color.background = #ffffff10 +FlatThemeEditorPane.style.string = #6A8759 +FlatThemeEditorPane.style.function = #CC7832 +FlatThemeEditorPane.style.type = #8C8C8C +FlatThemeEditorPane.style.reservedWord = #CC7832 +FlatThemeEditorPane.style.literalBoolean = #CC7832 +FlatThemeEditorPane.style.operator = #888 +FlatThemeEditorPane.style.separator = #888 +FlatThemeEditorPane.style.whitespace = @foreground +FlatThemeEditorPane.style.comment = #808080 +FlatThemeEditorPane.style.comment.italic = true + + +#---- FlatThemeEditorPane.gutter ---- + +FlatThemeEditorPane.gutter.background = $FlatThemeEditorPane.background +FlatThemeEditorPane.gutter.borderColor = $Component.borderColor +FlatThemeEditorPane.gutter.lineNumberColor = @disabledText + + +#---- FlatThemeEditorPane.errorstrip ---- + +FlatThemeEditorPane.errorstrip.caretMarkerColor = $FlatThemeEditorPane.caretColor diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLaf.svg b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLaf.svg new file mode 100644 index 00000000..61569fce --- /dev/null +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLaf.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + 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 6c84a82b..c50e3328 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 @@ -650,6 +650,21 @@ ScrollPane.font ScrollPane.foreground ScrollPane.smoothScrolling ScrollPaneUI +SearchField.clearIcon +SearchField.clearIconColor +SearchField.clearIconHoverColor +SearchField.clearIconPressedColor +SearchField.clearPressedIcon +SearchField.clearRolloverIcon +SearchField.icon +SearchField.popupIcon +SearchField.popupPressedIcon +SearchField.popupRolloverIcon +SearchField.pressedIcon +SearchField.rolloverIcon +SearchField.searchIconColor +SearchField.searchIconHoverColor +SearchField.searchIconPressedColor Separator.background Separator.foreground Separator.height diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLightLaf.properties b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLightLaf.properties new file mode 100644 index 00000000..d84c0966 --- /dev/null +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLightLaf.properties @@ -0,0 +1,65 @@ +# +# Copyright 2021 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. +# + +#---- TabbedPane ---- + +#TabbedPane.selectedBackground = lighten($TabbedPane.background,5%) + + +#---- FlatThemeEditorPane ---- + +FlatThemeEditorPane.background = #fff +FlatThemeEditorPane.caretColor = @foreground +FlatThemeEditorPane.selectionBackground = #A6D2FF +FlatThemeEditorPane.currentLineHighlight = #fcfaed +FlatThemeEditorPane.markOccurrencesColor = #FCE8F4 +FlatThemeEditorPane.markAllHighlightColor = #ffc800 +FlatThemeEditorPane.matchedBracketBackground = #93D9D9 +FlatThemeEditorPane.matchedBracketBorderColor = $FlatThemeEditorPane.matchedBracketBackground + + +#---- FlatThemeEditorPane.style ---- + +FlatThemeEditorPane.style.property = @foreground +FlatThemeEditorPane.style.variable = @foreground +# use semitransparent background because it is painted over mark occurrences background +FlatThemeEditorPane.style.variable.background = #00cc0018 +FlatThemeEditorPane.style.number = #1750EB +FlatThemeEditorPane.style.color = #1750EB +# use semitransparent background because it is painted over mark occurrences background +FlatThemeEditorPane.style.color.background = #0000000a +FlatThemeEditorPane.style.string = #067D17 +FlatThemeEditorPane.style.function = #871094 +FlatThemeEditorPane.style.type = #8C8C8C +FlatThemeEditorPane.style.reservedWord = #871094 +FlatThemeEditorPane.style.literalBoolean = #871094 +FlatThemeEditorPane.style.operator = #888 +FlatThemeEditorPane.style.separator = #888 +FlatThemeEditorPane.style.whitespace = @foreground +FlatThemeEditorPane.style.comment = #8C8C8C +FlatThemeEditorPane.style.comment.italic = true + + +#---- FlatThemeEditorPane.gutter ---- + +FlatThemeEditorPane.gutter.background = $FlatThemeEditorPane.background +FlatThemeEditorPane.gutter.borderColor = $Component.borderColor +FlatThemeEditorPane.gutter.lineNumberColor = @disabledText + + +#---- FlatThemeEditorPane.errorstrip ---- + +FlatThemeEditorPane.errorstrip.caretMarkerColor = $FlatThemeEditorPane.caretColor diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/add.svg b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/add.svg new file mode 100644 index 00000000..af6fd932 --- /dev/null +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/add.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/close.svg b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/close.svg index 7f63bd7f..1f6b67c0 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/close.svg +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/close.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/findAndShowNextMatches.svg b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/findAndShowNextMatches.svg index 62f0f972..f73fccf0 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/findAndShowNextMatches.svg +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/findAndShowNextMatches.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/findAndShowPrevMatches.svg b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/findAndShowPrevMatches.svg index 88d78e89..3902602f 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/findAndShowPrevMatches.svg +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/findAndShowPrevMatches.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/matchCase.svg b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/matchCase.svg index 874ee768..bbe558af 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/matchCase.svg +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/matchCase.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/menu-open.svg b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/menu-open.svg index 51e7f354..e1f4d136 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/menu-open.svg +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/menu-open.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/regex.svg b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/regex.svg index 68316ab9..8c1d350d 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/regex.svg +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/regex.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/words.svg b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/words.svg index 353e3bb4..9b8c3312 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/words.svg +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/words.svg @@ -1,3 +1,4 @@ + diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/light.xml b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/light.xml deleted file mode 100644 index 1c548fda..00000000 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/light.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/flatlaf-theme-editor/theme-editor-test.properties b/flatlaf-theme-editor/theme-editor-test.properties index d9c49e32..66a11c82 100644 --- a/flatlaf-theme-editor/theme-editor-test.properties +++ b/flatlaf-theme-editor/theme-editor-test.properties @@ -49,3 +49,24 @@ Prop.colorFunc13 = spin($Prop.colorFunc12,40) Prop.colorFunc14 = spin($Prop.colorFunc12,-40) Prop.colorFunc15 = spin($Prop.colorFunc12,400) Prop.colorFunc16 = spin($Prop.colorFunc12,-400) + +Prop.colorFunc20 = changeHue(#f00,180) +Prop.colorFunc21 = changeSaturation(#f00,50%) +Prop.colorFunc22 = changeLightness(#f00,80%) +Prop.colorFunc23 = changeAlpha(#f00,50%) + +Prop.colorFunc30 = mix(#f00,#0f0,10%) +Prop.colorFunc31 = mix(#f00,#0f0,25%) +Prop.colorFunc32 = mix(#f00,#0f0) +Prop.colorFunc33 = mix(#f00,#0f0,75%) +Prop.colorFunc34 = mix(#f00,#0f0,90%) +Prop.colorFunc35 = mix($Prop.color1,$Prop.color2) +Prop.colorFunc36 = mix($Prop.colorFunc20,$Prop.colorFunc30) + +Prop.colorFunc40 = tint(#f0f,25%) +Prop.colorFunc41 = tint(#f0f) +Prop.colorFunc42 = tint(#f0f,75%) + +Prop.colorFunc45 = shade(#f0f,25%) +Prop.colorFunc46 = shade(#f0f) +Prop.colorFunc47 = shade(#f0f,75%)