diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..2ae5efd8
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,142 @@
+# https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
+
+name: CI
+
+on:
+ push:
+ branches:
+ - '*'
+ tags:
+ - '[0-9]*'
+ pull_request:
+ branches:
+ - '*'
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ # test against
+ # - Java 1.8 (minimum requirement)
+ # - Java 9 (first version with JPMS)
+ # - Java LTS versions (11, 17, ...)
+ # - lastest Java version(s)
+ java:
+ - 1.8
+ - 9
+ - 11 # LTS
+ - 14
+ - 15
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Setup Java ${{ matrix.java }}
+ uses: actions/setup-java@v1
+ with:
+ java-version: ${{ matrix.java }}
+
+ - name: Cache Gradle wrapper
+ uses: actions/cache@v1
+ with:
+ path: ~/.gradle/wrapper
+ key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
+
+ - name: Cache Gradle cache
+ uses: actions/cache@v2
+ with:
+ path: ~/.gradle/caches
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }}
+ restore-keys: ${{ runner.os }}-gradle
+
+ - name: Build with Gradle
+ run: ./gradlew build
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v2
+ if: matrix.java == '11'
+ with:
+ name: FlatLaf-build-artifacts
+ path: |
+ flatlaf-core/build/libs
+ flatlaf-demo/build/libs
+ flatlaf-extras/build/libs
+ flatlaf-intellij-themes/build/libs
+ flatlaf-jide-oss/build/libs
+ flatlaf-swingx/build/libs
+ !**/*-javadoc.jar
+ !**/*-sources.jar
+
+
+ snapshot:
+ runs-on: ubuntu-latest
+ needs: build
+ if: |
+ github.event_name == 'push' &&
+ github.ref == 'refs/heads/master' &&
+ github.repository == 'JFormDesigner/FlatLaf'
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Setup Java 11
+ uses: actions/setup-java@v1
+ with:
+ java-version: 11
+
+ - name: Cache Gradle wrapper
+ uses: actions/cache@v1
+ with:
+ path: ~/.gradle/wrapper
+ key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
+
+ - name: Cache Gradle cache
+ uses: actions/cache@v2
+ with:
+ path: ~/.gradle/caches
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }}
+ restore-keys: ${{ runner.os }}-gradle
+
+ - name: Publish snapshot to oss.jfrog.org
+ run: ./gradlew artifactoryPublish
+ env:
+ BINTRAY_USER: ${{ secrets.BINTRAY_USER }}
+ BINTRAY_KEY: ${{ secrets.BINTRAY_KEY }}
+
+
+ release:
+ runs-on: ubuntu-latest
+ needs: build
+ if: |
+ github.event_name == 'push' &&
+ startsWith( github.ref, 'refs/tags/' ) &&
+ github.repository == 'JFormDesigner/FlatLaf'
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Setup Java 11
+ uses: actions/setup-java@v1
+ with:
+ java-version: 11
+
+ - name: Cache Gradle wrapper
+ uses: actions/cache@v1
+ with:
+ path: ~/.gradle/wrapper
+ key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
+
+ - name: Cache Gradle cache
+ uses: actions/cache@v2
+ with:
+ path: ~/.gradle/caches
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }}
+ restore-keys: ${{ runner.os }}-gradle
+
+ - name: Release a new stable version to bintray
+ run: ./gradlew bintrayUpload -Drelease=true
+ env:
+ BINTRAY_USER: ${{ secrets.BINTRAY_USER }}
+ BINTRAY_KEY: ${{ secrets.BINTRAY_KEY }}
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 5f64d6a7..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-language: java
-sudo: false
-
-jdk:
- - openjdk8
- - openjdk9
- - openjdk11
- - openjdk14
- - openjdk15
-
-before_cache:
- - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- - rm -fr $HOME/.gradle/caches/*/plugin-resolution/
-cache:
- directories:
- - $HOME/.gradle/caches/
- - $HOME/.gradle/wrapper/
-
-before_install:
- - ./gradlew --version
- - java -version
-
-stages:
- - name: test
- - name: snapshot
- if: branch = master AND type IN (push) AND tag IS blank
- - name: release
- if: type IN (push) AND tag IS present
-
-jobs:
- include:
- # publish snapshot to oss.jfrog.org
- - stage: snapshot
- jdk: openjdk11
- script: ./gradlew artifactoryPublish
-
- # release a new stable version to bintray
- - stage: release
- jdk: openjdk11
- script: ./gradlew bintrayUpload -Drelease=true
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9a3b24fc..e7c28844 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,11 +1,169 @@
FlatLaf Change Log
==================
-## 0.45-SNAPSHOT
+## 1.0-rc2
#### New features and improvements
+- Button:
+ - In "Flat Light" theme, use a slightly thinner border for focused buttons
+ (because they already have light blue background).
+ - In "Flat Dark" theme, use slightly wider border for focused buttons.
+- CheckBox and RadioButton: In "Flat Dark" theme, use blueish background for
+ focused components.
+- Tree: Support disabling wide selection per component. (set client property
+ `JTree.wideSelection` to `false`). (PR #245)
+- Tree: Support disabling selection painting per component. Then the tree cell
+ renderer is responsible for selection painting. (set client property
+ `JTree.paintSelection` to `false`).
+- JIDE Common Layer: Support `JidePopupMenu`.
+
+#### Fixed bugs
+
+- Button: Fixed behavior of Enter key on focused button on Windows
+ and Linux, which now clicks the focused button (instead of the default
+ button).
+ - On Windows, this is a regression in 1.0-rc1.
+ - On macOS, the Enter key always clicks the default button, which
+ is the platform behavior.
+ - On all platforms, the default button can be always clicked with
+ Ctrl+Enter keys, even if another button is focused.
+- CheckBox and RadioButton: Fill component background as soon as background
+ color is different to default background color, even if component is not
+ opaque (which is the default). This paints selection if using the component as
+ cell renderer a Table, Tree or List.
+- TextComponents: Border of focused non-editable text components had wrong
+ color.
+- Custom window decorations: Fixed top window border in dark themes when running
+ in JetBrains Runtime.
+
+
+## 1.0-rc1
+
+#### New features and improvements
+
+- Button: Disabled `Button.defaultButtonFollowsFocus` on Windows (as on other
+ platforms). If you like to keep the old behavior in your application, use:
+ `if(SystemInfo.isWindows)
+ UIManager.put("Button.defaultButtonFollowsFocus",true);`.
+- ComboBox, Spinner and SplitPaneDivider: Added pressed feedback to arrow
+ buttons.
+- Slider: Support per component custom thumb and track colors via
+ `JSlider.setForeground(Color)` and `JSlider.setBackground(Color)`.
+- Slider: Improved thumb hover and pressed colors.
+- TextComponent: Clip placeholder text if it does not fit into visible area. (PR
+ #229)
+- macOS: Improved font rendering on macOS when using JetBrains Runtime. (PRs
+ #237, #239 and #241)
+- Extras: UI defaults inspector:
+ - Support embedding UI defaults inspector panel into any window. See
+ `FlatUIDefaultsInspector.createInspectorPanel()`.
+ - Copy selected keys and values into clipboard via context menu.
+ - Support wildcard matching in filter (`*` matches any number of characters,
+ `?` matches a single character, `^` beginning of line, `$` end of line).
+- IntelliJ Themes:
+ - Added hover and pressed feedback to Button, CheckBox, RadioButton and
+ ToggleButton. (issue #176)
+ - Added "Material Theme UI Lite / Moonlight" theme.
+ - Updated "Dracula", "Gradianto" and "Material Theme UI Lite" themes.
+
+#### Fixed bugs
+
+- Button and ToggleButton: Threat Unicode surrogate character pair as single
+ character and make button square. (issue #234)
+- Button and ToggleButton: ToolBar buttons now respect explicitly set background
+ color. If no background color is set, then the button background is not
+ painted anymore. (issue #191)
+- ToggleButton: Tab style buttons (client property `JButton.buttonType` is
+ `tab`) now respect explicitly set background color.
+- TabbedPane: Fixed `IndexOutOfBoundsException` when using tooltip text on close
+ buttons and closing last/rightmost tab. (issue #235)
+- TabbedPane: Fixed scrolling tabs with touchpads and high-resolution mouse
+ wheels.
+- Extras: Added missing export of package
+ `com.formdev.flatlaf.extras.components` to Java 9 module descriptor.
+- JIDE Common Layer:
+ - Invoke `LookAndFeelFactory.installJideExtension()` when using FlatLaf UI
+ delegates. (issue #230)
+ - RangeSlider: Fixed slider focused colors in IntelliJ themes.
+- IntelliJ Themes:
+ - Fixed menu item check colors.
+ - Fixed `MenuItem.underlineSelectionColor`.
+ - Fixed List, Tree and Table `selectionInactiveForeground` in light Arc
+ themes.
+ - Fixed List and Table background colors in Material UI Lite themes.
+ - Fixed menu accelerator colors in Monocai theme. (issue #243)
+
+
+## 0.46
+
+#### New features and improvements
+
+- Slider and JIDE RangeSlider: Clicking on track now immediately moves the thumb
+ to mouse location and starts dragging the thumb. Use `UIManager.put(
+ "Slider.scrollOnTrackClick", true )` to enable old behavior that scrolls the
+ thumb when clicking on track.
+- Slider: Snap to ticks is now done while dragging the thumb. Use
+ `UIManager.put( "Slider.snapToTicksOnReleased", true )` to enable old behavior
+ that snaps to ticks on mouse released.
+- Extras: Added standard component extension classes that provides easy access
+ to FlatLaf specific client properties (see package
+ `com.formdev.flatlaf.extras.components`).
+- Extras: Renamed tri-state check box class from
+ `com.formdev.flatlaf.extras.TriStateCheckBox` to
+ `com.formdev.flatlaf.extras.components.FlatTriStateCheckBox`. Also
+ changed/improved API and added javadoc.
+- Extras: Renamed SVG utility class from `com.formdev.flatlaf.extras.SVGUtils`
+ to `com.formdev.flatlaf.extras.FlatSVGUtils`.
+- IntelliJ Themes: Added flag whether a theme is dark to
+ `FlatAllIJThemes.INFOS`. (issue #221)
+- JIDE Common Layer: Support `TristateCheckBox`.
+
+
+#### Fixed bugs
+
+- Slider: Fixed painting of colored track if `JSlider.inverted` is `true`.
+- Table and TableHeader: Fixed missing right vertical grid line if using table
+ as row header in scroll pane. (issues #152 and #46)
+- TableHeader: Fixed position of column separators in right-to-left component
+ orientation.
+- ToolTip: Fixed drop shadow for wide tooltips on Windows and Java 9+. (issue
+ #224)
+- SwingX: Fixed striping background highlighting color (e.g. alternating table
+ rows) in dark themes.
+- Fixed: If text antialiasing is disabled (in OS system settings or via
+ `-Dawt.useSystemAAFontSettings=off`), then some components still did use
+ antialiasing to render text (not-editable ComboBox, ProgressBar, Slider,
+ TabbedPane and multiline ToolTip). (issue #227)
+
+
+## 0.45
+
+#### New features and improvements
+
+- Slider: New design, added hover and pressed feedback and improved customizing.
+ (PR #214)
- JIDE Common Layer: Support `RangeSlider`. (PR #209)
+- IntelliJ Themes:
+ - Added "Gradianto Nature Green" theme.
+ - Updated "Arc Dark", "Cyan", "Dark purple", "Gradianto", "Gray", "Gruvbox"
+ and "One Dark" themes.
+- TabbedPane: Support hiding tab area if it contains only one tab. (set client
+ property `JTabbedPane.hideTabAreaWithOneTab` to `true`)
+- MenuBar: Support different underline menu selection style UI defaults for
+ `MenuBar` and `MenuItem`. (PR #217; issue #216)
+
+
+#### Fixed bugs
+
+- Table: Do not paint last vertical grid line if auto-resize mode is not off.
+ (issue #46)
+- Table: Fixed unstable grid line thickness when scaled on HiDPI screens. (issue
+ #152)
+- TabbedPane: No longer add (internal) tab close button component as child to
+ `JTabbedPane`. (issue #219)
+- Custom window decorations: Title bar was not hidden if window is in
+ full-screen mode. (issue #212)
## 0.44
diff --git a/README.md b/README.md
index 7a1ca28f..931ca1f2 100644
--- a/README.md
+++ b/README.md
@@ -73,40 +73,11 @@ Addons
- [JIDE Common Layer](flatlaf-jide-oss)
-Projects using FlatLaf
-----------------------
+Documentation
+-------------
-- [NetBeans](https://netbeans.apache.org/) 11.3
-- [jclasslib bytecode viewer](https://github.com/ingokegel/jclasslib) 5.5
-- [KeyStore Explorer](https://keystore-explorer.org/) 5.4.3
-- [OWASP Zed Attack Proxy (ZAP)](https://www.zaproxy.org/) (in weekly releases)
--  [jAlbum](https://jalbum.net/) 21 (commercial)
-- [XMLmind XML Editor](https://www.xmlmind.com/xmleditor/) 9.3 (commercial)
-- [Total Validator](https://www.totalvalidator.com/) 15 (commercial)
-- [j-lawyer](https://github.com/jlawyerorg/j-lawyer-org)
-- [MegaMek](https://github.com/MegaMek/megamek) v0.47.4 and
- [MekHQ](https://github.com/MegaMek/mekhq) v0.47.5
-- [GUIslice Builder](https://github.com/ImpulseAdventure/GUIslice-Builder)
- 0.13.b024
-- [Rest Suite](https://github.com/supanadit/restsuite)
-- [ControllerBuddy](https://github.com/bwRavencl/ControllerBuddy)
-- [SpringRemote](https://github.com/HaleyWang/SpringRemote)
-- [mendelson AS2](https://sourceforge.net/projects/mec-as2/),
- [AS4](https://sourceforge.net/projects/mendelson-as4/) and
- [OFTP2](https://sourceforge.net/projects/mendelson-oftp2/) (open-source) and
- [mendelson AS2](https://mendelson-e-c.com/as2/),
- [AS4](https://mendelson-e-c.com/as4/) and
- [OFTP2](https://mendelson-e-c.com/oftp2) (commercial)
-- [MeteoInfo](https://github.com/meteoinfo/MeteoInfo) 2.2
-- [lsfusion platform](https://github.com/lsfusion/platform)
-- [Jes - Die Java-EÜR](https://www.jes-eur.de)
-- [Mapton](https://mapton.org/) 2.0
- ([source code](https://github.com/trixon/mapton)) based on NetBeans platform
-- [Pseudo Assembler IDE](https://github.com/tomasz-herman/PseudoAssemblerIDE)
-- [Sound Analysis](https://github.com/tomasz-herman/SoundAnalysis)
-- [RemoteLight](https://github.com/Drumber/RemoteLight) - Multifunctional LED
- Control Software
-- and more...
+For more information and documentation visit
+[FlatLaf Home](https://www.formdev.com/flatlaf/)
Buzz
@@ -116,8 +87,89 @@ Buzz
- [FlatLaf announcement on Reddit](https://www.reddit.com/r/java/comments/dl0hu3/flatlaf_flat_look_and_feel/)
-Documentation
--------------
+Applications using FlatLaf
+--------------------------
-For more information and documentation visit
-[FlatLaf Home](https://www.formdev.com/flatlaf/)
+- [Apache NetBeans](https://netbeans.apache.org/) 11.3 - IDE for Java, PHP, HTML
+ and much more
+- [jclasslib bytecode viewer](https://github.com/ingokegel/jclasslib) 5.5
+- [KeyStore Explorer](https://keystore-explorer.org/) 5.4.3
+-  [DbVisualizer](https://www.dbvis.com/) 12.0
+ (**commercial**) - the universal database tool for developers, analysts and
+ DBAs
+-  [MagicPlot](https://magicplot.com/) 3.0
+ (**commercial**) - Software for nonlinear fitting, plotting and data analysis
+- 
+ [Thermo-Calc](https://thermocalc.com/products/thermo-calc/) 2021a
+ (**commercial**) - Thermodynamics and Properties Software
+- [OWASP ZAP](https://www.zaproxy.org/) 2.10 - the worlds most widely used web
+ app scanner
+- 
+ [Burp Suite Professional and Community Edition](https://portswigger.net/burp/pro)
+ 2020.11.2 (**commercial**) - the leading software for web security testing
+- 
+ [BurpCustomizer](https://github.com/CoreyD97/BurpCustomizer) - adds more
+ FlatLaf themes to Burp Suite
+- [JOSM](https://josm.openstreetmap.de/) - an extensible editor for
+ [OpenStreetMap](https://www.openstreetmap.org/) (requires FlatLaf JOSM plugin)
+- [jAlbum](https://jalbum.net/) 21 (**commercial**) - creates photo album
+ websites
+- [XMLmind XML Editor](https://www.xmlmind.com/xmleditor/) 9.3 (**commercial**)
+- [Total Validator](https://www.totalvalidator.com/) 15 (**commercial**) -
+ checks your website
+- [j-lawyer](https://github.com/jlawyerorg/j-lawyer-org) - Kanzleisoftware
+- [MegaMek](https://github.com/MegaMek/megamek) v0.47.4 and
+ [MekHQ](https://github.com/MegaMek/mekhq) v0.47.5 - a turn-based sci-fi board
+ game
+- [GUIslice Builder](https://github.com/ImpulseAdventure/GUIslice-Builder)
+ 0.13.b024 - GUI builder for
+ [GUIslice](https://github.com/ImpulseAdventure/GUIslice), a lightweight GUI
+ framework for embedded displays
+- [Rest Suite](https://github.com/supanadit/restsuite) - Rest API testing
+- [ControllerBuddy](https://github.com/bwRavencl/ControllerBuddy) - advanced
+ gamepad mapping software
+- [SpringRemote](https://github.com/HaleyWang/SpringRemote) - remote Linux SSH
+ connections manager
+- [jEnTunnel](https://github.com/ggrandes/jentunnel) - manage SSH Tunnels made
+ easy
+- [mendelson AS2](https://sourceforge.net/projects/mec-as2/),
+ [AS4](https://sourceforge.net/projects/mendelson-as4/) and
+ [OFTP2](https://sourceforge.net/projects/mendelson-oftp2/) (open-source) and
+ [mendelson AS2](https://mendelson-e-c.com/as2/),
+ [AS4](https://mendelson-e-c.com/as4/) and
+ [OFTP2](https://mendelson-e-c.com/oftp2) (**commercial**)
+-  [IGMAS+](https://www.gfz-potsdam.de/igmas) -
+ Interactive Gravity and Magnetic Application System
+- [MeteoInfo](https://github.com/meteoinfo/MeteoInfo) 2.2 - GIS and scientific
+ computation environment for meteorological community
+- [lsfusion platform](https://github.com/lsfusion/platform) 4 - information
+ systems development platform
+- [JPass](https://github.com/gaborbata/jpass) - password manager with strong
+ encryption
+- [Jes - Die Java-EÜR](https://www.jes-eur.de)
+- [Mapton](https://mapton.org/) 2.0
+ ([source code](https://github.com/trixon/mapton)) - some kind of map
+ application (based on NetBeans platform)
+- [Pseudo Assembler IDE](https://github.com/tomasz-herman/PseudoAssemblerIDE) -
+ IDE for Pseudo-Assembler
+- [Linotte](https://github.com/cpc6128/LangageLinotte) 3.1 - French programming
+ language created to learn programming
+- [MEKA](https://github.com/Waikato/meka) 1.9.3 - multi-label classifiers and
+ evaluation procedures using the Weka machine learning framework
+- [Shutter Encoder](https://www.shutterencoder.com/) 14.2
+ ([source code](https://github.com/paulpacifico/shutter-encoder)) -
+ professional video converter and compression tool (screenshots show **old**
+ look)
+- [Sound Analysis](https://github.com/tomasz-herman/SoundAnalysis) - analyze
+ sound files in time or frequency domain
+- [RemoteLight](https://github.com/Drumber/RemoteLight) - multifunctional LED
+ control software
+- [ThunderFocus](https://github.com/marcocipriani01/ThunderFocus) -
+ Arduino-based telescope focuser
+- [Novel-Grabber](https://github.com/Flameish/Novel-Grabber) - download novels
+ from any webnovel and lightnovel site
+- [lectureStudio](https://www.lecturestudio.org/) 4.3.1060 - digitize your
+ lectures with ease
+- [Android Tool](https://github.com/fast-geek/Android-Tool) - makes popular adb
+ and fastboot commands easier to use
+- and more...
diff --git a/build.gradle.kts b/build.gradle.kts
index a000073c..23873cbf 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -14,8 +14,8 @@
* limitations under the License.
*/
-val releaseVersion = "0.44"
-val developmentVersion = "0.45-SNAPSHOT"
+val releaseVersion = "1.0-rc2"
+val developmentVersion = "1.0-rc3-SNAPSHOT"
version = if( java.lang.Boolean.getBoolean( "release" ) ) releaseVersion else developmentVersion
@@ -48,7 +48,7 @@ extra["bintray.dryRun"] = false
// if true, uploaded artifacts are visible to all
// if false, only visible to owner when logged into bintray
-extra["bintray.publish"] = true
+extra["bintray.publish"] = false
allprojects {
@@ -64,7 +64,7 @@ allprojects {
// manifest for all created JARs
manifest.attributes(mapOf(
"Implementation-Vendor" to "FormDev Software GmbH",
- "Implementation-Copyright" to "Copyright (C) ${java.time.LocalDate.now().year} FormDev Software GmbH. All rights reserved.",
+ "Implementation-Copyright" to "Copyright (C) 2019-${java.time.LocalDate.now().year} FormDev Software GmbH. All rights reserved.",
"Implementation-Version" to project.version))
// add META-INF/LICENSE to all created JARs
diff --git a/buildSrc/src/main/kotlin/flatlaf-publish.gradle.kts b/buildSrc/src/main/kotlin/flatlaf-publish.gradle.kts
index dee9ff6a..59d69d73 100644
--- a/buildSrc/src/main/kotlin/flatlaf-publish.gradle.kts
+++ b/buildSrc/src/main/kotlin/flatlaf-publish.gradle.kts
@@ -63,8 +63,14 @@ publishing {
}
scm {
+ connection.set( "scm:git:git://github.com/JFormDesigner/FlatLaf.git" )
url.set( "https://github.com/JFormDesigner/FlatLaf" )
}
+
+ issueManagement {
+ system.set( "GitHub" )
+ url.set( "https://github.com/JFormDesigner/FlatLaf/issues" )
+ }
}
}
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java
index 3e3e87ec..ed1a1b2d 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java
@@ -22,6 +22,8 @@ import javax.swing.JComponent;
import javax.swing.SwingConstants;
/**
+ * Defines/documents own client properties used in FlatLaf.
+ *
* @author Karl Tauber
*/
public interface FlatClientProperties
@@ -130,6 +132,15 @@ public interface FlatClientProperties
*/
String MINIMUM_HEIGHT = "JComponent.minimumHeight";
+ /**
+ * Paint the component with round edges.
+ *
+ * Components {@link javax.swing.JComboBox}, {@link javax.swing.JSpinner},
+ * {@link javax.swing.JTextField}, {@link javax.swing.JFormattedTextField} and {@link javax.swing.JPasswordField}
+ * Value type {@link java.lang.Boolean}
+ */
+ String COMPONENT_ROUND_RECT = "JComponent.roundRect";
+
/**
* Specifies the outline color of the component border.
*
@@ -162,13 +173,23 @@ public interface FlatClientProperties
String OUTLINE_WARNING = "warning";
/**
- * Paint the component with round edges.
+ * Specifies a callback that is invoked to check whether a component is permanent focus owner.
+ * Used to paint focus indicators.
*
- * Components {@link javax.swing.JComboBox}, {@link javax.swing.JSpinner},
- * {@link javax.swing.JTextField}, {@link javax.swing.JFormattedTextField} and {@link javax.swing.JPasswordField}
- * Value type {@link java.lang.Boolean}
+ * May be useful in special cases for custom components.
+ *
+ * Use a {@link java.util.function.Predicate} that receives the component as parameter:
+ *
{@code
+ * myComponent.putClientProperty( "JComponent.focusOwner",
+ * (Predicate) c -> {
+ * return ...; // check here
+ * } );
+ * }
+ *
+ * Component {@link javax.swing.JComponent}
+ * Value type {@link java.util.function.Predicate<javax.swing.JComponent>
*/
- String COMPONENT_ROUND_RECT = "JComponent.roundRect";
+ String COMPONENT_FOCUS_OWNER = "JComponent.focusOwner";
//---- Popup --------------------------------------------------------------
@@ -181,6 +202,15 @@ public interface FlatClientProperties
*/
String POPUP_DROP_SHADOW_PAINTED = "Popup.dropShadowPainted";
+ /**
+ * Specifies whether a heavy weight window should be used if the component is shown in a popup
+ * or if the component is the owner of another component that is shown in a popup.
+ *
+ * Component {@link javax.swing.JComponent}
+ * Value type {@link java.lang.Boolean}
+ */
+ String POPUP_FORCE_HEAVY_WEIGHT = "Popup.forceHeavyWeight";
+
//---- JProgressBar -------------------------------------------------------
/**
@@ -210,7 +240,7 @@ public interface FlatClientProperties
*/
String MENU_BAR_EMBEDDED = "JRootPane.menuBarEmbedded";
- //---- JScrollBar ---------------------------------------------------------
+ //---- JScrollBar / JScrollPane -------------------------------------------
/**
* Specifies whether the decrease/increase arrow buttons of a scrollbar are shown.
@@ -223,7 +253,7 @@ public interface FlatClientProperties
/**
* Specifies whether the scroll pane uses smooth scrolling.
*
- * Component {{@link javax.swing.JScrollPane}
+ * Component {@link javax.swing.JScrollPane}
* Value type {@link java.lang.Boolean}
*/
String SCROLL_PANE_SMOOTH_SCROLLING = "JScrollPane.smoothScrolling";
@@ -254,6 +284,14 @@ public interface FlatClientProperties
*/
String TABBED_PANE_HAS_FULL_BORDER = "JTabbedPane.hasFullBorder";
+ /**
+ * Specifies whether the tab area should be hidden if it contains only one tab.
+ *
+ * Component {@link javax.swing.JTabbedPane}
+ * Value type {@link java.lang.Boolean}
+ */
+ String TABBED_PANE_HIDE_TAB_AREA_WITH_ONE_TAB = "JTabbedPane.hideTabAreaWithOneTab";
+
/**
* Specifies the minimum width of a tab.
*
@@ -276,10 +314,12 @@ public interface FlatClientProperties
String TABBED_PANE_MAXIMUM_TAB_WIDTH = "JTabbedPane.maximumTabWidth";
/**
- * Specifies the height of a tab.
+ * Specifies the minimum height of a tab.
*
* Component {@link javax.swing.JTabbedPane}
* Value type {@link java.lang.Integer}
+ *
+ * @see #TABBED_PANE_TAB_INSETS
*/
String TABBED_PANE_TAB_HEIGHT = "JTabbedPane.tabHeight";
@@ -289,6 +329,8 @@ public interface FlatClientProperties
* Component {@link javax.swing.JTabbedPane}
* or tab content components (see {@link javax.swing.JTabbedPane#setComponentAt(int, java.awt.Component)})
* Value type {@link java.awt.Insets}
+ *
+ * @see #TABBED_PANE_TAB_HEIGHT
*/
String TABBED_PANE_TAB_INSETS = "JTabbedPane.tabInsets";
@@ -332,7 +374,7 @@ public interface FlatClientProperties
* Specifies the callback that is invoked when a tab close button is clicked.
* The callback is responsible for closing the tab.
*
- * Either use a {@link java.util.function.IntConsumer} that received the tab index as parameter:
+ * Either use a {@link java.util.function.IntConsumer} that receives the tab index as parameter:
*
{@code
* myTabbedPane.putClientProperty( "JTabbedPane.tabCloseCallback",
* (IntConsumer) tabIndex -> {
@@ -340,7 +382,7 @@ public interface FlatClientProperties
* } );
* }
* Or use a {@link java.util.function.BiConsumer}<javax.swing.JTabbedPane, Integer>
- * that received the tabbed pane and the tab index as parameters:
+ * that receives the tabbed pane and the tab index as parameters:
* {@code
* myTabbedPane.putClientProperty( "JTabbedPane.tabCloseCallback",
* (BiConsumer) (tabbedPane, tabIndex) -> {
@@ -653,6 +695,25 @@ public interface FlatClientProperties
*/
String TAB_BUTTON_SELECTED_BACKGROUND = "JToggleButton.tab.selectedBackground";
+ //---- JTree --------------------------------------------------------------
+
+ /**
+ * Override if a tree shows a wide selection. Default is {@code true}.
+ *
+ * Component {@link javax.swing.JTree}
+ * Value type {@link java.lang.Boolean}
+ */
+ String TREE_WIDE_SELECTION = "JTree.wideSelection";
+
+ /**
+ * Specifies whether tree item selection is painted. Default is {@code true}.
+ * If set to {@code false}, then the tree cell renderer is responsible for painting selection.
+ *
+ * Component {@link javax.swing.JTree}
+ * Value type {@link java.lang.Boolean}
+ */
+ String TREE_PAINT_SELECTION = "JTree.paintSelection";
+
//---- helper methods -----------------------------------------------------
/**
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatDarculaLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatDarculaLaf.java
index 608d8cda..660ab700 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatDarculaLaf.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatDarculaLaf.java
@@ -18,21 +18,28 @@ package com.formdev.flatlaf;
/**
* A Flat LaF that has a dark color scheme and looks like Darcula LaF.
- *
- * The UI defaults are loaded from FlatDarculaLaf.properties, FlatDarkLaf.properties and FlatLaf.properties
+ *
+ * The UI defaults are loaded from {@code FlatDarculaLaf.properties},
+ * {@code FlatDarkLaf.properties} and {@code FlatLaf.properties}.
*
* @author Karl Tauber
*/
public class FlatDarculaLaf
extends FlatDarkLaf
{
- public static boolean install( ) {
+ public static final String NAME = "FlatLaf Darcula";
+
+ public static boolean install() {
return install( new FlatDarculaLaf() );
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatDarculaLaf.class );
+ }
+
@Override
public String getName() {
- return "FlatLaf Darcula";
+ return NAME;
}
@Override
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatDarkLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatDarkLaf.java
index ed5f33a6..dbb44aca 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatDarkLaf.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatDarkLaf.java
@@ -16,23 +16,41 @@
package com.formdev.flatlaf;
+import javax.swing.UIManager;
+
/**
* A Flat LaF that has a dark color scheme.
- *
- * The UI defaults are loaded from FlatDarkLaf.properties and FlatLaf.properties
+ *
+ * The UI defaults are loaded from {@code FlatDarkLaf.properties} and {@code FlatLaf.properties}.
*
* @author Karl Tauber
*/
public class FlatDarkLaf
extends FlatLaf
{
- public static boolean install( ) {
+ public static final String NAME = "FlatLaf Dark";
+
+ /**
+ * Sets the application look and feel to this LaF
+ * using {@link UIManager#setLookAndFeel(javax.swing.LookAndFeel)}.
+ */
+ public static boolean install() {
return install( new FlatDarkLaf() );
}
+ /**
+ * Adds this look and feel to the set of available look and feels.
+ *
+ * Useful if your application uses {@link UIManager#getInstalledLookAndFeels()}
+ * to query available LaFs and display them to the user in a combobox.
+ */
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatDarkLaf.class );
+ }
+
@Override
public String getName() {
- return "FlatLaf Dark";
+ return NAME;
}
@Override
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatInputMaps.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatInputMaps.java
index 7a463291..ba6ba298 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatInputMaps.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatInputMaps.java
@@ -42,10 +42,12 @@ class FlatInputMaps
}
private static void initBasicInputMaps( UIDefaults defaults ) {
- defaults.put( "Button.focusInputMap", new UIDefaults.LazyInputMap( new Object[] {
- "SPACE", "pressed",
- "released SPACE", "released"
- } ) );
+ if( SystemInfo.isMacOS ) {
+ defaults.put( "Button.focusInputMap", new UIDefaults.LazyInputMap( new Object[] {
+ "SPACE", "pressed",
+ "released SPACE", "released"
+ } ) );
+ }
modifyInputMap( defaults, "ComboBox.ancestorInputMap",
"SPACE", "spacePopup",
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatIntelliJLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatIntelliJLaf.java
index 778096f0..f5ac98d9 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatIntelliJLaf.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatIntelliJLaf.java
@@ -18,21 +18,28 @@ package com.formdev.flatlaf;
/**
* A Flat LaF that has a light color scheme and looks like IntelliJ LaF.
- *
- * The UI defaults are loaded from FlatIntelliJLaf.properties, FlatLightLaf.properties and FlatLaf.properties
+ *
+ * The UI defaults are loaded from {@code FlatIntelliJLaf.properties},
+ * {@code FlatLightLaf.properties} and {@code FlatLaf.properties}.
*
* @author Karl Tauber
*/
public class FlatIntelliJLaf
extends FlatLightLaf
{
- public static boolean install( ) {
+ public static final String NAME = "FlatLaf IntelliJ";
+
+ public static boolean install() {
return install( new FlatIntelliJLaf() );
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatIntelliJLaf.class );
+ }
+
@Override
public String getName() {
- return "FlatLaf IntelliJ";
+ return NAME;
}
@Override
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 925864cf..2fb686e1 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java
@@ -50,9 +50,9 @@ import javax.swing.LookAndFeel;
import javax.swing.PopupFactory;
import javax.swing.SwingUtilities;
import javax.swing.UIDefaults;
+import javax.swing.UIDefaults.ActiveValue;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
-import javax.swing.UIDefaults.ActiveValue;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.FontUIResource;
import javax.swing.plaf.UIResource;
@@ -94,6 +94,10 @@ public abstract class FlatLaf
private Boolean oldFrameWindowDecorated;
private Boolean oldDialogWindowDecorated;
+ /**
+ * Sets the application look and feel to the given LaF
+ * using {@link UIManager#setLookAndFeel(javax.swing.LookAndFeel)}.
+ */
public static boolean install( LookAndFeel newLookAndFeel ) {
try {
UIManager.setLookAndFeel( newLookAndFeel );
@@ -104,6 +108,16 @@ public abstract class FlatLaf
}
}
+ /**
+ * Adds the given look and feel to the set of available look and feels.
+ *
+ * Useful if your application uses {@link UIManager#getInstalledLookAndFeels()}
+ * to query available LaFs and display them to the user in a combobox.
+ */
+ public static void installLafInfo( String lafName, Class extends LookAndFeel> lafClass ) {
+ UIManager.installLookAndFeel( new UIManager.LookAndFeelInfo( lafName, lafClass.getName() ) );
+ }
+
/**
* Returns the look and feel identifier.
*
@@ -453,8 +467,13 @@ public abstract class FlatLaf
} else if( SystemInfo.isMacOS ) {
String fontName;
if( SystemInfo.isMacOS_10_15_Catalina_orLater ) {
- // use Helvetica Neue font
- fontName = "Helvetica Neue";
+ if (SystemInfo.isJetBrainsJVM_11_orLater) {
+ // See https://youtrack.jetbrains.com/issue/JBR-1915
+ fontName = ".AppleSystemUIFont";
+ } else {
+ // use Helvetica Neue font
+ fontName = "Helvetica Neue";
+ }
} else if( SystemInfo.isMacOS_10_11_ElCapitan_orLater ) {
// use San Francisco Text font
fontName = ".SF NS Text";
@@ -527,7 +546,12 @@ public abstract class FlatLaf
}
private void putAATextInfo( UIDefaults defaults ) {
- if( SystemInfo.isJava_9_orLater ) {
+ if ( SystemInfo.isMacOS && SystemInfo.isJetBrainsJVM ) {
+ // The awt.font.desktophints property suggests sub-pixel anti-aliasing
+ // which renders text with too much weight on macOS in the JetBrains JRE.
+ // Use greyscale anti-aliasing instead.
+ defaults.put( RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON );
+ } else if( SystemInfo.isJava_9_orLater ) {
Object desktopHints = Toolkit.getDefaultToolkit().getDesktopProperty( DESKTOPFONTHINTS );
if( desktopHints instanceof Map ) {
@SuppressWarnings( "unchecked" )
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLightLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLightLaf.java
index b9ac12ac..bab2e2d1 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLightLaf.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLightLaf.java
@@ -16,23 +16,41 @@
package com.formdev.flatlaf;
+import javax.swing.UIManager;
+
/**
* A Flat LaF that has a light color scheme.
- *
- * The UI defaults are loaded from FlatLightLaf.properties and FlatLaf.properties
+ *
+ * The UI defaults are loaded from {@code FlatLightLaf.properties} and {@code FlatLaf.properties}.
*
* @author Karl Tauber
*/
public class FlatLightLaf
extends FlatLaf
{
- public static boolean install( ) {
+ public static final String NAME = "FlatLaf Light";
+
+ /**
+ * Sets the application look and feel to this LaF
+ * using {@link UIManager#setLookAndFeel(javax.swing.LookAndFeel)}.
+ */
+ public static boolean install() {
return install( new FlatLightLaf() );
}
+ /**
+ * Adds this look and feel to the set of available look and feels.
+ *
+ * Useful if your application uses {@link UIManager#getInstalledLookAndFeels()}
+ * to query available LaFs and display them to the user in a combobox.
+ */
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatLightLaf.class );
+ }
+
@Override
public String getName() {
- return "FlatLaf Light";
+ return NAME;
}
@Override
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatPropertiesLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatPropertiesLaf.java
index 534f2115..002400e6 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatPropertiesLaf.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatPropertiesLaf.java
@@ -88,6 +88,10 @@ public class FlatPropertiesLaf
return dark;
}
+ public Properties getProperties() {
+ return properties;
+ }
+
@Override
protected ArrayList> getLafClassesForDefaultsLoading() {
ArrayList> lafClasses = new ArrayList<>();
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatSystemProperties.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatSystemProperties.java
index eb52cf12..c1065747 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatSystemProperties.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatSystemProperties.java
@@ -64,6 +64,8 @@ public interface FlatSystemProperties
* If this system property is set, FlatLaf invokes {@link JFrame#setDefaultLookAndFeelDecorated(boolean)}
* and {@link JDialog#setDefaultLookAndFeelDecorated(boolean)} on LaF initialization.
*
+ * (requires Window 10)
+ *
* Allowed Values {@code false} and {@code true}
* Default none
*/
@@ -79,6 +81,8 @@ public interface FlatSystemProperties
* Setting this to {@code true} forces using JetBrains Runtime custom window decorations
* even if they are not enabled by the application.
*
+ * (requires Window 10)
+ *
* Allowed Values {@code false} and {@code true}
* Default {@code true}
*/
@@ -87,6 +91,8 @@ public interface FlatSystemProperties
/**
* Specifies whether menubar is embedded into custom window decorations.
*
+ * (requires Window 10)
+ *
* Allowed Values {@code false} and {@code true}
* Default {@code true}
*/
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java
index 5fd9b4dc..1c3fa053 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java
@@ -16,6 +16,7 @@
package com.formdev.flatlaf;
+import java.awt.Color;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -56,6 +57,8 @@ public class IntelliJTheme
public final boolean dark;
public final String author;
+ private final boolean isMaterialUILite;
+
private final Map colors;
private final Map ui;
private final Map icons;
@@ -119,6 +122,8 @@ public class IntelliJTheme
dark = Boolean.parseBoolean( (String) json.get( "dark" ) );
author = (String) json.get( "author" );
+ isMaterialUILite = author.equals( "Mallowigi" );
+
colors = (Map) json.get( "colors" );
ui = (Map) json.get( "ui" );
icons = (Map) json.get( "icons" );
@@ -156,6 +161,11 @@ public class IntelliJTheme
defaults.put( "Button.disabledBackground", panelBackground );
defaults.put( "ToggleButton.disabledBackground", panelBackground );
+ // fix Button borders
+ copyIfNotSet( defaults, "Button.focusedBorderColor", "Component.focusedBorderColor", uiKeys );
+ defaults.put( "Button.hoverBorderColor", defaults.get( "Button.focusedBorderColor" ) );
+ defaults.put( "HelpButton.hoverBorderColor", defaults.get( "Button.focusedBorderColor" ) );
+
// IDEA uses a SVG icon for the help button, but paints the background with Button.startBackground and Button.endBackground
Object helpButtonBackground = defaults.get( "Button.startBackground" );
Object helpButtonBorderColor = defaults.get( "Button.startBorderColor" );
@@ -205,6 +215,12 @@ public class IntelliJTheme
if( !uiKeys.contains( "ToggleButton.foreground" ) && uiKeys.contains( "Button.foreground" ) )
defaults.put( "ToggleButton.foreground", defaults.get( "Button.foreground" ) );
+ // fix List and Table background colors in Material UI Lite themes
+ if( isMaterialUILite ) {
+ defaults.put( "List.background", defaults.get( "Tree.background" ) );
+ defaults.put( "Table.background", defaults.get( "Tree.background" ) );
+ }
+
// limit tree row height
int rowHeight = defaults.getInt( "Tree.rowHeight" );
if( rowHeight > 22 )
@@ -225,10 +241,17 @@ public class IntelliJTheme
// remove theme specific UI defaults and remember only those for current theme
Map themeSpecificDefaults = new HashMap<>();
String currentThemePrefix = '[' + name.replace( ' ', '_' ) + ']';
+ String currentAuthorPrefix = "[author-" + author.replace( ' ', '_' ) + ']';
+ String allThemesPrefix = "[*]";
+ String[] prefixes = { currentThemePrefix, currentAuthorPrefix, allThemesPrefix };
for( String key : themeSpecificKeys ) {
Object value = defaults.remove( key );
- if( key.startsWith( currentThemePrefix ) )
- themeSpecificDefaults.put( key.substring( currentThemePrefix.length() ), value );
+ for( String prefix : prefixes ) {
+ if( key.startsWith( prefix ) ) {
+ themeSpecificDefaults.put( key.substring( prefix.length() ), value );
+ break;
+ }
+ }
}
return themeSpecificDefaults;
@@ -269,7 +292,6 @@ public class IntelliJTheme
uiKeys.add( key );
// fix ComboBox size and Spinner border in all Material UI Lite themes
- boolean isMaterialUILite = author.equals( "Mallowigi" );
if( isMaterialUILite && (key.equals( "ComboBox.padding" ) || key.equals( "Spinner.border" )) )
return; // ignore
@@ -381,7 +403,7 @@ public class IntelliJTheme
}
/**
- * Because IDEA uses SVGs for check boxes and radio buttons the colors for
+ * Because IDEA uses SVGs for check boxes and radio buttons, the colors for
* this two components are specified in "icons > ColorPalette".
* FlatLaf uses vector icons and expects colors for the two components in UI defaults.
*/
@@ -453,29 +475,47 @@ public class IntelliJTheme
}
}
- // remove hover and pressed colors
+ // update hover, pressed and focused colors
if( checkboxModified ) {
+ // for non-filled checkbox/radiobutton used in dark themes
defaults.remove( "CheckBox.icon.focusWidth" );
- defaults.remove( "CheckBox.icon.hoverBorderColor" );
- defaults.remove( "CheckBox.icon.focusedBackground" );
- defaults.remove( "CheckBox.icon.hoverBackground" );
- defaults.remove( "CheckBox.icon.pressedBackground" );
- defaults.remove( "CheckBox.icon.selectedFocusedBackground" );
- defaults.remove( "CheckBox.icon.selectedHoverBackground" );
- defaults.remove( "CheckBox.icon.selectedPressedBackground" );
+ defaults.put( "CheckBox.icon.hoverBorderColor", defaults.get( "CheckBox.icon.focusedBorderColor" ) );
+ // for filled checkbox/radiobutton used in light themes
defaults.remove( "CheckBox.icon[filled].focusWidth" );
- defaults.remove( "CheckBox.icon[filled].hoverBorderColor" );
- defaults.remove( "CheckBox.icon[filled].focusedBackground" );
- defaults.remove( "CheckBox.icon[filled].hoverBackground" );
- defaults.remove( "CheckBox.icon[filled].pressedBackground" );
- defaults.remove( "CheckBox.icon[filled].selectedFocusedBackground" );
- defaults.remove( "CheckBox.icon[filled].selectedHoverBackground" );
- defaults.remove( "CheckBox.icon[filled].selectedPressedBackground" );
+ defaults.put( "CheckBox.icon[filled].hoverBorderColor", defaults.get( "CheckBox.icon[filled].focusedBorderColor" ) );
+ defaults.put( "CheckBox.icon[filled].selectedFocusedBackground", defaults.get( "CheckBox.icon[filled].selectedBackground" ) );
+
+ if( dark ) {
+ // IDEA Darcula checkBoxFocused.svg, checkBoxSelectedFocused.svg,
+ // radioFocused.svg and radioSelectedFocused.svg
+ // use opacity=".65" for the border
+ // --> add alpha to focused border colors
+ String[] focusedBorderColorKeys = new String[] {
+ "CheckBox.icon.focusedBorderColor",
+ "CheckBox.icon.selectedFocusedBorderColor",
+ "CheckBox.icon[filled].focusedBorderColor",
+ "CheckBox.icon[filled].selectedFocusedBorderColor",
+ };
+ for( String key : focusedBorderColorKeys ) {
+ Color color = defaults.getColor( key );
+ if( color != null ) {
+ defaults.put( key, new ColorUIResource( new Color(
+ (color.getRGB() & 0xffffff) | 0xa6000000, true ) ) );
+ }
+ }
+ }
}
}
+ private void copyIfNotSet( UIDefaults defaults, String destKey, String srcKey, Set uiKeys ) {
+ if( !uiKeys.contains( destKey ) )
+ defaults.put( destKey, defaults.get( srcKey ) );
+ }
+
+ /** Rename UI default keys (key --> value). */
private static Map uiKeyMapping = new HashMap<>();
+ /** Copy UI default keys (value --> key). */
private static Map uiKeyCopying = new HashMap<>();
private static Map uiKeyInverseMapping = new HashMap<>();
private static Map checkboxKeyMapping = new HashMap<>();
@@ -505,6 +545,7 @@ public class IntelliJTheme
uiKeyCopying.put( "CheckBoxMenuItem.margin", "MenuItem.margin" );
uiKeyCopying.put( "RadioButtonMenuItem.margin", "MenuItem.margin" );
uiKeyMapping.put( "PopupMenu.border", "PopupMenu.borderInsets" );
+ uiKeyCopying.put( "MenuItem.underlineSelectionColor", "TabbedPane.underlineColor" );
// IDEA uses List.selectionBackground also for menu selection
uiKeyCopying.put( "Menu.selectionBackground", "List.selectionBackground" );
@@ -529,6 +570,9 @@ public class IntelliJTheme
// Slider
uiKeyMapping.put( "Slider.trackWidth", "" ); // ignore (used in Material Theme UI Lite)
+ uiKeyCopying.put( "Slider.trackValueColor", "ProgressBar.foreground" );
+ uiKeyCopying.put( "Slider.thumbColor", "ProgressBar.foreground" );
+ uiKeyCopying.put( "Slider.trackColor", "ProgressBar.background" );
// TitlePane
uiKeyCopying.put( "TitlePane.inactiveBackground", "TitlePane.background" );
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 adc6e177..41b6ab89 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java
@@ -70,7 +70,7 @@ class UIDefaultsLoader
private static final String VARIABLE_PREFIX = "@";
private static final String PROPERTY_PREFIX = "$";
private static final String OPTIONAL_PREFIX = "?";
- private static final String GLOBAL_PREFIX = "*.";
+ private static final String WILDCARD_PREFIX = "*.";
static void loadDefaultsFromProperties( Class> lookAndFeelClass, List addons,
Properties additionalDefaults, boolean dark, UIDefaults defaults )
@@ -119,7 +119,7 @@ class UIDefaultsLoader
addonClassLoaders.add( addonClassLoader );
}
- // load custom properties files (usually provides by applications)
+ // load custom properties files (usually provided by applications)
List customDefaultsSources = FlatLaf.getCustomDefaultsSources();
int size = (customDefaultsSources != null) ? customDefaultsSources.size() : 0;
for( int i = 0; i < size; i++ ) {
@@ -198,19 +198,19 @@ class UIDefaultsLoader
}
}
- // get (and remove) globals, which override all other defaults that end with same suffix
- HashMap globals = new HashMap<>();
+ // get (and remove) wildcard replacements, which override all other defaults that end with same suffix
+ HashMap wildcards = new HashMap<>();
Iterator> it = properties.entrySet().iterator();
while( it.hasNext() ) {
Entry e = it.next();
String key = (String) e.getKey();
- if( key.startsWith( GLOBAL_PREFIX ) ) {
- globals.put( key.substring( GLOBAL_PREFIX.length() ), (String) e.getValue() );
+ if( key.startsWith( WILDCARD_PREFIX ) ) {
+ wildcards.put( key.substring( WILDCARD_PREFIX.length() ), (String) e.getValue() );
it.remove();
}
}
- // override UI defaults with globals
+ // override UI defaults with wildcard replacements
for( Object key : defaults.keySet() ) {
int dot;
if( !(key instanceof String) ||
@@ -218,10 +218,10 @@ class UIDefaultsLoader
(dot = ((String)key).lastIndexOf( '.' )) < 0 )
continue;
- String globalKey = ((String)key).substring( dot + 1 );
- String globalValue = globals.get( globalKey );
- if( globalValue != null )
- properties.put( key, globalValue );
+ String wildcardKey = ((String)key).substring( dot + 1 );
+ String wildcardValue = wildcards.get( wildcardKey );
+ if( wildcardValue != null )
+ properties.put( key, wildcardValue );
}
Function propertiesGetter = key -> {
@@ -341,7 +341,12 @@ class UIDefaultsLoader
// determine value type from key
if( valueType == ValueType.UNKNOWN ) {
- if( key.endsWith( "ground" ) || key.endsWith( "Color" ) )
+ if( key.endsWith( "UI" ) )
+ valueType = ValueType.STRING;
+ else if( key.endsWith( "Color" ) ||
+ (key.endsWith( "ground" ) &&
+ (key.endsWith( ".background" ) || key.endsWith( "Background" ) ||
+ key.endsWith( ".foreground" ) || key.endsWith( "Foreground" ))) )
valueType = ValueType.COLOR;
else if( key.endsWith( ".border" ) || key.endsWith( "Border" ) )
valueType = ValueType.BORDER;
@@ -356,8 +361,6 @@ class UIDefaultsLoader
valueType = ValueType.INTEGER;
else if( key.endsWith( "Char" ) )
valueType = ValueType.CHARACTER;
- else if( key.endsWith( "UI" ) )
- valueType = ValueType.STRING;
else if( key.endsWith( "grayFilter" ) )
valueType = ValueType.GRAYFILTER;
}
@@ -586,13 +589,17 @@ class UIDefaultsLoader
case "darken": return parseColorHSLIncreaseDecrease( 2, false, params, resolver, reportError );
case "saturate": return parseColorHSLIncreaseDecrease( 1, true, params, resolver, reportError );
case "desaturate": return parseColorHSLIncreaseDecrease( 1, false, params, resolver, reportError );
+ case "fadein": return parseColorHSLIncreaseDecrease( 3, true, params, resolver, reportError );
+ case "fadeout": return parseColorHSLIncreaseDecrease( 3, false, params, resolver, reportError );
+ case "fade": return parseColorFade( params, resolver, reportError );
+ case "spin": return parseColorSpin( params, resolver, reportError );
}
throw new IllegalArgumentException( "unknown color function '" + value + "'" );
}
/**
- * Syntax: rgb(red,green,blue) or rgba(red,green,blue,alpha) or rgba(color,alpha)
+ * Syntax: rgb(red,green,blue) or rgba(red,green,blue,alpha)
* - red: an integer 0-255 or a percentage 0-100%
* - green: an integer 0-255 or a percentage 0-100%
* - blue: an integer 0-255 or a percentage 0-100%
@@ -603,6 +610,8 @@ class UIDefaultsLoader
{
if( hasAlpha && params.size() == 2 ) {
// syntax rgba(color,alpha), which allows adding alpha to any color
+ // NOTE: this syntax is deprecated
+ // use fade(color,alpha) instead
String colorStr = params.get( 0 );
int alpha = parseInteger( params.get( 1 ), 0, 255, true );
@@ -639,7 +648,8 @@ class UIDefaultsLoader
/**
* Syntax: lighten(color,amount[,options]) or darken(color,amount[,options]) or
- * saturate(color,amount[,options]) or desaturate(color,amount[,options])
+ * saturate(color,amount[,options]) or desaturate(color,amount[,options]) or
+ * fadein(color,amount[,options]) or fadeout(color,amount[,options])
* - color: a color (e.g. #f00) or a color function
* - amount: percentage 0-100%
* - options: [relative] [autoInverse] [noAutoInverse] [lazy] [derived]
@@ -679,6 +689,59 @@ class UIDefaultsLoader
};
}
+ // parse base color, apply function and create derived color
+ return parseFunctionBaseColor( colorStr, function, derived, resolver, reportError );
+ }
+
+ /**
+ * Syntax: fade(color,amount[,options])
+ * - color: a color (e.g. #f00) or a color function
+ * - amount: percentage 0-100%
+ * - options: [derived]
+ */
+ private static Object parseColorFade( List params, Function resolver, boolean reportError ) {
+ String colorStr = params.get( 0 );
+ int amount = 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.Fade( amount );
+
+ // parse base color, apply function and create derived color
+ return parseFunctionBaseColor( colorStr, function, derived, resolver, reportError );
+ }
+
+ /**
+ * Syntax: spin(color,angle[,options])
+ * - color: a color (e.g. #f00) or a color function
+ * - angle: number of degrees to rotate
+ * - options: [derived]
+ */
+ private static Object parseColorSpin( List params, Function resolver, boolean reportError ) {
+ String colorStr = params.get( 0 );
+ int amount = parseInteger( params.get( 1 ), true );
+ boolean derived = false;
+
+ if( params.size() > 2 ) {
+ String options = params.get( 2 );
+ derived = options.contains( "derived" );
+ }
+
+ // create function
+ ColorFunction function = new ColorFunctions.HSLIncreaseDecrease( 0, true, amount, false, false );
+
+ // parse base color, apply function and create derived color
+ return parseFunctionBaseColor( colorStr, function, derived, resolver, reportError );
+ }
+
+ private static Object parseFunctionBaseColor( String colorStr, ColorFunction function,
+ boolean derived, Function resolver, boolean reportError )
+ {
// parse base color
String resolvedColorStr = resolver.apply( colorStr );
ColorUIResource baseColor = (ColorUIResource) parseColorOrFunction( resolvedColorStr, resolver, reportError );
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatAnimatedIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatAnimatedIcon.java
new file mode 100644
index 00000000..4d80f49b
--- /dev/null
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatAnimatedIcon.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.icons;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import com.formdev.flatlaf.util.AnimatedIcon;
+
+/**
+ * Base class for animated icons that scales width and height, creates and initializes
+ * a scaled graphics context for icon painting.
+ *
+ * Subclasses do not need to scale icon painting.
+ *
+ * This class does not store any state information (needed for animation) in its instance.
+ * Instead a client property is set on the painted component.
+ * This makes it possible to use a share icon instance for multiple components.
+ *
+ * @author Karl Tauber
+ */
+public abstract class FlatAnimatedIcon
+ extends FlatAbstractIcon
+ implements AnimatedIcon
+{
+ public FlatAnimatedIcon( int width, int height, Color color ) {
+ super( width, height, color );
+ }
+
+ @Override
+ public void paintIcon( Component c, Graphics g, int x, int y ) {
+ super.paintIcon( c, g, x, y );
+ AnimatedIcon.AnimationSupport.saveIconLocation( this, c, x, y );
+ }
+
+ @Override
+ protected void paintIcon( Component c, Graphics2D g ) {
+ AnimatedIcon.AnimationSupport.paintIcon( this, c, g, 0, 0 );
+ }
+}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java
index 4b4a74e6..c74c6976 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java
@@ -49,15 +49,16 @@ import com.formdev.flatlaf.ui.FlatUIUtils;
* @uiDefault CheckBox.icon.disabledBorderColor Color
* @uiDefault CheckBox.icon.disabledBackground Color
* @uiDefault CheckBox.icon.disabledCheckmarkColor Color
- * @uiDefault CheckBox.icon.focusedBorderColor Color
+ * @uiDefault CheckBox.icon.focusedBorderColor Color optional
* @uiDefault CheckBox.icon.focusedBackground Color optional
- * @uiDefault CheckBox.icon.selectedFocusedBorderColor Color optional
- * @uiDefault CheckBox.icon.selectedFocusedBackground Color optional
+ * @uiDefault CheckBox.icon.selectedFocusedBorderColor Color optional; CheckBox.icon.focusedBorderColor is used if not specified
+ * @uiDefault CheckBox.icon.selectedFocusedBackground Color optional; CheckBox.icon.focusedBackground is used if not specified
+ * @uiDefault CheckBox.icon.selectedFocusedCheckmarkColor Color optional; CheckBox.icon.checkmarkColor is used if not specified
* @uiDefault CheckBox.icon.hoverBorderColor Color optional
* @uiDefault CheckBox.icon.hoverBackground Color optional
- * @uiDefault CheckBox.icon.selectedHoverBackground Color optional
+ * @uiDefault CheckBox.icon.selectedHoverBackground Color optional; CheckBox.icon.hoverBackground is used if not specified
* @uiDefault CheckBox.icon.pressedBackground Color optional
- * @uiDefault CheckBox.icon.selectedPressedBackground Color optional
+ * @uiDefault CheckBox.icon.selectedPressedBackground Color optional; CheckBox.icon.pressedBackground is used if not specified
* @uiDefault CheckBox.arc int
*
* @author Karl Tauber
@@ -129,78 +130,108 @@ public class FlatCheckBoxIcon
}
@Override
- protected void paintIcon( Component c, Graphics2D g2 ) {
- boolean indeterminate = c instanceof JComponent && clientPropertyEquals( (JComponent) c, SELECTED_STATE, SELECTED_STATE_INDETERMINATE );
- boolean selected = indeterminate || (c instanceof AbstractButton && ((AbstractButton)c).isSelected());
+ protected void paintIcon( Component c, Graphics2D g ) {
+ boolean indeterminate = isIndeterminate( c );
+ boolean selected = indeterminate || isSelected( c );
boolean isFocused = FlatUIUtils.isPermanentFocusOwner( c );
// paint focused border
if( isFocused && focusWidth > 0 && FlatButtonUI.isFocusPainted( c ) ) {
- g2.setColor( focusColor );
- paintFocusBorder( g2 );
+ g.setColor( getFocusColor( c ) );
+ paintFocusBorder( c, g );
}
// paint border
- g2.setColor( FlatButtonUI.buttonStateColor( c,
- selected ? selectedBorderColor : borderColor,
- disabledBorderColor,
- selected && selectedFocusedBorderColor != null ? selectedFocusedBorderColor : focusedBorderColor,
- hoverBorderColor,
- null ) );
- paintBorder( g2 );
+ g.setColor( getBorderColor( c, selected ) );
+ paintBorder( c, g );
// paint background
- g2.setColor( FlatUIUtils.deriveColor( FlatButtonUI.buttonStateColor( c,
- selected ? selectedBackground : background,
- disabledBackground,
- (selected && selectedFocusedBackground != null) ? selectedFocusedBackground : focusedBackground,
- (selected && selectedHoverBackground != null) ? selectedHoverBackground : hoverBackground,
- (selected && selectedPressedBackground != null) ? selectedPressedBackground : pressedBackground ),
- background ) );
- paintBackground( g2 );
+ Color bg = FlatUIUtils.deriveColor( getBackground( c, selected ),
+ selected ? selectedBackground : background );
+ if( bg.getAlpha() < 255 ) {
+ // fill background with default color before filling with non-opaque background
+ g.setColor( selected ? selectedBackground : background );
+ paintBackground( c, g );
+ }
+ g.setColor( bg );
+ paintBackground( c, g );
// paint checkmark
if( selected || indeterminate ) {
- g2.setColor( c.isEnabled()
- ? ((selected && isFocused && selectedFocusedCheckmarkColor != null)
- ? selectedFocusedCheckmarkColor
- : checkmarkColor)
- : disabledCheckmarkColor );
+ g.setColor( getCheckmarkColor( c, selected, isFocused ) );
if( indeterminate )
- paintIndeterminate( g2 );
+ paintIndeterminate( c, g );
else
- paintCheckmark( g2 );
+ paintCheckmark( c, g );
}
}
- protected void paintFocusBorder( Graphics2D g2 ) {
+ protected void paintFocusBorder( Component c, Graphics2D g ) {
// the outline focus border is painted outside of the icon
int wh = ICON_SIZE - 1 + (focusWidth * 2);
int arcwh = arc + (focusWidth * 2);
- g2.fillRoundRect( -focusWidth + 1, -focusWidth, wh, wh, arcwh, arcwh );
+ g.fillRoundRect( -focusWidth + 1, -focusWidth, wh, wh, arcwh, arcwh );
}
- protected void paintBorder( Graphics2D g2 ) {
+ protected void paintBorder( Component c, Graphics2D g ) {
int arcwh = arc;
- g2.fillRoundRect( 1, 0, 14, 14, arcwh, arcwh );
+ g.fillRoundRect( 1, 0, 14, 14, arcwh, arcwh );
}
- protected void paintBackground( Graphics2D g2 ) {
+ protected void paintBackground( Component c, Graphics2D g ) {
int arcwh = arc - 1;
- g2.fillRoundRect( 2, 1, 12, 12, arcwh, arcwh );
+ g.fillRoundRect( 2, 1, 12, 12, arcwh, arcwh );
}
- protected void paintCheckmark( Graphics2D g2 ) {
+ protected void paintCheckmark( Component c, Graphics2D g ) {
Path2D.Float path = new Path2D.Float();
path.moveTo( 4.5f, 7.5f );
path.lineTo( 6.6f, 10f );
path.lineTo( 11.25f, 3.5f );
- g2.setStroke( new BasicStroke( 1.9f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND ) );
- g2.draw( path );
+ g.setStroke( new BasicStroke( 1.9f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND ) );
+ g.draw( path );
}
- protected void paintIndeterminate( Graphics2D g2 ) {
- g2.fill( new RoundRectangle2D.Float( 3.75f, 5.75f, 8.5f, 2.5f, 2f, 2f ) );
+ protected void paintIndeterminate( Component c, Graphics2D g ) {
+ g.fill( new RoundRectangle2D.Float( 3.75f, 5.75f, 8.5f, 2.5f, 2f, 2f ) );
+ }
+
+ protected boolean isIndeterminate( Component c ) {
+ return c instanceof JComponent && clientPropertyEquals( (JComponent) c, SELECTED_STATE, SELECTED_STATE_INDETERMINATE );
+ }
+
+ protected boolean isSelected( Component c ) {
+ return c instanceof AbstractButton && ((AbstractButton)c).isSelected();
+ }
+
+ protected Color getFocusColor( Component c ) {
+ return focusColor;
+ }
+
+ protected Color getBorderColor( Component c, boolean selected ) {
+ return FlatButtonUI.buttonStateColor( c,
+ selected ? selectedBorderColor : borderColor,
+ disabledBorderColor,
+ selected && selectedFocusedBorderColor != null ? selectedFocusedBorderColor : focusedBorderColor,
+ hoverBorderColor,
+ null );
+ }
+
+ protected Color getBackground( Component c, boolean selected ) {
+ return FlatButtonUI.buttonStateColor( c,
+ selected ? selectedBackground : background,
+ disabledBackground,
+ (selected && selectedFocusedBackground != null) ? selectedFocusedBackground : focusedBackground,
+ (selected && selectedHoverBackground != null) ? selectedHoverBackground : hoverBackground,
+ (selected && selectedPressedBackground != null) ? selectedPressedBackground : pressedBackground );
+ }
+
+ protected Color getCheckmarkColor( Component c, boolean selected, boolean isFocused ) {
+ return c.isEnabled()
+ ? ((selected && isFocused && selectedFocusedCheckmarkColor != null)
+ ? selectedFocusedCheckmarkColor
+ : checkmarkColor)
+ : disabledCheckmarkColor;
}
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatHelpButtonIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatHelpButtonIcon.java
index e996f785..9283b49d 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatHelpButtonIcon.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatHelpButtonIcon.java
@@ -31,6 +31,8 @@ import com.formdev.flatlaf.ui.FlatUIUtils;
*
* @uiDefault Component.focusWidth int
* @uiDefault Component.focusColor Color
+ * @uiDefault HelpButton.innerFocusWidth int or float optional; defaults to Component.innerFocusWidth
+ * @uiDefault HelpButton.borderWidth int optional; default is 1
* @uiDefault HelpButton.borderColor Color
* @uiDefault HelpButton.disabledBorderColor Color
* @uiDefault HelpButton.focusedBorderColor Color
@@ -50,6 +52,8 @@ public class FlatHelpButtonIcon
{
protected final int focusWidth = UIManager.getInt( "Component.focusWidth" );
protected final Color focusColor = UIManager.getColor( "Component.focusColor" );
+ protected final float innerFocusWidth = FlatUIUtils.getUIFloat( "HelpButton.innerFocusWidth", FlatUIUtils.getUIFloat( "Component.innerFocusWidth", 0 ) );
+ protected final int borderWidth = FlatUIUtils.getUIInt( "HelpButton.borderWidth", 1 );
protected final Color borderColor = UIManager.getColor( "HelpButton.borderColor" );
protected final Color disabledBorderColor = UIManager.getColor( "HelpButton.disabledBorderColor" );
@@ -84,12 +88,18 @@ public class FlatHelpButtonIcon
boolean enabled = c.isEnabled();
boolean focused = FlatUIUtils.isPermanentFocusOwner( c );
- // paint focused border
+ float xy = 0.5f;
+ float wh = iconSize - 1;
+
+ // paint outer focus border
if( focused && FlatButtonUI.isFocusPainted( c ) ) {
g2.setColor( focusColor );
- g2.fill( new Ellipse2D.Float( 0.5f, 0.5f, iconSize - 1, iconSize - 1 ) );
+ g2.fill( new Ellipse2D.Float( xy, xy, wh, wh ) );
}
+ xy += focusWidth;
+ wh -= (focusWidth * 2);
+
// paint border
g2.setColor( FlatButtonUI.buttonStateColor( c,
borderColor,
@@ -97,7 +107,19 @@ public class FlatHelpButtonIcon
focusedBorderColor,
hoverBorderColor,
null ) );
- g2.fill( new Ellipse2D.Float( focusWidth + 0.5f, focusWidth + 0.5f, 21, 21 ) );
+ g2.fill( new Ellipse2D.Float( xy, xy, wh, wh ) );
+
+ xy += borderWidth;
+ wh -= (borderWidth * 2);
+
+ // paint inner focus border
+ if( innerFocusWidth > 0 && focused && FlatButtonUI.isFocusPainted( c ) ) {
+ g2.setColor( focusColor );
+ g2.fill( new Ellipse2D.Float( xy, xy, wh, wh ) );
+
+ xy += innerFocusWidth;
+ wh -= (innerFocusWidth * 2);
+ }
// paint background
g2.setColor( FlatUIUtils.deriveColor( FlatButtonUI.buttonStateColor( c,
@@ -106,7 +128,7 @@ public class FlatHelpButtonIcon
focusedBackground,
hoverBackground,
pressedBackground ), background ) );
- g2.fill( new Ellipse2D.Float( focusWidth + 1.5f, focusWidth + 1.5f, 19, 19 ) );
+ g2.fill( new Ellipse2D.Float( xy, xy, wh, wh ) );
// paint question mark
Path2D q = new Path2D.Float();
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java
index 16c74bf8..06095b0f 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java
@@ -16,6 +16,7 @@
package com.formdev.flatlaf.icons;
+import java.awt.Component;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
@@ -36,25 +37,25 @@ public class FlatRadioButtonIcon
protected final int centerDiameter = getUIInt( "RadioButton.icon.centerDiameter", 8, style );
@Override
- protected void paintFocusBorder( Graphics2D g2 ) {
+ protected void paintFocusBorder( Component c, Graphics2D g ) {
// the outline focus border is painted outside of the icon
int wh = ICON_SIZE + (focusWidth * 2);
- g2.fillOval( -focusWidth, -focusWidth, wh, wh );
+ g.fillOval( -focusWidth, -focusWidth, wh, wh );
}
@Override
- protected void paintBorder( Graphics2D g2 ) {
- g2.fillOval( 0, 0, 15, 15 );
+ protected void paintBorder( Component c, Graphics2D g ) {
+ g.fillOval( 0, 0, 15, 15 );
}
@Override
- protected void paintBackground( Graphics2D g2 ) {
- g2.fillOval( 1, 1, 13, 13 );
+ protected void paintBackground( Component c, Graphics2D g ) {
+ g.fillOval( 1, 1, 13, 13 );
}
@Override
- protected void paintCheckmark( Graphics2D g2 ) {
+ protected void paintCheckmark( Component c, Graphics2D g ) {
float xy = (ICON_SIZE - centerDiameter) / 2f;
- g2.fill( new Ellipse2D.Float( xy, xy, centerDiameter, centerDiameter ) );
+ g.fill( new Ellipse2D.Float( xy, xy, centerDiameter, centerDiameter ) );
}
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatArrowButton.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatArrowButton.java
index 4b0e44f2..795b220d 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatArrowButton.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatArrowButton.java
@@ -57,18 +57,6 @@ public class FlatArrowButton
private boolean hover;
private boolean pressed;
- public FlatArrowButton( int direction, String type, Color foreground, Color disabledForeground,
- Color hoverForeground, Color hoverBackground )
- {
- this( direction, type, foreground, disabledForeground, hoverForeground, hoverBackground, null );
- }
-
- public FlatArrowButton( int direction, String type, Color foreground, Color disabledForeground,
- Color hoverForeground, Color hoverBackground, Color pressedBackground )
- {
- this( direction, type, foreground, disabledForeground, hoverForeground, hoverBackground, null, pressedBackground );
- }
-
public FlatArrowButton( int direction, String type, Color foreground, Color disabledForeground,
Color hoverForeground, Color hoverBackground, Color pressedForeground, Color pressedBackground )
{
@@ -85,7 +73,9 @@ public class FlatArrowButton
setOpaque( false );
setBorder( null );
- if( hoverForeground != null || hoverBackground != null || pressedBackground != null ) {
+ if( hoverForeground != null || hoverBackground != null ||
+ pressedForeground != null || pressedBackground != null )
+ {
addMouseListener( new MouseAdapter() {
@Override
public void mouseEntered( MouseEvent e ) {
@@ -151,7 +141,7 @@ public class FlatArrowButton
}
protected Color deriveForeground( Color foreground ) {
- return foreground;
+ return FlatUIUtils.deriveColor( foreground, this.foreground );
}
@Override
@@ -166,8 +156,7 @@ public class FlatArrowButton
@Override
public void paint( Graphics g ) {
- Graphics2D g2 = (Graphics2D)g;
- FlatUIUtils.setRenderingHints( g2 );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
// paint hover or pressed background
if( isEnabled() ) {
@@ -179,7 +168,7 @@ public class FlatArrowButton
if( background != null ) {
g.setColor( deriveBackground( background ) );
- paintBackground( g2 );
+ paintBackground( (Graphics2D) g );
}
}
@@ -191,7 +180,9 @@ public class FlatArrowButton
? hoverForeground
: foreground))
: disabledForeground ) );
- paintArrow( g2 );
+ paintArrow( (Graphics2D) g );
+
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
protected void paintBackground( Graphics2D g ) {
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatBorder.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatBorder.java
index c435aed4..df8802ff 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatBorder.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatBorder.java
@@ -35,7 +35,6 @@ import javax.swing.JViewport;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.basic.BasicBorders;
-import javax.swing.text.JTextComponent;
import com.formdev.flatlaf.FlatClientProperties;
import com.formdev.flatlaf.util.DerivedColor;
@@ -95,12 +94,14 @@ public class FlatBorder
// paint outer border
if( outlineColor != null || isFocused( c ) ) {
float innerWidth = !isCellEditor( c ) && !(c instanceof JScrollPane)
- ? (outlineColor != null ? innerOutlineWidth : innerFocusWidth)
+ ? (outlineColor != null ? innerOutlineWidth : getInnerFocusWidth( c ))
: 0;
- g2.setColor( (outlineColor != null) ? outlineColor : getFocusColor( c ) );
- FlatUIUtils.paintComponentOuterBorder( g2, x, y, width, height,
- focusWidth, borderWidth + scale( innerWidth ), arc );
+ if( focusWidth > 0 || innerWidth > 0 ) {
+ g2.setColor( (outlineColor != null) ? outlineColor : getFocusColor( c ) );
+ FlatUIUtils.paintComponentOuterBorder( g2, x, y, width, height,
+ focusWidth, borderWidth + scale( innerWidth ), arc );
+ }
}
// paint border
@@ -159,7 +160,7 @@ public class FlatBorder
return false;
}
- return c.isEnabled() && (!(c instanceof JTextComponent) || ((JTextComponent)c).isEditable());
+ return c.isEnabled();
}
protected boolean isFocused( Component c ) {
@@ -236,6 +237,13 @@ public class FlatBorder
return focusWidth;
}
+ /**
+ * Returns the (unscaled) thickness of the inner focus border.
+ */
+ protected float getInnerFocusWidth( Component c ) {
+ return innerFocusWidth;
+ }
+
/**
* Returns the (unscaled) line thickness used to compute the border insets.
* This may be different to {@link #getBorderWidth}.
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java
index d379c177..288b658a 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java
@@ -44,6 +44,7 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault Button.default.focusColor Color
* @uiDefault Button.borderWidth int
* @uiDefault Button.default.borderWidth int
+ * @uiDefault Button.innerFocusWidth int or float optional; defaults to Component.innerFocusWidth
* @uiDefault Button.toolbar.margin Insets
* @uiDefault Button.toolbar.spacingInsets Insets
* @uiDefault Button.arc int
@@ -65,6 +66,7 @@ public class FlatButtonBorder
protected final Color defaultFocusColor = UIManager.getColor( "Button.default.focusColor" );
protected final int borderWidth = UIManager.getInt( "Button.borderWidth" );
protected final int defaultBorderWidth = UIManager.getInt( "Button.default.borderWidth" );
+ protected final float buttonInnerFocusWidth = FlatUIUtils.getUIFloat( "Button.innerFocusWidth", innerFocusWidth );
protected final Insets toolbarMargin = UIManager.getInsets( "Button.toolbar.margin" );
protected final Insets toolbarSpacingInsets = UIManager.getInsets( "Button.toolbar.spacingInsets" );
protected final int arc = UIManager.getInt( "Button.arc" );
@@ -134,6 +136,11 @@ public class FlatButtonBorder
return FlatToggleButtonUI.isTabButton( c ) ? 0 : super.getFocusWidth( c );
}
+ @Override
+ protected float getInnerFocusWidth( Component c ) {
+ return buttonInnerFocusWidth;
+ }
+
@Override
protected int getBorderWidth( Component c ) {
return FlatButtonUI.isDefaultButton( c ) ? defaultBorderWidth : borderWidth;
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 07554acb..5aba716c 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
@@ -251,7 +251,10 @@ public class FlatButtonUI
Icon icon = ((AbstractButton)c).getIcon();
String text = ((AbstractButton)c).getText();
return (icon != null && (text == null || text.isEmpty())) ||
- (icon == null && text != null && ("...".equals( text ) || text.length() == 1));
+ (icon == null && text != null &&
+ ("...".equals( text ) ||
+ text.length() == 1 ||
+ (text.length() == 2 && Character.isSurrogatePair( text.charAt( 0 ), text.charAt( 1 ) ))));
}
static final int TYPE_OTHER = -1;
@@ -407,8 +410,13 @@ public class FlatButtonUI
if( model.isRollover() )
return toolbarHoverBackground;
- // use background of toolbar
- return c.getParent().getBackground();
+ // use component background if explicitly set
+ Color bg = c.getBackground();
+ if( isCustomBackground( bg ) )
+ return bg;
+
+ // do not paint background
+ return null;
}
boolean def = isDefaultButton( c );
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 52905f8d..273b6be9 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
@@ -34,6 +34,8 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Rectangle2D;
import java.beans.PropertyChangeEvent;
@@ -97,6 +99,7 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault ComboBox.buttonArrowColor Color
* @uiDefault ComboBox.buttonDisabledArrowColor Color
* @uiDefault ComboBox.buttonHoverArrowColor Color
+ * @uiDefault ComboBox.buttonPressedArrowColor Color
*
* @author Karl Tauber
*/
@@ -120,9 +123,11 @@ public class FlatComboBoxUI
protected Color buttonArrowColor;
protected Color buttonDisabledArrowColor;
protected Color buttonHoverArrowColor;
+ protected Color buttonPressedArrowColor;
private MouseListener hoverListener;
protected boolean hover;
+ protected boolean pressed;
private WeakReference lastRendererComponent;
@@ -134,13 +139,36 @@ public class FlatComboBoxUI
protected void installListeners() {
super.installListeners();
- hoverListener = new FlatUIUtils.HoverListener( null, h -> {
- if( !comboBox.isEditable() ) {
- hover = h;
- if( arrowButton != null )
+ hoverListener = new MouseAdapter() {
+ @Override
+ public void mouseEntered( MouseEvent e ) {
+ hover = true;
+ repaintArrowButton();
+ }
+
+ @Override
+ public void mouseExited( MouseEvent e ) {
+ hover = false;
+ repaintArrowButton();
+ }
+
+ @Override
+ public void mousePressed( MouseEvent e ) {
+ pressed = true;
+ repaintArrowButton();
+ }
+
+ @Override
+ public void mouseReleased( MouseEvent e ) {
+ pressed = false;
+ repaintArrowButton();
+ }
+
+ private void repaintArrowButton() {
+ if( arrowButton != null && !comboBox.isEditable() )
arrowButton.repaint();
}
- } );
+ };
comboBox.addMouseListener( hoverListener );
}
@@ -175,6 +203,7 @@ public class FlatComboBoxUI
buttonArrowColor = UIManager.getColor( "ComboBox.buttonArrowColor" );
buttonDisabledArrowColor = UIManager.getColor( "ComboBox.buttonDisabledArrowColor" );
buttonHoverArrowColor = UIManager.getColor( "ComboBox.buttonHoverArrowColor" );
+ buttonPressedArrowColor = UIManager.getColor( "ComboBox.buttonPressedArrowColor" );
// set maximumRowCount
int maximumRowCount = UIManager.getInt( "ComboBox.maximumRowCount" );
@@ -203,6 +232,7 @@ public class FlatComboBoxUI
buttonArrowColor = null;
buttonDisabledArrowColor = null;
buttonHoverArrowColor = null;
+ buttonPressedArrowColor = null;
MigLayoutVisualPadding.uninstall( comboBox );
}
@@ -352,7 +382,7 @@ public class FlatComboBoxUI
FlatUIUtils.paintParentBackground( g, c );
Graphics2D g2 = (Graphics2D) g;
- FlatUIUtils.setRenderingHints( g2 );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g2 );
int width = c.getWidth();
int height = c.getHeight();
@@ -386,6 +416,9 @@ public class FlatComboBoxUI
g2.fill( new Rectangle2D.Float( lx, focusWidth, lw, height - 1 - (focusWidth * 2)) );
}
+ // avoid that the "current value" renderer is invoked with enabled antialiasing
+ FlatUIUtils.resetRenderingHints( g2, oldRenderingHints );
+
paint( g, c );
}
@@ -513,19 +546,26 @@ public class FlatComboBoxUI
extends FlatArrowButton
{
protected FlatComboBoxButton() {
- this( SwingConstants.SOUTH, arrowType, buttonArrowColor, buttonDisabledArrowColor, buttonHoverArrowColor, null, null );
+ this( SwingConstants.SOUTH, arrowType, buttonArrowColor, buttonDisabledArrowColor,
+ buttonHoverArrowColor, null, buttonPressedArrowColor, null );
}
protected FlatComboBoxButton( int direction, String type, Color foreground, Color disabledForeground,
- Color hoverForeground, Color hoverBackground, Color pressedBackground )
+ Color hoverForeground, Color hoverBackground, Color pressedForeground, Color pressedBackground )
{
- super( direction, type, foreground, disabledForeground, hoverForeground, hoverBackground, pressedBackground );
+ super( direction, type, foreground, disabledForeground,
+ hoverForeground, hoverBackground, pressedForeground, pressedBackground );
}
@Override
protected boolean isHover() {
return super.isHover() || (!comboBox.isEditable() ? hover : false);
}
+
+ @Override
+ protected boolean isPressed() {
+ return super.isPressed() || (!comboBox.isEditable() ? pressed : false);
+ }
}
//---- class FlatComboPopup -----------------------------------------------
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java
index b49d2df1..3d4deb21 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java
@@ -39,6 +39,7 @@ import javax.swing.UIManager;
import javax.swing.plaf.basic.BasicHTML;
import javax.swing.text.View;
import com.formdev.flatlaf.FlatLaf;
+import com.formdev.flatlaf.util.DerivedColor;
import com.formdev.flatlaf.util.Graphics2DProxy;
import com.formdev.flatlaf.util.HiDPIUtils;
import com.formdev.flatlaf.util.SystemInfo;
@@ -55,7 +56,8 @@ import com.formdev.flatlaf.util.SystemInfo;
* @uiDefault MenuItem.underlineSelectionBackground Color
* @uiDefault MenuItem.underlineSelectionCheckBackground Color
* @uiDefault MenuItem.underlineSelectionColor Color
- * @uiDefault MenuItem.underlineSelectionHeight Color
+ * @uiDefault MenuItem.underlineSelectionHeight int
+ * @uiDefault MenuItem.selectionBackground Color
*
* @author Karl Tauber
*/
@@ -81,6 +83,8 @@ public class FlatMenuItemRenderer
protected final Color underlineSelectionColor = UIManager.getColor( "MenuItem.underlineSelectionColor" );
protected final int underlineSelectionHeight = UIManager.getInt( "MenuItem.underlineSelectionHeight" );
+ protected final Color selectionBackground = UIManager.getColor( "MenuItem.selectionBackground" );
+
protected FlatMenuItemRenderer( JMenuItem menuItem, Icon checkIcon, Icon arrowIcon,
Font acceleratorFont, String acceleratorDelimiter )
{
@@ -246,8 +250,11 @@ public class FlatMenuItemRenderer
g.setColor( Color.orange ); g.drawRect( arrowRect.x, arrowRect.y, arrowRect.width - 1, arrowRect.height - 1 );
debug*/
- paintBackground( g, selectionBackground );
- paintIcon( g, iconRect, getIconForPainting() );
+ boolean underlineSelection = isUnderlineSelection();
+ paintBackground( g, underlineSelection ? underlineSelectionBackground : selectionBackground );
+ if( underlineSelection && isArmedOrSelected( menuItem ) )
+ paintUnderlineSelection( g, underlineSelectionColor, underlineSelectionHeight );
+ paintIcon( g, iconRect, getIconForPainting(), underlineSelection ? underlineSelectionCheckBackground : checkBackground );
paintText( g, textRect, menuItem.getText(), selectionForeground, disabledForeground );
paintAccelerator( g, accelRect, getAcceleratorText(), acceleratorForeground, acceleratorSelectionForeground, disabledForeground );
if( !isTopLevelMenu( menuItem ) )
@@ -257,36 +264,36 @@ debug*/
protected void paintBackground( Graphics g, Color selectionBackground ) {
boolean armedOrSelected = isArmedOrSelected( menuItem );
if( menuItem.isOpaque() || armedOrSelected ) {
- int width = menuItem.getWidth();
- int height = menuItem.getHeight();
-
// paint background
g.setColor( armedOrSelected
- ? (isUnderlineSelection()
- ? deriveBackground( underlineSelectionBackground )
- : selectionBackground)
+ ? deriveBackground( selectionBackground )
: menuItem.getBackground() );
- g.fillRect( 0, 0, width, height );
+ g.fillRect( 0, 0, menuItem.getWidth(), menuItem.getHeight() );
+ }
+ }
- // paint underline
- if( armedOrSelected && isUnderlineSelection() ) {
- int underlineHeight = scale( underlineSelectionHeight );
- g.setColor( underlineSelectionColor );
- if( isTopLevelMenu( menuItem ) ) {
- // paint underline at bottom
- g.fillRect( 0, height - underlineHeight, width, underlineHeight );
- } else if( menuItem.getComponentOrientation().isLeftToRight() ) {
- // paint underline at left side
- g.fillRect( 0, 0, underlineHeight, height );
- } else {
- // paint underline at right side
- g.fillRect( width - underlineHeight, 0, underlineHeight, height );
- }
- }
+ protected void paintUnderlineSelection( Graphics g, Color underlineSelectionColor, int underlineSelectionHeight ) {
+ int width = menuItem.getWidth();
+ int height = menuItem.getHeight();
+
+ int underlineHeight = scale( underlineSelectionHeight );
+ g.setColor( underlineSelectionColor );
+ if( isTopLevelMenu( menuItem ) ) {
+ // paint underline at bottom
+ g.fillRect( 0, height - underlineHeight, width, underlineHeight );
+ } else if( menuItem.getComponentOrientation().isLeftToRight() ) {
+ // paint underline at left side
+ g.fillRect( 0, 0, underlineHeight, height );
+ } else {
+ // paint underline at right side
+ g.fillRect( width - underlineHeight, 0, underlineHeight, height );
}
}
protected Color deriveBackground( Color background ) {
+ if( !(background instanceof DerivedColor) )
+ return background;
+
Color baseColor = menuItem.isOpaque()
? menuItem.getBackground()
: FlatUIUtils.getParentBackground( menuItem );
@@ -294,12 +301,12 @@ debug*/
return FlatUIUtils.deriveColor( background, baseColor );
}
- protected void paintIcon( Graphics g, Rectangle iconRect, Icon icon ) {
+ protected void paintIcon( Graphics g, Rectangle iconRect, Icon icon, Color checkBackground ) {
// if checkbox/radiobutton menu item is selected and also has a custom icon,
// then use filled icon background to indicate selection (instead of using checkIcon)
if( menuItem.isSelected() && checkIcon != null && icon != checkIcon ) {
Rectangle r = FlatUIUtils.addInsets( iconRect, scale( checkMargins ) );
- g.setColor( deriveBackground( isUnderlineSelection() ? underlineSelectionCheckBackground : checkBackground ) );
+ g.setColor( FlatUIUtils.deriveColor( checkBackground, selectionBackground ) );
g.fillRect( r.x, r.y, r.width, r.height );
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuUI.java
index 503e3981..8f80c6c2 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuUI.java
@@ -62,6 +62,12 @@ import javax.swing.plaf.basic.BasicMenuUI;
* @uiDefault MenuItem.iconTextGap int
* @uiDefault MenuBar.hoverBackground Color
*
+ *
+ *
+ * @uiDefault MenuBar.underlineSelectionBackground Color
+ * @uiDefault MenuBar.underlineSelectionColor Color
+ * @uiDefault MenuBar.underlineSelectionHeight int
+ *
* @author Karl Tauber
*/
public class FlatMenuUI
@@ -147,6 +153,10 @@ public class FlatMenuUI
protected class FlatMenuRenderer
extends FlatMenuItemRenderer
{
+ protected final Color menuBarUnderlineSelectionBackground = FlatUIUtils.getUIColor( "MenuBar.underlineSelectionBackground", underlineSelectionBackground );
+ protected final Color menuBarUnderlineSelectionColor = FlatUIUtils.getUIColor( "MenuBar.underlineSelectionColor", underlineSelectionColor );
+ protected final int menuBarUnderlineSelectionHeight = FlatUIUtils.getUIInt( "MenuBar.underlineSelectionHeight", underlineSelectionHeight );
+
protected FlatMenuRenderer( JMenuItem menuItem, Icon checkIcon, Icon arrowIcon,
Font acceleratorFont, String acceleratorDelimiter )
{
@@ -155,6 +165,9 @@ public class FlatMenuUI
@Override
protected void paintBackground( Graphics g, Color selectionBackground ) {
+ if( isUnderlineSelection() && ((JMenu)menuItem).isTopLevelMenu() )
+ selectionBackground = menuBarUnderlineSelectionBackground;
+
ButtonModel model = menuItem.getModel();
if( model.isRollover() && !model.isArmed() && !model.isSelected() &&
model.isEnabled() && ((JMenu)menuItem).isTopLevelMenu() )
@@ -164,5 +177,15 @@ public class FlatMenuUI
} else
super.paintBackground( g, selectionBackground );
}
+
+ @Override
+ protected void paintUnderlineSelection( Graphics g, Color underlineSelectionColor, int underlineSelectionHeight ) {
+ if( ((JMenu)menuItem).isTopLevelMenu() ) {
+ underlineSelectionColor = menuBarUnderlineSelectionColor;
+ underlineSelectionHeight = menuBarUnderlineSelectionHeight;
+ }
+
+ super.paintUnderlineSelection( g, underlineSelectionColor, underlineSelectionHeight );
+ }
}
}
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 bf1fcd24..45199226 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
@@ -68,19 +68,17 @@ public class FlatPopupFactory
y = pt.y;
}
- if( !isDropShadowPainted( owner, contents ) )
- return new NonFlashingPopup( getPopupForScreenOfOwner( owner, contents, x, y, false ), contents );
+ boolean forceHeavyWeight = isOptionEnabled( owner, contents, FlatClientProperties.POPUP_FORCE_HEAVY_WEIGHT, "Popup.forceHeavyWeight" );
+
+ if( !isOptionEnabled( owner, contents, FlatClientProperties.POPUP_DROP_SHADOW_PAINTED, "Popup.dropShadowPainted" ) )
+ return new NonFlashingPopup( getPopupForScreenOfOwner( owner, contents, x, y, forceHeavyWeight ), contents );
// macOS and Linux adds drop shadow to heavy weight popups
- if( SystemInfo.isMacOS || SystemInfo.isLinux ) {
- Popup popup = getPopupForScreenOfOwner( owner, contents, x, y, true );
- if( popup == null )
- popup = getPopupForScreenOfOwner( owner, contents, x, y, false );
- return new NonFlashingPopup( popup, contents );
- }
+ if( SystemInfo.isMacOS || SystemInfo.isLinux )
+ return new NonFlashingPopup( getPopupForScreenOfOwner( owner, contents, x, y, true ), contents );
// create drop shadow popup
- return new DropShadowPopup( getPopupForScreenOfOwner( owner, contents, x, y, false ), owner, contents );
+ return new DropShadowPopup( getPopupForScreenOfOwner( owner, contents, x, y, forceHeavyWeight ), owner, contents );
}
/**
@@ -155,24 +153,20 @@ public class FlatPopupFactory
popup.show();
}
- private boolean isDropShadowPainted( Component owner, Component contents ) {
- Boolean b = isDropShadowPainted( owner );
- if( b != null )
- return b;
+ private boolean isOptionEnabled( Component owner, Component contents, String clientKey, String uiKey ) {
+ if( owner instanceof JComponent ) {
+ Boolean b = FlatClientProperties.clientPropertyBooleanStrict( (JComponent) owner, clientKey, null );
+ if( b != null )
+ return b;
+ }
- b = isDropShadowPainted( contents );
- if( b != null )
- return b;
+ if( contents instanceof JComponent ) {
+ Boolean b = FlatClientProperties.clientPropertyBooleanStrict( (JComponent) contents, clientKey, null );
+ if( b != null )
+ return b;
+ }
- return UIManager.getBoolean( "Popup.dropShadowPainted" );
- }
-
- private Boolean isDropShadowPainted( Component c ) {
- if( !(c instanceof JComponent) )
- return null;
-
- Object value = ((JComponent)c).getClientProperty( FlatClientProperties.POPUP_DROP_SHADOW_PAINTED );
- return (value instanceof Boolean ) ? (Boolean) value : null;
+ return UIManager.getBoolean( uiKey );
}
/**
@@ -277,16 +271,17 @@ public class FlatPopupFactory
// increase tooltip size if necessary because it may be too small on HiDPI screens
// https://bugs.openjdk.java.net/browse/JDK-8213535
- if( contents instanceof JToolTip ) {
+ if( contents instanceof JToolTip && popupWindow == null ) {
Container parent = contents.getParent();
if( parent instanceof JPanel ) {
Dimension prefSize = parent.getPreferredSize();
if( !prefSize.equals( parent.getSize() ) ) {
- Container panel = SwingUtilities.getAncestorOfClass( Panel.class, parent );
- if( panel != null )
- panel.setSize( prefSize ); // for medium weight popup
- else
- parent.setSize( prefSize ); // for light weight popup
+ Container mediumWeightPanel = SwingUtilities.getAncestorOfClass( Panel.class, parent );
+ Container c = (mediumWeightPanel != null)
+ ? mediumWeightPanel // medium weight popup
+ : parent; // light weight popup
+ c.setSize( prefSize );
+ c.validate();
}
}
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatProgressBarUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatProgressBarUI.java
index 4ac1efbd..dddc87b7 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatProgressBarUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatProgressBarUI.java
@@ -155,7 +155,7 @@ public class FlatProgressBarUI
? 0
: Math.min( UIScale.scale( this.arc ), horizontal ? height : width );
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
// paint track
RoundRectangle2D.Float trackShape = new RoundRectangle2D.Float( x, y, width, height, arc, arc );
@@ -163,6 +163,7 @@ public class FlatProgressBarUI
((Graphics2D)g).fill( trackShape );
// paint progress
+ int amountFull = 0;
if( progressBar.isIndeterminate() ) {
boxRect = getBox( boxRect );
if( boxRect != null ) {
@@ -170,11 +171,8 @@ public class FlatProgressBarUI
((Graphics2D)g).fill( new RoundRectangle2D.Float( boxRect.x, boxRect.y,
boxRect.width, boxRect.height, arc, arc ) );
}
-
- if( progressBar.isStringPainted() )
- paintString( g, x, y, width, height, 0, insets );
} else {
- int amountFull = getAmountFull( insets, width, height );
+ amountFull = getAmountFull( insets, width, height );
RoundRectangle2D.Float progressShape = horizontal
? new RoundRectangle2D.Float( c.getComponentOrientation().isLeftToRight() ? x : x + (width - amountFull),
@@ -189,10 +187,12 @@ public class FlatProgressBarUI
((Graphics2D)g).fill( area );
} else
((Graphics2D)g).fill( progressShape );
-
- if( progressBar.isStringPainted() )
- paintString( g, x, y, width, height, amountFull, insets );
}
+
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
+
+ if( progressBar.isStringPainted() )
+ paintString( g, x, y, width, height, amountFull, insets );
}
@Override
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java
index e1329a9c..8d508988 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java
@@ -27,7 +27,6 @@ import javax.swing.JComponent;
import javax.swing.LookAndFeel;
import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
-import javax.swing.plaf.UIResource;
import javax.swing.plaf.basic.BasicRadioButtonUI;
import com.formdev.flatlaf.icons.FlatCheckBoxIcon;
import com.formdev.flatlaf.util.UIScale;
@@ -58,6 +57,8 @@ public class FlatRadioButtonUI
protected int iconTextGap;
protected Color disabledText;
+ private Color defaultBackground;
+
private boolean defaults_initialized = false;
public static ComponentUI createUI( JComponent c ) {
@@ -74,6 +75,8 @@ public class FlatRadioButtonUI
iconTextGap = FlatUIUtils.getUIInt( prefix + "iconTextGap", 4 );
disabledText = UIManager.getColor( prefix + "disabledText" );
+ defaultBackground = UIManager.getColor( prefix + "background" );
+
defaults_initialized = true;
}
@@ -120,7 +123,7 @@ public class FlatRadioButtonUI
// - if background was explicitly set to a non-UIResource color
if( !c.isOpaque() &&
((AbstractButton)c).isContentAreaFilled() &&
- !(c.getBackground() instanceof UIResource) )
+ (c.getBackground() != defaultBackground) )
{
g.setColor( c.getBackground() );
g.fillRect( 0, 0, c.getWidth(), c.getHeight() );
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 82098cda..070eb896 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
@@ -285,6 +285,7 @@ public class FlatRootPaneUI
@Override
public void layoutContainer( Container parent ) {
JRootPane rootPane = (JRootPane) parent;
+ boolean isFullScreen = FlatUIUtils.isFullScreen( rootPane );
Insets insets = rootPane.getInsets();
int x = insets.left;
@@ -298,7 +299,7 @@ public class FlatRootPaneUI
rootPane.getGlassPane().setBounds( x, y, width, height );
int nextY = 0;
- if( titlePane != null ) {
+ if( !isFullScreen && titlePane != null ) {
Dimension prefSize = titlePane.getPreferredSize();
titlePane.setBounds( 0, 0, width, prefSize.height );
nextY += prefSize.height;
@@ -306,7 +307,7 @@ public class FlatRootPaneUI
JMenuBar menuBar = rootPane.getJMenuBar();
if( menuBar != null && menuBar.isVisible() ) {
- if( titlePane != null && titlePane.isMenuBarEmbedded() ) {
+ if( !isFullScreen && titlePane != null && titlePane.isMenuBarEmbedded() ) {
titlePane.validate();
menuBar.setBounds( titlePane.getMenuBarBounds() );
} else {
@@ -356,7 +357,7 @@ public class FlatRootPaneUI
@Override
public Insets getBorderInsets( Component c, Insets insets ) {
- if( isWindowMaximized( c ) ) {
+ if( isWindowMaximized( c ) || FlatUIUtils.isFullScreen( c ) ) {
// hide border if window is maximized
insets.top = insets.left = insets.bottom = insets.right = 0;
return insets;
@@ -366,7 +367,7 @@ public class FlatRootPaneUI
@Override
public void paintBorder( Component c, Graphics g, int x, int y, int width, int height ) {
- if( isWindowMaximized( c ) )
+ if( isWindowMaximized( c ) || FlatUIUtils.isFullScreen( c ) )
return;
Container parent = c.getParent();
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollBarUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollBarUI.java
index 3f58f96f..a589f705 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollBarUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollBarUI.java
@@ -19,7 +19,6 @@ package com.formdev.flatlaf.ui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
-import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
@@ -142,6 +141,12 @@ public class FlatScrollBarUI
buttonDisabledArrowColor = UIManager.getColor( "ScrollBar.buttonDisabledArrowColor" );
hoverButtonBackground = UIManager.getColor( "ScrollBar.hoverButtonBackground" );
pressedButtonBackground = UIManager.getColor( "ScrollBar.pressedButtonBackground" );
+
+ // fallback (e.g. when used in NetBeans GUI builder)
+ if( trackInsets == null )
+ trackInsets = new Insets( 0, 0, 0, 0 );
+ if( thumbInsets == null )
+ thumbInsets = new Insets( 0, 0, 0, 0 );
}
@Override
@@ -215,8 +220,9 @@ public class FlatScrollBarUI
@Override
public void paint( Graphics g, JComponent c ) {
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
super.paint( g, c );
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
@Override
@@ -351,13 +357,14 @@ public class FlatScrollBarUI
{
protected FlatScrollBarButton( int direction ) {
this( direction, arrowType, buttonArrowColor, buttonDisabledArrowColor,
- null, hoverButtonBackground, pressedButtonBackground );
+ null, hoverButtonBackground, null, pressedButtonBackground );
}
protected FlatScrollBarButton( int direction, String type, Color foreground, Color disabledForeground,
- Color hoverForeground, Color hoverBackground, Color pressedBackground )
+ Color hoverForeground, Color hoverBackground, Color pressedForeground, Color pressedBackground )
{
- super( direction, type, foreground, disabledForeground, hoverForeground, hoverBackground, pressedBackground );
+ super( direction, type, foreground, disabledForeground,
+ hoverForeground, hoverBackground, pressedForeground, pressedBackground );
setArrowWidth( FlatArrowButton.DEFAULT_ARROW_WIDTH - 2 );
setFocusable( false );
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollPaneUI.java
index 13c3ea8c..9c10726f 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollPaneUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollPaneUI.java
@@ -14,12 +14,6 @@
* limitations under the License.
*/
-/*
- * Smooth scrolling code partly based on code from IntelliJ IDEA Community Edition,
- * which is licensed under the Apache 2.0 license. Copyright 2000-2016 JetBrains s.r.o.
- * See: https://github.com/JetBrains/intellij-community/blob/31e1b5a8e43219b9571951bab6457cfb3012e3ef/platform/platform-api/src/com/intellij/ui/components/SmoothScrollPane.java#L141-L185
- *
- */
package com.formdev.flatlaf.ui;
import java.awt.Component;
@@ -138,8 +132,6 @@ public class FlatScrollPaneUI
return UIManager.getBoolean( "ScrollPane.smoothScrolling" );
}
- private static final double EPSILON = 1e-5d;
-
private void mouseWheelMovedSmooth( MouseWheelEvent e ) {
// return if there is no viewport
JViewport viewport = scrollpane.getViewport();
@@ -160,24 +152,22 @@ public class FlatScrollPaneUI
// get precise wheel rotation
double rotation = e.getPreciseWheelRotation();
- // get unit and block increment
+ // get unit increment
int unitIncrement;
- int blockIncrement;
int orientation = scrollbar.getOrientation();
Component view = viewport.getView();
if( view instanceof Scrollable ) {
Scrollable scrollable = (Scrollable) view;
- // Use (0, 0) view position to obtain constant unit increment of first item
- // (which might otherwise be variable on smaller-than-unit scrolling).
+ // Use (0, 0) view position to obtain a constant unit increment of first item.
+ // Unit increment may be different for each item.
Rectangle visibleRect = new Rectangle( viewport.getViewSize() );
unitIncrement = scrollable.getScrollableUnitIncrement( visibleRect, orientation, 1 );
- blockIncrement = scrollable.getScrollableBlockIncrement( visibleRect, orientation, 1 );
if( unitIncrement > 0 ) {
// For the case that the first item (e.g. in a list) is larger
- // than the other items, get the unit increment of the second item
- // and use the smaller one.
+ // than the other items (e.g. themes list in FlatLaf Demo),
+ // get the unit increment of the second item and use the smaller one.
if( orientation == SwingConstants.VERTICAL ) {
visibleRect.y += unitIncrement;
visibleRect.height -= unitIncrement;
@@ -192,52 +182,58 @@ public class FlatScrollPaneUI
} else {
int direction = rotation < 0 ? -1 : 1;
unitIncrement = scrollbar.getUnitIncrement( direction );
- blockIncrement = scrollbar.getBlockIncrement( direction );
}
- // limit scroll amount (number of units to scroll) for small viewports
- // (e.g. vertical scrolling in file chooser)
- int scrollAmount = e.getScrollAmount();
+ // get viewport width/height (the visible width/height)
int viewportWH = (orientation == SwingConstants.VERTICAL)
? viewport.getHeight()
: viewport.getWidth();
- if( unitIncrement * scrollAmount > viewportWH )
- scrollAmount = Math.max( viewportWH / unitIncrement, 1 );
+
+ // limit scroll increment to viewport width/height
+ // - if scroll amount is set to a large value in OS settings
+ // - for large unit increments in small viewports (e.g. horizontal scrolling in file chooser)
+ int scrollIncrement = Math.min( unitIncrement * e.getScrollAmount(), viewportWH );
// compute relative delta
- double delta = rotation * scrollAmount * unitIncrement;
- boolean adjustDelta = Math.abs( rotation ) < (1.0 + EPSILON);
- double adjustedDelta = adjustDelta
- ? Math.max( -blockIncrement, Math.min( delta, blockIncrement ) )
- : delta;
+ double delta = rotation * scrollIncrement;
+ int idelta = (int) Math.round( delta );
+
+ // scroll at least one pixel to avoid "hanging"
+ // - for "super-low-speed" scrolling (move fingers very slowly on trackpad)
+ // - if unit increment is very small (e.g. 1 if scroll view does not implement
+ // javax.swing.Scrollable interface)
+ if( idelta == 0 ) {
+ if( rotation > 0 )
+ idelta = 1;
+ else if( rotation < 0 )
+ idelta = -1;
+ }
// compute new value
int value = scrollbar.getValue();
- double minDelta = scrollbar.getMinimum() - value;
- double maxDelta = scrollbar.getMaximum() - scrollbar.getModel().getExtent() - value;
- double boundedDelta = Math.max( minDelta, Math.min( adjustedDelta, maxDelta ) );
- int newValue = value + (int) Math.round( boundedDelta );
+ int minValue = scrollbar.getMinimum();
+ int maxValue = scrollbar.getMaximum() - scrollbar.getModel().getExtent();
+ int newValue = Math.max( minValue, Math.min( value + idelta, maxValue ) );
// set new value
if( newValue != value )
scrollbar.setValue( newValue );
/*debug
- System.out.println( String.format( "%4d %9f / %4d %4d / %12f %5s %12f / %4d %4d %4d / %12f %12f %12f / %4d",
+ System.out.println( String.format( "%s %4d %9f / %3d * %d = %3d [%3d] / %8.2f %5d / %4d --> %4d [%d, %d]",
+ (orientation == SwingConstants.VERTICAL) ? "V" : "H",
e.getWheelRotation(),
e.getPreciseWheelRotation(),
unitIncrement,
- blockIncrement,
+ e.getScrollAmount(),
+ scrollIncrement,
+ viewportWH,
delta,
- adjustDelta,
- adjustedDelta,
+ idelta,
value,
- scrollbar.getMinimum(),
- scrollbar.getMaximum(),
- minDelta,
- maxDelta,
- boundedDelta,
- newValue ) );
+ newValue,
+ minValue,
+ maxValue ) );
*/
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSliderUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSliderUI.java
index 9115a87e..b44f769f 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSliderUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSliderUI.java
@@ -18,17 +18,23 @@ package com.formdev.flatlaf.ui;
import java.awt.Color;
import java.awt.Dimension;
+import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
-import java.awt.event.MouseListener;
+import java.awt.Rectangle;
+import java.awt.Shape;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Ellipse2D;
import java.awt.geom.Path2D;
import java.awt.geom.RoundRectangle2D;
import javax.swing.JComponent;
import javax.swing.JSlider;
import javax.swing.LookAndFeel;
+import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicSliderUI;
+import com.formdev.flatlaf.util.HiDPIUtils;
import com.formdev.flatlaf.util.UIScale;
/**
@@ -49,29 +55,49 @@ import com.formdev.flatlaf.util.UIScale;
*
*
* @uiDefault Slider.trackWidth int
- * @uiDefault Slider.thumbWidth int
+ * @uiDefault Slider.thumbSize Dimension
+ * @uiDefault Slider.focusWidth int
+ * @uiDefault Slider.trackValueColor Color optional; defaults to Slider.thumbColor
* @uiDefault Slider.trackColor Color
* @uiDefault Slider.thumbColor Color
+ * @uiDefault Slider.thumbBorderColor Color optional; if null, no border is painted
* @uiDefault Slider.focusedColor Color optional; defaults to Component.focusColor
- * @uiDefault Slider.hoverColor Color optional; defaults to Slider.focusedColor
- * @uiDefault Slider.disabledForeground Color used for track and thumb is disabled
+ * @uiDefault Slider.focusedThumbBorderColor Color optional; defaults to Component.focusedBorderColor
+ * @uiDefault Slider.hoverThumbColor Color optional
+ * @uiDefault Slider.pressedThumbColor Color optional
+ * @uiDefault Slider.disabledTrackColor Color
+ * @uiDefault Slider.disabledThumbColor Color
+ * @uiDefault Slider.disabledThumbBorderColor Color optional; defaults to Component.disabledBorderColor
*
* @author Karl Tauber
*/
public class FlatSliderUI
extends BasicSliderUI
{
- private int trackWidth;
- private int thumbWidth;
+ protected int trackWidth;
+ protected Dimension thumbSize;
+ protected int focusWidth;
- private Color trackColor;
- private Color thumbColor;
- private Color focusColor;
- private Color hoverColor;
- private Color disabledForeground;
+ protected Color trackValueColor;
+ protected Color trackColor;
+ protected Color thumbColor;
+ protected Color thumbBorderColor;
+ protected Color focusBaseColor;
+ protected Color focusedColor;
+ protected Color focusedThumbBorderColor;
+ protected Color hoverThumbColor;
+ protected Color pressedThumbColor;
+ protected Color disabledTrackColor;
+ protected Color disabledThumbColor;
+ protected Color disabledThumbBorderColor;
- private MouseListener hoverListener;
- private boolean hover;
+ private Color defaultBackground;
+ private Color defaultForeground;
+
+ protected boolean thumbHover;
+ protected boolean thumbPressed;
+
+ private Object[] oldRenderingHints;
public static ComponentUI createUI( JComponent c ) {
return new FlatSliderUI();
@@ -81,24 +107,6 @@ public class FlatSliderUI
super( null );
}
- @Override
- protected void installListeners( JSlider slider ) {
- super.installListeners( slider );
-
- hoverListener = new FlatUIUtils.HoverListener( slider, h -> {
- hover = h;
- } );
- slider.addMouseListener( hoverListener );
- }
-
- @Override
- protected void uninstallListeners( JSlider slider ) {
- super.uninstallListeners( slider );
-
- slider.removeMouseListener( hoverListener );
- hoverListener = null;
- }
-
@Override
protected void installDefaults( JSlider slider ) {
super.installDefaults( slider );
@@ -106,24 +114,71 @@ public class FlatSliderUI
LookAndFeel.installProperty( slider, "opaque", false );
trackWidth = UIManager.getInt( "Slider.trackWidth" );
- thumbWidth = UIManager.getInt( "Slider.thumbWidth" );
+ thumbSize = UIManager.getDimension( "Slider.thumbSize" );
+ if( thumbSize == null ) {
+ // fallback for compatibility with old versions
+ int thumbWidth = UIManager.getInt( "Slider.thumbWidth" );
+ thumbSize = new Dimension( thumbWidth, thumbWidth );
+ }
+ focusWidth = FlatUIUtils.getUIInt( "Slider.focusWidth", 4 );
+ trackValueColor = FlatUIUtils.getUIColor( "Slider.trackValueColor", "Slider.thumbColor" );
trackColor = UIManager.getColor( "Slider.trackColor" );
thumbColor = UIManager.getColor( "Slider.thumbColor" );
- focusColor = FlatUIUtils.getUIColor( "Slider.focusedColor", "Component.focusColor" );
- hoverColor = FlatUIUtils.getUIColor( "Slider.hoverColor", focusColor );
- disabledForeground = UIManager.getColor( "Slider.disabledForeground" );
+ thumbBorderColor = UIManager.getColor( "Slider.thumbBorderColor" );
+ focusBaseColor = UIManager.getColor( "Component.focusColor" );
+ focusedColor = FlatUIUtils.getUIColor( "Slider.focusedColor", focusBaseColor );
+ focusedThumbBorderColor = FlatUIUtils.getUIColor( "Slider.focusedThumbBorderColor", "Component.focusedBorderColor" );
+ hoverThumbColor = UIManager.getColor( "Slider.hoverThumbColor" );
+ pressedThumbColor = UIManager.getColor( "Slider.pressedThumbColor" );
+ disabledTrackColor = UIManager.getColor( "Slider.disabledTrackColor" );
+ disabledThumbColor = UIManager.getColor( "Slider.disabledThumbColor" );
+ disabledThumbBorderColor = FlatUIUtils.getUIColor( "Slider.disabledThumbBorderColor", "Component.disabledBorderColor" );
+
+ defaultBackground = UIManager.getColor( "Slider.background" );
+ defaultForeground = UIManager.getColor( "Slider.foreground" );
}
@Override
protected void uninstallDefaults( JSlider slider ) {
super.uninstallDefaults( slider );
+ trackValueColor = null;
trackColor = null;
thumbColor = null;
- focusColor = null;
- hoverColor = null;
- disabledForeground = null;
+ thumbBorderColor = null;
+ focusBaseColor = null;
+ focusedColor = null;
+ focusedThumbBorderColor = null;
+ hoverThumbColor = null;
+ pressedThumbColor = null;
+ disabledTrackColor = null;
+ disabledThumbColor = null;
+ disabledThumbBorderColor = null;
+
+ defaultBackground = null;
+ defaultForeground = null;
+ }
+
+ @Override
+ protected TrackListener createTrackListener( JSlider slider ) {
+ return new FlatTrackListener();
+ }
+
+ @Override
+ public int getBaseline( JComponent c, int width, int height ) {
+ if( c == null )
+ throw new NullPointerException();
+ if( width < 0 || height < 0 )
+ throw new IllegalArgumentException();
+
+ // no baseline for vertical orientation
+ if( slider.getOrientation() == JSlider.VERTICAL )
+ return -1;
+
+ // compute a baseline so that the track is vertically centered
+ FontMetrics fm = slider.getFontMetrics( slider.getFont() );
+ return trackRect.y + Math.round( (trackRect.height - fm.getHeight()) / 2f ) + fm.getAscent() - 1;
}
@Override
@@ -153,14 +208,50 @@ public class FlatSliderUI
@Override
protected Dimension getThumbSize() {
- return new Dimension( UIScale.scale( thumbWidth ), UIScale.scale( thumbWidth ) );
+ return calcThumbSize( slider, thumbSize, focusWidth );
+ }
+
+ public static Dimension calcThumbSize( JSlider slider, Dimension thumbSize, int focusWidth ) {
+ int fw = UIScale.scale( focusWidth );
+ int w = UIScale.scale( thumbSize.width ) + fw + fw;
+ int h = UIScale.scale( thumbSize.height ) + fw + fw;
+ return (slider.getOrientation() == JSlider.HORIZONTAL)
+ ? new Dimension( w, h )
+ : new Dimension( h, w );
}
@Override
public void paint( Graphics g, JComponent c ) {
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
+ oldRenderingHints = FlatUIUtils.setRenderingHints( g );
+
+/*debug
+ g.setColor( Color.gray );
+ g.drawRect( 0, 0, c.getWidth() - 1, c.getHeight() - 1 );
+ g.setColor( Color.orange );
+ g.drawRect( focusRect.x, focusRect.y, focusRect.width - 1, focusRect.height - 1 );
+ g.setColor( Color.magenta );
+ g.drawRect( contentRect.x, contentRect.y, contentRect.width - 1, contentRect.height - 1 );
+ g.setColor( Color.blue );
+ g.drawRect( trackRect.x, trackRect.y, trackRect.width - 1, trackRect.height - 1 );
+ g.setColor( Color.red );
+ g.drawRect( thumbRect.x, thumbRect.y, thumbRect.width - 1, thumbRect.height - 1 );
+ g.setColor( Color.green );
+ g.drawRect( tickRect.x, tickRect.y, tickRect.width - 1, tickRect.height - 1 );
+ g.setColor( Color.red );
+ g.drawRect( labelRect.x, labelRect.y, labelRect.width - 1, labelRect.height - 1 );
+debug*/
super.paint( g, c );
+
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
+ oldRenderingHints = null;
+ }
+
+ @Override
+ public void paintLabels( Graphics g ) {
+ FlatUIUtils.runWithoutRenderingHints( g, oldRenderingHints, () -> {
+ super.paintLabels( g );
+ } );
}
@Override
@@ -201,50 +292,326 @@ public class FlatSliderUI
}
if( coloredTrack != null ) {
- g.setColor( FlatUIUtils.deriveColor( FlatUIUtils.isPermanentFocusOwner( slider ) ? focusColor : (hover ? hoverColor : thumbColor), thumbColor ) );
+ if( slider.getInverted() ) {
+ RoundRectangle2D temp = track;
+ track = coloredTrack;
+ coloredTrack = temp;
+ }
+
+ g.setColor( getTrackValueColor() );
((Graphics2D)g).fill( coloredTrack );
}
- g.setColor( enabled ? trackColor : disabledForeground );
+ g.setColor( enabled ? getTrackColor() : disabledTrackColor );
((Graphics2D)g).fill( track );
}
@Override
public void paintThumb( Graphics g ) {
- g.setColor( FlatUIUtils.deriveColor( slider.isEnabled()
- ? (FlatUIUtils.isPermanentFocusOwner( slider ) ? focusColor : (hover ? hoverColor : thumbColor))
- : disabledForeground,
- thumbColor ) );
+ Color thumbColor = getThumbColor();
+ Color color = stateColor( slider, thumbHover, thumbPressed,
+ thumbColor, disabledThumbColor, null, hoverThumbColor, pressedThumbColor );
+ color = FlatUIUtils.deriveColor( color, thumbColor );
- if( isRoundThumb() )
- g.fillOval( thumbRect.x, thumbRect.y, thumbRect.width, thumbRect.height );
- else {
- double w = thumbRect.width;
- double h = thumbRect.height;
- double wh = w / 2;
+ Color foreground = slider.getForeground();
+ Color borderColor = (thumbBorderColor != null && foreground == defaultForeground)
+ ? stateColor( slider, false, false, thumbBorderColor, disabledThumbBorderColor, focusedThumbBorderColor, null, null )
+ : null;
- Path2D thumb = FlatUIUtils.createPath( 0,0, w,0, w,(h - wh), wh,h, 0,(h - wh) );
+ Color focusedColor = FlatUIUtils.deriveColor( this.focusedColor,
+ (foreground != defaultForeground) ? foreground : focusBaseColor );
+ paintThumb( g, slider, thumbRect, isRoundThumb(), color, borderColor, focusedColor, focusWidth );
+ }
+
+ public static void paintThumb( Graphics g, JSlider slider, Rectangle thumbRect, boolean roundThumb,
+ Color thumbColor, Color thumbBorderColor, Color focusedColor, int focusWidth )
+ {
+ double systemScaleFactor = UIScale.getSystemScaleFactor( (Graphics2D) g );
+ if( systemScaleFactor != 1 && systemScaleFactor != 2 ) {
+ // paint at scale 1x to avoid clipping on right and bottom edges at 125%, 150% or 175%
+ HiDPIUtils.paintAtScale1x( (Graphics2D) g, thumbRect.x, thumbRect.y, thumbRect.width, thumbRect.height,
+ (g2d, x2, y2, width2, height2, scaleFactor) -> {
+ paintThumbImpl( g, slider, x2, y2, width2, height2,
+ roundThumb, thumbColor, thumbBorderColor, focusedColor,
+ (float) (focusWidth * scaleFactor) );
+ } );
+ return;
+ }
+
+ paintThumbImpl( g, slider, thumbRect.x, thumbRect.y, thumbRect.width, thumbRect.height,
+ roundThumb, thumbColor, thumbBorderColor, focusedColor, focusWidth );
+
+ }
+
+ private static void paintThumbImpl( Graphics g, JSlider slider, int x, int y, int width, int height,
+ boolean roundThumb, Color thumbColor, Color thumbBorderColor, Color focusedColor, float focusWidth )
+ {
+ int fw = Math.round( UIScale.scale( focusWidth ) );
+ int tx = x + fw;
+ int ty = y + fw;
+ int tw = width - fw - fw;
+ int th = height - fw - fw;
+ boolean focused = FlatUIUtils.isPermanentFocusOwner( slider );
+
+ if( roundThumb ) {
+ // paint thumb focus border
+ if( focused ) {
+ g.setColor( focusedColor );
+ ((Graphics2D)g).fill( createRoundThumbShape( x, y, width, height ) );
+ }
+
+ if( thumbBorderColor != null ) {
+ // paint thumb border
+ g.setColor( thumbBorderColor );
+ ((Graphics2D)g).fill( createRoundThumbShape( tx, ty, tw, th ) );
+
+ // paint thumb background
+ float lw = UIScale.scale( 1f );
+ g.setColor( thumbColor );
+ ((Graphics2D)g).fill( createRoundThumbShape( tx + lw, ty + lw,
+ tw - lw - lw, th - lw - lw ) );
+ } else {
+ // paint thumb background
+ g.setColor( thumbColor );
+ ((Graphics2D)g).fill( createRoundThumbShape( tx, ty, tw, th ) );
+ }
+ } else {
Graphics2D g2 = (Graphics2D) g.create();
try {
- g2.translate( thumbRect.x, thumbRect.y );
+ g2.translate( x, y );
if( slider.getOrientation() == JSlider.VERTICAL ) {
if( slider.getComponentOrientation().isLeftToRight() ) {
- g2.translate( 0, thumbRect.height );
+ g2.translate( 0, height );
g2.rotate( Math.toRadians( 270 ) );
} else {
- g2.translate( thumbRect.width, 0 );
+ g2.translate( width, 0 );
g2.rotate( Math.toRadians( 90 ) );
}
+
+ // rotate thumb width/height
+ int temp = tw;
+ tw = th;
+ th = temp;
+ }
+
+ // paint thumb focus border
+ if( focused ) {
+ g2.setColor( focusedColor );
+ g2.fill( createDirectionalThumbShape( 0, 0,
+ tw + fw + fw, th + fw + fw + (fw * 0.4142f), fw ) );
+ }
+
+ if( thumbBorderColor != null ) {
+ // paint thumb border
+ g2.setColor( thumbBorderColor );
+ g2.fill( createDirectionalThumbShape( fw, fw, tw, th, 0 ) );
+
+ // paint thumb background
+ float lw = UIScale.scale( 1f );
+ g2.setColor( thumbColor );
+ g2.fill( createDirectionalThumbShape( fw + lw, fw + lw,
+ tw - lw - lw, th - lw - lw - (lw * 0.4142f), 0 ) );
+ } else {
+ // paint thumb background
+ g2.setColor( thumbColor );
+ g2.fill( createDirectionalThumbShape( fw, fw, tw, th, 0 ) );
}
- g2.fill( thumb );
} finally {
g2.dispose();
}
}
}
- private boolean isRoundThumb() {
+ public static Shape createRoundThumbShape( float x, float y, float w, float h ) {
+ if( w == h )
+ return new Ellipse2D.Float( x, y, w, h );
+ else {
+ float arc = Math.min( w, h );
+ return new RoundRectangle2D.Float( x, y, w, h, arc, arc );
+ }
+ }
+
+ public static Shape createDirectionalThumbShape( float x, float y, float w, float h, float arc ) {
+ float wh = w / 2;
+
+ Path2D path = new Path2D.Float();
+ path.moveTo( x + wh, y + h );
+ path.lineTo( x, y + (h - wh) );
+ path.lineTo( x, y + arc );
+ path.quadTo( x, y, x + arc, y );
+ path.lineTo( x + (w - arc), y );
+ path.quadTo( x + w, y, x + w, y + arc );
+ path.lineTo( x + w, y + (h - wh) );
+ path.closePath();
+
+ return path;
+ }
+
+ protected Color getTrackValueColor() {
+ Color foreground = slider.getForeground();
+ return (foreground != defaultForeground) ? foreground : trackValueColor;
+ }
+
+ protected Color getTrackColor() {
+ Color backround = slider.getBackground();
+ return (backround != defaultBackground) ? backround : trackColor;
+ }
+
+ protected Color getThumbColor() {
+ Color foreground = slider.getForeground();
+ return (foreground != defaultForeground) ? foreground : thumbColor;
+ }
+
+ public static Color stateColor( JSlider slider, boolean hover, boolean pressed,
+ Color enabledColor, Color disabledColor, Color focusedColor, Color hoverColor, Color pressedColor )
+ {
+ if( disabledColor != null && !slider.isEnabled() )
+ return disabledColor;
+ if( pressedColor != null && pressed )
+ return pressedColor;
+ if( hoverColor != null && hover )
+ return hoverColor;
+ if( focusedColor != null && FlatUIUtils.isPermanentFocusOwner( slider ) )
+ return focusedColor;
+ return enabledColor;
+ }
+
+ protected boolean isRoundThumb() {
return !slider.getPaintTicks() && !slider.getPaintLabels();
}
+
+ @Override
+ public void setThumbLocation( int x, int y ) {
+ if( !isRoundThumb() ) {
+ // the needle of the directional thumb is painted outside of thumbRect
+ // --> must increase repaint rectangle
+
+ // set new thumb location and compute union of old and new thumb bounds
+ Rectangle r = new Rectangle( thumbRect );
+ thumbRect.setLocation( x, y );
+ SwingUtilities.computeUnion( thumbRect.x, thumbRect.y, thumbRect.width, thumbRect.height, r );
+
+ // increase union rectangle for repaint
+ int extra = (int) Math.ceil( UIScale.scale( focusWidth ) * 0.4142f );
+ if( slider.getOrientation() == JSlider.HORIZONTAL )
+ r.height += extra;
+ else {
+ r.width += extra;
+ if( !slider.getComponentOrientation().isLeftToRight() )
+ r.x -= extra;
+ }
+
+ slider.repaint( r );
+ } else
+ super.setThumbLocation( x, y );
+ }
+
+ //---- class FlatTrackListener --------------------------------------------
+
+ protected class FlatTrackListener
+ extends TrackListener
+ {
+ @Override
+ public void mouseEntered( MouseEvent e ) {
+ setThumbHover( isOverThumb( e ) );
+ super.mouseEntered( e );
+ }
+
+ @Override
+ public void mouseExited( MouseEvent e ) {
+ setThumbHover( false );
+ super.mouseExited( e );
+ }
+
+ @Override
+ public void mouseMoved( MouseEvent e ) {
+ setThumbHover( isOverThumb( e ) );
+ super.mouseMoved( e );
+ }
+
+ @Override
+ public void mousePressed( MouseEvent e ) {
+ setThumbPressed( isOverThumb( e ) );
+
+ if( !slider.isEnabled() )
+ return;
+
+ // use "old" behavior when clicking on track
+ if( UIManager.getBoolean( "Slider.scrollOnTrackClick" ) ) {
+ super.mousePressed( e );
+ return;
+ }
+
+ // "new" behavior set thumb to mouse location when clicking on track
+
+ int x = e.getX();
+ int y = e.getY();
+
+ // clicked on thumb --> let super class do the work
+ calculateGeometry();
+ if( thumbRect.contains( x, y ) ) {
+ super.mousePressed( e );
+ return;
+ }
+
+ if( UIManager.getBoolean( "Slider.onlyLeftMouseButtonDrag" ) &&
+ !SwingUtilities.isLeftMouseButton( e ) )
+ return;
+
+ // move the mouse event coordinates to the center of the thumb
+ int tx = thumbRect.x + (thumbRect.width / 2) - x;
+ int ty = thumbRect.y + (thumbRect.height / 2) - y;
+ e.translatePoint( tx, ty );
+
+ // invoke super mousePressed() to start dragging thumb
+ super.mousePressed( e );
+
+ // move the mouse event coordinates back to current mouse location
+ e.translatePoint( -tx, -ty );
+
+ // invoke mouseDragged() to update thumb location
+ mouseDragged( e );
+
+ setThumbPressed( true );
+ }
+
+ @Override
+ public void mouseReleased( MouseEvent e ) {
+ setThumbPressed( false );
+ super.mouseReleased( e );
+ }
+
+ @Override
+ public void mouseDragged( MouseEvent e ) {
+ super.mouseDragged( e );
+
+ if( isDragging() &&
+ slider.getSnapToTicks() &&
+ slider.isEnabled() &&
+ !UIManager.getBoolean( "Slider.snapToTicksOnReleased" ) )
+ {
+ calculateThumbLocation();
+ slider.repaint();
+ }
+ }
+
+ protected void setThumbHover( boolean hover ) {
+ if( hover != thumbHover ) {
+ thumbHover = hover;
+ slider.repaint( thumbRect );
+ }
+ }
+
+ protected void setThumbPressed( boolean pressed ) {
+ if( pressed != thumbPressed ) {
+ thumbPressed = pressed;
+ slider.repaint( thumbRect );
+ }
+ }
+
+ protected boolean isOverThumb( MouseEvent e ) {
+ return e != null && slider.isEnabled() && thumbRect.contains( e.getX(), e.getY() );
+ }
+ }
}
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 6fd6a0dd..45d30547 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
@@ -69,6 +69,7 @@ import com.formdev.flatlaf.FlatClientProperties;
* @uiDefault Spinner.buttonArrowColor Color
* @uiDefault Spinner.buttonDisabledArrowColor Color
* @uiDefault Spinner.buttonHoverArrowColor Color
+ * @uiDefault Spinner.buttonPressedArrowColor Color
* @uiDefault Spinner.padding Insets
*
* @author Karl Tauber
@@ -90,6 +91,7 @@ public class FlatSpinnerUI
protected Color buttonArrowColor;
protected Color buttonDisabledArrowColor;
protected Color buttonHoverArrowColor;
+ protected Color buttonPressedArrowColor;
protected Insets padding;
public static ComponentUI createUI( JComponent c ) {
@@ -114,6 +116,7 @@ public class FlatSpinnerUI
buttonArrowColor = UIManager.getColor( "Spinner.buttonArrowColor" );
buttonDisabledArrowColor = UIManager.getColor( "Spinner.buttonDisabledArrowColor" );
buttonHoverArrowColor = UIManager.getColor( "Spinner.buttonHoverArrowColor" );
+ buttonPressedArrowColor = UIManager.getColor( "Spinner.buttonPressedArrowColor" );
padding = UIManager.getInsets( "Spinner.padding" );
// scale
@@ -134,6 +137,7 @@ public class FlatSpinnerUI
buttonArrowColor = null;
buttonDisabledArrowColor = null;
buttonHoverArrowColor = null;
+ buttonPressedArrowColor = null;
padding = null;
MigLayoutVisualPadding.uninstall( spinner );
@@ -244,7 +248,7 @@ public class FlatSpinnerUI
private Component createArrowButton( int direction, String name ) {
FlatArrowButton button = new FlatArrowButton( direction, arrowType, buttonArrowColor,
- buttonDisabledArrowColor, buttonHoverArrowColor, null );
+ buttonDisabledArrowColor, buttonHoverArrowColor, null, buttonPressedArrowColor, null );
button.setName( name );
button.setYOffset( (direction == SwingConstants.NORTH) ? 1 : -1 );
if( direction == SwingConstants.NORTH )
@@ -264,7 +268,7 @@ public class FlatSpinnerUI
FlatUIUtils.paintParentBackground( g, c );
Graphics2D g2 = (Graphics2D) g;
- FlatUIUtils.setRenderingHints( g2 );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g2 );
int width = c.getWidth();
int height = c.getHeight();
@@ -303,6 +307,8 @@ public class FlatSpinnerUI
}
paint( g, c );
+
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
//---- class Handler ------------------------------------------------------
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSplitPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSplitPaneUI.java
index c8e71c59..1bc4a5a5 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSplitPaneUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSplitPaneUI.java
@@ -20,7 +20,6 @@ import java.awt.Color;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Graphics;
-import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
@@ -53,6 +52,7 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault SplitPane.continuousLayout boolean
* @uiDefault SplitPaneDivider.oneTouchArrowColor Color
* @uiDefault SplitPaneDivider.oneTouchHoverArrowColor Color
+ * @uiDefault SplitPaneDivider.oneTouchPressedArrowColor Color
* @uiDefault SplitPaneDivider.style String grip (default) or plain
* @uiDefault SplitPaneDivider.gripColor Color
* @uiDefault SplitPaneDivider.gripDotCount int
@@ -68,6 +68,7 @@ public class FlatSplitPaneUI
private Boolean continuousLayout;
protected Color oneTouchArrowColor;
protected Color oneTouchHoverArrowColor;
+ protected Color oneTouchPressedArrowColor;
public static ComponentUI createUI( JComponent c ) {
return new FlatSplitPaneUI();
@@ -81,12 +82,22 @@ public class FlatSplitPaneUI
// used in there on LaF switching
oneTouchArrowColor = UIManager.getColor( "SplitPaneDivider.oneTouchArrowColor" );
oneTouchHoverArrowColor = UIManager.getColor( "SplitPaneDivider.oneTouchHoverArrowColor" );
+ oneTouchPressedArrowColor = UIManager.getColor( "SplitPaneDivider.oneTouchPressedArrowColor" );
super.installDefaults();
continuousLayout = (Boolean) UIManager.get( "SplitPane.continuousLayout" );
}
+ @Override
+ protected void uninstallDefaults() {
+ super.uninstallDefaults();
+
+ oneTouchArrowColor = null;
+ oneTouchHoverArrowColor = null;
+ oneTouchPressedArrowColor = null;
+ }
+
@Override
public boolean isContinuousLayout() {
return super.isContinuousLayout() || (continuousLayout != null && Boolean.TRUE.equals( continuousLayout ));
@@ -148,10 +159,12 @@ public class FlatSplitPaneUI
if( "plain".equals( style ) )
return;
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
g.setColor( gripColor );
paintGrip( g, 0, 0, getWidth(), getHeight() );
+
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
protected void paintGrip( Graphics g, int x, int y, int width, int height ) {
@@ -184,7 +197,8 @@ public class FlatSplitPaneUI
protected final boolean left;
protected FlatOneTouchButton( boolean left ) {
- super( SwingConstants.NORTH, arrowType, oneTouchArrowColor, null, oneTouchHoverArrowColor, null );
+ super( SwingConstants.NORTH, arrowType, oneTouchArrowColor, null,
+ oneTouchHoverArrowColor, null, oneTouchPressedArrowColor, null );
setCursor( Cursor.getPredefinedCursor( Cursor.DEFAULT_CURSOR ) );
ToolTipManager.sharedInstance().registerComponent( this );
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 013f397d..1705c909 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
@@ -221,11 +221,15 @@ public class FlatTabbedPaneUI
private Container leadingComponent;
private Container trailingComponent;
+ private Dimension scrollBackwardButtonPrefSize;
+
private Handler handler;
private boolean blockRollover;
private boolean rolloverTabClose;
private boolean pressedTabClose;
+ private Object[] oldRenderingHints;
+
public static ComponentUI createUI( JComponent c ) {
return new FlatTabbedPaneUI();
}
@@ -362,11 +366,6 @@ public class FlatTabbedPaneUI
protected void installComponents() {
super.installComponents();
- // create tab close button
- tabCloseButton = new TabCloseButton();
- tabCloseButton.setVisible( false );
- tabPane.add( tabCloseButton );
-
// find scrollable tab viewport
tabViewport = null;
if( isScrollTabLayout() ) {
@@ -393,11 +392,7 @@ public class FlatTabbedPaneUI
super.uninstallComponents();
- if( tabCloseButton != null ) {
- tabPane.remove( tabCloseButton );
- tabCloseButton = null;
- }
-
+ tabCloseButton = null;
tabViewport = null;
}
@@ -693,6 +688,26 @@ public class FlatTabbedPaneUI
return Math.max( tabHeight, scale( clientPropertyInt( tabPane, TABBED_PANE_TAB_HEIGHT, this.tabHeight ) ) );
}
+ @Override
+ protected int calculateMaxTabWidth( int tabPlacement ) {
+ return hideTabArea() ? 0 : super.calculateMaxTabWidth( tabPlacement );
+ }
+
+ @Override
+ protected int calculateMaxTabHeight( int tabPlacement ) {
+ return hideTabArea() ? 0 : super.calculateMaxTabHeight( tabPlacement );
+ }
+
+ @Override
+ protected int calculateTabAreaWidth( int tabPlacement, int vertRunCount, int maxTabWidth ) {
+ return hideTabArea() ? 0 : super.calculateTabAreaWidth( tabPlacement, vertRunCount, maxTabWidth );
+ }
+
+ @Override
+ protected int calculateTabAreaHeight( int tabPlacement, int horizRunCount, int maxTabHeight ) {
+ return hideTabArea() ? 0 : super.calculateTabAreaHeight( tabPlacement, horizRunCount, maxTabHeight );
+ }
+
@Override
protected Insets getTabInsets( int tabPlacement, int tabIndex ) {
Object value = getTabClientProperty( tabIndex, TABBED_PANE_TAB_INSETS );
@@ -752,7 +767,7 @@ public class FlatTabbedPaneUI
*/
@Override
protected Insets getContentBorderInsets( int tabPlacement ) {
- if( contentSeparatorHeight == 0 || !clientPropertyBoolean( tabPane, TABBED_PANE_SHOW_CONTENT_SEPARATOR, true ) )
+ if( hideTabArea() || contentSeparatorHeight == 0 || !clientPropertyBoolean( tabPane, TABBED_PANE_SHOW_CONTENT_SEPARATOR, true ) )
return new Insets( 0, 0, 0, 0 );
boolean hasFullBorder = clientPropertyBoolean( tabPane, TABBED_PANE_HAS_FULL_BORDER, this.hasFullBorder );
@@ -780,13 +795,19 @@ public class FlatTabbedPaneUI
@Override
public void update( Graphics g, JComponent c ) {
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
+ oldRenderingHints = FlatUIUtils.setRenderingHints( g );
super.update( g, c );
+
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
+ oldRenderingHints = null;
}
@Override
public void paint( Graphics g, JComponent c ) {
+ if( hideTabArea() )
+ return;
+
ensureCurrentLayout();
int tabPlacement = tabPane.getTabPlacement();
@@ -860,27 +881,29 @@ public class FlatTabbedPaneUI
{
g.setFont( font );
- // html
- View view = getTextViewForTab( tabIndex );
- if( view != null ) {
- view.paint( g, textRect );
- return;
- }
+ FlatUIUtils.runWithoutRenderingHints( g, oldRenderingHints, () -> {
+ // html
+ View view = getTextViewForTab( tabIndex );
+ if( view != null ) {
+ view.paint( g, textRect );
+ return;
+ }
- // plain text
- Color color;
- if( tabPane.isEnabled() && tabPane.isEnabledAt( tabIndex ) ) {
- color = tabPane.getForegroundAt( tabIndex );
- if( isSelected && (color instanceof UIResource) && selectedForeground != null )
- color = selectedForeground;
- } else
- color = disabledForeground;
+ // plain text
+ Color color;
+ if( tabPane.isEnabled() && tabPane.isEnabledAt( tabIndex ) ) {
+ color = tabPane.getForegroundAt( tabIndex );
+ if( isSelected && (color instanceof UIResource) && selectedForeground != null )
+ color = selectedForeground;
+ } else
+ color = disabledForeground;
- int mnemIndex = FlatLaf.isShowMnemonics() ? tabPane.getDisplayedMnemonicIndexAt( tabIndex ) : -1;
+ int mnemIndex = FlatLaf.isShowMnemonics() ? tabPane.getDisplayedMnemonicIndexAt( tabIndex ) : -1;
- g.setColor( color );
- FlatUIUtils.drawStringUnderlineCharAt( tabPane, g, title, mnemIndex,
- textRect.x, textRect.y + metrics.getAscent() );
+ g.setColor( color );
+ FlatUIUtils.drawStringUnderlineCharAt( tabPane, g, title, mnemIndex,
+ textRect.x, textRect.y + metrics.getAscent() );
+ } );
}
@Override
@@ -911,6 +934,12 @@ public class FlatTabbedPaneUI
}
protected void paintTabCloseButton( Graphics g, int tabIndex, int x, int y, int w, int h ) {
+ // create tab close button
+ if( tabCloseButton == null ) {
+ tabCloseButton = new TabCloseButton();
+ tabCloseButton.setVisible( false );
+ }
+
// update state of tab close button
boolean rollover = (tabIndex == getRolloverTab());
ButtonModel bm = tabCloseButton.getModel();
@@ -1226,6 +1255,13 @@ public class FlatTabbedPaneUI
return UIManager.getBoolean( "ScrollPane.smoothScrolling" );
}
+ protected boolean hideTabArea() {
+ return tabPane.getTabCount() == 1 &&
+ leadingComponent == null &&
+ trailingComponent == null &&
+ clientPropertyBoolean( tabPane, TABBED_PANE_HIDE_TAB_AREA_WITH_ONE_TAB, false );
+ }
+
protected int getTabsPopupPolicy() {
Object value = tabPane.getClientProperty( TABBED_PANE_TABS_POPUP_POLICY );
@@ -1836,33 +1872,78 @@ public class FlatTabbedPaneUI
lastMouseY = e.getY();
double preciseWheelRotation = e.getPreciseWheelRotation();
+ boolean isPreciseWheel = (preciseWheelRotation != 0 && preciseWheelRotation != e.getWheelRotation());
int amount = (int) (maxTabHeight * preciseWheelRotation);
+ // scroll at least one pixel to avoid "hanging"
+ if( amount == 0 ) {
+ if( preciseWheelRotation > 0 )
+ amount = 1;
+ else if( preciseWheelRotation < 0 )
+ amount = -1;
+ }
+
// compute new view position
Point viewPosition = (targetViewPosition != null)
? targetViewPosition
: tabViewport.getViewPosition();
Dimension viewSize = tabViewport.getViewSize();
+ boolean horizontal = isHorizontalTabPlacement();
int x = viewPosition.x;
int y = viewPosition.y;
- int tabPlacement = tabPane.getTabPlacement();
- if( tabPlacement == TOP || tabPlacement == BOTTOM ) {
+ if( horizontal )
x += isLeftToRight() ? amount : -amount;
- x = Math.min( Math.max( x, 0 ), viewSize.width - tabViewport.getWidth() );
- } else {
+ else
y += amount;
- y = Math.min( Math.max( y, 0 ), viewSize.height - tabViewport.getHeight() );
+
+ // In case of having scroll buttons on both sides and hiding disabled buttons,
+ // the viewport is moved when the scroll backward button becomes visible
+ // or is hidden. For non-precise wheel scrolling (e.g. mouse wheel on Windows),
+ // this is no problem because the scroll amount is at least a tab-height.
+ // For precise wheel scrolling (e.g. touchpad on Mac), this is a problem
+ // because it is possible to scroll by a fraction of a tab-height.
+ if( isPreciseWheel &&
+ getScrollButtonsPlacement() == BOTH &&
+ getScrollButtonsPolicy() == AS_NEEDED_SINGLE &&
+ (isLeftToRight() || !horizontal) || // scroll buttons are hidden in right-to-left
+ scrollBackwardButtonPrefSize != null )
+ {
+ // special cases for scrolling with touchpad or high-resolution wheel:
+ // 1. if view is at 0/0 and scrolling right/down, then the scroll backward button
+ // becomes visible, which moves the viewport right/down by the width/height of
+ // the button --> add button width/height to new view position so that
+ // tabs seems to stay in place at screen
+ // 2. if scrolling left/up to the beginning, then the scroll backward button
+ // becomes hidden, which moves the viewport left/up by the width/height of
+ // the button --> set new view position to 0/0 so that
+ // tabs seems to stay in place at screen
+ if( horizontal ) {
+ //
+ if( viewPosition.x == 0 && x > 0 )
+ x += scrollBackwardButtonPrefSize.width;
+ else if( amount < 0 && x <= scrollBackwardButtonPrefSize.width )
+ x = 0;
+ } else {
+ if( viewPosition.y == 0 && y > 0 )
+ y += scrollBackwardButtonPrefSize.height;
+ else if( amount < 0 && y <= scrollBackwardButtonPrefSize.height )
+ y = 0;
+ }
}
+ // limit new view position
+ if( horizontal )
+ x = Math.min( Math.max( x, 0 ), viewSize.width - tabViewport.getWidth() );
+ else
+ y = Math.min( Math.max( y, 0 ), viewSize.height - tabViewport.getHeight() );
+
// check whether view position has changed
Point newViewPosition = new Point( x, y );
if( newViewPosition.equals( viewPosition ) )
return;
// update view position
- if( preciseWheelRotation != 0 &&
- preciseWheelRotation != e.getWheelRotation() )
- {
+ if( isPreciseWheel ) {
// do not use animation for precise scrolling (e.g. with trackpad)
// stop running animation (if any)
@@ -2075,8 +2156,10 @@ public class FlatTabbedPaneUI
public void mouseReleased( MouseEvent e ) {
if( isPressedTabClose() ) {
updateRollover( e );
- if( pressedTabIndex >= 0 && pressedTabIndex == getRolloverTab() )
+ if( pressedTabIndex >= 0 && pressedTabIndex == getRolloverTab() ) {
+ restoreTabToolTip();
closeTab( pressedTabIndex );
+ }
} else
mouseDelegate.mouseReleased( e );
@@ -2154,7 +2237,8 @@ public class FlatTabbedPaneUI
if( lastTipTabIndex < 0 )
return;
- tabPane.setToolTipTextAt( lastTipTabIndex, lastTip );
+ if( lastTipTabIndex < tabPane.getTabCount() )
+ tabPane.setToolTipTextAt( lastTipTabIndex, lastTip );
lastTip = null;
lastTipTabIndex = -1;
}
@@ -2193,6 +2277,7 @@ public class FlatTabbedPaneUI
case TABBED_PANE_SHOW_TAB_SEPARATORS:
case TABBED_PANE_SHOW_CONTENT_SEPARATOR:
case TABBED_PANE_HAS_FULL_BORDER:
+ case TABBED_PANE_HIDE_TAB_AREA_WITH_ONE_TAB:
case TABBED_PANE_MINIMUM_TAB_WIDTH:
case TABBED_PANE_MAXIMUM_TAB_WIDTH:
case TABBED_PANE_TAB_HEIGHT:
@@ -2858,6 +2943,8 @@ public class FlatTabbedPaneUI
moreTabsButton.setVisible( moreTabsButtonVisible );
backwardButton.setVisible( backwardButtonVisible );
forwardButton.setVisible( forwardButtonVisible );
+
+ scrollBackwardButtonPrefSize = backwardButton.getPreferredSize();
}
}
}
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 c311da68..a42d5681 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
@@ -31,6 +31,7 @@ import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
+import javax.swing.ScrollPaneConstants;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.border.Border;
@@ -98,10 +99,13 @@ public class FlatTableHeaderUI
@Override
public void paint( Graphics g, JComponent c ) {
+ if( header.getColumnModel().getColumnCount() <= 0 )
+ return;
+
// do not paint borders if JTableHeader.setDefaultRenderer() was used
TableCellRenderer defaultRenderer = header.getDefaultRenderer();
boolean paintBorders = isSystemDefaultRenderer( defaultRenderer );
- if( !paintBorders && header.getColumnModel().getColumnCount() > 0 ) {
+ if( !paintBorders ) {
// check whether the renderer delegates to the system default renderer
Component rendererComponent = defaultRenderer.getTableCellRendererComponent(
header.getTable(), "", false, false, -1, 0 );
@@ -137,7 +141,7 @@ public class FlatTableHeaderUI
rendererClassName.equals( "sun.swing.FilePane$AlignableTableHeaderRenderer" );
}
- private void paintColumnBorders( Graphics g, JComponent c ) {
+ protected void paintColumnBorders( Graphics g, JComponent c ) {
int width = c.getWidth();
int height = c.getHeight();
float lineWidth = UIScale.scale( 1f );
@@ -145,6 +149,9 @@ public class FlatTableHeaderUI
float bottomLineIndent = lineWidth * 3;
TableColumnModel columnModel = header.getColumnModel();
int columnCount = columnModel.getColumnCount();
+ int sepCount = columnCount;
+ if( hideLastVerticalLine() )
+ sepCount--;
Graphics2D g2 = (Graphics2D) g.create();
try {
@@ -157,23 +164,30 @@ public class FlatTableHeaderUI
// paint column separator lines
g2.setColor( separatorColor );
- int sepCount = columnCount;
- if( header.getTable() != null && header.getTable().getAutoResizeMode() != JTable.AUTO_RESIZE_OFF && !isVerticalScrollBarVisible() )
- sepCount--;
+ float y = topLineIndent;
+ float h = height - bottomLineIndent;
if( header.getComponentOrientation().isLeftToRight() ) {
int x = 0;
for( int i = 0; i < sepCount; i++ ) {
x += columnModel.getColumn( i ).getWidth();
- g2.fill( new Rectangle2D.Float( x - lineWidth, topLineIndent, lineWidth, height - bottomLineIndent ) );
+ g2.fill( new Rectangle2D.Float( x - lineWidth, y, lineWidth, h ) );
}
+
+ // paint trailing separator (on right side)
+ if( !hideTrailingVerticalLine() )
+ g2.fill( new Rectangle2D.Float( header.getWidth() - lineWidth, y, lineWidth, h ) );
} else {
- int x = width;
+ Rectangle cellRect = header.getHeaderRect( 0 );
+ int x = cellRect.x + cellRect.width;
for( int i = 0; i < sepCount; i++ ) {
x -= columnModel.getColumn( i ).getWidth();
- g2.fill( new Rectangle2D.Float( x - (i < sepCount - 1 ? lineWidth : 0),
- topLineIndent, lineWidth, height - bottomLineIndent ) );
+ g2.fill( new Rectangle2D.Float( x - (i < sepCount - 1 ? lineWidth : 0), y, lineWidth, h ) );
}
+
+ // paint trailing separator (on left side)
+ if( !hideTrailingVerticalLine() )
+ g2.fill( new Rectangle2D.Float( 0, y, lineWidth, h ) );
}
} finally {
g2.dispose();
@@ -230,20 +244,30 @@ public class FlatTableHeaderUI
return size;
}
- private boolean isVerticalScrollBarVisible() {
- JScrollPane scrollPane = getScrollPane();
- return (scrollPane != null && scrollPane.getVerticalScrollBar() != null)
- ? scrollPane.getVerticalScrollBar().isVisible()
- : false;
+ protected boolean hideLastVerticalLine() {
+ Container viewport = header.getParent();
+ Container viewportParent = (viewport != null) ? viewport.getParent() : null;
+ if( !(viewportParent instanceof JScrollPane) )
+ return false;
+
+ Rectangle cellRect = header.getHeaderRect( header.getColumnModel().getColumnCount() - 1 );
+
+ // using component orientation of scroll pane here because it is also used in FlatTableUI
+ JScrollPane scrollPane = (JScrollPane) viewportParent;
+ return scrollPane.getComponentOrientation().isLeftToRight()
+ ? cellRect.x + cellRect.width >= viewport.getWidth()
+ : cellRect.x <= 0;
}
- private JScrollPane getScrollPane() {
- Container parent = header.getParent();
- if( parent == null )
- return null;
+ protected boolean hideTrailingVerticalLine() {
+ Container viewport = header.getParent();
+ Container viewportParent = (viewport != null) ? viewport.getParent() : null;
+ if( !(viewportParent instanceof JScrollPane) )
+ return false;
- parent = parent.getParent();
- return (parent instanceof JScrollPane) ? (JScrollPane) parent : null;
+ JScrollPane scrollPane = (JScrollPane) viewportParent;
+ return viewport == scrollPane.getColumnHeader() &&
+ scrollPane.getCorner( ScrollPaneConstants.UPPER_TRAILING_CORNER ) == null;
}
//---- class FlatTableCellHeaderRenderer ----------------------------------
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableUI.java
index 51aff9ca..385f7f1f 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableUI.java
@@ -17,17 +17,23 @@
package com.formdev.flatlaf.ui;
import java.awt.Color;
+import java.awt.Container;
import java.awt.Dimension;
import java.awt.EventQueue;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
-import javax.swing.JCheckBox;
+import java.awt.geom.Rectangle2D;
import javax.swing.JComponent;
+import javax.swing.JScrollPane;
+import javax.swing.JViewport;
import javax.swing.LookAndFeel;
+import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicTableUI;
-import javax.swing.table.TableCellRenderer;
+import com.formdev.flatlaf.util.Graphics2DProxy;
import com.formdev.flatlaf.util.UIScale;
/**
@@ -129,12 +135,6 @@ public class FlatTableUI
oldIntercellSpacing = table.getIntercellSpacing();
table.setIntercellSpacing( intercellSpacing );
}
-
- // checkbox is non-opaque in FlatLaf and therefore would not paint selection
- // --> make checkbox renderer opaque (but opaque in Metal or Windows LaF)
- TableCellRenderer booleanRenderer = table.getDefaultRenderer( Boolean.class );
- if( booleanRenderer instanceof JCheckBox )
- ((JCheckBox)booleanRenderer).setOpaque( true );
}
@Override
@@ -203,4 +203,94 @@ public class FlatTableUI
table.setSelectionForeground( selectionInactiveForeground );
}
}
+
+ @Override
+ public void paint( Graphics g, JComponent c ) {
+ boolean horizontalLines = table.getShowHorizontalLines();
+ boolean verticalLines = table.getShowVerticalLines();
+ if( horizontalLines || verticalLines ) {
+ // fix grid painting issues in BasicTableUI
+ // - do not paint last vertical grid line if line is on right edge of scroll pane
+ // - fix unstable grid line thickness when scaled at 125%, 150%, 175%, 225%, ...
+ // which paints either 1px or 2px lines depending on location
+
+ boolean hideLastVerticalLine = hideLastVerticalLine();
+ int tableWidth = table.getWidth();
+
+ double systemScaleFactor = UIScale.getSystemScaleFactor( (Graphics2D) g );
+ double lineThickness = (1. / systemScaleFactor) * (int) systemScaleFactor;
+
+ // Java 8 uses drawLine() to paint grid lines
+ // Java 9+ uses fillRect() to paint grid lines
+ g = new Graphics2DProxy( (Graphics2D) g ) {
+ @Override
+ public void drawLine( int x1, int y1, int x2, int y2 ) {
+ // do not paint last vertical line
+ if( hideLastVerticalLine && verticalLines &&
+ x1 == x2 && y1 == 0 && x1 == tableWidth - 1 &&
+ wasInvokedFromPaintGrid() )
+ return;
+
+ super.drawLine( x1, y1, x2, y2 );
+ }
+
+ @Override
+ public void fillRect( int x, int y, int width, int height ) {
+ // do not paint last vertical line
+ if( hideLastVerticalLine && verticalLines &&
+ width == 1 && y == 0 && x == tableWidth - 1 &&
+ wasInvokedFromPaintGrid() )
+ return;
+
+ // reduce line thickness to avoid unstable painted line thickness
+ if( lineThickness != 1 ) {
+ if( horizontalLines && height == 1 && wasInvokedFromPaintGrid() ) {
+ super.fill( new Rectangle2D.Double( x, y, width, lineThickness ) );
+ return;
+ }
+ if( verticalLines && width == 1 && y == 0 && wasInvokedFromPaintGrid() ) {
+ super.fill( new Rectangle2D.Double( x, y, lineThickness, height ) );
+ return;
+ }
+ }
+
+ super.fillRect( x, y, width, height );
+ }
+
+ private boolean wasInvokedFromPaintGrid() {
+ StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
+ for( int i = 0; i < 10 || i < stackTrace.length; i++ ) {
+ if( "javax.swing.plaf.basic.BasicTableUI".equals( stackTrace[i].getClassName() ) &&
+ "paintGrid".equals( stackTrace[i].getMethodName() ) )
+ return true;
+ }
+ return false;
+ }
+ };
+ }
+
+ super.paint( g, c );
+ }
+
+ protected boolean hideLastVerticalLine() {
+ Container viewport = SwingUtilities.getUnwrappedParent( table );
+ Container viewportParent = (viewport != null) ? viewport.getParent() : null;
+ if( !(viewportParent instanceof JScrollPane) )
+ return false;
+
+ // do not hide last vertical line if table is smaller than viewport
+ if( table.getX() + table.getWidth() < viewport.getWidth() )
+ return false;
+
+ // in left-to-right:
+ // - do not hide last vertical line if table used as row header in scroll pane
+ // in right-to-left:
+ // - hide last vertical line if table used as row header in scroll pane
+ // - do not hide last vertical line if table is in center and scroll pane has row header
+ JScrollPane scrollPane = (JScrollPane) viewportParent;
+ JViewport rowHeader = scrollPane.getRowHeader();
+ return scrollPane.getComponentOrientation().isLeftToRight()
+ ? (viewport != rowHeader)
+ : (viewport == rowHeader || rowHeader == null);
+ }
}
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 ae66cd30..572a0298 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
@@ -39,6 +39,7 @@ import javax.swing.text.Caret;
import javax.swing.text.JTextComponent;
import com.formdev.flatlaf.FlatClientProperties;
import com.formdev.flatlaf.util.HiDPIUtils;
+import com.formdev.flatlaf.util.JavaCompatibility;
/**
* Provides the Flat LaF UI delegate for {@link javax.swing.JTextField}.
@@ -213,7 +214,9 @@ public class FlatTextFieldUI
// paint placeholder
g.setColor( placeholderForeground );
- FlatUIUtils.drawString( c, g, (String) placeholder, x, y );
+ String clippedPlaceholder = JavaCompatibility.getClippedString( jc, fm,
+ (String) placeholder, c.getWidth() - insets.left - insets.right );
+ FlatUIUtils.drawString( c, g, clippedPlaceholder, x, y );
}
@Override
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java
index 22dedbdc..2d1a5f24 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java
@@ -146,10 +146,17 @@ public class FlatToggleButtonUI
int height = c.getHeight();
int width = c.getWidth();
boolean selected = ((AbstractButton)c).isSelected();
+ Color enabledColor = selected ? clientPropertyColor( c, TAB_BUTTON_SELECTED_BACKGROUND, tabSelectedBackground ) : null;
+
+ // use component background if explicitly set
+ if( enabledColor == null ) {
+ Color bg = c.getBackground();
+ if( isCustomBackground( bg ) )
+ enabledColor = bg;
+ }
// paint background
- Color background = buttonStateColor( c,
- selected ? clientPropertyColor( c, TAB_BUTTON_SELECTED_BACKGROUND, tabSelectedBackground ) : null,
+ Color background = buttonStateColor( c, enabledColor,
null, tabFocusBackground, tabHoverBackground, null );
if( background != null ) {
g.setColor( background );
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarSeparatorUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarSeparatorUI.java
index 8d0fa657..d30eb30c 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarSeparatorUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarSeparatorUI.java
@@ -106,13 +106,15 @@ public class FlatToolBarSeparatorUI
float lineWidth = scale( 1f );
float offset = scale( 2f );
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
g.setColor( separatorColor );
if( isVertical( c ) )
((Graphics2D)g).fill( new Rectangle2D.Float( Math.round( (width - lineWidth) / 2f ), offset, lineWidth, height - (offset * 2) ) );
else
((Graphics2D)g).fill( new Rectangle2D.Float( offset, Math.round( (height - lineWidth) / 2f ), width - (offset * 2), lineWidth ) );
+
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
private boolean isVertical( JComponent c ) {
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolTipUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolTipUI.java
index e900b966..a4be7a4d 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolTipUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolTipUI.java
@@ -116,7 +116,6 @@ public class FlatToolTipUI
FontMetrics fm = c.getFontMetrics( c.getFont() );
Insets insets = c.getInsets();
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
g.setColor( c.getForeground() );
List lines = StringUtils.split( ((JToolTip)c).getTipText(), '\n' );
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 4527270a..3e515ec1 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
@@ -16,6 +16,8 @@
package com.formdev.flatlaf.ui;
+import static com.formdev.flatlaf.FlatClientProperties.*;
+
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
@@ -26,7 +28,9 @@ import java.awt.event.MouseListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.CellRendererPane;
+import javax.swing.Icon;
import javax.swing.JComponent;
+import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.LookAndFeel;
import javax.swing.SwingUtilities;
@@ -145,9 +149,6 @@ public class FlatTreeUI
@Override
protected MouseListener createMouseListener() {
- if( !wideSelection )
- return super.createMouseListener();
-
return new BasicTreeUI.MouseHandler() {
@Override
public void mousePressed( MouseEvent e ) {
@@ -165,7 +166,7 @@ public class FlatTreeUI
}
private MouseEvent handleWideMouseEvent( MouseEvent e ) {
- if( !tree.isEnabled() || !SwingUtilities.isLeftMouseButton( e ) || e.isConsumed() )
+ if( !isWideSelection() || !tree.isEnabled() || !SwingUtilities.isLeftMouseButton( e ) || e.isConsumed() )
return e;
int x = e.getX();
@@ -192,18 +193,26 @@ public class FlatTreeUI
@Override
protected PropertyChangeListener createPropertyChangeListener() {
- if( !wideSelection )
- return super.createPropertyChangeListener();
-
return new BasicTreeUI.PropertyChangeHandler() {
@Override
public void propertyChange( PropertyChangeEvent e ) {
super.propertyChange( e );
- if( e.getSource() == tree && e.getPropertyName() == "dropLocation" ) {
- JTree.DropLocation oldValue = (JTree.DropLocation) e.getOldValue();
- repaintWideDropLocation( oldValue );
- repaintWideDropLocation( tree.getDropLocation() );
+ if( e.getSource() == tree ) {
+ switch( e.getPropertyName() ) {
+ case TREE_WIDE_SELECTION:
+ case TREE_PAINT_SELECTION:
+ tree.repaint();
+ break;
+
+ case "dropLocation":
+ if( isWideSelection() ) {
+ JTree.DropLocation oldValue = (JTree.DropLocation) e.getOldValue();
+ repaintWideDropLocation( oldValue );
+ repaintWideDropLocation( tree.getDropLocation() );
+ }
+ break;
+ }
}
}
@@ -227,34 +236,22 @@ public class FlatTreeUI
TreePath path, int row, boolean isExpanded, boolean hasBeenExpanded, boolean isLeaf )
{
boolean isEditing = (editingComponent != null && editingRow == row);
- boolean hasFocus = FlatUIUtils.isPermanentFocusOwner( tree );
- boolean cellHasFocus = hasFocus && (row == getLeadSelectionRow());
boolean isSelected = tree.isRowSelected( row );
boolean isDropRow = isDropRow( row );
+ boolean needsSelectionPainting = (isSelected || isDropRow) && isPaintSelection();
+
+ // do not paint row if editing, except if selection needs painted
+ if( isEditing && !needsSelectionPainting )
+ return;
+
+ boolean hasFocus = FlatUIUtils.isPermanentFocusOwner( tree );
+ boolean cellHasFocus = hasFocus && (row == getLeadSelectionRow());
// if tree is used as cell renderer in another component (e.g. in Rhino JavaScript debugger),
// check whether that component is focused to get correct selection colors
if( !hasFocus && isSelected && tree.getParent() instanceof CellRendererPane )
hasFocus = FlatUIUtils.isPermanentFocusOwner( tree.getParent().getParent() );
- // wide selection background
- if( wideSelection && (isSelected || isDropRow) ) {
- // fill background
- g.setColor( isDropRow
- ? UIManager.getColor( "Tree.dropCellBackground" )
- : (hasFocus ? selectionBackground : selectionInactiveBackground) );
- g.fillRect( 0, bounds.y, tree.getWidth(), bounds.height );
-
- // paint expand/collapse icon
- if( shouldPaintExpandControl( path, row, isExpanded, hasBeenExpanded, isLeaf ) ) {
- paintExpandControl( g, clipBounds, insets, bounds,
- path, row, isExpanded, hasBeenExpanded, isLeaf );
- }
- }
-
- if( isEditing )
- return;
-
// get renderer component
Component rendererComponent = currentCellRenderer.getTreeCellRendererComponent( tree,
path.getLastPathComponent(), isSelected, isExpanded, isLeaf, row, cellHasFocus );
@@ -290,8 +287,51 @@ public class FlatTreeUI
}
}
+ // paint selection background
+ if( needsSelectionPainting ) {
+ // set selection color
+ Color oldColor = g.getColor();
+ g.setColor( isDropRow
+ ? UIManager.getColor( "Tree.dropCellBackground" )
+ : (rendererComponent instanceof DefaultTreeCellRenderer
+ ? ((DefaultTreeCellRenderer)rendererComponent).getBackgroundSelectionColor()
+ : (hasFocus ? selectionBackground : selectionInactiveBackground)) );
+
+ if( isWideSelection() ) {
+ // wide selection
+ g.fillRect( 0, bounds.y, tree.getWidth(), bounds.height );
+
+ // paint expand/collapse icon
+ // (was already painted before, but painted over with wide selection)
+ if( shouldPaintExpandControl( path, row, isExpanded, hasBeenExpanded, isLeaf ) ) {
+ paintExpandControl( g, clipBounds, insets, bounds,
+ path, row, isExpanded, hasBeenExpanded, isLeaf );
+ }
+ } else {
+ // non-wide selection
+ int xOffset = 0;
+ int imageOffset = 0;
+
+ if( rendererComponent instanceof JLabel ) {
+ JLabel label = (JLabel) rendererComponent;
+ Icon icon = label.getIcon();
+ imageOffset = (icon != null && label.getText() != null)
+ ? icon.getIconWidth() + Math.max( label.getIconTextGap() - 1, 0 )
+ : 0;
+ xOffset = label.getComponentOrientation().isLeftToRight() ? imageOffset : 0;
+ }
+
+ g.fillRect( bounds.x + xOffset, bounds.y, bounds.width - imageOffset, bounds.height );
+ }
+
+ // this is actually not necessary because renderer should always set color
+ // before painting, but doing anyway to avoid any side effect (in bad renderers)
+ g.setColor( oldColor );
+ }
+
// paint renderer
- rendererPane.paintComponent( g, rendererComponent, tree, bounds.x, bounds.y, bounds.width, bounds.height, true );
+ if( !isEditing )
+ rendererPane.paintComponent( g, rendererComponent, tree, bounds.x, bounds.y, bounds.width, bounds.height, true );
// restore background selection color and border selection color
if( oldBackgroundSelectionColor != null )
@@ -314,6 +354,14 @@ public class FlatTreeUI
@Override
protected Rectangle getDropLineRect( DropLocation loc ) {
Rectangle r = super.getDropLineRect( loc );
- return wideSelection ? new Rectangle( 0, r.y, tree.getWidth(), r.height ) : r;
+ return isWideSelection() ? new Rectangle( 0, r.y, tree.getWidth(), r.height ) : r;
+ }
+
+ protected boolean isWideSelection() {
+ return clientPropertyBoolean( tree, TREE_WIDE_SELECTION, wideSelection );
+ }
+
+ protected boolean isPaintSelection() {
+ return clientPropertyBoolean( tree, TREE_PAINT_SELECTION, true );
}
}
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 0d8efb20..4030d43a 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
@@ -23,22 +23,23 @@ import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsDevice;
import java.awt.Insets;
import java.awt.KeyboardFocusManager;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Shape;
+import java.awt.Window;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Path2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.util.IdentityHashMap;
import java.util.WeakHashMap;
-import java.util.function.Consumer;
+import java.util.function.Predicate;
import java.util.function.Supplier;
import javax.swing.JComponent;
import javax.swing.JTable;
@@ -175,12 +176,32 @@ public class FlatUIUtils
* Returns whether the given component is the permanent focus owner and
* is in the active window. Used to paint focus indicators.
*/
+ @SuppressWarnings( "unchecked" )
public static boolean isPermanentFocusOwner( Component c ) {
KeyboardFocusManager keyboardFocusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
+
+ if( c instanceof JComponent ) {
+ Object value = ((JComponent)c).getClientProperty( FlatClientProperties.COMPONENT_FOCUS_OWNER );
+ if( value instanceof Predicate ) {
+ return ((Predicate)value).test( (JComponent) c ) &&
+ keyboardFocusManager.getActiveWindow() == SwingUtilities.windowForComponent( c );
+ }
+ }
+
return keyboardFocusManager.getPermanentFocusOwner() == c &&
keyboardFocusManager.getActiveWindow() == SwingUtilities.windowForComponent( c );
}
+ /**
+ * Returns whether the given component is in a window that is in full-screen mode.
+ */
+ public static boolean isFullScreen( Component c ) {
+ GraphicsConfiguration gc = c.getGraphicsConfiguration();
+ GraphicsDevice gd = (gc != null) ? gc.getDevice() : null;
+ Window fullScreenWindow = (gd != null) ? gd.getFullScreenWindow() : null;
+ return (fullScreenWindow != null && fullScreenWindow == SwingUtilities.windowForComponent( c ));
+ }
+
public static Boolean isRoundRect( Component c ) {
return (c instanceof JComponent)
? FlatClientProperties.clientPropertyBooleanStrict(
@@ -227,10 +248,57 @@ public class FlatUIUtils
/**
* Sets rendering hints used for painting.
*/
- public static void setRenderingHints( Graphics2D g ) {
- g.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );
- g.setRenderingHint( RenderingHints.KEY_STROKE_CONTROL,
+ public static Object[] setRenderingHints( Graphics g ) {
+ Graphics2D g2 = (Graphics2D) g;
+ Object[] oldRenderingHints = new Object[] {
+ g2.getRenderingHint( RenderingHints.KEY_ANTIALIASING ),
+ g2.getRenderingHint( RenderingHints.KEY_STROKE_CONTROL ),
+ };
+
+ g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );
+ g2.setRenderingHint( RenderingHints.KEY_STROKE_CONTROL,
MAC_USE_QUARTZ ? RenderingHints.VALUE_STROKE_PURE : RenderingHints.VALUE_STROKE_NORMALIZE );
+
+ return oldRenderingHints;
+ }
+
+ /**
+ * Resets rendering hints previously set with {@link #setRenderingHints}.
+ */
+ public static void resetRenderingHints( Graphics g, Object[] oldRenderingHints ) {
+ Graphics2D g2 = (Graphics2D) g;
+ g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING, oldRenderingHints[0] );
+ g2.setRenderingHint( RenderingHints.KEY_STROKE_CONTROL, oldRenderingHints[1] );
+ }
+
+ /**
+ * Temporary resets rendering hints set with {@link #setRenderingHints}
+ * and runs the given runnable.
+ *
+ * This is intended for painting text while rendering hints are set.
+ *
+ * If text antialiasing is disabled (in OS system settings or via
+ * {@code -Dawt.useSystemAAFontSettings=off}), but general antialiasing is enabled,
+ * then text is still painted using some kind of "grayscale" antialiasing,
+ * which may make the text look bold (depends on font and font size).
+ * To avoid this, temporary disable general antialiasing.
+ * This does not affect text rendering if text antialiasing is enabled (usually the default).
+ */
+ public static void runWithoutRenderingHints( Graphics g, Object[] oldRenderingHints, Runnable runnable ) {
+ if( oldRenderingHints == null ) {
+ runnable.run();
+ return;
+ }
+
+ Graphics2D g2 = (Graphics2D) g;
+ Object[] oldRenderingHints2 = new Object[] {
+ g2.getRenderingHint( RenderingHints.KEY_ANTIALIASING ),
+ g2.getRenderingHint( RenderingHints.KEY_STROKE_CONTROL ),
+ };
+
+ resetRenderingHints( g2, oldRenderingHints );
+ runnable.run();
+ resetRenderingHints( g2, oldRenderingHints2 );
}
public static Color deriveColor( Color color, Color baseColor ) {
@@ -277,7 +345,7 @@ public class FlatUIUtils
float innerArc = arc - (lineWidth * 2);
// reduce outer arc slightly for small arcs to make the curve slightly wider
- if( arc > 0 && arc < UIScale.scale( 10 ) )
+ if( focusWidth > 0 && arc > 0 && arc < UIScale.scale( 10 ) )
outerArc -= UIScale.scale( 2f );
Path2D path = new Path2D.Float( Path2D.WIND_EVEN_ODD );
@@ -506,15 +574,31 @@ public class FlatUIUtils
float x2 = x + width;
float y2 = y + height;
+ // same constant as in java.awt.geom.EllipseIterator.CtrlVal used to paint circles
+ double c = 0.5522847498307933;
+ double ci = 1. - c;
+ double ciTopLeft = arcTopLeft * ci;
+ double ciTopRight = arcTopRight * ci;
+ double ciBottomLeft = arcBottomLeft * ci;
+ double ciBottomRight = arcBottomRight * ci;
+
Path2D rect = new Path2D.Float();
- rect.moveTo( x2 - arcTopRight, y );
- rect.quadTo( x2, y, x2, y + arcTopRight );
- rect.lineTo( x2, y2 - arcBottomRight );
- rect.quadTo( x2, y2, x2 - arcBottomRight, y2 );
- rect.lineTo( x + arcBottomLeft, y2 );
- rect.quadTo( x, y2, x, y2 - arcBottomLeft );
- rect.lineTo( x, y + arcTopLeft );
- rect.quadTo( x, y, x + arcTopLeft, y );
+ rect.moveTo( x2 - arcTopRight, y );
+ rect.curveTo( x2 - ciTopRight, y,
+ x2, y + ciTopRight,
+ x2, y + arcTopRight );
+ rect.lineTo( x2, y2 - arcBottomRight );
+ rect.curveTo( x2, y2 - ciBottomRight,
+ x2 - ciBottomRight, y2,
+ x2 - arcBottomRight, y2 );
+ rect.lineTo( x + arcBottomLeft, y2 );
+ rect.curveTo( x + ciBottomLeft, y2,
+ x, y2 - ciBottomLeft,
+ x, y2 - arcBottomLeft );
+ rect.lineTo( x, y + arcTopLeft );
+ rect.curveTo( x, y + ciTopLeft,
+ x + ciTopLeft, y,
+ x + arcTopLeft, y );
rect.closePath();
return rect;
@@ -604,37 +688,6 @@ public class FlatUIUtils
.computeIfAbsent( key, k -> newInstanceSupplier.get() );
}
- //---- class HoverListener ------------------------------------------------
-
- public static class HoverListener
- extends MouseAdapter
- {
- private final Component repaintComponent;
- private final Consumer hoverChanged;
-
- public HoverListener( Component repaintComponent, Consumer hoverChanged ) {
- this.repaintComponent = repaintComponent;
- this.hoverChanged = hoverChanged;
- }
-
- @Override
- public void mouseEntered( MouseEvent e ) {
- hoverChanged.accept( true );
- repaint();
- }
-
- @Override
- public void mouseExited( MouseEvent e ) {
- hoverChanged.accept( false );
- repaint();
- }
-
- private void repaint() {
- if( repaintComponent != null && repaintComponent.isEnabled() )
- repaintComponent.repaint();
- }
- }
-
//---- class RepaintFocusListener -----------------------------------------
public static class RepaintFocusListener
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 cd1c3784..22821b11 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
@@ -256,6 +256,8 @@ public abstract class FlatWindowResizer
@Override
protected boolean isWindowResizable() {
+ if( FlatUIUtils.isFullScreen( resizeComp ) )
+ return false;
if( window instanceof Frame )
return ((Frame)window).isResizable() && (((Frame)window).getExtendedState() & Frame.MAXIMIZED_BOTH) == 0;
if( window instanceof Dialog )
@@ -429,9 +431,9 @@ public abstract class FlatWindowResizer
protected void paintComponent( Graphics g ) {
super.paintChildren( g );
- // this is necessary because Dialog.setResizable() does not fire events
- if( isDialog() )
- updateVisibility();
+ // for dialogs: necessary because Dialog.setResizable() does not fire events
+ // for frames: necessary because GraphicsDevice.setFullScreenWindow() does not fire events
+ updateVisibility();
/*debug
int width = getWidth();
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/JBRCustomDecorations.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/JBRCustomDecorations.java
index c8abc5a6..e3d68e7d 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/JBRCustomDecorations.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/JBRCustomDecorations.java
@@ -227,7 +227,6 @@ public class JBRCustomDecorations
private final Color defaultActiveBorder = new Color( 0x707070 );
private final Color inactiveLightColor = new Color( 0xaaaaaa );
- private final Color inactiveDarkColor = new Color( 0x3f3f3f );
private boolean colorizationAffectsBorders;
private Color activeColor = defaultActiveBorder;
@@ -273,7 +272,7 @@ public class JBRCustomDecorations
Object colorizationColorBalanceObj = toolkit.getDesktopProperty( "win.dwm.colorizationColorBalance" );
if( colorizationColorBalanceObj instanceof Integer ) {
int colorizationColorBalance = (Integer) colorizationColorBalanceObj;
- if( colorizationColorBalance < 0 )
+ if( colorizationColorBalance < 0 || colorizationColorBalance > 100 )
colorizationColorBalance = 100;
if( colorizationColorBalance == 0 )
@@ -283,9 +282,15 @@ public class JBRCustomDecorations
float alpha = colorizationColorBalance / 100.0f;
float remainder = 1 - alpha;
- int r = Math.round( (colorizationColor.getRed() * alpha + 0xD9 * remainder) );
- int g = Math.round( (colorizationColor.getGreen() * alpha + 0xD9 * remainder) );
- int b = Math.round( (colorizationColor.getBlue() * alpha + 0xD9 * remainder) );
+ int r = Math.round( colorizationColor.getRed() * alpha + 0xD9 * remainder );
+ int g = Math.round( colorizationColor.getGreen() * alpha + 0xD9 * remainder );
+ int b = Math.round( colorizationColor.getBlue() * alpha + 0xD9 * remainder );
+
+ // avoid potential IllegalArgumentException in Color constructor
+ r = Math.min( Math.max( r, 0 ), 255 );
+ g = Math.min( Math.max( g, 0 ), 255 );
+ b = Math.min( Math.max( b, 0 ), 255 );
+
return new Color( r, g, b );
}
return colorizationColor;
@@ -300,7 +305,14 @@ public class JBRCustomDecorations
Window window = SwingUtilities.windowForComponent( c );
boolean active = (window != null) ? window.isActive() : false;
- g.setColor( active ? activeColor : (FlatLaf.isLafDark() ? inactiveDarkColor : inactiveLightColor) );
+ // paint top border
+ // - in light themes
+ // - in dark themes only for active windows if colorization affects borders
+ boolean paintTopBorder = !FlatLaf.isLafDark() || (active && colorizationAffectsBorders);
+ if( !paintTopBorder )
+ return;
+
+ g.setColor( active ? activeColor : inactiveLightColor );
HiDPIUtils.paintAtScale1x( (Graphics2D) g, x, y, width, height, this::paintImpl );
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/AnimatedIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/AnimatedIcon.java
new file mode 100644
index 00000000..da0b0a1a
--- /dev/null
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/AnimatedIcon.java
@@ -0,0 +1,249 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.util;
+
+import java.awt.Component;
+import java.awt.Graphics;
+import javax.swing.Icon;
+import javax.swing.JComponent;
+import com.formdev.flatlaf.util.Animator.Interpolator;
+
+/**
+ * Icon that automatically animates painting on component value changes.
+ *
+ * {@link #getValue(Component)} returns the value of the component.
+ * If the value changes, then {@link #paintIconAnimated(Component, Graphics, int, int, float)}
+ * is invoked multiple times with animated value (from old value to new value).
+ *
+ * Example for an animated icon:
+ *
+ * private class AnimatedMinimalTestIcon
+ * implements AnimatedIcon
+ * {
+ * @Override public int getIconWidth() { return 100; }
+ * @Override public int getIconHeight() { return 20; }
+ *
+ * @Override
+ * public void paintIconAnimated( Component c, Graphics g, int x, int y, float animatedValue ) {
+ * int w = getIconWidth();
+ * int h = getIconHeight();
+ *
+ * g.setColor( Color.red );
+ * g.drawRect( x, y, w - 1, h - 1 );
+ * g.fillRect( x, y, Math.round( w * animatedValue ), h );
+ * }
+ *
+ * @Override
+ * public float getValue( Component c ) {
+ * return ((AbstractButton)c).isSelected() ? 1 : 0;
+ * }
+ * }
+ *
+ * // sample usage
+ * JCheckBox checkBox = new JCheckBox( "test" );
+ * checkBox.setIcon( new AnimatedMinimalTestIcon() );
+ *
+ *
+ * Animation works only if the component passed to {@link #paintIcon(Component, Graphics, int, int)}
+ * is a instance of {@link JComponent}.
+ * A client property is set on the component to store the animation state.
+ *
+ * @author Karl Tauber
+ */
+public interface AnimatedIcon
+ extends Icon
+{
+ @Override
+ public default void paintIcon( Component c, Graphics g, int x, int y ) {
+ AnimationSupport.paintIcon( this, c, g, x, y );
+ }
+
+ /**
+ * Paints the icon for the given animated value.
+ *
+ * @param c the component that this icon belongs to
+ * @param g the graphics context
+ * @param x the x coordinate of the icon
+ * @param y the y coordinate of the icon
+ * @param animatedValue the animated value, which is either equal to what {@link #getValue(Component)}
+ * returned, or somewhere between the previous value and the latest value
+ * that {@link #getValue(Component)} returned
+ */
+ void paintIconAnimated( Component c, Graphics g, int x, int y, float animatedValue );
+
+ /**
+ * Gets the value of the component.
+ *
+ * This can be any value and depends on the component.
+ * If the value changes, then this class animates from the old value to the new one.
+ *
+ * For a toggle button this could be {@code 0} for off and {@code 1} for on.
+ */
+ float getValue( Component c );
+
+ /**
+ * Returns whether animation is enabled for this icon (default is {@code true}).
+ */
+ default boolean isAnimationEnabled() {
+ return true;
+ }
+
+ /**
+ * Returns the duration of the animation in milliseconds (default is 150).
+ */
+ default int getAnimationDuration() {
+ return 150;
+ }
+
+ /**
+ * Returns the resolution of the animation in milliseconds (default is 10).
+ * Resolution is the amount of time between timing events.
+ */
+ default int getAnimationResolution() {
+ return 10;
+ }
+
+ /**
+ * Returns the interpolator for the animation.
+ * Default is {@link CubicBezierEasing#STANDARD_EASING}.
+ */
+ default Interpolator getAnimationInterpolator() {
+ return CubicBezierEasing.STANDARD_EASING;
+ }
+
+ /**
+ * Returns the client property key used to store the animation support.
+ */
+ default Object getClientPropertyKey() {
+ return getClass();
+ }
+
+ //---- class AnimationSupport ---------------------------------------------
+
+ /**
+ * Animation support class that stores the animation state and implements the animation.
+ */
+ class AnimationSupport
+ {
+ private float startValue;
+ private float targetValue;
+ private float animatedValue;
+ private float fraction;
+
+ private Animator animator;
+
+ // last x,y coordinates of the icon needed to repaint while animating
+ private int x;
+ private int y;
+
+ public static void paintIcon( AnimatedIcon icon, Component c, Graphics g, int x, int y ) {
+ if( !isAnimationEnabled( icon, c ) ) {
+ // paint without animation if animation is disabled or
+ // component is not a JComponent and therefore does not support
+ // client properties, which are required to keep animation state
+ paintIconImpl( icon, c, g, x, y, null );
+ return;
+ }
+
+ JComponent jc = (JComponent) c;
+ Object key = icon.getClientPropertyKey();
+ AnimationSupport as = (AnimationSupport) jc.getClientProperty( key );
+ if( as == null ) {
+ // painted first time --> do not animate, but remember current component value
+ as = new AnimationSupport();
+ as.startValue = as.targetValue = as.animatedValue = icon.getValue( c );
+ as.x = x;
+ as.y = y;
+ jc.putClientProperty( key, as );
+ } else {
+ // get component value
+ float value = icon.getValue( c );
+
+ if( value != as.targetValue ) {
+ // value changed --> (re)start animation
+
+ if( as.animator == null ) {
+ // create animator
+ AnimationSupport as2 = as;
+ as.animator = new Animator( icon.getAnimationDuration(), fraction -> {
+ // check whether component was removed while animation is running
+ if( !c.isDisplayable() ) {
+ as2.animator.stop();
+ return;
+ }
+
+ // compute animated value
+ as2.animatedValue = as2.startValue + ((as2.targetValue - as2.startValue) * fraction);
+ as2.fraction = fraction;
+
+ // repaint icon
+ c.repaint( as2.x, as2.y, icon.getIconWidth(), icon.getIconHeight() );
+ }, () -> {
+ as2.startValue = as2.animatedValue = as2.targetValue;
+ as2.animator = null;
+ } );
+ }
+
+ if( as.animator.isRunning() ) {
+ // if animation is still running, restart it from the current
+ // animated value to the new target value with reduced duration
+ as.animator.cancel();
+ int duration2 = (int) (icon.getAnimationDuration() * as.fraction);
+ if( duration2 > 0 )
+ as.animator.setDuration( duration2 );
+ as.startValue = as.animatedValue;
+ } else {
+ // new animation
+ as.animator.setDuration( icon.getAnimationDuration() );
+ as.animator.setResolution( icon.getAnimationResolution() );
+ as.animator.setInterpolator( icon.getAnimationInterpolator() );
+
+ as.animatedValue = as.startValue;
+ }
+
+ as.targetValue = value;
+ as.animator.start();
+ }
+
+ as.x = x;
+ as.y = y;
+ }
+
+ paintIconImpl( icon, c, g, x, y, as );
+ }
+
+ private static void paintIconImpl( AnimatedIcon icon, Component c, Graphics g, int x, int y, AnimationSupport as ) {
+ float value = (as != null) ? as.animatedValue : icon.getValue( c );
+ icon.paintIconAnimated( c, g, x, y, value );
+ }
+
+ private static boolean isAnimationEnabled( AnimatedIcon icon, Component c ) {
+ return Animator.useAnimation() && icon.isAnimationEnabled() && c instanceof JComponent;
+ }
+
+ public static void saveIconLocation( AnimatedIcon icon, Component c, int x, int y ) {
+ if( !isAnimationEnabled( icon, c ) )
+ return;
+
+ AnimationSupport as = (AnimationSupport) ((JComponent)c).getClientProperty( icon.getClientPropertyKey() );
+ if( as != null ) {
+ as.x = x;
+ as.y = y;
+ }
+ }
+ }
+}
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 471dd7c0..12ee1b34 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
@@ -28,11 +28,12 @@ public class ColorFunctions
public static Color applyFunctions( Color color, ColorFunction... functions ) {
float[] hsl = HSLColor.fromRGB( color );
float alpha = color.getAlpha() / 255f;
+ float[] hsla = { hsl[0], hsl[1], hsl[2], alpha * 100 };
for( ColorFunction function : functions )
- function.apply( hsl );
+ function.apply( hsla );
- return HSLColor.toRGB( hsl, alpha );
+ return HSLColor.toRGB( hsla[0], hsla[1], hsla[2], hsla[3] / 100 );
}
public static float clamp( float value ) {
@@ -43,16 +44,48 @@ public class ColorFunctions
: value);
}
+ /**
+ * Returns a color that is a mixture of two colors.
+ *
+ * @param color1 first color
+ * @param color2 second color
+ * @param weight the weight (in range 0-1) to mix the two colors.
+ * Larger weight uses more of first color, smaller weight more of second color.
+ * @return mixture of colors
+ */
+ public static Color mix( Color color1, Color color2, float weight ) {
+ if( weight >= 1 )
+ return color1;
+ if( weight <= 0 )
+ return color2;
+
+ int r1 = color1.getRed();
+ int g1 = color1.getGreen();
+ int b1 = color1.getBlue();
+ int a1 = color1.getAlpha();
+
+ int r2 = color2.getRed();
+ int g2 = color2.getGreen();
+ int b2 = color2.getBlue();
+ int a2 = color2.getAlpha();
+
+ return new Color(
+ Math.round( r2 + ((r1 - r2) * weight) ),
+ Math.round( g2 + ((g1 - g2) * weight) ),
+ Math.round( b2 + ((b1 - b2) * weight) ),
+ Math.round( a2 + ((a1 - a2) * weight) ) );
+ }
+
//---- interface ColorFunction --------------------------------------------
public interface ColorFunction {
- void apply( float[] hsl );
+ void apply( float[] hsla );
}
//---- class HSLIncreaseDecrease ------------------------------------------
/**
- * Increase or decrease hue, saturation or luminance of a color in the HSL color space
+ * Increase or decrease hue, saturation, luminance or alpha of a color in the HSL color space
* by an absolute or relative amount.
*/
public static class HSLIncreaseDecrease
@@ -75,18 +108,45 @@ public class ColorFunctions
}
@Override
- public void apply( float[] hsl ) {
+ public void apply( float[] hsla ) {
float amount2 = increase ? amount : -amount;
- amount2 = autoInverse && shouldInverse( hsl ) ? -amount2 : amount2;
- hsl[hslIndex] = clamp( relative
- ? (hsl[hslIndex] * ((100 + amount2) / 100))
- : (hsl[hslIndex] + amount2) );
+
+ if( hslIndex == 0 ) {
+ // hue is range 0-360
+ hsla[0] = (hsla[0] + amount2) % 360;
+ return;
+ }
+
+ amount2 = autoInverse && shouldInverse( hsla ) ? -amount2 : amount2;
+ hsla[hslIndex] = clamp( relative
+ ? (hsla[hslIndex] * ((100 + amount2) / 100))
+ : (hsla[hslIndex] + amount2) );
}
- protected boolean shouldInverse( float[] hsl ) {
+ protected boolean shouldInverse( float[] hsla ) {
return increase
- ? hsl[hslIndex] >= 50
- : hsl[hslIndex] < 50;
+ ? hsla[hslIndex] > 65
+ : hsla[hslIndex] < 35;
+ }
+ }
+
+ //---- class HSLIncreaseDecrease ------------------------------------------
+
+ /**
+ * Set the alpha of a color.
+ */
+ public static class Fade
+ implements ColorFunction
+ {
+ public final float amount;
+
+ public Fade( float amount ) {
+ this.amount = amount;
+ }
+
+ @Override
+ public void apply( float[] hsla ) {
+ hsla[3] = clamp( amount );
}
}
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/CubicBezierEasing.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/CubicBezierEasing.java
index e714a209..b9336c98 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/CubicBezierEasing.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/CubicBezierEasing.java
@@ -24,6 +24,13 @@ package com.formdev.flatlaf.util;
public class CubicBezierEasing
implements Animator.Interpolator
{
+ /**
+ * Standard easing as specified in Material design (0.4, 0, 0.2, 1).
+ *
+ * @see https://material.io/design/motion/speed.html#easing
+ */
+ public static final CubicBezierEasing STANDARD_EASING = new CubicBezierEasing( 0.4f, 0f, 0.2f, 1f );
+
// common cubic-bezier easing functions (same as in CSS)
// https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function
public static final CubicBezierEasing EASE = new CubicBezierEasing( 0.25f, 0.1f, 0.25f, 1f );
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java
index 9fb064b8..6a67af16 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java
@@ -134,7 +134,7 @@ public class HiDPIUtils
// - fractional scale factors result in fractional component Y device coordinates
// - fractional text Y device coordinates are rounded for horizontal lines of characters
// - maybe different rounding methods for drawing primitives (e.g. rectangle) and text
- // - Java adds 0.5 to X/Y positions in before drawing string in BufferedTextPipe.enqueueGlyphList()
+ // - Java adds 0.5 to X/Y positions before drawing string in BufferedTextPipe.enqueueGlyphList()
// this is not the optimal solution, but works very good in most cases
// (tested with class FlatPaintingStringTest on Windows 10 with font "Segoe UI")
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/UIScale.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/UIScale.java
index 686e400c..d2e9c269 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/UIScale.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/UIScale.java
@@ -36,9 +36,14 @@ import javax.swing.plaf.UIResource;
import com.formdev.flatlaf.FlatSystemProperties;
/**
- * Two scaling modes are supported for HiDPI displays:
+ * This class handles scaling in Swing UIs.
+ * It computes user scaling factor based on font size and
+ * provides methods to scale integer, float, {@link Dimension} and {@link Insets}.
+ * This class is look and feel independent.
+ *
+ * Two scaling modes are supported by FlatLaf for HiDPI displays:
*
- * 1) system scaling mode
+ *
1) system scaling mode
*
* This mode is supported since Java 9 on all platforms and in some Java 8 VMs
* (e.g. Apple and JetBrains). The JRE determines the scale factor per-display and
@@ -49,7 +54,7 @@ import com.formdev.flatlaf.FlatSystemProperties;
* The scale factor may be different for each connected display.
* The scale factor may change for a window when moving the window from one display to another one.
*
- * 2) user scaling mode
+ * 2) user scaling mode
*
* This mode is mainly for Java 8 compatibility, but is also used on Linux
* or if the default font is changed.
@@ -85,6 +90,9 @@ public class UIScale
private static Boolean jreHiDPI;
+ /**
+ * Returns whether system scaling is enabled.
+ */
public static boolean isSystemScalingEnabled() {
if( jreHiDPI != null )
return jreHiDPI;
@@ -112,10 +120,16 @@ public class UIScale
return jreHiDPI;
}
+ /**
+ * Returns the system scale factor for the given graphics context.
+ */
public static double getSystemScaleFactor( Graphics2D g ) {
- return isSystemScalingEnabled() ? g.getDeviceConfiguration().getDefaultTransform().getScaleX() : 1;
+ return isSystemScalingEnabled() ? getSystemScaleFactor( g.getDeviceConfiguration() ) : 1;
}
+ /**
+ * Returns the system scale factor for the given graphics configuration.
+ */
public static double getSystemScaleFactor( GraphicsConfiguration gc ) {
return (isSystemScalingEnabled() && gc != null) ? gc.getDefaultTransform().getScaleX() : 1;
}
@@ -297,11 +311,17 @@ public class UIScale
}
}
+ /**
+ * Returns the user scale factor.
+ */
public static float getUserScaleFactor() {
initialize();
return scaleFactor;
}
+ /**
+ * Sets the user scale factor.
+ */
private static void setUserScaleFactor( float scaleFactor ) {
if( scaleFactor <= 1f )
scaleFactor = 1f;
@@ -318,40 +338,65 @@ public class UIScale
changeSupport.firePropertyChange( "userScaleFactor", oldScaleFactor, scaleFactor );
}
+ /**
+ * Multiplies the given value by the user scale factor.
+ */
public static float scale( float value ) {
initialize();
return (scaleFactor == 1) ? value : (value * scaleFactor);
}
+ /**
+ * Multiplies the given value by the user scale factor and rounds the result.
+ */
public static int scale( int value ) {
initialize();
return (scaleFactor == 1) ? value : Math.round( value * scaleFactor );
}
/**
- * Similar as scale(int) but always "rounds down".
+ * Similar as {@link #scale(int)} but always "rounds down".
+ *
+ * For use in special cases. {@link #scale(int)} is the preferred method.
*/
public static int scale2( int value ) {
initialize();
return (scaleFactor == 1) ? value : (int) (value * scaleFactor);
}
+ /**
+ * Divides the given value by the user scale factor.
+ */
public static float unscale( float value ) {
initialize();
return (scaleFactor == 1f) ? value : (value / scaleFactor);
}
+ /**
+ * Divides the given value by the user scale factor and rounds the result.
+ */
public static int unscale( int value ) {
initialize();
return (scaleFactor == 1f) ? value : Math.round( value / scaleFactor );
}
+ /**
+ * If user scale factor is not 1, scale the given graphics context by invoking
+ * {@link Graphics2D#scale(double, double)} with user scale factor.
+ */
public static void scaleGraphics( Graphics2D g ) {
initialize();
if( scaleFactor != 1f )
g.scale( scaleFactor, scaleFactor );
}
+ /**
+ * Scales the given dimension with the user scale factor.
+ *
+ * If user scale factor is 1, then the given dimension is simply returned.
+ * Otherwise a new instance of {@link Dimension} or {@link DimensionUIResource}
+ * is returned, depending on whether the passed dimension implements {@link UIResource}.
+ */
public static Dimension scale( Dimension dimension ) {
initialize();
return (dimension == null || scaleFactor == 1f)
@@ -361,6 +406,13 @@ public class UIScale
: new Dimension ( scale( dimension.width ), scale( dimension.height ) ));
}
+ /**
+ * Scales the given insets with the user scale factor.
+ *
+ * If user scale factor is 1, then the given insets is simply returned.
+ * Otherwise a new instance of {@link Insets} or {@link InsetsUIResource}
+ * is returned, depending on whether the passed dimension implements {@link UIResource}.
+ */
public static Insets scale( Insets insets ) {
initialize();
return (insets == null || scaleFactor == 1f)
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties
index 210bb6c3..2c3d196a 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarculaLaf.properties
@@ -14,29 +14,49 @@
# limitations under the License.
#
+#
+# This file is loaded for "FlatLaf Darcula" theme (that extend class FlatDarculaLaf)
+# and for all dark IntelliJ Platform themes.
+#
+# Documentation:
+# - https://www.formdev.com/flatlaf/properties-files/
+# - https://www.formdev.com/flatlaf/how-to-customize/
+#
+# NOTE: Avoid copying the whole content of this file to own properties files.
+# This will make upgrading to newer FlatLaf versions complex and error-prone.
+# Instead copy and modify only those properties that you need to alter.
+#
+
# Colors and style mostly based on Darcula theme from IntelliJ IDEA Community Edition,
# which is licensed under the Apache 2.0 license. Copyright 2000-2019 JetBrains s.r.o.
# See: https://github.com/JetBrains/intellij-community/
#---- Button ----
-Button.default.boldText=true
+Button.innerFocusWidth = 0
+
+Button.default.boldText = true
+
+
+#---- CheckBox ----
+
+CheckBox.icon.focusedBackground = null
#---- Component ----
-Component.focusWidth=2
-Component.innerFocusWidth=0
-Component.innerOutlineWidth=0
-Component.arrowType=triangle
+Component.focusWidth = 2
+Component.innerFocusWidth = 0
+Component.innerOutlineWidth = 0
+Component.arrowType = triangle
#---- ProgressBar ----
-ProgressBar.foreground=#a0a0a0
-ProgressBar.selectionForeground=@background
+ProgressBar.foreground = #a0a0a0
+ProgressBar.selectionForeground = @background
#---- RadioButton ----
-RadioButton.icon.centerDiameter=5
+RadioButton.icon.centerDiameter = 5
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties
index 93c22262..adfabc08 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties
@@ -14,293 +14,314 @@
# limitations under the License.
#
+#
+# This file is loaded for all dark themes (that extend class FlatDarkLaf).
+#
+# Documentation:
+# - https://www.formdev.com/flatlaf/properties-files/
+# - https://www.formdev.com/flatlaf/how-to-customize/
+#
+# NOTE: Avoid copying the whole content of this file to own properties files.
+# This will make upgrading to newer FlatLaf versions complex and error-prone.
+# Instead copy and modify only those properties that you need to alter.
+#
+
# Colors and style mostly based on Darcula theme from IntelliJ IDEA Community Edition,
# which is licensed under the Apache 2.0 license. Copyright 2000-2019 JetBrains s.r.o.
# See: https://github.com/JetBrains/intellij-community/
#---- variables ----
-@background=#3c3f41
-@foreground=#bbb
-@selectionBackground=#4B6EAF
-@selectionForeground=@foreground
-@selectionInactiveBackground=#0D293E
-@selectionInactiveForeground=@foreground
-@disabledText=#888
-@textComponentBackground=#45494A
-@menuBackground=darken(@background,5%)
-@menuHoverBackground=lighten(@menuBackground,10%,derived)
-@menuCheckBackground=darken(@selectionBackground,10%)
-@menuAcceleratorForeground=darken(@foreground,15%)
-@menuAcceleratorSelectionForeground=@selectionForeground
-@cellFocusColor=#000
-@icon=#adadad
+@background = #3c3f41
+@foreground = #bbb
+@selectionBackground = #4B6EAF
+@selectionForeground = @foreground
+@selectionInactiveBackground = #0D293E
+@selectionInactiveForeground = @foreground
+@disabledText = #888
+@textComponentBackground = #45494A
+@menuBackground = darken(@background,5%)
+@menuHoverBackground = lighten(@menuBackground,10%,derived)
+@menuCheckBackground = darken(@selectionBackground,10%,derived noAutoInverse)
+@menuAcceleratorForeground = darken(@foreground,15%)
+@menuAcceleratorSelectionForeground = @selectionForeground
+@cellFocusColor = #000
+@icon = #adadad
+
+# for buttons within components (e.g. combobox or spinner)
+@buttonArrowColor = #9A9DA1
+@buttonDisabledArrowColor = darken(@buttonArrowColor,25%)
+@buttonHoverArrowColor = lighten(@buttonArrowColor,10%,derived noAutoInverse)
+@buttonPressedArrowColor = lighten(@buttonArrowColor,20%,derived noAutoInverse)
# Drop (use lazy colors for IntelliJ platform themes, which usually do not specify these colors)
-@dropCellBackground=darken(List.selectionBackground,10%,lazy)
-@dropCellForeground=lazy(List.selectionForeground)
-@dropLineColor=lighten(List.selectionBackground,10%,lazy)
-@dropLineShortColor=lighten(List.selectionBackground,30%,lazy)
+@dropCellBackground = darken(List.selectionBackground,10%,lazy)
+@dropCellForeground = lazy(List.selectionForeground)
+@dropLineColor = lighten(List.selectionBackground,10%,lazy)
+@dropLineShortColor = lighten(List.selectionBackground,30%,lazy)
#---- system colors ----
-activeCaption=#434E60
-inactiveCaption=#393C3D
-controlHighlight=darken($controlShadow,20%)
-controlLtHighlight=darken($controlShadow,25%)
-controlDkShadow=lighten($controlShadow,10%)
+activeCaption = #434E60
+inactiveCaption = #393C3D
+controlHighlight = darken($controlShadow,20%)
+controlLtHighlight = darken($controlShadow,25%)
+controlDkShadow = lighten($controlShadow,10%)
#---- Button ----
-Button.background=#4c5052
-Button.hoverBackground=lighten($Button.background,3%,derived)
-Button.pressedBackground=lighten($Button.background,6%,derived)
-Button.selectedBackground=lighten($Button.background,10%,derived)
-Button.selectedForeground=@foreground
-Button.disabledSelectedBackground=lighten($Button.background,3%,derived)
+Button.background = #4c5052
+Button.hoverBackground = lighten($Button.background,3%,derived)
+Button.pressedBackground = lighten($Button.background,6%,derived)
+Button.selectedBackground = lighten($Button.background,10%,derived)
+Button.selectedForeground = @foreground
+Button.disabledSelectedBackground = lighten($Button.background,3%,derived)
-Button.borderColor=#5e6060
-Button.disabledBorderColor=#5e6060
-Button.focusedBorderColor=#466d94
-Button.hoverBorderColor=$Button.focusedBorderColor
+Button.borderColor = #5e6060
+Button.disabledBorderColor = $Button.borderColor
+Button.focusedBorderColor = $Component.focusedBorderColor
+Button.hoverBorderColor = $Button.focusedBorderColor
-Button.default.background=#365880
-Button.default.foreground=#bbb
-Button.default.hoverBackground=lighten($Button.default.background,3%,derived)
-Button.default.pressedBackground=lighten($Button.default.background,6%,derived)
-Button.default.borderColor=#4c708c
-Button.default.hoverBorderColor=#537699
-Button.default.focusedBorderColor=#537699
-Button.default.focusColor=#43688c
-Button.default.boldText=true
+Button.innerFocusWidth = 1
-Button.toolbar.hoverBackground=lighten($Button.background,1%,derived)
-Button.toolbar.pressedBackground=lighten($Button.background,4%,derived)
-Button.toolbar.selectedBackground=lighten($Button.background,7%,derived)
+Button.default.background = #365880
+Button.default.foreground = #bbb
+Button.default.hoverBackground = lighten($Button.default.background,3%,derived)
+Button.default.pressedBackground = lighten($Button.default.background,6%,derived)
+Button.default.borderColor = #4c708c
+Button.default.hoverBorderColor = #537699
+Button.default.focusedBorderColor = #537699
+Button.default.focusColor = #43688c
+Button.default.boldText = true
+
+Button.toolbar.hoverBackground = lighten($Button.background,1%,derived)
+Button.toolbar.pressedBackground = lighten($Button.background,4%,derived)
+Button.toolbar.selectedBackground = lighten($Button.background,7%,derived)
#---- CheckBox ----
# enabled
-CheckBox.icon.borderColor=#6B6B6B
-CheckBox.icon.background=#43494A
-CheckBox.icon.selectedBorderColor=$CheckBox.icon.borderColor
-CheckBox.icon.selectedBackground=$CheckBox.icon.background
-CheckBox.icon.checkmarkColor=#A7A7A7
+CheckBox.icon.borderColor = #6B6B6B
+CheckBox.icon.background = #43494A
+CheckBox.icon.selectedBorderColor = $CheckBox.icon.borderColor
+CheckBox.icon.selectedBackground = $CheckBox.icon.background
+CheckBox.icon.checkmarkColor = #A7A7A7
# disabled
-CheckBox.icon.disabledBorderColor=#545556
-CheckBox.icon.disabledBackground=@background
-CheckBox.icon.disabledCheckmarkColor=#606060
+CheckBox.icon.disabledBorderColor = #545556
+CheckBox.icon.disabledBackground = @background
+CheckBox.icon.disabledCheckmarkColor = #606060
# focused
-CheckBox.icon.focusedBorderColor=#466D94
-CheckBox.icon.selectedFocusedBorderColor=#466D94
+CheckBox.icon.focusedBorderColor = #466D94
+CheckBox.icon.focusedBackground = fade($CheckBox.icon.focusedBorderColor,30%)
# hover
-CheckBox.icon.hoverBorderColor=$CheckBox.icon.focusedBorderColor
-CheckBox.icon.hoverBackground=lighten($CheckBox.icon.background,3%,derived)
+CheckBox.icon.hoverBorderColor = $CheckBox.icon.focusedBorderColor
+CheckBox.icon.hoverBackground = lighten($CheckBox.icon.background,3%,derived)
# pressed
-CheckBox.icon.pressedBackground=lighten($CheckBox.icon.background,6%,derived)
+CheckBox.icon.pressedBackground = lighten($CheckBox.icon.background,6%,derived)
-# used if CheckBox.icon.style=filled
+
+# used if CheckBox.icon.style = filled
# enabled
-CheckBox.icon[filled].selectedBorderColor=$CheckBox.icon.checkmarkColor
-CheckBox.icon[filled].selectedBackground=$CheckBox.icon.checkmarkColor
-CheckBox.icon[filled].checkmarkColor=$CheckBox.icon.background
+CheckBox.icon[filled].selectedBorderColor = $CheckBox.icon.checkmarkColor
+CheckBox.icon[filled].selectedBackground = $CheckBox.icon.checkmarkColor
+CheckBox.icon[filled].checkmarkColor = $CheckBox.icon.background
# hover
-CheckBox.icon[filled].selectedHoverBackground=darken($CheckBox.icon[filled].selectedBackground,3%)
+CheckBox.icon[filled].selectedHoverBackground = darken($CheckBox.icon[filled].selectedBackground,3%,derived)
# pressed
-CheckBox.icon[filled].selectedPressedBackground=darken($CheckBox.icon[filled].selectedBackground,6%)
+CheckBox.icon[filled].selectedPressedBackground = darken($CheckBox.icon[filled].selectedBackground,6%,derived)
#---- ComboBox ----
-ComboBox.buttonEditableBackground=#404445
-ComboBox.buttonArrowColor=#9A9DA1
-ComboBox.buttonDisabledArrowColor=#585858
-ComboBox.buttonHoverArrowColor=#bbb
+ComboBox.buttonEditableBackground = darken($ComboBox.background,2%)
#---- Component ----
-Component.borderColor=#646464
-Component.disabledBorderColor=#646464
-Component.focusedBorderColor=#466d94
-Component.focusColor=#3d6185
-Component.linkColor=#589df6
-Component.grayFilter=-20,-70,100
+Component.borderColor = #646464
+Component.disabledBorderColor = #646464
+Component.focusedBorderColor = #466d94
+Component.focusColor = #3d6185
+Component.linkColor = #589df6
+Component.grayFilter = -20,-70,100
-Component.error.borderColor=desaturate($Component.error.focusedBorderColor,25%)
-Component.error.focusedBorderColor=#8b3c3c
-Component.warning.borderColor=darken(desaturate($Component.warning.focusedBorderColor,20%),10%)
-Component.warning.focusedBorderColor=#ac7920
-Component.custom.borderColor=desaturate(#f00,50%,relative derived noAutoInverse)
+Component.error.borderColor = desaturate($Component.error.focusedBorderColor,25%)
+Component.error.focusedBorderColor = #8b3c3c
+Component.warning.borderColor = darken(desaturate($Component.warning.focusedBorderColor,20%),10%)
+Component.warning.focusedBorderColor = #ac7920
+Component.custom.borderColor = desaturate(#f00,50%,relative derived noAutoInverse)
#---- Desktop ----
-Desktop.background=#3E434C
+Desktop.background = #3E434C
#---- DesktopIcon ----
-DesktopIcon.background=lighten($Desktop.background,10%)
+DesktopIcon.background = lighten($Desktop.background,10%)
#---- InternalFrame ----
-InternalFrame.activeTitleBackground=darken(@background,10%)
-InternalFrame.activeTitleForeground=@foreground
-InternalFrame.inactiveTitleBackground=darken(@background,5%)
-InternalFrame.inactiveTitleForeground=@disabledText
+InternalFrame.activeTitleBackground = darken(@background,10%)
+InternalFrame.activeTitleForeground = @foreground
+InternalFrame.inactiveTitleBackground = darken(@background,5%)
+InternalFrame.inactiveTitleForeground = @disabledText
-InternalFrame.activeBorderColor=darken(@background,7%)
-InternalFrame.inactiveBorderColor=darken(@background,3%)
+InternalFrame.activeBorderColor = darken(@background,7%)
+InternalFrame.inactiveBorderColor = darken(@background,3%)
-InternalFrame.buttonHoverBackground=lighten($InternalFrame.activeTitleBackground,10%,derived)
-InternalFrame.buttonPressedBackground=lighten($InternalFrame.activeTitleBackground,20%,derived)
-InternalFrame.closeHoverBackground=lazy(Actions.Red)
-InternalFrame.closePressedBackground=darken(Actions.Red,10%,lazy)
-InternalFrame.closeHoverForeground=#fff
-InternalFrame.closePressedForeground=#fff
+InternalFrame.buttonHoverBackground = lighten($InternalFrame.activeTitleBackground,10%,derived)
+InternalFrame.buttonPressedBackground = lighten($InternalFrame.activeTitleBackground,20%,derived)
+InternalFrame.closeHoverBackground = lazy(Actions.Red)
+InternalFrame.closePressedBackground = darken(Actions.Red,10%,lazy)
+InternalFrame.closeHoverForeground = #fff
+InternalFrame.closePressedForeground = #fff
-InternalFrame.activeDropShadowOpacity=0.5
-InternalFrame.inactiveDropShadowOpacity=0.75
+InternalFrame.activeDropShadowOpacity = 0.5
+InternalFrame.inactiveDropShadowOpacity = 0.75
#---- Menu ----
-Menu.icon.arrowColor=#A7A7A7
-Menu.icon.disabledArrowColor=#606060
+Menu.icon.arrowColor = #A7A7A7
+Menu.icon.disabledArrowColor = #606060
#---- MenuBar ----
-MenuBar.borderColor=#515151
+MenuBar.borderColor = #515151
#---- MenuItemCheckBox ----
-MenuItemCheckBox.icon.checkmarkColor=#A7A7A7
-MenuItemCheckBox.icon.disabledCheckmarkColor=#606060
+MenuItemCheckBox.icon.checkmarkColor = #A7A7A7
+MenuItemCheckBox.icon.disabledCheckmarkColor = #606060
#---- PasswordField ----
-PasswordField.capsLockIconColor=#ffffff64
+PasswordField.capsLockIconColor = #ffffff64
#---- Popup ----
-Popup.dropShadowColor=#000
-Popup.dropShadowOpacity=0.25
+Popup.dropShadowColor = #000
+Popup.dropShadowOpacity = 0.25
#---- PopupMenu ----
-PopupMenu.borderColor=#5e5e5e
+PopupMenu.borderColor = #5e5e5e
#---- ProgressBar ----
-ProgressBar.background=#555
-ProgressBar.foreground=#4A88C7
-ProgressBar.selectionForeground=@foreground
-ProgressBar.selectionBackground=@foreground
+ProgressBar.background = #555
+ProgressBar.foreground = #4A88C7
+ProgressBar.selectionForeground = @foreground
+ProgressBar.selectionBackground = @foreground
#---- RootPane ----
-RootPane.activeBorderColor=darken(@background,7%,derived)
-RootPane.inactiveBorderColor=darken(@background,5%,derived)
+RootPane.activeBorderColor = lighten(@background,7%,derived)
+RootPane.inactiveBorderColor = lighten(@background,5%,derived)
#---- ScrollBar ----
-ScrollBar.track=lighten(@background,1%,derived noAutoInverse)
-ScrollBar.thumb=lighten($ScrollBar.track,10%,derived noAutoInverse)
-ScrollBar.hoverTrackColor=lighten($ScrollBar.track,4%,derived noAutoInverse)
-ScrollBar.hoverThumbColor=lighten($ScrollBar.thumb,10%,derived noAutoInverse)
-ScrollBar.pressedThumbColor=lighten($ScrollBar.thumb,15%,derived noAutoInverse)
-ScrollBar.hoverButtonBackground=lighten(@background,5%,derived noAutoInverse)
-ScrollBar.pressedButtonBackground=lighten(@background,10%,derived noAutoInverse)
+ScrollBar.track = lighten(@background,1%,derived noAutoInverse)
+ScrollBar.thumb = lighten($ScrollBar.track,10%,derived noAutoInverse)
+ScrollBar.hoverTrackColor = lighten($ScrollBar.track,4%,derived noAutoInverse)
+ScrollBar.hoverThumbColor = lighten($ScrollBar.thumb,10%,derived noAutoInverse)
+ScrollBar.pressedThumbColor = lighten($ScrollBar.thumb,15%,derived noAutoInverse)
+ScrollBar.hoverButtonBackground = lighten(@background,5%,derived noAutoInverse)
+ScrollBar.pressedButtonBackground = lighten(@background,10%,derived noAutoInverse)
#---- Separator ----
-Separator.foreground=#515151
+Separator.foreground = #515151
#---- Slider ----
-Slider.trackColor=#646464
-Slider.thumbColor=#A6A6A6
-Slider.tickColor=#888
-Slider.hoverColor=darken($Slider.thumbColor,15%,derived)
-Slider.disabledForeground=#4c5052
+Slider.trackValueColor = #4A88C7
+Slider.trackColor = #646464
+Slider.thumbColor = $Slider.trackValueColor
+Slider.tickColor = #888
+Slider.focusedColor = fade($Component.focusColor,70%,derived)
+Slider.hoverThumbColor = lighten($Slider.thumbColor,5%,derived)
+Slider.pressedThumbColor = lighten($Slider.thumbColor,8%,derived)
+Slider.disabledTrackColor = #4c5052
+Slider.disabledThumbColor = $Slider.disabledTrackColor
#---- SplitPane ----
-SplitPaneDivider.draggingColor=#646464
-SplitPaneDivider.oneTouchHoverArrowColor=#7A7D81
+SplitPaneDivider.draggingColor = #646464
#---- TabbedPane ----
-TabbedPane.underlineColor=#4A88C7
-TabbedPane.disabledUnderlineColor=#7a7a7a
-TabbedPane.hoverColor=darken($TabbedPane.background,5%,derived noAutoInverse)
-TabbedPane.focusColor=#3d4b5c
-TabbedPane.contentAreaColor=#646464
+TabbedPane.underlineColor = #4A88C7
+TabbedPane.disabledUnderlineColor = #7a7a7a
+TabbedPane.hoverColor = darken($TabbedPane.background,5%,derived noAutoInverse)
+TabbedPane.focusColor = #3d4b5c
+TabbedPane.contentAreaColor = #646464
-TabbedPane.buttonHoverBackground=darken($TabbedPane.background,5%,derived noAutoInverse)
-TabbedPane.buttonPressedBackground=darken($TabbedPane.background,8%,derived noAutoInverse)
+TabbedPane.buttonHoverBackground = darken($TabbedPane.background,5%,derived noAutoInverse)
+TabbedPane.buttonPressedBackground = darken($TabbedPane.background,8%,derived noAutoInverse)
-TabbedPane.closeBackground=null
-TabbedPane.closeForeground=@disabledText
-TabbedPane.closeHoverBackground=lighten($TabbedPane.background,5%,derived)
-TabbedPane.closeHoverForeground=@foreground
-TabbedPane.closePressedBackground=lighten($TabbedPane.background,10%,derived)
-TabbedPane.closePressedForeground=$TabbedPane.closeHoverForeground
+TabbedPane.closeBackground = null
+TabbedPane.closeForeground = @disabledText
+TabbedPane.closeHoverBackground = lighten($TabbedPane.background,5%,derived)
+TabbedPane.closeHoverForeground = @foreground
+TabbedPane.closePressedBackground = lighten($TabbedPane.background,10%,derived)
+TabbedPane.closePressedForeground = $TabbedPane.closeHoverForeground
#---- Table ----
-Table.gridColor=lighten($Table.background,3%)
+Table.gridColor = lighten($Table.background,5%)
#---- TableHeader ----
-TableHeader.separatorColor=lighten($TableHeader.background,10%)
-TableHeader.bottomSeparatorColor=$TableHeader.separatorColor
+TableHeader.separatorColor = lighten($TableHeader.background,10%)
+TableHeader.bottomSeparatorColor = $TableHeader.separatorColor
#---- TitlePane ----
-TitlePane.embeddedForeground=darken($TitlePane.foreground,15%)
-TitlePane.buttonHoverBackground=lighten($TitlePane.background,10%,derived)
-TitlePane.buttonPressedBackground=lighten($TitlePane.background,20%,derived)
+TitlePane.embeddedForeground = darken($TitlePane.foreground,15%)
+TitlePane.buttonHoverBackground = lighten($TitlePane.background,10%,derived)
+TitlePane.buttonPressedBackground = lighten($TitlePane.background,20%,derived)
#---- ToggleButton ----
-ToggleButton.selectedBackground=lighten($ToggleButton.background,10%,derived)
-ToggleButton.disabledSelectedBackground=lighten($ToggleButton.background,3%,derived)
+ToggleButton.selectedBackground = lighten($ToggleButton.background,10%,derived)
+ToggleButton.disabledSelectedBackground = lighten($ToggleButton.background,3%,derived)
-ToggleButton.toolbar.selectedBackground=lighten($ToggleButton.background,7%,derived)
+ToggleButton.toolbar.selectedBackground = lighten($ToggleButton.background,7%,derived)
#---- ToolTip ----
-ToolTip.border=4,6,4,6
-ToolTip.background=#1e2123
+ToolTip.border = 4,6,4,6
+ToolTip.background = #1e2123
#---- Tree ----
-Tree.hash=#505355
+Tree.hash = lighten($Tree.background,5%)
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties
index ccbb305b..550459f4 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties
@@ -14,33 +14,46 @@
# limitations under the License.
#
+#
+# This file is loaded for "FlatLaf IntelliJ" theme (that extend class FlatIntelliJLaf)
+# and for all light IntelliJ Platform themes.
+#
+# Documentation:
+# - https://www.formdev.com/flatlaf/properties-files/
+# - https://www.formdev.com/flatlaf/how-to-customize/
+#
+# NOTE: Avoid copying the whole content of this file to own properties files.
+# This will make upgrading to newer FlatLaf versions complex and error-prone.
+# Instead copy and modify only those properties that you need to alter.
+#
+
# Colors and style mostly based on IntelliJ theme from IntelliJ IDEA Community Edition,
# which is licensed under the Apache 2.0 license. Copyright 2000-2019 JetBrains s.r.o.
# See: https://github.com/JetBrains/intellij-community/
#---- Button ----
-Button.focusedBackground=null
+Button.focusedBackground = null
-Button.default.background=#4D8AC9
-Button.default.foreground=#fff
-Button.default.focusedBackground=null
-Button.default.borderColor=#3D75B2
-Button.default.hoverBorderColor=#A9C9F5
-Button.default.focusedBorderColor=#A9C9F5
-Button.default.focusColor=#97c3f3
-Button.default.boldText=true
-Button.default.borderWidth=1
+Button.default.background = #4D8AC9
+Button.default.foreground = #fff
+Button.default.focusedBackground = null
+Button.default.borderColor = #3D75B2
+Button.default.hoverBorderColor = #A9C9F5
+Button.default.focusedBorderColor = #A9C9F5
+Button.default.focusColor = #97c3f3
+Button.default.boldText = true
+Button.default.borderWidth = 1
#---- CheckBox ----
-CheckBox.icon.style=filled
+CheckBox.icon.style = filled
#---- Component ----
-Component.focusWidth=2
-Component.innerFocusWidth=0
-Component.innerOutlineWidth=0
-Component.arrowType=triangle
+Component.focusWidth = 2
+Component.innerFocusWidth = 0
+Component.innerOutlineWidth = 0
+Component.arrowType = triangle
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 0b94527b..dfe1953b 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties
@@ -14,98 +14,110 @@
# limitations under the License.
#
+#
+# This file is loaded for all themes.
+#
+# Documentation:
+# - https://www.formdev.com/flatlaf/properties-files/
+# - https://www.formdev.com/flatlaf/how-to-customize/
+#
+# NOTE: Avoid copying the whole content of this file to own properties files.
+# This will make upgrading to newer FlatLaf versions complex and error-prone.
+# Instead copy and modify only those properties that you need to alter.
+#
+
#---- UI delegates ----
-ButtonUI=com.formdev.flatlaf.ui.FlatButtonUI
-CheckBoxUI=com.formdev.flatlaf.ui.FlatCheckBoxUI
-CheckBoxMenuItemUI=com.formdev.flatlaf.ui.FlatCheckBoxMenuItemUI
-ColorChooserUI=com.formdev.flatlaf.ui.FlatColorChooserUI
-ComboBoxUI=com.formdev.flatlaf.ui.FlatComboBoxUI
-DesktopIconUI=com.formdev.flatlaf.ui.FlatDesktopIconUI
-DesktopPaneUI=com.formdev.flatlaf.ui.FlatDesktopPaneUI
-EditorPaneUI=com.formdev.flatlaf.ui.FlatEditorPaneUI
-FileChooserUI=com.formdev.flatlaf.ui.FlatFileChooserUI
-FormattedTextFieldUI=com.formdev.flatlaf.ui.FlatFormattedTextFieldUI
-InternalFrameUI=com.formdev.flatlaf.ui.FlatInternalFrameUI
-LabelUI=com.formdev.flatlaf.ui.FlatLabelUI
-ListUI=com.formdev.flatlaf.ui.FlatListUI
-MenuUI=com.formdev.flatlaf.ui.FlatMenuUI
-MenuBarUI=com.formdev.flatlaf.ui.FlatMenuBarUI
-MenuItemUI=com.formdev.flatlaf.ui.FlatMenuItemUI
-OptionPaneUI=com.formdev.flatlaf.ui.FlatOptionPaneUI
-PanelUI=com.formdev.flatlaf.ui.FlatPanelUI
-PasswordFieldUI=com.formdev.flatlaf.ui.FlatPasswordFieldUI
-PopupMenuUI=com.formdev.flatlaf.ui.FlatPopupMenuUI
-PopupMenuSeparatorUI=com.formdev.flatlaf.ui.FlatPopupMenuSeparatorUI
-ProgressBarUI=com.formdev.flatlaf.ui.FlatProgressBarUI
-RadioButtonUI=com.formdev.flatlaf.ui.FlatRadioButtonUI
-RadioButtonMenuItemUI=com.formdev.flatlaf.ui.FlatRadioButtonMenuItemUI
-RootPaneUI=com.formdev.flatlaf.ui.FlatRootPaneUI
-ScrollBarUI=com.formdev.flatlaf.ui.FlatScrollBarUI
-ScrollPaneUI=com.formdev.flatlaf.ui.FlatScrollPaneUI
-SeparatorUI=com.formdev.flatlaf.ui.FlatSeparatorUI
-SliderUI=com.formdev.flatlaf.ui.FlatSliderUI
-SpinnerUI=com.formdev.flatlaf.ui.FlatSpinnerUI
-SplitPaneUI=com.formdev.flatlaf.ui.FlatSplitPaneUI
-TabbedPaneUI=com.formdev.flatlaf.ui.FlatTabbedPaneUI
-TableUI=com.formdev.flatlaf.ui.FlatTableUI
-TableHeaderUI=com.formdev.flatlaf.ui.FlatTableHeaderUI
-TextAreaUI=com.formdev.flatlaf.ui.FlatTextAreaUI
-TextFieldUI=com.formdev.flatlaf.ui.FlatTextFieldUI
-TextPaneUI=com.formdev.flatlaf.ui.FlatTextPaneUI
-ToggleButtonUI=com.formdev.flatlaf.ui.FlatToggleButtonUI
-ToolBarUI=com.formdev.flatlaf.ui.FlatToolBarUI
-ToolBarSeparatorUI=com.formdev.flatlaf.ui.FlatToolBarSeparatorUI
-ToolTipUI=com.formdev.flatlaf.ui.FlatToolTipUI
-TreeUI=com.formdev.flatlaf.ui.FlatTreeUI
-ViewportUI=com.formdev.flatlaf.ui.FlatViewportUI
+ButtonUI = com.formdev.flatlaf.ui.FlatButtonUI
+CheckBoxUI = com.formdev.flatlaf.ui.FlatCheckBoxUI
+CheckBoxMenuItemUI = com.formdev.flatlaf.ui.FlatCheckBoxMenuItemUI
+ColorChooserUI = com.formdev.flatlaf.ui.FlatColorChooserUI
+ComboBoxUI = com.formdev.flatlaf.ui.FlatComboBoxUI
+DesktopIconUI = com.formdev.flatlaf.ui.FlatDesktopIconUI
+DesktopPaneUI = com.formdev.flatlaf.ui.FlatDesktopPaneUI
+EditorPaneUI = com.formdev.flatlaf.ui.FlatEditorPaneUI
+FileChooserUI = com.formdev.flatlaf.ui.FlatFileChooserUI
+FormattedTextFieldUI = com.formdev.flatlaf.ui.FlatFormattedTextFieldUI
+InternalFrameUI = com.formdev.flatlaf.ui.FlatInternalFrameUI
+LabelUI = com.formdev.flatlaf.ui.FlatLabelUI
+ListUI = com.formdev.flatlaf.ui.FlatListUI
+MenuUI = com.formdev.flatlaf.ui.FlatMenuUI
+MenuBarUI = com.formdev.flatlaf.ui.FlatMenuBarUI
+MenuItemUI = com.formdev.flatlaf.ui.FlatMenuItemUI
+OptionPaneUI = com.formdev.flatlaf.ui.FlatOptionPaneUI
+PanelUI = com.formdev.flatlaf.ui.FlatPanelUI
+PasswordFieldUI = com.formdev.flatlaf.ui.FlatPasswordFieldUI
+PopupMenuUI = com.formdev.flatlaf.ui.FlatPopupMenuUI
+PopupMenuSeparatorUI = com.formdev.flatlaf.ui.FlatPopupMenuSeparatorUI
+ProgressBarUI = com.formdev.flatlaf.ui.FlatProgressBarUI
+RadioButtonUI = com.formdev.flatlaf.ui.FlatRadioButtonUI
+RadioButtonMenuItemUI = com.formdev.flatlaf.ui.FlatRadioButtonMenuItemUI
+RootPaneUI = com.formdev.flatlaf.ui.FlatRootPaneUI
+ScrollBarUI = com.formdev.flatlaf.ui.FlatScrollBarUI
+ScrollPaneUI = com.formdev.flatlaf.ui.FlatScrollPaneUI
+SeparatorUI = com.formdev.flatlaf.ui.FlatSeparatorUI
+SliderUI = com.formdev.flatlaf.ui.FlatSliderUI
+SpinnerUI = com.formdev.flatlaf.ui.FlatSpinnerUI
+SplitPaneUI = com.formdev.flatlaf.ui.FlatSplitPaneUI
+TabbedPaneUI = com.formdev.flatlaf.ui.FlatTabbedPaneUI
+TableUI = com.formdev.flatlaf.ui.FlatTableUI
+TableHeaderUI = com.formdev.flatlaf.ui.FlatTableHeaderUI
+TextAreaUI = com.formdev.flatlaf.ui.FlatTextAreaUI
+TextFieldUI = com.formdev.flatlaf.ui.FlatTextFieldUI
+TextPaneUI = com.formdev.flatlaf.ui.FlatTextPaneUI
+ToggleButtonUI = com.formdev.flatlaf.ui.FlatToggleButtonUI
+ToolBarUI = com.formdev.flatlaf.ui.FlatToolBarUI
+ToolBarSeparatorUI = com.formdev.flatlaf.ui.FlatToolBarSeparatorUI
+ToolTipUI = com.formdev.flatlaf.ui.FlatToolTipUI
+TreeUI = com.formdev.flatlaf.ui.FlatTreeUI
+ViewportUI = com.formdev.flatlaf.ui.FlatViewportUI
#---- variables ----
-@textComponentMargin=2,6,2,6
-@menuItemMargin=3,6,3,6
+@textComponentMargin = 2,6,2,6
+@menuItemMargin = 3,6,3,6
-#---- globals ----
+#---- wildcard replacements ----
-*.background=@background
-*.foreground=@foreground
-*.caretForeground=@foreground
-*.inactiveBackground=@background
-*.inactiveForeground=@disabledText
-*.selectionBackground=@selectionBackground
-*.selectionForeground=@selectionForeground
-*.disabledBackground=@background
-*.disabledForeground=@disabledText
-*.disabledText=@disabledText
-*.acceleratorForeground=@menuAcceleratorForeground
-*.acceleratorSelectionForeground=@menuAcceleratorSelectionForeground
+*.background = @background
+*.foreground = @foreground
+*.caretForeground = @foreground
+*.inactiveBackground = @background
+*.inactiveForeground = @disabledText
+*.selectionBackground = @selectionBackground
+*.selectionForeground = @selectionForeground
+*.disabledBackground = @background
+*.disabledForeground = @disabledText
+*.disabledText = @disabledText
+*.acceleratorForeground = @menuAcceleratorForeground
+*.acceleratorSelectionForeground = @menuAcceleratorSelectionForeground
#---- system colors ----
-desktop=@textComponentBackground
-activeCaptionText=@foreground
-activeCaptionBorder=$activeCaption
-inactiveCaptionText=@foreground
-inactiveCaptionBorder=$inactiveCaption
-window=@background
-windowBorder=@foreground
-windowText=@foreground
-menu=@background
-menuText=@foreground
-text=@textComponentBackground
-textText=@foreground
-textHighlight=@selectionBackground
-textHighlightText=@selectionForeground
-textInactiveText=@disabledText
-control=@background
-controlText=@foreground
-controlShadow=$Component.borderColor
-scrollbar=$ScrollBar.track
-info=$ToolTip.background
-infoText=@foreground
+desktop = @textComponentBackground
+activeCaptionText = @foreground
+activeCaptionBorder = $activeCaption
+inactiveCaptionText = @foreground
+inactiveCaptionBorder = $inactiveCaption
+window = @background
+windowBorder = @foreground
+windowText = @foreground
+menu = @background
+menuText = @foreground
+text = @textComponentBackground
+textText = @foreground
+textHighlight = @selectionBackground
+textHighlightText = @selectionForeground
+textInactiveText = @disabledText
+control = @background
+controlText = @foreground
+controlShadow = $Component.borderColor
+scrollbar = $ScrollBar.track
+info = $ToolTip.background
+infoText = @foreground
#---- unused colors ----
@@ -113,656 +125,666 @@ infoText=@foreground
# Colors that are defined in BasicLookAndFeel but are not used in FlatLaf.
# Keep them for compatibility (if used in 3rd party app) and give them useful values.
-*.shadow=$controlShadow
-*.darkShadow=$controlDkShadow
-*.light=$controlHighlight
-*.highlight=$controlLtHighlight
+*.shadow = $controlShadow
+*.darkShadow = $controlDkShadow
+*.light = $controlHighlight
+*.highlight = $controlLtHighlight
-ComboBox.buttonShadow=$controlShadow
-ComboBox.buttonDarkShadow=$controlDkShadow
-ComboBox.buttonHighlight=$controlLtHighlight
+ComboBox.buttonShadow = $controlShadow
+ComboBox.buttonDarkShadow = $controlDkShadow
+ComboBox.buttonHighlight = $controlLtHighlight
-InternalFrame.borderColor=$control
-InternalFrame.borderShadow=$controlShadow
-InternalFrame.borderDarkShadow=$controlDkShadow
-InternalFrame.borderHighlight=$controlLtHighlight
-InternalFrame.borderLight=$controlHighlight
+InternalFrame.borderColor = $control
+InternalFrame.borderShadow = $controlShadow
+InternalFrame.borderDarkShadow = $controlDkShadow
+InternalFrame.borderHighlight = $controlLtHighlight
+InternalFrame.borderLight = $controlHighlight
-Label.disabledShadow=$controlShadow
+Label.disabledShadow = $controlShadow
-ScrollBar.trackHighlight=$controlDkShadow
-ScrollBar.thumbHighlight=$controlLtHighlight
-ScrollBar.thumbDarkShadow=$controlDkShadow
-ScrollBar.thumbShadow=$controlShadow
+ScrollBar.trackHighlight = $controlDkShadow
+ScrollBar.thumbHighlight = $controlLtHighlight
+ScrollBar.thumbDarkShadow = $controlDkShadow
+ScrollBar.thumbShadow = $controlShadow
-Slider.focus=$controlDkShadow
+Slider.focus = $controlDkShadow
-TabbedPane.focus=$controlText
+TabbedPane.focus = $controlText
#---- Button ----
-Button.border=com.formdev.flatlaf.ui.FlatButtonBorder
-Button.arc=6
-Button.minimumWidth=72
-Button.margin=2,14,2,14
-Button.iconTextGap=4
-Button.rollover=true
-Button.defaultButtonFollowsFocus=false
-[win]Button.defaultButtonFollowsFocus=true
+Button.border = com.formdev.flatlaf.ui.FlatButtonBorder
+Button.arc = 6
+Button.minimumWidth = 72
+Button.margin = 2,14,2,14
+Button.iconTextGap = 4
+Button.rollover = true
+Button.defaultButtonFollowsFocus = false
-Button.borderWidth=1
-Button.default.borderWidth=1
+Button.borderWidth = 1
+Button.default.borderWidth = 1
-Button.toolbar.margin=3,3,3,3
-Button.toolbar.spacingInsets=1,2,1,2
+Button.toolbar.margin = 3,3,3,3
+Button.toolbar.spacingInsets = 1,2,1,2
#---- Caret ----
-Caret.width={scaledInteger}1
+Caret.width = {scaledInteger}1
#---- CheckBox ----
-CheckBox.border=com.formdev.flatlaf.ui.FlatMarginBorder
-CheckBox.icon=com.formdev.flatlaf.icons.FlatCheckBoxIcon
-CheckBox.arc=4
-CheckBox.margin=2,2,2,2
-CheckBox.iconTextGap=4
-CheckBox.rollover=true
+CheckBox.border = com.formdev.flatlaf.ui.FlatMarginBorder
+CheckBox.icon = com.formdev.flatlaf.icons.FlatCheckBoxIcon
+CheckBox.arc = 4
+CheckBox.margin = 2,2,2,2
+CheckBox.iconTextGap = 4
+CheckBox.rollover = true
#---- CheckBoxMenuItem ----
-CheckBoxMenuItem.border=com.formdev.flatlaf.ui.FlatMenuItemBorder
-CheckBoxMenuItem.checkIcon=com.formdev.flatlaf.icons.FlatCheckBoxMenuItemIcon
-CheckBoxMenuItem.arrowIcon=com.formdev.flatlaf.icons.FlatMenuItemArrowIcon
-CheckBoxMenuItem.margin=@menuItemMargin
-CheckBoxMenuItem.opaque=false
-CheckBoxMenuItem.borderPainted=true
-CheckBoxMenuItem.background=@menuBackground
+CheckBoxMenuItem.border = com.formdev.flatlaf.ui.FlatMenuItemBorder
+CheckBoxMenuItem.checkIcon = com.formdev.flatlaf.icons.FlatCheckBoxMenuItemIcon
+CheckBoxMenuItem.arrowIcon = com.formdev.flatlaf.icons.FlatMenuItemArrowIcon
+CheckBoxMenuItem.margin = @menuItemMargin
+CheckBoxMenuItem.opaque = false
+CheckBoxMenuItem.borderPainted = true
+CheckBoxMenuItem.background = @menuBackground
#---- ColorChooser ----
-ColorChooser.swatchesSwatchSize={scaledDimension}16,16
-ColorChooser.swatchesRecentSwatchSize={scaledDimension}16,16
-ColorChooser.swatchesDefaultRecentColor=$control
+ColorChooser.swatchesSwatchSize = {scaledDimension}16,16
+ColorChooser.swatchesRecentSwatchSize = {scaledDimension}16,16
+ColorChooser.swatchesDefaultRecentColor = $control
#---- ComboBox ----
-ComboBox.border=com.formdev.flatlaf.ui.FlatRoundBorder
-ComboBox.padding=2,6,2,6
-ComboBox.minimumWidth=72
-ComboBox.editorColumns=0
-ComboBox.maximumRowCount=15
-[mac]ComboBox.showPopupOnNavigation=true
+ComboBox.border = com.formdev.flatlaf.ui.FlatRoundBorder
+ComboBox.padding = 2,6,2,6
+ComboBox.minimumWidth = 72
+ComboBox.editorColumns = 0
+ComboBox.maximumRowCount = 15
+[mac]ComboBox.showPopupOnNavigation = true
# allowed values: auto, button or none
-ComboBox.buttonStyle=auto
-ComboBox.background=@textComponentBackground
-ComboBox.buttonBackground=@textComponentBackground
+ComboBox.buttonStyle = auto
+ComboBox.background = @textComponentBackground
+ComboBox.buttonBackground = @textComponentBackground
+ComboBox.buttonArrowColor = @buttonArrowColor
+ComboBox.buttonDisabledArrowColor = @buttonDisabledArrowColor
+ComboBox.buttonHoverArrowColor = @buttonHoverArrowColor
+ComboBox.buttonPressedArrowColor = @buttonPressedArrowColor
#---- Component ----
-Component.focusWidth=0
-Component.innerFocusWidth={float}0.5
-Component.innerOutlineWidth={float}1
-Component.arc=5
-Component.minimumWidth=64
+Component.focusWidth = 0
+Component.innerFocusWidth = {float}0.5
+Component.innerOutlineWidth = {float}1
+Component.arc = 5
+Component.minimumWidth = 64
# allowed values: chevron or triangle
-Component.arrowType=chevron
-Component.hideMnemonics=true
+Component.arrowType = chevron
+Component.hideMnemonics = true
#---- DesktopIcon ----
-DesktopIcon.border=4,4,4,4
-DesktopIcon.iconSize=64,64
-DesktopIcon.closeSize=20,20
-DesktopIcon.closeIcon=com.formdev.flatlaf.icons.FlatInternalFrameCloseIcon
+DesktopIcon.border = 4,4,4,4
+DesktopIcon.iconSize = 64,64
+DesktopIcon.closeSize = 20,20
+DesktopIcon.closeIcon = com.formdev.flatlaf.icons.FlatInternalFrameCloseIcon
#---- EditorPane ----
-EditorPane.border=com.formdev.flatlaf.ui.FlatMarginBorder
-EditorPane.margin=@textComponentMargin
-EditorPane.background=@textComponentBackground
+EditorPane.border = com.formdev.flatlaf.ui.FlatMarginBorder
+EditorPane.margin = @textComponentMargin
+EditorPane.background = @textComponentBackground
#---- FileChooser ----
-FileChooser.newFolderIcon=com.formdev.flatlaf.icons.FlatFileChooserNewFolderIcon
-FileChooser.upFolderIcon=com.formdev.flatlaf.icons.FlatFileChooserUpFolderIcon
-FileChooser.homeFolderIcon=com.formdev.flatlaf.icons.FlatFileChooserHomeFolderIcon
-FileChooser.detailsViewIcon=com.formdev.flatlaf.icons.FlatFileChooserDetailsViewIcon
-FileChooser.listViewIcon=com.formdev.flatlaf.icons.FlatFileChooserListViewIcon
-FileChooser.usesSingleFilePane=true
-[win]FileChooser.useSystemExtensionHiding=true
+FileChooser.newFolderIcon = com.formdev.flatlaf.icons.FlatFileChooserNewFolderIcon
+FileChooser.upFolderIcon = com.formdev.flatlaf.icons.FlatFileChooserUpFolderIcon
+FileChooser.homeFolderIcon = com.formdev.flatlaf.icons.FlatFileChooserHomeFolderIcon
+FileChooser.detailsViewIcon = com.formdev.flatlaf.icons.FlatFileChooserDetailsViewIcon
+FileChooser.listViewIcon = com.formdev.flatlaf.icons.FlatFileChooserListViewIcon
+FileChooser.usesSingleFilePane = true
+[win]FileChooser.useSystemExtensionHiding = true
#---- FileView ----
-FileView.directoryIcon=com.formdev.flatlaf.icons.FlatFileViewDirectoryIcon
-FileView.fileIcon=com.formdev.flatlaf.icons.FlatFileViewFileIcon
-FileView.computerIcon=com.formdev.flatlaf.icons.FlatFileViewComputerIcon
-FileView.hardDriveIcon=com.formdev.flatlaf.icons.FlatFileViewHardDriveIcon
-FileView.floppyDriveIcon=com.formdev.flatlaf.icons.FlatFileViewFloppyDriveIcon
+FileView.directoryIcon = com.formdev.flatlaf.icons.FlatFileViewDirectoryIcon
+FileView.fileIcon = com.formdev.flatlaf.icons.FlatFileViewFileIcon
+FileView.computerIcon = com.formdev.flatlaf.icons.FlatFileViewComputerIcon
+FileView.hardDriveIcon = com.formdev.flatlaf.icons.FlatFileViewHardDriveIcon
+FileView.floppyDriveIcon = com.formdev.flatlaf.icons.FlatFileViewFloppyDriveIcon
#---- FormattedTextField ----
-FormattedTextField.border=com.formdev.flatlaf.ui.FlatTextBorder
-FormattedTextField.margin=@textComponentMargin
-FormattedTextField.background=@textComponentBackground
-FormattedTextField.placeholderForeground=@disabledText
+FormattedTextField.border = com.formdev.flatlaf.ui.FlatTextBorder
+FormattedTextField.margin = @textComponentMargin
+FormattedTextField.background = @textComponentBackground
+FormattedTextField.placeholderForeground = @disabledText
#---- HelpButton ----
-HelpButton.icon=com.formdev.flatlaf.icons.FlatHelpButtonIcon
-HelpButton.borderColor=$CheckBox.icon.borderColor
-HelpButton.disabledBorderColor=$CheckBox.icon.disabledBorderColor
-HelpButton.focusedBorderColor=$CheckBox.icon.focusedBorderColor
-HelpButton.hoverBorderColor=$?CheckBox.icon.hoverBorderColor
-HelpButton.background=$CheckBox.icon.background
-HelpButton.disabledBackground=$CheckBox.icon.disabledBackground
-HelpButton.focusedBackground=$?CheckBox.icon.focusedBackground
-HelpButton.hoverBackground=$?CheckBox.icon.hoverBackground
-HelpButton.pressedBackground=$?CheckBox.icon.pressedBackground
-HelpButton.questionMarkColor=$CheckBox.icon.checkmarkColor
-HelpButton.disabledQuestionMarkColor=$CheckBox.icon.disabledCheckmarkColor
+HelpButton.icon = com.formdev.flatlaf.icons.FlatHelpButtonIcon
+HelpButton.borderColor = $CheckBox.icon.borderColor
+HelpButton.disabledBorderColor = $CheckBox.icon.disabledBorderColor
+HelpButton.focusedBorderColor = $CheckBox.icon.focusedBorderColor
+HelpButton.hoverBorderColor = $?CheckBox.icon.hoverBorderColor
+HelpButton.background = $CheckBox.icon.background
+HelpButton.disabledBackground = $CheckBox.icon.disabledBackground
+HelpButton.focusedBackground = $?Button.focusedBackground
+HelpButton.hoverBackground = $?CheckBox.icon.hoverBackground
+HelpButton.pressedBackground = $?CheckBox.icon.pressedBackground
+HelpButton.questionMarkColor = $CheckBox.icon.checkmarkColor
+HelpButton.disabledQuestionMarkColor = $CheckBox.icon.disabledCheckmarkColor
+
+HelpButton.borderWidth = $?Button.borderWidth
+HelpButton.innerFocusWidth = $?Button.innerFocusWidth
#---- InternalFrame ----
-InternalFrame.border=com.formdev.flatlaf.ui.FlatInternalFrameUI$FlatInternalFrameBorder
-InternalFrame.borderLineWidth=1
-InternalFrame.borderMargins=6,6,6,6
-InternalFrame.buttonSize=24,24
-InternalFrame.closeIcon=com.formdev.flatlaf.icons.FlatInternalFrameCloseIcon
-InternalFrame.iconifyIcon=com.formdev.flatlaf.icons.FlatInternalFrameIconifyIcon
-InternalFrame.maximizeIcon=com.formdev.flatlaf.icons.FlatInternalFrameMaximizeIcon
-InternalFrame.minimizeIcon=com.formdev.flatlaf.icons.FlatInternalFrameRestoreIcon
-InternalFrame.windowBindings=null
+InternalFrame.border = com.formdev.flatlaf.ui.FlatInternalFrameUI$FlatInternalFrameBorder
+InternalFrame.borderLineWidth = 1
+InternalFrame.borderMargins = 6,6,6,6
+InternalFrame.buttonSize = 24,24
+InternalFrame.closeIcon = com.formdev.flatlaf.icons.FlatInternalFrameCloseIcon
+InternalFrame.iconifyIcon = com.formdev.flatlaf.icons.FlatInternalFrameIconifyIcon
+InternalFrame.maximizeIcon = com.formdev.flatlaf.icons.FlatInternalFrameMaximizeIcon
+InternalFrame.minimizeIcon = com.formdev.flatlaf.icons.FlatInternalFrameRestoreIcon
+InternalFrame.windowBindings = null
# drop shadow
-InternalFrame.dropShadowPainted=true
-InternalFrame.activeDropShadowColor=null
-InternalFrame.activeDropShadowInsets=5,5,6,6
-InternalFrame.inactiveDropShadowColor=null
-InternalFrame.inactiveDropShadowInsets=3,3,4,4
+InternalFrame.dropShadowPainted = true
+InternalFrame.activeDropShadowColor = null
+InternalFrame.activeDropShadowInsets = 5,5,6,6
+InternalFrame.inactiveDropShadowColor = null
+InternalFrame.inactiveDropShadowInsets = 3,3,4,4
#---- InternalFrameTitlePane ----
-InternalFrameTitlePane.border=0,8,0,0
+InternalFrameTitlePane.border = 0,8,0,0
#---- List ----
-List.border=0,0,0,0
-List.cellMargins=1,6,1,6
-List.cellFocusColor=@cellFocusColor
-List.cellNoFocusBorder=com.formdev.flatlaf.ui.FlatListCellBorder$Default
-List.focusCellHighlightBorder=com.formdev.flatlaf.ui.FlatListCellBorder$Focused
-List.focusSelectedCellHighlightBorder=com.formdev.flatlaf.ui.FlatListCellBorder$Selected
-List.background=@textComponentBackground
-List.selectionInactiveBackground=@selectionInactiveBackground
-List.selectionInactiveForeground=@selectionInactiveForeground
-List.dropCellBackground=@dropCellBackground
-List.dropCellForeground=@dropCellForeground
-List.dropLineColor=@dropLineColor
-List.showCellFocusIndicator=false
+List.border = 0,0,0,0
+List.cellMargins = 1,6,1,6
+List.cellFocusColor = @cellFocusColor
+List.cellNoFocusBorder = com.formdev.flatlaf.ui.FlatListCellBorder$Default
+List.focusCellHighlightBorder = com.formdev.flatlaf.ui.FlatListCellBorder$Focused
+List.focusSelectedCellHighlightBorder = com.formdev.flatlaf.ui.FlatListCellBorder$Selected
+List.background = @textComponentBackground
+List.selectionInactiveBackground = @selectionInactiveBackground
+List.selectionInactiveForeground = @selectionInactiveForeground
+List.dropCellBackground = @dropCellBackground
+List.dropCellForeground = @dropCellForeground
+List.dropLineColor = @dropLineColor
+List.showCellFocusIndicator = false
#---- Menu ----
-Menu.border=com.formdev.flatlaf.ui.FlatMenuItemBorder
-Menu.arrowIcon=com.formdev.flatlaf.icons.FlatMenuArrowIcon
-Menu.checkIcon=null
-Menu.margin=@menuItemMargin
-Menu.submenuPopupOffsetX={scaledInteger}-4
-Menu.submenuPopupOffsetY={scaledInteger}-4
-Menu.opaque=false
-Menu.borderPainted=true
-Menu.background=@menuBackground
+Menu.border = com.formdev.flatlaf.ui.FlatMenuItemBorder
+Menu.arrowIcon = com.formdev.flatlaf.icons.FlatMenuArrowIcon
+Menu.checkIcon = null
+Menu.margin = @menuItemMargin
+Menu.submenuPopupOffsetX = {scaledInteger}-4
+Menu.submenuPopupOffsetY = {scaledInteger}-4
+Menu.opaque = false
+Menu.borderPainted = true
+Menu.background = @menuBackground
#---- MenuBar ----
-MenuBar.border=com.formdev.flatlaf.ui.FlatMenuBarBorder
-MenuBar.background=@menuBackground
-MenuBar.hoverBackground=@menuHoverBackground
-MenuBar.itemMargins=3,8,3,8
+MenuBar.border = com.formdev.flatlaf.ui.FlatMenuBarBorder
+MenuBar.background = @menuBackground
+MenuBar.hoverBackground = @menuHoverBackground
+MenuBar.itemMargins = 3,8,3,8
#---- MenuItem ----
-MenuItem.border=com.formdev.flatlaf.ui.FlatMenuItemBorder
-MenuItem.arrowIcon=com.formdev.flatlaf.icons.FlatMenuItemArrowIcon
-MenuItem.checkIcon=null
-MenuItem.margin=@menuItemMargin
-MenuItem.opaque=false
-MenuItem.borderPainted=true
-MenuItem.background=@menuBackground
-MenuItem.checkBackground=@menuCheckBackground
-MenuItem.checkMargins=2,2,2,2
-MenuItem.minimumWidth=72
-MenuItem.minimumIconSize=16,16
-MenuItem.iconTextGap=6
-MenuItem.textAcceleratorGap=24
-MenuItem.textNoAcceleratorGap=6
-MenuItem.acceleratorArrowGap=2
-MenuItem.acceleratorDelimiter=-
-[mac]MenuItem.acceleratorDelimiter=
+MenuItem.border = com.formdev.flatlaf.ui.FlatMenuItemBorder
+MenuItem.arrowIcon = com.formdev.flatlaf.icons.FlatMenuItemArrowIcon
+MenuItem.checkIcon = null
+MenuItem.margin = @menuItemMargin
+MenuItem.opaque = false
+MenuItem.borderPainted = true
+MenuItem.background = @menuBackground
+MenuItem.checkBackground = @menuCheckBackground
+MenuItem.checkMargins = 2,2,2,2
+MenuItem.minimumWidth = 72
+MenuItem.minimumIconSize = 16,16
+MenuItem.iconTextGap = 6
+MenuItem.textAcceleratorGap = 24
+MenuItem.textNoAcceleratorGap = 6
+MenuItem.acceleratorArrowGap = 2
+MenuItem.acceleratorDelimiter = -
+[mac]MenuItem.acceleratorDelimiter =
-# for MenuItem.selectionType=underline
-MenuItem.underlineSelectionBackground=@menuHoverBackground
-MenuItem.underlineSelectionCheckBackground=@menuCheckBackground
-MenuItem.underlineSelectionColor=$TabbedPane.underlineColor
-MenuItem.underlineSelectionHeight=3
+# for MenuItem.selectionType = underline
+MenuItem.underlineSelectionBackground = @menuHoverBackground
+MenuItem.underlineSelectionCheckBackground = @menuCheckBackground
+MenuItem.underlineSelectionColor = $TabbedPane.underlineColor
+MenuItem.underlineSelectionHeight = 3
#---- OptionPane ----
-OptionPane.border=12,12,12,12
-OptionPane.messageAreaBorder=0,0,0,0
-OptionPane.buttonAreaBorder=12,0,0,0
-OptionPane.messageForeground=null
+OptionPane.border = 12,12,12,12
+OptionPane.messageAreaBorder = 0,0,0,0
+OptionPane.buttonAreaBorder = 12,0,0,0
+OptionPane.messageForeground = null
-OptionPane.maxCharactersPerLine=80
-OptionPane.iconMessageGap=16
-OptionPane.messagePadding=3
-OptionPane.buttonPadding=8
-OptionPane.buttonMinimumWidth={scaledInteger}72
-OptionPane.sameSizeButtons=true
-OptionPane.setButtonMargin=false
-OptionPane.buttonOrientation=4
-[mac]OptionPane.isYesLast=true
+OptionPane.maxCharactersPerLine = 80
+OptionPane.iconMessageGap = 16
+OptionPane.messagePadding = 3
+OptionPane.buttonPadding = 8
+OptionPane.buttonMinimumWidth = {scaledInteger}72
+OptionPane.sameSizeButtons = true
+OptionPane.setButtonMargin = false
+OptionPane.buttonOrientation = 4
+[mac]OptionPane.isYesLast = true
-OptionPane.errorIcon=com.formdev.flatlaf.icons.FlatOptionPaneErrorIcon
-OptionPane.informationIcon=com.formdev.flatlaf.icons.FlatOptionPaneInformationIcon
-OptionPane.questionIcon=com.formdev.flatlaf.icons.FlatOptionPaneQuestionIcon
-OptionPane.warningIcon=com.formdev.flatlaf.icons.FlatOptionPaneWarningIcon
+OptionPane.errorIcon = com.formdev.flatlaf.icons.FlatOptionPaneErrorIcon
+OptionPane.informationIcon = com.formdev.flatlaf.icons.FlatOptionPaneInformationIcon
+OptionPane.questionIcon = com.formdev.flatlaf.icons.FlatOptionPaneQuestionIcon
+OptionPane.warningIcon = com.formdev.flatlaf.icons.FlatOptionPaneWarningIcon
#---- PasswordField ----
-PasswordField.border=com.formdev.flatlaf.ui.FlatTextBorder
-PasswordField.margin=@textComponentMargin
-PasswordField.background=@textComponentBackground
-PasswordField.placeholderForeground=@disabledText
-PasswordField.echoChar=\u2022
-PasswordField.showCapsLock=true
-PasswordField.capsLockIcon=com.formdev.flatlaf.icons.FlatCapsLockIcon
+PasswordField.border = com.formdev.flatlaf.ui.FlatTextBorder
+PasswordField.margin = @textComponentMargin
+PasswordField.background = @textComponentBackground
+PasswordField.placeholderForeground = @disabledText
+PasswordField.echoChar = \u2022
+PasswordField.showCapsLock = true
+PasswordField.capsLockIcon = com.formdev.flatlaf.icons.FlatCapsLockIcon
#---- Popup ----
-Popup.dropShadowPainted=true
-Popup.dropShadowInsets=-4,-4,4,4
+Popup.dropShadowPainted = true
+Popup.dropShadowInsets = -4,-4,4,4
#---- PopupMenu ----
-PopupMenu.border=com.formdev.flatlaf.ui.FlatPopupMenuBorder
-PopupMenu.borderInsets=4,1,4,1
-PopupMenu.background=@menuBackground
+PopupMenu.border = com.formdev.flatlaf.ui.FlatPopupMenuBorder
+PopupMenu.borderInsets = 4,1,4,1
+PopupMenu.background = @menuBackground
#---- PopupMenuSeparator ----
-PopupMenuSeparator.height=9
-PopupMenuSeparator.stripeWidth=1
-PopupMenuSeparator.stripeIndent=4
+PopupMenuSeparator.height = 9
+PopupMenuSeparator.stripeWidth = 1
+PopupMenuSeparator.stripeIndent = 4
#---- ProgressBar ----
-ProgressBar.border=com.formdev.flatlaf.ui.FlatEmptyBorder
-ProgressBar.arc=4
-ProgressBar.horizontalSize=146,4
-ProgressBar.verticalSize=4,146
-ProgressBar.cycleTime=4000
-ProgressBar.repaintInterval=15
+ProgressBar.border = com.formdev.flatlaf.ui.FlatEmptyBorder
+ProgressBar.arc = 4
+ProgressBar.horizontalSize = 146,4
+ProgressBar.verticalSize = 4,146
+ProgressBar.cycleTime = 4000
+ProgressBar.repaintInterval = 15
#---- RadioButton ----
-RadioButton.border=com.formdev.flatlaf.ui.FlatMarginBorder
-RadioButton.icon=com.formdev.flatlaf.icons.FlatRadioButtonIcon
-RadioButton.icon.centerDiameter=8
-RadioButton.icon[filled].centerDiameter=5
-RadioButton.margin=2,2,2,2
-RadioButton.iconTextGap=4
-RadioButton.rollover=true
+RadioButton.border = com.formdev.flatlaf.ui.FlatMarginBorder
+RadioButton.icon = com.formdev.flatlaf.icons.FlatRadioButtonIcon
+RadioButton.icon.centerDiameter = 8
+RadioButton.icon[filled].centerDiameter = 5
+RadioButton.margin = 2,2,2,2
+RadioButton.iconTextGap = 4
+RadioButton.rollover = true
#---- RadioButtonMenuItem ----
-RadioButtonMenuItem.border=com.formdev.flatlaf.ui.FlatMenuItemBorder
-RadioButtonMenuItem.checkIcon=com.formdev.flatlaf.icons.FlatRadioButtonMenuItemIcon
-RadioButtonMenuItem.arrowIcon=com.formdev.flatlaf.icons.FlatMenuItemArrowIcon
-RadioButtonMenuItem.margin=@menuItemMargin
-RadioButtonMenuItem.opaque=false
-RadioButtonMenuItem.borderPainted=true
-RadioButtonMenuItem.background=@menuBackground
+RadioButtonMenuItem.border = com.formdev.flatlaf.ui.FlatMenuItemBorder
+RadioButtonMenuItem.checkIcon = com.formdev.flatlaf.icons.FlatRadioButtonMenuItemIcon
+RadioButtonMenuItem.arrowIcon = com.formdev.flatlaf.icons.FlatMenuItemArrowIcon
+RadioButtonMenuItem.margin = @menuItemMargin
+RadioButtonMenuItem.opaque = false
+RadioButtonMenuItem.borderPainted = true
+RadioButtonMenuItem.background = @menuBackground
#---- RootPane ----
-RootPane.border=com.formdev.flatlaf.ui.FlatRootPaneUI$FlatWindowBorder
-RootPane.borderDragThickness=5
-RootPane.cornerDragWidth=16
-RootPane.honorFrameMinimumSizeOnResize=false
-RootPane.honorDialogMinimumSizeOnResize=true
+RootPane.border = com.formdev.flatlaf.ui.FlatRootPaneUI$FlatWindowBorder
+RootPane.borderDragThickness = 5
+RootPane.cornerDragWidth = 16
+RootPane.honorFrameMinimumSizeOnResize = false
+RootPane.honorDialogMinimumSizeOnResize = true
#---- ScrollBar ----
-ScrollBar.width=10
-ScrollBar.minimumThumbSize=10,10
-ScrollBar.maximumThumbSize=100000,100000
-ScrollBar.trackInsets=0,0,0,0
-ScrollBar.thumbInsets=0,0,0,0
-ScrollBar.trackArc=0
-ScrollBar.thumbArc=0
-ScrollBar.hoverThumbWithTrack=false
-ScrollBar.pressedThumbWithTrack=false
-ScrollBar.showButtons=false
-ScrollBar.squareButtons=false
-ScrollBar.buttonArrowColor=$ComboBox.buttonArrowColor
-ScrollBar.buttonDisabledArrowColor=$ComboBox.buttonDisabledArrowColor
-ScrollBar.allowsAbsolutePositioning=true
+ScrollBar.width = 10
+ScrollBar.minimumThumbSize = 10,10
+ScrollBar.maximumThumbSize = 100000,100000
+ScrollBar.trackInsets = 0,0,0,0
+ScrollBar.thumbInsets = 0,0,0,0
+ScrollBar.trackArc = 0
+ScrollBar.thumbArc = 0
+ScrollBar.hoverThumbWithTrack = false
+ScrollBar.pressedThumbWithTrack = false
+ScrollBar.showButtons = false
+ScrollBar.squareButtons = false
+ScrollBar.buttonArrowColor = @buttonArrowColor
+ScrollBar.buttonDisabledArrowColor = @buttonDisabledArrowColor
+ScrollBar.allowsAbsolutePositioning = true
-[mac]ScrollBar.minimumThumbSize=18,18
-[mac]ScrollBar.thumbInsets=2,2,2,2
-[mac]ScrollBar.thumbArc=999
-[mac]ScrollBar.hoverThumbWithTrack=true
+[mac]ScrollBar.minimumThumbSize = 18,18
+[mac]ScrollBar.thumbInsets = 2,2,2,2
+[mac]ScrollBar.thumbArc = 999
+[mac]ScrollBar.hoverThumbWithTrack = true
-[linux]ScrollBar.minimumThumbSize=18,18
-[linux]ScrollBar.thumbInsets=2,2,2,2
-[linux]ScrollBar.thumbArc=999
+[linux]ScrollBar.minimumThumbSize = 18,18
+[linux]ScrollBar.thumbInsets = 2,2,2,2
+[linux]ScrollBar.thumbArc = 999
#---- ScrollPane ----
-ScrollPane.border=com.formdev.flatlaf.ui.FlatBorder
-ScrollPane.background=$ScrollBar.track
-ScrollPane.fillUpperCorner=true
-ScrollPane.smoothScrolling=true
+ScrollPane.border = com.formdev.flatlaf.ui.FlatBorder
+ScrollPane.background = $ScrollBar.track
+ScrollPane.fillUpperCorner = true
+ScrollPane.smoothScrolling = true
#---- Separator ----
-Separator.height=3
-Separator.stripeWidth=1
-Separator.stripeIndent=1
+Separator.height = 3
+Separator.stripeWidth = 1
+Separator.stripeIndent = 1
#---- Slider ----
-Slider.focusInsets=0,0,0,0
-Slider.trackWidth=3
-Slider.thumbWidth=11
+Slider.focusInsets = 0,0,0,0
+Slider.trackWidth = 2
+Slider.thumbSize = 12,12
+Slider.focusWidth = 4
#---- Spinner ----
-Spinner.border=com.formdev.flatlaf.ui.FlatRoundBorder
-Spinner.background=@textComponentBackground
-Spinner.buttonBackground=$ComboBox.buttonEditableBackground
-Spinner.buttonArrowColor=$ComboBox.buttonArrowColor
-Spinner.buttonDisabledArrowColor=$ComboBox.buttonDisabledArrowColor
-Spinner.buttonHoverArrowColor=$ComboBox.buttonHoverArrowColor
-Spinner.padding=@textComponentMargin
-Spinner.editorBorderPainted=false
+Spinner.border = com.formdev.flatlaf.ui.FlatRoundBorder
+Spinner.background = @textComponentBackground
+Spinner.buttonBackground = $ComboBox.buttonEditableBackground
+Spinner.buttonArrowColor = @buttonArrowColor
+Spinner.buttonDisabledArrowColor = @buttonDisabledArrowColor
+Spinner.buttonHoverArrowColor = @buttonHoverArrowColor
+Spinner.buttonPressedArrowColor = @buttonPressedArrowColor
+Spinner.padding = @textComponentMargin
+Spinner.editorBorderPainted = false
# allowed values: button or none
-Spinner.buttonStyle=button
+Spinner.buttonStyle = button
#---- SplitPane ----
-SplitPane.dividerSize={integer}5
-SplitPane.continuousLayout=true
-SplitPane.border=null
-SplitPane.centerOneTouchButtons=true
-SplitPane.oneTouchButtonSize={scaledInteger}6
-SplitPane.oneTouchButtonOffset={scaledInteger}2
+SplitPane.dividerSize = {integer}5
+SplitPane.continuousLayout = true
+SplitPane.border = null
+SplitPane.centerOneTouchButtons = true
+SplitPane.oneTouchButtonSize = {scaledInteger}6
+SplitPane.oneTouchButtonOffset = {scaledInteger}2
-SplitPaneDivider.border=null
-SplitPaneDivider.oneTouchArrowColor=$ComboBox.buttonArrowColor
+SplitPaneDivider.border = null
+SplitPaneDivider.oneTouchArrowColor = @buttonArrowColor
+SplitPaneDivider.oneTouchHoverArrowColor = @buttonHoverArrowColor
+SplitPaneDivider.oneTouchPressedArrowColor = @buttonPressedArrowColor
# allowed values: grip or plain
-SplitPaneDivider.style=grip
-SplitPaneDivider.gripColor=@icon
-SplitPaneDivider.gripDotCount=3
-SplitPaneDivider.gripDotSize={integer}3
-SplitPaneDivider.gripGap=2
+SplitPaneDivider.style = grip
+SplitPaneDivider.gripColor = @icon
+SplitPaneDivider.gripDotCount = 3
+SplitPaneDivider.gripDotSize = {integer}3
+SplitPaneDivider.gripGap = 2
#---- TabbedPane ----
-TabbedPane.tabHeight=32
-TabbedPane.tabSelectionHeight=3
-TabbedPane.contentSeparatorHeight=1
-TabbedPane.showTabSeparators=false
-TabbedPane.tabSeparatorsFullHeight=false
-TabbedPane.hasFullBorder=false
-TabbedPane.tabInsets=4,12,4,12
-TabbedPane.tabAreaInsets=0,0,0,0
-TabbedPane.selectedTabPadInsets=0,0,0,0
-TabbedPane.tabRunOverlay=0
-TabbedPane.tabsOverlapBorder=false
-TabbedPane.disabledForeground=@disabledText
-TabbedPane.shadow=@background
-TabbedPane.contentBorderInsets=null
+TabbedPane.tabHeight = 32
+TabbedPane.tabSelectionHeight = 3
+TabbedPane.contentSeparatorHeight = 1
+TabbedPane.showTabSeparators = false
+TabbedPane.tabSeparatorsFullHeight = false
+TabbedPane.hasFullBorder = false
+TabbedPane.tabInsets = 4,12,4,12
+TabbedPane.tabAreaInsets = 0,0,0,0
+TabbedPane.selectedTabPadInsets = 0,0,0,0
+TabbedPane.tabRunOverlay = 0
+TabbedPane.tabsOverlapBorder = false
+TabbedPane.disabledForeground = @disabledText
+TabbedPane.shadow = @background
+TabbedPane.contentBorderInsets = null
# allowed values: moreTabsButton or arrowButtons
-TabbedPane.hiddenTabsNavigation=moreTabsButton
+TabbedPane.hiddenTabsNavigation = moreTabsButton
# allowed values: leading, trailing, center or fill
-TabbedPane.tabAreaAlignment=leading
+TabbedPane.tabAreaAlignment = leading
# allowed values: leading, trailing or center
-TabbedPane.tabAlignment=center
+TabbedPane.tabAlignment = center
# allowed values: preferred, equal or compact
-TabbedPane.tabWidthMode=preferred
+TabbedPane.tabWidthMode = preferred
# allowed values: chevron or triangle
-TabbedPane.arrowType=chevron
-TabbedPane.buttonInsets=2,1,2,1
-TabbedPane.buttonArc=$Button.arc
+TabbedPane.arrowType = chevron
+TabbedPane.buttonInsets = 2,1,2,1
+TabbedPane.buttonArc = $Button.arc
# allowed values: wrap or scroll
-#TabbedPane.tabLayoutPolicy=scroll
+#TabbedPane.tabLayoutPolicy = scroll
# allowed values: never or asNeeded
-TabbedPane.tabsPopupPolicy=asNeeded
+TabbedPane.tabsPopupPolicy = asNeeded
# allowed values: never, asNeeded or asNeededSingle
-TabbedPane.scrollButtonsPolicy=asNeededSingle
+TabbedPane.scrollButtonsPolicy = asNeededSingle
# allowed values: both or trailing
-TabbedPane.scrollButtonsPlacement=both
+TabbedPane.scrollButtonsPlacement = both
-TabbedPane.closeIcon=com.formdev.flatlaf.icons.FlatTabbedPaneCloseIcon
-TabbedPane.closeSize=16,16
-TabbedPane.closeArc=4
-TabbedPane.closeCrossPlainSize={float}7.5
-TabbedPane.closeCrossFilledSize=$TabbedPane.closeCrossPlainSize
-TabbedPane.closeCrossLineWidth={float}1
+TabbedPane.closeIcon = com.formdev.flatlaf.icons.FlatTabbedPaneCloseIcon
+TabbedPane.closeSize = 16,16
+TabbedPane.closeArc = 4
+TabbedPane.closeCrossPlainSize = {float}7.5
+TabbedPane.closeCrossFilledSize = $TabbedPane.closeCrossPlainSize
+TabbedPane.closeCrossLineWidth = {float}1
#---- Table ----
-Table.rowHeight=20
-Table.showHorizontalLines=false
-Table.showVerticalLines=false
-Table.consistentHomeEndKeyBehavior=true
-Table.intercellSpacing={dimension}0,0
-Table.scrollPaneBorder=com.formdev.flatlaf.ui.FlatBorder
-Table.ascendingSortIcon=com.formdev.flatlaf.icons.FlatAscendingSortIcon
-Table.descendingSortIcon=com.formdev.flatlaf.icons.FlatDescendingSortIcon
-Table.sortIconColor=@icon
-Table.cellMargins=2,3,2,3
-Table.cellFocusColor=@cellFocusColor
-Table.cellNoFocusBorder=com.formdev.flatlaf.ui.FlatTableCellBorder$Default
-Table.focusCellHighlightBorder=com.formdev.flatlaf.ui.FlatTableCellBorder$Focused
-Table.focusSelectedCellHighlightBorder=com.formdev.flatlaf.ui.FlatTableCellBorder$Selected
-Table.focusCellBackground=@textComponentBackground
-Table.focusCellForeground=@foreground
-Table.background=@textComponentBackground
-Table.selectionInactiveBackground=@selectionInactiveBackground
-Table.selectionInactiveForeground=@selectionInactiveForeground
-Table.dropCellBackground=@dropCellBackground
-Table.dropCellForeground=@dropCellForeground
-Table.dropLineColor=@dropLineColor
-Table.dropLineShortColor=@dropLineShortColor
+Table.rowHeight = 20
+Table.showHorizontalLines = false
+Table.showVerticalLines = false
+Table.consistentHomeEndKeyBehavior = true
+Table.intercellSpacing = {dimension}0,0
+Table.scrollPaneBorder = com.formdev.flatlaf.ui.FlatBorder
+Table.ascendingSortIcon = com.formdev.flatlaf.icons.FlatAscendingSortIcon
+Table.descendingSortIcon = com.formdev.flatlaf.icons.FlatDescendingSortIcon
+Table.sortIconColor = @icon
+Table.cellMargins = 2,3,2,3
+Table.cellFocusColor = @cellFocusColor
+Table.cellNoFocusBorder = com.formdev.flatlaf.ui.FlatTableCellBorder$Default
+Table.focusCellHighlightBorder = com.formdev.flatlaf.ui.FlatTableCellBorder$Focused
+Table.focusSelectedCellHighlightBorder = com.formdev.flatlaf.ui.FlatTableCellBorder$Selected
+Table.focusCellBackground = @textComponentBackground
+Table.focusCellForeground = @foreground
+Table.background = @textComponentBackground
+Table.selectionInactiveBackground = @selectionInactiveBackground
+Table.selectionInactiveForeground = @selectionInactiveForeground
+Table.dropCellBackground = @dropCellBackground
+Table.dropCellForeground = @dropCellForeground
+Table.dropLineColor = @dropLineColor
+Table.dropLineShortColor = @dropLineShortColor
#---- TableHeader ----
-TableHeader.height=25
-TableHeader.cellBorder=2,3,2,3
-TableHeader.focusCellBackground=$TableHeader.background
-TableHeader.background=@textComponentBackground
+TableHeader.height = 25
+TableHeader.cellBorder = 2,3,2,3
+TableHeader.focusCellBackground = $TableHeader.background
+TableHeader.background = @textComponentBackground
#---- TextArea ----
-TextArea.border=com.formdev.flatlaf.ui.FlatMarginBorder
-TextArea.margin=@textComponentMargin
-TextArea.background=@textComponentBackground
+TextArea.border = com.formdev.flatlaf.ui.FlatMarginBorder
+TextArea.margin = @textComponentMargin
+TextArea.background = @textComponentBackground
#---- TextComponent ----
# allowed values: never, once or always
-TextComponent.selectAllOnFocusPolicy=once
-TextComponent.selectAllOnMouseClick=false
-TextComponent.arc=0
+TextComponent.selectAllOnFocusPolicy = once
+TextComponent.selectAllOnMouseClick = false
+TextComponent.arc = 0
#---- TextField ----
-TextField.border=com.formdev.flatlaf.ui.FlatTextBorder
-TextField.margin=@textComponentMargin
-TextField.background=@textComponentBackground
-TextField.placeholderForeground=@disabledText
+TextField.border = com.formdev.flatlaf.ui.FlatTextBorder
+TextField.margin = @textComponentMargin
+TextField.background = @textComponentBackground
+TextField.placeholderForeground = @disabledText
#---- TextPane ----
-TextPane.border=com.formdev.flatlaf.ui.FlatMarginBorder
-TextPane.margin=@textComponentMargin
-TextPane.background=@textComponentBackground
+TextPane.border = com.formdev.flatlaf.ui.FlatMarginBorder
+TextPane.margin = @textComponentMargin
+TextPane.background = @textComponentBackground
#---- TitledBorder ----
-TitledBorder.titleColor=@foreground
-TitledBorder.border=1,1,1,1,$Separator.foreground
+TitledBorder.titleColor = @foreground
+TitledBorder.border = 1,1,1,1,$Separator.foreground
#---- TitlePane ----
-TitlePane.menuBarEmbedded=true
-TitlePane.iconSize=16,16
-TitlePane.iconMargins=3,8,3,0
-TitlePane.menuBarMargins=0,8,0,22
-TitlePane.titleMargins=3,8,3,8
-TitlePane.buttonSize=44,30
-TitlePane.buttonMaximizedHeight=22
-TitlePane.closeIcon=com.formdev.flatlaf.icons.FlatWindowCloseIcon
-TitlePane.iconifyIcon=com.formdev.flatlaf.icons.FlatWindowIconifyIcon
-TitlePane.maximizeIcon=com.formdev.flatlaf.icons.FlatWindowMaximizeIcon
-TitlePane.restoreIcon=com.formdev.flatlaf.icons.FlatWindowRestoreIcon
+TitlePane.menuBarEmbedded = true
+TitlePane.iconSize = 16,16
+TitlePane.iconMargins = 3,8,3,0
+TitlePane.menuBarMargins = 0,8,0,22
+TitlePane.titleMargins = 3,8,3,8
+TitlePane.buttonSize = 44,30
+TitlePane.buttonMaximizedHeight = 22
+TitlePane.closeIcon = com.formdev.flatlaf.icons.FlatWindowCloseIcon
+TitlePane.iconifyIcon = com.formdev.flatlaf.icons.FlatWindowIconifyIcon
+TitlePane.maximizeIcon = com.formdev.flatlaf.icons.FlatWindowMaximizeIcon
+TitlePane.restoreIcon = com.formdev.flatlaf.icons.FlatWindowRestoreIcon
-TitlePane.background=$MenuBar.background
-TitlePane.inactiveBackground=$TitlePane.background
-TitlePane.foreground=@foreground
-TitlePane.inactiveForeground=@disabledText
+TitlePane.background = $MenuBar.background
+TitlePane.inactiveBackground = $TitlePane.background
+TitlePane.foreground = @foreground
+TitlePane.inactiveForeground = @disabledText
-TitlePane.closeHoverBackground=#e81123
-TitlePane.closePressedBackground=rgba($TitlePane.closeHoverBackground,60%)
-TitlePane.closeHoverForeground=#fff
-TitlePane.closePressedForeground=#fff
+TitlePane.closeHoverBackground = #e81123
+TitlePane.closePressedBackground = fade($TitlePane.closeHoverBackground,60%)
+TitlePane.closeHoverForeground = #fff
+TitlePane.closePressedForeground = #fff
#---- ToggleButton ----
-ToggleButton.border=com.formdev.flatlaf.ui.FlatButtonBorder
-ToggleButton.margin=2,14,2,14
-ToggleButton.iconTextGap=4
-ToggleButton.rollover=true
+ToggleButton.border = com.formdev.flatlaf.ui.FlatButtonBorder
+ToggleButton.margin = 2,14,2,14
+ToggleButton.iconTextGap = 4
+ToggleButton.rollover = true
-ToggleButton.background=$Button.background
-ToggleButton.pressedBackground=$Button.pressedBackground
-ToggleButton.selectedForeground=@foreground
+ToggleButton.background = $Button.background
+ToggleButton.pressedBackground = $Button.pressedBackground
+ToggleButton.selectedForeground = @foreground
-ToggleButton.toolbar.hoverBackground=$Button.toolbar.hoverBackground
-ToggleButton.toolbar.pressedBackground=$Button.toolbar.pressedBackground
+ToggleButton.toolbar.hoverBackground = $Button.toolbar.hoverBackground
+ToggleButton.toolbar.pressedBackground = $Button.toolbar.pressedBackground
# button type "tab"
-ToggleButton.tab.underlineHeight=2
-ToggleButton.tab.underlineColor=$TabbedPane.underlineColor
-ToggleButton.tab.disabledUnderlineColor=$TabbedPane.disabledUnderlineColor
-ToggleButton.tab.selectedBackground=$?TabbedPane.selectedBackground
-ToggleButton.tab.hoverBackground=$TabbedPane.hoverColor
-ToggleButton.tab.focusBackground=$TabbedPane.focusColor
+ToggleButton.tab.underlineHeight = 2
+ToggleButton.tab.underlineColor = $TabbedPane.underlineColor
+ToggleButton.tab.disabledUnderlineColor = $TabbedPane.disabledUnderlineColor
+ToggleButton.tab.selectedBackground = $?TabbedPane.selectedBackground
+ToggleButton.tab.hoverBackground = $TabbedPane.hoverColor
+ToggleButton.tab.focusBackground = $TabbedPane.focusColor
#---- ToolBar ----
-ToolBar.border=com.formdev.flatlaf.ui.FlatToolBarBorder
-ToolBar.borderMargins=2,2,2,2
-ToolBar.isRollover=true
-ToolBar.gripColor=@icon
-ToolBar.dockingBackground=@background
-ToolBar.dockingForeground=@foreground
-ToolBar.floatingBackground=@background
-ToolBar.floatingForeground=@disabledText
+ToolBar.border = com.formdev.flatlaf.ui.FlatToolBarBorder
+ToolBar.borderMargins = 2,2,2,2
+ToolBar.isRollover = true
+ToolBar.gripColor = @icon
+ToolBar.dockingBackground = @background
+ToolBar.dockingForeground = @foreground
+ToolBar.floatingBackground = @background
+ToolBar.floatingForeground = @disabledText
-ToolBar.separatorSize=null
-ToolBar.separatorWidth=7
-ToolBar.separatorColor=$Separator.foreground
+ToolBar.separatorSize = null
+ToolBar.separatorWidth = 7
+ToolBar.separatorColor = $Separator.foreground
-ToolBar.spacingBorder=$Button.toolbar.spacingInsets
+ToolBar.spacingBorder = $Button.toolbar.spacingInsets
#---- ToolTipManager ----
-ToolTipManager.enableToolTipMode=activeApplication
+ToolTipManager.enableToolTipMode = activeApplication
#---- Tree ----
-Tree.border=1,1,1,1
-Tree.editorBorder=1,1,1,1,@cellFocusColor
-Tree.background=@textComponentBackground
-Tree.selectionInactiveBackground=@selectionInactiveBackground
-Tree.selectionInactiveForeground=@selectionInactiveForeground
-Tree.textBackground=$Tree.background
-Tree.textForeground=$Tree.foreground
-Tree.selectionBorderColor=@cellFocusColor
-Tree.dropCellBackground=@dropCellBackground
-Tree.dropCellForeground=@dropCellForeground
-Tree.dropLineColor=@dropLineColor
-Tree.rendererFillBackground=false
-Tree.rendererMargins=1,2,1,2
-Tree.wideSelection=true
-Tree.repaintWholeRow=true
-Tree.paintLines=false
-Tree.showCellFocusIndicator=false
-Tree.leftChildIndent=7
-Tree.rightChildIndent=11
-Tree.rowHeight=0
+Tree.border = 1,1,1,1
+Tree.editorBorder = 1,1,1,1,@cellFocusColor
+Tree.background = @textComponentBackground
+Tree.selectionInactiveBackground = @selectionInactiveBackground
+Tree.selectionInactiveForeground = @selectionInactiveForeground
+Tree.textBackground = $Tree.background
+Tree.textForeground = $Tree.foreground
+Tree.selectionBorderColor = @cellFocusColor
+Tree.dropCellBackground = @dropCellBackground
+Tree.dropCellForeground = @dropCellForeground
+Tree.dropLineColor = @dropLineColor
+Tree.rendererFillBackground = false
+Tree.rendererMargins = 1,2,1,2
+Tree.wideSelection = true
+Tree.repaintWholeRow = true
+Tree.paintLines = false
+Tree.showCellFocusIndicator = false
+Tree.leftChildIndent = 7
+Tree.rightChildIndent = 11
+Tree.rowHeight = 0
-Tree.expandedIcon=com.formdev.flatlaf.icons.FlatTreeExpandedIcon
-Tree.collapsedIcon=com.formdev.flatlaf.icons.FlatTreeCollapsedIcon
-Tree.leafIcon=com.formdev.flatlaf.icons.FlatTreeLeafIcon
-Tree.closedIcon=com.formdev.flatlaf.icons.FlatTreeClosedIcon
-Tree.openIcon=com.formdev.flatlaf.icons.FlatTreeOpenIcon
+Tree.expandedIcon = com.formdev.flatlaf.icons.FlatTreeExpandedIcon
+Tree.collapsedIcon = com.formdev.flatlaf.icons.FlatTreeCollapsedIcon
+Tree.leafIcon = com.formdev.flatlaf.icons.FlatTreeLeafIcon
+Tree.closedIcon = com.formdev.flatlaf.icons.FlatTreeClosedIcon
+Tree.openIcon = com.formdev.flatlaf.icons.FlatTreeOpenIcon
-Tree.icon.expandedColor=@icon
-Tree.icon.collapsedColor=@icon
-Tree.icon.leafColor=@icon
-Tree.icon.closedColor=@icon
-Tree.icon.openColor=@icon
+Tree.icon.expandedColor = @icon
+Tree.icon.collapsedColor = @icon
+Tree.icon.leafColor = @icon
+Tree.icon.closedColor = @icon
+Tree.icon.openColor = @icon
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties
index 029a3868..340becb0 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties
@@ -14,305 +14,325 @@
# limitations under the License.
#
+#
+# This file is loaded for all light themes (that extend class FlatLightLaf).
+#
+# Documentation:
+# - https://www.formdev.com/flatlaf/properties-files/
+# - https://www.formdev.com/flatlaf/how-to-customize/
+#
+# NOTE: Avoid copying the whole content of this file to own properties files.
+# This will make upgrading to newer FlatLaf versions complex and error-prone.
+# Instead copy and modify only those properties that you need to alter.
+#
+
# Colors and style mostly based on IntelliJ theme from IntelliJ IDEA Community Edition,
# which is licensed under the Apache 2.0 license. Copyright 2000-2019 JetBrains s.r.o.
# See: https://github.com/JetBrains/intellij-community/
#---- variables ----
-@background=#f2f2f2
-@foreground=#000
-@selectionBackground=#2675BF
-@selectionForeground=#fff
-@selectionInactiveBackground=#d4d4d4
-@selectionInactiveForeground=@foreground
-@disabledText=#8C8C8C
-@textComponentBackground=#fff
-@menuBackground=#fff
-@menuHoverBackground=darken(@menuBackground,10%,derived)
-@menuCheckBackground=lighten(@selectionBackground,40%)
-@menuAcceleratorForeground=lighten(@foreground,30%)
-@menuAcceleratorSelectionForeground=@selectionForeground
-@cellFocusColor=#000
-@icon=#afafaf
+@background = #f2f2f2
+@foreground = #000
+@selectionBackground = #2675BF
+@selectionForeground = #fff
+@selectionInactiveBackground = #d4d4d4
+@selectionInactiveForeground = @foreground
+@disabledText = #8C8C8C
+@textComponentBackground = #fff
+@menuBackground = #fff
+@menuHoverBackground = darken(@menuBackground,10%,derived)
+@menuCheckBackground = lighten(@selectionBackground,40%,derived noAutoInverse)
+@menuAcceleratorForeground = lighten(@foreground,30%)
+@menuAcceleratorSelectionForeground = @selectionForeground
+@cellFocusColor = #000
+@icon = #afafaf
+
+# for buttons within components (e.g. combobox or spinner)
+@buttonArrowColor = #666
+@buttonDisabledArrowColor = lighten(@buttonArrowColor,25%)
+@buttonHoverArrowColor = lighten(@buttonArrowColor,20%,derived noAutoInverse)
+@buttonPressedArrowColor = lighten(@buttonArrowColor,30%,derived noAutoInverse)
# Drop (use lazy colors for IntelliJ platform themes, which usually do not specify these colors)
-@dropCellBackground=lighten(List.selectionBackground,10%,lazy)
-@dropCellForeground=lazy(List.selectionForeground)
-@dropLineColor=lighten(List.selectionBackground,20%,lazy)
-@dropLineShortColor=darken(List.selectionBackground,20%,lazy)
+@dropCellBackground = lighten(List.selectionBackground,10%,lazy)
+@dropCellForeground = lazy(List.selectionForeground)
+@dropLineColor = lighten(List.selectionBackground,20%,lazy)
+@dropLineShortColor = darken(List.selectionBackground,20%,lazy)
#---- system colors ----
-activeCaption=#99b4d1
-inactiveCaption=#bfcddb
-controlHighlight=#e3e3e3
-controlLtHighlight=#fff
-controlDkShadow=darken($controlShadow,15%)
+activeCaption = #99b4d1
+inactiveCaption = #bfcddb
+controlHighlight = lighten($controlShadow,12%)
+controlLtHighlight = lighten($controlShadow,25%)
+controlDkShadow = darken($controlShadow,15%)
#---- Button ----
-Button.background=#fff
-Button.focusedBackground=#e3f1fa
-Button.hoverBackground=darken($Button.background,3%,derived)
-Button.pressedBackground=darken($Button.background,10%,derived)
-Button.selectedBackground=darken($Button.background,20%,derived)
-Button.selectedForeground=@foreground
-Button.disabledSelectedBackground=darken($Button.background,13%,derived)
+Button.background = #fff
+Button.focusedBackground = #e3f1fa
+Button.hoverBackground = darken($Button.background,3%,derived)
+Button.pressedBackground = darken($Button.background,10%,derived)
+Button.selectedBackground = darken($Button.background,20%,derived)
+Button.selectedForeground = @foreground
+Button.disabledSelectedBackground = darken($Button.background,13%,derived)
-Button.borderColor=$Component.borderColor
-Button.disabledBorderColor=$Component.disabledBorderColor
-Button.focusedBorderColor=$Component.focusedBorderColor
-Button.hoverBorderColor=$Button.focusedBorderColor
+Button.borderColor = $Component.borderColor
+Button.disabledBorderColor = $Component.disabledBorderColor
+Button.focusedBorderColor = $Component.focusedBorderColor
+Button.hoverBorderColor = $Button.focusedBorderColor
-Button.default.background=$Button.background
-Button.default.foreground=@foreground
-Button.default.focusedBackground=$Button.focusedBackground
-Button.default.hoverBackground=$Button.hoverBackground
-Button.default.pressedBackground=$Button.pressedBackground
-Button.default.borderColor=#4F9EE3
-Button.default.hoverBorderColor=$Button.hoverBorderColor
-Button.default.focusedBorderColor=$Button.focusedBorderColor
-Button.default.focusColor=$Component.focusColor
-Button.default.borderWidth=2
+Button.innerFocusWidth = 0
-Button.toolbar.hoverBackground=darken($Button.background,12%,derived)
-Button.toolbar.pressedBackground=darken($Button.background,15%,derived)
-Button.toolbar.selectedBackground=$Button.selectedBackground
+Button.default.background = $Button.background
+Button.default.foreground = @foreground
+Button.default.focusedBackground = $Button.focusedBackground
+Button.default.hoverBackground = darken($Button.default.background,3%,derived)
+Button.default.pressedBackground = darken($Button.default.background,10%,derived)
+Button.default.borderColor = #4F9EE3
+Button.default.hoverBorderColor = $Button.hoverBorderColor
+Button.default.focusedBorderColor = $Button.focusedBorderColor
+Button.default.focusColor = $Component.focusColor
+Button.default.borderWidth = 2
+
+Button.toolbar.hoverBackground = darken($Button.background,12%,derived)
+Button.toolbar.pressedBackground = darken($Button.background,15%,derived)
+Button.toolbar.selectedBackground = $Button.selectedBackground
#---- CheckBox ----
# enabled
-CheckBox.icon.borderColor=#b0b0b0
-CheckBox.icon.background=#fff
-CheckBox.icon.selectedBorderColor=$CheckBox.icon.borderColor
-CheckBox.icon.selectedBackground=$CheckBox.icon.background
-CheckBox.icon.checkmarkColor=#4F9EE3
+CheckBox.icon.borderColor = #b0b0b0
+CheckBox.icon.background = #fff
+CheckBox.icon.selectedBorderColor = $CheckBox.icon.borderColor
+CheckBox.icon.selectedBackground = $CheckBox.icon.background
+CheckBox.icon.checkmarkColor = #4F9EE3
# disabled
-CheckBox.icon.disabledBorderColor=#BDBDBD
-CheckBox.icon.disabledBackground=@background
-CheckBox.icon.disabledCheckmarkColor=#ABABAB
+CheckBox.icon.disabledBorderColor = #BDBDBD
+CheckBox.icon.disabledBackground = @background
+CheckBox.icon.disabledCheckmarkColor = #ABABAB
# focused
-CheckBox.icon.focusedBorderColor=#7B9FC7
-CheckBox.icon.focusedBackground=$Button.focusedBackground
+CheckBox.icon.focusedBorderColor = #7B9FC7
+CheckBox.icon.focusedBackground = $Button.focusedBackground
# hover
-CheckBox.icon.hoverBorderColor=$CheckBox.icon.focusedBorderColor
-CheckBox.icon.hoverBackground=$Button.hoverBackground
+CheckBox.icon.hoverBorderColor = $CheckBox.icon.focusedBorderColor
+CheckBox.icon.hoverBackground = $Button.hoverBackground
# pressed
-CheckBox.icon.pressedBackground=$Button.pressedBackground
+CheckBox.icon.pressedBackground = $Button.pressedBackground
-# used if CheckBox.icon.style=filled
+# used if CheckBox.icon.style = filled
# enabled
-CheckBox.icon[filled].selectedBorderColor=#4B97D9
-CheckBox.icon[filled].selectedBackground=#4F9EE3
-CheckBox.icon[filled].checkmarkColor=#fff
+CheckBox.icon[filled].selectedBorderColor = #4B97D9
+CheckBox.icon[filled].selectedBackground = #4F9EE3
+CheckBox.icon[filled].checkmarkColor = #fff
# focused
-CheckBox.icon[filled].selectedFocusedBorderColor=#ACCFF7
-CheckBox.icon[filled].selectedFocusedBackground=$CheckBox.icon[filled].selectedBackground
-CheckBox.icon[filled].selectedFocusedCheckmarkColor=$CheckBox.icon.focusedBackground
+CheckBox.icon[filled].selectedFocusedBorderColor = #ACCFF7
+CheckBox.icon[filled].selectedFocusedBackground = $CheckBox.icon[filled].selectedBackground
+CheckBox.icon[filled].selectedFocusedCheckmarkColor = $CheckBox.icon.focusedBackground
# hover
-CheckBox.icon[filled].selectedHoverBackground=darken($CheckBox.icon[filled].selectedBackground,5%)
+CheckBox.icon[filled].selectedHoverBackground = darken($CheckBox.icon[filled].selectedBackground,5%,derived)
# pressed
-CheckBox.icon[filled].selectedPressedBackground=darken($CheckBox.icon[filled].selectedBackground,10%)
+CheckBox.icon[filled].selectedPressedBackground = darken($CheckBox.icon[filled].selectedBackground,10%,derived)
#---- ComboBox ----
-ComboBox.buttonEditableBackground=#fafafa
-ComboBox.buttonArrowColor=#666
-ComboBox.buttonDisabledArrowColor=#ABABAB
-ComboBox.buttonHoverArrowColor=#999
+ComboBox.buttonEditableBackground = darken($ComboBox.background,2%)
#---- Component ----
-Component.borderColor=#c4c4c4
-Component.disabledBorderColor=#cfcfcf
-Component.focusedBorderColor=#87afda
-Component.focusColor=#97c3f3
-Component.linkColor=#2470B3
-Component.grayFilter=25,-25,100
+Component.borderColor = #c4c4c4
+Component.disabledBorderColor = #cfcfcf
+Component.focusedBorderColor = #87afda
+Component.focusColor = #97c3f3
+Component.linkColor = #2470B3
+Component.grayFilter = 25,-25,100
-Component.error.borderColor=lighten(desaturate($Component.error.focusedBorderColor,20%),25%)
-Component.error.focusedBorderColor=#e53e4d
-Component.warning.borderColor=lighten(saturate($Component.warning.focusedBorderColor,25%),20%)
-Component.warning.focusedBorderColor=#e2a53a
-Component.custom.borderColor=lighten(desaturate(#f00,20%,derived noAutoInverse),25%,derived noAutoInverse)
+Component.error.borderColor = lighten(desaturate($Component.error.focusedBorderColor,20%),25%)
+Component.error.focusedBorderColor = #e53e4d
+Component.warning.borderColor = lighten(saturate($Component.warning.focusedBorderColor,25%),20%)
+Component.warning.focusedBorderColor = #e2a53a
+Component.custom.borderColor = lighten(desaturate(#f00,20%,derived noAutoInverse),25%,derived noAutoInverse)
#---- Desktop ----
-Desktop.background=#E6EBF0
+Desktop.background = #E6EBF0
#---- DesktopIcon ----
-DesktopIcon.background=darken($Desktop.background,10%)
+DesktopIcon.background = darken($Desktop.background,10%)
#---- HelpButton ----
-HelpButton.questionMarkColor=#4F9EE3
+HelpButton.questionMarkColor = #4F9EE3
#---- InternalFrame ----
-InternalFrame.activeTitleBackground=#fff
-InternalFrame.activeTitleForeground=@foreground
-InternalFrame.inactiveTitleBackground=#fafafa
-InternalFrame.inactiveTitleForeground=@disabledText
+InternalFrame.activeTitleBackground = #fff
+InternalFrame.activeTitleForeground = @foreground
+InternalFrame.inactiveTitleBackground = #fafafa
+InternalFrame.inactiveTitleForeground = @disabledText
-InternalFrame.activeBorderColor=darken($Component.borderColor,20%)
-InternalFrame.inactiveBorderColor=$Component.borderColor
+InternalFrame.activeBorderColor = darken($Component.borderColor,20%)
+InternalFrame.inactiveBorderColor = $Component.borderColor
-InternalFrame.buttonHoverBackground=darken($InternalFrame.activeTitleBackground,10%,derived)
-InternalFrame.buttonPressedBackground=darken($InternalFrame.activeTitleBackground,20%,derived)
-InternalFrame.closeHoverBackground=lazy(Actions.Red)
-InternalFrame.closePressedBackground=darken(Actions.Red,10%,lazy)
-InternalFrame.closeHoverForeground=#fff
-InternalFrame.closePressedForeground=#fff
+InternalFrame.buttonHoverBackground = darken($InternalFrame.activeTitleBackground,10%,derived)
+InternalFrame.buttonPressedBackground = darken($InternalFrame.activeTitleBackground,20%,derived)
+InternalFrame.closeHoverBackground = lazy(Actions.Red)
+InternalFrame.closePressedBackground = darken(Actions.Red,10%,lazy)
+InternalFrame.closeHoverForeground = #fff
+InternalFrame.closePressedForeground = #fff
-InternalFrame.activeDropShadowOpacity=0.25
-InternalFrame.inactiveDropShadowOpacity=0.5
+InternalFrame.activeDropShadowOpacity = 0.25
+InternalFrame.inactiveDropShadowOpacity = 0.5
#---- Menu ----
-Menu.icon.arrowColor=#666
-Menu.icon.disabledArrowColor=#ABABAB
+Menu.icon.arrowColor = #666
+Menu.icon.disabledArrowColor = #ABABAB
#---- MenuBar ----
-MenuBar.borderColor=#cdcdcd
+MenuBar.borderColor = #cdcdcd
#---- MenuItemCheckBox ----
-MenuItemCheckBox.icon.checkmarkColor=#4F9EE3
-MenuItemCheckBox.icon.disabledCheckmarkColor=#ABABAB
+MenuItemCheckBox.icon.checkmarkColor = #4F9EE3
+MenuItemCheckBox.icon.disabledCheckmarkColor = #ABABAB
#---- PasswordField ----
-PasswordField.capsLockIconColor=#00000064
+PasswordField.capsLockIconColor = #00000064
#---- Popup ----
-Popup.dropShadowColor=#000
-Popup.dropShadowOpacity=0.15
+Popup.dropShadowColor = #000
+Popup.dropShadowOpacity = 0.15
#---- PopupMenu ----
-PopupMenu.borderColor=#adadad
+PopupMenu.borderColor = #adadad
#---- ProgressBar ----
-ProgressBar.background=#D1D1D1
-ProgressBar.foreground=#1E82E6
-ProgressBar.selectionForeground=@textComponentBackground
-ProgressBar.selectionBackground=@foreground
+ProgressBar.background = #D1D1D1
+ProgressBar.foreground = #1E82E6
+ProgressBar.selectionForeground = @textComponentBackground
+ProgressBar.selectionBackground = @foreground
#---- RootPane ----
-RootPane.activeBorderColor=#707070
-RootPane.inactiveBorderColor=lighten($RootPane.activeBorderColor,20%,derived)
+RootPane.activeBorderColor = darken(@background,50%,derived)
+RootPane.inactiveBorderColor = darken(@background,30%,derived)
#---- ScrollBar ----
-ScrollBar.track=lighten(@background,1%,derived noAutoInverse)
-ScrollBar.thumb=darken($ScrollBar.track,10%,derived noAutoInverse)
-ScrollBar.hoverTrackColor=darken($ScrollBar.track,3%,derived noAutoInverse)
-ScrollBar.hoverThumbColor=darken($ScrollBar.thumb,10%,derived noAutoInverse)
-ScrollBar.pressedThumbColor=darken($ScrollBar.thumb,20%,derived noAutoInverse)
-ScrollBar.hoverButtonBackground=darken(@background,5%,derived noAutoInverse)
-ScrollBar.pressedButtonBackground=darken(@background,10%,derived noAutoInverse)
+ScrollBar.track = lighten(@background,1%,derived noAutoInverse)
+ScrollBar.thumb = darken($ScrollBar.track,10%,derived noAutoInverse)
+ScrollBar.hoverTrackColor = darken($ScrollBar.track,3%,derived noAutoInverse)
+ScrollBar.hoverThumbColor = darken($ScrollBar.thumb,10%,derived noAutoInverse)
+ScrollBar.pressedThumbColor = darken($ScrollBar.thumb,20%,derived noAutoInverse)
+ScrollBar.hoverButtonBackground = darken(@background,5%,derived noAutoInverse)
+ScrollBar.pressedButtonBackground = darken(@background,10%,derived noAutoInverse)
#---- Separator ----
-Separator.foreground=#d1d1d1
+Separator.foreground = #d1d1d1
#---- Slider ----
-Slider.trackColor=#c4c4c4
-Slider.thumbColor=#6e6e6e
-Slider.tickColor=#888
-Slider.hoverColor=lighten($Slider.thumbColor,15%,derived)
-Slider.disabledForeground=#c0c0c0
+Slider.trackValueColor = #1E82E6
+Slider.trackColor = #c4c4c4
+Slider.thumbColor = $Slider.trackValueColor
+Slider.tickColor = #888
+Slider.focusedColor = fade($Component.focusColor,50%,derived)
+Slider.hoverThumbColor = darken($Slider.thumbColor,5%,derived)
+Slider.pressedThumbColor = darken($Slider.thumbColor,8%,derived)
+Slider.disabledTrackColor = #c0c0c0
+Slider.disabledThumbColor = $Slider.disabledTrackColor
#---- SplitPane ----
-SplitPaneDivider.draggingColor=#c4c4c4
-SplitPaneDivider.oneTouchHoverArrowColor=#333
+SplitPaneDivider.draggingColor = #c4c4c4
#---- TabbedPane ----
-TabbedPane.underlineColor=#4083C9
-TabbedPane.disabledUnderlineColor=#ababab
-TabbedPane.hoverColor=darken($TabbedPane.background,7%,derived)
-TabbedPane.focusColor=#dae4ed
-TabbedPane.contentAreaColor=#bfbfbf
+TabbedPane.underlineColor = #4083C9
+TabbedPane.disabledUnderlineColor = #ababab
+TabbedPane.hoverColor = darken($TabbedPane.background,7%,derived)
+TabbedPane.focusColor = #dae4ed
+TabbedPane.contentAreaColor = #bfbfbf
-TabbedPane.buttonHoverBackground=darken($TabbedPane.background,7%,derived)
-TabbedPane.buttonPressedBackground=darken($TabbedPane.background,10%,derived)
+TabbedPane.buttonHoverBackground = darken($TabbedPane.background,7%,derived)
+TabbedPane.buttonPressedBackground = darken($TabbedPane.background,10%,derived)
-TabbedPane.closeBackground=null
-TabbedPane.closeForeground=@disabledText
-TabbedPane.closeHoverBackground=darken($TabbedPane.background,20%,derived)
-TabbedPane.closeHoverForeground=@foreground
-TabbedPane.closePressedBackground=darken($TabbedPane.background,25%,derived)
-TabbedPane.closePressedForeground=$TabbedPane.closeHoverForeground
+TabbedPane.closeBackground = null
+TabbedPane.closeForeground = @disabledText
+TabbedPane.closeHoverBackground = darken($TabbedPane.background,20%,derived)
+TabbedPane.closeHoverForeground = @foreground
+TabbedPane.closePressedBackground = darken($TabbedPane.background,25%,derived)
+TabbedPane.closePressedForeground = $TabbedPane.closeHoverForeground
#---- Table ----
-Table.gridColor=darken($Table.background,3%)
+Table.gridColor = darken($Table.background,5%)
#---- TableHeader ----
-TableHeader.separatorColor=darken($TableHeader.background,10%)
-TableHeader.bottomSeparatorColor=$TableHeader.separatorColor
+TableHeader.separatorColor = darken($TableHeader.background,10%)
+TableHeader.bottomSeparatorColor = $TableHeader.separatorColor
#---- TitlePane ----
-TitlePane.embeddedForeground=lighten($TitlePane.foreground,35%)
-TitlePane.buttonHoverBackground=darken($TitlePane.background,10%,derived)
-TitlePane.buttonPressedBackground=darken($TitlePane.background,20%,derived)
+TitlePane.embeddedForeground = lighten($TitlePane.foreground,35%)
+TitlePane.buttonHoverBackground = darken($TitlePane.background,10%,derived)
+TitlePane.buttonPressedBackground = darken($TitlePane.background,20%,derived)
#---- ToggleButton ----
-ToggleButton.selectedBackground=darken($ToggleButton.background,20%,derived)
-ToggleButton.disabledSelectedBackground=darken($ToggleButton.background,13%,derived)
+ToggleButton.selectedBackground = darken($ToggleButton.background,20%,derived)
+ToggleButton.disabledSelectedBackground = darken($ToggleButton.background,13%,derived)
-ToggleButton.toolbar.selectedBackground=$ToggleButton.selectedBackground
+ToggleButton.toolbar.selectedBackground = $ToggleButton.selectedBackground
#---- ToolTip ----
-ToolTip.border=4,6,4,6,$InternalFrame.activeBorderColor
-ToolTip.background=#fafafa
+ToolTip.border = 4,6,4,6,$InternalFrame.activeBorderColor
+ToolTip.background = #fafafa
#---- Tree ----
-Tree.hash=#E6E6E6
+Tree.hash = darken($Tree.background,10%)
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties
index a2abdc11..bf60e3b3 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/IntelliJTheme$ThemeLaf.properties
@@ -14,123 +14,199 @@
# limitations under the License.
#
+#
+# This file is loaded for all IntelliJ Platform themes.
+#
+# Documentation:
+# - https://www.formdev.com/flatlaf/properties-files/
+# - https://www.formdev.com/flatlaf/how-to-customize/
+#
+
#---- Button ----
-Button.startBackground=$Button.background
-Button.endBackground=$Button.background
-Button.startBorderColor=$Button.borderColor
-Button.endBorderColor=$Button.borderColor
+Button.startBackground = $Button.background
+Button.endBackground = $Button.background
+Button.startBorderColor = $Button.borderColor
+Button.endBorderColor = $Button.borderColor
-Button.default.startBackground=$Button.default.background
-Button.default.endBackground=$Button.default.background
-Button.default.startBorderColor=$Button.default.borderColor
-Button.default.endBorderColor=$Button.default.borderColor
+Button.default.startBackground = $Button.default.background
+Button.default.endBackground = $Button.default.background
+Button.default.startBorderColor = $Button.default.borderColor
+Button.default.endBorderColor = $Button.default.borderColor
-Button.hoverBorderColor=null
-Button.default.hoverBorderColor=null
+Button.hoverBorderColor = null
+Button.default.hoverBorderColor = null
#---- HelpButton ----
-HelpButton.hoverBorderColor=null
+HelpButton.hoverBorderColor = null
+
+
+#---- MenuItemCheckBox ----
+
+# colors from intellij/checkmark.svg and darcula/checkmark.svg
+[light]MenuItemCheckBox.icon.checkmarkColor=#3E3E3C
+[dark]MenuItemCheckBox.icon.checkmarkColor=#fff9
+
+
+#---- Slider ----
+
+Slider.focusedColor = fade($Component.focusColor,40%,derived)
#---- ToggleButton ----
-ToggleButton.startBackground=$ToggleButton.background
-ToggleButton.endBackground=$ToggleButton.background
-[dark]ToggleButton.selectedBackground=lighten($ToggleButton.background,15%,derived)
-[dark]ToggleButton.disabledSelectedBackground=lighten($ToggleButton.background,5%,derived)
+ToggleButton.startBackground = $ToggleButton.background
+ToggleButton.endBackground = $ToggleButton.background
+[dark]ToggleButton.selectedBackground = lighten($ToggleButton.background,15%,derived)
+[dark]ToggleButton.disabledSelectedBackground = lighten($ToggleButton.background,5%,derived)
#---- theme specific ----
-[Arc_Theme]ProgressBar.selectionBackground=#000
-[Arc_Theme]ProgressBar.selectionForeground=#fff
+@ijMenuCheckBackgroundL10 = lighten(@selectionBackground,10%,derived noAutoInverse)
+@ijMenuCheckBackgroundL20 = lighten(@selectionBackground,20%,derived noAutoInverse)
+@ijMenuCheckBackgroundD10 = darken(@selectionBackground,10%,derived noAutoInverse)
-[Arc_Theme_-_Orange]ProgressBar.selectionBackground=#000
-[Arc_Theme_-_Orange]ProgressBar.selectionForeground=#fff
+[Arc_Theme]ProgressBar.selectionBackground = #000
+[Arc_Theme]ProgressBar.selectionForeground = #fff
+[Arc_Theme]List.selectionInactiveForeground = #fff
+[Arc_Theme]Table.selectionInactiveForeground = #fff
+[Arc_Theme]Tree.selectionInactiveForeground = #fff
-[Arc_Theme_Dark]ProgressBar.selectionBackground=#ddd
-[Arc_Theme_Dark]ProgressBar.selectionForeground=#ddd
+[Arc_Theme_-_Orange]ProgressBar.selectionBackground = #000
+[Arc_Theme_-_Orange]ProgressBar.selectionForeground = #fff
+[Arc_Theme_-_Orange]List.selectionInactiveForeground = #fff
+[Arc_Theme_-_Orange]Table.selectionInactiveForeground = #fff
+[Arc_Theme_-_Orange]Tree.selectionInactiveForeground = #fff
-[Arc_Theme_Dark_-_Orange]ProgressBar.selectionBackground=#ddd
-[Arc_Theme_Dark_-_Orange]ProgressBar.selectionForeground=#fff
+[Arc_Theme_Dark]ProgressBar.selectionBackground = #ddd
+[Arc_Theme_Dark]ProgressBar.selectionForeground = #ddd
-[Cobalt_2]CheckBox.icon.background=#002946
-[Cobalt_2]CheckBox.icon.checkmarkColor=#002946
+[Arc_Theme_Dark_-_Orange]ProgressBar.selectionBackground = #ddd
+[Arc_Theme_Dark_-_Orange]ProgressBar.selectionForeground = #fff
-[Dracula]ProgressBar.selectionBackground=#fff
-[Dracula]ProgressBar.selectionForeground=#fff
+[Cobalt_2]CheckBox.icon.background = #002946
+[Cobalt_2]CheckBox.icon.checkmarkColor = #002946
+[Cobalt_2]MenuItem.checkBackground = @ijMenuCheckBackgroundL10
+[Cobalt_2]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10
-[Gruvbox_Dark_Hard]ToggleButton.selectedBackground=$ToggleButton.selectedBackground
-[Gruvbox_Dark_Hard]ToggleButton.toolbar.selectedBackground=$ToggleButton.toolbar.selectedBackground
+[Cyan_light]MenuItem.checkBackground = @ijMenuCheckBackgroundL20
+[Cyan_light]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL20
-[Gruvbox_Dark_Medium]ToggleButton.selectedBackground=$ToggleButton.selectedBackground
-[Gruvbox_Dark_Medium]ToggleButton.toolbar.selectedBackground=$ToggleButton.toolbar.selectedBackground
+[Dark_purple]Slider.focusedColor = fade($Component.focusColor,70%,derived)
-[Gruvbox_Dark_Soft]ToggleButton.selectedBackground=$ToggleButton.selectedBackground
-[Gruvbox_Dark_Soft]ToggleButton.toolbar.selectedBackground=$ToggleButton.toolbar.selectedBackground
+[Dracula]ProgressBar.selectionBackground = #fff
+[Dracula]ProgressBar.selectionForeground = #fff
-[Hiberbee_Dark]ToggleButton.selectedBackground=$ToggleButton.selectedBackground
-[Hiberbee_Dark]ToggleButton.selectedBackground=$ToggleButton.selectedBackground
-[Hiberbee_Dark]ToggleButton.toolbar.selectedBackground=$ToggleButton.toolbar.selectedBackground
+[Gradianto_Dark_Fuchsia]MenuItem.checkBackground = @ijMenuCheckBackgroundL10
+[Gradianto_Dark_Fuchsia]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10
-[High_contrast]ToggleButton.selectedBackground=#fff
-[High_contrast]ToggleButton.selectedForeground=#000
-[High_contrast]ToggleButton.disabledSelectedBackground=#444
-[High_contrast]ToggleButton.toolbar.selectedBackground=#fff
+[Gruvbox_Dark_Hard]ToggleButton.selectedBackground = $ToggleButton.selectedBackground
+[Gruvbox_Dark_Hard]ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground
+
+[Gruvbox_Dark_Medium]ToggleButton.selectedBackground = $ToggleButton.selectedBackground
+[Gruvbox_Dark_Medium]ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground
+
+[Gruvbox_Dark_Soft]MenuItem.checkBackground = @ijMenuCheckBackgroundL10
+[Gruvbox_Dark_Soft]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10
+[Gruvbox_Dark_Soft]ToggleButton.selectedBackground = $ToggleButton.selectedBackground
+[Gruvbox_Dark_Soft]ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground
+
+[Hiberbee_Dark]ToggleButton.selectedBackground = $ToggleButton.selectedBackground
+[Hiberbee_Dark]ToggleButton.selectedBackground = $ToggleButton.selectedBackground
+[Hiberbee_Dark]ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground
+
+[High_contrast]ToggleButton.selectedBackground = #fff
+[High_contrast]ToggleButton.selectedForeground = #000
+[High_contrast]ToggleButton.disabledSelectedBackground = #444
+[High_contrast]ToggleButton.toolbar.selectedBackground = #fff
+
+[Monocai]MenuItem.checkBackground = @ijMenuCheckBackgroundL10
+[Monocai]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10
+@Monocai.acceleratorForeground = lazy(MenuItem.disabledForeground)
+@Monocai.acceleratorSelectionForeground = lighten(MenuItem.disabledForeground,10%,lazy)
+[Monocai]CheckBoxMenuItem.acceleratorForeground = @Monocai.acceleratorForeground
+[Monocai]CheckBoxMenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground
+[Monocai]Menu.acceleratorForeground = @Monocai.acceleratorForeground
+[Monocai]Menu.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground
+[Monocai]MenuItem.acceleratorForeground = @Monocai.acceleratorForeground
+[Monocai]MenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground
+[Monocai]RadioButtonMenuItem.acceleratorForeground = @Monocai.acceleratorForeground
+[Monocai]RadioButtonMenuItem.acceleratorSelectionForeground = @Monocai.acceleratorSelectionForeground
+
+[Nord]MenuItem.checkBackground = @ijMenuCheckBackgroundL10
+[Nord]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10
+
+[One_Dark]MenuItem.checkBackground = @ijMenuCheckBackgroundL10
+[One_Dark]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10
+[One_Dark]Slider.focusedColor = fade(#568af2,40%)
+
+[Solarized_Dark]Slider.focusedColor = fade($Component.focusColor,80%,derived)
+
+[vuesion-theme]MenuItem.checkBackground = @ijMenuCheckBackgroundL10
+[vuesion-theme]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL10
+[vuesion-theme]Slider.trackValueColor = #ececee
+[vuesion-theme]Slider.trackColor = #303a45
+[vuesion-theme]Slider.thumbColor = #ececee
+[vuesion-theme]Slider.focusedColor = fade(#ececee,20%)
# Material Theme UI Lite
-[Dracula_Contrast]ProgressBar.selectionBackground=#fff
-[Dracula_Contrast]ProgressBar.selectionForeground=#fff
+[light][author-Mallowigi]MenuItem.checkBackground = @ijMenuCheckBackgroundD10
+[light][author-Mallowigi]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundD10
+[dark][author-Mallowigi]MenuItem.checkBackground = @ijMenuCheckBackgroundL20
+[dark][author-Mallowigi]MenuItem.underlineSelectionCheckBackground = @ijMenuCheckBackgroundL20
-[GitHub]ProgressBar.selectionBackground=#222
-[GitHub]ProgressBar.selectionForeground=#222
+[Dracula_Contrast]ProgressBar.selectionBackground = #fff
+[Dracula_Contrast]ProgressBar.selectionForeground = #fff
-[GitHub_Contrast]ProgressBar.selectionBackground=#222
-[GitHub_Contrast]ProgressBar.selectionForeground=#222
+[GitHub]ProgressBar.selectionBackground = #222
+[GitHub]ProgressBar.selectionForeground = #222
-[Light_Owl]ProgressBar.selectionBackground=#111
-[Light_Owl]ProgressBar.selectionForeground=#fff
+[GitHub_Contrast]ProgressBar.selectionBackground = #222
+[GitHub_Contrast]ProgressBar.selectionForeground = #222
-[Light_Owl_Contrast]ProgressBar.selectionBackground=#111
-[Light_Owl_Contrast]ProgressBar.selectionForeground=#fff
+[Light_Owl]ProgressBar.selectionBackground = #111
+[Light_Owl]ProgressBar.selectionForeground = #fff
-[Material_Lighter]ProgressBar.selectionBackground=#222
-[Material_Lighter]ProgressBar.selectionForeground=#fff
+[Light_Owl_Contrast]ProgressBar.selectionBackground = #111
+[Light_Owl_Contrast]ProgressBar.selectionForeground = #fff
-[Material_Lighter_Contrast]ProgressBar.selectionBackground=#222
-[Material_Lighter_Contrast]ProgressBar.selectionForeground=#fff
+[Material_Lighter]ProgressBar.selectionBackground = #222
+[Material_Lighter]ProgressBar.selectionForeground = #fff
-[Material_Oceanic]ProgressBar.selectionBackground=#ddd
-[Material_Oceanic]ProgressBar.selectionForeground=#ddd
+[Material_Lighter_Contrast]ProgressBar.selectionBackground = #222
+[Material_Lighter_Contrast]ProgressBar.selectionForeground = #fff
-[Material_Oceanic_Contrast]ProgressBar.selectionBackground=#ddd
-[Material_Oceanic_Contrast]ProgressBar.selectionForeground=#ddd
+[Material_Oceanic]ProgressBar.selectionBackground = #ddd
+[Material_Oceanic]ProgressBar.selectionForeground = #ddd
-[Material_Palenight]ProgressBar.selectionBackground=#ddd
-[Material_Palenight]ProgressBar.selectionForeground=#ddd
+[Material_Oceanic_Contrast]ProgressBar.selectionBackground = #ddd
+[Material_Oceanic_Contrast]ProgressBar.selectionForeground = #ddd
-[Material_Palenight_Contrast]ProgressBar.selectionBackground=#ddd
-[Material_Palenight_Contrast]ProgressBar.selectionForeground=#ddd
+[Material_Palenight]ProgressBar.selectionBackground = #ddd
+[Material_Palenight]ProgressBar.selectionForeground = #ddd
-[Night_Owl]ProgressBar.selectionBackground=#ddd
-[Night_Owl]ProgressBar.selectionForeground=#ddd
+[Material_Palenight_Contrast]ProgressBar.selectionBackground = #ddd
+[Material_Palenight_Contrast]ProgressBar.selectionForeground = #ddd
-[Night_Owl_Contrast]ProgressBar.selectionBackground=#ddd
-[Night_Owl_Contrast]ProgressBar.selectionForeground=#ddd
+[Night_Owl]ProgressBar.selectionBackground = #ddd
+[Night_Owl]ProgressBar.selectionForeground = #ddd
-[Solarized_Dark]ProgressBar.selectionBackground=#ccc
-[Solarized_Dark]ProgressBar.selectionForeground=#ccc
+[Night_Owl_Contrast]ProgressBar.selectionBackground = #ddd
+[Night_Owl_Contrast]ProgressBar.selectionForeground = #ddd
-[Material_Solarized_Dark_Contrast]ProgressBar.selectionBackground=#ccc
-[Material_Solarized_Dark_Contrast]ProgressBar.selectionForeground=#ccc
+[Solarized_Dark]ProgressBar.selectionBackground = #ccc
+[Solarized_Dark]ProgressBar.selectionForeground = #ccc
-[Solarized_Light]ProgressBar.selectionBackground=#222
-[Solarized_Light]ProgressBar.selectionForeground=#fff
+[Material_Solarized_Dark_Contrast]ProgressBar.selectionBackground = #ccc
+[Material_Solarized_Dark_Contrast]ProgressBar.selectionForeground = #ccc
-[Material_Solarized_Light_Contrast]ProgressBar.selectionBackground=#222
-[Material_Solarized_Light_Contrast]ProgressBar.selectionForeground=#fff
+[Solarized_Light]ProgressBar.selectionBackground = #222
+[Solarized_Light]ProgressBar.selectionForeground = #fff
+
+[Material_Solarized_Light_Contrast]ProgressBar.selectionBackground = #222
+[Material_Solarized_Light_Contrast]ProgressBar.selectionForeground = #fff
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle.properties
index 06caf173..9a671122 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle.properties
@@ -15,51 +15,51 @@
#---- FileChooser ----
#fields
-FileChooser.lookInLabel.textAndMnemonic=Look &In:
-FileChooser.saveInLabelText=Save In:
-FileChooser.fileNameLabel.textAndMnemonic=File &Name:
-FileChooser.folderNameLabel.textAndMnemonic=Folder &name:
-FileChooser.filesOfTypeLabel.textAndMnemonic=Files of &Type:
+FileChooser.lookInLabel.textAndMnemonic = Look &In:
+FileChooser.saveInLabelText = Save In:
+FileChooser.fileNameLabel.textAndMnemonic = File &Name:
+FileChooser.folderNameLabel.textAndMnemonic = Folder &name:
+FileChooser.filesOfTypeLabel.textAndMnemonic = Files of &Type:
# toolbar
-FileChooser.upFolderToolTipText=Up One Level
-FileChooser.upFolderAccessibleName=Up
-FileChooser.homeFolderToolTipText=Home
-FileChooser.homeFolderAccessibleName=Home
-FileChooser.newFolderToolTipText=Create New Folder
-FileChooser.newFolderAccessibleName=New Folder
-FileChooser.listViewButtonToolTipText=List
-FileChooser.listViewButtonAccessibleName=List
-FileChooser.detailsViewButtonToolTipText=Details
-FileChooser.detailsViewButtonAccessibleName=Details
+FileChooser.upFolderToolTipText = Up One Level
+FileChooser.upFolderAccessibleName = Up
+FileChooser.homeFolderToolTipText = Home
+FileChooser.homeFolderAccessibleName = Home
+FileChooser.newFolderToolTipText = Create New Folder
+FileChooser.newFolderAccessibleName = New Folder
+FileChooser.listViewButtonToolTipText = List
+FileChooser.listViewButtonAccessibleName = List
+FileChooser.detailsViewButtonToolTipText = Details
+FileChooser.detailsViewButtonAccessibleName = Details
# details table header
-FileChooser.fileNameHeaderText=Name
-FileChooser.fileSizeHeaderText=Size
-FileChooser.fileTypeHeaderText=Type
-FileChooser.fileDateHeaderText=Modified
-FileChooser.fileAttrHeaderText=Attributes
+FileChooser.fileNameHeaderText = Name
+FileChooser.fileSizeHeaderText = Size
+FileChooser.fileTypeHeaderText = Type
+FileChooser.fileDateHeaderText = Modified
+FileChooser.fileAttrHeaderText = Attributes
# popup menu
-FileChooser.viewMenuLabelText=View
-FileChooser.refreshActionLabelText=Refresh
-FileChooser.newFolderActionLabelText=New Folder
-FileChooser.listViewActionLabelText=List
-FileChooser.detailsViewActionLabelText=Details
+FileChooser.viewMenuLabelText = View
+FileChooser.refreshActionLabelText = Refresh
+FileChooser.newFolderActionLabelText = New Folder
+FileChooser.listViewActionLabelText = List
+FileChooser.detailsViewActionLabelText = Details
#---- SplitPaneDivider ----
-SplitPaneDivider.collapseLeftToolTipText=Collapse Left Pane
-SplitPaneDivider.collapseRightToolTipText=Collapse Right Pane
-SplitPaneDivider.collapseTopToolTipText=Collapse Top Pane
-SplitPaneDivider.collapseBottomToolTipText=Collapse Bottom Pane
-SplitPaneDivider.expandLeftToolTipText=Expand Left Pane
-SplitPaneDivider.expandRightToolTipText=Expand Right Pane
-SplitPaneDivider.expandTopToolTipText=Expand Top Pane
-SplitPaneDivider.expandBottomToolTipText=Expand Bottom Pane
+SplitPaneDivider.collapseLeftToolTipText = Collapse Left Pane
+SplitPaneDivider.collapseRightToolTipText = Collapse Right Pane
+SplitPaneDivider.collapseTopToolTipText = Collapse Top Pane
+SplitPaneDivider.collapseBottomToolTipText = Collapse Bottom Pane
+SplitPaneDivider.expandLeftToolTipText = Expand Left Pane
+SplitPaneDivider.expandRightToolTipText = Expand Right Pane
+SplitPaneDivider.expandTopToolTipText = Expand Top Pane
+SplitPaneDivider.expandBottomToolTipText = Expand Bottom Pane
#---- TabbedPane ----
-TabbedPane.moreTabsButtonToolTipText=Show Hidden Tabs
+TabbedPane.moreTabsButtonToolTipText = Show Hidden Tabs
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle_de.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle_de.properties
index 5f30c8dd..cd34243d 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle_de.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle_de.properties
@@ -15,39 +15,39 @@
#---- FileChooser ----
#fields
-FileChooser.lookInLabel.textAndMnemonic=Suchen &in:
-FileChooser.saveInLabelText=Speichern in:
-FileChooser.fileNameLabel.textAndMnemonic=&Dateiname:
-FileChooser.folderNameLabel.textAndMnemonic=Ordner&name:
-FileChooser.filesOfTypeLabel.textAndMnemonic=Datei&typ:
+FileChooser.lookInLabel.textAndMnemonic = Suchen &in:
+FileChooser.saveInLabelText = Speichern in:
+FileChooser.fileNameLabel.textAndMnemonic = &Dateiname:
+FileChooser.folderNameLabel.textAndMnemonic = Ordner&name:
+FileChooser.filesOfTypeLabel.textAndMnemonic = Datei&typ:
# toolbar
-FileChooser.upFolderToolTipText=Eine Ebene h\u00F6her
-FileChooser.upFolderAccessibleName=Nach oben
-FileChooser.homeFolderToolTipText=Home
-FileChooser.homeFolderAccessibleName=Home
-FileChooser.newFolderToolTipText=Neuen Ordner erstellen
-FileChooser.newFolderAccessibleName=Neuer Ordner
-FileChooser.listViewButtonToolTipText=Liste
-FileChooser.listViewButtonAccessibleName=Liste
-FileChooser.detailsViewButtonToolTipText=Details
-FileChooser.detailsViewButtonAccessibleName=Details
+FileChooser.upFolderToolTipText = Eine Ebene h\u00F6her
+FileChooser.upFolderAccessibleName = Nach oben
+FileChooser.homeFolderToolTipText = Home
+FileChooser.homeFolderAccessibleName = Home
+FileChooser.newFolderToolTipText = Neuen Ordner erstellen
+FileChooser.newFolderAccessibleName = Neuer Ordner
+FileChooser.listViewButtonToolTipText = Liste
+FileChooser.listViewButtonAccessibleName = Liste
+FileChooser.detailsViewButtonToolTipText = Details
+FileChooser.detailsViewButtonAccessibleName = Details
# details table header
-FileChooser.fileNameHeaderText=Name
-FileChooser.fileSizeHeaderText=Gr\u00F6\u00DFe
-FileChooser.fileTypeHeaderText=Typ
-FileChooser.fileDateHeaderText=\u00C4nderungsdatum
-FileChooser.fileAttrHeaderText=Attribute
+FileChooser.fileNameHeaderText = Name
+FileChooser.fileSizeHeaderText = Gr\u00F6\u00DFe
+FileChooser.fileTypeHeaderText = Typ
+FileChooser.fileDateHeaderText = \u00C4nderungsdatum
+FileChooser.fileAttrHeaderText = Attribute
# popup menu
-FileChooser.viewMenuLabelText=Ansicht
-FileChooser.refreshActionLabelText=Aktualisieren
-FileChooser.newFolderActionLabelText=Neuer Ordner
-FileChooser.listViewActionLabelText=Liste
-FileChooser.detailsViewActionLabelText=Details
+FileChooser.viewMenuLabelText = Ansicht
+FileChooser.refreshActionLabelText = Aktualisieren
+FileChooser.newFolderActionLabelText = Neuer Ordner
+FileChooser.listViewActionLabelText = Liste
+FileChooser.detailsViewActionLabelText = Details
#---- TabbedPane ----
-TabbedPane.moreTabsButtonToolTipText=Verdeckte Tabs anzeigen
+TabbedPane.moreTabsButtonToolTipText = Verdeckte Tabs anzeigen
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle_fr.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle_fr.properties
index 4e6477ba..087bddd5 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle_fr.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/resources/Bundle_fr.properties
@@ -15,34 +15,34 @@
#---- FileChooser ----
#fields
-FileChooser.lookInLabel.textAndMnemonic=Rechercher &dans:
-FileChooser.saveInLabelText=Enregistrer dans:
-FileChooser.fileNameLabel.textAndMnemonic=&Nom du fichier:
-FileChooser.folderNameLabel.textAndMnemonic=&Nom du dossier:
-FileChooser.filesOfTypeLabel.textAndMnemonic=&Type de fichier:
+FileChooser.lookInLabel.textAndMnemonic = Rechercher &dans:
+FileChooser.saveInLabelText = Enregistrer dans:
+FileChooser.fileNameLabel.textAndMnemonic = &Nom du fichier:
+FileChooser.folderNameLabel.textAndMnemonic = &Nom du dossier:
+FileChooser.filesOfTypeLabel.textAndMnemonic = &Type de fichier:
# toolbar
-FileChooser.upFolderToolTipText=Remonte d'un niveau
-FileChooser.upFolderAccessibleName=Monter
-FileChooser.homeFolderToolTipText=R\u00E9pertoire de base
-FileChooser.homeFolderAccessibleName=R\u00E9pertoire de base
-FileChooser.newFolderToolTipText=Cr\u00E9e un dossier
-FileChooser.newFolderAccessibleName=Nouveau dossier
-FileChooser.listViewButtonToolTipText=Liste
-FileChooser.listViewButtonAccessibleName=Liste
-FileChooser.detailsViewButtonToolTipText=D\u00E9tails
-FileChooser.detailsViewButtonAccessibleName=D\u00E9tails
+FileChooser.upFolderToolTipText = Remonte d'un niveau
+FileChooser.upFolderAccessibleName = Monter
+FileChooser.homeFolderToolTipText = R\u00E9pertoire de base
+FileChooser.homeFolderAccessibleName = R\u00E9pertoire de base
+FileChooser.newFolderToolTipText = Cr\u00E9e un dossier
+FileChooser.newFolderAccessibleName = Nouveau dossier
+FileChooser.listViewButtonToolTipText = Liste
+FileChooser.listViewButtonAccessibleName = Liste
+FileChooser.detailsViewButtonToolTipText = D\u00E9tails
+FileChooser.detailsViewButtonAccessibleName = D\u00E9tails
# details table header
-FileChooser.fileNameHeaderText=Nom
-FileChooser.fileSizeHeaderText=Taille
-FileChooser.fileTypeHeaderText=Type
-FileChooser.fileDateHeaderText=Modifi\u00E9
-FileChooser.fileAttrHeaderText=Attributs
+FileChooser.fileNameHeaderText = Nom
+FileChooser.fileSizeHeaderText = Taille
+FileChooser.fileTypeHeaderText = Type
+FileChooser.fileDateHeaderText = Modifi\u00E9
+FileChooser.fileAttrHeaderText = Attributs
# popup menu
-FileChooser.viewMenuLabelText=Affichage
-FileChooser.refreshActionLabelText=Actualiser
-FileChooser.newFolderActionLabelText=Nouveau dossier
-FileChooser.listViewActionLabelText=Liste
-FileChooser.detailsViewActionLabelText=D\u00E9tails
+FileChooser.viewMenuLabelText = Affichage
+FileChooser.refreshActionLabelText = Actualiser
+FileChooser.newFolderActionLabelText = Nouveau dossier
+FileChooser.listViewActionLabelText = Liste
+FileChooser.detailsViewActionLabelText = D\u00E9tails
diff --git a/flatlaf-demo/DemoLaf.properties b/flatlaf-demo/DemoLaf.properties
index 6a76fcd6..0a4930b0 100644
--- a/flatlaf-demo/DemoLaf.properties
+++ b/flatlaf-demo/DemoLaf.properties
@@ -7,7 +7,7 @@
# base theme (light, dark, intellij or darcula)
-@baseTheme=light
+@baseTheme = light
# add you theme defaults here
-@background=#ccc
+@background = #ccc
diff --git a/flatlaf-demo/README.md b/flatlaf-demo/README.md
index 06b7b345..169d90eb 100644
--- a/flatlaf-demo/README.md
+++ b/flatlaf-demo/README.md
@@ -2,3 +2,12 @@ FlatLaf Demo
============
This sub-project contains the FlatLaf Demo source code.
+
+
+Download
+--------
+
+[](https://download.formdev.com/flatlaf/flatlaf-demo-latest.jar)
+
+Run demo with `java -jar flatlaf-demo-.jar` (or double-click it).
+Requires Java 8 or newer.
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java
index c527959b..534c5570 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java
@@ -136,6 +136,16 @@ class ControlBar
registerSwitchToLookAndFeel( KeyEvent.VK_F12, MetalLookAndFeel.class.getName() );
registerSwitchToLookAndFeel( KeyEvent.VK_F11, NimbusLookAndFeel.class.getName() );
+ // register Alt+UP and Alt+DOWN to switch to previous/next theme
+ ((JComponent)frame.getContentPane()).registerKeyboardAction(
+ e -> frame.themesPanel.selectPreviousTheme(),
+ KeyStroke.getKeyStroke( KeyEvent.VK_UP, KeyEvent.ALT_DOWN_MASK ),
+ JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
+ ((JComponent)frame.getContentPane()).registerKeyboardAction(
+ e -> frame.themesPanel.selectNextTheme(),
+ KeyStroke.getKeyStroke( KeyEvent.VK_DOWN, KeyEvent.ALT_DOWN_MASK ),
+ JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
+
// register ESC key to close frame
((JComponent)frame.getContentPane()).registerKeyboardAction(
e -> {
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 7f702505..f611ee27 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
@@ -32,7 +32,7 @@ import com.formdev.flatlaf.demo.intellijthemes.*;
import com.formdev.flatlaf.extras.FlatAnimatedLafChange;
import com.formdev.flatlaf.extras.FlatSVGIcon;
import com.formdev.flatlaf.extras.FlatUIDefaultsInspector;
-import com.formdev.flatlaf.extras.SVGUtils;
+import com.formdev.flatlaf.extras.FlatSVGUtils;
import com.formdev.flatlaf.ui.JBRCustomDecorations;
import net.miginfocom.layout.ConstraintParser;
import net.miginfocom.layout.LC;
@@ -59,7 +59,7 @@ class DemoFrame
updateFontMenuItems();
controlBar.initialize( this, tabbedPane );
- setIconImages( SVGUtils.createWindowIconImages( "/com/formdev/flatlaf/demo/FlatLaf.svg" ) );
+ setIconImages( FlatSVGUtils.createWindowIconImages( "/com/formdev/flatlaf/demo/FlatLaf.svg" ) );
if( tabIndex >= 0 && tabIndex < tabbedPane.getTabCount() && tabIndex != tabbedPane.getSelectedIndex() )
tabbedPane.setSelectedIndex( tabIndex );
@@ -749,6 +749,6 @@ class DemoFrame
private JCheckBoxMenuItem animatedLafChangeMenuItem;
private JTabbedPane tabbedPane;
private ControlBar controlBar;
- private IJThemesPanel themesPanel;
+ IJThemesPanel themesPanel;
// JFormDesigner - End of variables declaration //GEN-END:variables
}
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd
index ef2ac5cb..ba2075b6 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd
@@ -117,6 +117,7 @@ new FormModel {
name: "themesPanel"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
+ "JavaCodeGenerator.variableModifiers": 0
}
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "East"
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java
index 3e24a316..c9c88fad 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java
@@ -40,6 +40,9 @@ public class FlatLafDemo
if( SystemInfo.isMacOS && System.getProperty( "apple.laf.useScreenMenuBar" ) == null )
System.setProperty( "apple.laf.useScreenMenuBar", "true" );
+ if( FlatLafDemo.screenshotsMode && !SystemInfo.isJava_9_orLater && System.getProperty( "flatlaf.uiScale" ) == null )
+ System.setProperty( "flatlaf.uiScale", "2x" );
+
SwingUtilities.invokeLater( () -> {
DemoPrefs.init( PREFS_ROOT_PATH );
@@ -61,7 +64,7 @@ public class FlatLafDemo
DemoFrame frame = new DemoFrame();
if( FlatLafDemo.screenshotsMode )
- frame.setPreferredSize( new Dimension( 1280, 620 ) );
+ frame.setPreferredSize( new Dimension( 1660, 840 ) );
// show frame
frame.pack();
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/MoreComponentsPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/MoreComponentsPanel.java
index 95b1c72a..f2a3c51d 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/MoreComponentsPanel.java
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/MoreComponentsPanel.java
@@ -481,6 +481,7 @@ class MoreComponentsPanel
indeterminateCheckBox,
toolTipLabel, toolTip1, toolTip2,
toolBarLabel, toolBar1, toolBar2,
+ splitPaneLabel, splitPane3,
};
for( Component c : components )
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/NewDialog.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/NewDialog.java
index 3ec5c270..70bcf124 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/NewDialog.java
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/NewDialog.java
@@ -44,10 +44,12 @@ class NewDialog
}
private void okActionPerformed() {
+ System.out.println( "ok" );
dispose();
}
private void cancelActionPerformed() {
+ System.out.println( "cancel" );
dispose();
}
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/TabsPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/TabsPanel.java
index 1540a5d6..067a2cde 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/TabsPanel.java
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/TabsPanel.java
@@ -25,6 +25,8 @@ import javax.swing.*;
import javax.swing.border.*;
import com.formdev.flatlaf.extras.FlatSVGIcon;
import com.formdev.flatlaf.icons.FlatTabbedPaneCloseIcon;
+import net.miginfocom.layout.AC;
+import net.miginfocom.layout.ConstraintParser;
import net.miginfocom.swing.*;
/**
@@ -1009,6 +1011,29 @@ class TabsPanel
tabsPopupPolicyButtonGroup.add(popupAsNeededButton);
tabsPopupPolicyButtonGroup.add(popupNeverButton);
// JFormDesigner - End of component initialization //GEN-END:initComponents
+
+ if( FlatLafDemo.screenshotsMode ) {
+ Component[] components = new Component[] {
+ tabPlacementLabel, tabPlacementToolBar, tabPlacementTabbedPane,
+ iconBottomTabbedPane, iconTrailingTabbedPane,
+ alignLeadingTabbedPane, alignTrailingTabbedPane, alignFillTabbedPane,
+ panel3, separator2, panel4,
+ };
+
+ for( Component c : components )
+ c.setVisible( false );
+
+ // remove gaps
+ MigLayout layout1 = (MigLayout) panel1.getLayout();
+ AC rowSpecs1 = ConstraintParser.parseRowConstraints( (String) layout1.getRowConstraints() );
+ rowSpecs1.gap( "0!", 0, 1 );
+ layout1.setRowConstraints( rowSpecs1 );
+
+ MigLayout layout2 = (MigLayout) panel2.getLayout();
+ AC rowSpecs2 = ConstraintParser.parseRowConstraints( (String) layout2.getRowConstraints() );
+ rowSpecs2.gap( "0!", 2, 4, 8 );
+ layout2.setRowConstraints( rowSpecs2 );
+ }
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.java
index a7291324..37cfec1f 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.java
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.java
@@ -18,6 +18,7 @@ package com.formdev.flatlaf.demo.extras;
import javax.swing.*;
import com.formdev.flatlaf.extras.*;
+import com.formdev.flatlaf.extras.components.FlatTriStateCheckBox;
import net.miginfocom.swing.*;
/**
@@ -63,7 +64,7 @@ public class ExtrasPanel
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
label4 = new JLabel();
label1 = new JLabel();
- triStateCheckBox1 = new TriStateCheckBox();
+ triStateCheckBox1 = new FlatTriStateCheckBox();
triStateLabel1 = new JLabel();
label2 = new JLabel();
svgIconsPanel = new JPanel();
@@ -124,7 +125,7 @@ public class ExtrasPanel
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private JLabel label4;
private JLabel label1;
- private TriStateCheckBox triStateCheckBox1;
+ private FlatTriStateCheckBox triStateCheckBox1;
private JLabel triStateLabel1;
private JLabel label2;
private JPanel svgIconsPanel;
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.jfd
index 80741d5c..a121bc65 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.jfd
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.jfd
@@ -21,7 +21,7 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 1"
} )
- add( new FormComponent( "com.formdev.flatlaf.extras.TriStateCheckBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "triStateCheckBox1"
"text": "Three States"
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "triStateCheckBox1Changed", false ) )
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 d28522dc..403a498f 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
@@ -49,7 +49,9 @@ public class IJThemesClassGenerator
}
Path out = new File( toPath, "FlatAllIJThemes.java" ).toPath();
- String allThemes = CLASS_HEADER + ALL_THEMES_TEMPLATE.replace( "${allInfos}", allInfos );
+ String allThemes = (CLASS_HEADER + ALL_THEMES_TEMPLATE)
+ .replace( "${subPackage}", "" )
+ .replace( "${allInfos}", allInfos );
writeFile( out, allThemes );
System.out.println( markdownTable );
@@ -88,7 +90,7 @@ public class IJThemesClassGenerator
String themeClass = "Flat" + buf + "IJTheme";
String themeFile = resourceName;
- String classBody = CLASS_HEADER + CLASS_TEMPLATE
+ String classBody = (CLASS_HEADER + CLASS_TEMPLATE)
.replace( "${subPackage}", subPackage )
.replace( "${themeClass}", themeClass )
.replace( "${themeFile}", themeFile )
@@ -106,7 +108,8 @@ public class IJThemesClassGenerator
allInfos.append( THEME_TEMPLATE
.replace( "${subPackage}", subPackage )
.replace( "${themeClass}", themeClass )
- .replace( "${themeName}", themeName ) );
+ .replace( "${themeName}", themeName )
+ .replace( "${dark}", Boolean.toString( ti.dark ) ) );
markdownTable.append( String.format( "[%s](%s) | `com.formdev.flatlaf.intellijthemes%s.%s`\n",
themeName, ti.sourceCodeUrl, subPackage, themeClass ) );
@@ -138,6 +141,8 @@ public class IJThemesClassGenerator
" * limitations under the License.\n" +
" */\n" +
"\n" +
+ "package com.formdev.flatlaf.intellijthemes${subPackage};\n" +
+ "\n" +
"//\n" +
"// DO NOT MODIFY\n" +
"// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator\n" +
@@ -145,8 +150,6 @@ public class IJThemesClassGenerator
"\n";
private static final String CLASS_TEMPLATE =
- "package com.formdev.flatlaf.intellijthemes${subPackage};\n" +
- "\n" +
"import com.formdev.flatlaf.IntelliJTheme;\n" +
"\n" +
"/**\n" +
@@ -155,7 +158,9 @@ public class IJThemesClassGenerator
"public class ${themeClass}\n" +
" extends IntelliJTheme.ThemeLaf\n" +
"{\n" +
- " public static boolean install( ) {\n" +
+ " public static final String NAME = \"${themeName}\";\n" +
+ "\n" +
+ " public static boolean install() {\n" +
" try {\n" +
" return install( new ${themeClass}() );\n" +
" } catch( RuntimeException ex ) {\n" +
@@ -163,19 +168,21 @@ public class IJThemesClassGenerator
" }\n" +
" }\n" +
"\n" +
+ " public static void installLafInfo() {\n" +
+ " installLafInfo( NAME, ${themeClass}.class );\n" +
+ " }\n" +
+ "\n" +
" public ${themeClass}() {\n" +
" super( Utils.loadTheme( \"${themeFile}\" ) );\n" +
" }\n" +
"\n" +
" @Override\n" +
" public String getName() {\n" +
- " return \"${themeName}\";\n" +
+ " return NAME;\n" +
" }\n" +
"}\n";
private static final String ALL_THEMES_TEMPLATE =
- "package com.formdev.flatlaf.intellijthemes;\n" +
- "\n" +
"import javax.swing.UIManager.LookAndFeelInfo;\n" +
"\n" +
"/**\n" +
@@ -183,11 +190,28 @@ public class IJThemesClassGenerator
" */\n" +
"public class FlatAllIJThemes\n" +
"{\n" +
- " public static final LookAndFeelInfo[] INFOS = {\n" +
+ " public static final FlatIJLookAndFeelInfo[] INFOS = {\n" +
"${allInfos}\n" +
" };\n" +
+ "\n" +
+ " //---- class FlatIJLookAndFeelInfo ----------------------------------------\n" +
+ "\n" +
+ " public static class FlatIJLookAndFeelInfo\n" +
+ " extends LookAndFeelInfo\n" +
+ " {\n" +
+ " private final boolean dark;\n" +
+ "\n" +
+ " public FlatIJLookAndFeelInfo( String name, String className, boolean dark ) {\n" +
+ " super( name, className );\n" +
+ " this.dark = dark;\n" +
+ " }\n" +
+ "\n" +
+ " public boolean isDark() {\n" +
+ " return dark;\n" +
+ " }\n" +
+ " }\n" +
"}\n";
private static final String THEME_TEMPLATE =
- " new LookAndFeelInfo( \"${themeName}\", \"com.formdev.flatlaf.intellijthemes${subPackage}.${themeClass}\" ),";
+ " new FlatIJLookAndFeelInfo( \"${themeName}\", \"com.formdev.flatlaf.intellijthemes${subPackage}.${themeClass}\", ${dark} ),";
}
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java
index 3566322a..f3922624 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/intellijthemes/IJThemesPanel.java
@@ -220,6 +220,17 @@ public class IJThemesPanel
}
}
+ public void selectPreviousTheme() {
+ int sel = themesList.getSelectedIndex();
+ if( sel > 0 )
+ themesList.setSelectedIndex( sel - 1 );
+ }
+
+ public void selectNextTheme() {
+ int sel = themesList.getSelectedIndex();
+ themesList.setSelectedIndex( sel + 1 );
+ }
+
private void themesListValueChanged( ListSelectionEvent e ) {
IJThemeInfo themeInfo = themesList.getSelectedValue();
boolean bundledTheme = (themeInfo != null && themeInfo.resourceName != null);
diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatDarkLaf.properties b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatDarkLaf.properties
index cb56e9fa..803f03b8 100644
--- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatDarkLaf.properties
+++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatDarkLaf.properties
@@ -14,4 +14,4 @@
# limitations under the License.
#
-HintPanel.backgroundColor=darken(#ffffe1,80%)
+HintPanel.backgroundColor = darken(#ffffe1,80%)
diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatLightLaf.properties b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatLightLaf.properties
index 07b41420..1b848c29 100644
--- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatLightLaf.properties
+++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/FlatLightLaf.properties
@@ -14,4 +14,4 @@
# limitations under the License.
#
-HintPanel.backgroundColor=#ffffe1
+HintPanel.backgroundColor = #ffffe1
diff --git a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json
index 948b6e61..49b4e182 100644
--- a/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json
+++ b/flatlaf-demo/src/main/resources/com/formdev/flatlaf/demo/intellijthemes/themes.json
@@ -4,14 +4,14 @@
"license": "MIT",
"licenseFile": "arc-themes.LICENSE.txt",
"sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea",
- "sourceCodePath": "blob/master/resources/arc-theme.theme.json"
+ "sourceCodePath": "blob/master/arc-theme-idea-light/resources/arc-theme.theme.json"
},
"arc-theme-orange.theme.json": {
"name": "Arc - Orange",
"license": "MIT",
"licenseFile": "arc-themes.LICENSE.txt",
"sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea",
- "sourceCodePath": "blob/master/resources/arc-theme-orange.theme.json"
+ "sourceCodePath": "blob/master/arc-theme-idea-light/resources/arc-theme-orange.theme.json"
},
"arc_theme_dark.theme.json": {
"name": "Arc Dark",
@@ -19,7 +19,7 @@
"license": "MIT",
"licenseFile": "arc-themes.LICENSE.txt",
"sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea",
- "sourceCodePath": "blob/master/resources/arc_theme_dark.theme.json"
+ "sourceCodePath": "blob/master/arc-theme-idea-dark/resources/arc_theme_dark.theme.json"
},
"arc_theme_dark_orange.theme.json": {
"name": "Arc Dark - Orange",
@@ -27,7 +27,7 @@
"license": "MIT",
"licenseFile": "arc-themes.LICENSE.txt",
"sourceCodeUrl": "https://gitlab.com/zlamalp/arc-theme-idea",
- "sourceCodePath": "blob/master/resources/arc_theme_dark_orange.theme.json"
+ "sourceCodePath": "blob/master/arc-theme-idea-dark/resources/arc_theme_dark_orange.theme.json"
},
"Carbon.theme.json": {
"name": "Carbon",
@@ -100,6 +100,14 @@
"sourceCodeUrl": "https://github.com/thvardhan/Gradianto",
"sourceCodePath": "blob/master/src/main/resources/Gradianto_midnight_blue.theme.json"
},
+ "Gradianto_Nature_Green.theme.json": {
+ "name": "Gradianto Nature Green",
+ "dark": true,
+ "license": "MIT",
+ "licenseFile": "Gradianto.LICENSE.txt",
+ "sourceCodeUrl": "https://github.com/thvardhan/Gradianto",
+ "sourceCodePath": "blob/master/src/main/resources/Gradianto_Nature_Green.theme.json"
+ },
"Gray.theme.json": {
"name": "Gray",
"license": "MIT",
@@ -402,6 +410,22 @@
"sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
"sourceCodePath": "blob/master/src/main/resources/themes/Monokai Pro Contrast.theme.json"
},
+ "material-theme-ui-lite/Moonlight.theme.json": {
+ "name": "Material Theme UI Lite / Moonlight",
+ "dark": true,
+ "license": "MIT",
+ "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
+ "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
+ "sourceCodePath": "blob/master/src/main/resources/themes/Moonlight.theme.json"
+ },
+ "material-theme-ui-lite/Moonlight Contrast.theme.json": {
+ "name": "Material Theme UI Lite / Moonlight Contrast",
+ "dark": true,
+ "license": "MIT",
+ "licenseFile": "material-theme-ui-lite/Material Theme UI Lite.LICENSE.txt",
+ "sourceCodeUrl": "https://github.com/mallowigi/material-theme-ui-lite",
+ "sourceCodePath": "blob/master/src/main/resources/themes/Moonlight Contrast.theme.json"
+ },
"material-theme-ui-lite/Night Owl.theme.json": {
"name": "Material Theme UI Lite / Night Owl",
"dark": true,
diff --git a/flatlaf-extras/README.md b/flatlaf-extras/README.md
index a4c6aeab..620f7a86 100644
--- a/flatlaf-extras/README.md
+++ b/flatlaf-extras/README.md
@@ -7,9 +7,12 @@ This sub-project provides some additional components and classes:
An icon that displays SVG using
[svgSalamander](https://github.com/JFormDesigner/svgSalamander).\

-- [TriStateCheckBox](https://www.javadoc.io/doc/com.formdev/flatlaf-extras/latest/com/formdev/flatlaf/extras/TriStateCheckBox.html):
+- [FlatTriStateCheckBox](https://www.javadoc.io/doc/com.formdev/flatlaf-extras/latest/com/formdev/flatlaf/extras/components/FlatTriStateCheckBox.html):
A tri-state check box.\

+- Extension classes of standard Swing components that provide easy access to
+ FlatLaf specific client properties (see package
+ [com.formdev.flatlaf.extras.components](https://www.javadoc.io/doc/com.formdev/flatlaf-extras/latest/com/formdev/flatlaf/extras/components/package-summary.html)).
- [FlatAnimatedLafChange](https://www.javadoc.io/doc/com.formdev/flatlaf-extras/latest/com/formdev/flatlaf/extras/FlatAnimatedLafChange.html):
Animated Laf (theme) changing.
- [FlatInspector](#ui-inspector): A simple UI inspector that shows information
@@ -35,10 +38,8 @@ Otherwise download `flatlaf-extras-.jar` here:
[](https://bintray.com/jformdesigner/flatlaf/flatlaf-extras/_latestVersion)
-You also need `flatlaf-.jar` and `svgSalamander-.jar`, which
-you can download here:
+If SVG classes are used, `svgSalamander-.jar` is also required:
-[](https://bintray.com/jformdesigner/flatlaf/flatlaf/_latestVersion)
[](https://bintray.com/jformdesigner/svgSalamander/svgSalamander/_latestVersion)
diff --git a/flatlaf-extras/build.gradle.kts b/flatlaf-extras/build.gradle.kts
index 831288e6..3fe98c75 100644
--- a/flatlaf-extras/build.gradle.kts
+++ b/flatlaf-extras/build.gradle.kts
@@ -22,7 +22,7 @@ plugins {
dependencies {
implementation( project( ":flatlaf-core" ) )
- implementation( "com.formdev:svgSalamander:1.1.2.3" )
+ implementation( "com.formdev:svgSalamander:1.1.2.4" )
}
flatlafModuleInfo {
@@ -40,6 +40,7 @@ tasks {
this as StandardJavadocDocletOptions
use( true )
tags = listOf( "uiDefault", "clientProperty" )
+ addStringOption( "Xdoclint:all,-missing", "-Xdoclint:all,-missing" )
}
isFailOnError = false
}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatInspector.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatInspector.java
index 6e9f4225..35f03d46 100644
--- a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatInspector.java
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatInspector.java
@@ -24,7 +24,6 @@ import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
-import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.KeyboardFocusManager;
import java.awt.LayoutManager;
@@ -348,8 +347,9 @@ public class FlatInspector
@Override
protected void paintBorder( Graphics g ) {
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
super.paintBorder( g );
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
};
c.setBackground( new Color( 255, 0, 0, 32 ) );
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/SVGUtils.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGUtils.java
similarity index 98%
rename from flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/SVGUtils.java
rename to flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGUtils.java
index 9f698d48..f40d3d83 100644
--- a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/SVGUtils.java
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGUtils.java
@@ -34,7 +34,7 @@ import com.kitfox.svg.SVGException;
*
* @author Karl Tauber
*/
-public class SVGUtils
+public class FlatSVGUtils
{
/**
* Creates from the given SVG a list of icon images with different sizes that
@@ -131,7 +131,7 @@ public class SVGUtils
*/
private static SVGDiagram loadSVG( String svgName ) {
try {
- URL url = SVGUtils.class.getResource( svgName );
+ URL url = FlatSVGUtils.class.getResource( svgName );
return SVGCache.getSVGUniverse().getDiagram( url.toURI() );
} catch( URISyntaxException ex ) {
throw new RuntimeException( ex );
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 3eee4ee6..e616e9bf 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
@@ -17,18 +17,23 @@
package com.formdev.flatlaf.extras;
import java.awt.*;
+import java.awt.datatransfer.StringSelection;
import java.awt.event.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Locale;
+import java.util.Properties;
import java.util.Map.Entry;
import java.util.Set;
import java.util.function.Predicate;
import java.util.prefs.Preferences;
+import java.util.regex.Pattern;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
@@ -44,6 +49,7 @@ import com.formdev.flatlaf.ui.FlatEmptyBorder;
import com.formdev.flatlaf.ui.FlatLineBorder;
import com.formdev.flatlaf.ui.FlatMarginBorder;
import com.formdev.flatlaf.ui.FlatUIUtils;
+import com.formdev.flatlaf.util.DerivedColor;
import com.formdev.flatlaf.util.GrayFilter;
import com.formdev.flatlaf.util.HSLColor;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
@@ -66,12 +72,12 @@ public class FlatUIDefaultsInspector
{
private static final int KEY_MODIFIERS_MASK = InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.META_DOWN_MASK;
- private static FlatUIDefaultsInspector inspector;
+ private static JFrame inspectorFrame;
- private final String title;
private final PropertyChangeListener lafListener = this::lafChanged;
private final PropertyChangeListener lafDefaultsListener = this::lafDefaultsChanged;
private boolean refreshPending;
+ private Properties derivedColorKeys;
/**
* Installs a key listener into the application that allows enabling and disabling
@@ -92,27 +98,31 @@ public class FlatUIDefaultsInspector
}
public static void show() {
- if( inspector != null ) {
- inspector.ensureOnScreen();
- inspector.frame.toFront();
+ if( inspectorFrame != null ) {
+ ensureOnScreen( inspectorFrame );
+ inspectorFrame.toFront();
return;
}
- inspector = new FlatUIDefaultsInspector();
- inspector.frame.setVisible( true );
+ inspectorFrame = new FlatUIDefaultsInspector().createFrame();
+ inspectorFrame.setVisible( true );
}
public static void hide() {
- if( inspector != null )
- inspector.frame.dispose();
+ if( inspectorFrame != null )
+ inspectorFrame.dispose();
+ }
+
+ /**
+ * Creates a UI defaults inspector panel that can be embedded into any window.
+ */
+ public static JComponent createInspectorPanel() {
+ return new FlatUIDefaultsInspector().panel;
}
private FlatUIDefaultsInspector() {
initComponents();
- title = frame.getTitle();
- updateWindowTitle();
-
panel.setBorder( new ScaledEmptyBorder( 10, 10, 10, 10 ) );
filterPanel.setBorder( new ScaledEmptyBorder( 0, 0, 10, 0 ) );
@@ -143,24 +153,21 @@ public class FlatUIDefaultsInspector
table.getRowSorter().setSortKeys( Collections.singletonList(
new RowSorter.SortKey( 0, SortOrder.ASCENDING ) ) );
- // restore window bounds
- Preferences prefs = getPrefs();
- int x = prefs.getInt( "x", -1 );
- int y = prefs.getInt( "y", -1 );
- int width = prefs.getInt( "width", UIScale.scale( 600 ) );
- int height = prefs.getInt( "height", UIScale.scale( 800 ) );
- frame.setSize( width, height );
- if( x != -1 && y != -1 ) {
- frame.setLocation( x, y );
- ensureOnScreen();
- } else
- frame.setLocationRelativeTo( null );
-
// restore column widths
+ Preferences prefs = getPrefs();
TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn( 0 ).setPreferredWidth( prefs.getInt( "column1width", 100 ) );
columnModel.getColumn( 1 ).setPreferredWidth( prefs.getInt( "column2width", 100 ) );
+ PropertyChangeListener columnWidthListener = e -> {
+ if( "width".equals( e.getPropertyName() ) ) {
+ prefs.putInt( "column1width", columnModel.getColumn( 0 ).getWidth() );
+ prefs.putInt( "column2width", columnModel.getColumn( 1 ).getWidth() );
+ }
+ };
+ columnModel.getColumn( 0 ).addPropertyChangeListener( columnWidthListener );
+ columnModel.getColumn( 1 ).addPropertyChangeListener( columnWidthListener );
+
// restore filter
String filter = prefs.get( "filter", "" );
String valueType = prefs.get( "valueType", null );
@@ -169,20 +176,66 @@ public class FlatUIDefaultsInspector
if( valueType != null )
valueTypeField.setSelectedItem( valueType );
- UIManager.addPropertyChangeListener( lafListener );
- UIManager.getDefaults().addPropertyChangeListener( lafDefaultsListener );
+ panel.addPropertyChangeListener( "ancestor", e -> {
+ if( e.getNewValue() != null ) {
+ UIManager.addPropertyChangeListener( lafListener );
+ UIManager.getDefaults().addPropertyChangeListener( lafDefaultsListener );
+ } else {
+ UIManager.removePropertyChangeListener( lafListener );
+ UIManager.getDefaults().removePropertyChangeListener( lafDefaultsListener );
+ }
+ } );
// register F5 key to refresh
- ((JComponent)frame.getContentPane()).registerKeyboardAction(
+ panel.registerKeyboardAction(
e -> refresh(),
KeyStroke.getKeyStroke( KeyEvent.VK_F5, 0, false ),
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
+ }
+
+ private JFrame createFrame() {
+ JFrame frame = new JFrame();
+ frame.setTitle( "UI Defaults Inspector" );
+ frame.setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE );
+ frame.addWindowListener( new WindowAdapter() {
+ @Override
+ public void windowClosed( WindowEvent e ) {
+ inspectorFrame = null;
+ }
+ @Override
+ public void windowClosing( WindowEvent e ) {
+ saveWindowBounds( frame );
+ }
+ @Override
+ public void windowDeactivated( WindowEvent e ) {
+ saveWindowBounds( frame );
+ }
+ } );
+
+ updateWindowTitle( frame );
+
+ frame.getContentPane().add( panel, BorderLayout.CENTER );
+
+ // restore window bounds
+ Preferences prefs = getPrefs();
+ int x = prefs.getInt( "x", -1 );
+ int y = prefs.getInt( "y", -1 );
+ int width = prefs.getInt( "width", UIScale.scale( 600 ) );
+ int height = prefs.getInt( "height", UIScale.scale( 800 ) );
+ frame.setSize( width, height );
+ if( x != -1 && y != -1 ) {
+ frame.setLocation( x, y );
+ ensureOnScreen( frame );
+ } else
+ frame.setLocationRelativeTo( null );
// register ESC key to close frame
((JComponent)frame.getContentPane()).registerKeyboardAction(
e -> frame.dispose(),
KeyStroke.getKeyStroke( KeyEvent.VK_ESCAPE, 0, false ),
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
+
+ return frame;
}
private void delegateKey( int keyCode, String actionKey ) {
@@ -202,7 +255,7 @@ public class FlatUIDefaultsInspector
} );
}
- private void ensureOnScreen() {
+ private static void ensureOnScreen( JFrame frame ) {
Rectangle frameBounds = frame.getBounds();
boolean onScreen = false;
for( GraphicsDevice screen : GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices() ) {
@@ -219,12 +272,12 @@ public class FlatUIDefaultsInspector
frame.setLocationRelativeTo( null );
}
- void lafChanged( PropertyChangeEvent e ) {
+ private void lafChanged( PropertyChangeEvent e ) {
if( "lookAndFeel".equals( e.getPropertyName() ) )
refresh();
}
- void lafDefaultsChanged( PropertyChangeEvent e ) {
+ private void lafDefaultsChanged( PropertyChangeEvent e ) {
if( refreshPending )
return;
@@ -235,11 +288,13 @@ public class FlatUIDefaultsInspector
} );
}
- void refresh() {
+ private void refresh() {
ItemsTableModel model = (ItemsTableModel) table.getModel();
model.setItems( getUIDefaultsItems() );
- updateWindowTitle();
+ JFrame frame = (JFrame) SwingUtilities.getAncestorOfClass( JFrame.class, panel );
+ if( frame != null )
+ updateWindowTitle( frame );
}
private Item[] getUIDefaultsItems() {
@@ -249,6 +304,7 @@ public class FlatUIDefaultsInspector
Set> defaultsSet = defaults.entrySet();
ArrayList- items = new ArrayList<>( defaultsSet.size() );
HashSet
keys = new HashSet<>( defaultsSet.size() );
+ Color[] pBaseColor = new Color[1];
for( Entry e : defaultsSet ) {
Object key = e.getKey();
@@ -265,6 +321,13 @@ public class FlatUIDefaultsInspector
if( !keys.add( key ) )
continue;
+ // resolve derived color
+ if( value instanceof DerivedColor ) {
+ Color resolvedColor = resolveDerivedColor( defaults, (String) key, (DerivedColor) value, pBaseColor );
+ if( resolvedColor != value )
+ value = new Color[] { resolvedColor, pBaseColor[0], (Color) value };
+ }
+
// check whether key was overridden using UIManager.put(key,value)
Object lafValue = null;
if( defaults.containsKey( key ) )
@@ -277,41 +340,106 @@ public class FlatUIDefaultsInspector
return items.toArray( new Item[items.size()] );
}
- private void updateWindowTitle() {
- frame.setTitle( title + " - " + UIManager.getLookAndFeel().getName() );
+ private Color resolveDerivedColor( UIDefaults defaults, String key, Color color, Color[] pBaseColor ) {
+ if( pBaseColor != null )
+ pBaseColor[0] = null;
+
+ if( !(color instanceof DerivedColor) )
+ return color;
+
+ if( derivedColorKeys == null )
+ derivedColorKeys = loadDerivedColorKeys();
+
+ Object baseKey = derivedColorKeys.get( key );
+ if( baseKey == null )
+ return color;
+
+ // this is for keys that may be defined as derived colors, but do not derive them at runtime
+ if( "null".equals( baseKey ) )
+ return color;
+
+ Color baseColor = defaults.getColor( baseKey );
+ if( baseColor == null )
+ return color;
+
+ if( baseColor instanceof DerivedColor )
+ baseColor = resolveDerivedColor( defaults, (String) baseKey, baseColor, null );
+
+ if( pBaseColor != null )
+ pBaseColor[0] = baseColor;
+
+ Color newColor = FlatUIUtils.deriveColor( color, baseColor );
+
+ // creating a new color instance to drop Color.frgbvalue from newColor
+ // and avoid rounding issues/differences
+ return new Color( newColor.getRGB(), true );
}
- private void saveWindowBounds() {
+ private Properties loadDerivedColorKeys() {
+ Properties properties = new Properties();
+ try( InputStream in = getClass().getResourceAsStream( "/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties" ) ) {
+ properties.load( in );
+ } catch( IOException ex ) {
+ ex.printStackTrace();
+ }
+ return properties;
+ }
+
+ private static void updateWindowTitle( JFrame frame ) {
+ String title = frame.getTitle();
+ String sep = " - ";
+ int sepIndex = title.indexOf( sep );
+ if( sepIndex >= 0 )
+ title = title.substring( 0, sepIndex );
+ frame.setTitle( title + sep + UIManager.getLookAndFeel().getName() );
+ }
+
+ private void saveWindowBounds( JFrame frame ) {
Preferences prefs = getPrefs();
prefs.putInt( "x", frame.getX() );
prefs.putInt( "y", frame.getY() );
prefs.putInt( "width", frame.getWidth() );
prefs.putInt( "height", frame.getHeight() );
-
- TableColumnModel columnModel = table.getColumnModel();
- prefs.putInt( "column1width", columnModel.getColumn( 0 ).getWidth() );
- prefs.putInt( "column2width", columnModel.getColumn( 1 ).getWidth() );
}
private Preferences getPrefs() {
return Preferences.userRoot().node( "flatlaf-uidefaults-inspector" );
}
- private void windowClosed() {
- UIManager.removePropertyChangeListener( lafListener );
- UIManager.getDefaults().removePropertyChangeListener( lafDefaultsListener );
-
- inspector = null;
- }
-
private void filterChanged() {
String filter = filterField.getText().trim();
String valueType = (String) valueTypeField.getSelectedItem();
// split filter string on space characters
- String[] filters = filter.split( " +" );
- for( int i = 0; i < filters.length; i++ )
- filters[i] = filters[i].toLowerCase( Locale.ENGLISH );
+ String[] filters = !filter.isEmpty() ? filter.split( " +" ) : null;
+ Pattern[] patterns = (filters != null) ? new Pattern[filters.length] : null;
+ if( filters != null ) {
+ for( int i = 0; i < filters.length; i++ ) {
+ filters[i] = filters[i].toLowerCase( Locale.ENGLISH );
+
+ // simple wildcard matching
+ // - '*' matches any number of characters
+ // - '?' matches a single character
+ // - '^' beginning of line
+ // - '$' end of line
+ String f = filters[i];
+ boolean matchBeginning = f.startsWith( "^" );
+ boolean matchEnd = f.endsWith( "$" );
+ if( f.indexOf( '*' ) >= 0 || f.indexOf( '?' ) >= 0 || matchBeginning || matchEnd ) {
+ if( matchBeginning )
+ f = f.substring( 1 );
+ if( matchEnd )
+ f = f.substring( 0, f.length() - 1 );
+
+ String regex = ("\\Q" + f + "\\E").replace( "*", "\\E.*\\Q" ).replace( "?", "\\E.\\Q" );
+ if( !matchBeginning )
+ regex = ".*" + regex;
+ if( !matchEnd )
+ regex = regex + ".*";
+ patterns[i] = Pattern.compile( regex );
+ }
+ }
+ }
ItemsTableModel model = (ItemsTableModel) table.getModel();
model.setFilter( item -> {
@@ -320,11 +448,21 @@ public class FlatUIDefaultsInspector
!valueType.equals( typeOfValue( item.value ) ) )
return false;
+ if( filters == null )
+ return true;
+
String lkey = item.key.toLowerCase( Locale.ENGLISH );
String lvalue = item.getValueAsString().toLowerCase( Locale.ENGLISH );
- for( String f : filters ) {
- if( lkey.contains( f ) || lvalue.contains( f ) )
- return true;
+ for( int i = 0; i < filters.length; i++ ) {
+ Pattern p = patterns[i];
+ if( p != null ) {
+ if( p.matcher( lkey ).matches() || p.matcher( lvalue ).matches() )
+ return true;
+ } else {
+ String f = filters[i];
+ if( lkey.contains( f ) || lvalue.contains( f ) )
+ return true;
+ }
}
return false;
} );
@@ -339,7 +477,7 @@ public class FlatUIDefaultsInspector
return "Boolean";
if( value instanceof Border )
return "Border";
- if( value instanceof Color )
+ if( value instanceof Color || value instanceof Color[] )
return "Color";
if( value instanceof Dimension )
return "Dimension";
@@ -358,9 +496,51 @@ public class FlatUIDefaultsInspector
return "(other)";
}
+ private void tableMousePressed( MouseEvent e ) {
+ if( !SwingUtilities.isRightMouseButton( e ) )
+ return;
+
+ int row = table.rowAtPoint( e.getPoint() );
+ if( row >= 0 && !table.isRowSelected( row ) )
+ table.setRowSelectionInterval( row, row );
+ }
+
+ private void copyKey() {
+ copyToClipboard( 0 );
+ }
+
+ private void copyValue() {
+ copyToClipboard( 1 );
+ }
+
+ private void copyKeyAndValue() {
+ copyToClipboard( -1 );
+ }
+
+ private void copyToClipboard( int column ) {
+ int[] rows = table.getSelectedRows();
+ if( rows.length == 0 )
+ return;
+
+ StringBuilder buf = new StringBuilder();
+ for( int i = 0; i < rows.length; i++ ) {
+ if( i > 0 )
+ buf.append( '\n' );
+
+ if( column < 0 || column == 0 )
+ buf.append( table.getValueAt( rows[i], 0 ) );
+ if( column < 0 )
+ buf.append( " = " );
+ if( column < 0 || column == 1 )
+ buf.append( table.getValueAt( rows[i], 1 ) );
+ }
+
+ Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
+ new StringSelection( buf.toString() ), null );
+ }
+
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
- frame = new JFrame();
panel = new JPanel();
filterPanel = new JPanel();
flterLabel = new JLabel();
@@ -369,100 +549,106 @@ public class FlatUIDefaultsInspector
valueTypeField = new JComboBox<>();
scrollPane = new JScrollPane();
table = new JTable();
+ tablePopupMenu = new JPopupMenu();
+ copyKeyMenuItem = new JMenuItem();
+ copyValueMenuItem = new JMenuItem();
+ copyKeyAndValueMenuItem = new JMenuItem();
- //======== frame ========
+ //======== panel ========
{
- frame.setTitle("UI Defaults Inspector");
- frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
- frame.addWindowListener(new WindowAdapter() {
- @Override
- public void windowClosed(WindowEvent e) {
- FlatUIDefaultsInspector.this.windowClosed();
- }
- @Override
- public void windowClosing(WindowEvent e) {
- saveWindowBounds();
- }
- @Override
- public void windowDeactivated(WindowEvent e) {
- saveWindowBounds();
- }
- });
- Container frameContentPane = frame.getContentPane();
- frameContentPane.setLayout(new BorderLayout());
+ panel.setLayout(new BorderLayout());
- //======== panel ========
+ //======== filterPanel ========
{
- panel.setLayout(new BorderLayout());
+ filterPanel.setLayout(new GridBagLayout());
+ ((GridBagLayout)filterPanel.getLayout()).columnWidths = new int[] {0, 0, 0, 0, 0};
+ ((GridBagLayout)filterPanel.getLayout()).rowHeights = new int[] {0, 0};
+ ((GridBagLayout)filterPanel.getLayout()).columnWeights = new double[] {0.0, 1.0, 0.0, 0.0, 1.0E-4};
+ ((GridBagLayout)filterPanel.getLayout()).rowWeights = new double[] {0.0, 1.0E-4};
- //======== filterPanel ========
- {
- filterPanel.setLayout(new GridBagLayout());
- ((GridBagLayout)filterPanel.getLayout()).columnWidths = new int[] {0, 0, 0, 0, 0};
- ((GridBagLayout)filterPanel.getLayout()).rowHeights = new int[] {0, 0};
- ((GridBagLayout)filterPanel.getLayout()).columnWeights = new double[] {0.0, 1.0, 0.0, 0.0, 1.0E-4};
- ((GridBagLayout)filterPanel.getLayout()).rowWeights = new double[] {0.0, 1.0E-4};
+ //---- flterLabel ----
+ flterLabel.setText("Filter:");
+ flterLabel.setLabelFor(filterField);
+ flterLabel.setDisplayedMnemonic('F');
+ filterPanel.add(flterLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
+ GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+ new Insets(0, 0, 0, 10), 0, 0));
- //---- flterLabel ----
- flterLabel.setText("Filter:");
- flterLabel.setLabelFor(filterField);
- flterLabel.setDisplayedMnemonic('F');
- filterPanel.add(flterLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
- GridBagConstraints.CENTER, GridBagConstraints.BOTH,
- new Insets(0, 0, 0, 10), 0, 0));
+ //---- filterField ----
+ filterField.putClientProperty("JTextField.placeholderText", "enter one or more filter strings, separated by space characters");
+ filterPanel.add(filterField, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
+ GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+ new Insets(0, 0, 0, 10), 0, 0));
- //---- filterField ----
- filterField.putClientProperty("JTextField.placeholderText", "enter one or more filter strings, separated by space characters");
- filterPanel.add(filterField, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
- GridBagConstraints.CENTER, GridBagConstraints.BOTH,
- new Insets(0, 0, 0, 10), 0, 0));
+ //---- valueTypeLabel ----
+ valueTypeLabel.setText("Value Type:");
+ valueTypeLabel.setLabelFor(valueTypeField);
+ valueTypeLabel.setDisplayedMnemonic('T');
+ filterPanel.add(valueTypeLabel, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
+ GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+ new Insets(0, 0, 0, 10), 0, 0));
- //---- valueTypeLabel ----
- valueTypeLabel.setText("Value Type:");
- valueTypeLabel.setLabelFor(valueTypeField);
- valueTypeLabel.setDisplayedMnemonic('T');
- filterPanel.add(valueTypeLabel, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
- GridBagConstraints.CENTER, GridBagConstraints.BOTH,
- new Insets(0, 0, 0, 10), 0, 0));
-
- //---- valueTypeField ----
- valueTypeField.setModel(new DefaultComboBoxModel<>(new String[] {
- "(any)",
- "Boolean",
- "Border",
- "Color",
- "Dimension",
- "Float",
- "Font",
- "Icon",
- "Insets",
- "Integer",
- "String",
- "(other)"
- }));
- valueTypeField.addActionListener(e -> filterChanged());
- filterPanel.add(valueTypeField, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0,
- GridBagConstraints.CENTER, GridBagConstraints.BOTH,
- new Insets(0, 0, 0, 0), 0, 0));
- }
- panel.add(filterPanel, BorderLayout.NORTH);
-
- //======== scrollPane ========
- {
-
- //---- table ----
- table.setAutoCreateRowSorter(true);
- scrollPane.setViewportView(table);
- }
- panel.add(scrollPane, BorderLayout.CENTER);
+ //---- valueTypeField ----
+ valueTypeField.setModel(new DefaultComboBoxModel<>(new String[] {
+ "(any)",
+ "Boolean",
+ "Border",
+ "Color",
+ "Dimension",
+ "Float",
+ "Font",
+ "Icon",
+ "Insets",
+ "Integer",
+ "String",
+ "(other)"
+ }));
+ valueTypeField.addActionListener(e -> filterChanged());
+ filterPanel.add(valueTypeField, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0,
+ GridBagConstraints.CENTER, GridBagConstraints.BOTH,
+ new Insets(0, 0, 0, 0), 0, 0));
}
- frameContentPane.add(panel, BorderLayout.CENTER);
+ panel.add(filterPanel, BorderLayout.NORTH);
+
+ //======== scrollPane ========
+ {
+
+ //---- table ----
+ table.setAutoCreateRowSorter(true);
+ table.setComponentPopupMenu(tablePopupMenu);
+ table.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mousePressed(MouseEvent e) {
+ tableMousePressed(e);
+ }
+ });
+ scrollPane.setViewportView(table);
+ }
+ panel.add(scrollPane, BorderLayout.CENTER);
+ }
+
+ //======== tablePopupMenu ========
+ {
+
+ //---- copyKeyMenuItem ----
+ copyKeyMenuItem.setText("Copy Key");
+ copyKeyMenuItem.addActionListener(e -> copyKey());
+ tablePopupMenu.add(copyKeyMenuItem);
+
+ //---- copyValueMenuItem ----
+ copyValueMenuItem.setText("Copy Value");
+ copyValueMenuItem.addActionListener(e -> copyValue());
+ tablePopupMenu.add(copyValueMenuItem);
+
+ //---- copyKeyAndValueMenuItem ----
+ copyKeyAndValueMenuItem.setText("Copy Key and Value");
+ copyKeyAndValueMenuItem.addActionListener(e -> copyKeyAndValue());
+ tablePopupMenu.add(copyKeyAndValueMenuItem);
}
// JFormDesigner - End of component initialization //GEN-END:initComponents
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
- private JFrame frame;
private JPanel panel;
private JPanel filterPanel;
private JLabel flterLabel;
@@ -471,6 +657,10 @@ public class FlatUIDefaultsInspector
private JComboBox valueTypeField;
private JScrollPane scrollPane;
private JTable table;
+ private JPopupMenu tablePopupMenu;
+ private JMenuItem copyKeyMenuItem;
+ private JMenuItem copyValueMenuItem;
+ private JMenuItem copyKeyAndValueMenuItem;
// JFormDesigner - End of variables declaration //GEN-END:variables
//---- class Item ---------------------------------------------------------
@@ -495,19 +685,17 @@ public class FlatUIDefaultsInspector
}
static String valueAsString( Object value ) {
- if( value instanceof Color ) {
- Color color = (Color) value;
+ if( value instanceof Color || value instanceof Color[] ) {
+ Color color = (value instanceof Color[]) ? ((Color[])value)[0] : (Color) value;
HSLColor hslColor = new HSLColor( color );
if( color.getAlpha() == 255 ) {
- return String.format( "%s rgb(%d, %d, %d) hsl(%d, %d, %d)",
+ return String.format( "%-9s HSL %3d %3d %3d",
color2hex( color ),
- color.getRed(), color.getGreen(), color.getBlue(),
(int) hslColor.getHue(), (int) hslColor.getSaturation(),
(int) hslColor.getLuminance() );
} else {
- return String.format( "%s rgba(%d, %d, %d, %d) hsla(%d, %d, %d, %d)",
+ return String.format( "%-9s HSL %3d %3d %3d %2d",
color2hex( color ),
- color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha(),
(int) hslColor.getHue(), (int) hslColor.getSaturation(),
(int) hslColor.getLuminance(), (int) (hslColor.getAlpha() * 100) );
}
@@ -533,7 +721,7 @@ public class FlatUIDefaultsInspector
if( border instanceof FlatLineBorder ) {
FlatLineBorder lineBorder = (FlatLineBorder) border;
return valueAsString( lineBorder.getUnscaledBorderInsets() )
- + " " + Item.color2hex( lineBorder.getLineColor() )
+ + " " + color2hex( lineBorder.getLineColor() )
+ " " + lineBorder.getLineThickness()
+ " " + border.getClass().getName();
} else if( border instanceof EmptyBorder ) {
@@ -803,7 +991,7 @@ public class FlatUIDefaultsInspector
init( table, item.key, isSelected, row );
// reset background, foreground and icon
- if( !(item.value instanceof Color) ) {
+ if( !(item.value instanceof Color) && !(item.value instanceof Color[]) ) {
setBackground( null );
setForeground( null );
}
@@ -815,9 +1003,9 @@ public class FlatUIDefaultsInspector
super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column );
- if( item.value instanceof Color ) {
- Color color = (Color) item.value;
- boolean isDark = new HSLColor( color ).getLuminance() < 70;
+ if( item.value instanceof Color || item.value instanceof Color[] ) {
+ Color color = (item.value instanceof Color[]) ? ((Color[])item.value)[0] : (Color) item.value;
+ boolean isDark = new HSLColor( color ).getLuminance() < 70 && color.getAlpha() >= 128;
setBackground( color );
setForeground( isDark ? Color.white : Color.black );
} else if( item.value instanceof Icon ) {
@@ -826,7 +1014,9 @@ public class FlatUIDefaultsInspector
}
// set tooltip
- String toolTipText = String.valueOf( item.value );
+ String toolTipText = (item.value instanceof Object[])
+ ? Arrays.toString( (Object[]) item.value ).replace( ", ", ",\n" )
+ : String.valueOf( item.value );
if( item.lafValue != null ) {
toolTipText += " \n\nLaF UI default value was overridden with UIManager.put(key,value):\n "
+ Item.valueAsString( item.lafValue ) + "\n " + String.valueOf( item.lafValue );
@@ -838,10 +1028,31 @@ public class FlatUIDefaultsInspector
@Override
protected void paintComponent( Graphics g ) {
- if( item.value instanceof Color ) {
- // fill background
- g.setColor( getBackground() );
- g.fillRect( 0, 0, getWidth(), getHeight() );
+ if( item.value instanceof Color || item.value instanceof Color[] ) {
+ int width = getWidth();
+ int height = getHeight();
+ Color background = getBackground();
+
+ // paint color
+ fillRect( g, background, 0, 0, width, height );
+
+ if( item.value instanceof Color[] ) {
+ // paint base color
+ int width2 = height * 2;
+ fillRect( g, ((Color[])item.value)[1], width - width2, 0, width2, height );
+
+ // paint default color
+ Color defaultColor = ((Color[])item.value)[2];
+ if( defaultColor != null && !defaultColor.equals( background ) ) {
+ int width3 = height / 2;
+ fillRect( g, defaultColor, width - width3, 0, width3, height );
+ }
+
+ // paint "derived color" indicator
+ int width4 = height / 4;
+ g.setColor( Color.magenta );
+ g.fillRect( width - width4, 0, width4, height );
+ }
// layout text
FontMetrics fm = getFontMetrics( getFont() );
@@ -853,18 +1064,14 @@ public class FlatUIDefaultsInspector
g.setColor( getForeground() );
- // paint rgb() and hsl() horizontally aligned
- int rgbIndex = text.indexOf( "rgb" );
- int hslIndex = text.indexOf( "hsl" );
- if( rgbIndex > 0 && hslIndex > rgbIndex ) {
- String hexText = text.substring( 0, rgbIndex );
- String rgbText = text.substring( rgbIndex, hslIndex );
+ // paint hsl horizontally aligned
+ int hslIndex = text.indexOf( "HSL" );
+ if( hslIndex > 0 ) {
+ String hexText = text.substring( 0, hslIndex );
String hslText = text.substring( hslIndex );
- int hexWidth = Math.max( fm.stringWidth( hexText ), fm.stringWidth( "#DDDDDD " ) );
- int rgbWidth = Math.max( fm.stringWidth( rgbText ), fm.stringWidth( "rgb(444, 444, 444) " ) );
+ int hexWidth = Math.max( fm.stringWidth( hexText ), fm.stringWidth( "#12345678 " ) );
FlatUIUtils.drawString( this, g, hexText, x, y );
- FlatUIUtils.drawString( this, g, rgbText, x + hexWidth, y );
- FlatUIUtils.drawString( this, g, hslText, x + hexWidth + rgbWidth, y );
+ FlatUIUtils.drawString( this, g, hslText, x + hexWidth, y );
} else
FlatUIUtils.drawString( this, g, text, x, y );
} else
@@ -872,6 +1079,17 @@ public class FlatUIDefaultsInspector
paintSeparator( g );
}
+
+ private void fillRect( Graphics g, Color color, int x, int y, int width, int height ) {
+ // fill white if color is translucent
+ if( color.getAlpha() != 255 ) {
+ g.setColor( Color.white );
+ g.fillRect( x, y, width, height );
+ }
+
+ g.setColor( color );
+ g.fillRect( x, y, width, height );
+ }
}
//---- class SafeIcon -----------------------------------------------------
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatUIDefaultsInspector.jfd b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatUIDefaultsInspector.jfd
index a563dd73..731c5284 100644
--- a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatUIDefaultsInspector.jfd
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatUIDefaultsInspector.jfd
@@ -1,83 +1,73 @@
-JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
root: new FormRoot {
- add( new FormWindow( "javax.swing.JFrame", new FormLayoutManager( class java.awt.BorderLayout ) ) {
- name: "frame"
- "title": "UI Defaults Inspector"
- "defaultCloseOperation": 2
- "$sizePolicy": 2
- "$locationPolicy": 2
- addEvent( new FormEvent( "java.awt.event.WindowListener", "windowClosed", "windowClosed", false ) )
- addEvent( new FormEvent( "java.awt.event.WindowListener", "windowClosing", "saveWindowBounds", false ) )
- addEvent( new FormEvent( "java.awt.event.WindowListener", "windowDeactivated", "saveWindowBounds", false ) )
- add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) {
- name: "panel"
- add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.GridBagLayout ) {
- "$columnSpecs": "0, 0:1.0, 0, 0"
- "$rowSpecs": "0"
- "$hGap": 10
- "$vGap": 5
- "$alignLeft": true
- "$alignTop": true
- } ) {
- name: "filterPanel"
- add( new FormComponent( "javax.swing.JLabel" ) {
- name: "flterLabel"
- "text": "Filter:"
- "labelFor": new FormReference( "filterField" )
- "displayedMnemonic": 70
- }, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) )
- add( new FormComponent( "javax.swing.JTextField" ) {
- name: "filterField"
- "$client.JTextField.placeholderText": "enter one or more filter strings, separated by space characters"
- }, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) {
- "gridx": 1
- } )
- add( new FormComponent( "javax.swing.JLabel" ) {
- name: "valueTypeLabel"
- "text": "Value Type:"
- "labelFor": new FormReference( "valueTypeField" )
- "displayedMnemonic": 84
- }, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) {
- "gridx": 2
- } )
- add( new FormComponent( "javax.swing.JComboBox" ) {
- name: "valueTypeField"
- "model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "(any)"
- addElement( "(any)" )
- addElement( "Boolean" )
- addElement( "Border" )
- addElement( "Color" )
- addElement( "Dimension" )
- addElement( "Float" )
- addElement( "Font" )
- addElement( "Icon" )
- addElement( "Insets" )
- addElement( "Integer" )
- addElement( "String" )
- addElement( "(other)" )
- }
- auxiliary() {
- "JavaCodeGenerator.typeParameters": "String"
- }
- addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "filterChanged", false ) )
- }, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) {
- "gridx": 3
- } )
- }, new FormLayoutConstraints( class java.lang.String ) {
- "value": "North"
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) {
+ name: "panel"
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.GridBagLayout ) {
+ "$columnSpecs": "0, 0:1.0, 0, 0"
+ "$rowSpecs": "0"
+ "$hGap": 10
+ "$vGap": 5
+ "$alignLeft": true
+ "$alignTop": true
+ } ) {
+ name: "filterPanel"
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "flterLabel"
+ "text": "Filter:"
+ "labelFor": new FormReference( "filterField" )
+ "displayedMnemonic": 70
+ }, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) )
+ add( new FormComponent( "javax.swing.JTextField" ) {
+ name: "filterField"
+ "$client.JTextField.placeholderText": "enter one or more filter strings, separated by space characters"
+ }, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) {
+ "gridx": 1
} )
- add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
- name: "scrollPane"
- add( new FormComponent( "javax.swing.JTable" ) {
- name: "table"
- "autoCreateRowSorter": true
- } )
- }, new FormLayoutConstraints( class java.lang.String ) {
- "value": "Center"
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "valueTypeLabel"
+ "text": "Value Type:"
+ "labelFor": new FormReference( "valueTypeField" )
+ "displayedMnemonic": 84
+ }, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) {
+ "gridx": 2
+ } )
+ add( new FormComponent( "javax.swing.JComboBox" ) {
+ name: "valueTypeField"
+ "model": new javax.swing.DefaultComboBoxModel {
+ selectedItem: "(any)"
+ addElement( "(any)" )
+ addElement( "Boolean" )
+ addElement( "Border" )
+ addElement( "Color" )
+ addElement( "Dimension" )
+ addElement( "Float" )
+ addElement( "Font" )
+ addElement( "Icon" )
+ addElement( "Insets" )
+ addElement( "Integer" )
+ addElement( "String" )
+ addElement( "(other)" )
+ }
+ auxiliary() {
+ "JavaCodeGenerator.typeParameters": "String"
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "filterChanged", false ) )
+ }, new FormLayoutConstraints( class com.jformdesigner.runtime.GridBagConstraintsEx ) {
+ "gridx": 3
+ } )
+ }, new FormLayoutConstraints( class java.lang.String ) {
+ "value": "North"
+ } )
+ add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
+ name: "scrollPane"
+ add( new FormComponent( "javax.swing.JTable" ) {
+ name: "table"
+ "autoCreateRowSorter": true
+ "componentPopupMenu": new FormReference( "tablePopupMenu" )
+ addEvent( new FormEvent( "java.awt.event.MouseListener", "mousePressed", "tableMousePressed", true ) )
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "Center"
@@ -86,5 +76,25 @@ new FormModel {
"location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 400, 300 )
} )
+ add( new FormContainer( "javax.swing.JPopupMenu", new FormLayoutManager( class javax.swing.JPopupMenu ) ) {
+ name: "tablePopupMenu"
+ add( new FormComponent( "javax.swing.JMenuItem" ) {
+ name: "copyKeyMenuItem"
+ "text": "Copy Key"
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "copyKey", false ) )
+ } )
+ add( new FormComponent( "javax.swing.JMenuItem" ) {
+ name: "copyValueMenuItem"
+ "text": "Copy Value"
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "copyValue", false ) )
+ } )
+ add( new FormComponent( "javax.swing.JMenuItem" ) {
+ name: "copyKeyAndValueMenuItem"
+ "text": "Copy Key and Value"
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "copyKeyAndValue", false ) )
+ } )
+ }, new FormLayoutConstraints( null ) {
+ "location": new java.awt.Point( 0, 370 )
+ } )
}
}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/TriStateCheckBox.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/TriStateCheckBox.java
deleted file mode 100644
index a60c45ef..00000000
--- a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/TriStateCheckBox.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright 2019 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
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.formdev.flatlaf.extras;
-
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.event.ItemEvent;
-import javax.swing.JCheckBox;
-import javax.swing.LookAndFeel;
-import javax.swing.UIManager;
-import com.formdev.flatlaf.FlatLaf;
-
-/**
- * A tri-state check box.
- *
- * To display the third state, this component requires an LaF that supports painting
- * the indeterminate state if client property {@code "JButton.selectedState"} has the
- * value {@code "indeterminate"}.
- *
- * FlatLaf and Mac Aqua LaF support the third state.
- * For other LaFs a magenta rectangle is painted around the component for the third state.
- *
- * @author Karl Tauber
- */
-public class TriStateCheckBox
- extends JCheckBox
-{
- public enum State { INDETERMINATE, SELECTED, UNSELECTED }
-
- private State state;
- private boolean thirdStateEnabled = true;
-
- public TriStateCheckBox() {
- this( null );
- }
-
- public TriStateCheckBox( String text ) {
- this( text, State.INDETERMINATE );
- }
-
- public TriStateCheckBox( String text, State initialState ) {
- super( text );
-
- setModel( new ToggleButtonModel() {
- @Override
- public boolean isSelected() {
- return state != State.UNSELECTED;
- }
-
- @Override
- public void setSelected( boolean b ) {
- switch( state ) {
- case INDETERMINATE: setState( State.SELECTED ); break;
- case SELECTED: setState( State.UNSELECTED ); break;
- case UNSELECTED: setState( thirdStateEnabled ? State.INDETERMINATE : State.SELECTED ); break;
- }
-
- fireStateChanged();
- fireItemStateChanged( new ItemEvent( this, ItemEvent.ITEM_STATE_CHANGED, this,
- isSelected() ? ItemEvent.SELECTED : ItemEvent.DESELECTED ) );
- }
- } );
-
- setState( initialState );
- }
-
- public State getState() {
- return state;
- }
-
- public void setState( State state ) {
- if( this.state == state )
- return;
-
- State oldState = this.state;
- this.state = state;
-
- putClientProperty( "JButton.selectedState", state == State.INDETERMINATE ? "indeterminate" : null );
-
- firePropertyChange( "state", oldState, state );
- repaint();
- }
-
- public Boolean getValue() {
- switch( state ) {
- default:
- case INDETERMINATE: return null;
- case SELECTED: return true;
- case UNSELECTED: return false;
- }
- }
-
- public void setValue( Boolean value ) {
- setState( value == null ? State.INDETERMINATE : (value ? State.SELECTED : State.UNSELECTED) );
- }
-
- public boolean isThirdStateEnabled() {
- return thirdStateEnabled;
- }
-
- public void setThirdStateEnabled( boolean thirdStateEnabled ) {
- this.thirdStateEnabled = thirdStateEnabled;
-
- if( state == State.INDETERMINATE )
- setState( State.UNSELECTED );
- }
-
- @Override
- public void setSelected( boolean b ) {
- setState( b ? State.SELECTED : State.UNSELECTED );
- }
-
- @Override
- protected void paintComponent( Graphics g ) {
- super.paintComponent( g );
-
- if( state == State.INDETERMINATE && !isThirdStateSupported() ) {
- g.setColor( Color.magenta );
- g.drawRect( 0, 0, getWidth() - 1, getHeight() - 1 );
- }
- }
-
- private boolean isThirdStateSupported() {
- LookAndFeel laf = UIManager.getLookAndFeel();
- return laf instanceof FlatLaf || laf.getClass().getName().equals( "com.apple.laf.AquaLookAndFeel" );
- }
-}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatButton.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatButton.java
new file mode 100644
index 00000000..63ede0b4
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatButton.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import java.awt.Color;
+import javax.swing.JButton;
+
+/**
+ * Subclass of {@link JButton} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatButton
+ extends JButton
+ implements FlatComponentExtension
+{
+ // NOTE: enum names must be equal to allowed strings
+ public enum ButtonType { none, square, roundRect, tab, help, toolBarButton };
+
+ /**
+ * Returns type of a button.
+ */
+ public ButtonType getButtonType() {
+ return getClientPropertyEnumString( BUTTON_TYPE, ButtonType.class, null, ButtonType.none );
+ }
+
+ /**
+ * Specifies type of a button.
+ */
+ public void setButtonType( ButtonType buttonType ) {
+ if( buttonType == ButtonType.none )
+ buttonType = null;
+ putClientPropertyEnumString( BUTTON_TYPE, buttonType );
+ }
+
+
+ /**
+ * Returns whether the button preferred size will be made square (quadratically).
+ */
+ public boolean isSquareSize() {
+ return getClientPropertyBoolean( SQUARE_SIZE, false );
+ }
+
+ /**
+ * Specifies whether the button preferred size will be made square (quadratically).
+ */
+ public void setSquareSize( boolean squareSize ) {
+ putClientPropertyBoolean( SQUARE_SIZE, squareSize, false );
+ }
+
+
+ /**
+ * Returns minimum width of a component.
+ */
+ public int getMinimumWidth() {
+ return getClientPropertyInt( MINIMUM_WIDTH, "Button.minimumWidth" );
+ }
+
+ /**
+ * Specifies minimum width of a component.
+ */
+ public void setMinimumWidth( int minimumWidth ) {
+ putClientProperty( MINIMUM_WIDTH, (minimumWidth >= 0) ? minimumWidth : null );
+ }
+
+
+ /**
+ * Returns minimum height of a component.
+ */
+ public int getMinimumHeight() {
+ return getClientPropertyInt( MINIMUM_HEIGHT, 0 );
+ }
+
+ /**
+ * Specifies minimum height of a component.
+ */
+ public void setMinimumHeight( int minimumHeight ) {
+ putClientProperty( MINIMUM_HEIGHT, (minimumHeight >= 0) ? minimumHeight : null );
+ }
+
+
+ /**
+ * Returns the outline color of the component border.
+ */
+ public Object getOutline() {
+ return getClientProperty( OUTLINE );
+ }
+
+ /**
+ * Specifies the outline color of the component border.
+ *
+ * Allowed Values are:
+ *
+ * {@code null}
+ * string {@code "error"}
+ * string {@code "warning"}
+ * any color (type {@link Color})
+ * an array of two colors (type {@link Color}[2]) where the first color
+ * is for focused state and the second for unfocused state
+ *
+ */
+ public void setOutline( Object outline ) {
+ putClientProperty( OUTLINE, outline );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatComboBox.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatComboBox.java
new file mode 100644
index 00000000..6b9581c7
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatComboBox.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import java.awt.Color;
+import javax.swing.JComboBox;
+
+/**
+ * Subclass of {@link JComboBox} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatComboBox
+ extends JComboBox
+ implements FlatComponentExtension
+{
+ /**
+ * Returns the placeholder text that is only painted if the editable combo box is empty.
+ */
+ public String getPlaceholderText() {
+ return (String) getClientProperty( PLACEHOLDER_TEXT );
+ }
+
+ /**
+ * Sets the placeholder text that is only painted if the editable combo box is empty.
+ */
+ public void setPlaceholderText( String placeholderText ) {
+ putClientProperty( PLACEHOLDER_TEXT, placeholderText );
+ }
+
+
+ /**
+ * Returns minimum width of a component.
+ */
+ public int getMinimumWidth() {
+ return getClientPropertyInt( MINIMUM_WIDTH, "ComboBox.minimumWidth" );
+ }
+
+ /**
+ * Specifies minimum width of a component.
+ */
+ public void setMinimumWidth( int minimumWidth ) {
+ putClientProperty( MINIMUM_WIDTH, (minimumWidth >= 0) ? minimumWidth : null );
+ }
+
+
+ /**
+ * Returns whether the component is painted with round edges.
+ */
+ public boolean isRoundRect() {
+ return getClientPropertyBoolean( COMPONENT_ROUND_RECT, false );
+ }
+
+ /**
+ * Specifies whether the component is painted with round edges.
+ */
+ public void setRoundRect( boolean roundRect ) {
+ putClientPropertyBoolean( COMPONENT_ROUND_RECT, roundRect, false );
+ }
+
+
+ /**
+ * Returns the outline color of the component border.
+ */
+ public Object getOutline() {
+ return getClientProperty( OUTLINE );
+ }
+
+ /**
+ * Specifies the outline color of the component border.
+ *
+ * Allowed Values are:
+ *
+ * {@code null}
+ * string {@code "error"}
+ * string {@code "warning"}
+ * any color (type {@link Color})
+ * an array of two colors (type {@link Color}[2]) where the first color
+ * is for focused state and the second for unfocused state
+ *
+ */
+ public void setOutline( Object outline ) {
+ putClientProperty( OUTLINE, outline );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatComponentExtension.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatComponentExtension.java
new file mode 100644
index 00000000..29f753c3
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatComponentExtension.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import java.awt.Color;
+import java.awt.Insets;
+import javax.swing.JComponent;
+import javax.swing.UIManager;
+
+/**
+ * Base interface for all FlatLaf component extensions.
+ * Extensions use client properties to store property values in components.
+ *
+ * @author Karl Tauber
+ */
+public interface FlatComponentExtension
+{
+ /**
+ * Overrides {@link JComponent#getClientProperty(Object)}.
+ */
+ Object getClientProperty( Object key );
+
+ /**
+ * Overrides {@link JComponent#putClientProperty(Object, Object)}.
+ */
+ void putClientProperty( Object key, Object value );
+
+
+ default boolean getClientPropertyBoolean( Object key, String defaultValueKey ) {
+ Object value = getClientProperty( key );
+ return (value instanceof Boolean) ? (boolean) value : UIManager.getBoolean( defaultValueKey );
+ }
+
+ default boolean getClientPropertyBoolean( Object key, boolean defaultValue ) {
+ Object value = getClientProperty( key );
+ return (value instanceof Boolean) ? (boolean) value : defaultValue;
+ }
+
+ default void putClientPropertyBoolean( Object key, boolean value, boolean defaultValue ) {
+ putClientProperty( key, (value != defaultValue) ? value : null );
+ }
+
+
+ default int getClientPropertyInt( Object key, String defaultValueKey ) {
+ Object value = getClientProperty( key );
+ return (value instanceof Integer) ? (int) value : UIManager.getInt( defaultValueKey );
+ }
+
+ default int getClientPropertyInt( Object key, int defaultValue ) {
+ Object value = getClientProperty( key );
+ return (value instanceof Integer) ? (int) value : defaultValue;
+ }
+
+
+ default Color getClientPropertyColor( Object key, String defaultValueKey ) {
+ Object value = getClientProperty( key );
+ return (value instanceof Color) ? (Color) value : UIManager.getColor( defaultValueKey );
+ }
+
+ default Insets getClientPropertyInsets( Object key, String defaultValueKey ) {
+ Object value = getClientProperty( key );
+ return (value instanceof Insets) ? (Insets) value : UIManager.getInsets( defaultValueKey );
+ }
+
+
+ default > T getClientPropertyEnumString( Object key, Class enumType,
+ String defaultValueKey, T defaultValue )
+ {
+ Object value = getClientProperty( key );
+ if( !(value instanceof String) && defaultValueKey != null )
+ value = UIManager.getString( defaultValueKey );
+ if( value instanceof String ) {
+ try {
+ return Enum.valueOf( enumType, (String) value );
+ } catch( IllegalArgumentException ex ) {
+ ex.printStackTrace();
+ }
+ }
+ return defaultValue;
+ }
+
+ default > void putClientPropertyEnumString( Object key, Enum value ) {
+ putClientProperty( key, (value != null) ? value.toString() : null );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatEditorPane.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatEditorPane.java
new file mode 100644
index 00000000..403ccb43
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatEditorPane.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import javax.swing.JEditorPane;
+
+/**
+ * Subclass of {@link JEditorPane} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatEditorPane
+ extends JEditorPane
+ implements FlatComponentExtension
+{
+ /**
+ * Returns minimum width of a component.
+ */
+ public int getMinimumWidth() {
+ return getClientPropertyInt( MINIMUM_WIDTH, "Component.minimumWidth" );
+ }
+
+ /**
+ * Specifies minimum width of a component.
+ */
+ public void setMinimumWidth( int minimumWidth ) {
+ putClientProperty( MINIMUM_WIDTH, (minimumWidth >= 0) ? minimumWidth : null );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatFormattedTextField.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatFormattedTextField.java
new file mode 100644
index 00000000..5f943bfe
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatFormattedTextField.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import java.awt.Color;
+import javax.swing.JFormattedTextField;
+import com.formdev.flatlaf.extras.components.FlatTextField.SelectAllOnFocusPolicy;
+
+/**
+ * Subclass of {@link JFormattedTextField} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatFormattedTextField
+ extends JFormattedTextField
+ implements FlatComponentExtension
+{
+ /**
+ * Returns the placeholder text that is only painted if the text field is empty.
+ */
+ public String getPlaceholderText() {
+ return (String) getClientProperty( PLACEHOLDER_TEXT );
+ }
+
+ /**
+ * Sets the placeholder text that is only painted if the text field is empty.
+ */
+ public void setPlaceholderText( String placeholderText ) {
+ putClientProperty( PLACEHOLDER_TEXT, placeholderText );
+ }
+
+
+ /**
+ * Returns whether all text is selected when the text component gains focus.
+ */
+ public SelectAllOnFocusPolicy getSelectAllOnFocusPolicy() {
+ return getClientPropertyEnumString( SELECT_ALL_ON_FOCUS_POLICY, SelectAllOnFocusPolicy.class,
+ "TextComponent.selectAllOnFocusPolicy", SelectAllOnFocusPolicy.once );
+ }
+
+ /**
+ * Specifies whether all text is selected when the text component gains focus.
+ */
+ public void setSelectAllOnFocusPolicy( SelectAllOnFocusPolicy selectAllOnFocusPolicy ) {
+ putClientPropertyEnumString( SELECT_ALL_ON_FOCUS_POLICY, selectAllOnFocusPolicy );
+ }
+
+
+ /**
+ * Returns minimum width of a component.
+ */
+ public int getMinimumWidth() {
+ return getClientPropertyInt( MINIMUM_WIDTH, "Component.minimumWidth" );
+ }
+
+ /**
+ * Specifies minimum width of a component.
+ */
+ public void setMinimumWidth( int minimumWidth ) {
+ putClientProperty( MINIMUM_WIDTH, (minimumWidth >= 0) ? minimumWidth : null );
+ }
+
+
+ /**
+ * Returns whether the component is painted with round edges.
+ */
+ public boolean isRoundRect() {
+ return getClientPropertyBoolean( COMPONENT_ROUND_RECT, false );
+ }
+
+ /**
+ * Specifies whether the component is painted with round edges.
+ */
+ public void setRoundRect( boolean roundRect ) {
+ putClientPropertyBoolean( COMPONENT_ROUND_RECT, roundRect, false );
+ }
+
+
+ /**
+ * Returns the outline color of the component border.
+ */
+ public Object getOutline() {
+ return getClientProperty( OUTLINE );
+ }
+
+ /**
+ * Specifies the outline color of the component border.
+ *
+ * Allowed Values are:
+ *
+ * {@code null}
+ * string {@code "error"}
+ * string {@code "warning"}
+ * any color (type {@link Color})
+ * an array of two colors (type {@link Color}[2]) where the first color
+ * is for focused state and the second for unfocused state
+ *
+ */
+ public void setOutline( Object outline ) {
+ putClientProperty( OUTLINE, outline );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatPasswordField.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatPasswordField.java
new file mode 100644
index 00000000..93b88299
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatPasswordField.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import java.awt.Color;
+import javax.swing.JPasswordField;
+import com.formdev.flatlaf.extras.components.FlatTextField.SelectAllOnFocusPolicy;
+
+/**
+ * Subclass of {@link JPasswordField} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatPasswordField
+ extends JPasswordField
+ implements FlatComponentExtension
+{
+ /**
+ * Returns the placeholder text that is only painted if the text field is empty.
+ */
+ public String getPlaceholderText() {
+ return (String) getClientProperty( PLACEHOLDER_TEXT );
+ }
+
+ /**
+ * Sets the placeholder text that is only painted if the text field is empty.
+ */
+ public void setPlaceholderText( String placeholderText ) {
+ putClientProperty( PLACEHOLDER_TEXT, placeholderText );
+ }
+
+
+ /**
+ * Returns whether all text is selected when the text component gains focus.
+ */
+ public SelectAllOnFocusPolicy getSelectAllOnFocusPolicy() {
+ return getClientPropertyEnumString( SELECT_ALL_ON_FOCUS_POLICY, SelectAllOnFocusPolicy.class,
+ "TextComponent.selectAllOnFocusPolicy", SelectAllOnFocusPolicy.once );
+ }
+
+ /**
+ * Specifies whether all text is selected when the text component gains focus.
+ */
+ public void setSelectAllOnFocusPolicy( SelectAllOnFocusPolicy selectAllOnFocusPolicy ) {
+ putClientPropertyEnumString( SELECT_ALL_ON_FOCUS_POLICY, selectAllOnFocusPolicy );
+ }
+
+
+ /**
+ * Returns minimum width of a component.
+ */
+ public int getMinimumWidth() {
+ return getClientPropertyInt( MINIMUM_WIDTH, "Component.minimumWidth" );
+ }
+
+ /**
+ * Specifies minimum width of a component.
+ */
+ public void setMinimumWidth( int minimumWidth ) {
+ putClientProperty( MINIMUM_WIDTH, (minimumWidth >= 0) ? minimumWidth : null );
+ }
+
+
+ /**
+ * Returns whether the component is painted with round edges.
+ */
+ public boolean isRoundRect() {
+ return getClientPropertyBoolean( COMPONENT_ROUND_RECT, false );
+ }
+
+ /**
+ * Specifies whether the component is painted with round edges.
+ */
+ public void setRoundRect( boolean roundRect ) {
+ putClientPropertyBoolean( COMPONENT_ROUND_RECT, roundRect, false );
+ }
+
+
+ /**
+ * Returns the outline color of the component border.
+ */
+ public Object getOutline() {
+ return getClientProperty( OUTLINE );
+ }
+
+ /**
+ * Specifies the outline color of the component border.
+ *
+ * Allowed Values are:
+ *
+ * {@code null}
+ * string {@code "error"}
+ * string {@code "warning"}
+ * any color (type {@link Color})
+ * an array of two colors (type {@link Color}[2]) where the first color
+ * is for focused state and the second for unfocused state
+ *
+ */
+ public void setOutline( Object outline ) {
+ putClientProperty( OUTLINE, outline );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatProgressBar.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatProgressBar.java
new file mode 100644
index 00000000..c4698374
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatProgressBar.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import javax.swing.JProgressBar;
+
+/**
+ * Subclass of {@link JProgressBar} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatProgressBar
+ extends JProgressBar
+ implements FlatComponentExtension
+{
+ /**
+ * Returns whether the progress bar has always the larger height even if no string is painted.
+ */
+ public boolean isLargeHeight() {
+ return getClientPropertyBoolean( PROGRESS_BAR_LARGE_HEIGHT, false );
+ }
+
+ /**
+ * Specifies whether the progress bar has always the larger height even if no string is painted.
+ */
+ public void setLargeHeight( boolean largeHeight ) {
+ putClientPropertyBoolean( PROGRESS_BAR_LARGE_HEIGHT, largeHeight, false );
+ }
+
+
+ /**
+ * Returns whether the progress bar is paint with square edges.
+ */
+ public boolean isSquare() {
+ return getClientPropertyBoolean( PROGRESS_BAR_SQUARE, false );
+ }
+
+ /**
+ * Specifies whether the progress bar is paint with square edges.
+ */
+ public void setSquare( boolean square ) {
+ putClientPropertyBoolean( PROGRESS_BAR_SQUARE, square, false );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatScrollBar.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatScrollBar.java
new file mode 100644
index 00000000..eba79afe
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatScrollBar.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import javax.swing.JScrollBar;
+
+/**
+ * Subclass of {@link JScrollBar} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatScrollBar
+ extends JScrollBar
+ implements FlatComponentExtension
+{
+ /**
+ * Returns whether the decrease/increase arrow buttons of a scrollbar are shown.
+ */
+ public boolean isShowButtons() {
+ return getClientPropertyBoolean( SCROLL_BAR_SHOW_BUTTONS, "ScrollBar.showButtons" );
+ }
+
+ /**
+ * Specifies whether the decrease/increase arrow buttons of a scrollbar are shown.
+ */
+ public void setShowButtons( boolean showButtons ) {
+ putClientProperty( SCROLL_BAR_SHOW_BUTTONS, showButtons );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatScrollPane.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatScrollPane.java
new file mode 100644
index 00000000..159b477d
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatScrollPane.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import java.awt.Color;
+import javax.swing.JScrollPane;
+
+/**
+ * Subclass of {@link JScrollPane} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatScrollPane
+ extends JScrollPane
+ implements FlatComponentExtension
+{
+ /**
+ * Returns whether the decrease/increase arrow buttons of a scrollbar are shown.
+ */
+ public boolean isShowButtons() {
+ return getClientPropertyBoolean( SCROLL_BAR_SHOW_BUTTONS, "ScrollBar.showButtons" );
+ }
+
+ /**
+ * Specifies whether the decrease/increase arrow buttons of a scrollbar are shown.
+ */
+ public void setShowButtons( boolean showButtons ) {
+ putClientProperty( SCROLL_BAR_SHOW_BUTTONS, showButtons );
+ }
+
+
+ /**
+ * Returns whether the scroll pane uses smooth scrolling.
+ */
+ public boolean isSmoothScrolling() {
+ return getClientPropertyBoolean( SCROLL_PANE_SMOOTH_SCROLLING, "ScrollPane.smoothScrolling" );
+ }
+
+ /**
+ * Specifies whether the scroll pane uses smooth scrolling.
+ */
+ public void setSmoothScrolling( boolean smoothScrolling ) {
+ putClientProperty( SCROLL_PANE_SMOOTH_SCROLLING, smoothScrolling );
+ }
+
+
+ /**
+ * Returns the outline color of the component border.
+ */
+ public Object getOutline() {
+ return getClientProperty( OUTLINE );
+ }
+
+ /**
+ * Specifies the outline color of the component border.
+ *
+ * Allowed Values are:
+ *
+ * {@code null}
+ * string {@code "error"}
+ * string {@code "warning"}
+ * any color (type {@link Color})
+ * an array of two colors (type {@link Color}[2]) where the first color
+ * is for focused state and the second for unfocused state
+ *
+ */
+ public void setOutline( Object outline ) {
+ putClientProperty( OUTLINE, outline );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatSpinner.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatSpinner.java
new file mode 100644
index 00000000..f4e162f0
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatSpinner.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import java.awt.Color;
+import javax.swing.JSpinner;
+
+/**
+ * Subclass of {@link JSpinner} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatSpinner
+ extends JSpinner
+ implements FlatComponentExtension
+{
+ /**
+ * Returns minimum width of a component.
+ */
+ public int getMinimumWidth() {
+ return getClientPropertyInt( MINIMUM_WIDTH, "Component.minimumWidth" );
+ }
+
+ /**
+ * Specifies minimum width of a component.
+ */
+ public void setMinimumWidth( int minimumWidth ) {
+ putClientProperty( MINIMUM_WIDTH, (minimumWidth >= 0) ? minimumWidth : null );
+ }
+
+
+ /**
+ * Returns whether the component is painted with round edges.
+ */
+ public boolean isRoundRect() {
+ return getClientPropertyBoolean( COMPONENT_ROUND_RECT, false );
+ }
+
+ /**
+ * Specifies whether the component is painted with round edges.
+ */
+ public void setRoundRect( boolean roundRect ) {
+ putClientPropertyBoolean( COMPONENT_ROUND_RECT, roundRect, false );
+ }
+
+
+ /**
+ * Returns the outline color of the component border.
+ */
+ public Object getOutline() {
+ return getClientProperty( OUTLINE );
+ }
+
+ /**
+ * Specifies the outline color of the component border.
+ *
+ * Allowed Values are:
+ *
+ * {@code null}
+ * string {@code "error"}
+ * string {@code "warning"}
+ * any color (type {@link Color})
+ * an array of two colors (type {@link Color}[2]) where the first color
+ * is for focused state and the second for unfocused state
+ *
+ */
+ public void setOutline( Object outline ) {
+ putClientProperty( OUTLINE, outline );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTabbedPane.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTabbedPane.java
new file mode 100644
index 00000000..bd04f9b4
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTabbedPane.java
@@ -0,0 +1,543 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import java.awt.Component;
+import java.awt.Insets;
+import java.util.function.BiConsumer;
+import javax.swing.JComponent;
+import javax.swing.JTabbedPane;
+import javax.swing.SwingConstants;
+
+/**
+ * Subclass of {@link JTabbedPane} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatTabbedPane
+ extends JTabbedPane
+ implements FlatComponentExtension
+{
+ /**
+ * Returns whether separators are shown between tabs.
+ */
+ public boolean isShowTabSeparators() {
+ return getClientPropertyBoolean( TABBED_PANE_SHOW_TAB_SEPARATORS, "TabbedPane.showTabSeparators" );
+ }
+
+ /**
+ * Specifies whether separators are shown between tabs.
+ */
+ public void setShowTabSeparators( boolean showTabSeparators ) {
+ putClientProperty( TABBED_PANE_SHOW_TAB_SEPARATORS, showTabSeparators );
+ }
+
+
+ /**
+ * Returns whether the separator between tabs area and content area should be shown.
+ */
+ public boolean isShowContentSeparators() {
+ return getClientPropertyBoolean( TABBED_PANE_SHOW_CONTENT_SEPARATOR, true );
+ }
+
+ /**
+ * Specifies whether the separator between tabs area and content area should be shown.
+ */
+ public void setShowContentSeparators( boolean showContentSeparators ) {
+ putClientPropertyBoolean( TABBED_PANE_SHOW_CONTENT_SEPARATOR, showContentSeparators, true );
+ }
+
+
+ /**
+ * Returns whether a full border is painted around a tabbed pane.
+ */
+ public boolean isHasFullBorder() {
+ return getClientPropertyBoolean( TABBED_PANE_HAS_FULL_BORDER, "TabbedPane.hasFullBorder" );
+ }
+
+ /**
+ * Specifies whether a full border is painted around a tabbed pane.
+ */
+ public void setHasFullBorder( boolean hasFullBorder ) {
+ putClientProperty( TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
+ }
+
+
+ /**
+ * Returns whether the tab area should be hidden if it contains only one tab.
+ */
+ public boolean isHideTabAreaWithOneTab() {
+ return getClientPropertyBoolean( TABBED_PANE_HIDE_TAB_AREA_WITH_ONE_TAB, false );
+ }
+
+ /**
+ * Specifies whether the tab area should be hidden if it contains only one tab.
+ */
+ public void setHideTabAreaWithOneTab( boolean hideTabAreaWithOneTab ) {
+ putClientPropertyBoolean( TABBED_PANE_HIDE_TAB_AREA_WITH_ONE_TAB, hideTabAreaWithOneTab, false );
+ }
+
+
+ /**
+ * Returns the minimum width of a tab.
+ */
+ public int getMinimumTabWidth() {
+ return getClientPropertyInt( TABBED_PANE_MINIMUM_TAB_WIDTH, "TabbedPane.minimumTabWidth" );
+ }
+
+ /**
+ * Specifies the minimum width of a tab.
+ */
+ public void setMinimumTabWidth( int minimumTabWidth ) {
+ putClientProperty( TABBED_PANE_MINIMUM_TAB_WIDTH, (minimumTabWidth >= 0) ? minimumTabWidth : null );
+ }
+
+
+ /**
+ * Returns the minimum width of the tab at the given tab index.
+ */
+ public int getMinimumTabWidth( int tabIndex ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ return clientPropertyInt( c, TABBED_PANE_MINIMUM_TAB_WIDTH, 0 );
+ }
+
+ /**
+ * Specifies the minimum width of the tab at the given tab index.
+ */
+ public void setMinimumTabWidth( int tabIndex, int minimumTabWidth ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ c.putClientProperty( TABBED_PANE_MINIMUM_TAB_WIDTH, (minimumTabWidth >= 0) ? minimumTabWidth : null );
+ }
+
+
+ /**
+ * Returns the maximum width of a tab.
+ */
+ public int getMaximumTabWidth() {
+ return getClientPropertyInt( TABBED_PANE_MAXIMUM_TAB_WIDTH, "TabbedPane.maximumTabWidth" );
+ }
+
+ /**
+ * Specifies the maximum width of a tab.
+ *
+ * Applied only if tab does not have a custom tab component
+ * (see {@link javax.swing.JTabbedPane#setTabComponentAt(int, java.awt.Component)}).
+ */
+ public void setMaximumTabWidth( int maximumTabWidth ) {
+ putClientProperty( TABBED_PANE_MAXIMUM_TAB_WIDTH, (maximumTabWidth >= 0) ? maximumTabWidth : null );
+ }
+
+
+ /**
+ * Returns the maximum width of the tab at the given tab index.
+ */
+ public int getMaximumTabWidth( int tabIndex ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ return clientPropertyInt( c, TABBED_PANE_MAXIMUM_TAB_WIDTH, 0 );
+ }
+
+ /**
+ * Specifies the maximum width of the tab at the given tab index.
+ *
+ * Applied only if tab does not have a custom tab component
+ * (see {@link javax.swing.JTabbedPane#setTabComponentAt(int, java.awt.Component)}).
+ */
+ public void setMaximumTabWidth( int tabIndex, int maximumTabWidth ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ c.putClientProperty( TABBED_PANE_MAXIMUM_TAB_WIDTH, (maximumTabWidth >= 0) ? maximumTabWidth : null );
+ }
+
+
+ /**
+ * Returns the minimum height of a tab.
+ */
+ public int getTabHeight() {
+ return getClientPropertyInt( TABBED_PANE_TAB_HEIGHT, "TabbedPane.tabHeight" );
+ }
+
+ /**
+ * Specifies the minimum height of a tab.
+ *
+ * @see #setTabInsets(Insets)
+ */
+ public void setTabHeight( int tabHeight ) {
+ putClientProperty( TABBED_PANE_TAB_HEIGHT, (tabHeight >= 0) ? tabHeight : null );
+ }
+
+
+ /**
+ * Returns the insets of a tab.
+ */
+ public Insets getTabInsets() {
+ return getClientPropertyInsets( TABBED_PANE_TAB_INSETS, "TabbedPane.tabInsets" );
+ }
+
+ /**
+ * Specifies the insets of a tab.
+ *
+ * @see #setTabHeight(int)
+ */
+ public void setTabInsets( Insets tabInsets ) {
+ putClientProperty( TABBED_PANE_TAB_INSETS, tabInsets );
+ }
+
+
+ /**
+ * Returns the insets of the tab at the given tab index.
+ */
+ public Insets getTabInsets( int tabIndex ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ return (Insets) c.getClientProperty( TABBED_PANE_TAB_INSETS );
+ }
+
+ /**
+ * Specifies the insets of the tab at the given tab index.
+ *
+ * @see #setTabHeight(int)
+ */
+ public void setTabInsets( int tabIndex, Insets tabInsets ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ c.putClientProperty( TABBED_PANE_TAB_INSETS, tabInsets );
+ }
+
+
+ /**
+ * Returns the insets of the tab area.
+ */
+ public Insets getTabAreaInsets() {
+ return getClientPropertyInsets( TABBED_PANE_TAB_AREA_INSETS, "TabbedPane.tabAreaInsets" );
+ }
+
+ /**
+ * Specifies the insets of the tab area.
+ */
+ public void setTabAreaInsets( Insets tabAreaInsets ) {
+ putClientProperty( TABBED_PANE_TAB_AREA_INSETS, tabAreaInsets );
+ }
+
+
+ /**
+ * Returns whether all tabs are closable.
+ */
+ public boolean isTabsClosable() {
+ return getClientPropertyBoolean( TABBED_PANE_TAB_CLOSABLE, false );
+ }
+
+ /**
+ * Specifies whether all tabs are closable.
+ * If set to {@code true}, all tabs in that tabbed pane are closable.
+ * To make individual tabs closable, use {@link #setTabClosable(int, boolean)}.
+ *
+ * Note that you have to specify a callback (see {@link #setTabCloseCallback(BiConsumer)})
+ * that is invoked when the user clicks a tab close button.
+ * The callback is responsible for closing the tab.
+ */
+ public void setTabsClosable( boolean tabClosable ) {
+ putClientPropertyBoolean( TABBED_PANE_TAB_CLOSABLE, tabClosable, false );
+ }
+
+
+ /**
+ * Returns whether the tab at the given tab index is closable.
+ */
+ public Boolean isTabClosable( int tabIndex ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ Object value = c.getClientProperty( TABBED_PANE_TAB_CLOSABLE );
+ return (value instanceof Boolean) ? (boolean) value : isTabsClosable();
+ }
+
+ /**
+ * Specifies whether the tab at the given tab index is closable.
+ * To make all tabs closable, use {@link #setTabsClosable(boolean)}.
+ *
+ * Note that you have to specify a callback (see {@link #setTabCloseCallback(BiConsumer)})
+ * that is invoked when the user clicks a tab close button.
+ * The callback is responsible for closing the tab.
+ */
+ public void setTabClosable( int tabIndex, boolean tabClosable ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ c.putClientProperty( TABBED_PANE_TAB_CLOSABLE, tabClosable );
+ }
+
+
+ /**
+ * Returns the tooltip text used for tab close buttons.
+ */
+ public String getTabCloseToolTipText() {
+ return (String) getClientProperty( TABBED_PANE_TAB_CLOSE_TOOLTIPTEXT );
+ }
+
+ /**
+ * Specifies the tooltip text used for tab close buttons.
+ */
+ public void setTabCloseToolTipText( String tabCloseToolTipText ) {
+ putClientProperty( TABBED_PANE_TAB_CLOSE_TOOLTIPTEXT, tabCloseToolTipText );
+ }
+
+
+ /**
+ * Returns the tooltip text used for tab close button at the given tab index.
+ */
+ public String getTabCloseToolTipText( int tabIndex ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ return (String) c.getClientProperty( TABBED_PANE_TAB_CLOSE_TOOLTIPTEXT );
+ }
+
+ /**
+ * Specifies the tooltip text used for tab close button at the given tab index.
+ */
+ public void setTabCloseToolTipText( int tabIndex, String tabCloseToolTipText ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ c.putClientProperty( TABBED_PANE_TAB_CLOSE_TOOLTIPTEXT, tabCloseToolTipText );
+ }
+
+
+ /**
+ * Returns the callback that is invoked when a tab close button is clicked.
+ * The callback is responsible for closing the tab.
+ */
+ @SuppressWarnings( "unchecked" )
+ public BiConsumer getTabCloseCallback() {
+ return (BiConsumer) getClientProperty( TABBED_PANE_TAB_CLOSE_CALLBACK );
+ }
+
+ /**
+ * Specifies the callback that is invoked when a tab close button is clicked.
+ * The callback is responsible for closing the tab.
+ *
+ * Use a {@link java.util.function.BiConsumer}<javax.swing.JTabbedPane, Integer>
+ * that receives the tabbed pane and the tab index as parameters:
+ *
{@code
+ * myTabbedPane.setTabCloseCallback( (tabbedPane, tabIndex) -> {
+ * // close tab here
+ * } );
+ * }
+ * If you need to check whether a modifier key (e.g. Alt or Shift) was pressed
+ * while the user clicked the tab close button, use {@link java.awt.EventQueue#getCurrentEvent}
+ * to get current event, check whether it is a {@link java.awt.event.MouseEvent}
+ * and invoke its methods. E.g.
+ * {@code
+ * AWTEvent e = EventQueue.getCurrentEvent();
+ * boolean shift = (e instanceof MouseEvent) ? ((MouseEvent)e).isShiftDown() : false;
+ * }
+ */
+ public void setTabCloseCallback( BiConsumer tabCloseCallback ) {
+ putClientProperty( TABBED_PANE_TAB_CLOSE_CALLBACK, tabCloseCallback );
+ }
+
+
+ /**
+ * Returns the callback that is invoked when the tab close button at the given tab index is clicked.
+ * The callback is responsible for closing the tab.
+ */
+ @SuppressWarnings( "unchecked" )
+ public BiConsumer getTabCloseCallback( int tabIndex ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ return (BiConsumer) c.getClientProperty( TABBED_PANE_TAB_CLOSE_CALLBACK );
+ }
+
+ /**
+ * Specifies the callback that is invoked when the tab close button at the given tab index is clicked.
+ * The callback is responsible for closing the tab.
+ *
+ * @see #setTabCloseCallback(BiConsumer)
+ */
+ public void setTabCloseCallback( int tabIndex, BiConsumer tabCloseCallback ) {
+ JComponent c = (JComponent) getComponentAt( tabIndex );
+ c.putClientProperty( TABBED_PANE_TAB_CLOSE_CALLBACK, tabCloseCallback );
+ }
+
+
+ // NOTE: enum names must be equal to allowed strings
+ public enum TabsPopupPolicy { never, asNeeded };
+
+ /**
+ * Returns the display policy for the "more tabs" button,
+ * which shows a popup menu with the (partly) hidden tabs.
+ */
+ public TabsPopupPolicy getTabsPopupPolicy() {
+ return getClientPropertyEnumString( TABBED_PANE_TABS_POPUP_POLICY, TabsPopupPolicy.class,
+ "TabbedPane.tabsPopupPolicy", TabsPopupPolicy.asNeeded );
+ }
+
+ /**
+ * Specifies the display policy for the "more tabs" button,
+ * which shows a popup menu with the (partly) hidden tabs.
+ */
+ public void setTabsPopupPolicy( TabsPopupPolicy tabsPopupPolicy ) {
+ putClientPropertyEnumString( TABBED_PANE_TABS_POPUP_POLICY, tabsPopupPolicy );
+ }
+
+
+ // NOTE: enum names must be equal to allowed strings
+ public enum ScrollButtonsPolicy { never, asNeeded, asNeededSingle };
+
+ /**
+ * Returns the display policy for the forward/backward scroll arrow buttons.
+ */
+ public ScrollButtonsPolicy getScrollButtonsPolicy() {
+ return getClientPropertyEnumString( TABBED_PANE_SCROLL_BUTTONS_POLICY, ScrollButtonsPolicy.class,
+ "TabbedPane.scrollButtonsPolicy", ScrollButtonsPolicy.asNeededSingle );
+ }
+
+ /**
+ * Specifies the display policy for the forward/backward scroll arrow buttons.
+ */
+ public void setScrollButtonsPolicy( ScrollButtonsPolicy scrollButtonsPolicy ) {
+ putClientPropertyEnumString( TABBED_PANE_SCROLL_BUTTONS_POLICY, scrollButtonsPolicy );
+ }
+
+
+ // NOTE: enum names must be equal to allowed strings
+ public enum ScrollButtonsPlacement { both, trailing };
+
+ /**
+ * Returns the placement of the forward/backward scroll arrow buttons.
+ */
+ public ScrollButtonsPlacement getScrollButtonsPlacement() {
+ return getClientPropertyEnumString( TABBED_PANE_SCROLL_BUTTONS_PLACEMENT, ScrollButtonsPlacement.class,
+ "TabbedPane.scrollButtonsPlacement", ScrollButtonsPlacement.both );
+ }
+
+ /**
+ * Specifies the placement of the forward/backward scroll arrow buttons.
+ */
+ public void setScrollButtonsPlacement( ScrollButtonsPlacement scrollButtonsPlacement ) {
+ putClientPropertyEnumString( TABBED_PANE_SCROLL_BUTTONS_PLACEMENT, scrollButtonsPlacement );
+ }
+
+
+ // NOTE: enum names must be equal to allowed strings
+ public enum TabAreaAlignment { leading, trailing, center, fill };
+
+ /**
+ * Returns the alignment of the tab area.
+ */
+ public TabAreaAlignment getTabAreaAlignment() {
+ return getClientPropertyEnumString( TABBED_PANE_TAB_AREA_ALIGNMENT, TabAreaAlignment.class,
+ "TabbedPane.tabAreaAlignment", TabAreaAlignment.leading );
+ }
+
+ /**
+ * Specifies the alignment of the tab area.
+ */
+ public void setTabAreaAlignment( TabAreaAlignment tabAreaAlignment ) {
+ putClientPropertyEnumString( TABBED_PANE_TAB_AREA_ALIGNMENT, tabAreaAlignment );
+ }
+
+
+ // NOTE: enum names must be equal to allowed strings
+ public enum TabAlignment { leading, trailing, center };
+
+ /**
+ * Returns the horizontal alignment of the tab title and icon.
+ */
+ public TabAlignment getTabAlignment() {
+ return getClientPropertyEnumString( TABBED_PANE_TAB_ALIGNMENT, TabAlignment.class,
+ "TabbedPane.tabAlignment", TabAlignment.center );
+ }
+
+ /**
+ * Specifies the horizontal alignment of the tab title and icon.
+ */
+ public void setTabAlignment( TabAlignment tabAlignment ) {
+ putClientPropertyEnumString( TABBED_PANE_TAB_ALIGNMENT, tabAlignment );
+ }
+
+
+ // NOTE: enum names must be equal to allowed strings
+ public enum TabWidthMode { preferred, equal, compact };
+
+ /**
+ * Returns how the tabs should be sized.
+ */
+ public TabWidthMode getTabWidthMode() {
+ return getClientPropertyEnumString( TABBED_PANE_TAB_WIDTH_MODE, TabWidthMode.class,
+ "TabbedPane.tabWidthMode", TabWidthMode.preferred );
+ }
+
+ /**
+ * Specifies how the tabs should be sized.
+ */
+ public void setTabWidthMode( TabWidthMode tabWidthMode ) {
+ putClientPropertyEnumString( TABBED_PANE_TAB_WIDTH_MODE, tabWidthMode );
+ }
+
+
+ /**
+ * Returns the tab icon placement (relative to tab title).
+ */
+ public int getTabIconPlacement() {
+ return getClientPropertyInt( TABBED_PANE_TAB_ICON_PLACEMENT, SwingConstants.LEADING );
+ }
+
+ /**
+ * Specifies the tab icon placement (relative to tab title).
+ *
+ * Allowed Values are:
+ *
+ * {@link SwingConstants#LEADING} (default)
+ * {@link SwingConstants#TRAILING}
+ * {@link SwingConstants#TOP}
+ * {@link SwingConstants#BOTTOM}
+ *
+ */
+ public void setTabIconPlacement( int tabIconPlacement ) {
+ putClientProperty( TABBED_PANE_TAB_ICON_PLACEMENT, (tabIconPlacement >= 0) ? tabIconPlacement : null );
+ }
+
+
+ /**
+ * Returns a component that will be placed at the leading edge of the tabs area.
+ */
+ public Component getLeadingComponent() {
+ return (Component) getClientProperty( TABBED_PANE_LEADING_COMPONENT );
+ }
+
+ /**
+ * Specifies a component that will be placed at the leading edge of the tabs area.
+ *
+ * For top and bottom tab placement, the layed out component size will be
+ * the preferred component width and the tab area height.
+ * For left and right tab placement, the layed out component size will be
+ * the tab area width and the preferred component height.
+ */
+ public void setLeadingComponent( Component leadingComponent ) {
+ putClientProperty( TABBED_PANE_LEADING_COMPONENT, leadingComponent );
+ }
+
+
+ /**
+ * Returns a component that will be placed at the trailing edge of the tabs area.
+ */
+ public Component getTrailingComponent() {
+ return (Component) getClientProperty( TABBED_PANE_TRAILING_COMPONENT );
+ }
+
+ /**
+ * Specifies a component that will be placed at the trailing edge of the tabs area.
+ *
+ * For top and bottom tab placement, the layed out component size will be
+ * the available horizontal space (minimum is preferred component width) and the tab area height.
+ * For left and right tab placement, the layed out component size will be
+ * the tab area width and the available vertical space (minimum is preferred component height).
+ */
+ public void setTrailingComponent( Component trailingComponent ) {
+ putClientProperty( TABBED_PANE_TRAILING_COMPONENT, trailingComponent );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTextArea.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTextArea.java
new file mode 100644
index 00000000..a0568d97
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTextArea.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import javax.swing.JTextArea;
+
+/**
+ * Subclass of {@link JTextArea} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatTextArea
+ extends JTextArea
+ implements FlatComponentExtension
+{
+ /**
+ * Returns minimum width of a component.
+ */
+ public int getMinimumWidth() {
+ return getClientPropertyInt( MINIMUM_WIDTH, "Component.minimumWidth" );
+ }
+
+ /**
+ * Specifies minimum width of a component.
+ */
+ public void setMinimumWidth( int minimumWidth ) {
+ putClientProperty( MINIMUM_WIDTH, (minimumWidth >= 0) ? minimumWidth : null );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTextField.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTextField.java
new file mode 100644
index 00000000..a43d195b
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTextField.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import java.awt.Color;
+import javax.swing.JTextField;
+
+/**
+ * Subclass of {@link JTextField} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatTextField
+ extends JTextField
+ implements FlatComponentExtension
+{
+ /**
+ * Returns the placeholder text that is only painted if the text field is empty.
+ */
+ public String getPlaceholderText() {
+ return (String) getClientProperty( PLACEHOLDER_TEXT );
+ }
+
+ /**
+ * Sets the placeholder text that is only painted if the text field is empty.
+ */
+ public void setPlaceholderText( String placeholderText ) {
+ putClientProperty( PLACEHOLDER_TEXT, placeholderText );
+ }
+
+
+ // NOTE: enum names must be equal to allowed strings
+ public enum SelectAllOnFocusPolicy { never, once, always };
+
+ /**
+ * Returns whether all text is selected when the text component gains focus.
+ */
+ public SelectAllOnFocusPolicy getSelectAllOnFocusPolicy() {
+ return getClientPropertyEnumString( SELECT_ALL_ON_FOCUS_POLICY, SelectAllOnFocusPolicy.class,
+ "TextComponent.selectAllOnFocusPolicy", SelectAllOnFocusPolicy.once );
+ }
+
+ /**
+ * Specifies whether all text is selected when the text component gains focus.
+ */
+ public void setSelectAllOnFocusPolicy( SelectAllOnFocusPolicy selectAllOnFocusPolicy ) {
+ putClientPropertyEnumString( SELECT_ALL_ON_FOCUS_POLICY, selectAllOnFocusPolicy );
+ }
+
+
+ /**
+ * Returns minimum width of a component.
+ */
+ public int getMinimumWidth() {
+ return getClientPropertyInt( MINIMUM_WIDTH, "Component.minimumWidth" );
+ }
+
+ /**
+ * Specifies minimum width of a component.
+ */
+ public void setMinimumWidth( int minimumWidth ) {
+ putClientProperty( MINIMUM_WIDTH, (minimumWidth >= 0) ? minimumWidth : null );
+ }
+
+
+ /**
+ * Returns whether the component is painted with round edges.
+ */
+ public boolean isRoundRect() {
+ return getClientPropertyBoolean( COMPONENT_ROUND_RECT, false );
+ }
+
+ /**
+ * Specifies whether the component is painted with round edges.
+ */
+ public void setRoundRect( boolean roundRect ) {
+ putClientPropertyBoolean( COMPONENT_ROUND_RECT, roundRect, false );
+ }
+
+
+ /**
+ * Returns the outline color of the component border.
+ */
+ public Object getOutline() {
+ return getClientProperty( OUTLINE );
+ }
+
+ /**
+ * Specifies the outline color of the component border.
+ *
+ * Allowed Values are:
+ *
+ * {@code null}
+ * string {@code "error"}
+ * string {@code "warning"}
+ * any color (type {@link Color})
+ * an array of two colors (type {@link Color}[2]) where the first color
+ * is for focused state and the second for unfocused state
+ *
+ */
+ public void setOutline( Object outline ) {
+ putClientProperty( OUTLINE, outline );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTextPane.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTextPane.java
new file mode 100644
index 00000000..4660068a
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTextPane.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import javax.swing.JTextPane;
+
+/**
+ * Subclass of {@link JTextPane} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatTextPane
+ extends JTextPane
+ implements FlatComponentExtension
+{
+ /**
+ * Returns minimum width of a component.
+ */
+ public int getMinimumWidth() {
+ return getClientPropertyInt( MINIMUM_WIDTH, "Component.minimumWidth" );
+ }
+
+ /**
+ * Specifies minimum width of a component.
+ */
+ public void setMinimumWidth( int minimumWidth ) {
+ putClientProperty( MINIMUM_WIDTH, (minimumWidth >= 0) ? minimumWidth : null );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatToggleButton.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatToggleButton.java
new file mode 100644
index 00000000..a342f890
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatToggleButton.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import java.awt.Color;
+import javax.swing.JToggleButton;
+import com.formdev.flatlaf.extras.components.FlatButton.ButtonType;
+
+/**
+ * Subclass of {@link JToggleButton} that provides easy access to FlatLaf specific client properties.
+ *
+ * @author Karl Tauber
+ */
+public class FlatToggleButton
+ extends JToggleButton
+ implements FlatComponentExtension
+{
+ /**
+ * Returns type of a button.
+ */
+ public ButtonType getButtonType() {
+ return getClientPropertyEnumString( BUTTON_TYPE, ButtonType.class, null, ButtonType.none );
+ }
+
+ /**
+ * Specifies type of a button.
+ */
+ public void setButtonType( ButtonType buttonType ) {
+ if( buttonType == ButtonType.none )
+ buttonType = null;
+ putClientPropertyEnumString( BUTTON_TYPE, buttonType );
+ }
+
+
+ /**
+ * Returns whether the button preferred size will be made square (quadratically).
+ */
+ public boolean isSquareSize() {
+ return getClientPropertyBoolean( SQUARE_SIZE, false );
+ }
+
+ /**
+ * Specifies whether the button preferred size will be made square (quadratically).
+ */
+ public void setSquareSize( boolean squareSize ) {
+ putClientPropertyBoolean( SQUARE_SIZE, squareSize, false );
+ }
+
+
+ /**
+ * Returns minimum width of a component.
+ */
+ public int getMinimumWidth() {
+ return getClientPropertyInt( MINIMUM_WIDTH, "ToggleButton.minimumWidth" );
+ }
+
+ /**
+ * Specifies minimum width of a component.
+ */
+ public void setMinimumWidth( int minimumWidth ) {
+ putClientProperty( MINIMUM_WIDTH, (minimumWidth >= 0) ? minimumWidth : null );
+ }
+
+
+ /**
+ * Returns minimum height of a component.
+ */
+ public int getMinimumHeight() {
+ return getClientPropertyInt( MINIMUM_HEIGHT, 0 );
+ }
+
+ /**
+ * Specifies minimum height of a component.
+ */
+ public void setMinimumHeight( int minimumHeight ) {
+ putClientProperty( MINIMUM_HEIGHT, (minimumHeight >= 0) ? minimumHeight : null );
+ }
+
+
+ /**
+ * Returns the outline color of the component border.
+ */
+ public Object getOutline() {
+ return getClientProperty( OUTLINE );
+ }
+
+ /**
+ * Specifies the outline color of the component border.
+ *
+ * Allowed Values are:
+ *
+ * {@code null}
+ * string {@code "error"}
+ * string {@code "warning"}
+ * any color (type {@link Color})
+ * an array of two colors (type {@link Color}[2]) where the first color
+ * is for focused state and the second for unfocused state
+ *
+ */
+ public void setOutline( Object outline ) {
+ putClientProperty( OUTLINE, outline );
+ }
+
+
+ /**
+ * Returns height of underline if toggle button type is {@link ButtonType#tab}.
+ */
+ public int getTabUnderlineHeight() {
+ return getClientPropertyInt( TAB_BUTTON_UNDERLINE_HEIGHT, "ToggleButton.tab.underlineHeight" );
+ }
+
+ /**
+ * Specifies height of underline if toggle button type is {@link ButtonType#tab}.
+ */
+ public void setTabUnderlineHeight( int tabUnderlineHeight ) {
+ putClientProperty( TAB_BUTTON_UNDERLINE_HEIGHT, (tabUnderlineHeight >= 0) ? tabUnderlineHeight : null );
+ }
+
+
+ /**
+ * Returns color of underline if toggle button type is {@link ButtonType#tab}.
+ */
+ public Color getTabUnderlineColor() {
+ return getClientPropertyColor( TAB_BUTTON_UNDERLINE_COLOR, "ToggleButton.tab.underlineColor" );
+ }
+
+ /**
+ * Specifies color of underline if toggle button type is {@link ButtonType#tab}.
+ */
+ public void setTabUnderlineColor( Color tabUnderlineColor ) {
+ putClientProperty( TAB_BUTTON_UNDERLINE_COLOR, tabUnderlineColor );
+ }
+
+
+ /**
+ * Returns background color if selected and toggle button type is {@link ButtonType#tab}.
+ */
+ public Color getTabSelectedBackground() {
+ return getClientPropertyColor( TAB_BUTTON_SELECTED_BACKGROUND, "ToggleButton.tab.selectedBackground" );
+ }
+
+ /**
+ * Specifies background color if selected and toggle button type is {@link ButtonType#tab}.
+ */
+ public void setTabSelectedBackground( Color tabSelectedBackground ) {
+ putClientProperty( TAB_BUTTON_SELECTED_BACKGROUND, tabSelectedBackground );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTree.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTree.java
new file mode 100644
index 00000000..730b91be
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTree.java
@@ -0,0 +1,59 @@
+/*
+ * 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.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import javax.swing.JTree;
+
+/**
+ * Subclass of {@link JTree} that provides easy access to FlatLaf specific client properties.
+ *
+ */
+public class FlatTree
+ extends JTree
+ implements FlatComponentExtension
+{
+ /**
+ * Returns if the tree shows a wide selection
+ */
+ public boolean isWideSelection() {
+ return getClientPropertyBoolean( TREE_WIDE_SELECTION, "Tree.wideSelection" );
+ }
+
+ /**
+ * Sets if the tree shows a wide selection
+ */
+ public void setWideSelection( boolean wideSelection ) {
+ putClientProperty( TREE_WIDE_SELECTION, wideSelection );
+ }
+
+ /**
+ * Returns whether tree item selection is painted. Default is {@code true}.
+ * If set to {@code false}, then the tree cell renderer is responsible for painting selection.
+ */
+ public boolean isPaintSelection() {
+ return getClientPropertyBoolean( TREE_PAINT_SELECTION, true );
+ }
+
+ /**
+ * Specifies whether tree item selection is painted. Default is {@code true}.
+ * If set to {@code false}, then the tree cell renderer is responsible for painting selection.
+ */
+ public void setPaintSelection( boolean paintSelection ) {
+ putClientProperty( TREE_PAINT_SELECTION, paintSelection );
+ }
+}
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTriStateCheckBox.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTriStateCheckBox.java
new file mode 100644
index 00000000..90964dbd
--- /dev/null
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/components/FlatTriStateCheckBox.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright 2019 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.extras.components;
+
+import static com.formdev.flatlaf.FlatClientProperties.*;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.event.ItemEvent;
+import javax.swing.JCheckBox;
+import javax.swing.LookAndFeel;
+import javax.swing.UIManager;
+import com.formdev.flatlaf.FlatLaf;
+
+/**
+ * A tri-state check box.
+ *
+ * The initial state is {@link State#INDETERMINATE}.
+ *
+ * By default the third state is allowed and clicking on the checkbox cycles thru all
+ * three states. If you want that the user can cycle only thru two states, disallow
+ * intermediate state using {@link #setAllowIndeterminate(boolean)}. Then you can still
+ * set the indeterminate state via API if necessary, but the user can not.
+ *
+ * The default state cycle order is {@link State#UNSELECTED} to {@link State#INDETERMINATE}
+ * to {@link State#SELECTED}.
+ * This is the same order as used by macOS, win32, IntelliJ IDEA and on the web as recommended by W3C in
+ * Tri-State Checkbox Example ).
+ *
+ * If {@link #isAltStateCycleOrder()} returns {@code true},
+ * the state cycle order is {@link State#UNSELECTED} to {@link State#SELECTED}
+ * to {@link State#INDETERMINATE}. This order is used by Windows 10 UWP apps.
+ *
+ * If you prefer the alternative state cycle order for all tri-state check boxes, enable it using:
+ *
+ * UIManager.put( "FlatTriStateCheckBox.altStateCycleOrder", true );
+ *
+ *
+ * To display the third state, this component requires an LaF that supports painting
+ * the indeterminate state if client property {@code "JButton.selectedState"} has the
+ * value {@code "indeterminate"}.
+ * FlatLaf and macOS Aqua LaF support the third state.
+ * For other LaFs a magenta rectangle is painted around the component for the third state.
+ *
+ * @author Karl Tauber
+ */
+public class FlatTriStateCheckBox
+ extends JCheckBox
+{
+ public enum State { UNSELECTED, INDETERMINATE, SELECTED }
+
+ private State state;
+ private boolean allowIndeterminate = true;
+ private boolean altStateCycleOrder = UIManager.getBoolean( "FlatTriStateCheckBox.altStateCycleOrder" );
+
+ public FlatTriStateCheckBox() {
+ this( null );
+ }
+
+ public FlatTriStateCheckBox( String text ) {
+ this( text, State.INDETERMINATE );
+ }
+
+ public FlatTriStateCheckBox( String text, State initialState ) {
+ super( text );
+
+ setModel( new ToggleButtonModel() {
+ @Override
+ public boolean isSelected() {
+ return state != State.UNSELECTED;
+ }
+
+ @Override
+ public void setSelected( boolean b ) {
+ setState( nextState( state ) );
+
+ fireStateChanged();
+ fireItemStateChanged( new ItemEvent( this, ItemEvent.ITEM_STATE_CHANGED, this,
+ isSelected() ? ItemEvent.SELECTED : ItemEvent.DESELECTED ) );
+ }
+ } );
+
+ setState( initialState );
+ }
+
+ /**
+ * Returns the state as {@link State} enum.
+ *
+ * Alternatively you can use {@link #getChecked()} to get all three states as {@link Boolean}
+ * or {@link #isIndeterminate()} to check only for indeterminate state.
+ */
+ public State getState() {
+ return state;
+ }
+
+ /**
+ * Sets the state as {@link State} enum.
+ */
+ public void setState( State state ) {
+ if( this.state == state )
+ return;
+
+ State oldState = this.state;
+ this.state = state;
+
+ putClientProperty( SELECTED_STATE, (state == State.INDETERMINATE) ? SELECTED_STATE_INDETERMINATE : null );
+
+ firePropertyChange( "state", oldState, state );
+ repaint();
+ }
+
+ /**
+ * Returns the next state that follows the given state, depending on
+ * {@link #isAllowIndeterminate()} and {@link #isAltStateCycleOrder()}.
+ */
+ protected State nextState( State state ) {
+ if( !altStateCycleOrder ) {
+ // default cycle order: UNSELECTED --> INDETERMINATE --> SELECTED
+ switch( state ) {
+ default:
+ case UNSELECTED: return allowIndeterminate ? State.INDETERMINATE : State.SELECTED;
+ case INDETERMINATE: return State.SELECTED;
+ case SELECTED: return State.UNSELECTED;
+ }
+ } else {
+ // alternative cycle order: INDETERMINATE --> UNSELECTED --> SELECTED
+ switch( state ) {
+ default:
+ case UNSELECTED: return State.SELECTED;
+ case INDETERMINATE: return State.UNSELECTED;
+ case SELECTED: return allowIndeterminate ? State.INDETERMINATE : State.UNSELECTED;
+ }
+ }
+ }
+
+ /**
+ * Returns the state as {@link Boolean}.
+ * Returns {@code null} if the state is {@link State#INDETERMINATE}.
+ *
+ * Alternatively you can use {@link #getState()} to get state as {@link State} enum
+ * or {@link #isIndeterminate()} to check only for indeterminate state.
+ */
+ public Boolean getChecked() {
+ switch( state ) {
+ default:
+ case UNSELECTED: return false;
+ case INDETERMINATE: return null;
+ case SELECTED: return true;
+ }
+ }
+
+ /**
+ * Sets the state as {@link Boolean}.
+ * Passing {@code null} sets state to {@link State#INDETERMINATE}.
+ */
+ public void setChecked( Boolean value ) {
+ setState( (value == null) ? State.INDETERMINATE : (value ? State.SELECTED : State.UNSELECTED) );
+ }
+
+ @Override
+ public void setSelected( boolean b ) {
+ setState( b ? State.SELECTED : State.UNSELECTED );
+ }
+
+ /**
+ * Returns whether state is indeterminate.
+ */
+ public boolean isIndeterminate() {
+ return state == State.INDETERMINATE;
+ }
+
+ /**
+ * Sets indeterminate state.
+ */
+ public void setIndeterminate( boolean indeterminate ) {
+ if( indeterminate )
+ setState( State.INDETERMINATE );
+ else if( state == State.INDETERMINATE )
+ setState( State.UNSELECTED );
+ }
+
+ /**
+ * Returns whether indeterminate state is allowed.
+ *
+ * This affects only the user when clicking on the checkbox.
+ * Setting state to indeterminate via API is always allowed.
+ */
+ public boolean isAllowIndeterminate() {
+ return allowIndeterminate;
+ }
+
+ /**
+ * Sets whether indeterminate state is allowed.
+ *
+ * This affects only the user when clicking on the checkbox.
+ * Setting state to indeterminate via API is always allowed.
+ */
+ public void setAllowIndeterminate( boolean allowIndeterminate ) {
+ this.allowIndeterminate = allowIndeterminate;
+ }
+
+ /**
+ * Returns whether alternative state cycle order should be used.
+ */
+ public boolean isAltStateCycleOrder() {
+ return altStateCycleOrder;
+ }
+
+ /**
+ * Sets whether alternative state cycle order should be used.
+ */
+ public void setAltStateCycleOrder( boolean altStateCycleOrder ) {
+ this.altStateCycleOrder = altStateCycleOrder;
+ }
+
+ @Override
+ protected void paintComponent( Graphics g ) {
+ super.paintComponent( g );
+
+ if( state == State.INDETERMINATE && !isIndeterminateStateSupported() )
+ paintIndeterminateState( g );
+ }
+
+ /**
+ * Paints the indeterminate state if the current LaF does not support displaying
+ * the indeterminate state.
+ * The default implementation draws a magenta rectangle around the component.
+ */
+ protected void paintIndeterminateState( Graphics g ) {
+ g.setColor( Color.magenta );
+ g.drawRect( 0, 0, getWidth() - 1, getHeight() - 1 );
+ }
+
+ /**
+ * Returns whether the current LaF supports displaying the indeterminate state.
+ * Returns {@code true} for FlatLaf and macOS Aqua.
+ */
+ protected boolean isIndeterminateStateSupported() {
+ LookAndFeel laf = UIManager.getLookAndFeel();
+ return laf instanceof FlatLaf || laf.getClass().getName().equals( "com.apple.laf.AquaLookAndFeel" );
+ }
+}
diff --git a/flatlaf-extras/src/main/module-info/module-info.java b/flatlaf-extras/src/main/module-info/module-info.java
index c351ed1a..a62e610b 100644
--- a/flatlaf-extras/src/main/module-info/module-info.java
+++ b/flatlaf-extras/src/main/module-info/module-info.java
@@ -24,4 +24,7 @@ module com.formdev.flatlaf.extras {
requires com.formdev.flatlaf;
exports com.formdev.flatlaf.extras;
+ exports com.formdev.flatlaf.extras.components;
+
+ opens com.formdev.flatlaf.extras.resources;
}
diff --git a/flatlaf-extras/src/main/resources/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties b/flatlaf-extras/src/main/resources/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties
new file mode 100644
index 00000000..ca54c452
--- /dev/null
+++ b/flatlaf-extras/src/main/resources/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties
@@ -0,0 +1,212 @@
+#
+# 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.
+#
+
+#
+# This file lists UI keys of colors, which are computed at runtime.
+#
+# Colors marked as `derived` in properties files are computed at runtime based on
+# a variable base color (usually the current background color of a component).
+# This works only for a limited set of UI keys.
+#
+# The property key is the UI key of a color, which is computed at runtime.
+# The property value is the UI key of the base color.
+#
+# This file is not used at runtime.
+# It is only used in tooling (e.g. UI Defaults Inspector or UIDefaultsDump).
+#
+
+
+#---- system colors ----
+
+scrollbar = null
+
+
+#---- Button ----
+
+Button.focusedBackground = Button.background
+Button.hoverBackground = Button.background
+Button.pressedBackground = Button.background
+Button.selectedBackground = Button.background
+Button.disabledBackground = Button.background
+Button.disabledSelectedBackground = Button.background
+
+Button.default.focusedBackground = Button.default.background
+Button.default.hoverBackground = Button.default.background
+Button.default.pressedBackground = Button.default.background
+
+Button.toolbar.hoverBackground = Button.background
+Button.toolbar.pressedBackground = Button.background
+Button.toolbar.selectedBackground = Button.background
+
+
+#---- CheckBox ----
+
+CheckBox.icon.disabledBackground = CheckBox.icon.background
+CheckBox.icon.focusedBackground = CheckBox.icon.background
+CheckBox.icon.hoverBackground = CheckBox.icon.background
+CheckBox.icon.pressedBackground = CheckBox.icon.background
+CheckBox.icon.selectedFocusedBackground = CheckBox.icon.selectedBackground
+CheckBox.icon.selectedHoverBackground = CheckBox.icon.selectedBackground
+CheckBox.icon.selectedPressedBackground = CheckBox.icon.selectedBackground
+
+CheckBox.icon[filled].disabledBackground = CheckBox.icon[filled].background
+CheckBox.icon[filled].focusedBackground = CheckBox.icon[filled].background
+CheckBox.icon[filled].hoverBackground = CheckBox.icon[filled].background
+CheckBox.icon[filled].pressedBackground = CheckBox.icon[filled].background
+CheckBox.icon[filled].selectedFocusedBackground = CheckBox.icon[filled].selectedBackground
+CheckBox.icon[filled].selectedHoverBackground = CheckBox.icon[filled].selectedBackground
+CheckBox.icon[filled].selectedPressedBackground = CheckBox.icon[filled].selectedBackground
+
+
+#---- CheckBoxMenuItem ----
+
+CheckBoxMenuItem.selectionBackground = CheckBoxMenuItem.background
+
+
+#---- ComboBox ----
+
+ComboBox.buttonDisabledArrowColor = ComboBox.buttonArrowColor
+ComboBox.buttonHoverArrowColor = ComboBox.buttonArrowColor
+ComboBox.buttonPressedArrowColor = ComboBox.buttonArrowColor
+
+
+#---- Component ----
+
+Component.custom.borderColor = null
+
+
+#---- HelpButton ----
+
+HelpButton.disabledBackground = HelpButton.background
+HelpButton.focusedBackground = HelpButton.background
+HelpButton.hoverBackground = HelpButton.background
+HelpButton.pressedBackground = HelpButton.background
+
+
+#---- InternalFrame ----
+
+InternalFrame.buttonHoverBackground = InternalFrame.activeTitleBackground
+InternalFrame.buttonPressedBackground = InternalFrame.activeTitleBackground
+
+
+#---- Menu ----
+
+Menu.selectionBackground = Menu.background
+
+
+#---- MenuBar ----
+
+MenuBar.hoverBackground = Menu.background
+MenuBar.underlineSelectionBackground = Menu.background
+
+
+#---- MenuItem ----
+
+MenuItem.checkBackground = MenuItem.selectionBackground
+MenuItem.underlineSelectionBackground = MenuItem.background
+MenuItem.underlineSelectionCheckBackground = MenuItem.selectionBackground
+MenuItem.selectionBackground = MenuItem.background
+
+
+#---- RadioButtonMenuItem ----
+
+RadioButtonMenuItem.selectionBackground = RadioButtonMenuItem.background
+
+
+#---- RootPane ----
+
+RootPane.activeBorderColor = Panel.background
+RootPane.inactiveBorderColor = Panel.background
+
+
+#---- ScrollBar ----
+
+ScrollBar.track = ScrollBar.background
+ScrollBar.thumb = ScrollBar.track
+ScrollBar.hoverTrackColor = ScrollBar.track
+ScrollBar.hoverThumbColor = ScrollBar.thumb
+ScrollBar.pressedTrackColor = ScrollBar.track
+ScrollBar.pressedThumbColor = ScrollBar.thumb
+
+ScrollBar.buttonDisabledArrowColor = ScrollBar.buttonArrowColor
+ScrollBar.hoverButtonBackground = ScrollBar.background
+ScrollBar.pressedButtonBackground = ScrollBar.background
+
+
+#---- ScrollPane ----
+
+ScrollPane.background = null
+
+
+#---- Slider ----
+
+Slider.focusedColor = Component.focusColor
+Slider.hoverThumbColor = Slider.thumbColor
+Slider.pressedThumbColor = Slider.thumbColor
+Slider.disabledThumbColor = Slider.thumbColor
+
+
+#---- Spinner ----
+
+Spinner.buttonDisabledArrowColor = Spinner.buttonArrowColor
+Spinner.buttonHoverArrowColor = Spinner.buttonArrowColor
+Spinner.buttonPressedArrowColor = Spinner.buttonArrowColor
+
+
+#---- SplitPaneDivider ----
+
+SplitPaneDivider.oneTouchHoverArrowColor = SplitPaneDivider.oneTouchArrowColor
+SplitPaneDivider.oneTouchPressedArrowColor = SplitPaneDivider.oneTouchArrowColor
+
+
+#---- TabbedPane ----
+
+TabbedPane.selectedBackground = TabbedPane.background
+TabbedPane.hoverColor = TabbedPane.background
+TabbedPane.focusColor = TabbedPane.background
+
+TabbedPane.closeBackground = TabbedPane.background
+TabbedPane.closeHoverBackground = TabbedPane.background
+TabbedPane.closePressedBackground = TabbedPane.background
+
+TabbedPane.closeForeground = TabbedPane.foreground
+TabbedPane.closeHoverForeground = TabbedPane.foreground
+TabbedPane.closePressedForeground = TabbedPane.foreground
+
+TabbedPane.buttonHoverBackground = TabbedPane.background
+TabbedPane.buttonPressedBackground = TabbedPane.background
+
+
+#---- TitlePane ----
+
+TitlePane.buttonHoverBackground = TitlePane.background
+TitlePane.buttonPressedBackground = TitlePane.background
+
+
+#---- ToggleButton ----
+
+ToggleButton.focusedBackground = ToggleButton.background
+ToggleButton.hoverBackground = ToggleButton.background
+ToggleButton.pressedBackground = ToggleButton.background
+ToggleButton.selectedBackground = ToggleButton.background
+ToggleButton.disabledBackground = ToggleButton.background
+ToggleButton.disabledSelectedBackground = ToggleButton.background
+
+ToggleButton.toolbar.hoverBackground = ToggleButton.background
+ToggleButton.toolbar.pressedBackground = ToggleButton.background
+ToggleButton.toolbar.selectedBackground = ToggleButton.background
+
+ToggleButton.tab.hoverBackground = null
diff --git a/flatlaf-intellij-themes/README.md b/flatlaf-intellij-themes/README.md
index bf03932f..cac648ef 100644
--- a/flatlaf-intellij-themes/README.md
+++ b/flatlaf-intellij-themes/README.md
@@ -25,10 +25,6 @@ Otherwise download `flatlaf-intellij-themes-.jar` here:
[](https://bintray.com/jformdesigner/flatlaf/flatlaf-intellij-themes/_latestVersion)
-You also need `flatlaf-.jar`, which you can download here:
-
-[](https://bintray.com/jformdesigner/flatlaf/flatlaf/_latestVersion)
-
How to use?
-----------
@@ -60,6 +56,7 @@ Name | Class
[Gradianto Dark Fuchsia](https://github.com/thvardhan/Gradianto) | `com.formdev.flatlaf.intellijthemes.FlatGradiantoDarkFuchsiaIJTheme`
[Gradianto Deep Ocean](https://github.com/thvardhan/Gradianto) | `com.formdev.flatlaf.intellijthemes.FlatGradiantoDeepOceanIJTheme`
[Gradianto Midnight Blue](https://github.com/thvardhan/Gradianto) | `com.formdev.flatlaf.intellijthemes.FlatGradiantoMidnightBlueIJTheme`
+[Gradianto Nature Green](https://github.com/thvardhan/Gradianto) | `com.formdev.flatlaf.intellijthemes.FlatGradiantoNatureGreenIJTheme`
[Gray](https://github.com/OlyaB/GreyTheme) | `com.formdev.flatlaf.intellijthemes.FlatGrayIJTheme`
[Gruvbox Dark Hard](https://github.com/Vincent-P/gruvbox-intellij-theme) | `com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkHardIJTheme`
[Gruvbox Dark Medium](https://github.com/Vincent-P/gruvbox-intellij-theme) | `com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkMediumIJTheme`
@@ -104,6 +101,8 @@ Name | Class
[Material Palenight Contrast (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialPalenightContrastIJTheme`
[Monokai Pro (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProIJTheme`
[Monokai Pro Contrast (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProContrastIJTheme`
+[Moonlight (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMoonlightIJTheme`
+[Moonlight Contrast (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMoonlightContrastIJTheme`
[Night Owl (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlIJTheme`
[Night Owl Contrast (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlContrastIJTheme`
[Solarized Dark (Material)](https://github.com/mallowigi/material-theme-ui-lite) | `com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedDarkIJTheme`
diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java
index 20f30aed..d6b2833a 100644
--- a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java
+++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatAllIJThemes.java
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import javax.swing.UIManager.LookAndFeelInfo;
/**
@@ -28,64 +28,84 @@ import javax.swing.UIManager.LookAndFeelInfo;
*/
public class FlatAllIJThemes
{
- public static final LookAndFeelInfo[] INFOS = {
- new LookAndFeelInfo( "Arc", "com.formdev.flatlaf.intellijthemes.FlatArcIJTheme" ),
- new LookAndFeelInfo( "Arc - Orange", "com.formdev.flatlaf.intellijthemes.FlatArcOrangeIJTheme" ),
- new LookAndFeelInfo( "Arc Dark", "com.formdev.flatlaf.intellijthemes.FlatArcDarkIJTheme" ),
- new LookAndFeelInfo( "Arc Dark - Orange", "com.formdev.flatlaf.intellijthemes.FlatArcDarkOrangeIJTheme" ),
- new LookAndFeelInfo( "Carbon", "com.formdev.flatlaf.intellijthemes.FlatCarbonIJTheme" ),
- new LookAndFeelInfo( "Cobalt 2", "com.formdev.flatlaf.intellijthemes.FlatCobalt2IJTheme" ),
- new LookAndFeelInfo( "Cyan light", "com.formdev.flatlaf.intellijthemes.FlatCyanLightIJTheme" ),
- new LookAndFeelInfo( "Dark Flat", "com.formdev.flatlaf.intellijthemes.FlatDarkFlatIJTheme" ),
- new LookAndFeelInfo( "Dark purple", "com.formdev.flatlaf.intellijthemes.FlatDarkPurpleIJTheme" ),
- new LookAndFeelInfo( "Dracula", "com.formdev.flatlaf.intellijthemes.FlatDraculaIJTheme" ),
- new LookAndFeelInfo( "Gradianto Dark Fuchsia", "com.formdev.flatlaf.intellijthemes.FlatGradiantoDarkFuchsiaIJTheme" ),
- new LookAndFeelInfo( "Gradianto Deep Ocean", "com.formdev.flatlaf.intellijthemes.FlatGradiantoDeepOceanIJTheme" ),
- new LookAndFeelInfo( "Gradianto Midnight Blue", "com.formdev.flatlaf.intellijthemes.FlatGradiantoMidnightBlueIJTheme" ),
- new LookAndFeelInfo( "Gray", "com.formdev.flatlaf.intellijthemes.FlatGrayIJTheme" ),
- new LookAndFeelInfo( "Gruvbox Dark Hard", "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkHardIJTheme" ),
- new LookAndFeelInfo( "Gruvbox Dark Medium", "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkMediumIJTheme" ),
- new LookAndFeelInfo( "Gruvbox Dark Soft", "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkSoftIJTheme" ),
- new LookAndFeelInfo( "Hiberbee Dark", "com.formdev.flatlaf.intellijthemes.FlatHiberbeeDarkIJTheme" ),
- new LookAndFeelInfo( "High contrast", "com.formdev.flatlaf.intellijthemes.FlatHighContrastIJTheme" ),
- new LookAndFeelInfo( "Light Flat", "com.formdev.flatlaf.intellijthemes.FlatLightFlatIJTheme" ),
- new LookAndFeelInfo( "Material Design Dark", "com.formdev.flatlaf.intellijthemes.FlatMaterialDesignDarkIJTheme" ),
- new LookAndFeelInfo( "Monocai", "com.formdev.flatlaf.intellijthemes.FlatMonocaiIJTheme" ),
- new LookAndFeelInfo( "Nord", "com.formdev.flatlaf.intellijthemes.FlatNordIJTheme" ),
- new LookAndFeelInfo( "One Dark", "com.formdev.flatlaf.intellijthemes.FlatOneDarkIJTheme" ),
- new LookAndFeelInfo( "Solarized Dark", "com.formdev.flatlaf.intellijthemes.FlatSolarizedDarkIJTheme" ),
- new LookAndFeelInfo( "Solarized Light", "com.formdev.flatlaf.intellijthemes.FlatSolarizedLightIJTheme" ),
- new LookAndFeelInfo( "Spacegray", "com.formdev.flatlaf.intellijthemes.FlatSpacegrayIJTheme" ),
- new LookAndFeelInfo( "Vuesion", "com.formdev.flatlaf.intellijthemes.FlatVuesionIJTheme" ),
- new LookAndFeelInfo( "Arc Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatArcDarkIJTheme" ),
- new LookAndFeelInfo( "Arc Dark Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatArcDarkContrastIJTheme" ),
- new LookAndFeelInfo( "Atom One Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneDarkIJTheme" ),
- new LookAndFeelInfo( "Atom One Dark Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneDarkContrastIJTheme" ),
- new LookAndFeelInfo( "Atom One Light (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightIJTheme" ),
- new LookAndFeelInfo( "Atom One Light Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightContrastIJTheme" ),
- new LookAndFeelInfo( "Dracula (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatDraculaIJTheme" ),
- new LookAndFeelInfo( "Dracula Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatDraculaContrastIJTheme" ),
- new LookAndFeelInfo( "GitHub (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubIJTheme" ),
- new LookAndFeelInfo( "GitHub Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubContrastIJTheme" ),
- new LookAndFeelInfo( "Light Owl (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlIJTheme" ),
- new LookAndFeelInfo( "Light Owl Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlContrastIJTheme" ),
- new LookAndFeelInfo( "Material Darker (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDarkerIJTheme" ),
- new LookAndFeelInfo( "Material Darker Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDarkerContrastIJTheme" ),
- new LookAndFeelInfo( "Material Deep Ocean (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDeepOceanIJTheme" ),
- new LookAndFeelInfo( "Material Deep Ocean Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDeepOceanContrastIJTheme" ),
- new LookAndFeelInfo( "Material Lighter (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterIJTheme" ),
- new LookAndFeelInfo( "Material Lighter Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterContrastIJTheme" ),
- new LookAndFeelInfo( "Material Oceanic (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicIJTheme" ),
- new LookAndFeelInfo( "Material Oceanic Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicContrastIJTheme" ),
- new LookAndFeelInfo( "Material Palenight (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialPalenightIJTheme" ),
- new LookAndFeelInfo( "Material Palenight Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialPalenightContrastIJTheme" ),
- new LookAndFeelInfo( "Monokai Pro (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProIJTheme" ),
- new LookAndFeelInfo( "Monokai Pro Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProContrastIJTheme" ),
- new LookAndFeelInfo( "Night Owl (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlIJTheme" ),
- new LookAndFeelInfo( "Night Owl Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlContrastIJTheme" ),
- new LookAndFeelInfo( "Solarized Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedDarkIJTheme" ),
- new LookAndFeelInfo( "Solarized Dark Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedDarkContrastIJTheme" ),
- new LookAndFeelInfo( "Solarized Light (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedLightIJTheme" ),
- new LookAndFeelInfo( "Solarized Light Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedLightContrastIJTheme" ),
+ public static final FlatIJLookAndFeelInfo[] INFOS = {
+ new FlatIJLookAndFeelInfo( "Arc", "com.formdev.flatlaf.intellijthemes.FlatArcIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Arc - Orange", "com.formdev.flatlaf.intellijthemes.FlatArcOrangeIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Arc Dark", "com.formdev.flatlaf.intellijthemes.FlatArcDarkIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Arc Dark - Orange", "com.formdev.flatlaf.intellijthemes.FlatArcDarkOrangeIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Carbon", "com.formdev.flatlaf.intellijthemes.FlatCarbonIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Cobalt 2", "com.formdev.flatlaf.intellijthemes.FlatCobalt2IJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Cyan light", "com.formdev.flatlaf.intellijthemes.FlatCyanLightIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Dark Flat", "com.formdev.flatlaf.intellijthemes.FlatDarkFlatIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Dark purple", "com.formdev.flatlaf.intellijthemes.FlatDarkPurpleIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Dracula", "com.formdev.flatlaf.intellijthemes.FlatDraculaIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Gradianto Dark Fuchsia", "com.formdev.flatlaf.intellijthemes.FlatGradiantoDarkFuchsiaIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Gradianto Deep Ocean", "com.formdev.flatlaf.intellijthemes.FlatGradiantoDeepOceanIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Gradianto Midnight Blue", "com.formdev.flatlaf.intellijthemes.FlatGradiantoMidnightBlueIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Gradianto Nature Green", "com.formdev.flatlaf.intellijthemes.FlatGradiantoNatureGreenIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Gray", "com.formdev.flatlaf.intellijthemes.FlatGrayIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Gruvbox Dark Hard", "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkHardIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Gruvbox Dark Medium", "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkMediumIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Gruvbox Dark Soft", "com.formdev.flatlaf.intellijthemes.FlatGruvboxDarkSoftIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Hiberbee Dark", "com.formdev.flatlaf.intellijthemes.FlatHiberbeeDarkIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "High contrast", "com.formdev.flatlaf.intellijthemes.FlatHighContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Light Flat", "com.formdev.flatlaf.intellijthemes.FlatLightFlatIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Material Design Dark", "com.formdev.flatlaf.intellijthemes.FlatMaterialDesignDarkIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Monocai", "com.formdev.flatlaf.intellijthemes.FlatMonocaiIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Nord", "com.formdev.flatlaf.intellijthemes.FlatNordIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "One Dark", "com.formdev.flatlaf.intellijthemes.FlatOneDarkIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Solarized Dark", "com.formdev.flatlaf.intellijthemes.FlatSolarizedDarkIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Solarized Light", "com.formdev.flatlaf.intellijthemes.FlatSolarizedLightIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Spacegray", "com.formdev.flatlaf.intellijthemes.FlatSpacegrayIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Vuesion", "com.formdev.flatlaf.intellijthemes.FlatVuesionIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Arc Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatArcDarkIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Arc Dark Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatArcDarkContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Atom One Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneDarkIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Atom One Dark Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneDarkContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Atom One Light (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Atom One Light Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatAtomOneLightContrastIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Dracula (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatDraculaIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Dracula Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatDraculaContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "GitHub (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "GitHub Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatGitHubContrastIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Light Owl (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Light Owl Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatLightOwlContrastIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Material Darker (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDarkerIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Material Darker Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDarkerContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Material Deep Ocean (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDeepOceanIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Material Deep Ocean Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDeepOceanContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Material Lighter (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Material Lighter Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterContrastIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Material Oceanic (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Material Oceanic Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Material Palenight (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialPalenightIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Material Palenight Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialPalenightContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Monokai Pro (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Monokai Pro Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMonokaiProContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Moonlight (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMoonlightIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Moonlight Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMoonlightContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Night Owl (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Night Owl Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatNightOwlContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Solarized Dark (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedDarkIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Solarized Dark Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedDarkContrastIJTheme", true ),
+ new FlatIJLookAndFeelInfo( "Solarized Light (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedLightIJTheme", false ),
+ new FlatIJLookAndFeelInfo( "Solarized Light Contrast (Material)", "com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatSolarizedLightContrastIJTheme", false ),
};
+
+ //---- class FlatIJLookAndFeelInfo ----------------------------------------
+
+ public static class FlatIJLookAndFeelInfo
+ extends LookAndFeelInfo
+ {
+ private final boolean dark;
+
+ public FlatIJLookAndFeelInfo( String name, String className, boolean dark ) {
+ super( name, className );
+ this.dark = dark;
+ }
+
+ public boolean isDark() {
+ return dark;
+ }
+ }
}
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 85212054..89887047 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatArcDarkIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Arc Dark";
+
+ public static boolean install() {
try {
return install( new FlatArcDarkIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatArcDarkIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatArcDarkIJTheme.class );
+ }
+
public FlatArcDarkIJTheme() {
super( Utils.loadTheme( "arc_theme_dark.theme.json" ) );
}
@Override
public String getName() {
- return "Arc Dark";
+ return NAME;
}
}
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 5ddf66f3..f7179b43 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatArcDarkOrangeIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Arc Dark - Orange";
+
+ public static boolean install() {
try {
return install( new FlatArcDarkOrangeIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatArcDarkOrangeIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatArcDarkOrangeIJTheme.class );
+ }
+
public FlatArcDarkOrangeIJTheme() {
super( Utils.loadTheme( "arc_theme_dark_orange.theme.json" ) );
}
@Override
public String getName() {
- return "Arc Dark - Orange";
+ return NAME;
}
}
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 29826024..64af3c14 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatArcIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Arc";
+
+ public static boolean install() {
try {
return install( new FlatArcIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatArcIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatArcIJTheme.class );
+ }
+
public FlatArcIJTheme() {
super( Utils.loadTheme( "arc-theme.theme.json" ) );
}
@Override
public String getName() {
- return "Arc";
+ return NAME;
}
}
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 70b1fd25..5dcf1043 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatArcOrangeIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Arc - Orange";
+
+ public static boolean install() {
try {
return install( new FlatArcOrangeIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatArcOrangeIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatArcOrangeIJTheme.class );
+ }
+
public FlatArcOrangeIJTheme() {
super( Utils.loadTheme( "arc-theme-orange.theme.json" ) );
}
@Override
public String getName() {
- return "Arc - Orange";
+ return NAME;
}
}
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 7a4f5d08..4fe715b4 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatCarbonIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Carbon";
+
+ public static boolean install() {
try {
return install( new FlatCarbonIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatCarbonIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatCarbonIJTheme.class );
+ }
+
public FlatCarbonIJTheme() {
super( Utils.loadTheme( "Carbon.theme.json" ) );
}
@Override
public String getName() {
- return "Carbon";
+ return NAME;
}
}
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 00382998..8e4ecc04 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatCobalt2IJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Cobalt 2";
+
+ public static boolean install() {
try {
return install( new FlatCobalt2IJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatCobalt2IJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatCobalt2IJTheme.class );
+ }
+
public FlatCobalt2IJTheme() {
super( Utils.loadTheme( "Cobalt_2.theme.json" ) );
}
@Override
public String getName() {
- return "Cobalt 2";
+ return NAME;
}
}
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 41cbbb28..7a8582ab 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatCyanLightIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Cyan light";
+
+ public static boolean install() {
try {
return install( new FlatCyanLightIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatCyanLightIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatCyanLightIJTheme.class );
+ }
+
public FlatCyanLightIJTheme() {
super( Utils.loadTheme( "Cyan.theme.json" ) );
}
@Override
public String getName() {
- return "Cyan light";
+ return NAME;
}
}
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 51797836..ebc17b8b 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatDarkFlatIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Dark Flat";
+
+ public static boolean install() {
try {
return install( new FlatDarkFlatIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatDarkFlatIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatDarkFlatIJTheme.class );
+ }
+
public FlatDarkFlatIJTheme() {
super( Utils.loadTheme( "DarkFlatTheme.theme.json" ) );
}
@Override
public String getName() {
- return "Dark Flat";
+ return NAME;
}
}
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 bb08ebda..fb00aa9b 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatDarkPurpleIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Dark purple";
+
+ public static boolean install() {
try {
return install( new FlatDarkPurpleIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatDarkPurpleIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatDarkPurpleIJTheme.class );
+ }
+
public FlatDarkPurpleIJTheme() {
super( Utils.loadTheme( "DarkPurple.theme.json" ) );
}
@Override
public String getName() {
- return "Dark purple";
+ return NAME;
}
}
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 b33cdce1..b6db0fde 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatDraculaIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Dracula";
+
+ public static boolean install() {
try {
return install( new FlatDraculaIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatDraculaIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatDraculaIJTheme.class );
+ }
+
public FlatDraculaIJTheme() {
super( Utils.loadTheme( "Dracula.theme.json" ) );
}
@Override
public String getName() {
- return "Dracula";
+ return NAME;
}
}
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 41e4dfed..2ee0b7f1 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatGradiantoDarkFuchsiaIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Gradianto Dark Fuchsia";
+
+ public static boolean install() {
try {
return install( new FlatGradiantoDarkFuchsiaIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatGradiantoDarkFuchsiaIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatGradiantoDarkFuchsiaIJTheme.class );
+ }
+
public FlatGradiantoDarkFuchsiaIJTheme() {
super( Utils.loadTheme( "Gradianto_dark_fuchsia.theme.json" ) );
}
@Override
public String getName() {
- return "Gradianto Dark Fuchsia";
+ return NAME;
}
}
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 26f3f55a..c2076357 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatGradiantoDeepOceanIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Gradianto Deep Ocean";
+
+ public static boolean install() {
try {
return install( new FlatGradiantoDeepOceanIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatGradiantoDeepOceanIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatGradiantoDeepOceanIJTheme.class );
+ }
+
public FlatGradiantoDeepOceanIJTheme() {
super( Utils.loadTheme( "Gradianto_deep_ocean.theme.json" ) );
}
@Override
public String getName() {
- return "Gradianto Deep Ocean";
+ return NAME;
}
}
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 b647c679..e6fc7844 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatGradiantoMidnightBlueIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Gradianto Midnight Blue";
+
+ public static boolean install() {
try {
return install( new FlatGradiantoMidnightBlueIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatGradiantoMidnightBlueIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatGradiantoMidnightBlueIJTheme.class );
+ }
+
public FlatGradiantoMidnightBlueIJTheme() {
super( Utils.loadTheme( "Gradianto_midnight_blue.theme.json" ) );
}
@Override
public String getName() {
- return "Gradianto Midnight Blue";
+ return NAME;
}
}
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
new file mode 100644
index 00000000..169b1ea4
--- /dev/null
+++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGradiantoNatureGreenIJTheme.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.intellijthemes;
+
+//
+// DO NOT MODIFY
+// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
+//
+
+import com.formdev.flatlaf.IntelliJTheme;
+
+/**
+ * @author Karl Tauber
+ */
+public class FlatGradiantoNatureGreenIJTheme
+ extends IntelliJTheme.ThemeLaf
+{
+ public static final String NAME = "Gradianto Nature Green";
+
+ public static boolean install() {
+ try {
+ return install( new FlatGradiantoNatureGreenIJTheme() );
+ } catch( RuntimeException ex ) {
+ return false;
+ }
+ }
+
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatGradiantoNatureGreenIJTheme.class );
+ }
+
+ public FlatGradiantoNatureGreenIJTheme() {
+ super( Utils.loadTheme( "Gradianto_Nature_Green.theme.json" ) );
+ }
+
+ @Override
+ public String getName() {
+ return NAME;
+ }
+}
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 72ceb256..d6c5fd31 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatGrayIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Gray";
+
+ public static boolean install() {
try {
return install( new FlatGrayIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatGrayIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatGrayIJTheme.class );
+ }
+
public FlatGrayIJTheme() {
super( Utils.loadTheme( "Gray.theme.json" ) );
}
@Override
public String getName() {
- return "Gray";
+ return NAME;
}
}
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 6fa52c63..ffc7d339 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatGruvboxDarkHardIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Gruvbox Dark Hard";
+
+ public static boolean install() {
try {
return install( new FlatGruvboxDarkHardIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatGruvboxDarkHardIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatGruvboxDarkHardIJTheme.class );
+ }
+
public FlatGruvboxDarkHardIJTheme() {
super( Utils.loadTheme( "gruvbox_dark_hard.theme.json" ) );
}
@Override
public String getName() {
- return "Gruvbox Dark Hard";
+ return NAME;
}
}
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 11f81e24..a898d401 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatGruvboxDarkMediumIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Gruvbox Dark Medium";
+
+ public static boolean install() {
try {
return install( new FlatGruvboxDarkMediumIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatGruvboxDarkMediumIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatGruvboxDarkMediumIJTheme.class );
+ }
+
public FlatGruvboxDarkMediumIJTheme() {
super( Utils.loadTheme( "gruvbox_dark_medium.theme.json" ) );
}
@Override
public String getName() {
- return "Gruvbox Dark Medium";
+ return NAME;
}
}
diff --git a/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkSoftIJTheme.java b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/FlatGruvboxDarkSoftIJTheme.java
index 56ad8fc0..20a4d702 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatGruvboxDarkSoftIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Gruvbox Dark Soft";
+
+ public static boolean install() {
try {
return install( new FlatGruvboxDarkSoftIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatGruvboxDarkSoftIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatGruvboxDarkSoftIJTheme.class );
+ }
+
public FlatGruvboxDarkSoftIJTheme() {
super( Utils.loadTheme( "gruvbox_dark_soft.theme.json" ) );
}
@Override
public String getName() {
- return "Gruvbox Dark Soft";
+ return NAME;
}
}
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 7166ca5e..43d2e60d 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatHiberbeeDarkIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Hiberbee Dark";
+
+ public static boolean install() {
try {
return install( new FlatHiberbeeDarkIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatHiberbeeDarkIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatHiberbeeDarkIJTheme.class );
+ }
+
public FlatHiberbeeDarkIJTheme() {
super( Utils.loadTheme( "HiberbeeDark.theme.json" ) );
}
@Override
public String getName() {
- return "Hiberbee Dark";
+ return NAME;
}
}
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 e9743dc9..5f8372ea 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatHighContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "High contrast";
+
+ public static boolean install() {
try {
return install( new FlatHighContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatHighContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatHighContrastIJTheme.class );
+ }
+
public FlatHighContrastIJTheme() {
super( Utils.loadTheme( "HighContrast.theme.json" ) );
}
@Override
public String getName() {
- return "High contrast";
+ return NAME;
}
}
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 cfac9f4d..97db2193 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatLightFlatIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Light Flat";
+
+ public static boolean install() {
try {
return install( new FlatLightFlatIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatLightFlatIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatLightFlatIJTheme.class );
+ }
+
public FlatLightFlatIJTheme() {
super( Utils.loadTheme( "LightFlatTheme.theme.json" ) );
}
@Override
public String getName() {
- return "Light Flat";
+ return NAME;
}
}
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 79e83b89..e64a06f9 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMaterialDesignDarkIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Material Design Dark";
+
+ public static boolean install() {
try {
return install( new FlatMaterialDesignDarkIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMaterialDesignDarkIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMaterialDesignDarkIJTheme.class );
+ }
+
public FlatMaterialDesignDarkIJTheme() {
super( Utils.loadTheme( "MaterialTheme.theme.json" ) );
}
@Override
public String getName() {
- return "Material Design Dark";
+ return NAME;
}
}
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 4b2374be..f44a183f 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMonocaiIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Monocai";
+
+ public static boolean install() {
try {
return install( new FlatMonocaiIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMonocaiIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMonocaiIJTheme.class );
+ }
+
public FlatMonocaiIJTheme() {
super( Utils.loadTheme( "Monocai.theme.json" ) );
}
@Override
public String getName() {
- return "Monocai";
+ return NAME;
}
}
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 c2ec8711..13bebe09 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatNordIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Nord";
+
+ public static boolean install() {
try {
return install( new FlatNordIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatNordIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatNordIJTheme.class );
+ }
+
public FlatNordIJTheme() {
super( Utils.loadTheme( "nord.theme.json" ) );
}
@Override
public String getName() {
- return "Nord";
+ return NAME;
}
}
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 e147bf01..a7b72342 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatOneDarkIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "One Dark";
+
+ public static boolean install() {
try {
return install( new FlatOneDarkIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatOneDarkIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatOneDarkIJTheme.class );
+ }
+
public FlatOneDarkIJTheme() {
super( Utils.loadTheme( "one_dark.theme.json" ) );
}
@Override
public String getName() {
- return "One Dark";
+ return NAME;
}
}
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 9d3418b7..3f706047 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatSolarizedDarkIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Solarized Dark";
+
+ public static boolean install() {
try {
return install( new FlatSolarizedDarkIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatSolarizedDarkIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatSolarizedDarkIJTheme.class );
+ }
+
public FlatSolarizedDarkIJTheme() {
super( Utils.loadTheme( "SolarizedDark.theme.json" ) );
}
@Override
public String getName() {
- return "Solarized Dark";
+ return NAME;
}
}
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 16e6e243..6d38d85f 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatSolarizedLightIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Solarized Light";
+
+ public static boolean install() {
try {
return install( new FlatSolarizedLightIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatSolarizedLightIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatSolarizedLightIJTheme.class );
+ }
+
public FlatSolarizedLightIJTheme() {
super( Utils.loadTheme( "SolarizedLight.theme.json" ) );
}
@Override
public String getName() {
- return "Solarized Light";
+ return NAME;
}
}
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 4ebb788d..91769118 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatSpacegrayIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Spacegray";
+
+ public static boolean install() {
try {
return install( new FlatSpacegrayIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatSpacegrayIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatSpacegrayIJTheme.class );
+ }
+
public FlatSpacegrayIJTheme() {
super( Utils.loadTheme( "Spacegray.theme.json" ) );
}
@Override
public String getName() {
- return "Spacegray";
+ return NAME;
}
}
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 33a2d43b..ab5bee78 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatVuesionIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Vuesion";
+
+ public static boolean install() {
try {
return install( new FlatVuesionIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatVuesionIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatVuesionIJTheme.class );
+ }
+
public FlatVuesionIJTheme() {
super( Utils.loadTheme( "vuesion_theme.theme.json" ) );
}
@Override
public String getName() {
- return "Vuesion";
+ return NAME;
}
}
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 b060a123..3618b615 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatArcDarkContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Arc Dark Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatArcDarkContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatArcDarkContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatArcDarkContrastIJTheme.class );
+ }
+
public FlatArcDarkContrastIJTheme() {
super( Utils.loadTheme( "Arc Dark Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Arc Dark Contrast (Material)";
+ return NAME;
}
}
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 2a353fa2..ba1629fc 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatArcDarkIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Arc Dark (Material)";
+
+ public static boolean install() {
try {
return install( new FlatArcDarkIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatArcDarkIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatArcDarkIJTheme.class );
+ }
+
public FlatArcDarkIJTheme() {
super( Utils.loadTheme( "Arc Dark.theme.json" ) );
}
@Override
public String getName() {
- return "Arc Dark (Material)";
+ return NAME;
}
}
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 56d64cbe..f05db9a0 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatAtomOneDarkContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Atom One Dark Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatAtomOneDarkContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatAtomOneDarkContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatAtomOneDarkContrastIJTheme.class );
+ }
+
public FlatAtomOneDarkContrastIJTheme() {
super( Utils.loadTheme( "Atom One Dark Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Atom One Dark Contrast (Material)";
+ return NAME;
}
}
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 0c4ef7d8..f7344cce 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatAtomOneDarkIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Atom One Dark (Material)";
+
+ public static boolean install() {
try {
return install( new FlatAtomOneDarkIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatAtomOneDarkIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatAtomOneDarkIJTheme.class );
+ }
+
public FlatAtomOneDarkIJTheme() {
super( Utils.loadTheme( "Atom One Dark.theme.json" ) );
}
@Override
public String getName() {
- return "Atom One Dark (Material)";
+ return NAME;
}
}
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 217d2eb8..f003e87f 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatAtomOneLightContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Atom One Light Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatAtomOneLightContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatAtomOneLightContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatAtomOneLightContrastIJTheme.class );
+ }
+
public FlatAtomOneLightContrastIJTheme() {
super( Utils.loadTheme( "Atom One Light Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Atom One Light Contrast (Material)";
+ return NAME;
}
}
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 f07491c3..4b31ca33 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatAtomOneLightIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Atom One Light (Material)";
+
+ public static boolean install() {
try {
return install( new FlatAtomOneLightIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatAtomOneLightIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatAtomOneLightIJTheme.class );
+ }
+
public FlatAtomOneLightIJTheme() {
super( Utils.loadTheme( "Atom One Light.theme.json" ) );
}
@Override
public String getName() {
- return "Atom One Light (Material)";
+ return NAME;
}
}
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 d0481718..da2cb3d0 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatDraculaContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Dracula Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatDraculaContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatDraculaContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatDraculaContrastIJTheme.class );
+ }
+
public FlatDraculaContrastIJTheme() {
super( Utils.loadTheme( "Dracula Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Dracula Contrast (Material)";
+ return NAME;
}
}
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 50328f8e..e567b8c6 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatDraculaIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Dracula (Material)";
+
+ public static boolean install() {
try {
return install( new FlatDraculaIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatDraculaIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatDraculaIJTheme.class );
+ }
+
public FlatDraculaIJTheme() {
super( Utils.loadTheme( "Dracula.theme.json" ) );
}
@Override
public String getName() {
- return "Dracula (Material)";
+ return NAME;
}
}
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 fa324a56..661852fe 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatGitHubContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "GitHub Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatGitHubContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatGitHubContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatGitHubContrastIJTheme.class );
+ }
+
public FlatGitHubContrastIJTheme() {
super( Utils.loadTheme( "GitHub Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "GitHub Contrast (Material)";
+ return NAME;
}
}
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 e2fd0b52..d917e385 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatGitHubIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "GitHub (Material)";
+
+ public static boolean install() {
try {
return install( new FlatGitHubIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatGitHubIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatGitHubIJTheme.class );
+ }
+
public FlatGitHubIJTheme() {
super( Utils.loadTheme( "GitHub.theme.json" ) );
}
@Override
public String getName() {
- return "GitHub (Material)";
+ return NAME;
}
}
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 9e118369..0580e316 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatLightOwlContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Light Owl Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatLightOwlContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatLightOwlContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatLightOwlContrastIJTheme.class );
+ }
+
public FlatLightOwlContrastIJTheme() {
super( Utils.loadTheme( "Light Owl Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Light Owl Contrast (Material)";
+ return NAME;
}
}
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 cd6ff97d..15d01d1e 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatLightOwlIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Light Owl (Material)";
+
+ public static boolean install() {
try {
return install( new FlatLightOwlIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatLightOwlIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatLightOwlIJTheme.class );
+ }
+
public FlatLightOwlIJTheme() {
super( Utils.loadTheme( "Light Owl.theme.json" ) );
}
@Override
public String getName() {
- return "Light Owl (Material)";
+ return NAME;
}
}
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 7cb4904d..09b0950a 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMaterialDarkerContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Material Darker Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMaterialDarkerContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMaterialDarkerContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMaterialDarkerContrastIJTheme.class );
+ }
+
public FlatMaterialDarkerContrastIJTheme() {
super( Utils.loadTheme( "Material Darker Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Material Darker Contrast (Material)";
+ return NAME;
}
}
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 f6068d0b..fe563e91 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMaterialDarkerIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Material Darker (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMaterialDarkerIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMaterialDarkerIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMaterialDarkerIJTheme.class );
+ }
+
public FlatMaterialDarkerIJTheme() {
super( Utils.loadTheme( "Material Darker.theme.json" ) );
}
@Override
public String getName() {
- return "Material Darker (Material)";
+ return NAME;
}
}
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 d820276a..07370b88 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMaterialDeepOceanContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Material Deep Ocean Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMaterialDeepOceanContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMaterialDeepOceanContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMaterialDeepOceanContrastIJTheme.class );
+ }
+
public FlatMaterialDeepOceanContrastIJTheme() {
super( Utils.loadTheme( "Material Deep Ocean Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Material Deep Ocean Contrast (Material)";
+ return NAME;
}
}
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 b25be4f4..61b6ab7f 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMaterialDeepOceanIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Material Deep Ocean (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMaterialDeepOceanIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMaterialDeepOceanIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMaterialDeepOceanIJTheme.class );
+ }
+
public FlatMaterialDeepOceanIJTheme() {
super( Utils.loadTheme( "Material Deep Ocean.theme.json" ) );
}
@Override
public String getName() {
- return "Material Deep Ocean (Material)";
+ return NAME;
}
}
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 44d38bca..b4e7ac5a 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMaterialLighterContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Material Lighter Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMaterialLighterContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMaterialLighterContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMaterialLighterContrastIJTheme.class );
+ }
+
public FlatMaterialLighterContrastIJTheme() {
super( Utils.loadTheme( "Material Lighter Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Material Lighter Contrast (Material)";
+ return NAME;
}
}
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 3fe72fa6..a364af21 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMaterialLighterIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Material Lighter (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMaterialLighterIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMaterialLighterIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMaterialLighterIJTheme.class );
+ }
+
public FlatMaterialLighterIJTheme() {
super( Utils.loadTheme( "Material Lighter.theme.json" ) );
}
@Override
public String getName() {
- return "Material Lighter (Material)";
+ return NAME;
}
}
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 1f0ef905..37ce207d 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMaterialOceanicContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Material Oceanic Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMaterialOceanicContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMaterialOceanicContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMaterialOceanicContrastIJTheme.class );
+ }
+
public FlatMaterialOceanicContrastIJTheme() {
super( Utils.loadTheme( "Material Oceanic Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Material Oceanic Contrast (Material)";
+ return NAME;
}
}
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 b981ff86..662ebe82 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMaterialOceanicIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Material Oceanic (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMaterialOceanicIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMaterialOceanicIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMaterialOceanicIJTheme.class );
+ }
+
public FlatMaterialOceanicIJTheme() {
super( Utils.loadTheme( "Material Oceanic.theme.json" ) );
}
@Override
public String getName() {
- return "Material Oceanic (Material)";
+ return NAME;
}
}
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 554af48a..e9b3006b 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMaterialPalenightContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Material Palenight Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMaterialPalenightContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMaterialPalenightContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMaterialPalenightContrastIJTheme.class );
+ }
+
public FlatMaterialPalenightContrastIJTheme() {
super( Utils.loadTheme( "Material Palenight Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Material Palenight Contrast (Material)";
+ return NAME;
}
}
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 e249e466..97e5423d 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMaterialPalenightIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Material Palenight (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMaterialPalenightIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMaterialPalenightIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMaterialPalenightIJTheme.class );
+ }
+
public FlatMaterialPalenightIJTheme() {
super( Utils.loadTheme( "Material Palenight.theme.json" ) );
}
@Override
public String getName() {
- return "Material Palenight (Material)";
+ return NAME;
}
}
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 9c7dce78..d97a5206 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMonokaiProContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Monokai Pro Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMonokaiProContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMonokaiProContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMonokaiProContrastIJTheme.class );
+ }
+
public FlatMonokaiProContrastIJTheme() {
super( Utils.loadTheme( "Monokai Pro Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Monokai Pro Contrast (Material)";
+ return NAME;
}
}
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 22cf5fd3..66eaa2cf 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatMonokaiProIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Monokai Pro (Material)";
+
+ public static boolean install() {
try {
return install( new FlatMonokaiProIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatMonokaiProIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMonokaiProIJTheme.class );
+ }
+
public FlatMonokaiProIJTheme() {
super( Utils.loadTheme( "Monokai Pro.theme.json" ) );
}
@Override
public String getName() {
- return "Monokai Pro (Material)";
+ return NAME;
}
}
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
new file mode 100644
index 00000000..e2d60dd0
--- /dev/null
+++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMoonlightContrastIJTheme.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
+//
+// DO NOT MODIFY
+// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
+//
+
+import com.formdev.flatlaf.IntelliJTheme;
+
+/**
+ * @author Karl Tauber
+ */
+public class FlatMoonlightContrastIJTheme
+ extends IntelliJTheme.ThemeLaf
+{
+ public static final String NAME = "Moonlight Contrast (Material)";
+
+ public static boolean install() {
+ try {
+ return install( new FlatMoonlightContrastIJTheme() );
+ } catch( RuntimeException ex ) {
+ return false;
+ }
+ }
+
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMoonlightContrastIJTheme.class );
+ }
+
+ public FlatMoonlightContrastIJTheme() {
+ super( Utils.loadTheme( "Moonlight Contrast.theme.json" ) );
+ }
+
+ @Override
+ public String getName() {
+ return NAME;
+ }
+}
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
new file mode 100644
index 00000000..6b2026c3
--- /dev/null
+++ b/flatlaf-intellij-themes/src/main/java/com/formdev/flatlaf/intellijthemes/materialthemeuilite/FlatMoonlightIJTheme.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
+//
+// DO NOT MODIFY
+// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
+//
+
+import com.formdev.flatlaf.IntelliJTheme;
+
+/**
+ * @author Karl Tauber
+ */
+public class FlatMoonlightIJTheme
+ extends IntelliJTheme.ThemeLaf
+{
+ public static final String NAME = "Moonlight (Material)";
+
+ public static boolean install() {
+ try {
+ return install( new FlatMoonlightIJTheme() );
+ } catch( RuntimeException ex ) {
+ return false;
+ }
+ }
+
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatMoonlightIJTheme.class );
+ }
+
+ public FlatMoonlightIJTheme() {
+ super( Utils.loadTheme( "Moonlight.theme.json" ) );
+ }
+
+ @Override
+ public String getName() {
+ return NAME;
+ }
+}
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 56ab42d6..b3879bd3 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatNightOwlContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Night Owl Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatNightOwlContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatNightOwlContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatNightOwlContrastIJTheme.class );
+ }
+
public FlatNightOwlContrastIJTheme() {
super( Utils.loadTheme( "Night Owl Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Night Owl Contrast (Material)";
+ return NAME;
}
}
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 ec0a59be..7709c393 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatNightOwlIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Night Owl (Material)";
+
+ public static boolean install() {
try {
return install( new FlatNightOwlIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatNightOwlIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatNightOwlIJTheme.class );
+ }
+
public FlatNightOwlIJTheme() {
super( Utils.loadTheme( "Night Owl.theme.json" ) );
}
@Override
public String getName() {
- return "Night Owl (Material)";
+ return NAME;
}
}
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 15c44e40..7fb4f680 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatSolarizedDarkContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Solarized Dark Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatSolarizedDarkContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatSolarizedDarkContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatSolarizedDarkContrastIJTheme.class );
+ }
+
public FlatSolarizedDarkContrastIJTheme() {
super( Utils.loadTheme( "Solarized Dark Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Solarized Dark Contrast (Material)";
+ return NAME;
}
}
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 cdc8c987..28edbb88 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatSolarizedDarkIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Solarized Dark (Material)";
+
+ public static boolean install() {
try {
return install( new FlatSolarizedDarkIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatSolarizedDarkIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatSolarizedDarkIJTheme.class );
+ }
+
public FlatSolarizedDarkIJTheme() {
super( Utils.loadTheme( "Solarized Dark.theme.json" ) );
}
@Override
public String getName() {
- return "Solarized Dark (Material)";
+ return NAME;
}
}
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 777e34e2..98ba17ef 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatSolarizedLightContrastIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Solarized Light Contrast (Material)";
+
+ public static boolean install() {
try {
return install( new FlatSolarizedLightContrastIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatSolarizedLightContrastIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatSolarizedLightContrastIJTheme.class );
+ }
+
public FlatSolarizedLightContrastIJTheme() {
super( Utils.loadTheme( "Solarized Light Contrast.theme.json" ) );
}
@Override
public String getName() {
- return "Solarized Light Contrast (Material)";
+ return NAME;
}
}
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 2be96d0a..104e4c68 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
@@ -14,13 +14,13 @@
* limitations under the License.
*/
+package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
+
//
// DO NOT MODIFY
// Generated with com.formdev.flatlaf.demo.intellijthemes.IJThemesClassGenerator
//
-package com.formdev.flatlaf.intellijthemes.materialthemeuilite;
-
import com.formdev.flatlaf.IntelliJTheme;
/**
@@ -29,7 +29,9 @@ import com.formdev.flatlaf.IntelliJTheme;
public class FlatSolarizedLightIJTheme
extends IntelliJTheme.ThemeLaf
{
- public static boolean install( ) {
+ public static final String NAME = "Solarized Light (Material)";
+
+ public static boolean install() {
try {
return install( new FlatSolarizedLightIJTheme() );
} catch( RuntimeException ex ) {
@@ -37,12 +39,16 @@ public class FlatSolarizedLightIJTheme
}
}
+ public static void installLafInfo() {
+ installLafInfo( NAME, FlatSolarizedLightIJTheme.class );
+ }
+
public FlatSolarizedLightIJTheme() {
super( Utils.loadTheme( "Solarized Light.theme.json" ) );
}
@Override
public String getName() {
- return "Solarized Light (Material)";
+ return NAME;
}
}
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Cyan.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Cyan.theme.json
index 143590b1..021630a8 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Cyan.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Cyan.theme.json
@@ -88,6 +88,10 @@
"hoverBackground": "#ced2d9"
},
+ "DragAndDrop": {
+ "areaBackground": "#4cb2c733"
+ },
+
"Editor": {
"background": "#d0d3d9",
"foreground": "#808080",
@@ -201,7 +205,10 @@
"contentAreaColor": "#bec5cd"
},
- "Table.background": "#eef0f4",
+ "Table": {
+ "background": "#eef0f4",
+ "hoverBackground": "#C3D2E366"
+ },
"TableHeader": {
"cellBorder": "3,0,3,0",
@@ -242,7 +249,12 @@
}
},
- "Tree.background": "#eef0f4"
+ "Tree.background": "#eef0f4",
+
+ "WelcomeScreen": {
+ "Details.background": "#eef0f4",
+ "Projects.actions.background": "#E1E4EB"
+ }
},
"icons": {
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/DarkPurple.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/DarkPurple.theme.json
index c212eeb2..2cfc2bab 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/DarkPurple.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/DarkPurple.theme.json
@@ -51,7 +51,8 @@
"hoverBackground": "#453e57",
"hoverBorderColor": "#453E57",
"pressedBackground": "#49415c",
- "pressedBorderColor": "#49415C"
+ "pressedBorderColor": "#49415C",
+ "focusedBorderColor": "#476fcc"
},
"Button": {
@@ -94,7 +95,8 @@
"matchForeground": "#ED94FF",
"matchSelectionForeground": "#ED94FF",
"selectionInactiveBackground": "#44405c",
- "nonFocusedMask": "#00000033"
+ "nonFocusedMask": "#00000033",
+ "selectionBackground": "#623380"
},
"Component": {
@@ -123,7 +125,7 @@
"DragAndDrop": {
"areaForeground": "#D0D0D9",
- "areaBackground": "#702F91",
+ "areaBackground": "#5d476680",
"areaBorderColor": "#343142"
},
@@ -166,7 +168,7 @@
"visitedForeground": "#7094FF"
},
- "MenuBar.borderColor": "##1a1721",
+ "MenuBar.borderColor": "#1a1721",
"NavBar.borderColor": "#1a1721",
@@ -280,6 +282,8 @@
"endBackground": "#cca929"
},
+ "SearchOption.selectedBackground": "#424885",
+
"SpeedSearch": {
"foreground": "#D0D0D9",
"borderColor": "#69418c",
@@ -304,7 +308,10 @@
"bottomSeparatorColor": "#282430"
},
- "Table.stripeColor": "#323242",
+ "Table": {
+ "stripeColor": "#323242",
+ "hoverBackground": "#00000028"
+ },
"TextArea": {
"background": "#3A384D",
@@ -327,7 +334,9 @@
"ToolTip": {
"background": "#463f57",
- "Actions.background": "#323245"
+ "Actions.background": "#323245",
+ "infoForeground": "#8985a1",
+ "shortcutForeground": "#8985A1"
},
"ToolWindow": {
@@ -363,14 +372,17 @@
"VersionControl": {
"Log.Commit": {
"currentBranchBackground": "#202340",
- "unmatchedForeground": "#6d6a80"
+ "unmatchedForeground": "#6d6a80",
+ "hoveredBackground": "#000000B9"
},
"FileHistory.Commit.selectedBranchBackground": "#202340"
},
"WelcomeScreen": {
"Projects.selectionInactiveBackground": "#713a91",
- "separatorColor": "#1a1721"
+ "separatorColor": "#1a1721",
+ "Details.background": "#26262E",
+ "Projects.actions.background": "#343445"
}
},
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Dracula.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Dracula.theme.json
index f963edfd..95d57fb9 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Dracula.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Dracula.theme.json
@@ -1,38 +1,49 @@
{
"name": "Dracula",
"dark": true,
- "author": "VermouthX",
+ "author": "Zihan Ma",
"editorScheme": "/themes/Dracula.xml",
+ "colors": {
+ "primaryForeground": "#f8f8f2",
+ "primaryBackground": "#414450",
+ "secondaryBackground": "#44475a",
+ "hoverBackground": "#282a36",
+ "selectionBackground": "#6272a4",
+ "selectionInactiveBackground": "#4e5a82",
+ "borderColor": "#282a36",
+ "separatorColor": "#282a36"
+ },
"ui": {
"*": {
- "arc": "5",
- "background": "#414450",
- "selectionBackground": "#6272a4",
- "selectionInactiveBackground": "#4E5A82",
- "inactiveBackground": "#414450",
- "borderColor": "#282a36"
+ "arc": "7",
+ "background": "primaryBackground",
+ "selectionBackground": "selectionBackground",
+ "selectionInactiveBackground": "selectionInactiveBackground",
+ "inactiveBackground": "primaryBackground",
+ "borderColor": "borderColor",
+ "separatorColor": "separatorColor"
},
"Borders": {
- "color": "#282a36",
- "ContrastBorderColor": "#282a36"
+ "color": "borderColor",
+ "ContrastBorderColor": "borderColor"
},
"ActionButton": {
- "hoverBackground": "#282a35",
- "hoverBorderColor": "#282a35",
- "pressedBackground": "#282a35",
- "pressedBorderColor": "#282a35"
+ "hoverBackground": "hoverBackground",
+ "hoverBorderColor": "hoverBackground",
+ "pressedBackground": "hoverBackground",
+ "pressedBorderColor": "hoverBackground"
},
"Button": {
- "foreground": "#f8f8f2",
- "startBorderColor": "#6272a4",
- "endBorderColor": "#6272a4",
- "startBackground": "#6272a4",
- "endBackground": "#6272a4",
+ "foreground": "primaryForeground",
+ "startBorderColor": "selectionBackground",
+ "endBorderColor": "selectionBackground",
+ "startBackground": "selectionBackground",
+ "endBackground": "selectionBackground",
"focusedBorderColor": "#bd93f9",
"default": {
- "foreground": "#f8f8f2",
- "startBackground": "#6272a4",
- "endBackground": "#6272a4",
+ "foreground": "primaryForeground",
+ "startBackground": "selectionBackground",
+ "endBackground": "selectionBackground",
"startBorderColor": "#bd93f9",
"endBorderColor": "#bd93f9",
"focusColor": "#bd93f9",
@@ -40,7 +51,7 @@
}
},
"Counter": {
- "foreground": "#414450",
+ "foreground": "primaryBackground",
"background": "#2fc864"
},
"CheckBoxMenuItem": {
@@ -49,50 +60,50 @@
"ComboBox": {
"modifiedItemForeground": "#ff79c6",
"ArrowButton": {
- "background": "#44475a",
- "nonEditableBackground": "#44475a",
+ "background": "secondaryBackground",
+ "nonEditableBackground": "secondaryBackground",
"iconColor": "#bd93f9"
},
"selectionBackground": "#bd93f9",
- "nonEditableBackground": "#44475a"
+ "nonEditableBackground": "secondaryBackground"
},
"CompletionPopup": {
- "selectionBackground": "#6272a4",
- "selectionInactiveBackground": "#4E5A82",
+ "selectionBackground": "selectionBackground",
+ "selectionInactiveBackground": "selectionInactiveBackground",
"matchForeground": "#ff79c6"
},
"Component": {
"focusColor": "#bd93f9",
- "borderColor": "#6272a4",
- "focusedBorderColor": "#6272a4",
+ "borderColor": "selectionBackground",
+ "focusedBorderColor": "selectionBackground",
"errorFocusColor": "#ff5554",
"inactiveErrorFocusColor": "#ff5554",
"warningFocusColor": "#f1fa8c",
"inactiveWarningFocusColor": "#f1fa8c"
},
"DragAndDrop": {
- "areaBorderColor": "#6272a4"
+ "areaBorderColor": "selectionBackground"
},
"Editor": {
- "background": "#44475a",
+ "background": "secondaryBackground",
"shortcutForeground": "#ff79c6"
},
"EditorTabs": {
- "background": "#44475a",
+ "background": "secondaryBackground",
"underlinedTabBackground": "#313341",
"underlineColor": "#bd93f9",
- "underlineHeight": 1
+ "underlineHeight": 2
},
"FileColor": {
"Blue": "#8be9fd",
"Green": "#63667E",
"Orange": "#ffb86c",
- "Yellow": "#44475a",
+ "Yellow": "secondaryBackground",
"Rose": "#ff79c6",
"Violet": "#bd93f9"
},
"Label": {
- "foreground": "#f8f8f2",
+ "foreground": "primaryForeground",
"errorForeground": "#ff5554"
},
"Link": {
@@ -102,65 +113,67 @@
"pressedForeground": "#bd93f9"
},
"Notification": {
- "borderColor": "#6272a4",
+ "borderColor": "selectionBackground",
"errorBorderColor": "#ff5554",
- "errorBackground": "#414450",
- "errorForeground": "#f8f8f2",
+ "errorBackground": "primaryBackground",
+ "errorForeground": "primaryForeground",
"ToolWindow": {
- "warningForeground": "#f8f8f2",
- "warningBackground": "#414450",
+ "warningForeground": "primaryForeground",
+ "warningBackground": "primaryBackground",
"warningBorderColor": "#ffb86c",
- "errorForeground": "#f8f8f2",
+ "errorForeground": "primaryForeground",
"errorBorderColor": "#ff5554",
- "errorBackground": "#414450",
- "informativeForeground": "#f8f8f2",
- "informativeBackground": "#414450",
+ "errorBackground": "primaryBackground",
+ "informativeForeground": "primaryForeground",
+ "informativeBackground": "primaryBackground",
"informativeBorderColor": "#50fa7b"
}
},
"Plugins": {
"SearchField": {
- "background": "#44475a"
+ "background": "secondaryBackground"
},
"SectionHeader": {
- "foreground": "#f8f8f2"
+ "foreground": "primaryForeground"
},
- "lightSelectionBackground": "#282a35",
+ "hoverBackground": "hoverBackground",
+ "lightSelectionBackground": "hoverBackground",
"Button": {
"installBorderColor": "#bd93f9",
"installForeground": "#bd93f9",
- "installBackground": "#414450",
- "installFillForeground": "#414450",
+ "installBackground": "primaryBackground",
+ "installFillForeground": "primaryBackground",
"installFillBackground": "#bd93f9",
- "installFocusedBackground": "#414450",
+ "installFocusedBackground": "primaryBackground",
"updateBorderColor": "#5da3f4",
- "updateForeground": "#f8f8f2",
+ "updateForeground": "primaryForeground",
"updateBackground": "#5da3f4"
},
"Tab": {
- "selectedBackground": "#282a35",
- "selectedForeground": "#f8f8f2",
- "hoverBackground": "#282a35"
+ "selectedBackground": "hoverBackground",
+ "selectedForeground": "primaryForeground",
+ "hoverBackground": "hoverBackground"
}
},
"ProgressBar": {
"failedColor": "#ff5554",
"failedEndColor": "#ff5554",
- "trackColor": "#6272a4",
+ "trackColor": "selectionBackground",
"progressColor": "#ff79c6",
- "indeterminateStartColor": "#bd93f9",
+ "indeterminateStartColor": "#93b8f9",
"indeterminateEndColor": "#bd93f9",
"passedColor": "#50fa7b",
"passedEndColor": "#50fa7b"
},
"Popup": {
"Header": {
- "activeBackground": "#44475a",
- "inactiveBackground": "#44475a"
+ "activeBackground": "secondaryBackground",
+ "inactiveBackground": "secondaryBackground"
}
},
"ScrollBar": {
"Mac": {
+ "hoverThumbColor": "#bd93f9",
"Transparent": {
"hoverThumbColor": "#bd93f9"
}
@@ -168,39 +181,54 @@
},
"SearchEverywhere": {
"SearchField": {
- "background": "#44475a"
+ "background": "secondaryBackground"
},
"Tab": {
"selectedBackground": "#313341",
- "selectedForeground": "#f8f8f2"
+ "selectedForeground": "primaryForeground"
}
},
"SearchMatch": {
"startBackground": "#ff79c6",
"endBackground": "#ff79c6"
},
- "Separator.separatorColor": "#282a35",
+ "Separator": {
+ "separatorColor": "separatorColor"
+ },
+ "SidePanel": {
+ "background": "secondaryBackground"
+ },
+ "StatusBar": {
+ "hoverBackground": "hoverBackground"
+ },
"TabbedPane": {
"tabSelectionHeight": 1,
- "focusColor": "#282a35",
- "hoverColor": "#282a35",
+ "focusColor": "hoverBackground",
+ "hoverColor": "hoverBackground",
"underlineColor": "#bd93f9",
- "contentAreaColor": "#282a35"
+ "contentAreaColor": "hoverBackground"
+ },
+ "Table": {
+ "gridColor": "#5d617a",
+ "hoverBackground": "selectionBackground"
+ },
+ "TableHeader": {
+ "bottomSeparatorColor": "separatorColor"
},
"ToggleButton": {
"onBackground": "#50fa7b",
- "onForeground": "#282a35",
- "offBackground": "#6272a4",
- "offForeground": "#282a35",
- "buttonColor": "#f8f8f2"
+ "onForeground": "hoverBackground",
+ "offBackground": "selectionBackground",
+ "offForeground": "hoverBackground",
+ "buttonColor": "primaryForeground"
},
"ToolWindow": {
"Button": {
- "hoverBackground": "#282a35"
+ "hoverBackground": "hoverBackground"
},
"Header": {
- "background": "#44475a",
- "inactiveBackground": "#44475a"
+ "background": "secondaryBackground",
+ "inactiveBackground": "secondaryBackground"
},
"HeaderTab": {
"underlineColor": "#bd93f9",
@@ -211,8 +239,8 @@
},
"Tree": {
"modifiedItemForeground": "#ff79c6",
- "selectionBackground": "#6272a4",
- "selectionInactiveBackground": "#4E5A82"
+ "selectionBackground": "selectionBackground",
+ "selectionInactiveBackground": "selectionInactiveBackground"
},
"ValidationTooltip": {
"errorBackground": "#ff5554",
@@ -223,7 +251,7 @@
"VersionControl": {
"FileHistory": {
"Commit": {
- "selectedBranchBackground": "#44475a"
+ "selectedBranchBackground": "secondaryBackground"
}
},
"GitLog": {
@@ -235,16 +263,23 @@
},
"Log": {
"Commit": {
- "currentBranchBackground": "#44475a"
+ "hoveredBackground": "selectionBackground",
+ "currentBranchBackground": "secondaryBackground"
}
}
},
"WelcomeScreen": {
- "separatorColor": "#191b1f",
+ "SidePanel": {
+ "background": "secondaryBackground"
+ },
+ "separatorColor": "separatorColor",
"Projects": {
- "background": "#282a35",
- "selectionBackground": "#44475a",
- "selectionInactiveBackground": "#44475a"
+ "background": "hoverBackground",
+ "selectionBackground": "secondaryBackground",
+ "selectionInactiveBackground": "secondaryBackground",
+ "actions": {
+ "background": "hoverBackground"
+ }
}
}
},
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_Nature_Green.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_Nature_Green.theme.json
new file mode 100644
index 00000000..b2d43faa
--- /dev/null
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_Nature_Green.theme.json
@@ -0,0 +1,266 @@
+{
+ "author": "thvardhan",
+ "dark": true,
+ "editorScheme": "/Gradianto_Nature_Green.xml",
+ "icons": {
+ "ColorPalette": {
+ "Checkbox.Border.Default": "#3f765a",
+ "Checkbox.Border.Default.Dark": "#3f765a",
+ "Checkbox.Background.Default.Dark": "#3f765a",
+ "Checkbox.Foreground.Selected.Dark": "#00d679",
+ "Checkbox.Background.Disabled": "#274439",
+ "Checkbox.Background.Disabled.Dark": "#1e3b2f",
+ "Objects.Grey": "#e3e3e3c0",
+ "Objects.Blue": "#4fc3f7c0",
+ "Objects.RedStatus": "#ff5722c0",
+ "Objects.Red": "#e07483c0",
+ "Objects.Pink": "#de6dc2c0",
+ "Objects.Yellow": "#ffca57c0",
+ "Objects.Green": "#76da84c0",
+ "Objects.Purple": "#d199ffc0",
+ "Objects.BlackText": "#2e2e2ec0",
+ "Objects.YellowDark": "#ffca1ec0",
+ "Objects.GreenAndroid": "#18e66bc0"
+ }
+ },
+ "name": "Gradianto Nature Green",
+ "ui": {
+ "*": {
+ "background": "#20403f",
+ "foreground": "#cccece",
+ "infoForeground": "#29d57cc1",
+ "selectionBackground": "#00695c",
+ "selectionForeground": "#f1f4f6",
+ "selectionInactiveBackground": "#0465465c",
+ "disabledForeground": "#a3a3a3",
+ "disabledBackground": "#104942",
+ "inactiveBackground": "#257b71",
+ "errorForeground": "#b5b5b5",
+ "disabledText": "#adadad",
+ "Borders.ContrastBorderColor": "#12312d",
+ "borderColor": "#0a373b",
+ "disabledBorderColor": "#0b2d26",
+ "focusColor": "#265752",
+ "focusedBorderColor": "#1a7469",
+ "separatorColor": "#20574f"
+ },
+ "Tree": {
+ "background": "#203a40",
+ "selectionBackground": "#00695c"
+ },
+ "ActionButton": {
+ "hoverBackground": "#084934",
+ "pressedBackground": "#025248",
+ "hoverBorderColor": "#074045",
+ "pressedBorderColor": "#063034"
+ },
+ "Borders": {
+ "color": "#1d3e30a3",
+ "ContrastBorderColor": "#14342d"
+ },
+ "Button": {
+ "startBackground": "#4aa275",
+ "endBackground": "#4aa275",
+ "startBorderColor": "#254b45",
+ "endBorderColor": "#254b45",
+ "focusedBorderColor": "#4aa295",
+ "default.focusColor": "#4aa295",
+ "disabledBorderColor": "#198157",
+ "default": {
+ "startBackground": "#4aa275",
+ "endBackground": "#4aa275",
+ "focusColor": "#29a2a2"
+ }
+ },
+ "CompletionPopup": {
+ "matchForeground": "#56f29c"
+ },
+ "Notification": {
+ "errorForeground": "#f5f5f5",
+ "errorBackground": "#c4131e",
+ "errorBorderColor": "#c55e4a",
+ "ToolWindow": {
+ "informativeForeground": "#f5f5f5",
+ "informativeBackground": "#414f66",
+ "informativeBorderColor": "#d4745c",
+ "warningForeground": "#abb2bf",
+ "warningBackground": "#896a28",
+ "warningBorderColor": "#5f4422",
+ "errorForeground": "#abb2bf",
+ "errorBackground": "#923849",
+ "errorBorderColor": "#552029"
+ }
+ },
+ "ComboBox": {
+ "background": "#356c43",
+ "nonEditableBackground": "#356c43",
+ "ArrowButton": {
+ "iconColor": "#e3e2f1",
+ "disabledIconColor": "#83828b",
+ "nonEditableBackground": "#35a787"
+ }
+ },
+ "Editor": {
+ "shortcutForeground": "#3f795b"
+ },
+ "EditorTabs": {
+ "selectedForeground": "#eceff1",
+ "selectedBackground": "#006448",
+ "underlinedTabBackground": "#07664848",
+ "background": "#1e3b39",
+ "borderColor": "#033e25",
+ "underlineColor": "#008f666a",
+ "hoverMaskColor": "#468f67",
+ "inactiveMaskColor": "#244a31ff"
+ },
+ "Link": {
+ "activeForeground": "#cdd0c5",
+ "hoverForeground": "#cded91",
+ "pressedForeground": "#8da75e",
+ "visitedForeground": "#cebebe"
+ },
+ "FileColor": {
+ "Yellow": "#cee51219",
+ "Green": "#98c3791a",
+ "Blue": "#61afef1a",
+ "Violet": "#542a4f1a",
+ "Orange": "#d13c001a",
+ "Rose": "#ae002f1a"
+ },
+ "SearchEverywhere": {
+ "Tab": {
+ "selectedForeground": "#ffffff",
+ "selectedBackground": "#2f7d5d"
+ }
+ },
+ "SearchMatch": {
+ "startBackground": "#679d81",
+ "endBackground": "#2d7156"
+ },
+ "WelcomeScreen": {
+ "Projects.selectionInactiveBackground": "#32805e",
+ "separatorColor": "#249273"
+ },
+ "ValidationTooltip": {
+ "errorBackground": "#802d43",
+ "errorBorderColor": "#802d43",
+ "warningBackground": "#735822",
+ "warningBorderColor": "#5f4422"
+ },
+ "Table": {
+ "stripeColor": "#476f5e",
+ "selectionForeground": "#e4e4e4",
+ "dropLineColor": "#588d67",
+ "focusCellForeground": "#e3e3e3",
+ "gridColor": "#456f58"
+ },
+ "ProgressBar": {
+ "trackColor": "#132f20",
+ "progressColor": "#60cf92",
+ "indeterminateStartColor": "#68f296",
+ "indeterminateEndColor": "#30695c",
+ "failedColor": "#ad387e",
+ "failedEndColor": "#47221d",
+ "passedColor": "#7edb7f",
+ "passedEndColor": "#2f422f"
+ },
+ "windowBorder": "#285738",
+ "window": "#285741",
+ "PopupMenu.translucentBackground": "#266d48",
+ "Popup": {
+ "inactiveBorderColor": "#254933",
+ "paintBorder": true,
+ "Header.activeBackground": "#397e66",
+ "Header.inactiveBackground": "#2b6d53",
+ "separatorColor": "#225740",
+ "separatorForeground": "#42a873",
+ "Advertiser": {
+ "background": "#2f473d",
+ "borderColor": "#143427",
+ "borderInsets": "3,8,5,0"
+ }
+ },
+ "ToggleButton": {
+ "onForeground": "#27683f",
+ "onBackground": "#9ca9af",
+ "offForeground": "#646464",
+ "offBackground": "#1c3228",
+ "buttonColor": "#3c855f"
+ },
+ "ToolTip": {
+ "background": "#448366",
+ "Actions.background": "#253a33"
+ },
+ "ToolWindow": {
+ "Header": {
+ "background": "#2e7253",
+ "inactiveBackground": "#2f5e47e8"
+ },
+ "HeaderTab": {
+ "selectedBackground": "#397e55ff",
+ "selectedInactiveBackground": "#2c5947ff",
+ "hoverBackground": "#38715fff",
+ "hoverInactiveBackground": "#254a3aff"
+ },
+ "Button": {
+ "hoverBackground": "#387158ff",
+ "selectedBackground": "#397e74ff",
+ "selectedForeground": "#b1c6c4"
+ }
+ },
+ "TabbedPane": {
+ "focusColor": "#2c6a56",
+ "hoverColor": "#34795d",
+ "underlineColor": "#7fa89b"
+ },
+ "DragAndDrop": {
+ "areaForeground": "#e5e5e5",
+ "areaBackground": "#243937",
+ "areaBorderColor": "#143427"
+ },
+ "Plugins": {
+ "SectionHeader.background": "#2a6346",
+ "tagBackground": "#3d5a50",
+ "lightSelectionBackground": "#3c7e64"
+ },
+ "VersionControl": {
+ "Log.Commit.currentBranchBackground": "#225740",
+ "Log.Commit.unmatchedForeground": "#94aba8"
+ },
+ "ScrollBar" : {
+ "hoverThumbBorderColor" : "#39666394",
+ "background" : "#16322cff",
+ "hoverThumbColor": "#497486ff",
+ "hoverTrackColor": "#224039ff",
+ "thumb": "#406480ff",
+ "thumbBorderColor": "#39666394",
+ "thumbColor": "#406480ff",
+ "thumbDarkShadow": "#122623ff",
+ "thumbHighlight": "#2a4f4cff",
+ "thumbShadow": "#162b24ff",
+ "track": "#182d26ff",
+ "Transparent": {
+ "thumbColor": "#406480ff",
+ "hoverThumbBorderColor" : "#14262694",
+ "hoverThumbColor": "#497486ff",
+ "hoverTrackColor": "#224039ff",
+ "thumbBorderColor": "#14262694"
+ },
+ "Mac" : {
+ "Transparent": {
+ "thumbColor": "#406480ff",
+ "hoverThumbBorderColor" : "#14262694",
+ "hoverThumbColor": "#497486ff",
+ "hoverTrackColor": "#224039ff",
+ "thumbBorderColor": "#39666394"
+ },
+ "hoverThumbBorderColor" : "#14262694",
+ "hoverThumbColor": "#497486ff",
+ "hoverTrackColor": "#224039ff",
+ "thumbBorderColor": "#14262694",
+ "thumbColor": "#406480ff"
+ }
+ },
+ "EditorPane.inactiveBackground": "#254a39ff"
+ }
+}
\ No newline at end of file
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_dark_fuchsia.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_dark_fuchsia.theme.json
index f1c0dd4a..c27af9ea 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_dark_fuchsia.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_dark_fuchsia.theme.json
@@ -249,6 +249,45 @@
"Tab.selectedBackground": "#a778bfff",
"Tab.hoverBackground": "#82519cff"
},
+ "ScrollBar" : {
+ "hoverThumbBorderColor" : "#3a2241b2",
+ "background" : "#241632ff",
+ "hoverThumbColor": "#694f92ff",
+ "hoverTrackColor": "#3d2240ff",
+ "thumb": "#2f2040ff",
+ "thumbBorderColor": "#2c152fff",
+ "thumbColor": "#6c499194",
+ "thumbDarkShadow": "#261226ff",
+ "thumbHighlight": "#4f2a4eff",
+ "thumbShadow": "#22162bff",
+ "track": "#23182dff",
+ "Transparent": {
+ "thumbColor": "#6c499194",
+ "hoverThumbBorderColor" : "#3a2241b2",
+ "hoverThumbColor": "#694f92ff",
+ "hoverTrackColor": "#3d2240ff",
+ "thumbBorderColor": "#2c152fff"
+ },
+ "Mac" : {
+ "Transparent": {
+ "thumbColor": "#6c499194",
+ "hoverThumbBorderColor" : "#3a2241b2",
+ "hoverThumbColor": "#694f92ff",
+ "hoverTrackColor": "#3d2240ff",
+ "thumbBorderColor": "#2c152fff"
+ },
+ "hoverThumbBorderColor" : "#3a2241b2",
+ "hoverThumbColor": "#694f92ff",
+ "hoverTrackColor": "#3d2240ff",
+ "thumbBorderColor": "#2c152fff",
+ "thumbColor": "#6c499194"
+ }
+ },
+ "TabbedPane": {
+ "focusColor": "#562c6a",
+ "hoverColor": "#633479",
+ "underlineColor": "#8f7fa8"
+ },
"EditorPane.inactiveBackground": "#5d4966"
},
"icons": {
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_deep_ocean.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_deep_ocean.theme.json
index 6c32b6f5..6cf44d12 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_deep_ocean.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_deep_ocean.theme.json
@@ -18,7 +18,6 @@
"disabledForeground": "#a3a3a3",
"disabledBackground": "#222f44",
"inactiveBackground": "#325180",
-
"errorForeground": "#b5b5b5",
"disabledText": "#adadad",
@@ -45,6 +44,11 @@
"color": "#2b3858cc",
"ContrastBorderColor": "#0e1624"
},
+ "TabbedPane": {
+ "focusColor": "#25334b",
+ "hoverColor": "#374c70",
+ "underlineColor": "#3D7EC0"
+ },
"Button": {
"startBackground": "#4a75a2",
"endBackground": "#4a75a2",
@@ -63,6 +67,40 @@
"CompletionPopup": {
"matchForeground": "#568AF2"
},
+ "ScrollBar" : {
+ "hoverThumbBorderColor" : "#12182994",
+ "background" : "#161f3294",
+ "hoverThumbColor": "#497486ff",
+ "hoverTrackColor": "#222a40b2",
+ "thumb": "#3c557cff",
+ "thumbBorderColor": "#12182994",
+ "thumbColor": "#3c557cff",
+ "thumbDarkShadow": "#0c0f1a94",
+ "thumbHighlight": "#3b496bb2",
+ "thumbShadow": "#161a2b94",
+ "track": "#181e2db2",
+ "Transparent": {
+ "thumbColor": "#3c557cff",
+ "hoverThumbBorderColor" : "#12182994",
+ "hoverThumbColor": "#497486ff",
+ "hoverTrackColor": "#222a40b2",
+ "thumbBorderColor": "#12182994"
+ },
+ "Mac" : {
+ "Transparent": {
+ "thumbColor": "#3c557cff",
+ "hoverThumbBorderColor" : "#12182994",
+ "hoverThumbColor": "#497486ff",
+ "hoverTrackColor": "#222a40b2",
+ "thumbBorderColor": "#12182994"
+ },
+ "hoverThumbBorderColor" : "#12182994",
+ "hoverThumbColor": "#497486ff",
+ "hoverTrackColor": "#222a40b2",
+ "thumbBorderColor": "#12182994",
+ "thumbColor": "#3c557cff"
+ }
+ },
"Notification": {
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_midnight_blue.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_midnight_blue.theme.json
index 8b26244f..70f7274d 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_midnight_blue.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gradianto_midnight_blue.theme.json
@@ -220,6 +220,45 @@
"tagBackground": "#40405a",
"lightSelectionBackground": "#48387e"
},
+ "TabbedPane": {
+ "focusColor": "#3d2c6a",
+ "hoverColor": "#433479",
+ "underlineColor": "#877fa8"
+ },
+ "ScrollBar" : {
+ "hoverThumbBorderColor" : "#423162ff",
+ "background" : "#211632ff",
+ "hoverThumbColor": "#3e3162ff",
+ "hoverTrackColor": "#2d2240ff",
+ "thumb": "#2b2040ff",
+ "thumbBorderColor": "#322141ff",
+ "thumbColor": "#272040ff",
+ "thumbDarkShadow": "#1d182fff",
+ "thumbHighlight": "#533b6bff",
+ "thumbShadow": "#1f162bff",
+ "track": "#28233eff",
+ "Transparent": {
+ "thumbColor": "#292040ff",
+ "hoverThumbBorderColor" : "#281c39ff",
+ "hoverThumbColor": "#423162ff",
+ "hoverTrackColor": "#2d2240ff",
+ "thumbBorderColor": "#261b3bff"
+ },
+ "Mac" : {
+ "Transparent": {
+ "thumbColor": "#2d2040ff",
+ "hoverThumbBorderColor" : "#2b1f40ff",
+ "hoverThumbColor": "#403162ff",
+ "hoverTrackColor": "#2e2240ff",
+ "thumbBorderColor": "#1f1834ff"
+ },
+ "hoverThumbBorderColor" : "#2d203cff",
+ "hoverThumbColor": "#3e3162ff",
+ "hoverTrackColor": "#2d2240ff",
+ "thumbBorderColor": "#271a37ff",
+ "thumbColor": "#272040ff"
+ }
+ },
"EditorPane.inactiveBackground": "#414157ff"
},
"icons": {
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gray.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gray.theme.json
index 00a61b99..ce9dcb9b 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gray.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/Gray.theme.json
@@ -99,6 +99,8 @@
"FileColor.Yellow": "#F5F0DF",
"FileColor.Green": "#E8F2DF",
+ "GotItTooltip.borderColor": "#0000001F",
+
"Label.errorForeground": "#C7222D",
"Link": {
@@ -137,7 +139,8 @@
"SectionHeader.foreground": "#808080",
"Tab.selectedBackground": "#D5D6D7",
"Tab.hoverBackground": "#D5D6D7",
- "lightSelectionBackground": "#F4F9FF"
+ "lightSelectionBackground": "#E9EFF7",
+ "hoverBackground": "#f7faff"
},
"Popup": {
@@ -185,12 +188,13 @@
"contentAreaColor": "#E1E3E6"
},
- "Table.stripeColor": "#F2F3F5",
+ "Table": {
+ "stripeColor": "#F2F3F5",
+ "hoverBackground": "#00000009"
+ },
"TableHeader": {
- "cellBorder": "3,0,3,0",
- "background": "#fafbfc",
- "bottomSeparatorColor": "#ebedf0"
+ "cellBorder": "3,0,3,0"
},
"TextArea.background": "#FFFFFF",
@@ -225,9 +229,15 @@
"VersionControl": {
"Log.Commit.currentBranchBackground": "#e6f0f2",
- "FileHistory.Commit.selectedBranchBackground": "#e6f0f2"
+ "FileHistory.Commit.selectedBranchBackground": "#e6f0f2",
+ "Log.Commit.hoveredBackground": "#000000EE"
+ },
+
+ "WelcomeScreen": {
+ "Details.background": "#FAFBFC"
}
+
},
"icons": {
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/arc_theme_dark.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/arc_theme_dark.theme.json
index 23250440..15df94d2 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/arc_theme_dark.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/arc_theme_dark.theme.json
@@ -28,8 +28,8 @@
"endBorderColor": "#2b2e39",
"focusedBorderColor" : "#2679db",
"background" : "#383c4a",
- "startBackground" : "#474c5b",
- "endBackground" : "#474c5b",
+ "startBackground" : "#444A58",
+ "endBackground" : "#444A58",
"default": {
"foreground": "#d3dae3",
"startBackground": "#2679db",
@@ -47,17 +47,17 @@
"ToolBar.highlight" : "#4e5467",
"Popup.Toolbar.borderColor" : "#2b2e39",
"ActionButton.hoverBorderColor" : "#2b2e39",
- "ActionButton.hoverBackground" : "#4e5467",
+ "ActionButton.hoverBackground" : "#505666",
"ActionButton.pressedBackground" : "#4e5467",
"ActionButton.pressedBorderColor" : "#2b2e39",
- "StatusBar.hoverBackground" : "#4e5467",
+ "StatusBar.hoverBackground" : "#505666",
"StatusBar.borderColor" : "#2b2e39",
"Popup.Toolbar.background" : "#474c5b",
"Panel.background": "#383c4a",
"Panel.foreground" : "#d3dae3",
"Window.border" : "1,1,1,1,#2b2e39",
"WelcomeScreen.background" : "#383c4a",
- "WelcomeScreen.Projects.background" : "#474c5b",
+ "WelcomeScreen.Projects.background" : "#404651",
"MenuBar.foreground" : "#d3dae3",
"MenuBar.borderColor" : "#2b2e39",
@@ -73,7 +73,7 @@
"Separator.separatorColor" : "#9ba2ab",
"Group.separatorColor" : "#9ba2ab",
- "Tree.background" : "#474c5b",
+ "Tree.background" : "#404651",
"Tree.foreground" : "#d3dae3",
"ProgressBar.background" : "#2679db",
@@ -93,13 +93,13 @@
"ParameterInfo.background" : "#fffae3",
"ParameterInfo.currentOverloadBackground" : "#fffae3",
- "List.background" : "#474c5b",
+ "List.background" : "#404651",
"List.dropLineColor" : "#2679db",
"List.selectionBackground": "#2679db",
"List.selectionForeground": "#ffffff",
"List.selectionInactiveBackground": "#1e61b0",
- "Table.background" : "#474c5b",
+ "Table.background" : "#404651",
"Table.selectionBackground" : "#2679db",
"Table.selectionForeground" : "#ffffff",
"Table.lightSelectionBackground" : "#2679db",
@@ -126,6 +126,7 @@
"ComboBox.nonEditableBackground" : "#474c5b",
"ComboBox.ArrowButton.background" : "#474c5b",
"ComboBox.ArrowButton.nonEditableBackground" : "#474c5b",
+ "ComboBox.disabledBackground" : "#383c4a",
"ComboBoxButton.background" : "#474c5b",
"TextField.background" : "#474c5b",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/arc_theme_dark_orange.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/arc_theme_dark_orange.theme.json
index ef69243b..431d9bc8 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/arc_theme_dark_orange.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/arc_theme_dark_orange.theme.json
@@ -28,8 +28,8 @@
"endBorderColor": "#2b2e39",
"focusedBorderColor" : "#f57900",
"background" : "#383c4a",
- "startBackground" : "#474c5b",
- "endBackground" : "#474c5b",
+ "startBackground" : "#444A58",
+ "endBackground" : "#444A58",
"default": {
"foreground": "#d3dae3",
"startBackground": "#f57900",
@@ -47,17 +47,17 @@
"ToolBar.highlight" : "#4e5467",
"Popup.Toolbar.borderColor" : "#2b2e39",
"ActionButton.hoverBorderColor" : "#2b2e39",
- "ActionButton.hoverBackground" : "#4e5467",
+ "ActionButton.hoverBackground" : "#505666",
"ActionButton.pressedBackground" : "#4e5467",
"ActionButton.pressedBorderColor" : "#2b2e39",
- "StatusBar.hoverBackground" : "#4e5467",
+ "StatusBar.hoverBackground" : "#505666",
"StatusBar.borderColor" : "#2b2e39",
"Popup.Toolbar.background" : "#474c5b",
"Panel.background": "#383c4a",
"Panel.foreground" : "#d3dae3",
"Window.border" : "1,1,1,1,#2b2e39",
"WelcomeScreen.background" : "#383c4a",
- "WelcomeScreen.Projects.background" : "#474c5b",
+ "WelcomeScreen.Projects.background" : "#404651",
"MenuBar.foreground" : "#d3dae3",
"MenuBar.borderColor" : "#2b2e39",
@@ -73,7 +73,7 @@
"Separator.separatorColor" : "#9ba2ab",
"Group.separatorColor" : "#9ba2ab",
- "Tree.background" : "#474c5b",
+ "Tree.background" : "#404651",
"Tree.foreground" : "#d3dae3",
"ProgressBar.background" : "#f57900",
@@ -93,13 +93,13 @@
"ParameterInfo.background" : "#fffae3",
"ParameterInfo.currentOverloadBackground" : "#fffae3",
- "List.background" : "#474c5b",
+ "List.background" : "#404651",
"List.dropLineColor" : "#f57900",
"List.selectionBackground": "#f57900",
"List.selectionForeground": "#ffffff",
"List.selectionInactiveBackground": "#C36200",
- "Table.background" : "#474c5b",
+ "Table.background" : "#404651",
"Table.selectionBackground" : "#f57900",
"Table.selectionForeground" : "#ffffff",
"Table.lightSelectionBackground" : "#f57900",
@@ -125,6 +125,7 @@
"ComboBox.nonEditableBackground" : "#474c5b",
"ComboBox.ArrowButton.background" : "#474c5b",
"ComboBox.ArrowButton.nonEditableBackground" : "#474c5b",
+ "ComboBox.disabledBackground" : "#383c4a",
"ComboBoxButton.background" : "#474c5b",
"TextField.background" : "#474c5b",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_soft.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_soft.theme.json
index 079a2e86..ae1d4681 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_soft.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/gruvbox_dark_soft.theme.json
@@ -7,6 +7,7 @@
"bg0": "#282828",
"bg0_h": "#1d2021",
"bg0_s": "#32302f",
+ "bg0_ss": "#4F4945",
"bg1": "#3c3836",
"bg2": "#504945",
"bg3": "#665c54",
@@ -45,11 +46,11 @@
"infoForeground": "fg",
"lightSelectionBackground": "bg1",
- "selectionBackground": "#4F4945",
+ "selectionBackground": "bg0_ss",
"selectionForeground": "fg0",
- "selectionBackgroundInactive": "bg0_s",
- "selectionInactiveBackground": "bg0_s",
+ "selectionBackgroundInactive": "bg0_ss",
+ "selectionInactiveBackground": "bg0_ss",
"selectedBackground": "bg0_h",
"selectedForeground": "fg0",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark Contrast.theme.json
index 4516c784..5809bd42 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark Contrast.theme.json
@@ -3,18 +3,24 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Arc Dark.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/arcdark.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#8b9eb5",
"background": "#2f343f",
"borderColor": "#404552",
- "disabledBackground": "#37373d",
+ "disabledBackground": "#474B57",
"disabledForeground": "#D3DAE3",
"disabledText": "#D3DAE3",
- "focusColor": "#08507C",
+ "focusColor": "#3F3F46",
"focusedBorderColor": "#42A5F5",
"foreground": "#D3DAE3",
- "inactiveBackground": "#37373d",
+ "inactiveBackground": "#474B57",
"inactiveForeground": "#8b9eb5",
"infoForeground": "#8b9eb5",
"selectionBackground": "#8888FF",
@@ -54,7 +60,7 @@
"disabledText": "#D3DAE3",
"endBackground": "#383C4A",
"endBorderColor": "#383C4A",
- "focus": "#08507C",
+ "focus": "#3F3F46",
"focusedBorderColor": "#42A5F5",
"foreground": "#8b9eb5",
"highlight": "#FFFFFF",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#404552",
"Tooltip.background": "#262a33"
},
- "Content.background": "#262b33",
+ "Content": {
+ "background": "#262b33",
+ "selectionBackground": "#8888FF"
+ },
"CheckBox": {
"background": "#2f343f",
"disabledText": "#D3DAE3",
@@ -89,6 +98,14 @@
"selectionBackground": "#8888FF",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#D3DAE3",
+ "AccessEnabled": {
+ "accessDot": "#42A5F5",
+ "dropdownBorder": "#393f4c",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#2f343f",
"foreground": "#D3DAE3",
@@ -104,6 +121,7 @@
},
"background": "#262b33",
"buttonBackground": "#383C4A",
+ "darcula.hoveredArrowButtonForeground": "#42A5F5",
"disabledForeground": "#D3DAE3",
"foreground": "#D3DAE3",
"modifiedItemForeground": "#42A5F5",
@@ -130,7 +148,7 @@
},
"Component": {
"arc": 4,
- "borderColor": "#08507C",
+ "borderColor": "#3F3F46",
"disabledBorderColor": "#383C4A",
"focusColor": "#42A5F5",
"focusedBorderColor": "#42A5F5",
@@ -156,23 +174,25 @@
}
},
"DebuggerTabs": {
- "selectedBackground": "#08507C",
- "underlinedTabBackground": "#08507C"
+ "selectedBackground": "#3F3F46",
+ "underlinedTabBackground": "#3F3F46"
},
"DebuggerPopup": {
- "borderColor": "#08507C"
+ "borderColor": "#3F3F46"
},
"DefaultTabs": {
"background": "#2f343f",
"borderColor": "#2f343f",
"hoverBackground": "#41416A",
"hoverColor": "#262b33",
- "hoverMaskColor": "#08507C",
+ "hoverMaskColor": "#3F3F46",
+ "inactiveColoredTabBackground": "#2f343f",
"inactiveColoredFileBackground": "#383C4A",
- "inactiveUnderlineColor": "#D3DAE3",
+ "inactiveUnderlineColor": "#42A5F5",
"inactiveMaskColor": "#262b33",
"underlineColor": "#42A5F5",
- "underlinedTabBackground": "#41416A"
+ "underlinedTabBackground": "#41416A",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#2f343f",
"DialogWrapper.southPanelBackground": "#2f343f",
@@ -198,21 +218,23 @@
},
"EditorTabs": {
"borderColor": "#393f4c",
- "hoverColor": "#08507C",
- "hoverMaskColor": "#08507C",
+ "hoverBackground": "#3F3F46",
+ "hoverColor": "#3F3F46",
+ "hoverMaskColor": "#3F3F46",
"inactiveMaskColor": "#2f343f",
- "inactiveColoredFileBackground": "#2f343f2",
+ "inactiveColoredFileBackground": "#2f343f",
"inactiveUnderlineColor": "#D3DAE3",
"selectedForeground": "#D3DAE3",
"selectedBackground": "#41416A",
"underlineColor": "#42A5F5",
- "underlinedTabBackground": "#41416A"
+ "underlinedTabBackground": "#41416A",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#2f343f",
"borderColor": "#393f4c",
- "hoverBackground": "#08507C",
- "hoverColor": "#08507C",
+ "hoverBackground": "#3F3F46",
+ "hoverColor": "#3F3F46",
"inactiveUnderlineColor": "#42A5F5",
"underlineColor": "#42A5F5",
"underlinedTabBackground": "#41416A",
@@ -221,7 +243,7 @@
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#37373d",
+ "Yellow": "#474B57",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -246,12 +268,13 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#41416A"
},
+ "GotItTooltip.borderColor": "#262a33",
"Group": {
"disabledSeparatorColor": "#404552",
"separatorColor": "#404552"
},
"GutterTooltip": {
- "infoForeground": "#D3DAE3",
+ "infoForeground": "#8b9eb5",
"lineSeparatorColor": "#2f343f"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#D3DAE3",
"foreground": "#D3DAE3",
"infoForeground": "#8b9eb5",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#D3DAE3"
},
"Link": {
"activeForeground": "#42A5F5",
@@ -301,10 +325,12 @@
"List": {
"background": "#393f4c",
"foreground": "#D3DAE3",
+ "hoverBackground": "#08507C70",
+ "hoverInactiveBackground": "#41416A",
"selectionBackground": "#8888FF50",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#09477170"
+ "selectionInactiveBackground": "#08507C70"
},
"material": {
"background": "#2f343f",
@@ -320,8 +346,8 @@
},
"MemoryIndicator": {
"allocatedBackground": "#393f4c",
- "usedColor": "#08507C",
- "usedBackground": "#08507C"
+ "usedColor": "#3F3F46",
+ "usedBackground": "#3F3F46"
},
"Menu": {
"acceleratorForeground": "#8b9eb5",
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#393f4c",
"borderColor": "#41416A",
- "currentOverloadBackground": "#41416A",
+ "currentOverloadBackground": "#3F3F46",
"currentParameterForeground": "#42A5F5",
"disabledForeground": "#D3DAE3",
"foreground": "#D3DAE3",
@@ -428,21 +454,22 @@
"Plugins": {
"background": "#2f343f",
"disabledForeground": "#D3DAE3",
- "eapTagBackground": "#08507C",
- "lightSelectionBackground": "#8888FF",
- "paidTagBackground": "#08507C",
+ "eapTagBackground": "#3F3F46",
+ "hoverBackground": "#08507C70",
+ "lightSelectionBackground": "#41416A",
+ "paidTagBackground": "#3F3F46",
"selectionBackground": "#8888FF",
"tagForeground": "#42A5F5",
- "tagBackground": "#08507C",
- "trialTagBackground": "#08507C",
+ "tagBackground": "#3F3F46",
+ "trialTagBackground": "#3F3F46",
"Button": {
"installBackground": "#383C4A",
"installBorderColor": "#383C4A",
"installForeground": "#D3DAE3",
- "installFocusedBackground": "#08507C",
+ "installFocusedBackground": "#3F3F46",
"installFillForeground": "#D3DAE3",
"installFillBackground": "#383C4A",
- "updateBackground": "#383C4A",
+ "updateBackground": "#42A5F5",
"updateBorderColor": "#383C4A",
"updateForeground": "#D3DAE3"
},
@@ -496,8 +523,8 @@
"indeterminateEndColor": "#42A5F5",
"indeterminateStartColor": "#42A5F5",
"progressColor": "#42A5F5",
- "selectionBackground": "#08507C",
- "trackColor": "#08507C"
+ "selectionBackground": "#3F3F46",
+ "trackColor": "#3F3F46"
},
"PsiViewer": {
"referenceHighlightColor": "#42A5F5"
@@ -517,6 +544,7 @@
"selectionBackground": "#8888FF",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#404552",
"ScrollBar": {
"background": "#2f343f",
"hoverThumbBorderColor": "#42A5F5",
@@ -538,7 +566,7 @@
"trackColor": "#2f343f30"
}
},
- "thumb": "#08507C",
+ "thumb": "#3F3F46",
"thumbBorderColor": "#42A5F570",
"thumbColor": "#42A5F570",
"trackColor": "#2f343f30",
@@ -571,14 +599,23 @@
"Tab": {
"active.foreground": "#FFFFFF",
"selectedForeground": "#FFFFFF",
- "selectedBackground": "#08507C"
+ "selectedBackground": "#3F3F46"
}
},
"SearchMatch": {
"endBackground": "#42A5F5",
- "startBackground": "#42A5F5"
+ "startBackground": "#42A5F5",
+ "endColor": "#42A5F5",
+ "startColor": "#42A5F5"
},
"SearchField.errorBackground": "#262a33",
+ "SearchOption": {
+ "selectedBackground": "#41416A"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#8b9eb5",
+ "Repeated.File.Foreground": "#D3DAE3"
+ },
"Separator": {
"background": "#393f4c",
"foreground": "#393f4c",
@@ -599,7 +636,7 @@
"thumb": "#42A5F5"
},
"SpeedSearch": {
- "background": "#08507C",
+ "background": "#3F3F46",
"borderColor": "#404552",
"foreground": "#D3DAE3",
"errorForeground": "#D3DAE3"
@@ -616,11 +653,13 @@
},
"SplitPaneDivider.draggingColor": "#393f4c",
"StatusBar": {
- "borderColor": "#2f343f"
+ "borderColor": "#2f343f",
+ "hoverBackground": "#3F3F46",
+ "LightEditBackground": "#41416A"
},
"TabbedPane": {
"background": "#2f343f",
- "contentAreaColor": "#08507C",
+ "contentAreaColor": "#3F3F46",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#404552",
"disabledForeground": "#D3DAE3",
@@ -630,7 +669,7 @@
"fontSizeOffset": 0,
"foreground": "#D3DAE3",
"highlight": "#404552",
- "hoverColor": "#08507C",
+ "hoverColor": "#3F3F46",
"labelShift": 0,
"selectedForeground": "#FFFFFF",
"selectedLabelShift": 0,
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#262b33",
"Table": {
+ "alternativeRowBackground": "#262b33",
"background": "#2f343f",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#D3DAE3",
"dropLineColor": "#42A5F5",
"dropLineShortColor": "#42A5F5",
"focusCellBackground": "#41416A",
@@ -653,6 +694,8 @@
"foreground": "#D3DAE3",
"gridColor": "#2f343f",
"highlightOuter": "#41416A",
+ "hoverBackground": "#08507C70",
+ "hoverInactiveBackground": "#41416A",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#8b9eb5",
"lightSelectionInactiveBackground": "#393f4c",
@@ -704,7 +747,7 @@
},
"TitlePane": {
"background": "#262b33",
- "Button.hoverBackground": "#08507C",
+ "Button.hoverBackground": "#3F3F46",
"inactiveBackground": "#2f343f",
"infoForeground": "#8b9eb5",
"inactiveInfoForeground": "#8b9eb5"
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#2f343f",
"Actions.infoForeground": "#8b9eb5",
- "background": "#2f343f",
- "borderColor": "#08507C",
+ "background": "#262a33",
+ "borderColor": "#404552",
"foreground": "#D3DAE3",
"infoForeground": "#8b9eb5",
"separatorColor": "#404552",
@@ -751,50 +794,93 @@
"background": "#2f343f"
},
"HeaderTab": {
- "hoverBackground": "#08507C",
- "hoverInactiveBackground": "#393f4c",
+ "borderColor": "#3F3F46",
+ "hoverBackground": "#3F3F46",
+ "hoverInactiveBackground": "#3F3F46",
"inactiveUnderlineColor": "#42A5F5",
"selectedBackground": "#262b33",
"selectedInactiveBackground": "#262b33",
"underlineColor": "#42A5F5",
- "underlinedTabBackground": "#08507C",
- "underlinedTabInactiveBackground": "#393f4c"
+ "underlinedTabBackground": "#41416A",
+ "underlinedTabInactiveBackground": "#393f4c",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#D3DAE3"
}
},
"Tree": {
"background": "#262b33",
"foreground": "#8b9eb5",
"hash": "#404552",
+ "hoverBackground": "#08507C70",
+ "hoverInactiveBackground": "#41416A",
"modifiedItemForeground": "#42A5F5",
"rowHeight": 28,
- "selectionBackground": "#09477170",
+ "selectionBackground": "#08507C70",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#09477170",
+ "selectionInactiveBackground": "#08507C70",
"textBackground": "#262b33"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#404552",
- "ColorPicker.background": "#2f343f",
- "ColorPicker.foreground": "#D3DAE3",
- "Component.borderColor": "#404552",
- "Component.background": "#2f343f",
- "Component.foreground": "#D3DAE3",
- "Connector.borderColor": "#404552",
- "Connector.hoverBorderColor": "#08507C",
+ "Canvas.background": "#262b33",
+ "ColorPicker": {
+ "background": "#2f343f",
+ "foreground": "#D3DAE3"
+ },
+ "Component": {
+ "borderColor": "#404552",
+ "background": "#2f343f",
+ "foreground": "#D3DAE3",
+ "hoverBorderColor": "#3F3F46"
+ },
+ "Connector": {
+ "borderColor": "#404552",
+ "hoverBorderColor": "#3F3F46"
+ },
"Canvas.background": "#262b33",
"highStroke.foreground": "#D3DAE3",
"Label.foreground": "#8b9eb5",
- "List.selectionBackground": "#09477170",
- "Panel.borderColor": "#404552",
- "Panel.background": "#2f343f",
+ "List.selectionBackground": "#08507C70",
+ "motion": {
+ "borderColor": "#404552",
+ "Component.foreground": "#D3DAE3",
+ "ConstraintSetText.foreground": "#8b9eb5",
+ "ConstraintSet.background": "#393f4c",
+ "CSPanel.SelectedFocusBackground": "#8888FF",
+ "CSPanel.SelectedBackground": "#08507C70",
+ "cs_FocusText.infoForeground": "#8b9eb5",
+ "CursorTextColor.foreground": "#D3DAE3",
+ "HoverColor.disabledBackground": "#D3DAE3",
+ "motionGraph.background": "#2f343f",
+ "Notification.background": "#262a33",
+ "ourAvg.background": "#393f4c",
+ "ourCS.background": "#393f4c",
+ "ourCS_Border.borderColor": "#404552",
+ "ourCS_TextColor.foreground": "#8b9eb5",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#41416A",
+ "ourCS_SelectedBorder.pressedBorderColor": "#3F3F46",
+ "ourML_BarColor.separatorColor": "#404552",
+ "PrimaryPanel.background": "#262b33",
+ "SecondaryPanel.background": "#2f343f",
+ "SecondaryPanel.header.foreground": "#8b9eb5",
+ "SecondaryPanel.header.background": "#262b33",
+ "timeLine.disabledBorderColor": "#404552"
+ },
+ "Panel": {
+ "borderColor": "#404552",
+ "background": "#2f343f"
+ },
"percent.foreground": "#D3DAE3",
- "Placeholder.background": "#2f343f",
- "Placeholder.borderColor": "#404552",
- "Placeholder.foreground": "#D3DAE3",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#2f343f",
+ "borderColor": "#404552",
+ "foreground": "#D3DAE3",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#2f343f",
"stroke.acceleratorForeground": "#8b9eb5"
},
@@ -809,7 +895,7 @@
"selectedBranchBackground": "#2f343f"
},
"GitCommits": {
- "graphColor": "#08507C"
+ "graphColor": "#3F3F46"
},
"GitLog": {
"localBranchIconColor": "#42A5F5",
@@ -828,11 +914,12 @@
},
"Log": {
"Commit.unmatchedForeground": "#8b9eb5",
- "Commit.currentBranchBackground": "#393f4c"
+ "Commit.currentBranchBackground": "#393f4c",
+ "Commit.hoveredBackground": "#08507C70"
},
"RefLabel": {
"foreground": "#FFFFFF",
- "backgroundBase": "#08507C"
+ "backgroundBase": "#3F3F46"
}
},
"Viewport": {
@@ -840,16 +927,22 @@
"foreground": "#D3DAE3"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#2f343f",
"background": "#2f343f",
"borderColor": "#2f343f",
"captionBackground": "#262b33",
"captionForeground": "#D3DAE3",
+ "Details.background": "#2f343f",
"footerBackground": "#262b33",
"footerForeground": "#D3DAE3",
"headerBackground": "#2f343f",
"headerForeground": "#D3DAE3",
+ "List.background": "#262b33",
"separatorColor": "#404552",
+ "SidePanel.background": "#393f4c",
"Projects": {
+ "actions.background": "#262b33",
+ "actions.selectionBackground": "#3F3F46",
"background": "#393f4c",
"selectionBackground": "#8888FF",
"selectionInactiveBackground": "#393f4c"
@@ -881,8 +974,8 @@
"Actions.Yellow": "#F9EE98",
"Checkbox.Background.Default": "#262b33",
"Checkbox.Background.Default.Dark": "#262b33",
- "Checkbox.Background.Disabled": "#37373d",
- "Checkbox.Background.Disabled.Dark": "#37373d",
+ "Checkbox.Background.Disabled": "#474B57",
+ "Checkbox.Background.Disabled.Dark": "#474B57",
"Checkbox.Border.Default": "#404552",
"Checkbox.Border.Default.Dark": "#404552",
"Checkbox.Border.Disabled": "#D3DAE3",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark.theme.json
index ad9510f4..21780d61 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Arc Dark.theme.json
@@ -3,18 +3,24 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Arc Dark.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/arcdark.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#8b9eb5",
"background": "#2f343f",
"borderColor": "#404552",
- "disabledBackground": "#37373d",
+ "disabledBackground": "#474B57",
"disabledForeground": "#D3DAE3",
"disabledText": "#D3DAE3",
- "focusColor": "#08507C",
+ "focusColor": "#3F3F46",
"focusedBorderColor": "#42A5F5",
"foreground": "#D3DAE3",
- "inactiveBackground": "#37373d",
+ "inactiveBackground": "#474B57",
"inactiveForeground": "#8b9eb5",
"infoForeground": "#8b9eb5",
"selectionBackground": "#8888FF",
@@ -54,7 +60,7 @@
"disabledText": "#D3DAE3",
"endBackground": "#383C4A",
"endBorderColor": "#383C4A",
- "focus": "#08507C",
+ "focus": "#3F3F46",
"focusedBorderColor": "#42A5F5",
"foreground": "#8b9eb5",
"highlight": "#FFFFFF",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#404552",
"Tooltip.background": "#262a33"
},
- "Content.background": "#262b33",
+ "Content": {
+ "background": "#262b33",
+ "selectionBackground": "#8888FF"
+ },
"CheckBox": {
"background": "#2f343f",
"disabledText": "#D3DAE3",
@@ -89,6 +98,14 @@
"selectionBackground": "#8888FF",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#D3DAE3",
+ "AccessEnabled": {
+ "accessDot": "#42A5F5",
+ "dropdownBorder": "#393f4c",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#2f343f",
"foreground": "#D3DAE3",
@@ -104,6 +121,7 @@
},
"background": "#2f343f",
"buttonBackground": "#383C4A",
+ "darcula.hoveredArrowButtonForeground": "#42A5F5",
"disabledForeground": "#D3DAE3",
"foreground": "#D3DAE3",
"modifiedItemForeground": "#42A5F5",
@@ -130,7 +148,7 @@
},
"Component": {
"arc": 4,
- "borderColor": "#08507C",
+ "borderColor": "#3F3F46",
"disabledBorderColor": "#383C4A",
"focusColor": "#42A5F5",
"focusedBorderColor": "#42A5F5",
@@ -156,23 +174,25 @@
}
},
"DebuggerTabs": {
- "selectedBackground": "#08507C",
- "underlinedTabBackground": "#08507C"
+ "selectedBackground": "#3F3F46",
+ "underlinedTabBackground": "#3F3F46"
},
"DebuggerPopup": {
- "borderColor": "#08507C"
+ "borderColor": "#3F3F46"
},
"DefaultTabs": {
"background": "#2f343f",
"borderColor": "#2f343f",
"hoverBackground": "#41416A",
"hoverColor": "#2f343f",
- "hoverMaskColor": "#08507C",
+ "hoverMaskColor": "#3F3F46",
+ "inactiveColoredTabBackground": "#2f343f",
"inactiveColoredFileBackground": "#383C4A",
- "inactiveUnderlineColor": "#D3DAE3",
+ "inactiveUnderlineColor": "#42A5F5",
"inactiveMaskColor": "#2f343f",
"underlineColor": "#42A5F5",
- "underlinedTabBackground": "#41416A"
+ "underlinedTabBackground": "#41416A",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#2f343f",
"DialogWrapper.southPanelBackground": "#2f343f",
@@ -198,21 +218,23 @@
},
"EditorTabs": {
"borderColor": "#393f4c",
- "hoverColor": "#08507C",
- "hoverMaskColor": "#08507C",
+ "hoverBackground": "#3F3F46",
+ "hoverColor": "#3F3F46",
+ "hoverMaskColor": "#3F3F46",
"inactiveMaskColor": "#2f343f",
- "inactiveColoredFileBackground": "#2f343f2",
+ "inactiveColoredFileBackground": "#2f343f",
"inactiveUnderlineColor": "#D3DAE3",
"selectedForeground": "#D3DAE3",
"selectedBackground": "#41416A",
"underlineColor": "#42A5F5",
- "underlinedTabBackground": "#41416A"
+ "underlinedTabBackground": "#41416A",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#2f343f",
"borderColor": "#393f4c",
- "hoverBackground": "#08507C",
- "hoverColor": "#08507C",
+ "hoverBackground": "#3F3F46",
+ "hoverColor": "#3F3F46",
"inactiveUnderlineColor": "#42A5F5",
"underlineColor": "#42A5F5",
"underlinedTabBackground": "#41416A",
@@ -221,7 +243,7 @@
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#37373d",
+ "Yellow": "#474B57",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -246,12 +268,13 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#41416A"
},
+ "GotItTooltip.borderColor": "#262a33",
"Group": {
"disabledSeparatorColor": "#404552",
"separatorColor": "#404552"
},
"GutterTooltip": {
- "infoForeground": "#D3DAE3",
+ "infoForeground": "#8b9eb5",
"lineSeparatorColor": "#2f343f"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#D3DAE3",
"foreground": "#D3DAE3",
"infoForeground": "#8b9eb5",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#D3DAE3"
},
"Link": {
"activeForeground": "#42A5F5",
@@ -301,10 +325,12 @@
"List": {
"background": "#393f4c",
"foreground": "#D3DAE3",
+ "hoverBackground": "#08507C70",
+ "hoverInactiveBackground": "#41416A",
"selectionBackground": "#8888FF50",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#09477170"
+ "selectionInactiveBackground": "#08507C70"
},
"material": {
"background": "#2f343f",
@@ -320,8 +346,8 @@
},
"MemoryIndicator": {
"allocatedBackground": "#393f4c",
- "usedColor": "#08507C",
- "usedBackground": "#08507C"
+ "usedColor": "#3F3F46",
+ "usedBackground": "#3F3F46"
},
"Menu": {
"acceleratorForeground": "#8b9eb5",
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#393f4c",
"borderColor": "#41416A",
- "currentOverloadBackground": "#41416A",
+ "currentOverloadBackground": "#3F3F46",
"currentParameterForeground": "#42A5F5",
"disabledForeground": "#D3DAE3",
"foreground": "#D3DAE3",
@@ -428,21 +454,22 @@
"Plugins": {
"background": "#2f343f",
"disabledForeground": "#D3DAE3",
- "eapTagBackground": "#08507C",
- "lightSelectionBackground": "#8888FF",
- "paidTagBackground": "#08507C",
+ "eapTagBackground": "#3F3F46",
+ "hoverBackground": "#08507C70",
+ "lightSelectionBackground": "#41416A",
+ "paidTagBackground": "#3F3F46",
"selectionBackground": "#8888FF",
"tagForeground": "#42A5F5",
- "tagBackground": "#08507C",
- "trialTagBackground": "#08507C",
+ "tagBackground": "#3F3F46",
+ "trialTagBackground": "#3F3F46",
"Button": {
"installBackground": "#383C4A",
"installBorderColor": "#383C4A",
"installForeground": "#D3DAE3",
- "installFocusedBackground": "#08507C",
+ "installFocusedBackground": "#3F3F46",
"installFillForeground": "#D3DAE3",
"installFillBackground": "#383C4A",
- "updateBackground": "#383C4A",
+ "updateBackground": "#42A5F5",
"updateBorderColor": "#383C4A",
"updateForeground": "#D3DAE3"
},
@@ -496,8 +523,8 @@
"indeterminateEndColor": "#42A5F5",
"indeterminateStartColor": "#42A5F5",
"progressColor": "#42A5F5",
- "selectionBackground": "#08507C",
- "trackColor": "#08507C"
+ "selectionBackground": "#3F3F46",
+ "trackColor": "#3F3F46"
},
"PsiViewer": {
"referenceHighlightColor": "#42A5F5"
@@ -517,6 +544,7 @@
"selectionBackground": "#8888FF",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#404552",
"ScrollBar": {
"background": "#2f343f",
"hoverThumbBorderColor": "#42A5F5",
@@ -538,7 +566,7 @@
"trackColor": "#2f343f30"
}
},
- "thumb": "#08507C",
+ "thumb": "#3F3F46",
"thumbBorderColor": "#42A5F570",
"thumbColor": "#42A5F570",
"trackColor": "#2f343f30",
@@ -571,14 +599,23 @@
"Tab": {
"active.foreground": "#FFFFFF",
"selectedForeground": "#FFFFFF",
- "selectedBackground": "#08507C"
+ "selectedBackground": "#3F3F46"
}
},
"SearchMatch": {
"endBackground": "#42A5F5",
- "startBackground": "#42A5F5"
+ "startBackground": "#42A5F5",
+ "endColor": "#42A5F5",
+ "startColor": "#42A5F5"
},
"SearchField.errorBackground": "#262a33",
+ "SearchOption": {
+ "selectedBackground": "#41416A"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#8b9eb5",
+ "Repeated.File.Foreground": "#D3DAE3"
+ },
"Separator": {
"background": "#393f4c",
"foreground": "#393f4c",
@@ -599,7 +636,7 @@
"thumb": "#42A5F5"
},
"SpeedSearch": {
- "background": "#08507C",
+ "background": "#3F3F46",
"borderColor": "#404552",
"foreground": "#D3DAE3",
"errorForeground": "#D3DAE3"
@@ -616,11 +653,13 @@
},
"SplitPaneDivider.draggingColor": "#393f4c",
"StatusBar": {
- "borderColor": "#2f343f"
+ "borderColor": "#2f343f",
+ "hoverBackground": "#3F3F46",
+ "LightEditBackground": "#41416A"
},
"TabbedPane": {
"background": "#2f343f",
- "contentAreaColor": "#08507C",
+ "contentAreaColor": "#3F3F46",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#404552",
"disabledForeground": "#D3DAE3",
@@ -630,7 +669,7 @@
"fontSizeOffset": 0,
"foreground": "#D3DAE3",
"highlight": "#404552",
- "hoverColor": "#08507C",
+ "hoverColor": "#3F3F46",
"labelShift": 0,
"selectedForeground": "#FFFFFF",
"selectedLabelShift": 0,
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#2f343f",
"Table": {
+ "alternativeRowBackground": "#262b33",
"background": "#2f343f",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#D3DAE3",
"dropLineColor": "#42A5F5",
"dropLineShortColor": "#42A5F5",
"focusCellBackground": "#41416A",
@@ -653,6 +694,8 @@
"foreground": "#D3DAE3",
"gridColor": "#2f343f",
"highlightOuter": "#41416A",
+ "hoverBackground": "#08507C70",
+ "hoverInactiveBackground": "#41416A",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#8b9eb5",
"lightSelectionInactiveBackground": "#393f4c",
@@ -704,7 +747,7 @@
},
"TitlePane": {
"background": "#262b33",
- "Button.hoverBackground": "#08507C",
+ "Button.hoverBackground": "#3F3F46",
"inactiveBackground": "#2f343f",
"infoForeground": "#8b9eb5",
"inactiveInfoForeground": "#8b9eb5"
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#2f343f",
"Actions.infoForeground": "#8b9eb5",
- "background": "#2f343f",
- "borderColor": "#08507C",
+ "background": "#262a33",
+ "borderColor": "#404552",
"foreground": "#D3DAE3",
"infoForeground": "#8b9eb5",
"separatorColor": "#404552",
@@ -751,50 +794,93 @@
"background": "#2f343f"
},
"HeaderTab": {
- "hoverBackground": "#08507C",
- "hoverInactiveBackground": "#393f4c",
+ "borderColor": "#3F3F46",
+ "hoverBackground": "#3F3F46",
+ "hoverInactiveBackground": "#3F3F46",
"inactiveUnderlineColor": "#42A5F5",
"selectedBackground": "#262b33",
"selectedInactiveBackground": "#262b33",
"underlineColor": "#42A5F5",
- "underlinedTabBackground": "#08507C",
- "underlinedTabInactiveBackground": "#393f4c"
+ "underlinedTabBackground": "#41416A",
+ "underlinedTabInactiveBackground": "#393f4c",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#D3DAE3"
}
},
"Tree": {
"background": "#2f343f",
"foreground": "#8b9eb5",
"hash": "#404552",
+ "hoverBackground": "#08507C70",
+ "hoverInactiveBackground": "#41416A",
"modifiedItemForeground": "#42A5F5",
"rowHeight": 28,
- "selectionBackground": "#09477170",
+ "selectionBackground": "#08507C70",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#09477170",
+ "selectionInactiveBackground": "#08507C70",
"textBackground": "#2f343f"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#404552",
- "ColorPicker.background": "#2f343f",
- "ColorPicker.foreground": "#D3DAE3",
- "Component.borderColor": "#404552",
- "Component.background": "#2f343f",
- "Component.foreground": "#D3DAE3",
- "Connector.borderColor": "#404552",
- "Connector.hoverBorderColor": "#08507C",
+ "Canvas.background": "#262b33",
+ "ColorPicker": {
+ "background": "#2f343f",
+ "foreground": "#D3DAE3"
+ },
+ "Component": {
+ "borderColor": "#404552",
+ "background": "#2f343f",
+ "foreground": "#D3DAE3",
+ "hoverBorderColor": "#3F3F46"
+ },
+ "Connector": {
+ "borderColor": "#404552",
+ "hoverBorderColor": "#3F3F46"
+ },
"Canvas.background": "#262b33",
"highStroke.foreground": "#D3DAE3",
"Label.foreground": "#8b9eb5",
- "List.selectionBackground": "#09477170",
- "Panel.borderColor": "#404552",
- "Panel.background": "#2f343f",
+ "List.selectionBackground": "#08507C70",
+ "motion": {
+ "borderColor": "#404552",
+ "Component.foreground": "#D3DAE3",
+ "ConstraintSetText.foreground": "#8b9eb5",
+ "ConstraintSet.background": "#393f4c",
+ "CSPanel.SelectedFocusBackground": "#8888FF",
+ "CSPanel.SelectedBackground": "#08507C70",
+ "cs_FocusText.infoForeground": "#8b9eb5",
+ "CursorTextColor.foreground": "#D3DAE3",
+ "HoverColor.disabledBackground": "#D3DAE3",
+ "motionGraph.background": "#2f343f",
+ "Notification.background": "#262a33",
+ "ourAvg.background": "#393f4c",
+ "ourCS.background": "#393f4c",
+ "ourCS_Border.borderColor": "#404552",
+ "ourCS_TextColor.foreground": "#8b9eb5",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#41416A",
+ "ourCS_SelectedBorder.pressedBorderColor": "#3F3F46",
+ "ourML_BarColor.separatorColor": "#404552",
+ "PrimaryPanel.background": "#262b33",
+ "SecondaryPanel.background": "#2f343f",
+ "SecondaryPanel.header.foreground": "#8b9eb5",
+ "SecondaryPanel.header.background": "#262b33",
+ "timeLine.disabledBorderColor": "#404552"
+ },
+ "Panel": {
+ "borderColor": "#404552",
+ "background": "#2f343f"
+ },
"percent.foreground": "#D3DAE3",
- "Placeholder.background": "#2f343f",
- "Placeholder.borderColor": "#404552",
- "Placeholder.foreground": "#D3DAE3",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#2f343f",
+ "borderColor": "#404552",
+ "foreground": "#D3DAE3",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#2f343f",
"stroke.acceleratorForeground": "#8b9eb5"
},
@@ -809,7 +895,7 @@
"selectedBranchBackground": "#2f343f"
},
"GitCommits": {
- "graphColor": "#08507C"
+ "graphColor": "#3F3F46"
},
"GitLog": {
"localBranchIconColor": "#42A5F5",
@@ -828,11 +914,12 @@
},
"Log": {
"Commit.unmatchedForeground": "#8b9eb5",
- "Commit.currentBranchBackground": "#393f4c"
+ "Commit.currentBranchBackground": "#393f4c",
+ "Commit.hoveredBackground": "#08507C70"
},
"RefLabel": {
"foreground": "#FFFFFF",
- "backgroundBase": "#08507C"
+ "backgroundBase": "#3F3F46"
}
},
"Viewport": {
@@ -840,16 +927,22 @@
"foreground": "#D3DAE3"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#2f343f",
"background": "#2f343f",
"borderColor": "#2f343f",
"captionBackground": "#262b33",
"captionForeground": "#D3DAE3",
+ "Details.background": "#2f343f",
"footerBackground": "#262b33",
"footerForeground": "#D3DAE3",
"headerBackground": "#2f343f",
"headerForeground": "#D3DAE3",
+ "List.background": "#262b33",
"separatorColor": "#404552",
+ "SidePanel.background": "#393f4c",
"Projects": {
+ "actions.background": "#262b33",
+ "actions.selectionBackground": "#3F3F46",
"background": "#393f4c",
"selectionBackground": "#8888FF",
"selectionInactiveBackground": "#393f4c"
@@ -881,8 +974,8 @@
"Actions.Yellow": "#F9EE98",
"Checkbox.Background.Default": "#262b33",
"Checkbox.Background.Default.Dark": "#262b33",
- "Checkbox.Background.Disabled": "#37373d",
- "Checkbox.Background.Disabled.Dark": "#37373d",
+ "Checkbox.Background.Disabled": "#474B57",
+ "Checkbox.Background.Disabled.Dark": "#474B57",
"Checkbox.Border.Default": "#404552",
"Checkbox.Border.Default.Dark": "#404552",
"Checkbox.Border.Disabled": "#D3DAE3",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark Contrast.theme.json
index 97f50d4d..957ed9e9 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark Contrast.theme.json
@@ -3,6 +3,12 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Atom One Dark.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/onedark.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#979FAD",
@@ -17,7 +23,7 @@
"inactiveBackground": "#3c4150",
"inactiveForeground": "#979FAD",
"infoForeground": "#979FAD",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionBackgroundInactive": "#2F333D",
"selectionForeground": "#FFFFFF",
"selectionInactiveBackground": "#2F333D",
@@ -33,7 +39,7 @@
"pressedBorderColor": "#2979ff50"
},
"Autocomplete": {
- "selectionBackground": "#4D515D"
+ "selectionBackground": "#3A3F4B"
},
"Borders.ContrastBorderColor": "#282C34",
"Borders.color": "#282C34",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#282C34",
"Tooltip.background": "#282C34"
},
- "Content.background": "#21252B",
+ "Content": {
+ "background": "#21252B",
+ "selectionBackground": "#3A3F4B"
+ },
"CheckBox": {
"background": "#282C34",
"disabledText": "#6B727D",
@@ -86,9 +95,17 @@
"disabledBackground": "#282C34",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#979FAD",
+ "AccessEnabled": {
+ "accessDot": "#2979ff",
+ "dropdownBorder": "#2F333D",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#282C34",
"foreground": "#979FAD",
@@ -104,6 +121,7 @@
},
"background": "#21252B",
"buttonBackground": "#3A3F4B",
+ "darcula.hoveredArrowButtonForeground": "#2979ff",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
"modifiedItemForeground": "#2979ff",
@@ -123,8 +141,8 @@
"selectedGrayedForeground": "#FFFFFF",
"selectionGrayForeground": "#FFFFFF",
"selectionInactiveInfoForeground": "#979FAD",
- "selectionInactiveBackground": "#4D515D50",
- "selectionBackground": "#4D515D80",
+ "selectionInactiveBackground": "#3A3F4B50",
+ "selectionBackground": "#3A3F4B80",
"selectionForeground": "#FFFFFF",
"selectionInfoForeground": "#FFFFFF"
},
@@ -168,11 +186,13 @@
"hoverBackground": "#383E49",
"hoverColor": "#21252B",
"hoverMaskColor": "#383D48",
+ "inactiveColoredTabBackground": "#282C34",
"inactiveColoredFileBackground": "#3A3F4B",
- "inactiveUnderlineColor": "#6B727D",
+ "inactiveUnderlineColor": "#2979ff",
"inactiveMaskColor": "#21252B",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#383E49"
+ "underlinedTabBackground": "#383E49",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#282C34",
"DialogWrapper.southPanelBackground": "#282C34",
@@ -193,20 +213,22 @@
"foreground": "#979FAD",
"inactiveBackground": "#282C34",
"inactiveForeground": "#6B727D",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF"
},
"EditorTabs": {
"borderColor": "#2F333D",
+ "hoverBackground": "#383D48",
"hoverColor": "#383D48",
"hoverMaskColor": "#383D48",
"inactiveMaskColor": "#282C34",
- "inactiveColoredFileBackground": "#282C342",
+ "inactiveColoredFileBackground": "#282C34",
"inactiveUnderlineColor": "#6B727D",
"selectedForeground": "#979FAD",
"selectedBackground": "#383E49",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#383E49"
+ "underlinedTabBackground": "#383E49",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#282C34",
@@ -246,6 +268,7 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#383E49"
},
+ "GotItTooltip.borderColor": "#282C34",
"Group": {
"disabledSeparatorColor": "#282C34",
"separatorColor": "#282C34"
@@ -288,7 +311,8 @@
"disabledText": "#6B727D",
"foreground": "#979FAD",
"infoForeground": "#979FAD",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#979FAD"
},
"Link": {
"activeForeground": "#2979ff",
@@ -301,10 +325,12 @@
"List": {
"background": "#2F333D",
"foreground": "#979FAD",
- "selectionBackground": "#4D515D50",
+ "hoverBackground": "#3A3F4B70",
+ "hoverInactiveBackground": "#383E49",
+ "selectionBackground": "#3A3F4B50",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#3A3F4B80"
+ "selectionInactiveBackground": "#3A3F4B70"
},
"material": {
"background": "#282C34",
@@ -332,7 +358,7 @@
"disabledBackground": "#2F333D",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF",
"separatorColor": "#282C34"
},
@@ -343,7 +369,7 @@
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
"highlight": "#282C34",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF",
"shadow": "#21252B"
},
@@ -355,7 +381,7 @@
"disabledBackground": "#282C34",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF"
},
"NavBar": {
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#2F333D",
"borderColor": "#383E49",
- "currentOverloadBackground": "#383E49",
+ "currentOverloadBackground": "#383D48",
"currentParameterForeground": "#2979ff",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
@@ -429,9 +455,10 @@
"background": "#282C34",
"disabledForeground": "#6B727D",
"eapTagBackground": "#383D48",
- "lightSelectionBackground": "#4D515D",
+ "hoverBackground": "#3A3F4B70",
+ "lightSelectionBackground": "#383E49",
"paidTagBackground": "#383D48",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"tagForeground": "#2979ff",
"tagBackground": "#383D48",
"trialTagBackground": "#383D48",
@@ -442,7 +469,7 @@
"installFocusedBackground": "#383D48",
"installFillForeground": "#6B727D",
"installFillBackground": "#3A3F4B",
- "updateBackground": "#3A3F4B",
+ "updateBackground": "#2979ff",
"updateBorderColor": "#3A3F4B",
"updateForeground": "#979FAD"
},
@@ -514,9 +541,10 @@
"disabledBackground": "#282C34",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#282C34",
"ScrollBar": {
"background": "#282C34",
"hoverThumbBorderColor": "#2979ff",
@@ -576,9 +604,18 @@
},
"SearchMatch": {
"endBackground": "#2979ff",
- "startBackground": "#2979ff"
+ "startBackground": "#2979ff",
+ "endColor": "#2979ff",
+ "startColor": "#2979ff"
},
"SearchField.errorBackground": "#282C34",
+ "SearchOption": {
+ "selectedBackground": "#383E49"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#979FAD",
+ "Repeated.File.Foreground": "#979FAD"
+ },
"Separator": {
"background": "#2F333D",
"foreground": "#2F333D",
@@ -616,7 +653,9 @@
},
"SplitPaneDivider.draggingColor": "#2F333D",
"StatusBar": {
- "borderColor": "#282C34"
+ "borderColor": "#282C34",
+ "hoverBackground": "#383D48",
+ "LightEditBackground": "#383E49"
},
"TabbedPane": {
"background": "#282C34",
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#21252B",
"Table": {
+ "alternativeRowBackground": "#21252B",
"background": "#282C34",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#6B727D",
"dropLineColor": "#2979ff",
"dropLineShortColor": "#2979ff",
"focusCellBackground": "#383E49",
@@ -653,6 +694,8 @@
"foreground": "#979FAD",
"gridColor": "#282C34",
"highlightOuter": "#383E49",
+ "hoverBackground": "#3A3F4B70",
+ "hoverInactiveBackground": "#383E49",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#979FAD",
"lightSelectionInactiveBackground": "#2F333D",
@@ -730,7 +773,7 @@
"Actions.background": "#282C34",
"Actions.infoForeground": "#979FAD",
"background": "#282C34",
- "borderColor": "#383D48",
+ "borderColor": "#282C34",
"foreground": "#979FAD",
"infoForeground": "#979FAD",
"separatorColor": "#282C34",
@@ -751,50 +794,93 @@
"background": "#282C34"
},
"HeaderTab": {
+ "borderColor": "#383D48",
"hoverBackground": "#383D48",
- "hoverInactiveBackground": "#2F333D",
+ "hoverInactiveBackground": "#383D48",
"inactiveUnderlineColor": "#2979ff",
"selectedBackground": "#21252B",
"selectedInactiveBackground": "#21252B",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#383D48",
- "underlinedTabInactiveBackground": "#2F333D"
+ "underlinedTabBackground": "#383E49",
+ "underlinedTabInactiveBackground": "#2F333D",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#979FAD"
}
},
"Tree": {
"background": "#21252B",
"foreground": "#979FAD",
"hash": "#282C34",
+ "hoverBackground": "#3A3F4B70",
+ "hoverInactiveBackground": "#383E49",
"modifiedItemForeground": "#2979ff",
"rowHeight": 28,
- "selectionBackground": "#3A3F4B80",
+ "selectionBackground": "#3A3F4B70",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#3A3F4B80",
+ "selectionInactiveBackground": "#3A3F4B70",
"textBackground": "#21252B"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#282C34",
- "ColorPicker.background": "#282C34",
- "ColorPicker.foreground": "#979FAD",
- "Component.borderColor": "#282C34",
- "Component.background": "#282C34",
- "Component.foreground": "#979FAD",
- "Connector.borderColor": "#282C34",
- "Connector.hoverBorderColor": "#383D48",
+ "Canvas.background": "#21252B",
+ "ColorPicker": {
+ "background": "#282C34",
+ "foreground": "#979FAD"
+ },
+ "Component": {
+ "borderColor": "#282C34",
+ "background": "#282C34",
+ "foreground": "#979FAD",
+ "hoverBorderColor": "#383D48"
+ },
+ "Connector": {
+ "borderColor": "#282C34",
+ "hoverBorderColor": "#383D48"
+ },
"Canvas.background": "#21252B",
"highStroke.foreground": "#979FAD",
"Label.foreground": "#979FAD",
- "List.selectionBackground": "#3A3F4B80",
- "Panel.borderColor": "#282C34",
- "Panel.background": "#282C34",
+ "List.selectionBackground": "#3A3F4B70",
+ "motion": {
+ "borderColor": "#282C34",
+ "Component.foreground": "#979FAD",
+ "ConstraintSetText.foreground": "#979FAD",
+ "ConstraintSet.background": "#2F333D",
+ "CSPanel.SelectedFocusBackground": "#3A3F4B",
+ "CSPanel.SelectedBackground": "#3A3F4B70",
+ "cs_FocusText.infoForeground": "#979FAD",
+ "CursorTextColor.foreground": "#979FAD",
+ "HoverColor.disabledBackground": "#6B727D",
+ "motionGraph.background": "#282C34",
+ "Notification.background": "#282C34",
+ "ourAvg.background": "#2F333D",
+ "ourCS.background": "#2F333D",
+ "ourCS_Border.borderColor": "#282C34",
+ "ourCS_TextColor.foreground": "#979FAD",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#383E49",
+ "ourCS_SelectedBorder.pressedBorderColor": "#383D48",
+ "ourML_BarColor.separatorColor": "#282C34",
+ "PrimaryPanel.background": "#21252B",
+ "SecondaryPanel.background": "#282C34",
+ "SecondaryPanel.header.foreground": "#979FAD",
+ "SecondaryPanel.header.background": "#21252B",
+ "timeLine.disabledBorderColor": "#282C34"
+ },
+ "Panel": {
+ "borderColor": "#282C34",
+ "background": "#282C34"
+ },
"percent.foreground": "#979FAD",
- "Placeholder.background": "#282C34",
- "Placeholder.borderColor": "#282C34",
- "Placeholder.foreground": "#979FAD",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#282C34",
+ "borderColor": "#282C34",
+ "foreground": "#979FAD",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#282C34",
"stroke.acceleratorForeground": "#979FAD"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#979FAD",
- "Commit.currentBranchBackground": "#2F333D"
+ "Commit.currentBranchBackground": "#2F333D",
+ "Commit.hoveredBackground": "#3A3F4B70"
},
"RefLabel": {
"foreground": "#FFFFFF",
@@ -840,18 +927,24 @@
"foreground": "#979FAD"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#282C34",
"background": "#282C34",
"borderColor": "#282C34",
"captionBackground": "#21252B",
"captionForeground": "#979FAD",
+ "Details.background": "#282C34",
"footerBackground": "#21252B",
"footerForeground": "#979FAD",
"headerBackground": "#282C34",
"headerForeground": "#979FAD",
+ "List.background": "#21252B",
"separatorColor": "#282C34",
+ "SidePanel.background": "#2F333D",
"Projects": {
+ "actions.background": "#21252B",
+ "actions.selectionBackground": "#383D48",
"background": "#2F333D",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionInactiveBackground": "#2F333D"
}
},
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark.theme.json
index e1407de6..be20805f 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Dark.theme.json
@@ -3,6 +3,12 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Atom One Dark.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/onedark.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#979FAD",
@@ -17,7 +23,7 @@
"inactiveBackground": "#3c4150",
"inactiveForeground": "#979FAD",
"infoForeground": "#979FAD",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionBackgroundInactive": "#2F333D",
"selectionForeground": "#FFFFFF",
"selectionInactiveBackground": "#2F333D",
@@ -33,7 +39,7 @@
"pressedBorderColor": "#2979ff50"
},
"Autocomplete": {
- "selectionBackground": "#4D515D"
+ "selectionBackground": "#3A3F4B"
},
"Borders.ContrastBorderColor": "#282C34",
"Borders.color": "#282C34",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#282C34",
"Tooltip.background": "#282C34"
},
- "Content.background": "#21252B",
+ "Content": {
+ "background": "#21252B",
+ "selectionBackground": "#3A3F4B"
+ },
"CheckBox": {
"background": "#282C34",
"disabledText": "#6B727D",
@@ -86,9 +95,17 @@
"disabledBackground": "#282C34",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#979FAD",
+ "AccessEnabled": {
+ "accessDot": "#2979ff",
+ "dropdownBorder": "#2F333D",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#282C34",
"foreground": "#979FAD",
@@ -104,6 +121,7 @@
},
"background": "#282C34",
"buttonBackground": "#3A3F4B",
+ "darcula.hoveredArrowButtonForeground": "#2979ff",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
"modifiedItemForeground": "#2979ff",
@@ -123,8 +141,8 @@
"selectedGrayedForeground": "#FFFFFF",
"selectionGrayForeground": "#FFFFFF",
"selectionInactiveInfoForeground": "#979FAD",
- "selectionInactiveBackground": "#4D515D50",
- "selectionBackground": "#4D515D80",
+ "selectionInactiveBackground": "#3A3F4B50",
+ "selectionBackground": "#3A3F4B80",
"selectionForeground": "#FFFFFF",
"selectionInfoForeground": "#FFFFFF"
},
@@ -168,11 +186,13 @@
"hoverBackground": "#383E49",
"hoverColor": "#282C34",
"hoverMaskColor": "#383D48",
+ "inactiveColoredTabBackground": "#282C34",
"inactiveColoredFileBackground": "#3A3F4B",
- "inactiveUnderlineColor": "#6B727D",
+ "inactiveUnderlineColor": "#2979ff",
"inactiveMaskColor": "#282C34",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#383E49"
+ "underlinedTabBackground": "#383E49",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#282C34",
"DialogWrapper.southPanelBackground": "#282C34",
@@ -193,20 +213,22 @@
"foreground": "#979FAD",
"inactiveBackground": "#282C34",
"inactiveForeground": "#6B727D",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF"
},
"EditorTabs": {
"borderColor": "#2F333D",
+ "hoverBackground": "#383D48",
"hoverColor": "#383D48",
"hoverMaskColor": "#383D48",
"inactiveMaskColor": "#282C34",
- "inactiveColoredFileBackground": "#282C342",
+ "inactiveColoredFileBackground": "#282C34",
"inactiveUnderlineColor": "#6B727D",
"selectedForeground": "#979FAD",
"selectedBackground": "#383E49",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#383E49"
+ "underlinedTabBackground": "#383E49",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#282C34",
@@ -246,6 +268,7 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#383E49"
},
+ "GotItTooltip.borderColor": "#282C34",
"Group": {
"disabledSeparatorColor": "#282C34",
"separatorColor": "#282C34"
@@ -288,7 +311,8 @@
"disabledText": "#6B727D",
"foreground": "#979FAD",
"infoForeground": "#979FAD",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#979FAD"
},
"Link": {
"activeForeground": "#2979ff",
@@ -301,10 +325,12 @@
"List": {
"background": "#2F333D",
"foreground": "#979FAD",
- "selectionBackground": "#4D515D50",
+ "hoverBackground": "#3A3F4B70",
+ "hoverInactiveBackground": "#383E49",
+ "selectionBackground": "#3A3F4B50",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#3A3F4B80"
+ "selectionInactiveBackground": "#3A3F4B70"
},
"material": {
"background": "#282C34",
@@ -332,7 +358,7 @@
"disabledBackground": "#2F333D",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF",
"separatorColor": "#282C34"
},
@@ -343,7 +369,7 @@
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
"highlight": "#282C34",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF",
"shadow": "#282C34"
},
@@ -355,7 +381,7 @@
"disabledBackground": "#282C34",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF"
},
"NavBar": {
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#2F333D",
"borderColor": "#383E49",
- "currentOverloadBackground": "#383E49",
+ "currentOverloadBackground": "#383D48",
"currentParameterForeground": "#2979ff",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
@@ -429,9 +455,10 @@
"background": "#282C34",
"disabledForeground": "#6B727D",
"eapTagBackground": "#383D48",
- "lightSelectionBackground": "#4D515D",
+ "hoverBackground": "#3A3F4B70",
+ "lightSelectionBackground": "#383E49",
"paidTagBackground": "#383D48",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"tagForeground": "#2979ff",
"tagBackground": "#383D48",
"trialTagBackground": "#383D48",
@@ -442,7 +469,7 @@
"installFocusedBackground": "#383D48",
"installFillForeground": "#6B727D",
"installFillBackground": "#3A3F4B",
- "updateBackground": "#3A3F4B",
+ "updateBackground": "#2979ff",
"updateBorderColor": "#3A3F4B",
"updateForeground": "#979FAD"
},
@@ -514,9 +541,10 @@
"disabledBackground": "#282C34",
"disabledForeground": "#6B727D",
"foreground": "#979FAD",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#282C34",
"ScrollBar": {
"background": "#282C34",
"hoverThumbBorderColor": "#2979ff",
@@ -576,9 +604,18 @@
},
"SearchMatch": {
"endBackground": "#2979ff",
- "startBackground": "#2979ff"
+ "startBackground": "#2979ff",
+ "endColor": "#2979ff",
+ "startColor": "#2979ff"
},
"SearchField.errorBackground": "#282C34",
+ "SearchOption": {
+ "selectedBackground": "#383E49"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#979FAD",
+ "Repeated.File.Foreground": "#979FAD"
+ },
"Separator": {
"background": "#2F333D",
"foreground": "#2F333D",
@@ -616,7 +653,9 @@
},
"SplitPaneDivider.draggingColor": "#2F333D",
"StatusBar": {
- "borderColor": "#282C34"
+ "borderColor": "#282C34",
+ "hoverBackground": "#383D48",
+ "LightEditBackground": "#383E49"
},
"TabbedPane": {
"background": "#282C34",
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#282C34",
"Table": {
+ "alternativeRowBackground": "#21252B",
"background": "#282C34",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#6B727D",
"dropLineColor": "#2979ff",
"dropLineShortColor": "#2979ff",
"focusCellBackground": "#383E49",
@@ -653,6 +694,8 @@
"foreground": "#979FAD",
"gridColor": "#282C34",
"highlightOuter": "#383E49",
+ "hoverBackground": "#3A3F4B70",
+ "hoverInactiveBackground": "#383E49",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#979FAD",
"lightSelectionInactiveBackground": "#2F333D",
@@ -730,7 +773,7 @@
"Actions.background": "#282C34",
"Actions.infoForeground": "#979FAD",
"background": "#282C34",
- "borderColor": "#383D48",
+ "borderColor": "#282C34",
"foreground": "#979FAD",
"infoForeground": "#979FAD",
"separatorColor": "#282C34",
@@ -751,50 +794,93 @@
"background": "#282C34"
},
"HeaderTab": {
+ "borderColor": "#383D48",
"hoverBackground": "#383D48",
- "hoverInactiveBackground": "#2F333D",
+ "hoverInactiveBackground": "#383D48",
"inactiveUnderlineColor": "#2979ff",
"selectedBackground": "#21252B",
"selectedInactiveBackground": "#21252B",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#383D48",
- "underlinedTabInactiveBackground": "#2F333D"
+ "underlinedTabBackground": "#383E49",
+ "underlinedTabInactiveBackground": "#2F333D",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#979FAD"
}
},
"Tree": {
"background": "#282C34",
"foreground": "#979FAD",
"hash": "#282C34",
+ "hoverBackground": "#3A3F4B70",
+ "hoverInactiveBackground": "#383E49",
"modifiedItemForeground": "#2979ff",
"rowHeight": 28,
- "selectionBackground": "#3A3F4B80",
+ "selectionBackground": "#3A3F4B70",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#3A3F4B80",
+ "selectionInactiveBackground": "#3A3F4B70",
"textBackground": "#282C34"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#282C34",
- "ColorPicker.background": "#282C34",
- "ColorPicker.foreground": "#979FAD",
- "Component.borderColor": "#282C34",
- "Component.background": "#282C34",
- "Component.foreground": "#979FAD",
- "Connector.borderColor": "#282C34",
- "Connector.hoverBorderColor": "#383D48",
+ "Canvas.background": "#21252B",
+ "ColorPicker": {
+ "background": "#282C34",
+ "foreground": "#979FAD"
+ },
+ "Component": {
+ "borderColor": "#282C34",
+ "background": "#282C34",
+ "foreground": "#979FAD",
+ "hoverBorderColor": "#383D48"
+ },
+ "Connector": {
+ "borderColor": "#282C34",
+ "hoverBorderColor": "#383D48"
+ },
"Canvas.background": "#21252B",
"highStroke.foreground": "#979FAD",
"Label.foreground": "#979FAD",
- "List.selectionBackground": "#3A3F4B80",
- "Panel.borderColor": "#282C34",
- "Panel.background": "#282C34",
+ "List.selectionBackground": "#3A3F4B70",
+ "motion": {
+ "borderColor": "#282C34",
+ "Component.foreground": "#979FAD",
+ "ConstraintSetText.foreground": "#979FAD",
+ "ConstraintSet.background": "#2F333D",
+ "CSPanel.SelectedFocusBackground": "#3A3F4B",
+ "CSPanel.SelectedBackground": "#3A3F4B70",
+ "cs_FocusText.infoForeground": "#979FAD",
+ "CursorTextColor.foreground": "#979FAD",
+ "HoverColor.disabledBackground": "#6B727D",
+ "motionGraph.background": "#282C34",
+ "Notification.background": "#282C34",
+ "ourAvg.background": "#2F333D",
+ "ourCS.background": "#2F333D",
+ "ourCS_Border.borderColor": "#282C34",
+ "ourCS_TextColor.foreground": "#979FAD",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#383E49",
+ "ourCS_SelectedBorder.pressedBorderColor": "#383D48",
+ "ourML_BarColor.separatorColor": "#282C34",
+ "PrimaryPanel.background": "#21252B",
+ "SecondaryPanel.background": "#282C34",
+ "SecondaryPanel.header.foreground": "#979FAD",
+ "SecondaryPanel.header.background": "#21252B",
+ "timeLine.disabledBorderColor": "#282C34"
+ },
+ "Panel": {
+ "borderColor": "#282C34",
+ "background": "#282C34"
+ },
"percent.foreground": "#979FAD",
- "Placeholder.background": "#282C34",
- "Placeholder.borderColor": "#282C34",
- "Placeholder.foreground": "#979FAD",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#282C34",
+ "borderColor": "#282C34",
+ "foreground": "#979FAD",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#282C34",
"stroke.acceleratorForeground": "#979FAD"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#979FAD",
- "Commit.currentBranchBackground": "#2F333D"
+ "Commit.currentBranchBackground": "#2F333D",
+ "Commit.hoveredBackground": "#3A3F4B70"
},
"RefLabel": {
"foreground": "#FFFFFF",
@@ -840,18 +927,24 @@
"foreground": "#979FAD"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#282C34",
"background": "#282C34",
"borderColor": "#282C34",
"captionBackground": "#21252B",
"captionForeground": "#979FAD",
+ "Details.background": "#282C34",
"footerBackground": "#21252B",
"footerForeground": "#979FAD",
"headerBackground": "#282C34",
"headerForeground": "#979FAD",
+ "List.background": "#21252B",
"separatorColor": "#282C34",
+ "SidePanel.background": "#2F333D",
"Projects": {
+ "actions.background": "#21252B",
+ "actions.selectionBackground": "#383D48",
"background": "#2F333D",
- "selectionBackground": "#4D515D",
+ "selectionBackground": "#3A3F4B",
"selectionInactiveBackground": "#2F333D"
}
},
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light Contrast.theme.json
index fac18fc2..264a0a0b 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light Contrast.theme.json
@@ -1,29 +1,35 @@
{
- "name": "Atom One Light Contrast",
+ "name": "Atom One Light",
"dark": false,
"author": "Mallowigi",
"editorScheme": "/colors/Atom One Light.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/onelight.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
- "acceleratorSelectionForeground": "#7f7f7f",
- "background": "#F4F4F4",
+ "acceleratorSelectionForeground": "#9D9D9F",
+ "background": "#FAFAFA",
"borderColor": "#DBDBDC",
- "disabledBackground": "#CACACB",
- "disabledForeground": "#b8b8b9",
- "disabledText": "#b8b8b9",
- "focusColor": "#FFFFFF",
+ "disabledBackground": "#DBDBDC",
+ "disabledForeground": "#424243",
+ "disabledText": "#424243",
+ "focusColor": "#EAEAEB",
"focusedBorderColor": "#2979ff",
"foreground": "#232324",
- "inactiveBackground": "#CACACB",
- "inactiveForeground": "#7f7f7f",
- "infoForeground": "#7f7f7f",
- "selectionBackground": "#FFFFFF",
+ "inactiveBackground": "#DBDBDC",
+ "inactiveForeground": "#9D9D9F",
+ "infoForeground": "#9D9D9F",
+ "selectionBackground": "#DBDBDC",
"selectionBackgroundInactive": "#EAEAEB",
"selectionForeground": "#232324",
"selectionInactiveBackground": "#EAEAEB",
"separatorColor": "#DBDBDC"
},
- "activeCaption": "#F4F4F4",
+ "activeCaption": "#FAFAFA",
"ActionButton": {
"hoverBackground": "#2979ff50",
"hoverBorderColor": "#2979ff50",
@@ -33,13 +39,13 @@
"pressedBorderColor": "#2979ff50"
},
"Autocomplete": {
- "selectionBackground": "#FFFFFF"
+ "selectionBackground": "#DBDBDC"
},
- "Borders.ContrastBorderColor": "#F4F4F4",
+ "Borders.ContrastBorderColor": "#FAFAFA",
"Borders.color": "#DBDBDC",
"Button": {
"arc": 0,
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"default": {
"endBackground": "#DBDBDC",
"endBorderColor": "#DBDBDC",
@@ -51,15 +57,15 @@
"startBorderColor": "#DBDBDC"
},
"disabledBorderColor": "#DBDBDC",
- "disabledText": "#b8b8b9",
+ "disabledText": "#424243",
"endBackground": "#DBDBDC",
"endBorderColor": "#DBDBDC",
- "focus": "#FFFFFF",
+ "focus": "#EAEAEB",
"focusedBorderColor": "#2979ff",
- "foreground": "#7f7f7f",
+ "foreground": "#9D9D9F",
"highlight": "#232324",
"mt.background": "#DBDBDC",
- "mt.foreground": "#7f7f7f",
+ "mt.foreground": "#9D9D9F",
"mt.selectedForeground": "#232324",
"mt.selection.color1": "#DBDBDC",
"mt.selection.color2": "#DBDBDC",
@@ -72,25 +78,36 @@
"Tooltip.borderColor": "#DBDBDC",
"Tooltip.background": "#F2F2F2"
},
- "Content.background": "#eaeaeb",
+ "Content": {
+ "background": "#FFFFFF",
+ "selectionBackground": "#DBDBDC"
+ },
"CheckBox": {
- "background": "#F4F4F4",
- "disabledText": "#b8b8b9",
+ "background": "#FAFAFA",
+ "disabledText": "#424243",
"foreground": "#232324",
"select": "#2979ff"
},
"CheckBoxMenuItem": {
- "acceleratorForeground": "#7f7f7f",
- "acceleratorSelectionForeground": "#7f7f7f",
- "background": "#F4F4F4",
- "disabledBackground": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
+ "acceleratorForeground": "#9D9D9F",
+ "acceleratorSelectionForeground": "#9D9D9F",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "selectionBackground": "#FFFFFF",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#232324",
+ "AccessEnabled": {
+ "accessDot": "#2979ff",
+ "dropdownBorder": "#EAEAEB",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"foreground": "#232324",
"swatchesDefaultRecentColor": "#232324"
},
@@ -98,13 +115,14 @@
"ComboBox": {
"ArrowButton": {
"background": "#DBDBDC",
- "disabledIconColor": "#b8b8b9",
+ "disabledIconColor": "#424243",
"iconColor": "#232324",
- "nonEditableBackground": "#F4F4F4"
+ "nonEditableBackground": "#FAFAFA"
},
- "background": "#eaeaeb",
+ "background": "#FFFFFF",
"buttonBackground": "#DBDBDC",
- "disabledForeground": "#b8b8b9",
+ "darcula.hoveredArrowButtonForeground": "#2979ff",
+ "disabledForeground": "#424243",
"foreground": "#232324",
"modifiedItemForeground": "#2979ff",
"nonEditableBackground": "#EAEAEB",
@@ -116,103 +134,107 @@
"CompletionPopup": {
"background": "#EAEAEB",
"foreground": "#232324",
- "infoForeground": "#7f7f7f",
+ "infoForeground": "#9D9D9F",
"matchForeground": "#2979ff",
"matchSelectionForeground": "#2979ff",
"nonFocusedState": "false",
"selectedGrayedForeground": "#232324",
"selectionGrayForeground": "#232324",
- "selectionInactiveInfoForeground": "#7f7f7f",
- "selectionInactiveBackground": "#FFFFFF50",
- "selectionBackground": "#FFFFFF80",
+ "selectionInactiveInfoForeground": "#9D9D9F",
+ "selectionInactiveBackground": "#DBDBDC50",
+ "selectionBackground": "#DBDBDC80",
"selectionForeground": "#232324",
"selectionInfoForeground": "#232324"
},
"Component": {
"arc": 4,
- "borderColor": "#FFFFFF",
+ "borderColor": "#EAEAEB",
"disabledBorderColor": "#DBDBDC",
"focusColor": "#2979ff",
"focusedBorderColor": "#2979ff",
"hoverIconColor": "#2979ff",
- "infoForeground": "#7f7f7f",
+ "infoForeground": "#9D9D9F",
"iconColor": "#232324"
},
- "control": "#F4F4F4",
- "controlText": "#7f7f7f",
+ "control": "#FAFAFA",
+ "controlText": "#9D9D9F",
"Counter": {
"background": "#2979ff",
"foreground": "#232324"
},
"Debugger": {
"Variables": {
- "collectingDataForeground": "#7f7f7f",
+ "collectingDataForeground": "#9D9D9F",
"changedValueForeground": "#2979ff",
"errorMessageForeground": "#E4564A",
- "evaluatingExpressionForeground": "#7f7f7f",
+ "evaluatingExpressionForeground": "#9D9D9F",
"exceptionForeground": "#C18401",
"modifyingValueForeground": "#2979ff",
"valueForeground": "#2979ff"
}
},
"DebuggerTabs": {
- "selectedBackground": "#FFFFFF",
- "underlinedTabBackground": "#FFFFFF"
+ "selectedBackground": "#EAEAEB",
+ "underlinedTabBackground": "#EAEAEB"
},
"DebuggerPopup": {
- "borderColor": "#FFFFFF"
+ "borderColor": "#EAEAEB"
},
"DefaultTabs": {
- "background": "#F4F4F4",
- "borderColor": "#F4F4F4",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
"hoverBackground": "#DBDBDC",
- "hoverColor": "#eaeaeb",
- "hoverMaskColor": "#FFFFFF",
+ "hoverColor": "#FFFFFF",
+ "hoverMaskColor": "#EAEAEB",
+ "inactiveColoredTabBackground": "#FAFAFA",
"inactiveColoredFileBackground": "#DBDBDC",
- "inactiveUnderlineColor": "#b8b8b9",
- "inactiveMaskColor": "#eaeaeb",
+ "inactiveUnderlineColor": "#2979ff",
+ "inactiveMaskColor": "#FFFFFF",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#DBDBDC"
+ "underlinedTabBackground": "#DBDBDC",
+ "underlinedTabForeground": "#232324"
},
- "Desktop.background": "#F4F4F4",
- "DialogWrapper.southPanelBackground": "#F4F4F4",
- "DialogWrapper.southPanelDivider": "#F4F4F4",
+ "Desktop.background": "#FAFAFA",
+ "DialogWrapper.southPanelBackground": "#FAFAFA",
+ "DialogWrapper.southPanelDivider": "#FAFAFA",
"DragAndDrop": {
- "areaBackground": "#F4F4F4",
- "areaBorderColor": "#F4F4F4",
+ "areaBackground": "#FAFAFA",
+ "areaBorderColor": "#FAFAFA",
"areaForeground": "#232324"
},
"Editor": {
- "background": "#eaeaeb",
+ "background": "#FFFFFF",
"foreground": "#232324",
- "shortcutForeground": "#7f7f7f"
+ "shortcutForeground": "#9D9D9F"
},
"EditorPane": {
- "background": "#eaeaeb",
+ "background": "#FFFFFF",
"caretForeground": "#2979ff",
"foreground": "#232324",
- "inactiveBackground": "#F4F4F4",
- "inactiveForeground": "#b8b8b9",
- "selectionBackground": "#FFFFFF",
+ "inactiveBackground": "#FAFAFA",
+ "inactiveForeground": "#424243",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"EditorTabs": {
"borderColor": "#EAEAEB",
- "hoverColor": "#FFFFFF",
- "hoverMaskColor": "#FFFFFF",
- "inactiveMaskColor": "#F4F4F4",
- "inactiveColoredFileBackground": "#F4F4F42",
- "inactiveUnderlineColor": "#b8b8b9",
+ "hoverBackground": "#EAEAEB",
+ "hoverColor": "#EAEAEB",
+ "hoverMaskColor": "#EAEAEB",
+ "inactiveMaskColor": "#FAFAFA",
+ "inactiveColoredFileBackground": "#FAFAFA",
+ "inactiveUnderlineColor": "#424243",
"selectedForeground": "#232324",
"selectedBackground": "#DBDBDC",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#DBDBDC"
+ "underlinedTabBackground": "#DBDBDC",
+ "underlinedTabForeground": "#232324"
},
"EditorGroupsTabs": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"borderColor": "#EAEAEB",
- "hoverBackground": "#FFFFFF",
- "hoverColor": "#FFFFFF",
+ "hoverBackground": "#EAEAEB",
+ "hoverColor": "#EAEAEB",
"inactiveUnderlineColor": "#2979ff",
"underlineColor": "#2979ff",
"underlinedTabBackground": "#DBDBDC",
@@ -221,7 +243,7 @@
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#CACACB",
+ "Yellow": "#DBDBDC",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -238,136 +260,140 @@
},
"Focus.color": "#DBDBDC",
"FormattedTextField": {
- "background": "#eaeaeb",
+ "background": "#FFFFFF",
"caretForeground": "#2979ff",
"foreground": "#232324",
"inactiveBackground": "#DBDBDC",
- "inactiveForeground": "#b8b8b9",
+ "inactiveForeground": "#424243",
"selectionForeground": "#232324",
"selectionBackground": "#DBDBDC"
},
+ "GotItTooltip.borderColor": "#F2F2F2",
"Group": {
"disabledSeparatorColor": "#DBDBDC",
"separatorColor": "#DBDBDC"
},
"GutterTooltip": {
- "infoForeground": "#232324",
- "lineSeparatorColor": "#F4F4F4"
+ "infoForeground": "#9D9D9F",
+ "lineSeparatorColor": "#FAFAFA"
},
"HeaderColor": {
- "active": "#F4F4F4",
- "inactive": "#eaeaeb"
+ "active": "#FAFAFA",
+ "inactive": "#FFFFFF"
},
"HelpTooltip": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"borderColor": "#DBDBDC",
"foreground": "#232324",
- "infoForeground": "#7f7f7f",
- "shortcutForeground": "#7f7f7f"
+ "infoForeground": "#9D9D9F",
+ "shortcutForeground": "#9D9D9F"
},
"Hyperlink.linkColor": "#2979ff",
"inactiveCaption": "#EAEAEB",
- "inactiveCaptionBorder": "#F4F4F4",
- "inactiveCaptionText": "#7f7f7f",
- "info": "#7f7f7f",
- "infoText": "#7f7f7f",
+ "inactiveCaptionBorder": "#FAFAFA",
+ "inactiveCaptionText": "#9D9D9F",
+ "info": "#9D9D9F",
+ "infoText": "#9D9D9F",
"IdeStatusBar.border": "4,4,4,4",
"InformationHint.borderColor": "#DBDBDC",
"InplaceRefactoringPopup": {
- "borderColor": "#F4F4F4"
+ "borderColor": "#FAFAFA"
},
"InternalFrame": {
"activeTitleForeground": "#232324",
- "background": "#F4F4F4",
- "inactiveTitleForeground": "#7f7f7f"
+ "background": "#FAFAFA",
+ "inactiveTitleForeground": "#9D9D9F"
},
"Label": {
- "background": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
- "disabledShadow": "#F4F4F4",
- "disabledText": "#b8b8b9",
+ "background": "#FAFAFA",
+ "disabledForeground": "#424243",
+ "disabledShadow": "#FAFAFA",
+ "disabledText": "#424243",
"foreground": "#232324",
- "infoForeground": "#7f7f7f",
- "selectedForeground": "#232324"
+ "infoForeground": "#9D9D9F",
+ "selectedForeground": "#232324",
+ "selectedDisabledForeground": "#232324"
},
"Link": {
"activeForeground": "#2979ff",
"hoverForeground": "#2979ff",
"pressedForeground": "#2979ff",
- "secondaryForeground": "#7f7f7f",
+ "secondaryForeground": "#9D9D9F",
"visitedForeground": "#2979ff"
},
"link.foreground": "#2979ff",
"List": {
"background": "#EAEAEB",
"foreground": "#232324",
- "selectionBackground": "#FFFFFF50",
+ "hoverBackground": "#DBDBDC80",
+ "hoverInactiveBackground": "#DBDBDC",
+ "selectionBackground": "#DBDBDC50",
"selectionForeground": "#232324",
"selectionInactiveForeground": "#232324",
"selectionInactiveBackground": "#DBDBDC80"
},
"material": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"branchColor": "#232324",
- "contrast": "#eaeaeb",
+ "contrast": "#FFFFFF",
"foreground": "#232324",
"mergeCommits": "#DBDBDC",
- "primaryColor": "#7f7f7f",
+ "primaryColor": "#9D9D9F",
"selectionForeground": "#232324",
- "tab.backgroundColor": "#F4F4F4",
+ "tab.backgroundColor": "#FAFAFA",
"tab.borderColor": "#2979ff",
- "tagColor": "#7f7f7f"
+ "tagColor": "#9D9D9F"
},
"MemoryIndicator": {
"allocatedBackground": "#EAEAEB",
- "usedColor": "#FFFFFF",
- "usedBackground": "#FFFFFF"
+ "usedColor": "#EAEAEB",
+ "usedBackground": "#EAEAEB"
},
"Menu": {
- "acceleratorForeground": "#7f7f7f",
+ "acceleratorForeground": "#9D9D9F",
"acceleratorSelectionForeground": "#232324",
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"border": "4,2,4,2",
"borderColor": "#EAEAEB",
"disabledBackground": "#EAEAEB",
- "disabledForeground": "#b8b8b9",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "selectionBackground": "#FFFFFF",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324",
"separatorColor": "#DBDBDC"
},
"MenuBar": {
- "background": "#eaeaeb",
- "borderColor": "#F4F4F4",
- "disabledBackground": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
+ "background": "#FFFFFF",
+ "borderColor": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "highlight": "#F4F4F4",
- "selectionBackground": "#FFFFFF",
+ "highlight": "#FAFAFA",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324",
- "shadow": "#eaeaeb"
+ "shadow": "#FFFFFF"
},
"MenuItem": {
- "acceleratorForeground": "#7f7f7f",
+ "acceleratorForeground": "#9D9D9F",
"acceleratorSelectionForeground": "#232324",
"border": "4,2,4,2",
- "background": "#F4F4F4",
- "disabledBackground": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "selectionBackground": "#FFFFFF",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"NavBar": {
"arrowColor": "#232324",
- "borderColor": "#F4F4F4"
+ "borderColor": "#FAFAFA"
},
"NewClass": {
"Panel": {
- "background": "#F4F4F4"
+ "background": "#FAFAFA"
},
"SearchField": {
- "background": "#eaeaeb"
+ "background": "#FFFFFF"
}
},
"NewPSD.warning": "#2979ff",
@@ -393,61 +419,62 @@
},
"OnePixelDivider.background": "#DBDBDC",
"OptionPane": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"foreground": "#232324",
"messageForeground": "#232324"
},
"Outline": {
"color": "#DBDBDC",
"focusedColor": "#2979ff",
- "disabledColor": "#b8b8b9"
+ "disabledColor": "#424243"
},
"Panel": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"foreground": "#232324"
},
"ParameterInfo": {
"background": "#EAEAEB",
"borderColor": "#DBDBDC",
- "currentOverloadBackground": "#DBDBDC",
+ "currentOverloadBackground": "#EAEAEB",
"currentParameterForeground": "#2979ff",
- "disabledForeground": "#b8b8b9",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "infoForeground": "#7f7f7f",
+ "infoForeground": "#9D9D9F",
"lineSeparatorColor": "#DBDBDC"
},
"PasswordField": {
- "background": "#eaeaeb",
+ "background": "#FFFFFF",
"capsLockIconColor": "#2979ff",
"caretForeground": "#2979ff",
"foreground": "#232324",
- "inactiveForeground": "#b8b8b9",
+ "inactiveForeground": "#424243",
"selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"Plugins": {
- "background": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
- "eapTagBackground": "#FFFFFF",
- "lightSelectionBackground": "#FFFFFF",
- "paidTagBackground": "#FFFFFF",
- "selectionBackground": "#FFFFFF",
+ "background": "#FAFAFA",
+ "disabledForeground": "#424243",
+ "eapTagBackground": "#EAEAEB",
+ "hoverBackground": "#DBDBDC80",
+ "lightSelectionBackground": "#DBDBDC",
+ "paidTagBackground": "#EAEAEB",
+ "selectionBackground": "#DBDBDC",
"tagForeground": "#2979ff",
- "tagBackground": "#FFFFFF",
- "trialTagBackground": "#FFFFFF",
+ "tagBackground": "#EAEAEB",
+ "trialTagBackground": "#EAEAEB",
"Button": {
"installBackground": "#DBDBDC",
"installBorderColor": "#DBDBDC",
"installForeground": "#232324",
- "installFocusedBackground": "#FFFFFF",
- "installFillForeground": "#b8b8b9",
+ "installFocusedBackground": "#EAEAEB",
+ "installFillForeground": "#424243",
"installFillBackground": "#DBDBDC",
- "updateBackground": "#DBDBDC",
+ "updateBackground": "#2979ff",
"updateBorderColor": "#DBDBDC",
"updateForeground": "#232324"
},
"SearchField": {
- "background": "#eaeaeb",
+ "background": "#FFFFFF",
"borderColor": "#DBDBDC"
},
"SectionHeader": {
@@ -462,133 +489,143 @@
},
"Popup": {
"Advertiser": {
- "background": "#F4F4F4",
- "borderColor": "#F4F4F4",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
"foreground": "#2979ff"
},
- "borderColor": "#eaeaeb",
- "inactiveBorderColor": "#F4F4F4",
+ "borderColor": "#FFFFFF",
+ "inactiveBorderColor": "#FAFAFA",
"innerBorderColor": "#EAEAEB",
"Header": {
- "activeBackground": "#F4F4F4",
- "inactiveBackground": "#eaeaeb"
+ "activeBackground": "#FAFAFA",
+ "inactiveBackground": "#FFFFFF"
},
"paintBorder": true,
"separatorForeground": "#232324",
"separatorColor": "#EAEAEB",
"Toolbar": {
- "Floating.background": "#eaeaeb",
- "background": "#eaeaeb",
- "borderColor": "#eaeaeb"
+ "Floating.background": "#FFFFFF",
+ "background": "#FFFFFF",
+ "borderColor": "#FFFFFF"
}
},
"PopupMenu": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"border": "2,0,2,0",
"foreground": "#232324",
- "translucentBackground": "#F4F4F4"
+ "translucentBackground": "#FAFAFA"
},
"PopupMenuSeparator.height": 10,
"PopupMenuSeparator.stripeIndent": 5,
"ProgressBar": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"foreground": "#2979ff",
"indeterminateEndColor": "#2979ff",
"indeterminateStartColor": "#2979ff",
"progressColor": "#2979ff",
- "selectionBackground": "#FFFFFF",
- "trackColor": "#FFFFFF"
+ "selectionBackground": "#EAEAEB",
+ "trackColor": "#EAEAEB"
},
"PsiViewer": {
"referenceHighlightColor": "#2979ff"
},
"RadioButton": {
- "background": "#F4F4F4",
- "disabledText": "#b8b8b9",
+ "background": "#FAFAFA",
+ "disabledText": "#424243",
"foreground": "#232324"
},
"RadioButtonMenuItem": {
- "acceleratorForeground": "#7f7f7f",
- "acceleratorSelectionForeground": "#7f7f7f",
- "background": "#F4F4F4",
- "disabledBackground": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
+ "acceleratorForeground": "#9D9D9F",
+ "acceleratorSelectionForeground": "#9D9D9F",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "selectionBackground": "#FFFFFF",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
+ "ScreenView.borderColor": "#DBDBDC",
"ScrollBar": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"hoverThumbBorderColor": "#2979ff",
"hoverThumbColor": "#2979ff",
- "hoverTrackColor": "#F4F4F430",
+ "hoverTrackColor": "#FAFAFA30",
"Mac": {
"hoverThumbBorderColor": "#2979ff",
"hoverThumbColor": "#2979ff",
- "hoverTrackColor": "#F4F4F430",
+ "hoverTrackColor": "#FAFAFA30",
"thumbBorderColor": "#2979ff70",
"thumbColor": "#2979ff70",
- "trackColor": "#F4F4F430",
+ "trackColor": "#FAFAFA30",
"Transparent": {
"hoverThumbBorderColor": "#2979ff",
"hoverThumbColor": "#2979ff",
- "hoverTrackColor": "#F4F4F430",
+ "hoverTrackColor": "#FAFAFA30",
"thumbBorderColor": "#2979ff70",
"thumbColor": "#2979ff70",
- "trackColor": "#F4F4F430"
+ "trackColor": "#FAFAFA30"
}
},
- "thumb": "#FFFFFF",
+ "thumb": "#EAEAEB",
"thumbBorderColor": "#2979ff70",
"thumbColor": "#2979ff70",
- "trackColor": "#F4F4F430",
+ "trackColor": "#FAFAFA30",
"Transparent": {
"hoverThumbBorderColor": "#2979ff",
"hoverThumbColor": "#2979ff",
- "hoverTrackColor": "#F4F4F430",
+ "hoverTrackColor": "#FAFAFA30",
"thumbBorderColor": "#2979ff70",
"thumbColor": "#2979ff70",
- "trackColor": "#F4F4F430"
+ "trackColor": "#FAFAFA30"
}
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#eaeaeb",
- "foreground": "#7f7f7f"
+ "background": "#FFFFFF",
+ "foreground": "#9D9D9F"
},
"Header": {
- "background": "#F4F4F4"
+ "background": "#FAFAFA"
},
"List": {
- "separatorForeground": "#7f7f7f",
+ "separatorForeground": "#9D9D9F",
"separatorColor": "#DBDBDC"
},
"SearchField": {
- "background": "#F4F4F4",
- "borderColor": "#eaeaeb",
- "infoForeground": "#7f7f7f"
+ "background": "#FAFAFA",
+ "borderColor": "#FFFFFF",
+ "infoForeground": "#9D9D9F"
},
"Tab": {
"active.foreground": "#232324",
"selectedForeground": "#232324",
- "selectedBackground": "#FFFFFF"
+ "selectedBackground": "#EAEAEB"
}
},
"SearchMatch": {
"endBackground": "#2979ff",
- "startBackground": "#2979ff"
+ "startBackground": "#2979ff",
+ "endColor": "#2979ff",
+ "startColor": "#2979ff"
},
"SearchField.errorBackground": "#F2F2F2",
+ "SearchOption": {
+ "selectedBackground": "#DBDBDC"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#9D9D9F",
+ "Repeated.File.Foreground": "#232324"
+ },
"Separator": {
"background": "#EAEAEB",
"foreground": "#EAEAEB",
"separatorColor": "#EAEAEB"
},
"SidePanel": {
- "background": "#eaeaeb"
+ "background": "#FFFFFF"
},
"Slider": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"buttonBorderColor": "#2979ff",
"buttonColor": "#2979ff",
"foreground": "#232324",
@@ -599,38 +636,40 @@
"thumb": "#2979ff"
},
"SpeedSearch": {
- "background": "#FFFFFF",
+ "background": "#EAEAEB",
"borderColor": "#DBDBDC",
"foreground": "#232324",
"errorForeground": "#232324"
},
"Spinner": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"border": "3,3,3,3",
"foreground": "#232324",
"selectionForeground": "#232324"
},
"SplitPane": {
- "background": "#F4F4F4",
- "highlight": "#eaeaeb"
+ "background": "#FAFAFA",
+ "highlight": "#FFFFFF"
},
"SplitPaneDivider.draggingColor": "#EAEAEB",
"StatusBar": {
- "borderColor": "#F4F4F4"
+ "borderColor": "#FAFAFA",
+ "hoverBackground": "#EAEAEB",
+ "LightEditBackground": "#DBDBDC"
},
"TabbedPane": {
- "background": "#F4F4F4",
- "contentAreaColor": "#FFFFFF",
+ "background": "#FAFAFA",
+ "contentAreaColor": "#EAEAEB",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#DBDBDC",
- "disabledForeground": "#b8b8b9",
- "disabledUnderlineColor": "#b8b8b9",
+ "disabledForeground": "#424243",
+ "disabledUnderlineColor": "#424243",
"focus": "#DBDBDC",
"focusColor": "#DBDBDC",
"fontSizeOffset": 0,
"foreground": "#232324",
"highlight": "#DBDBDC",
- "hoverColor": "#FFFFFF",
+ "hoverColor": "#EAEAEB",
"labelShift": 0,
"selectedForeground": "#232324",
"selectedLabelShift": 0,
@@ -641,162 +680,209 @@
"tabSelectionHeight": 2,
"underlineColor": "#2979ff"
},
- "TabbedPane.mt.tab.background": "#eaeaeb",
+ "TabbedPane.mt.tab.background": "#FFFFFF",
"Table": {
- "background": "#F4F4F4",
+ "alternativeRowBackground": "#FFFFFF",
+ "background": "#FAFAFA",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#424243",
"dropLineColor": "#2979ff",
"dropLineShortColor": "#2979ff",
"focusCellBackground": "#DBDBDC",
"focusCellForeground": "#232324",
"foreground": "#232324",
- "gridColor": "#F4F4F4",
+ "gridColor": "#FAFAFA",
"highlightOuter": "#DBDBDC",
+ "hoverBackground": "#DBDBDC80",
+ "hoverInactiveBackground": "#DBDBDC",
"lightSelectionForeground": "#232324",
- "lightSelectionInactiveForeground": "#7f7f7f",
+ "lightSelectionInactiveForeground": "#9D9D9F",
"lightSelectionInactiveBackground": "#EAEAEB",
"selectionBackground": "#DBDBDC",
"selectionForeground": "#232324",
"selectionInactiveBackground": "#DBDBDC",
"selectionInactiveForeground": "#232324",
"sortIconColor": "#232324",
- "stripeColor": "#eaeaeb"
+ "stripeColor": "#FFFFFF"
},
"TableHeader": {
- "background": "#F4F4F4",
- "borderColor": "#F4F4F4",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
"bottomSeparatorColor": "#EAEAEB",
"cellBorder": "4,0,4,0",
- "disabledForeground": "#b8b8b9",
+ "disabledForeground": "#424243",
"foreground": "#232324",
"focusCellBackground": "#DBDBDC",
"focusCellForeground": "#232324",
"height": 25,
"separatorColor": "#EAEAEB"
},
- "text": "#7f7f7f",
- "textInactiveText": "#7f7f7f",
- "textText": "#7f7f7f",
+ "text": "#9D9D9F",
+ "textInactiveText": "#9D9D9F",
+ "textText": "#9D9D9F",
"TextArea": {
- "background": "#eaeaeb",
+ "background": "#FFFFFF",
"caretForeground": "#2979ff",
"foreground": "#232324",
- "inactiveForeground": "#b8b8b9",
+ "inactiveForeground": "#424243",
"selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"TextField": {
- "background": "#eaeaeb",
+ "background": "#FFFFFF",
"caretForeground": "#2979ff",
"foreground": "#232324",
- "inactiveForeground": "#b8b8b9",
+ "inactiveForeground": "#424243",
"selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"TextPane": {
- "background": "#eaeaeb",
+ "background": "#FFFFFF",
"caretForeground": "#2979ff",
"foreground": "#232324",
- "inactiveForeground": "#b8b8b9",
+ "inactiveForeground": "#424243",
"selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"TitlePane": {
- "background": "#eaeaeb",
- "Button.hoverBackground": "#FFFFFF",
- "inactiveBackground": "#F4F4F4",
- "infoForeground": "#7f7f7f",
- "inactiveInfoForeground": "#7f7f7f"
+ "background": "#FFFFFF",
+ "Button.hoverBackground": "#EAEAEB",
+ "inactiveBackground": "#FAFAFA",
+ "infoForeground": "#9D9D9F",
+ "inactiveInfoForeground": "#9D9D9F"
},
"TitledBorder.titleColor": "#232324",
"ToggleButton": {
"borderColor": "#DBDBDC",
"buttonColor": "#232324",
- "disabledText": "#b8b8b9",
+ "disabledText": "#424243",
"foreground": "#232324",
- "offForeground": "#F4F4F4",
- "offBackground": "#F4F4F4",
+ "offForeground": "#FAFAFA",
+ "offBackground": "#FAFAFA",
"onBackground": "#2979ff",
"onForeground": "#2979ff"
},
"ToolBar": {
- "background": "#eaeaeb",
- "borderHandleColor": "#7f7f7f",
- "floatingForeground": "#7f7f7f",
+ "background": "#FFFFFF",
+ "borderHandleColor": "#9D9D9F",
+ "floatingForeground": "#9D9D9F",
"foreground": "#232324"
},
"ToolTip": {
- "Actions.background": "#F4F4F4",
- "Actions.infoForeground": "#7f7f7f",
- "background": "#F4F4F4",
- "borderColor": "#FFFFFF",
+ "Actions.background": "#FAFAFA",
+ "Actions.infoForeground": "#9D9D9F",
+ "background": "#F2F2F2",
+ "borderColor": "#DBDBDC",
"foreground": "#232324",
- "infoForeground": "#7f7f7f",
+ "infoForeground": "#9D9D9F",
"separatorColor": "#DBDBDC",
- "shortcutForeground": "#7f7f7f"
+ "shortcutForeground": "#9D9D9F"
},
"ToolWindow": {
"Button": {
"hoverBackground": "#DBDBDC",
"selectedForeground": "#232324",
- "selectedBackground": "#eaeaeb"
+ "selectedBackground": "#FFFFFF"
},
"Header": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"borderColor": "#EAEAEB",
- "inactiveBackground": "#F4F4F4"
+ "inactiveBackground": "#FAFAFA"
},
"HeaderCloseButton": {
- "background": "#F4F4F4"
+ "background": "#FAFAFA"
},
"HeaderTab": {
- "hoverBackground": "#FFFFFF",
+ "borderColor": "#EAEAEB",
+ "hoverBackground": "#EAEAEB",
"hoverInactiveBackground": "#EAEAEB",
"inactiveUnderlineColor": "#2979ff",
- "selectedBackground": "#eaeaeb",
- "selectedInactiveBackground": "#eaeaeb",
+ "selectedBackground": "#FFFFFF",
+ "selectedInactiveBackground": "#FFFFFF",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#FFFFFF",
- "underlinedTabInactiveBackground": "#EAEAEB"
+ "underlinedTabBackground": "#DBDBDC",
+ "underlinedTabInactiveBackground": "#EAEAEB",
+ "underlinedTabForeground": "#232324",
+ "underlinedTabInactiveForeground": "#232324"
}
},
"Tree": {
- "background": "#eaeaeb",
- "foreground": "#7f7f7f",
+ "background": "#FFFFFF",
+ "foreground": "#9D9D9F",
"hash": "#DBDBDC",
+ "hoverBackground": "#DBDBDC80",
+ "hoverInactiveBackground": "#DBDBDC",
"modifiedItemForeground": "#2979ff",
"rowHeight": 28,
"selectionBackground": "#DBDBDC80",
"selectionForeground": "#232324",
"selectionInactiveForeground": "#232324",
"selectionInactiveBackground": "#DBDBDC80",
- "textBackground": "#eaeaeb"
+ "textBackground": "#FFFFFF"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#DBDBDC",
- "ColorPicker.background": "#F4F4F4",
- "ColorPicker.foreground": "#232324",
- "Component.borderColor": "#DBDBDC",
- "Component.background": "#F4F4F4",
- "Component.foreground": "#232324",
- "Connector.borderColor": "#DBDBDC",
- "Connector.hoverBorderColor": "#FFFFFF",
- "Canvas.background": "#eaeaeb",
+ "Canvas.background": "#FFFFFF",
+ "ColorPicker": {
+ "background": "#FAFAFA",
+ "foreground": "#232324"
+ },
+ "Component": {
+ "borderColor": "#DBDBDC",
+ "background": "#FAFAFA",
+ "foreground": "#232324",
+ "hoverBorderColor": "#EAEAEB"
+ },
+ "Connector": {
+ "borderColor": "#DBDBDC",
+ "hoverBorderColor": "#EAEAEB"
+ },
+ "Canvas.background": "#FFFFFF",
"highStroke.foreground": "#232324",
- "Label.foreground": "#7f7f7f",
+ "Label.foreground": "#9D9D9F",
"List.selectionBackground": "#DBDBDC80",
- "Panel.borderColor": "#DBDBDC",
- "Panel.background": "#F4F4F4",
+ "motion": {
+ "borderColor": "#DBDBDC",
+ "Component.foreground": "#232324",
+ "ConstraintSetText.foreground": "#9D9D9F",
+ "ConstraintSet.background": "#EAEAEB",
+ "CSPanel.SelectedFocusBackground": "#DBDBDC",
+ "CSPanel.SelectedBackground": "#DBDBDC80",
+ "cs_FocusText.infoForeground": "#9D9D9F",
+ "CursorTextColor.foreground": "#232324",
+ "HoverColor.disabledBackground": "#424243",
+ "motionGraph.background": "#FAFAFA",
+ "Notification.background": "#F2F2F2",
+ "ourAvg.background": "#EAEAEB",
+ "ourCS.background": "#EAEAEB",
+ "ourCS_Border.borderColor": "#DBDBDC",
+ "ourCS_TextColor.foreground": "#9D9D9F",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#232324",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#DBDBDC",
+ "ourCS_SelectedBorder.pressedBorderColor": "#EAEAEB",
+ "ourML_BarColor.separatorColor": "#DBDBDC",
+ "PrimaryPanel.background": "#FFFFFF",
+ "SecondaryPanel.background": "#FAFAFA",
+ "SecondaryPanel.header.foreground": "#9D9D9F",
+ "SecondaryPanel.header.background": "#FFFFFF",
+ "timeLine.disabledBorderColor": "#DBDBDC"
+ },
+ "Panel": {
+ "borderColor": "#DBDBDC",
+ "background": "#FAFAFA"
+ },
"percent.foreground": "#232324",
- "Placeholder.background": "#F4F4F4",
- "Placeholder.borderColor": "#DBDBDC",
- "Placeholder.foreground": "#232324",
- "Placeholder.selectedForeground": "#232324",
- "Preview.background": "#F4F4F4",
- "stroke.acceleratorForeground": "#7f7f7f"
+ "Placeholder": {
+ "background": "#FAFAFA",
+ "borderColor": "#DBDBDC",
+ "foreground": "#232324",
+ "selectedForeground": "#232324"
+ },
+ "Preview.background": "#FAFAFA",
+ "stroke.acceleratorForeground": "#9D9D9F"
},
"ValidationTooltip": {
"errorBackground": "#F2F2F2",
@@ -806,95 +892,102 @@
},
"VersionControl": {
"FileHistory.Commit": {
- "selectedBranchBackground": "#F4F4F4"
+ "selectedBranchBackground": "#FAFAFA"
},
"GitCommits": {
- "graphColor": "#FFFFFF"
+ "graphColor": "#EAEAEB"
},
"GitLog": {
"localBranchIconColor": "#2979ff",
- "otherIconColor": "#7f7f7f",
+ "otherIconColor": "#9D9D9F",
"remoteBranchIconColor": "#232324",
- "tagIconColor": "#7f7f7f"
+ "tagIconColor": "#9D9D9F"
},
"HgLog": {
"branchIconColor": "#2979ff",
"bookmarkIconColor": "#232324",
- "closedBranchIconColor": "#b8b8b9",
- "localTagIconColor": "#7f7f7f",
- "mqTagIconColor": "#7f7f7f",
- "tagIconColor": "#7f7f7f",
- "tipIconColor": "#7f7f7f"
+ "closedBranchIconColor": "#424243",
+ "localTagIconColor": "#9D9D9F",
+ "mqTagIconColor": "#9D9D9F",
+ "tagIconColor": "#9D9D9F",
+ "tipIconColor": "#9D9D9F"
},
"Log": {
- "Commit.unmatchedForeground": "#7f7f7f",
- "Commit.currentBranchBackground": "#EAEAEB"
+ "Commit.unmatchedForeground": "#9D9D9F",
+ "Commit.currentBranchBackground": "#EAEAEB",
+ "Commit.hoveredBackground": "#DBDBDC80"
},
"RefLabel": {
"foreground": "#232324",
- "backgroundBase": "#FFFFFF"
+ "backgroundBase": "#EAEAEB"
}
},
"Viewport": {
- "background": "#eaeaeb",
+ "background": "#FFFFFF",
"foreground": "#232324"
},
"WelcomeScreen": {
- "background": "#F4F4F4",
- "borderColor": "#F4F4F4",
- "captionBackground": "#eaeaeb",
+ "AssociatedComponent.background": "#FAFAFA",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "captionBackground": "#FFFFFF",
"captionForeground": "#232324",
- "footerBackground": "#eaeaeb",
+ "Details.background": "#FAFAFA",
+ "footerBackground": "#FFFFFF",
"footerForeground": "#232324",
- "headerBackground": "#F4F4F4",
+ "headerBackground": "#FAFAFA",
"headerForeground": "#232324",
+ "List.background": "#FFFFFF",
"separatorColor": "#DBDBDC",
+ "SidePanel.background": "#EAEAEB",
"Projects": {
+ "actions.background": "#FFFFFF",
+ "actions.selectionBackground": "#EAEAEB",
"background": "#EAEAEB",
- "selectionBackground": "#FFFFFF",
+ "selectionBackground": "#DBDBDC",
"selectionInactiveBackground": "#EAEAEB"
}
},
- "window": "#eaeaeb",
+ "window": "#FFFFFF",
"windowBorder": "#DBDBDC",
- "windowText": "#7f7f7f",
+ "windowText": "#9D9D9F",
"Window.border": "#DBDBDC"
},
"icons": {
"ColorPalette": {
- "#43494A": "#eaeaeb",
- "#6B6B6B": "#7f7f7f",
- "#A7A7A7": "#F4F4F4",
+ "#43494A": "#FFFFFF",
+ "#6B6B6B": "#9D9D9F",
+ "#A7A7A7": "#FAFAFA",
"#3D6185": "#2979ff",
"#466D94": "#2979ff",
- "#3C3F41": "#F4F4F4",
- "#545556": "#b8b8b9",
- "#606060": "#b8b8b9",
+ "#3C3F41": "#FAFAFA",
+ "#545556": "#424243",
+ "#606060": "#424243",
"#9AA7B0": "#232324",
"#675133": "#2979ff",
"Actions.Blue": "#4078F2",
"Actions.Green": "#50A14E",
- "Actions.Grey": "#7f7f7f",
+ "Actions.Grey": "#9D9D9F",
"Actions.GreyInline": "#A0A1A7",
"Actions.GreyInline.Dark": "#232324",
"Actions.Red": "#E4564A",
"Actions.Yellow": "#C18401",
- "Checkbox.Background.Default": "#eaeaeb",
- "Checkbox.Background.Default.Dark": "#eaeaeb",
- "Checkbox.Background.Disabled": "#CACACB",
- "Checkbox.Background.Disabled.Dark": "#CACACB",
+ "Checkbox.Background.Default": "#FFFFFF",
+ "Checkbox.Background.Default.Dark": "#FFFFFF",
+ "Checkbox.Background.Disabled": "#DBDBDC",
+ "Checkbox.Background.Disabled.Dark": "#DBDBDC",
"Checkbox.Border.Default": "#DBDBDC",
"Checkbox.Border.Default.Dark": "#DBDBDC",
- "Checkbox.Border.Disabled": "#b8b8b9",
- "Checkbox.Border.Disabled.Dark": "#b8b8b9",
+ "Checkbox.Border.Disabled": "#424243",
+ "Checkbox.Border.Disabled.Dark": "#424243",
"Checkbox.Focus.Thin.Default": "#2979ff",
"Checkbox.Focus.Thin.Default.Dark": "#2979ff",
"Checkbox.Focus.Wide": "#2979ff",
"Checkbox.Focus.Wide.Dark": "#2979ff",
- "Checkbox.Foreground.Disabled": "#b8b8b9",
- "Checkbox.Foreground.Disabled.Dark": "#b8b8b9",
+ "Checkbox.Foreground.Disabled": "#424243",
+ "Checkbox.Foreground.Disabled.Dark": "#424243",
"Checkbox.Background.Selected": "#2979ff",
- "Checkbox.Background.Selected.Dark": "#F4F4F4",
+ "Checkbox.Background.Selected.Dark": "#FAFAFA",
"Checkbox.Border.Selected": "#2979ff",
"Checkbox.Border.Selected.Dark": "#2979ff",
"Checkbox.Foreground.Selected": "#2979ff",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light.theme.json
index e916dc36..ada213dc 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Atom One Light.theme.json
@@ -3,27 +3,33 @@
"dark": false,
"author": "Mallowigi",
"editorScheme": "/colors/Atom One Light.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/onelight.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
- "acceleratorSelectionForeground": "#7f7f7f",
- "background": "#F4F4F4",
+ "acceleratorSelectionForeground": "#9D9D9F",
+ "background": "#FAFAFA",
"borderColor": "#DBDBDC",
- "disabledBackground": "#CACACB",
- "disabledForeground": "#b8b8b9",
- "disabledText": "#b8b8b9",
- "focusColor": "#FFFFFF",
+ "disabledBackground": "#DBDBDC",
+ "disabledForeground": "#424243",
+ "disabledText": "#424243",
+ "focusColor": "#EAEAEB",
"focusedBorderColor": "#2979ff",
"foreground": "#232324",
- "inactiveBackground": "#CACACB",
- "inactiveForeground": "#7f7f7f",
- "infoForeground": "#7f7f7f",
- "selectionBackground": "#FFFFFF",
+ "inactiveBackground": "#DBDBDC",
+ "inactiveForeground": "#9D9D9F",
+ "infoForeground": "#9D9D9F",
+ "selectionBackground": "#DBDBDC",
"selectionBackgroundInactive": "#EAEAEB",
"selectionForeground": "#232324",
"selectionInactiveBackground": "#EAEAEB",
"separatorColor": "#DBDBDC"
},
- "activeCaption": "#F4F4F4",
+ "activeCaption": "#FAFAFA",
"ActionButton": {
"hoverBackground": "#2979ff50",
"hoverBorderColor": "#2979ff50",
@@ -33,13 +39,13 @@
"pressedBorderColor": "#2979ff50"
},
"Autocomplete": {
- "selectionBackground": "#FFFFFF"
+ "selectionBackground": "#DBDBDC"
},
- "Borders.ContrastBorderColor": "#F4F4F4",
+ "Borders.ContrastBorderColor": "#FAFAFA",
"Borders.color": "#DBDBDC",
"Button": {
"arc": 0,
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"default": {
"endBackground": "#DBDBDC",
"endBorderColor": "#DBDBDC",
@@ -51,15 +57,15 @@
"startBorderColor": "#DBDBDC"
},
"disabledBorderColor": "#DBDBDC",
- "disabledText": "#b8b8b9",
+ "disabledText": "#424243",
"endBackground": "#DBDBDC",
"endBorderColor": "#DBDBDC",
- "focus": "#FFFFFF",
+ "focus": "#EAEAEB",
"focusedBorderColor": "#2979ff",
- "foreground": "#7f7f7f",
+ "foreground": "#9D9D9F",
"highlight": "#232324",
"mt.background": "#DBDBDC",
- "mt.foreground": "#7f7f7f",
+ "mt.foreground": "#9D9D9F",
"mt.selectedForeground": "#232324",
"mt.selection.color1": "#DBDBDC",
"mt.selection.color2": "#DBDBDC",
@@ -72,25 +78,36 @@
"Tooltip.borderColor": "#DBDBDC",
"Tooltip.background": "#F2F2F2"
},
- "Content.background": "#eaeaeb",
+ "Content": {
+ "background": "#FFFFFF",
+ "selectionBackground": "#DBDBDC"
+ },
"CheckBox": {
- "background": "#F4F4F4",
- "disabledText": "#b8b8b9",
+ "background": "#FAFAFA",
+ "disabledText": "#424243",
"foreground": "#232324",
"select": "#2979ff"
},
"CheckBoxMenuItem": {
- "acceleratorForeground": "#7f7f7f",
- "acceleratorSelectionForeground": "#7f7f7f",
- "background": "#F4F4F4",
- "disabledBackground": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
+ "acceleratorForeground": "#9D9D9F",
+ "acceleratorSelectionForeground": "#9D9D9F",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "selectionBackground": "#FFFFFF",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#232324",
+ "AccessEnabled": {
+ "accessDot": "#2979ff",
+ "dropdownBorder": "#EAEAEB",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"foreground": "#232324",
"swatchesDefaultRecentColor": "#232324"
},
@@ -98,13 +115,14 @@
"ComboBox": {
"ArrowButton": {
"background": "#DBDBDC",
- "disabledIconColor": "#b8b8b9",
+ "disabledIconColor": "#424243",
"iconColor": "#232324",
- "nonEditableBackground": "#F4F4F4"
+ "nonEditableBackground": "#FAFAFA"
},
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"buttonBackground": "#DBDBDC",
- "disabledForeground": "#b8b8b9",
+ "darcula.hoveredArrowButtonForeground": "#2979ff",
+ "disabledForeground": "#424243",
"foreground": "#232324",
"modifiedItemForeground": "#2979ff",
"nonEditableBackground": "#EAEAEB",
@@ -116,103 +134,107 @@
"CompletionPopup": {
"background": "#EAEAEB",
"foreground": "#232324",
- "infoForeground": "#7f7f7f",
+ "infoForeground": "#9D9D9F",
"matchForeground": "#2979ff",
"matchSelectionForeground": "#2979ff",
"nonFocusedState": "false",
"selectedGrayedForeground": "#232324",
"selectionGrayForeground": "#232324",
- "selectionInactiveInfoForeground": "#7f7f7f",
- "selectionInactiveBackground": "#FFFFFF50",
- "selectionBackground": "#FFFFFF80",
+ "selectionInactiveInfoForeground": "#9D9D9F",
+ "selectionInactiveBackground": "#DBDBDC50",
+ "selectionBackground": "#DBDBDC80",
"selectionForeground": "#232324",
"selectionInfoForeground": "#232324"
},
"Component": {
"arc": 4,
- "borderColor": "#FFFFFF",
+ "borderColor": "#EAEAEB",
"disabledBorderColor": "#DBDBDC",
"focusColor": "#2979ff",
"focusedBorderColor": "#2979ff",
"hoverIconColor": "#2979ff",
- "infoForeground": "#7f7f7f",
+ "infoForeground": "#9D9D9F",
"iconColor": "#232324"
},
- "control": "#F4F4F4",
- "controlText": "#7f7f7f",
+ "control": "#FAFAFA",
+ "controlText": "#9D9D9F",
"Counter": {
"background": "#2979ff",
"foreground": "#232324"
},
"Debugger": {
"Variables": {
- "collectingDataForeground": "#7f7f7f",
+ "collectingDataForeground": "#9D9D9F",
"changedValueForeground": "#2979ff",
"errorMessageForeground": "#E4564A",
- "evaluatingExpressionForeground": "#7f7f7f",
+ "evaluatingExpressionForeground": "#9D9D9F",
"exceptionForeground": "#C18401",
"modifyingValueForeground": "#2979ff",
"valueForeground": "#2979ff"
}
},
"DebuggerTabs": {
- "selectedBackground": "#FFFFFF",
- "underlinedTabBackground": "#FFFFFF"
+ "selectedBackground": "#EAEAEB",
+ "underlinedTabBackground": "#EAEAEB"
},
"DebuggerPopup": {
- "borderColor": "#FFFFFF"
+ "borderColor": "#EAEAEB"
},
"DefaultTabs": {
- "background": "#F4F4F4",
- "borderColor": "#F4F4F4",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
"hoverBackground": "#DBDBDC",
- "hoverColor": "#F4F4F4",
- "hoverMaskColor": "#FFFFFF",
+ "hoverColor": "#FAFAFA",
+ "hoverMaskColor": "#EAEAEB",
+ "inactiveColoredTabBackground": "#FAFAFA",
"inactiveColoredFileBackground": "#DBDBDC",
- "inactiveUnderlineColor": "#b8b8b9",
- "inactiveMaskColor": "#F4F4F4",
+ "inactiveUnderlineColor": "#2979ff",
+ "inactiveMaskColor": "#FAFAFA",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#DBDBDC"
+ "underlinedTabBackground": "#DBDBDC",
+ "underlinedTabForeground": "#232324"
},
- "Desktop.background": "#F4F4F4",
- "DialogWrapper.southPanelBackground": "#F4F4F4",
- "DialogWrapper.southPanelDivider": "#F4F4F4",
+ "Desktop.background": "#FAFAFA",
+ "DialogWrapper.southPanelBackground": "#FAFAFA",
+ "DialogWrapper.southPanelDivider": "#FAFAFA",
"DragAndDrop": {
- "areaBackground": "#F4F4F4",
- "areaBorderColor": "#F4F4F4",
+ "areaBackground": "#FAFAFA",
+ "areaBorderColor": "#FAFAFA",
"areaForeground": "#232324"
},
"Editor": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"foreground": "#232324",
- "shortcutForeground": "#7f7f7f"
+ "shortcutForeground": "#9D9D9F"
},
"EditorPane": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"caretForeground": "#2979ff",
"foreground": "#232324",
- "inactiveBackground": "#F4F4F4",
- "inactiveForeground": "#b8b8b9",
- "selectionBackground": "#FFFFFF",
+ "inactiveBackground": "#FAFAFA",
+ "inactiveForeground": "#424243",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"EditorTabs": {
"borderColor": "#EAEAEB",
- "hoverColor": "#FFFFFF",
- "hoverMaskColor": "#FFFFFF",
- "inactiveMaskColor": "#F4F4F4",
- "inactiveColoredFileBackground": "#F4F4F42",
- "inactiveUnderlineColor": "#b8b8b9",
+ "hoverBackground": "#EAEAEB",
+ "hoverColor": "#EAEAEB",
+ "hoverMaskColor": "#EAEAEB",
+ "inactiveMaskColor": "#FAFAFA",
+ "inactiveColoredFileBackground": "#FAFAFA",
+ "inactiveUnderlineColor": "#424243",
"selectedForeground": "#232324",
"selectedBackground": "#DBDBDC",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#DBDBDC"
+ "underlinedTabBackground": "#DBDBDC",
+ "underlinedTabForeground": "#232324"
},
"EditorGroupsTabs": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"borderColor": "#EAEAEB",
- "hoverBackground": "#FFFFFF",
- "hoverColor": "#FFFFFF",
+ "hoverBackground": "#EAEAEB",
+ "hoverColor": "#EAEAEB",
"inactiveUnderlineColor": "#2979ff",
"underlineColor": "#2979ff",
"underlinedTabBackground": "#DBDBDC",
@@ -221,7 +243,7 @@
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#CACACB",
+ "Yellow": "#DBDBDC",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -238,136 +260,140 @@
},
"Focus.color": "#DBDBDC",
"FormattedTextField": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"caretForeground": "#2979ff",
"foreground": "#232324",
"inactiveBackground": "#DBDBDC",
- "inactiveForeground": "#b8b8b9",
+ "inactiveForeground": "#424243",
"selectionForeground": "#232324",
"selectionBackground": "#DBDBDC"
},
+ "GotItTooltip.borderColor": "#F2F2F2",
"Group": {
"disabledSeparatorColor": "#DBDBDC",
"separatorColor": "#DBDBDC"
},
"GutterTooltip": {
- "infoForeground": "#232324",
- "lineSeparatorColor": "#F4F4F4"
+ "infoForeground": "#9D9D9F",
+ "lineSeparatorColor": "#FAFAFA"
},
"HeaderColor": {
- "active": "#F4F4F4",
- "inactive": "#eaeaeb"
+ "active": "#FAFAFA",
+ "inactive": "#FFFFFF"
},
"HelpTooltip": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"borderColor": "#DBDBDC",
"foreground": "#232324",
- "infoForeground": "#7f7f7f",
- "shortcutForeground": "#7f7f7f"
+ "infoForeground": "#9D9D9F",
+ "shortcutForeground": "#9D9D9F"
},
"Hyperlink.linkColor": "#2979ff",
"inactiveCaption": "#EAEAEB",
- "inactiveCaptionBorder": "#F4F4F4",
- "inactiveCaptionText": "#7f7f7f",
- "info": "#7f7f7f",
- "infoText": "#7f7f7f",
+ "inactiveCaptionBorder": "#FAFAFA",
+ "inactiveCaptionText": "#9D9D9F",
+ "info": "#9D9D9F",
+ "infoText": "#9D9D9F",
"IdeStatusBar.border": "4,4,4,4",
"InformationHint.borderColor": "#DBDBDC",
"InplaceRefactoringPopup": {
- "borderColor": "#F4F4F4"
+ "borderColor": "#FAFAFA"
},
"InternalFrame": {
"activeTitleForeground": "#232324",
- "background": "#F4F4F4",
- "inactiveTitleForeground": "#7f7f7f"
+ "background": "#FAFAFA",
+ "inactiveTitleForeground": "#9D9D9F"
},
"Label": {
- "background": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
- "disabledShadow": "#F4F4F4",
- "disabledText": "#b8b8b9",
+ "background": "#FAFAFA",
+ "disabledForeground": "#424243",
+ "disabledShadow": "#FAFAFA",
+ "disabledText": "#424243",
"foreground": "#232324",
- "infoForeground": "#7f7f7f",
- "selectedForeground": "#232324"
+ "infoForeground": "#9D9D9F",
+ "selectedForeground": "#232324",
+ "selectedDisabledForeground": "#232324"
},
"Link": {
"activeForeground": "#2979ff",
"hoverForeground": "#2979ff",
"pressedForeground": "#2979ff",
- "secondaryForeground": "#7f7f7f",
+ "secondaryForeground": "#9D9D9F",
"visitedForeground": "#2979ff"
},
"link.foreground": "#2979ff",
"List": {
"background": "#EAEAEB",
"foreground": "#232324",
- "selectionBackground": "#FFFFFF50",
+ "hoverBackground": "#DBDBDC80",
+ "hoverInactiveBackground": "#DBDBDC",
+ "selectionBackground": "#DBDBDC50",
"selectionForeground": "#232324",
"selectionInactiveForeground": "#232324",
"selectionInactiveBackground": "#DBDBDC80"
},
"material": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"branchColor": "#232324",
- "contrast": "#eaeaeb",
+ "contrast": "#FFFFFF",
"foreground": "#232324",
"mergeCommits": "#DBDBDC",
- "primaryColor": "#7f7f7f",
+ "primaryColor": "#9D9D9F",
"selectionForeground": "#232324",
- "tab.backgroundColor": "#F4F4F4",
+ "tab.backgroundColor": "#FAFAFA",
"tab.borderColor": "#2979ff",
- "tagColor": "#7f7f7f"
+ "tagColor": "#9D9D9F"
},
"MemoryIndicator": {
"allocatedBackground": "#EAEAEB",
- "usedColor": "#FFFFFF",
- "usedBackground": "#FFFFFF"
+ "usedColor": "#EAEAEB",
+ "usedBackground": "#EAEAEB"
},
"Menu": {
- "acceleratorForeground": "#7f7f7f",
+ "acceleratorForeground": "#9D9D9F",
"acceleratorSelectionForeground": "#232324",
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"border": "4,2,4,2",
"borderColor": "#EAEAEB",
"disabledBackground": "#EAEAEB",
- "disabledForeground": "#b8b8b9",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "selectionBackground": "#FFFFFF",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324",
"separatorColor": "#DBDBDC"
},
"MenuBar": {
- "background": "#F4F4F4",
- "borderColor": "#F4F4F4",
- "disabledBackground": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "highlight": "#F4F4F4",
- "selectionBackground": "#FFFFFF",
+ "highlight": "#FAFAFA",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324",
- "shadow": "#F4F4F4"
+ "shadow": "#FAFAFA"
},
"MenuItem": {
- "acceleratorForeground": "#7f7f7f",
+ "acceleratorForeground": "#9D9D9F",
"acceleratorSelectionForeground": "#232324",
"border": "4,2,4,2",
- "background": "#F4F4F4",
- "disabledBackground": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "selectionBackground": "#FFFFFF",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"NavBar": {
"arrowColor": "#232324",
- "borderColor": "#F4F4F4"
+ "borderColor": "#FAFAFA"
},
"NewClass": {
"Panel": {
- "background": "#F4F4F4"
+ "background": "#FAFAFA"
},
"SearchField": {
- "background": "#F4F4F4"
+ "background": "#FAFAFA"
}
},
"NewPSD.warning": "#2979ff",
@@ -393,61 +419,62 @@
},
"OnePixelDivider.background": "#DBDBDC",
"OptionPane": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"foreground": "#232324",
"messageForeground": "#232324"
},
"Outline": {
"color": "#DBDBDC",
"focusedColor": "#2979ff",
- "disabledColor": "#b8b8b9"
+ "disabledColor": "#424243"
},
"Panel": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"foreground": "#232324"
},
"ParameterInfo": {
"background": "#EAEAEB",
"borderColor": "#DBDBDC",
- "currentOverloadBackground": "#DBDBDC",
+ "currentOverloadBackground": "#EAEAEB",
"currentParameterForeground": "#2979ff",
- "disabledForeground": "#b8b8b9",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "infoForeground": "#7f7f7f",
+ "infoForeground": "#9D9D9F",
"lineSeparatorColor": "#DBDBDC"
},
"PasswordField": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"capsLockIconColor": "#2979ff",
"caretForeground": "#2979ff",
"foreground": "#232324",
- "inactiveForeground": "#b8b8b9",
+ "inactiveForeground": "#424243",
"selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"Plugins": {
- "background": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
- "eapTagBackground": "#FFFFFF",
- "lightSelectionBackground": "#FFFFFF",
- "paidTagBackground": "#FFFFFF",
- "selectionBackground": "#FFFFFF",
+ "background": "#FAFAFA",
+ "disabledForeground": "#424243",
+ "eapTagBackground": "#EAEAEB",
+ "hoverBackground": "#DBDBDC80",
+ "lightSelectionBackground": "#DBDBDC",
+ "paidTagBackground": "#EAEAEB",
+ "selectionBackground": "#DBDBDC",
"tagForeground": "#2979ff",
- "tagBackground": "#FFFFFF",
- "trialTagBackground": "#FFFFFF",
+ "tagBackground": "#EAEAEB",
+ "trialTagBackground": "#EAEAEB",
"Button": {
"installBackground": "#DBDBDC",
"installBorderColor": "#DBDBDC",
"installForeground": "#232324",
- "installFocusedBackground": "#FFFFFF",
- "installFillForeground": "#b8b8b9",
+ "installFocusedBackground": "#EAEAEB",
+ "installFillForeground": "#424243",
"installFillBackground": "#DBDBDC",
- "updateBackground": "#DBDBDC",
+ "updateBackground": "#2979ff",
"updateBorderColor": "#DBDBDC",
"updateForeground": "#232324"
},
"SearchField": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"borderColor": "#DBDBDC"
},
"SectionHeader": {
@@ -462,133 +489,143 @@
},
"Popup": {
"Advertiser": {
- "background": "#F4F4F4",
- "borderColor": "#F4F4F4",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
"foreground": "#2979ff"
},
- "borderColor": "#eaeaeb",
- "inactiveBorderColor": "#F4F4F4",
+ "borderColor": "#FFFFFF",
+ "inactiveBorderColor": "#FAFAFA",
"innerBorderColor": "#EAEAEB",
"Header": {
- "activeBackground": "#F4F4F4",
- "inactiveBackground": "#eaeaeb"
+ "activeBackground": "#FAFAFA",
+ "inactiveBackground": "#FFFFFF"
},
"paintBorder": true,
"separatorForeground": "#232324",
"separatorColor": "#EAEAEB",
"Toolbar": {
- "Floating.background": "#eaeaeb",
- "background": "#eaeaeb",
- "borderColor": "#eaeaeb"
+ "Floating.background": "#FFFFFF",
+ "background": "#FFFFFF",
+ "borderColor": "#FFFFFF"
}
},
"PopupMenu": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"border": "2,0,2,0",
"foreground": "#232324",
- "translucentBackground": "#F4F4F4"
+ "translucentBackground": "#FAFAFA"
},
"PopupMenuSeparator.height": 10,
"PopupMenuSeparator.stripeIndent": 5,
"ProgressBar": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"foreground": "#2979ff",
"indeterminateEndColor": "#2979ff",
"indeterminateStartColor": "#2979ff",
"progressColor": "#2979ff",
- "selectionBackground": "#FFFFFF",
- "trackColor": "#FFFFFF"
+ "selectionBackground": "#EAEAEB",
+ "trackColor": "#EAEAEB"
},
"PsiViewer": {
"referenceHighlightColor": "#2979ff"
},
"RadioButton": {
- "background": "#F4F4F4",
- "disabledText": "#b8b8b9",
+ "background": "#FAFAFA",
+ "disabledText": "#424243",
"foreground": "#232324"
},
"RadioButtonMenuItem": {
- "acceleratorForeground": "#7f7f7f",
- "acceleratorSelectionForeground": "#7f7f7f",
- "background": "#F4F4F4",
- "disabledBackground": "#F4F4F4",
- "disabledForeground": "#b8b8b9",
+ "acceleratorForeground": "#9D9D9F",
+ "acceleratorSelectionForeground": "#9D9D9F",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#424243",
"foreground": "#232324",
- "selectionBackground": "#FFFFFF",
+ "selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
+ "ScreenView.borderColor": "#DBDBDC",
"ScrollBar": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"hoverThumbBorderColor": "#2979ff",
"hoverThumbColor": "#2979ff",
- "hoverTrackColor": "#F4F4F430",
+ "hoverTrackColor": "#FAFAFA30",
"Mac": {
"hoverThumbBorderColor": "#2979ff",
"hoverThumbColor": "#2979ff",
- "hoverTrackColor": "#F4F4F430",
+ "hoverTrackColor": "#FAFAFA30",
"thumbBorderColor": "#2979ff70",
"thumbColor": "#2979ff70",
- "trackColor": "#F4F4F430",
+ "trackColor": "#FAFAFA30",
"Transparent": {
"hoverThumbBorderColor": "#2979ff",
"hoverThumbColor": "#2979ff",
- "hoverTrackColor": "#F4F4F430",
+ "hoverTrackColor": "#FAFAFA30",
"thumbBorderColor": "#2979ff70",
"thumbColor": "#2979ff70",
- "trackColor": "#F4F4F430"
+ "trackColor": "#FAFAFA30"
}
},
- "thumb": "#FFFFFF",
+ "thumb": "#EAEAEB",
"thumbBorderColor": "#2979ff70",
"thumbColor": "#2979ff70",
- "trackColor": "#F4F4F430",
+ "trackColor": "#FAFAFA30",
"Transparent": {
"hoverThumbBorderColor": "#2979ff",
"hoverThumbColor": "#2979ff",
- "hoverTrackColor": "#F4F4F430",
+ "hoverTrackColor": "#FAFAFA30",
"thumbBorderColor": "#2979ff70",
"thumbColor": "#2979ff70",
- "trackColor": "#F4F4F430"
+ "trackColor": "#FAFAFA30"
}
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#eaeaeb",
- "foreground": "#7f7f7f"
+ "background": "#FFFFFF",
+ "foreground": "#9D9D9F"
},
"Header": {
- "background": "#F4F4F4"
+ "background": "#FAFAFA"
},
"List": {
- "separatorForeground": "#7f7f7f",
+ "separatorForeground": "#9D9D9F",
"separatorColor": "#DBDBDC"
},
"SearchField": {
- "background": "#F4F4F4",
- "borderColor": "#eaeaeb",
- "infoForeground": "#7f7f7f"
+ "background": "#FAFAFA",
+ "borderColor": "#FFFFFF",
+ "infoForeground": "#9D9D9F"
},
"Tab": {
"active.foreground": "#232324",
"selectedForeground": "#232324",
- "selectedBackground": "#FFFFFF"
+ "selectedBackground": "#EAEAEB"
}
},
"SearchMatch": {
"endBackground": "#2979ff",
- "startBackground": "#2979ff"
+ "startBackground": "#2979ff",
+ "endColor": "#2979ff",
+ "startColor": "#2979ff"
},
"SearchField.errorBackground": "#F2F2F2",
+ "SearchOption": {
+ "selectedBackground": "#DBDBDC"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#9D9D9F",
+ "Repeated.File.Foreground": "#232324"
+ },
"Separator": {
"background": "#EAEAEB",
"foreground": "#EAEAEB",
"separatorColor": "#EAEAEB"
},
"SidePanel": {
- "background": "#F4F4F4"
+ "background": "#FAFAFA"
},
"Slider": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"buttonBorderColor": "#2979ff",
"buttonColor": "#2979ff",
"foreground": "#232324",
@@ -599,38 +636,40 @@
"thumb": "#2979ff"
},
"SpeedSearch": {
- "background": "#FFFFFF",
+ "background": "#EAEAEB",
"borderColor": "#DBDBDC",
"foreground": "#232324",
"errorForeground": "#232324"
},
"Spinner": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"border": "3,3,3,3",
"foreground": "#232324",
"selectionForeground": "#232324"
},
"SplitPane": {
- "background": "#F4F4F4",
- "highlight": "#F4F4F4"
+ "background": "#FAFAFA",
+ "highlight": "#FAFAFA"
},
"SplitPaneDivider.draggingColor": "#EAEAEB",
"StatusBar": {
- "borderColor": "#F4F4F4"
+ "borderColor": "#FAFAFA",
+ "hoverBackground": "#EAEAEB",
+ "LightEditBackground": "#DBDBDC"
},
"TabbedPane": {
- "background": "#F4F4F4",
- "contentAreaColor": "#FFFFFF",
+ "background": "#FAFAFA",
+ "contentAreaColor": "#EAEAEB",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#DBDBDC",
- "disabledForeground": "#b8b8b9",
- "disabledUnderlineColor": "#b8b8b9",
+ "disabledForeground": "#424243",
+ "disabledUnderlineColor": "#424243",
"focus": "#DBDBDC",
"focusColor": "#DBDBDC",
"fontSizeOffset": 0,
"foreground": "#232324",
"highlight": "#DBDBDC",
- "hoverColor": "#FFFFFF",
+ "hoverColor": "#EAEAEB",
"labelShift": 0,
"selectedForeground": "#232324",
"selectedLabelShift": 0,
@@ -641,162 +680,209 @@
"tabSelectionHeight": 2,
"underlineColor": "#2979ff"
},
- "TabbedPane.mt.tab.background": "#F4F4F4",
+ "TabbedPane.mt.tab.background": "#FAFAFA",
"Table": {
- "background": "#F4F4F4",
+ "alternativeRowBackground": "#FFFFFF",
+ "background": "#FAFAFA",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#424243",
"dropLineColor": "#2979ff",
"dropLineShortColor": "#2979ff",
"focusCellBackground": "#DBDBDC",
"focusCellForeground": "#232324",
"foreground": "#232324",
- "gridColor": "#F4F4F4",
+ "gridColor": "#FAFAFA",
"highlightOuter": "#DBDBDC",
+ "hoverBackground": "#DBDBDC80",
+ "hoverInactiveBackground": "#DBDBDC",
"lightSelectionForeground": "#232324",
- "lightSelectionInactiveForeground": "#7f7f7f",
+ "lightSelectionInactiveForeground": "#9D9D9F",
"lightSelectionInactiveBackground": "#EAEAEB",
"selectionBackground": "#DBDBDC",
"selectionForeground": "#232324",
"selectionInactiveBackground": "#DBDBDC",
"selectionInactiveForeground": "#232324",
"sortIconColor": "#232324",
- "stripeColor": "#eaeaeb"
+ "stripeColor": "#FFFFFF"
},
"TableHeader": {
- "background": "#F4F4F4",
- "borderColor": "#F4F4F4",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
"bottomSeparatorColor": "#EAEAEB",
"cellBorder": "4,0,4,0",
- "disabledForeground": "#b8b8b9",
+ "disabledForeground": "#424243",
"foreground": "#232324",
"focusCellBackground": "#DBDBDC",
"focusCellForeground": "#232324",
"height": 25,
"separatorColor": "#EAEAEB"
},
- "text": "#7f7f7f",
- "textInactiveText": "#7f7f7f",
- "textText": "#7f7f7f",
+ "text": "#9D9D9F",
+ "textInactiveText": "#9D9D9F",
+ "textText": "#9D9D9F",
"TextArea": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"caretForeground": "#2979ff",
"foreground": "#232324",
- "inactiveForeground": "#b8b8b9",
+ "inactiveForeground": "#424243",
"selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"TextField": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"caretForeground": "#2979ff",
"foreground": "#232324",
- "inactiveForeground": "#b8b8b9",
+ "inactiveForeground": "#424243",
"selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"TextPane": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"caretForeground": "#2979ff",
"foreground": "#232324",
- "inactiveForeground": "#b8b8b9",
+ "inactiveForeground": "#424243",
"selectionBackground": "#DBDBDC",
"selectionForeground": "#232324"
},
"TitlePane": {
- "background": "#eaeaeb",
- "Button.hoverBackground": "#FFFFFF",
- "inactiveBackground": "#F4F4F4",
- "infoForeground": "#7f7f7f",
- "inactiveInfoForeground": "#7f7f7f"
+ "background": "#FFFFFF",
+ "Button.hoverBackground": "#EAEAEB",
+ "inactiveBackground": "#FAFAFA",
+ "infoForeground": "#9D9D9F",
+ "inactiveInfoForeground": "#9D9D9F"
},
"TitledBorder.titleColor": "#232324",
"ToggleButton": {
"borderColor": "#DBDBDC",
"buttonColor": "#232324",
- "disabledText": "#b8b8b9",
+ "disabledText": "#424243",
"foreground": "#232324",
- "offForeground": "#F4F4F4",
- "offBackground": "#F4F4F4",
+ "offForeground": "#FAFAFA",
+ "offBackground": "#FAFAFA",
"onBackground": "#2979ff",
"onForeground": "#2979ff"
},
"ToolBar": {
- "background": "#F4F4F4",
- "borderHandleColor": "#7f7f7f",
- "floatingForeground": "#7f7f7f",
+ "background": "#FAFAFA",
+ "borderHandleColor": "#9D9D9F",
+ "floatingForeground": "#9D9D9F",
"foreground": "#232324"
},
"ToolTip": {
- "Actions.background": "#F4F4F4",
- "Actions.infoForeground": "#7f7f7f",
- "background": "#F4F4F4",
- "borderColor": "#FFFFFF",
+ "Actions.background": "#FAFAFA",
+ "Actions.infoForeground": "#9D9D9F",
+ "background": "#F2F2F2",
+ "borderColor": "#DBDBDC",
"foreground": "#232324",
- "infoForeground": "#7f7f7f",
+ "infoForeground": "#9D9D9F",
"separatorColor": "#DBDBDC",
- "shortcutForeground": "#7f7f7f"
+ "shortcutForeground": "#9D9D9F"
},
"ToolWindow": {
"Button": {
"hoverBackground": "#DBDBDC",
"selectedForeground": "#232324",
- "selectedBackground": "#eaeaeb"
+ "selectedBackground": "#FFFFFF"
},
"Header": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"borderColor": "#EAEAEB",
- "inactiveBackground": "#F4F4F4"
+ "inactiveBackground": "#FAFAFA"
},
"HeaderCloseButton": {
- "background": "#F4F4F4"
+ "background": "#FAFAFA"
},
"HeaderTab": {
- "hoverBackground": "#FFFFFF",
+ "borderColor": "#EAEAEB",
+ "hoverBackground": "#EAEAEB",
"hoverInactiveBackground": "#EAEAEB",
"inactiveUnderlineColor": "#2979ff",
- "selectedBackground": "#eaeaeb",
- "selectedInactiveBackground": "#eaeaeb",
+ "selectedBackground": "#FFFFFF",
+ "selectedInactiveBackground": "#FFFFFF",
"underlineColor": "#2979ff",
- "underlinedTabBackground": "#FFFFFF",
- "underlinedTabInactiveBackground": "#EAEAEB"
+ "underlinedTabBackground": "#DBDBDC",
+ "underlinedTabInactiveBackground": "#EAEAEB",
+ "underlinedTabForeground": "#232324",
+ "underlinedTabInactiveForeground": "#232324"
}
},
"Tree": {
- "background": "#F4F4F4",
- "foreground": "#7f7f7f",
+ "background": "#FAFAFA",
+ "foreground": "#9D9D9F",
"hash": "#DBDBDC",
+ "hoverBackground": "#DBDBDC80",
+ "hoverInactiveBackground": "#DBDBDC",
"modifiedItemForeground": "#2979ff",
"rowHeight": 28,
"selectionBackground": "#DBDBDC80",
"selectionForeground": "#232324",
"selectionInactiveForeground": "#232324",
"selectionInactiveBackground": "#DBDBDC80",
- "textBackground": "#F4F4F4"
+ "textBackground": "#FAFAFA"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#DBDBDC",
- "ColorPicker.background": "#F4F4F4",
- "ColorPicker.foreground": "#232324",
- "Component.borderColor": "#DBDBDC",
- "Component.background": "#F4F4F4",
- "Component.foreground": "#232324",
- "Connector.borderColor": "#DBDBDC",
- "Connector.hoverBorderColor": "#FFFFFF",
- "Canvas.background": "#eaeaeb",
+ "Canvas.background": "#FFFFFF",
+ "ColorPicker": {
+ "background": "#FAFAFA",
+ "foreground": "#232324"
+ },
+ "Component": {
+ "borderColor": "#DBDBDC",
+ "background": "#FAFAFA",
+ "foreground": "#232324",
+ "hoverBorderColor": "#EAEAEB"
+ },
+ "Connector": {
+ "borderColor": "#DBDBDC",
+ "hoverBorderColor": "#EAEAEB"
+ },
+ "Canvas.background": "#FFFFFF",
"highStroke.foreground": "#232324",
- "Label.foreground": "#7f7f7f",
+ "Label.foreground": "#9D9D9F",
"List.selectionBackground": "#DBDBDC80",
- "Panel.borderColor": "#DBDBDC",
- "Panel.background": "#F4F4F4",
+ "motion": {
+ "borderColor": "#DBDBDC",
+ "Component.foreground": "#232324",
+ "ConstraintSetText.foreground": "#9D9D9F",
+ "ConstraintSet.background": "#EAEAEB",
+ "CSPanel.SelectedFocusBackground": "#DBDBDC",
+ "CSPanel.SelectedBackground": "#DBDBDC80",
+ "cs_FocusText.infoForeground": "#9D9D9F",
+ "CursorTextColor.foreground": "#232324",
+ "HoverColor.disabledBackground": "#424243",
+ "motionGraph.background": "#FAFAFA",
+ "Notification.background": "#F2F2F2",
+ "ourAvg.background": "#EAEAEB",
+ "ourCS.background": "#EAEAEB",
+ "ourCS_Border.borderColor": "#DBDBDC",
+ "ourCS_TextColor.foreground": "#9D9D9F",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#232324",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#DBDBDC",
+ "ourCS_SelectedBorder.pressedBorderColor": "#EAEAEB",
+ "ourML_BarColor.separatorColor": "#DBDBDC",
+ "PrimaryPanel.background": "#FFFFFF",
+ "SecondaryPanel.background": "#FAFAFA",
+ "SecondaryPanel.header.foreground": "#9D9D9F",
+ "SecondaryPanel.header.background": "#FFFFFF",
+ "timeLine.disabledBorderColor": "#DBDBDC"
+ },
+ "Panel": {
+ "borderColor": "#DBDBDC",
+ "background": "#FAFAFA"
+ },
"percent.foreground": "#232324",
- "Placeholder.background": "#F4F4F4",
- "Placeholder.borderColor": "#DBDBDC",
- "Placeholder.foreground": "#232324",
- "Placeholder.selectedForeground": "#232324",
- "Preview.background": "#F4F4F4",
- "stroke.acceleratorForeground": "#7f7f7f"
+ "Placeholder": {
+ "background": "#FAFAFA",
+ "borderColor": "#DBDBDC",
+ "foreground": "#232324",
+ "selectedForeground": "#232324"
+ },
+ "Preview.background": "#FAFAFA",
+ "stroke.acceleratorForeground": "#9D9D9F"
},
"ValidationTooltip": {
"errorBackground": "#F2F2F2",
@@ -806,95 +892,102 @@
},
"VersionControl": {
"FileHistory.Commit": {
- "selectedBranchBackground": "#F4F4F4"
+ "selectedBranchBackground": "#FAFAFA"
},
"GitCommits": {
- "graphColor": "#FFFFFF"
+ "graphColor": "#EAEAEB"
},
"GitLog": {
"localBranchIconColor": "#2979ff",
- "otherIconColor": "#7f7f7f",
+ "otherIconColor": "#9D9D9F",
"remoteBranchIconColor": "#232324",
- "tagIconColor": "#7f7f7f"
+ "tagIconColor": "#9D9D9F"
},
"HgLog": {
"branchIconColor": "#2979ff",
"bookmarkIconColor": "#232324",
- "closedBranchIconColor": "#b8b8b9",
- "localTagIconColor": "#7f7f7f",
- "mqTagIconColor": "#7f7f7f",
- "tagIconColor": "#7f7f7f",
- "tipIconColor": "#7f7f7f"
+ "closedBranchIconColor": "#424243",
+ "localTagIconColor": "#9D9D9F",
+ "mqTagIconColor": "#9D9D9F",
+ "tagIconColor": "#9D9D9F",
+ "tipIconColor": "#9D9D9F"
},
"Log": {
- "Commit.unmatchedForeground": "#7f7f7f",
- "Commit.currentBranchBackground": "#EAEAEB"
+ "Commit.unmatchedForeground": "#9D9D9F",
+ "Commit.currentBranchBackground": "#EAEAEB",
+ "Commit.hoveredBackground": "#DBDBDC80"
},
"RefLabel": {
"foreground": "#232324",
- "backgroundBase": "#FFFFFF"
+ "backgroundBase": "#EAEAEB"
}
},
"Viewport": {
- "background": "#F4F4F4",
+ "background": "#FAFAFA",
"foreground": "#232324"
},
"WelcomeScreen": {
- "background": "#F4F4F4",
- "borderColor": "#F4F4F4",
- "captionBackground": "#eaeaeb",
+ "AssociatedComponent.background": "#FAFAFA",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "captionBackground": "#FFFFFF",
"captionForeground": "#232324",
- "footerBackground": "#eaeaeb",
+ "Details.background": "#FAFAFA",
+ "footerBackground": "#FFFFFF",
"footerForeground": "#232324",
- "headerBackground": "#F4F4F4",
+ "headerBackground": "#FAFAFA",
"headerForeground": "#232324",
+ "List.background": "#FFFFFF",
"separatorColor": "#DBDBDC",
+ "SidePanel.background": "#EAEAEB",
"Projects": {
+ "actions.background": "#FFFFFF",
+ "actions.selectionBackground": "#EAEAEB",
"background": "#EAEAEB",
- "selectionBackground": "#FFFFFF",
+ "selectionBackground": "#DBDBDC",
"selectionInactiveBackground": "#EAEAEB"
}
},
- "window": "#F4F4F4",
+ "window": "#FAFAFA",
"windowBorder": "#DBDBDC",
- "windowText": "#7f7f7f",
+ "windowText": "#9D9D9F",
"Window.border": "#DBDBDC"
},
"icons": {
"ColorPalette": {
- "#43494A": "#eaeaeb",
- "#6B6B6B": "#7f7f7f",
- "#A7A7A7": "#F4F4F4",
+ "#43494A": "#FFFFFF",
+ "#6B6B6B": "#9D9D9F",
+ "#A7A7A7": "#FAFAFA",
"#3D6185": "#2979ff",
"#466D94": "#2979ff",
- "#3C3F41": "#F4F4F4",
- "#545556": "#b8b8b9",
- "#606060": "#b8b8b9",
+ "#3C3F41": "#FAFAFA",
+ "#545556": "#424243",
+ "#606060": "#424243",
"#9AA7B0": "#232324",
"#675133": "#2979ff",
"Actions.Blue": "#4078F2",
"Actions.Green": "#50A14E",
- "Actions.Grey": "#7f7f7f",
+ "Actions.Grey": "#9D9D9F",
"Actions.GreyInline": "#A0A1A7",
"Actions.GreyInline.Dark": "#232324",
"Actions.Red": "#E4564A",
"Actions.Yellow": "#C18401",
- "Checkbox.Background.Default": "#eaeaeb",
- "Checkbox.Background.Default.Dark": "#eaeaeb",
- "Checkbox.Background.Disabled": "#CACACB",
- "Checkbox.Background.Disabled.Dark": "#CACACB",
+ "Checkbox.Background.Default": "#FFFFFF",
+ "Checkbox.Background.Default.Dark": "#FFFFFF",
+ "Checkbox.Background.Disabled": "#DBDBDC",
+ "Checkbox.Background.Disabled.Dark": "#DBDBDC",
"Checkbox.Border.Default": "#DBDBDC",
"Checkbox.Border.Default.Dark": "#DBDBDC",
- "Checkbox.Border.Disabled": "#b8b8b9",
- "Checkbox.Border.Disabled.Dark": "#b8b8b9",
+ "Checkbox.Border.Disabled": "#424243",
+ "Checkbox.Border.Disabled.Dark": "#424243",
"Checkbox.Focus.Thin.Default": "#2979ff",
"Checkbox.Focus.Thin.Default.Dark": "#2979ff",
"Checkbox.Focus.Wide": "#2979ff",
"Checkbox.Focus.Wide.Dark": "#2979ff",
- "Checkbox.Foreground.Disabled": "#b8b8b9",
- "Checkbox.Foreground.Disabled.Dark": "#b8b8b9",
+ "Checkbox.Foreground.Disabled": "#424243",
+ "Checkbox.Foreground.Disabled.Dark": "#424243",
"Checkbox.Background.Selected": "#2979ff",
- "Checkbox.Background.Selected.Dark": "#F4F4F4",
+ "Checkbox.Background.Selected.Dark": "#FAFAFA",
"Checkbox.Border.Selected": "#2979ff",
"Checkbox.Border.Selected.Dark": "#2979ff",
"Checkbox.Foreground.Selected": "#2979ff",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula Contrast.theme.json
index 43655460..557e007c 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula Contrast.theme.json
@@ -3,34 +3,40 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Dracula.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/dracula.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#6272A4",
"background": "#282A36",
"borderColor": "#21222C",
- "disabledBackground": "#313341",
+ "disabledBackground": "#34353D",
"disabledForeground": "#6272A4",
"disabledText": "#6272A4",
- "focusColor": "#6272A4",
- "focusedBorderColor": "#FF79C5",
+ "focusColor": "#44475a",
+ "focusedBorderColor": "#9580ff",
"foreground": "#F8F8F2",
- "inactiveBackground": "#313341",
+ "inactiveBackground": "#34353D",
"inactiveForeground": "#6272A4",
"infoForeground": "#6272A4",
"selectionBackground": "#44475A",
"selectionBackgroundInactive": "#282A36",
- "selectionForeground": "#8BE9FD",
+ "selectionForeground": "#FFFFFF",
"selectionInactiveBackground": "#282A36",
"separatorColor": "#21222C"
},
"activeCaption": "#282A36",
"ActionButton": {
- "hoverBackground": "#FF79C550",
- "hoverBorderColor": "#FF79C550",
+ "hoverBackground": "#9580ff50",
+ "hoverBorderColor": "#9580ff50",
"hoverSeparatorColor": "#393C4B",
- "focusedBorderColor": "#FF79C550",
- "pressedBackground": "#FF79C550",
- "pressedBorderColor": "#FF79C550"
+ "focusedBorderColor": "#9580ff50",
+ "pressedBackground": "#9580ff50",
+ "pressedBorderColor": "#9580ff50"
},
"Autocomplete": {
"selectionBackground": "#44475A"
@@ -44,8 +50,8 @@
"endBackground": "#44475A",
"endBorderColor": "#44475A",
"foreground": "#8BE9FD",
- "focusColor": "#FF79C5",
- "focusedBorderColor": "#FF79C5",
+ "focusColor": "#9580ff",
+ "focusedBorderColor": "#9580ff",
"shadowColor": "#44475A",
"startBackground": "#44475A",
"startBorderColor": "#44475A"
@@ -54,13 +60,13 @@
"disabledText": "#6272A4",
"endBackground": "#393C4B",
"endBorderColor": "#393C4B",
- "focus": "#6272A4",
- "focusedBorderColor": "#FF79C5",
+ "focus": "#44475a",
+ "focusedBorderColor": "#9580ff",
"foreground": "#6272A4",
- "highlight": "#8BE9FD",
+ "highlight": "#FFFFFF",
"mt.background": "#393C4B",
"mt.foreground": "#6272A4",
- "mt.selectedForeground": "#8BE9FD",
+ "mt.selectedForeground": "#FFFFFF",
"mt.selection.color1": "#44475A",
"mt.selection.color2": "#44475A",
"startBackground": "#393C4B",
@@ -72,12 +78,15 @@
"Tooltip.borderColor": "#21222C",
"Tooltip.background": "#1D2228"
},
- "Content.background": "#191A21",
+ "Content": {
+ "background": "#191A21",
+ "selectionBackground": "#44475A"
+ },
"CheckBox": {
"background": "#282A36",
"disabledText": "#6272A4",
"foreground": "#F8F8F2",
- "select": "#FF79C5"
+ "select": "#9580ff"
},
"CheckBoxMenuItem": {
"acceleratorForeground": "#6272A4",
@@ -89,6 +98,14 @@
"selectionBackground": "#44475A",
"selectionForeground": "#8BE9FD"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#F8F8F2",
+ "AccessEnabled": {
+ "accessDot": "#9580ff",
+ "dropdownBorder": "#282A36",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#282A36",
"foreground": "#F8F8F2",
@@ -104,9 +121,10 @@
},
"background": "#191A21",
"buttonBackground": "#393C4B",
+ "darcula.hoveredArrowButtonForeground": "#9580ff",
"disabledForeground": "#6272A4",
"foreground": "#F8F8F2",
- "modifiedItemForeground": "#FF79C5",
+ "modifiedItemForeground": "#9580ff",
"nonEditableBackground": "#282A36",
"padding": "5,5,5,5",
"selectionBackground": "#44475A",
@@ -117,62 +135,64 @@
"background": "#282A36",
"foreground": "#F8F8F2",
"infoForeground": "#6272A4",
- "matchForeground": "#FF79C5",
- "matchSelectionForeground": "#FF79C5",
+ "matchForeground": "#9580ff",
+ "matchSelectionForeground": "#9580ff",
"nonFocusedState": "false",
- "selectedGrayedForeground": "#8BE9FD",
- "selectionGrayForeground": "#8BE9FD",
+ "selectedGrayedForeground": "#FFFFFF",
+ "selectionGrayForeground": "#FFFFFF",
"selectionInactiveInfoForeground": "#6272A4",
"selectionInactiveBackground": "#44475A50",
"selectionBackground": "#44475A80",
- "selectionForeground": "#8BE9FD",
- "selectionInfoForeground": "#8BE9FD"
+ "selectionForeground": "#FFFFFF",
+ "selectionInfoForeground": "#FFFFFF"
},
"Component": {
"arc": 4,
- "borderColor": "#6272A4",
+ "borderColor": "#44475a",
"disabledBorderColor": "#393C4B",
- "focusColor": "#FF79C5",
- "focusedBorderColor": "#FF79C5",
- "hoverIconColor": "#FF79C5",
+ "focusColor": "#9580ff",
+ "focusedBorderColor": "#9580ff",
+ "hoverIconColor": "#9580ff",
"infoForeground": "#6272A4",
"iconColor": "#F8F8F2"
},
"control": "#282A36",
"controlText": "#6272A4",
"Counter": {
- "background": "#FF79C5",
- "foreground": "#8BE9FD"
+ "background": "#9580ff",
+ "foreground": "#FFFFFF"
},
"Debugger": {
"Variables": {
"collectingDataForeground": "#6272A4",
- "changedValueForeground": "#FF79C5",
- "errorMessageForeground": "#FF79C6",
+ "changedValueForeground": "#9580ff",
+ "errorMessageForeground": "#8BE9FD",
"evaluatingExpressionForeground": "#6272A4",
"exceptionForeground": "#50FA7B",
- "modifyingValueForeground": "#FF79C5",
- "valueForeground": "#FF79C5"
+ "modifyingValueForeground": "#9580ff",
+ "valueForeground": "#9580ff"
}
},
"DebuggerTabs": {
- "selectedBackground": "#6272A4",
- "underlinedTabBackground": "#6272A4"
+ "selectedBackground": "#44475a",
+ "underlinedTabBackground": "#44475a"
},
"DebuggerPopup": {
- "borderColor": "#6272A4"
+ "borderColor": "#44475a"
},
"DefaultTabs": {
"background": "#282A36",
"borderColor": "#282A36",
"hoverBackground": "#44475A",
"hoverColor": "#191A21",
- "hoverMaskColor": "#6272A4",
+ "hoverMaskColor": "#44475a",
+ "inactiveColoredTabBackground": "#282A36",
"inactiveColoredFileBackground": "#393C4B",
- "inactiveUnderlineColor": "#6272A4",
+ "inactiveUnderlineColor": "#9580ff",
"inactiveMaskColor": "#191A21",
- "underlineColor": "#FF79C5",
- "underlinedTabBackground": "#44475A"
+ "underlineColor": "#9580ff",
+ "underlinedTabBackground": "#44475A",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#282A36",
"DialogWrapper.southPanelBackground": "#282A36",
@@ -189,7 +209,7 @@
},
"EditorPane": {
"background": "#191A21",
- "caretForeground": "#FF79C5",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveBackground": "#282A36",
"inactiveForeground": "#6272A4",
@@ -198,30 +218,32 @@
},
"EditorTabs": {
"borderColor": "#282A36",
- "hoverColor": "#6272A4",
- "hoverMaskColor": "#6272A4",
+ "hoverBackground": "#44475a",
+ "hoverColor": "#44475a",
+ "hoverMaskColor": "#44475a",
"inactiveMaskColor": "#282A36",
- "inactiveColoredFileBackground": "#282A362",
+ "inactiveColoredFileBackground": "#282A36",
"inactiveUnderlineColor": "#6272A4",
"selectedForeground": "#F8F8F2",
"selectedBackground": "#44475A",
- "underlineColor": "#FF79C5",
- "underlinedTabBackground": "#44475A"
+ "underlineColor": "#9580ff",
+ "underlinedTabBackground": "#44475A",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#282A36",
"borderColor": "#282A36",
- "hoverBackground": "#6272A4",
- "hoverColor": "#6272A4",
- "inactiveUnderlineColor": "#FF79C5",
- "underlineColor": "#FF79C5",
+ "hoverBackground": "#44475a",
+ "hoverColor": "#44475a",
+ "inactiveUnderlineColor": "#9580ff",
+ "underlineColor": "#9580ff",
"underlinedTabBackground": "#44475A",
"underlinedTabForeground": "#F8F8F2"
},
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#313341",
+ "Yellow": "#34353D",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -239,19 +261,20 @@
"Focus.color": "#21222C",
"FormattedTextField": {
"background": "#191A21",
- "caretForeground": "#FF79C5",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveBackground": "#393C4B",
"inactiveForeground": "#6272A4",
"selectionForeground": "#8BE9FD",
"selectionBackground": "#44475A"
},
+ "GotItTooltip.borderColor": "#1D2228",
"Group": {
"disabledSeparatorColor": "#21222C",
"separatorColor": "#21222C"
},
"GutterTooltip": {
- "infoForeground": "#F8F8F2",
+ "infoForeground": "#6272A4",
"lineSeparatorColor": "#282A36"
},
"HeaderColor": {
@@ -265,7 +288,7 @@
"infoForeground": "#6272A4",
"shortcutForeground": "#6272A4"
},
- "Hyperlink.linkColor": "#FF79C5",
+ "Hyperlink.linkColor": "#9580ff",
"inactiveCaption": "#282A36",
"inactiveCaptionBorder": "#282A36",
"inactiveCaptionText": "#6272A4",
@@ -288,23 +311,26 @@
"disabledText": "#6272A4",
"foreground": "#F8F8F2",
"infoForeground": "#6272A4",
- "selectedForeground": "#8BE9FD"
+ "selectedForeground": "#8BE9FD",
+ "selectedDisabledForeground": "#F8F8F2"
},
"Link": {
- "activeForeground": "#FF79C5",
- "hoverForeground": "#FF79C5",
- "pressedForeground": "#FF79C5",
+ "activeForeground": "#9580ff",
+ "hoverForeground": "#9580ff",
+ "pressedForeground": "#9580ff",
"secondaryForeground": "#6272A4",
- "visitedForeground": "#FF79C5"
+ "visitedForeground": "#9580ff"
},
- "link.foreground": "#FF79C5",
+ "link.foreground": "#9580ff",
"List": {
"background": "#282A36",
"foreground": "#F8F8F2",
+ "hoverBackground": "#44475A70",
+ "hoverInactiveBackground": "#44475A",
"selectionBackground": "#44475A50",
- "selectionForeground": "#8BE9FD",
+ "selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#8BE9FD",
- "selectionInactiveBackground": "#44475A50"
+ "selectionInactiveBackground": "#44475A70"
},
"material": {
"background": "#282A36",
@@ -313,19 +339,19 @@
"foreground": "#F8F8F2",
"mergeCommits": "#393C4B",
"primaryColor": "#6272A4",
- "selectionForeground": "#8BE9FD",
+ "selectionForeground": "#FFFFFF",
"tab.backgroundColor": "#282A36",
- "tab.borderColor": "#FF79C5",
+ "tab.borderColor": "#9580ff",
"tagColor": "#6272A4"
},
"MemoryIndicator": {
"allocatedBackground": "#282A36",
- "usedColor": "#6272A4",
- "usedBackground": "#6272A4"
+ "usedColor": "#44475a",
+ "usedBackground": "#44475a"
},
"Menu": {
"acceleratorForeground": "#6272A4",
- "acceleratorSelectionForeground": "#8BE9FD",
+ "acceleratorSelectionForeground": "#FFFFFF",
"background": "#282A36",
"border": "4,2,4,2",
"borderColor": "#282A36",
@@ -333,7 +359,7 @@
"disabledForeground": "#6272A4",
"foreground": "#F8F8F2",
"selectionBackground": "#44475A",
- "selectionForeground": "#8BE9FD",
+ "selectionForeground": "#FFFFFF",
"separatorColor": "#21222C"
},
"MenuBar": {
@@ -344,19 +370,19 @@
"foreground": "#F8F8F2",
"highlight": "#282A36",
"selectionBackground": "#44475A",
- "selectionForeground": "#8BE9FD",
+ "selectionForeground": "#FFFFFF",
"shadow": "#191A21"
},
"MenuItem": {
"acceleratorForeground": "#6272A4",
- "acceleratorSelectionForeground": "#8BE9FD",
+ "acceleratorSelectionForeground": "#FFFFFF",
"border": "4,2,4,2",
"background": "#282A36",
"disabledBackground": "#282A36",
"disabledForeground": "#6272A4",
"foreground": "#F8F8F2",
"selectionBackground": "#44475A",
- "selectionForeground": "#8BE9FD"
+ "selectionForeground": "#FFFFFF"
},
"NavBar": {
"arrowColor": "#F8F8F2",
@@ -370,7 +396,7 @@
"background": "#191A21"
}
},
- "NewPSD.warning": "#FF79C5",
+ "NewPSD.warning": "#9580ff",
"Notification": {
"background": "#1D2228",
"borderColor": "#1D2228",
@@ -399,7 +425,7 @@
},
"Outline": {
"color": "#393C4B",
- "focusedColor": "#FF79C5",
+ "focusedColor": "#9580ff",
"disabledColor": "#6272A4"
},
"Panel": {
@@ -409,8 +435,8 @@
"ParameterInfo": {
"background": "#282A36",
"borderColor": "#44475A",
- "currentOverloadBackground": "#44475A",
- "currentParameterForeground": "#FF79C5",
+ "currentOverloadBackground": "#44475a",
+ "currentParameterForeground": "#9580ff",
"disabledForeground": "#6272A4",
"foreground": "#F8F8F2",
"infoForeground": "#6272A4",
@@ -418,8 +444,8 @@
},
"PasswordField": {
"background": "#191A21",
- "capsLockIconColor": "#FF79C5",
- "caretForeground": "#FF79C5",
+ "capsLockIconColor": "#9580ff",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveForeground": "#6272A4",
"selectionBackground": "#44475A",
@@ -428,21 +454,22 @@
"Plugins": {
"background": "#282A36",
"disabledForeground": "#6272A4",
- "eapTagBackground": "#6272A4",
+ "eapTagBackground": "#44475a",
+ "hoverBackground": "#44475A70",
"lightSelectionBackground": "#44475A",
- "paidTagBackground": "#6272A4",
+ "paidTagBackground": "#44475a",
"selectionBackground": "#44475A",
- "tagForeground": "#FF79C5",
- "tagBackground": "#6272A4",
- "trialTagBackground": "#6272A4",
+ "tagForeground": "#9580ff",
+ "tagBackground": "#44475a",
+ "trialTagBackground": "#44475a",
"Button": {
"installBackground": "#393C4B",
"installBorderColor": "#393C4B",
"installForeground": "#F8F8F2",
- "installFocusedBackground": "#6272A4",
+ "installFocusedBackground": "#44475a",
"installFillForeground": "#6272A4",
"installFillBackground": "#393C4B",
- "updateBackground": "#393C4B",
+ "updateBackground": "#9580ff",
"updateBorderColor": "#393C4B",
"updateForeground": "#F8F8F2"
},
@@ -456,7 +483,7 @@
},
"Tab": {
"hoverBackground": "#44475A",
- "selectedForeground": "#8BE9FD",
+ "selectedForeground": "#FFFFFF",
"selectedBackground": "#44475A"
}
},
@@ -464,7 +491,7 @@
"Advertiser": {
"background": "#282A36",
"borderColor": "#282A36",
- "foreground": "#FF79C5"
+ "foreground": "#9580ff"
},
"borderColor": "#191A21",
"inactiveBorderColor": "#282A36",
@@ -492,15 +519,15 @@
"PopupMenuSeparator.stripeIndent": 5,
"ProgressBar": {
"background": "#282A36",
- "foreground": "#FF79C5",
- "indeterminateEndColor": "#FF79C5",
- "indeterminateStartColor": "#FF79C5",
- "progressColor": "#FF79C5",
- "selectionBackground": "#6272A4",
- "trackColor": "#6272A4"
+ "foreground": "#9580ff",
+ "indeterminateEndColor": "#9580ff",
+ "indeterminateStartColor": "#9580ff",
+ "progressColor": "#9580ff",
+ "selectionBackground": "#44475a",
+ "trackColor": "#44475a"
},
"PsiViewer": {
- "referenceHighlightColor": "#FF79C5"
+ "referenceHighlightColor": "#9580ff"
},
"RadioButton": {
"background": "#282A36",
@@ -515,39 +542,40 @@
"disabledForeground": "#6272A4",
"foreground": "#F8F8F2",
"selectionBackground": "#44475A",
- "selectionForeground": "#8BE9FD"
+ "selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#21222C",
"ScrollBar": {
"background": "#282A36",
- "hoverThumbBorderColor": "#FF79C5",
- "hoverThumbColor": "#FF79C5",
+ "hoverThumbBorderColor": "#9580ff",
+ "hoverThumbColor": "#9580ff",
"hoverTrackColor": "#282A3630",
"Mac": {
- "hoverThumbBorderColor": "#FF79C5",
- "hoverThumbColor": "#FF79C5",
+ "hoverThumbBorderColor": "#9580ff",
+ "hoverThumbColor": "#9580ff",
"hoverTrackColor": "#282A3630",
- "thumbBorderColor": "#FF79C570",
- "thumbColor": "#FF79C570",
+ "thumbBorderColor": "#9580ff70",
+ "thumbColor": "#9580ff70",
"trackColor": "#282A3630",
"Transparent": {
- "hoverThumbBorderColor": "#FF79C5",
- "hoverThumbColor": "#FF79C5",
+ "hoverThumbBorderColor": "#9580ff",
+ "hoverThumbColor": "#9580ff",
"hoverTrackColor": "#282A3630",
- "thumbBorderColor": "#FF79C570",
- "thumbColor": "#FF79C570",
+ "thumbBorderColor": "#9580ff70",
+ "thumbColor": "#9580ff70",
"trackColor": "#282A3630"
}
},
- "thumb": "#6272A4",
- "thumbBorderColor": "#FF79C570",
- "thumbColor": "#FF79C570",
+ "thumb": "#44475a",
+ "thumbBorderColor": "#9580ff70",
+ "thumbColor": "#9580ff70",
"trackColor": "#282A3630",
"Transparent": {
- "hoverThumbBorderColor": "#FF79C5",
- "hoverThumbColor": "#FF79C5",
+ "hoverThumbBorderColor": "#9580ff",
+ "hoverThumbColor": "#9580ff",
"hoverTrackColor": "#282A3630",
- "thumbBorderColor": "#FF79C570",
- "thumbColor": "#FF79C570",
+ "thumbBorderColor": "#9580ff70",
+ "thumbColor": "#9580ff70",
"trackColor": "#282A3630"
}
},
@@ -571,14 +599,23 @@
"Tab": {
"active.foreground": "#8BE9FD",
"selectedForeground": "#8BE9FD",
- "selectedBackground": "#6272A4"
+ "selectedBackground": "#44475a"
}
},
"SearchMatch": {
- "endBackground": "#FF79C5",
- "startBackground": "#FF79C5"
+ "endBackground": "#9580ff",
+ "startBackground": "#9580ff",
+ "endColor": "#9580ff",
+ "startColor": "#9580ff"
},
"SearchField.errorBackground": "#1D2228",
+ "SearchOption": {
+ "selectedBackground": "#44475A"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#6272A4",
+ "Repeated.File.Foreground": "#F8F8F2"
+ },
"Separator": {
"background": "#282A36",
"foreground": "#282A36",
@@ -589,17 +626,17 @@
},
"Slider": {
"background": "#282A36",
- "buttonBorderColor": "#FF79C5",
- "buttonColor": "#FF79C5",
+ "buttonBorderColor": "#9580ff",
+ "buttonColor": "#9580ff",
"foreground": "#F8F8F2",
"majorTickLength": 6,
"tickColor": "#282A36",
"trackColor": "#44475A",
"trackWidth": 7,
- "thumb": "#FF79C5"
+ "thumb": "#9580ff"
},
"SpeedSearch": {
- "background": "#6272A4",
+ "background": "#44475a",
"borderColor": "#21222C",
"foreground": "#F8F8F2",
"errorForeground": "#F8F8F2"
@@ -616,11 +653,13 @@
},
"SplitPaneDivider.draggingColor": "#282A36",
"StatusBar": {
- "borderColor": "#282A36"
+ "borderColor": "#282A36",
+ "hoverBackground": "#44475a",
+ "LightEditBackground": "#44475A"
},
"TabbedPane": {
"background": "#282A36",
- "contentAreaColor": "#6272A4",
+ "contentAreaColor": "#44475a",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#21222C",
"disabledForeground": "#6272A4",
@@ -630,7 +669,7 @@
"fontSizeOffset": 0,
"foreground": "#F8F8F2",
"highlight": "#21222C",
- "hoverColor": "#6272A4",
+ "hoverColor": "#44475a",
"labelShift": 0,
"selectedForeground": "#8BE9FD",
"selectedLabelShift": 0,
@@ -639,27 +678,31 @@
"tabHeight": 32,
"tabInsets": "5,10,5,10",
"tabSelectionHeight": 2,
- "underlineColor": "#FF79C5"
+ "underlineColor": "#9580ff"
},
"TabbedPane.mt.tab.background": "#191A21",
"Table": {
+ "alternativeRowBackground": "#191A21",
"background": "#282A36",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
- "dropLineColor": "#FF79C5",
- "dropLineShortColor": "#FF79C5",
+ "disabledForeground": "#6272A4",
+ "dropLineColor": "#9580ff",
+ "dropLineShortColor": "#9580ff",
"focusCellBackground": "#44475A",
"focusCellForeground": "#8BE9FD",
"foreground": "#F8F8F2",
"gridColor": "#282A36",
"highlightOuter": "#44475A",
+ "hoverBackground": "#44475A70",
+ "hoverInactiveBackground": "#44475A",
"lightSelectionForeground": "#8BE9FD",
"lightSelectionInactiveForeground": "#6272A4",
"lightSelectionInactiveBackground": "#282A36",
"selectionBackground": "#44475A",
"selectionForeground": "#8BE9FD",
"selectionInactiveBackground": "#44475A",
- "selectionInactiveForeground": "#8BE9FD",
+ "selectionInactiveForeground": "#FFFFFF",
"sortIconColor": "#F8F8F2",
"stripeColor": "#191A21"
},
@@ -680,7 +723,7 @@
"textText": "#6272A4",
"TextArea": {
"background": "#191A21",
- "caretForeground": "#FF79C5",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveForeground": "#6272A4",
"selectionBackground": "#44475A",
@@ -688,7 +731,7 @@
},
"TextField": {
"background": "#191A21",
- "caretForeground": "#FF79C5",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveForeground": "#6272A4",
"selectionBackground": "#44475A",
@@ -696,7 +739,7 @@
},
"TextPane": {
"background": "#191A21",
- "caretForeground": "#FF79C5",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveForeground": "#6272A4",
"selectionBackground": "#44475A",
@@ -704,7 +747,7 @@
},
"TitlePane": {
"background": "#191A21",
- "Button.hoverBackground": "#6272A4",
+ "Button.hoverBackground": "#44475a",
"inactiveBackground": "#282A36",
"infoForeground": "#6272A4",
"inactiveInfoForeground": "#6272A4"
@@ -717,8 +760,8 @@
"foreground": "#F8F8F2",
"offForeground": "#282A36",
"offBackground": "#282A36",
- "onBackground": "#FF79C5",
- "onForeground": "#FF79C5"
+ "onBackground": "#9580ff",
+ "onForeground": "#9580ff"
},
"ToolBar": {
"background": "#191A21",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#282A36",
"Actions.infoForeground": "#6272A4",
- "background": "#282A36",
- "borderColor": "#6272A4",
+ "background": "#1D2228",
+ "borderColor": "#21222C",
"foreground": "#F8F8F2",
"infoForeground": "#6272A4",
"separatorColor": "#21222C",
@@ -751,50 +794,93 @@
"background": "#282A36"
},
"HeaderTab": {
- "hoverBackground": "#6272A4",
- "hoverInactiveBackground": "#282A36",
- "inactiveUnderlineColor": "#FF79C5",
+ "borderColor": "#44475a",
+ "hoverBackground": "#44475a",
+ "hoverInactiveBackground": "#44475a",
+ "inactiveUnderlineColor": "#9580ff",
"selectedBackground": "#191A21",
"selectedInactiveBackground": "#191A21",
- "underlineColor": "#FF79C5",
- "underlinedTabBackground": "#6272A4",
- "underlinedTabInactiveBackground": "#282A36"
+ "underlineColor": "#9580ff",
+ "underlinedTabBackground": "#44475A",
+ "underlinedTabInactiveBackground": "#282A36",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#F8F8F2"
}
},
"Tree": {
"background": "#191A21",
"foreground": "#6272A4",
"hash": "#21222C",
- "modifiedItemForeground": "#FF79C5",
+ "hoverBackground": "#44475A70",
+ "hoverInactiveBackground": "#44475A",
+ "modifiedItemForeground": "#9580ff",
"rowHeight": 28,
- "selectionBackground": "#44475A50",
- "selectionForeground": "#8BE9FD",
- "selectionInactiveForeground": "#8BE9FD",
- "selectionInactiveBackground": "#44475A50",
+ "selectionBackground": "#44475A70",
+ "selectionForeground": "#FFFFFF",
+ "selectionInactiveForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#44475A70",
"textBackground": "#191A21"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#21222C",
- "ColorPicker.background": "#282A36",
- "ColorPicker.foreground": "#F8F8F2",
- "Component.borderColor": "#21222C",
- "Component.background": "#282A36",
- "Component.foreground": "#F8F8F2",
- "Connector.borderColor": "#21222C",
- "Connector.hoverBorderColor": "#6272A4",
+ "Canvas.background": "#191A21",
+ "ColorPicker": {
+ "background": "#282A36",
+ "foreground": "#F8F8F2"
+ },
+ "Component": {
+ "borderColor": "#21222C",
+ "background": "#282A36",
+ "foreground": "#F8F8F2",
+ "hoverBorderColor": "#44475a"
+ },
+ "Connector": {
+ "borderColor": "#21222C",
+ "hoverBorderColor": "#44475a"
+ },
"Canvas.background": "#191A21",
"highStroke.foreground": "#F8F8F2",
"Label.foreground": "#6272A4",
- "List.selectionBackground": "#44475A50",
- "Panel.borderColor": "#21222C",
- "Panel.background": "#282A36",
+ "List.selectionBackground": "#44475A70",
+ "motion": {
+ "borderColor": "#21222C",
+ "Component.foreground": "#F8F8F2",
+ "ConstraintSetText.foreground": "#6272A4",
+ "ConstraintSet.background": "#282A36",
+ "CSPanel.SelectedFocusBackground": "#44475A",
+ "CSPanel.SelectedBackground": "#44475A70",
+ "cs_FocusText.infoForeground": "#6272A4",
+ "CursorTextColor.foreground": "#F8F8F2",
+ "HoverColor.disabledBackground": "#6272A4",
+ "motionGraph.background": "#282A36",
+ "Notification.background": "#1D2228",
+ "ourAvg.background": "#282A36",
+ "ourCS.background": "#282A36",
+ "ourCS_Border.borderColor": "#21222C",
+ "ourCS_TextColor.foreground": "#6272A4",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#44475A",
+ "ourCS_SelectedBorder.pressedBorderColor": "#44475a",
+ "ourML_BarColor.separatorColor": "#21222C",
+ "PrimaryPanel.background": "#191A21",
+ "SecondaryPanel.background": "#282A36",
+ "SecondaryPanel.header.foreground": "#6272A4",
+ "SecondaryPanel.header.background": "#191A21",
+ "timeLine.disabledBorderColor": "#21222C"
+ },
+ "Panel": {
+ "borderColor": "#21222C",
+ "background": "#282A36"
+ },
"percent.foreground": "#F8F8F2",
- "Placeholder.background": "#282A36",
- "Placeholder.borderColor": "#21222C",
- "Placeholder.foreground": "#F8F8F2",
- "Placeholder.selectedForeground": "#8BE9FD",
+ "Placeholder": {
+ "background": "#282A36",
+ "borderColor": "#21222C",
+ "foreground": "#F8F8F2",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#282A36",
"stroke.acceleratorForeground": "#6272A4"
},
@@ -809,16 +895,16 @@
"selectedBranchBackground": "#282A36"
},
"GitCommits": {
- "graphColor": "#6272A4"
+ "graphColor": "#44475a"
},
"GitLog": {
- "localBranchIconColor": "#FF79C5",
+ "localBranchIconColor": "#9580ff",
"otherIconColor": "#6272A4",
"remoteBranchIconColor": "#F8F8F2",
"tagIconColor": "#6272A4"
},
"HgLog": {
- "branchIconColor": "#FF79C5",
+ "branchIconColor": "#9580ff",
"bookmarkIconColor": "#8BE9FD",
"closedBranchIconColor": "#6272A4",
"localTagIconColor": "#6272A4",
@@ -828,11 +914,12 @@
},
"Log": {
"Commit.unmatchedForeground": "#6272A4",
- "Commit.currentBranchBackground": "#282A36"
+ "Commit.currentBranchBackground": "#282A36",
+ "Commit.hoveredBackground": "#44475A70"
},
"RefLabel": {
"foreground": "#8BE9FD",
- "backgroundBase": "#6272A4"
+ "backgroundBase": "#44475a"
}
},
"Viewport": {
@@ -840,16 +927,22 @@
"foreground": "#F8F8F2"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#282A36",
"background": "#282A36",
"borderColor": "#282A36",
"captionBackground": "#191A21",
"captionForeground": "#F8F8F2",
+ "Details.background": "#282A36",
"footerBackground": "#191A21",
"footerForeground": "#F8F8F2",
"headerBackground": "#282A36",
"headerForeground": "#F8F8F2",
+ "List.background": "#191A21",
"separatorColor": "#21222C",
+ "SidePanel.background": "#282A36",
"Projects": {
+ "actions.background": "#191A21",
+ "actions.selectionBackground": "#44475a",
"background": "#282A36",
"selectionBackground": "#44475A",
"selectionInactiveBackground": "#282A36"
@@ -865,46 +958,46 @@
"#43494A": "#191A21",
"#6B6B6B": "#6272A4",
"#A7A7A7": "#282A36",
- "#3D6185": "#FF79C5",
- "#466D94": "#FF79C5",
+ "#3D6185": "#9580ff",
+ "#466D94": "#9580ff",
"#3C3F41": "#282A36",
"#545556": "#6272A4",
"#606060": "#6272A4",
"#9AA7B0": "#F8F8F2",
- "#675133": "#FF79C5",
+ "#675133": "#9580ff",
"Actions.Blue": "#50FA78",
"Actions.Green": "#F1FA8C",
"Actions.Grey": "#6272A4",
"Actions.GreyInline": "#6272A4",
"Actions.GreyInline.Dark": "#F8F8F2",
- "Actions.Red": "#FF79C6",
+ "Actions.Red": "#8BE9FD",
"Actions.Yellow": "#50FA7B",
"Checkbox.Background.Default": "#191A21",
"Checkbox.Background.Default.Dark": "#191A21",
- "Checkbox.Background.Disabled": "#313341",
- "Checkbox.Background.Disabled.Dark": "#313341",
+ "Checkbox.Background.Disabled": "#34353D",
+ "Checkbox.Background.Disabled.Dark": "#34353D",
"Checkbox.Border.Default": "#21222C",
"Checkbox.Border.Default.Dark": "#21222C",
"Checkbox.Border.Disabled": "#6272A4",
"Checkbox.Border.Disabled.Dark": "#6272A4",
- "Checkbox.Focus.Thin.Default": "#FF79C5",
- "Checkbox.Focus.Thin.Default.Dark": "#FF79C5",
- "Checkbox.Focus.Wide": "#FF79C5",
- "Checkbox.Focus.Wide.Dark": "#FF79C5",
+ "Checkbox.Focus.Thin.Default": "#9580ff",
+ "Checkbox.Focus.Thin.Default.Dark": "#9580ff",
+ "Checkbox.Focus.Wide": "#9580ff",
+ "Checkbox.Focus.Wide.Dark": "#9580ff",
"Checkbox.Foreground.Disabled": "#6272A4",
"Checkbox.Foreground.Disabled.Dark": "#6272A4",
- "Checkbox.Background.Selected": "#FF79C5",
+ "Checkbox.Background.Selected": "#9580ff",
"Checkbox.Background.Selected.Dark": "#282A36",
- "Checkbox.Border.Selected": "#FF79C5",
- "Checkbox.Border.Selected.Dark": "#FF79C5",
- "Checkbox.Foreground.Selected": "#FF79C5",
- "Checkbox.Foreground.Selected.Dark": "#FF79C5",
+ "Checkbox.Border.Selected": "#9580ff",
+ "Checkbox.Border.Selected.Dark": "#9580ff",
+ "Checkbox.Foreground.Selected": "#9580ff",
+ "Checkbox.Foreground.Selected.Dark": "#9580ff",
"Checkbox.Focus.Thin.Selected": "#F8F8F2",
"Checkbox.Focus.Thin.Selected.Dark": "#F8F8F2",
"Objects.Grey": "#6272A4",
"Objects.Blue": "#50FA78",
- "Objects.RedStatus": "#FF79C6",
- "Objects.Red": "#FF79C6",
+ "Objects.RedStatus": "#8BE9FD",
+ "Objects.Red": "#8BE9FD",
"Objects.Pink": "#FF79C6",
"Objects.Yellow": "#50FA7B",
"Objects.Green": "#F1FA8C",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula.theme.json
index f98bc16b..ad3cca1e 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Dracula.theme.json
@@ -3,34 +3,40 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Dracula.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/dracula.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#6272A4",
"background": "#282A36",
"borderColor": "#21222C",
- "disabledBackground": "#313341",
+ "disabledBackground": "#34353D",
"disabledForeground": "#6272A4",
"disabledText": "#6272A4",
- "focusColor": "#6272A4",
- "focusedBorderColor": "#FF79C5",
+ "focusColor": "#44475a",
+ "focusedBorderColor": "#9580ff",
"foreground": "#F8F8F2",
- "inactiveBackground": "#313341",
+ "inactiveBackground": "#34353D",
"inactiveForeground": "#6272A4",
"infoForeground": "#6272A4",
"selectionBackground": "#44475A",
"selectionBackgroundInactive": "#282A36",
- "selectionForeground": "#8BE9FD",
+ "selectionForeground": "#FFFFFF",
"selectionInactiveBackground": "#282A36",
"separatorColor": "#21222C"
},
"activeCaption": "#282A36",
"ActionButton": {
- "hoverBackground": "#FF79C550",
- "hoverBorderColor": "#FF79C550",
+ "hoverBackground": "#9580ff50",
+ "hoverBorderColor": "#9580ff50",
"hoverSeparatorColor": "#393C4B",
- "focusedBorderColor": "#FF79C550",
- "pressedBackground": "#FF79C550",
- "pressedBorderColor": "#FF79C550"
+ "focusedBorderColor": "#9580ff50",
+ "pressedBackground": "#9580ff50",
+ "pressedBorderColor": "#9580ff50"
},
"Autocomplete": {
"selectionBackground": "#44475A"
@@ -44,8 +50,8 @@
"endBackground": "#44475A",
"endBorderColor": "#44475A",
"foreground": "#8BE9FD",
- "focusColor": "#FF79C5",
- "focusedBorderColor": "#FF79C5",
+ "focusColor": "#9580ff",
+ "focusedBorderColor": "#9580ff",
"shadowColor": "#44475A",
"startBackground": "#44475A",
"startBorderColor": "#44475A"
@@ -54,13 +60,13 @@
"disabledText": "#6272A4",
"endBackground": "#393C4B",
"endBorderColor": "#393C4B",
- "focus": "#6272A4",
- "focusedBorderColor": "#FF79C5",
+ "focus": "#44475a",
+ "focusedBorderColor": "#9580ff",
"foreground": "#6272A4",
- "highlight": "#8BE9FD",
+ "highlight": "#FFFFFF",
"mt.background": "#393C4B",
"mt.foreground": "#6272A4",
- "mt.selectedForeground": "#8BE9FD",
+ "mt.selectedForeground": "#FFFFFF",
"mt.selection.color1": "#44475A",
"mt.selection.color2": "#44475A",
"startBackground": "#393C4B",
@@ -72,12 +78,15 @@
"Tooltip.borderColor": "#21222C",
"Tooltip.background": "#1D2228"
},
- "Content.background": "#191A21",
+ "Content": {
+ "background": "#191A21",
+ "selectionBackground": "#44475A"
+ },
"CheckBox": {
"background": "#282A36",
"disabledText": "#6272A4",
"foreground": "#F8F8F2",
- "select": "#FF79C5"
+ "select": "#9580ff"
},
"CheckBoxMenuItem": {
"acceleratorForeground": "#6272A4",
@@ -89,6 +98,14 @@
"selectionBackground": "#44475A",
"selectionForeground": "#8BE9FD"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#F8F8F2",
+ "AccessEnabled": {
+ "accessDot": "#9580ff",
+ "dropdownBorder": "#282A36",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#282A36",
"foreground": "#F8F8F2",
@@ -104,9 +121,10 @@
},
"background": "#282A36",
"buttonBackground": "#393C4B",
+ "darcula.hoveredArrowButtonForeground": "#9580ff",
"disabledForeground": "#6272A4",
"foreground": "#F8F8F2",
- "modifiedItemForeground": "#FF79C5",
+ "modifiedItemForeground": "#9580ff",
"nonEditableBackground": "#282A36",
"padding": "5,5,5,5",
"selectionBackground": "#44475A",
@@ -117,62 +135,64 @@
"background": "#282A36",
"foreground": "#F8F8F2",
"infoForeground": "#6272A4",
- "matchForeground": "#FF79C5",
- "matchSelectionForeground": "#FF79C5",
+ "matchForeground": "#9580ff",
+ "matchSelectionForeground": "#9580ff",
"nonFocusedState": "false",
- "selectedGrayedForeground": "#8BE9FD",
- "selectionGrayForeground": "#8BE9FD",
+ "selectedGrayedForeground": "#FFFFFF",
+ "selectionGrayForeground": "#FFFFFF",
"selectionInactiveInfoForeground": "#6272A4",
"selectionInactiveBackground": "#44475A50",
"selectionBackground": "#44475A80",
- "selectionForeground": "#8BE9FD",
- "selectionInfoForeground": "#8BE9FD"
+ "selectionForeground": "#FFFFFF",
+ "selectionInfoForeground": "#FFFFFF"
},
"Component": {
"arc": 4,
- "borderColor": "#6272A4",
+ "borderColor": "#44475a",
"disabledBorderColor": "#393C4B",
- "focusColor": "#FF79C5",
- "focusedBorderColor": "#FF79C5",
- "hoverIconColor": "#FF79C5",
+ "focusColor": "#9580ff",
+ "focusedBorderColor": "#9580ff",
+ "hoverIconColor": "#9580ff",
"infoForeground": "#6272A4",
"iconColor": "#F8F8F2"
},
"control": "#282A36",
"controlText": "#6272A4",
"Counter": {
- "background": "#FF79C5",
- "foreground": "#8BE9FD"
+ "background": "#9580ff",
+ "foreground": "#FFFFFF"
},
"Debugger": {
"Variables": {
"collectingDataForeground": "#6272A4",
- "changedValueForeground": "#FF79C5",
- "errorMessageForeground": "#FF79C6",
+ "changedValueForeground": "#9580ff",
+ "errorMessageForeground": "#8BE9FD",
"evaluatingExpressionForeground": "#6272A4",
"exceptionForeground": "#50FA7B",
- "modifyingValueForeground": "#FF79C5",
- "valueForeground": "#FF79C5"
+ "modifyingValueForeground": "#9580ff",
+ "valueForeground": "#9580ff"
}
},
"DebuggerTabs": {
- "selectedBackground": "#6272A4",
- "underlinedTabBackground": "#6272A4"
+ "selectedBackground": "#44475a",
+ "underlinedTabBackground": "#44475a"
},
"DebuggerPopup": {
- "borderColor": "#6272A4"
+ "borderColor": "#44475a"
},
"DefaultTabs": {
"background": "#282A36",
"borderColor": "#282A36",
"hoverBackground": "#44475A",
"hoverColor": "#282A36",
- "hoverMaskColor": "#6272A4",
+ "hoverMaskColor": "#44475a",
+ "inactiveColoredTabBackground": "#282A36",
"inactiveColoredFileBackground": "#393C4B",
- "inactiveUnderlineColor": "#6272A4",
+ "inactiveUnderlineColor": "#9580ff",
"inactiveMaskColor": "#282A36",
- "underlineColor": "#FF79C5",
- "underlinedTabBackground": "#44475A"
+ "underlineColor": "#9580ff",
+ "underlinedTabBackground": "#44475A",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#282A36",
"DialogWrapper.southPanelBackground": "#282A36",
@@ -189,7 +209,7 @@
},
"EditorPane": {
"background": "#282A36",
- "caretForeground": "#FF79C5",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveBackground": "#282A36",
"inactiveForeground": "#6272A4",
@@ -198,30 +218,32 @@
},
"EditorTabs": {
"borderColor": "#282A36",
- "hoverColor": "#6272A4",
- "hoverMaskColor": "#6272A4",
+ "hoverBackground": "#44475a",
+ "hoverColor": "#44475a",
+ "hoverMaskColor": "#44475a",
"inactiveMaskColor": "#282A36",
- "inactiveColoredFileBackground": "#282A362",
+ "inactiveColoredFileBackground": "#282A36",
"inactiveUnderlineColor": "#6272A4",
"selectedForeground": "#F8F8F2",
"selectedBackground": "#44475A",
- "underlineColor": "#FF79C5",
- "underlinedTabBackground": "#44475A"
+ "underlineColor": "#9580ff",
+ "underlinedTabBackground": "#44475A",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#282A36",
"borderColor": "#282A36",
- "hoverBackground": "#6272A4",
- "hoverColor": "#6272A4",
- "inactiveUnderlineColor": "#FF79C5",
- "underlineColor": "#FF79C5",
+ "hoverBackground": "#44475a",
+ "hoverColor": "#44475a",
+ "inactiveUnderlineColor": "#9580ff",
+ "underlineColor": "#9580ff",
"underlinedTabBackground": "#44475A",
"underlinedTabForeground": "#F8F8F2"
},
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#313341",
+ "Yellow": "#34353D",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -239,19 +261,20 @@
"Focus.color": "#21222C",
"FormattedTextField": {
"background": "#282A36",
- "caretForeground": "#FF79C5",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveBackground": "#393C4B",
"inactiveForeground": "#6272A4",
"selectionForeground": "#8BE9FD",
"selectionBackground": "#44475A"
},
+ "GotItTooltip.borderColor": "#1D2228",
"Group": {
"disabledSeparatorColor": "#21222C",
"separatorColor": "#21222C"
},
"GutterTooltip": {
- "infoForeground": "#F8F8F2",
+ "infoForeground": "#6272A4",
"lineSeparatorColor": "#282A36"
},
"HeaderColor": {
@@ -265,7 +288,7 @@
"infoForeground": "#6272A4",
"shortcutForeground": "#6272A4"
},
- "Hyperlink.linkColor": "#FF79C5",
+ "Hyperlink.linkColor": "#9580ff",
"inactiveCaption": "#282A36",
"inactiveCaptionBorder": "#282A36",
"inactiveCaptionText": "#6272A4",
@@ -288,23 +311,26 @@
"disabledText": "#6272A4",
"foreground": "#F8F8F2",
"infoForeground": "#6272A4",
- "selectedForeground": "#8BE9FD"
+ "selectedForeground": "#8BE9FD",
+ "selectedDisabledForeground": "#F8F8F2"
},
"Link": {
- "activeForeground": "#FF79C5",
- "hoverForeground": "#FF79C5",
- "pressedForeground": "#FF79C5",
+ "activeForeground": "#9580ff",
+ "hoverForeground": "#9580ff",
+ "pressedForeground": "#9580ff",
"secondaryForeground": "#6272A4",
- "visitedForeground": "#FF79C5"
+ "visitedForeground": "#9580ff"
},
- "link.foreground": "#FF79C5",
+ "link.foreground": "#9580ff",
"List": {
"background": "#282A36",
"foreground": "#F8F8F2",
+ "hoverBackground": "#44475A70",
+ "hoverInactiveBackground": "#44475A",
"selectionBackground": "#44475A50",
- "selectionForeground": "#8BE9FD",
+ "selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#8BE9FD",
- "selectionInactiveBackground": "#44475A50"
+ "selectionInactiveBackground": "#44475A70"
},
"material": {
"background": "#282A36",
@@ -313,19 +339,19 @@
"foreground": "#F8F8F2",
"mergeCommits": "#393C4B",
"primaryColor": "#6272A4",
- "selectionForeground": "#8BE9FD",
+ "selectionForeground": "#FFFFFF",
"tab.backgroundColor": "#282A36",
- "tab.borderColor": "#FF79C5",
+ "tab.borderColor": "#9580ff",
"tagColor": "#6272A4"
},
"MemoryIndicator": {
"allocatedBackground": "#282A36",
- "usedColor": "#6272A4",
- "usedBackground": "#6272A4"
+ "usedColor": "#44475a",
+ "usedBackground": "#44475a"
},
"Menu": {
"acceleratorForeground": "#6272A4",
- "acceleratorSelectionForeground": "#8BE9FD",
+ "acceleratorSelectionForeground": "#FFFFFF",
"background": "#282A36",
"border": "4,2,4,2",
"borderColor": "#282A36",
@@ -333,7 +359,7 @@
"disabledForeground": "#6272A4",
"foreground": "#F8F8F2",
"selectionBackground": "#44475A",
- "selectionForeground": "#8BE9FD",
+ "selectionForeground": "#FFFFFF",
"separatorColor": "#21222C"
},
"MenuBar": {
@@ -344,19 +370,19 @@
"foreground": "#F8F8F2",
"highlight": "#282A36",
"selectionBackground": "#44475A",
- "selectionForeground": "#8BE9FD",
+ "selectionForeground": "#FFFFFF",
"shadow": "#282A36"
},
"MenuItem": {
"acceleratorForeground": "#6272A4",
- "acceleratorSelectionForeground": "#8BE9FD",
+ "acceleratorSelectionForeground": "#FFFFFF",
"border": "4,2,4,2",
"background": "#282A36",
"disabledBackground": "#282A36",
"disabledForeground": "#6272A4",
"foreground": "#F8F8F2",
"selectionBackground": "#44475A",
- "selectionForeground": "#8BE9FD"
+ "selectionForeground": "#FFFFFF"
},
"NavBar": {
"arrowColor": "#F8F8F2",
@@ -370,7 +396,7 @@
"background": "#282A36"
}
},
- "NewPSD.warning": "#FF79C5",
+ "NewPSD.warning": "#9580ff",
"Notification": {
"background": "#1D2228",
"borderColor": "#1D2228",
@@ -399,7 +425,7 @@
},
"Outline": {
"color": "#393C4B",
- "focusedColor": "#FF79C5",
+ "focusedColor": "#9580ff",
"disabledColor": "#6272A4"
},
"Panel": {
@@ -409,8 +435,8 @@
"ParameterInfo": {
"background": "#282A36",
"borderColor": "#44475A",
- "currentOverloadBackground": "#44475A",
- "currentParameterForeground": "#FF79C5",
+ "currentOverloadBackground": "#44475a",
+ "currentParameterForeground": "#9580ff",
"disabledForeground": "#6272A4",
"foreground": "#F8F8F2",
"infoForeground": "#6272A4",
@@ -418,8 +444,8 @@
},
"PasswordField": {
"background": "#282A36",
- "capsLockIconColor": "#FF79C5",
- "caretForeground": "#FF79C5",
+ "capsLockIconColor": "#9580ff",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveForeground": "#6272A4",
"selectionBackground": "#44475A",
@@ -428,21 +454,22 @@
"Plugins": {
"background": "#282A36",
"disabledForeground": "#6272A4",
- "eapTagBackground": "#6272A4",
+ "eapTagBackground": "#44475a",
+ "hoverBackground": "#44475A70",
"lightSelectionBackground": "#44475A",
- "paidTagBackground": "#6272A4",
+ "paidTagBackground": "#44475a",
"selectionBackground": "#44475A",
- "tagForeground": "#FF79C5",
- "tagBackground": "#6272A4",
- "trialTagBackground": "#6272A4",
+ "tagForeground": "#9580ff",
+ "tagBackground": "#44475a",
+ "trialTagBackground": "#44475a",
"Button": {
"installBackground": "#393C4B",
"installBorderColor": "#393C4B",
"installForeground": "#F8F8F2",
- "installFocusedBackground": "#6272A4",
+ "installFocusedBackground": "#44475a",
"installFillForeground": "#6272A4",
"installFillBackground": "#393C4B",
- "updateBackground": "#393C4B",
+ "updateBackground": "#9580ff",
"updateBorderColor": "#393C4B",
"updateForeground": "#F8F8F2"
},
@@ -456,7 +483,7 @@
},
"Tab": {
"hoverBackground": "#44475A",
- "selectedForeground": "#8BE9FD",
+ "selectedForeground": "#FFFFFF",
"selectedBackground": "#44475A"
}
},
@@ -464,7 +491,7 @@
"Advertiser": {
"background": "#282A36",
"borderColor": "#282A36",
- "foreground": "#FF79C5"
+ "foreground": "#9580ff"
},
"borderColor": "#191A21",
"inactiveBorderColor": "#282A36",
@@ -492,15 +519,15 @@
"PopupMenuSeparator.stripeIndent": 5,
"ProgressBar": {
"background": "#282A36",
- "foreground": "#FF79C5",
- "indeterminateEndColor": "#FF79C5",
- "indeterminateStartColor": "#FF79C5",
- "progressColor": "#FF79C5",
- "selectionBackground": "#6272A4",
- "trackColor": "#6272A4"
+ "foreground": "#9580ff",
+ "indeterminateEndColor": "#9580ff",
+ "indeterminateStartColor": "#9580ff",
+ "progressColor": "#9580ff",
+ "selectionBackground": "#44475a",
+ "trackColor": "#44475a"
},
"PsiViewer": {
- "referenceHighlightColor": "#FF79C5"
+ "referenceHighlightColor": "#9580ff"
},
"RadioButton": {
"background": "#282A36",
@@ -515,39 +542,40 @@
"disabledForeground": "#6272A4",
"foreground": "#F8F8F2",
"selectionBackground": "#44475A",
- "selectionForeground": "#8BE9FD"
+ "selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#21222C",
"ScrollBar": {
"background": "#282A36",
- "hoverThumbBorderColor": "#FF79C5",
- "hoverThumbColor": "#FF79C5",
+ "hoverThumbBorderColor": "#9580ff",
+ "hoverThumbColor": "#9580ff",
"hoverTrackColor": "#282A3630",
"Mac": {
- "hoverThumbBorderColor": "#FF79C5",
- "hoverThumbColor": "#FF79C5",
+ "hoverThumbBorderColor": "#9580ff",
+ "hoverThumbColor": "#9580ff",
"hoverTrackColor": "#282A3630",
- "thumbBorderColor": "#FF79C570",
- "thumbColor": "#FF79C570",
+ "thumbBorderColor": "#9580ff70",
+ "thumbColor": "#9580ff70",
"trackColor": "#282A3630",
"Transparent": {
- "hoverThumbBorderColor": "#FF79C5",
- "hoverThumbColor": "#FF79C5",
+ "hoverThumbBorderColor": "#9580ff",
+ "hoverThumbColor": "#9580ff",
"hoverTrackColor": "#282A3630",
- "thumbBorderColor": "#FF79C570",
- "thumbColor": "#FF79C570",
+ "thumbBorderColor": "#9580ff70",
+ "thumbColor": "#9580ff70",
"trackColor": "#282A3630"
}
},
- "thumb": "#6272A4",
- "thumbBorderColor": "#FF79C570",
- "thumbColor": "#FF79C570",
+ "thumb": "#44475a",
+ "thumbBorderColor": "#9580ff70",
+ "thumbColor": "#9580ff70",
"trackColor": "#282A3630",
"Transparent": {
- "hoverThumbBorderColor": "#FF79C5",
- "hoverThumbColor": "#FF79C5",
+ "hoverThumbBorderColor": "#9580ff",
+ "hoverThumbColor": "#9580ff",
"hoverTrackColor": "#282A3630",
- "thumbBorderColor": "#FF79C570",
- "thumbColor": "#FF79C570",
+ "thumbBorderColor": "#9580ff70",
+ "thumbColor": "#9580ff70",
"trackColor": "#282A3630"
}
},
@@ -571,14 +599,23 @@
"Tab": {
"active.foreground": "#8BE9FD",
"selectedForeground": "#8BE9FD",
- "selectedBackground": "#6272A4"
+ "selectedBackground": "#44475a"
}
},
"SearchMatch": {
- "endBackground": "#FF79C5",
- "startBackground": "#FF79C5"
+ "endBackground": "#9580ff",
+ "startBackground": "#9580ff",
+ "endColor": "#9580ff",
+ "startColor": "#9580ff"
},
"SearchField.errorBackground": "#1D2228",
+ "SearchOption": {
+ "selectedBackground": "#44475A"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#6272A4",
+ "Repeated.File.Foreground": "#F8F8F2"
+ },
"Separator": {
"background": "#282A36",
"foreground": "#282A36",
@@ -589,17 +626,17 @@
},
"Slider": {
"background": "#282A36",
- "buttonBorderColor": "#FF79C5",
- "buttonColor": "#FF79C5",
+ "buttonBorderColor": "#9580ff",
+ "buttonColor": "#9580ff",
"foreground": "#F8F8F2",
"majorTickLength": 6,
"tickColor": "#282A36",
"trackColor": "#44475A",
"trackWidth": 7,
- "thumb": "#FF79C5"
+ "thumb": "#9580ff"
},
"SpeedSearch": {
- "background": "#6272A4",
+ "background": "#44475a",
"borderColor": "#21222C",
"foreground": "#F8F8F2",
"errorForeground": "#F8F8F2"
@@ -616,11 +653,13 @@
},
"SplitPaneDivider.draggingColor": "#282A36",
"StatusBar": {
- "borderColor": "#282A36"
+ "borderColor": "#282A36",
+ "hoverBackground": "#44475a",
+ "LightEditBackground": "#44475A"
},
"TabbedPane": {
"background": "#282A36",
- "contentAreaColor": "#6272A4",
+ "contentAreaColor": "#44475a",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#21222C",
"disabledForeground": "#6272A4",
@@ -630,7 +669,7 @@
"fontSizeOffset": 0,
"foreground": "#F8F8F2",
"highlight": "#21222C",
- "hoverColor": "#6272A4",
+ "hoverColor": "#44475a",
"labelShift": 0,
"selectedForeground": "#8BE9FD",
"selectedLabelShift": 0,
@@ -639,27 +678,31 @@
"tabHeight": 32,
"tabInsets": "5,10,5,10",
"tabSelectionHeight": 2,
- "underlineColor": "#FF79C5"
+ "underlineColor": "#9580ff"
},
"TabbedPane.mt.tab.background": "#282A36",
"Table": {
+ "alternativeRowBackground": "#191A21",
"background": "#282A36",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
- "dropLineColor": "#FF79C5",
- "dropLineShortColor": "#FF79C5",
+ "disabledForeground": "#6272A4",
+ "dropLineColor": "#9580ff",
+ "dropLineShortColor": "#9580ff",
"focusCellBackground": "#44475A",
"focusCellForeground": "#8BE9FD",
"foreground": "#F8F8F2",
"gridColor": "#282A36",
"highlightOuter": "#44475A",
+ "hoverBackground": "#44475A70",
+ "hoverInactiveBackground": "#44475A",
"lightSelectionForeground": "#8BE9FD",
"lightSelectionInactiveForeground": "#6272A4",
"lightSelectionInactiveBackground": "#282A36",
"selectionBackground": "#44475A",
"selectionForeground": "#8BE9FD",
"selectionInactiveBackground": "#44475A",
- "selectionInactiveForeground": "#8BE9FD",
+ "selectionInactiveForeground": "#FFFFFF",
"sortIconColor": "#F8F8F2",
"stripeColor": "#191A21"
},
@@ -680,7 +723,7 @@
"textText": "#6272A4",
"TextArea": {
"background": "#282A36",
- "caretForeground": "#FF79C5",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveForeground": "#6272A4",
"selectionBackground": "#44475A",
@@ -688,7 +731,7 @@
},
"TextField": {
"background": "#282A36",
- "caretForeground": "#FF79C5",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveForeground": "#6272A4",
"selectionBackground": "#44475A",
@@ -696,7 +739,7 @@
},
"TextPane": {
"background": "#282A36",
- "caretForeground": "#FF79C5",
+ "caretForeground": "#9580ff",
"foreground": "#F8F8F2",
"inactiveForeground": "#6272A4",
"selectionBackground": "#44475A",
@@ -704,7 +747,7 @@
},
"TitlePane": {
"background": "#191A21",
- "Button.hoverBackground": "#6272A4",
+ "Button.hoverBackground": "#44475a",
"inactiveBackground": "#282A36",
"infoForeground": "#6272A4",
"inactiveInfoForeground": "#6272A4"
@@ -717,8 +760,8 @@
"foreground": "#F8F8F2",
"offForeground": "#282A36",
"offBackground": "#282A36",
- "onBackground": "#FF79C5",
- "onForeground": "#FF79C5"
+ "onBackground": "#9580ff",
+ "onForeground": "#9580ff"
},
"ToolBar": {
"background": "#282A36",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#282A36",
"Actions.infoForeground": "#6272A4",
- "background": "#282A36",
- "borderColor": "#6272A4",
+ "background": "#1D2228",
+ "borderColor": "#21222C",
"foreground": "#F8F8F2",
"infoForeground": "#6272A4",
"separatorColor": "#21222C",
@@ -751,50 +794,93 @@
"background": "#282A36"
},
"HeaderTab": {
- "hoverBackground": "#6272A4",
- "hoverInactiveBackground": "#282A36",
- "inactiveUnderlineColor": "#FF79C5",
+ "borderColor": "#44475a",
+ "hoverBackground": "#44475a",
+ "hoverInactiveBackground": "#44475a",
+ "inactiveUnderlineColor": "#9580ff",
"selectedBackground": "#191A21",
"selectedInactiveBackground": "#191A21",
- "underlineColor": "#FF79C5",
- "underlinedTabBackground": "#6272A4",
- "underlinedTabInactiveBackground": "#282A36"
+ "underlineColor": "#9580ff",
+ "underlinedTabBackground": "#44475A",
+ "underlinedTabInactiveBackground": "#282A36",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#F8F8F2"
}
},
"Tree": {
"background": "#282A36",
"foreground": "#6272A4",
"hash": "#21222C",
- "modifiedItemForeground": "#FF79C5",
+ "hoverBackground": "#44475A70",
+ "hoverInactiveBackground": "#44475A",
+ "modifiedItemForeground": "#9580ff",
"rowHeight": 28,
- "selectionBackground": "#44475A50",
- "selectionForeground": "#8BE9FD",
- "selectionInactiveForeground": "#8BE9FD",
- "selectionInactiveBackground": "#44475A50",
+ "selectionBackground": "#44475A70",
+ "selectionForeground": "#FFFFFF",
+ "selectionInactiveForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#44475A70",
"textBackground": "#282A36"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#21222C",
- "ColorPicker.background": "#282A36",
- "ColorPicker.foreground": "#F8F8F2",
- "Component.borderColor": "#21222C",
- "Component.background": "#282A36",
- "Component.foreground": "#F8F8F2",
- "Connector.borderColor": "#21222C",
- "Connector.hoverBorderColor": "#6272A4",
+ "Canvas.background": "#191A21",
+ "ColorPicker": {
+ "background": "#282A36",
+ "foreground": "#F8F8F2"
+ },
+ "Component": {
+ "borderColor": "#21222C",
+ "background": "#282A36",
+ "foreground": "#F8F8F2",
+ "hoverBorderColor": "#44475a"
+ },
+ "Connector": {
+ "borderColor": "#21222C",
+ "hoverBorderColor": "#44475a"
+ },
"Canvas.background": "#191A21",
"highStroke.foreground": "#F8F8F2",
"Label.foreground": "#6272A4",
- "List.selectionBackground": "#44475A50",
- "Panel.borderColor": "#21222C",
- "Panel.background": "#282A36",
+ "List.selectionBackground": "#44475A70",
+ "motion": {
+ "borderColor": "#21222C",
+ "Component.foreground": "#F8F8F2",
+ "ConstraintSetText.foreground": "#6272A4",
+ "ConstraintSet.background": "#282A36",
+ "CSPanel.SelectedFocusBackground": "#44475A",
+ "CSPanel.SelectedBackground": "#44475A70",
+ "cs_FocusText.infoForeground": "#6272A4",
+ "CursorTextColor.foreground": "#F8F8F2",
+ "HoverColor.disabledBackground": "#6272A4",
+ "motionGraph.background": "#282A36",
+ "Notification.background": "#1D2228",
+ "ourAvg.background": "#282A36",
+ "ourCS.background": "#282A36",
+ "ourCS_Border.borderColor": "#21222C",
+ "ourCS_TextColor.foreground": "#6272A4",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#44475A",
+ "ourCS_SelectedBorder.pressedBorderColor": "#44475a",
+ "ourML_BarColor.separatorColor": "#21222C",
+ "PrimaryPanel.background": "#191A21",
+ "SecondaryPanel.background": "#282A36",
+ "SecondaryPanel.header.foreground": "#6272A4",
+ "SecondaryPanel.header.background": "#191A21",
+ "timeLine.disabledBorderColor": "#21222C"
+ },
+ "Panel": {
+ "borderColor": "#21222C",
+ "background": "#282A36"
+ },
"percent.foreground": "#F8F8F2",
- "Placeholder.background": "#282A36",
- "Placeholder.borderColor": "#21222C",
- "Placeholder.foreground": "#F8F8F2",
- "Placeholder.selectedForeground": "#8BE9FD",
+ "Placeholder": {
+ "background": "#282A36",
+ "borderColor": "#21222C",
+ "foreground": "#F8F8F2",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#282A36",
"stroke.acceleratorForeground": "#6272A4"
},
@@ -809,16 +895,16 @@
"selectedBranchBackground": "#282A36"
},
"GitCommits": {
- "graphColor": "#6272A4"
+ "graphColor": "#44475a"
},
"GitLog": {
- "localBranchIconColor": "#FF79C5",
+ "localBranchIconColor": "#9580ff",
"otherIconColor": "#6272A4",
"remoteBranchIconColor": "#F8F8F2",
"tagIconColor": "#6272A4"
},
"HgLog": {
- "branchIconColor": "#FF79C5",
+ "branchIconColor": "#9580ff",
"bookmarkIconColor": "#8BE9FD",
"closedBranchIconColor": "#6272A4",
"localTagIconColor": "#6272A4",
@@ -828,11 +914,12 @@
},
"Log": {
"Commit.unmatchedForeground": "#6272A4",
- "Commit.currentBranchBackground": "#282A36"
+ "Commit.currentBranchBackground": "#282A36",
+ "Commit.hoveredBackground": "#44475A70"
},
"RefLabel": {
"foreground": "#8BE9FD",
- "backgroundBase": "#6272A4"
+ "backgroundBase": "#44475a"
}
},
"Viewport": {
@@ -840,16 +927,22 @@
"foreground": "#F8F8F2"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#282A36",
"background": "#282A36",
"borderColor": "#282A36",
"captionBackground": "#191A21",
"captionForeground": "#F8F8F2",
+ "Details.background": "#282A36",
"footerBackground": "#191A21",
"footerForeground": "#F8F8F2",
"headerBackground": "#282A36",
"headerForeground": "#F8F8F2",
+ "List.background": "#191A21",
"separatorColor": "#21222C",
+ "SidePanel.background": "#282A36",
"Projects": {
+ "actions.background": "#191A21",
+ "actions.selectionBackground": "#44475a",
"background": "#282A36",
"selectionBackground": "#44475A",
"selectionInactiveBackground": "#282A36"
@@ -865,46 +958,46 @@
"#43494A": "#191A21",
"#6B6B6B": "#6272A4",
"#A7A7A7": "#282A36",
- "#3D6185": "#FF79C5",
- "#466D94": "#FF79C5",
+ "#3D6185": "#9580ff",
+ "#466D94": "#9580ff",
"#3C3F41": "#282A36",
"#545556": "#6272A4",
"#606060": "#6272A4",
"#9AA7B0": "#F8F8F2",
- "#675133": "#FF79C5",
+ "#675133": "#9580ff",
"Actions.Blue": "#50FA78",
"Actions.Green": "#F1FA8C",
"Actions.Grey": "#6272A4",
"Actions.GreyInline": "#6272A4",
"Actions.GreyInline.Dark": "#F8F8F2",
- "Actions.Red": "#FF79C6",
+ "Actions.Red": "#8BE9FD",
"Actions.Yellow": "#50FA7B",
"Checkbox.Background.Default": "#191A21",
"Checkbox.Background.Default.Dark": "#191A21",
- "Checkbox.Background.Disabled": "#313341",
- "Checkbox.Background.Disabled.Dark": "#313341",
+ "Checkbox.Background.Disabled": "#34353D",
+ "Checkbox.Background.Disabled.Dark": "#34353D",
"Checkbox.Border.Default": "#21222C",
"Checkbox.Border.Default.Dark": "#21222C",
"Checkbox.Border.Disabled": "#6272A4",
"Checkbox.Border.Disabled.Dark": "#6272A4",
- "Checkbox.Focus.Thin.Default": "#FF79C5",
- "Checkbox.Focus.Thin.Default.Dark": "#FF79C5",
- "Checkbox.Focus.Wide": "#FF79C5",
- "Checkbox.Focus.Wide.Dark": "#FF79C5",
+ "Checkbox.Focus.Thin.Default": "#9580ff",
+ "Checkbox.Focus.Thin.Default.Dark": "#9580ff",
+ "Checkbox.Focus.Wide": "#9580ff",
+ "Checkbox.Focus.Wide.Dark": "#9580ff",
"Checkbox.Foreground.Disabled": "#6272A4",
"Checkbox.Foreground.Disabled.Dark": "#6272A4",
- "Checkbox.Background.Selected": "#FF79C5",
+ "Checkbox.Background.Selected": "#9580ff",
"Checkbox.Background.Selected.Dark": "#282A36",
- "Checkbox.Border.Selected": "#FF79C5",
- "Checkbox.Border.Selected.Dark": "#FF79C5",
- "Checkbox.Foreground.Selected": "#FF79C5",
- "Checkbox.Foreground.Selected.Dark": "#FF79C5",
+ "Checkbox.Border.Selected": "#9580ff",
+ "Checkbox.Border.Selected.Dark": "#9580ff",
+ "Checkbox.Foreground.Selected": "#9580ff",
+ "Checkbox.Foreground.Selected.Dark": "#9580ff",
"Checkbox.Focus.Thin.Selected": "#F8F8F2",
"Checkbox.Focus.Thin.Selected.Dark": "#F8F8F2",
"Objects.Grey": "#6272A4",
"Objects.Blue": "#50FA78",
- "Objects.RedStatus": "#FF79C6",
- "Objects.Red": "#FF79C6",
+ "Objects.RedStatus": "#8BE9FD",
+ "Objects.Red": "#8BE9FD",
"Objects.Pink": "#FF79C6",
"Objects.Yellow": "#50FA7B",
"Objects.Green": "#F1FA8C",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub Contrast.theme.json
index 8cba9e36..53d3bddc 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub Contrast.theme.json
@@ -2,32 +2,38 @@
"name": "GitHub Contrast",
"dark": false,
"author": "Mallowigi",
- "editorScheme": "/colors/Github.xml",
+ "editorScheme": "/colors/GitHub (Material).xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/github.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#292D31",
"background": "#F7F8FA",
"borderColor": "#DFE1E4",
- "disabledBackground": "#dcdcdc",
- "disabledForeground": "#9ba0a3",
- "disabledText": "#9ba0a3",
+ "disabledBackground": "#FDFDFD",
+ "disabledForeground": "#6C737C",
+ "disabledText": "#6C737C",
"focusColor": "#CCE5FF",
"focusedBorderColor": "#79CB60",
"foreground": "#5B6168",
- "inactiveBackground": "#dcdcdc",
+ "inactiveBackground": "#FDFDFD",
"inactiveForeground": "#292D31",
"infoForeground": "#292D31",
"selectionBackground": "#3A66D1",
- "selectionBackgroundInactive": "#f3f3f3",
- "selectionForeground": "#FFFFFF",
- "selectionInactiveBackground": "#f3f3f3",
+ "selectionBackgroundInactive": "#F7F8FA",
+ "selectionForeground": "#111111",
+ "selectionInactiveBackground": "#F7F8FA",
"separatorColor": "#DFE1E4"
},
"activeCaption": "#F7F8FA",
"ActionButton": {
"hoverBackground": "#79CB6050",
"hoverBorderColor": "#79CB6050",
- "hoverSeparatorColor": "#edf1f5",
+ "hoverSeparatorColor": "#F1F3F6",
"focusedBorderColor": "#79CB6050",
"pressedBackground": "#79CB6050",
"pressedBorderColor": "#79CB6050"
@@ -50,32 +56,35 @@
"startBackground": "#cce5ff",
"startBorderColor": "#cce5ff"
},
- "disabledBorderColor": "#edf1f5",
- "disabledText": "#9ba0a3",
- "endBackground": "#edf1f5",
- "endBorderColor": "#edf1f5",
+ "disabledBorderColor": "#F1F3F6",
+ "disabledText": "#6C737C",
+ "endBackground": "#F1F3F6",
+ "endBorderColor": "#F1F3F6",
"focus": "#CCE5FF",
"focusedBorderColor": "#79CB60",
"foreground": "#292D31",
- "highlight": "#FFFFFF",
- "mt.background": "#edf1f5",
+ "highlight": "#111111",
+ "mt.background": "#F1F3F6",
"mt.foreground": "#292D31",
- "mt.selectedForeground": "#FFFFFF",
+ "mt.selectedForeground": "#111111",
"mt.selection.color1": "#cce5ff",
"mt.selection.color2": "#cce5ff",
- "startBackground": "#edf1f5",
- "startBorderColor": "#edf1f5",
- "shadowColor": "#edf1f5",
+ "startBackground": "#F1F3F6",
+ "startBorderColor": "#F1F3F6",
+ "shadowColor": "#F1F3F6",
"shadowWidth": 0
},
"Canvas": {
"Tooltip.borderColor": "#DFE1E4",
"Tooltip.background": "#DFECFE"
},
- "Content.background": "#fafbfc",
+ "Content": {
+ "background": "#FFFFFF",
+ "selectionBackground": "#3A66D1"
+ },
"CheckBox": {
"background": "#F7F8FA",
- "disabledText": "#9ba0a3",
+ "disabledText": "#6C737C",
"foreground": "#5B6168",
"select": "#79CB60"
},
@@ -84,54 +93,63 @@
"acceleratorSelectionForeground": "#292D31",
"background": "#F7F8FA",
"disabledBackground": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"selectionBackground": "#3A66D1",
"selectionForeground": "#111111"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#5B6168",
+ "AccessEnabled": {
+ "accessDot": "#79CB60",
+ "dropdownBorder": "#F7F8FA",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#F7F8FA",
"foreground": "#5B6168",
"swatchesDefaultRecentColor": "#5B6168"
},
- "ComboBoxButton.background": "#edf1f5",
+ "ComboBoxButton.background": "#F1F3F6",
"ComboBox": {
"ArrowButton": {
- "background": "#edf1f5",
- "disabledIconColor": "#9ba0a3",
+ "background": "#F1F3F6",
+ "disabledIconColor": "#6C737C",
"iconColor": "#5B6168",
"nonEditableBackground": "#F7F8FA"
},
- "background": "#fafbfc",
- "buttonBackground": "#edf1f5",
- "disabledForeground": "#9ba0a3",
+ "background": "#FFFFFF",
+ "buttonBackground": "#F1F3F6",
+ "darcula.hoveredArrowButtonForeground": "#79CB60",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"modifiedItemForeground": "#79CB60",
- "nonEditableBackground": "#f3f3f3",
+ "nonEditableBackground": "#F7F8FA",
"padding": "5,5,5,5",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111"
},
"ComboPopup.border": "#DFE1E4",
"CompletionPopup": {
- "background": "#f3f3f3",
+ "background": "#F7F8FA",
"foreground": "#5B6168",
"infoForeground": "#292D31",
"matchForeground": "#79CB60",
"matchSelectionForeground": "#79CB60",
"nonFocusedState": "false",
- "selectedGrayedForeground": "#FFFFFF",
- "selectionGrayForeground": "#FFFFFF",
+ "selectedGrayedForeground": "#111111",
+ "selectionGrayForeground": "#111111",
"selectionInactiveInfoForeground": "#292D31",
"selectionInactiveBackground": "#3A66D150",
"selectionBackground": "#3A66D180",
- "selectionForeground": "#FFFFFF",
- "selectionInfoForeground": "#FFFFFF"
+ "selectionForeground": "#111111",
+ "selectionInfoForeground": "#111111"
},
"Component": {
"arc": 4,
"borderColor": "#CCE5FF",
- "disabledBorderColor": "#edf1f5",
+ "disabledBorderColor": "#F1F3F6",
"focusColor": "#79CB60",
"focusedBorderColor": "#79CB60",
"hoverIconColor": "#79CB60",
@@ -142,7 +160,7 @@
"controlText": "#292D31",
"Counter": {
"background": "#79CB60",
- "foreground": "#FFFFFF"
+ "foreground": "#111111"
},
"Debugger": {
"Variables": {
@@ -166,13 +184,15 @@
"background": "#F7F8FA",
"borderColor": "#F7F8FA",
"hoverBackground": "#cce5ff",
- "hoverColor": "#fafbfc",
+ "hoverColor": "#FFFFFF",
"hoverMaskColor": "#CCE5FF",
- "inactiveColoredFileBackground": "#edf1f5",
- "inactiveUnderlineColor": "#9ba0a3",
- "inactiveMaskColor": "#fafbfc",
+ "inactiveColoredTabBackground": "#F7F8FA",
+ "inactiveColoredFileBackground": "#F1F3F6",
+ "inactiveUnderlineColor": "#79CB60",
+ "inactiveMaskColor": "#FFFFFF",
"underlineColor": "#79CB60",
- "underlinedTabBackground": "#cce5ff"
+ "underlinedTabBackground": "#cce5ff",
+ "underlinedTabForeground": "#111111"
},
"Desktop.background": "#F7F8FA",
"DialogWrapper.southPanelBackground": "#F7F8FA",
@@ -183,34 +203,36 @@
"areaForeground": "#5B6168"
},
"Editor": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"foreground": "#5B6168",
"shortcutForeground": "#292D31"
},
"EditorPane": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"caretForeground": "#79CB60",
"foreground": "#5B6168",
"inactiveBackground": "#F7F8FA",
- "inactiveForeground": "#9ba0a3",
+ "inactiveForeground": "#6C737C",
"selectionBackground": "#3A66D1",
"selectionForeground": "#111111"
},
"EditorTabs": {
- "borderColor": "#f3f3f3",
+ "borderColor": "#F7F8FA",
+ "hoverBackground": "#CCE5FF",
"hoverColor": "#CCE5FF",
"hoverMaskColor": "#CCE5FF",
"inactiveMaskColor": "#F7F8FA",
- "inactiveColoredFileBackground": "#F7F8FA2",
- "inactiveUnderlineColor": "#9ba0a3",
+ "inactiveColoredFileBackground": "#F7F8FA",
+ "inactiveUnderlineColor": "#6C737C",
"selectedForeground": "#5B6168",
"selectedBackground": "#cce5ff",
"underlineColor": "#79CB60",
- "underlinedTabBackground": "#cce5ff"
+ "underlinedTabBackground": "#cce5ff",
+ "underlinedTabForeground": "#111111"
},
"EditorGroupsTabs": {
"background": "#F7F8FA",
- "borderColor": "#f3f3f3",
+ "borderColor": "#F7F8FA",
"hoverBackground": "#CCE5FF",
"hoverColor": "#CCE5FF",
"inactiveUnderlineColor": "#79CB60",
@@ -221,7 +243,7 @@
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#dcdcdc",
+ "Yellow": "#FDFDFD",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -238,25 +260,26 @@
},
"Focus.color": "#DFE1E4",
"FormattedTextField": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"caretForeground": "#79CB60",
"foreground": "#5B6168",
- "inactiveBackground": "#edf1f5",
- "inactiveForeground": "#9ba0a3",
+ "inactiveBackground": "#F1F3F6",
+ "inactiveForeground": "#6C737C",
"selectionForeground": "#111111",
"selectionBackground": "#cce5ff"
},
+ "GotItTooltip.borderColor": "#DFECFE",
"Group": {
"disabledSeparatorColor": "#DFE1E4",
"separatorColor": "#DFE1E4"
},
"GutterTooltip": {
- "infoForeground": "#5B6168",
+ "infoForeground": "#292D31",
"lineSeparatorColor": "#F7F8FA"
},
"HeaderColor": {
"active": "#F7F8FA",
- "inactive": "#fafbfc"
+ "inactive": "#FFFFFF"
},
"HelpTooltip": {
"background": "#F7F8FA",
@@ -266,7 +289,7 @@
"shortcutForeground": "#292D31"
},
"Hyperlink.linkColor": "#79CB60",
- "inactiveCaption": "#f3f3f3",
+ "inactiveCaption": "#F7F8FA",
"inactiveCaptionBorder": "#F7F8FA",
"inactiveCaptionText": "#292D31",
"info": "#292D31",
@@ -283,12 +306,13 @@
},
"Label": {
"background": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"disabledShadow": "#F7F8FA",
- "disabledText": "#9ba0a3",
+ "disabledText": "#6C737C",
"foreground": "#5B6168",
"infoForeground": "#292D31",
- "selectedForeground": "#111111"
+ "selectedForeground": "#111111",
+ "selectedDisabledForeground": "#5B6168"
},
"Link": {
"activeForeground": "#79CB60",
@@ -299,64 +323,66 @@
},
"link.foreground": "#79CB60",
"List": {
- "background": "#f3f3f3",
+ "background": "#F7F8FA",
"foreground": "#5B6168",
+ "hoverBackground": "#3A66D170",
+ "hoverInactiveBackground": "#cce5ff",
"selectionBackground": "#3A66D150",
- "selectionForeground": "#FFFFFF",
+ "selectionForeground": "#111111",
"selectionInactiveForeground": "#111111",
- "selectionInactiveBackground": "#3A66D1"
+ "selectionInactiveBackground": "#3A66D170"
},
"material": {
"background": "#F7F8FA",
"branchColor": "#5B6168",
- "contrast": "#fafbfc",
+ "contrast": "#FFFFFF",
"foreground": "#5B6168",
- "mergeCommits": "#edf1f5",
+ "mergeCommits": "#F1F3F6",
"primaryColor": "#292D31",
- "selectionForeground": "#FFFFFF",
+ "selectionForeground": "#111111",
"tab.backgroundColor": "#F7F8FA",
"tab.borderColor": "#79CB60",
"tagColor": "#292D31"
},
"MemoryIndicator": {
- "allocatedBackground": "#f3f3f3",
+ "allocatedBackground": "#F7F8FA",
"usedColor": "#CCE5FF",
"usedBackground": "#CCE5FF"
},
"Menu": {
"acceleratorForeground": "#292D31",
- "acceleratorSelectionForeground": "#FFFFFF",
+ "acceleratorSelectionForeground": "#111111",
"background": "#F7F8FA",
"border": "4,2,4,2",
- "borderColor": "#f3f3f3",
- "disabledBackground": "#f3f3f3",
- "disabledForeground": "#9ba0a3",
+ "borderColor": "#F7F8FA",
+ "disabledBackground": "#F7F8FA",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"selectionBackground": "#3A66D1",
- "selectionForeground": "#FFFFFF",
+ "selectionForeground": "#111111",
"separatorColor": "#DFE1E4"
},
"MenuBar": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"borderColor": "#F7F8FA",
"disabledBackground": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"highlight": "#F7F8FA",
"selectionBackground": "#3A66D1",
- "selectionForeground": "#FFFFFF",
- "shadow": "#fafbfc"
+ "selectionForeground": "#111111",
+ "shadow": "#FFFFFF"
},
"MenuItem": {
"acceleratorForeground": "#292D31",
- "acceleratorSelectionForeground": "#FFFFFF",
+ "acceleratorSelectionForeground": "#111111",
"border": "4,2,4,2",
"background": "#F7F8FA",
"disabledBackground": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"selectionBackground": "#3A66D1",
- "selectionForeground": "#FFFFFF"
+ "selectionForeground": "#111111"
},
"NavBar": {
"arrowColor": "#5B6168",
@@ -367,7 +393,7 @@
"background": "#F7F8FA"
},
"SearchField": {
- "background": "#fafbfc"
+ "background": "#FFFFFF"
}
},
"NewPSD.warning": "#79CB60",
@@ -378,9 +404,9 @@
"errorBorderColor": "#DFECFE",
"foreground": "#5B6168",
"MoreButton": {
- "background": "#edf1f5",
+ "background": "#F1F3F6",
"foreground": "#5B6168",
- "innerBorderColor": "#edf1f5"
+ "innerBorderColor": "#F1F3F6"
},
"ToolWindow": {
"errorBackground": "#DFECFE",
@@ -398,65 +424,66 @@
"messageForeground": "#5B6168"
},
"Outline": {
- "color": "#edf1f5",
+ "color": "#F1F3F6",
"focusedColor": "#79CB60",
- "disabledColor": "#9ba0a3"
+ "disabledColor": "#6C737C"
},
"Panel": {
"background": "#F7F8FA",
"foreground": "#5B6168"
},
"ParameterInfo": {
- "background": "#f3f3f3",
+ "background": "#F7F8FA",
"borderColor": "#cce5ff",
- "currentOverloadBackground": "#cce5ff",
+ "currentOverloadBackground": "#CCE5FF",
"currentParameterForeground": "#79CB60",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"infoForeground": "#292D31",
"lineSeparatorColor": "#cce5ff"
},
"PasswordField": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"capsLockIconColor": "#79CB60",
"caretForeground": "#79CB60",
"foreground": "#5B6168",
- "inactiveForeground": "#9ba0a3",
+ "inactiveForeground": "#6C737C",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111"
},
"Plugins": {
"background": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"eapTagBackground": "#CCE5FF",
- "lightSelectionBackground": "#3A66D1",
+ "hoverBackground": "#3A66D170",
+ "lightSelectionBackground": "#cce5ff",
"paidTagBackground": "#CCE5FF",
"selectionBackground": "#3A66D1",
"tagForeground": "#79CB60",
"tagBackground": "#CCE5FF",
"trialTagBackground": "#CCE5FF",
"Button": {
- "installBackground": "#edf1f5",
- "installBorderColor": "#edf1f5",
+ "installBackground": "#F1F3F6",
+ "installBorderColor": "#F1F3F6",
"installForeground": "#5B6168",
"installFocusedBackground": "#CCE5FF",
- "installFillForeground": "#9ba0a3",
- "installFillBackground": "#edf1f5",
- "updateBackground": "#edf1f5",
- "updateBorderColor": "#edf1f5",
+ "installFillForeground": "#6C737C",
+ "installFillBackground": "#F1F3F6",
+ "updateBackground": "#79CB60",
+ "updateBorderColor": "#F1F3F6",
"updateForeground": "#5B6168"
},
"SearchField": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"borderColor": "#DFE1E4"
},
"SectionHeader": {
- "background": "#f3f3f3",
+ "background": "#F7F8FA",
"foreground": "#5B6168"
},
"Tab": {
"hoverBackground": "#cce5ff",
- "selectedForeground": "#FFFFFF",
+ "selectedForeground": "#111111",
"selectedBackground": "#cce5ff"
}
},
@@ -466,20 +493,20 @@
"borderColor": "#F7F8FA",
"foreground": "#79CB60"
},
- "borderColor": "#fafbfc",
+ "borderColor": "#FFFFFF",
"inactiveBorderColor": "#F7F8FA",
- "innerBorderColor": "#f3f3f3",
+ "innerBorderColor": "#F7F8FA",
"Header": {
"activeBackground": "#F7F8FA",
- "inactiveBackground": "#fafbfc"
+ "inactiveBackground": "#FFFFFF"
},
"paintBorder": true,
"separatorForeground": "#5B6168",
- "separatorColor": "#f3f3f3",
+ "separatorColor": "#F7F8FA",
"Toolbar": {
- "Floating.background": "#fafbfc",
- "background": "#fafbfc",
- "borderColor": "#fafbfc"
+ "Floating.background": "#FFFFFF",
+ "background": "#FFFFFF",
+ "borderColor": "#FFFFFF"
}
},
"PopupMenu": {
@@ -504,7 +531,7 @@
},
"RadioButton": {
"background": "#F7F8FA",
- "disabledText": "#9ba0a3",
+ "disabledText": "#6C737C",
"foreground": "#5B6168"
},
"RadioButtonMenuItem": {
@@ -512,11 +539,12 @@
"acceleratorSelectionForeground": "#292D31",
"background": "#F7F8FA",
"disabledBackground": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"selectionBackground": "#3A66D1",
- "selectionForeground": "#FFFFFF"
+ "selectionForeground": "#111111"
},
+ "ScreenView.borderColor": "#DFE1E4",
"ScrollBar": {
"background": "#F7F8FA",
"hoverThumbBorderColor": "#79CB60",
@@ -553,7 +581,7 @@
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"foreground": "#292D31"
},
"Header": {
@@ -565,7 +593,7 @@
},
"SearchField": {
"background": "#F7F8FA",
- "borderColor": "#fafbfc",
+ "borderColor": "#FFFFFF",
"infoForeground": "#292D31"
},
"Tab": {
@@ -576,16 +604,25 @@
},
"SearchMatch": {
"endBackground": "#79CB60",
- "startBackground": "#79CB60"
+ "startBackground": "#79CB60",
+ "endColor": "#79CB60",
+ "startColor": "#79CB60"
},
"SearchField.errorBackground": "#DFECFE",
+ "SearchOption": {
+ "selectedBackground": "#cce5ff"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#292D31",
+ "Repeated.File.Foreground": "#5B6168"
+ },
"Separator": {
- "background": "#f3f3f3",
- "foreground": "#f3f3f3",
- "separatorColor": "#f3f3f3"
+ "background": "#F7F8FA",
+ "foreground": "#F7F8FA",
+ "separatorColor": "#F7F8FA"
},
"SidePanel": {
- "background": "#fafbfc"
+ "background": "#FFFFFF"
},
"Slider": {
"background": "#F7F8FA",
@@ -593,7 +630,7 @@
"buttonColor": "#79CB60",
"foreground": "#5B6168",
"majorTickLength": 6,
- "tickColor": "#f3f3f3",
+ "tickColor": "#F7F8FA",
"trackColor": "#cce5ff",
"trackWidth": 7,
"thumb": "#79CB60"
@@ -612,19 +649,21 @@
},
"SplitPane": {
"background": "#F7F8FA",
- "highlight": "#fafbfc"
+ "highlight": "#FFFFFF"
},
- "SplitPaneDivider.draggingColor": "#f3f3f3",
+ "SplitPaneDivider.draggingColor": "#F7F8FA",
"StatusBar": {
- "borderColor": "#F7F8FA"
+ "borderColor": "#F7F8FA",
+ "hoverBackground": "#CCE5FF",
+ "LightEditBackground": "#cce5ff"
},
"TabbedPane": {
"background": "#F7F8FA",
"contentAreaColor": "#CCE5FF",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#DFE1E4",
- "disabledForeground": "#9ba0a3",
- "disabledUnderlineColor": "#9ba0a3",
+ "disabledForeground": "#6C737C",
+ "disabledUnderlineColor": "#6C737C",
"focus": "#cce5ff",
"focusColor": "#cce5ff",
"fontSizeOffset": 0,
@@ -641,11 +680,13 @@
"tabSelectionHeight": 2,
"underlineColor": "#79CB60"
},
- "TabbedPane.mt.tab.background": "#fafbfc",
+ "TabbedPane.mt.tab.background": "#FFFFFF",
"Table": {
+ "alternativeRowBackground": "#FFFFFF",
"background": "#F7F8FA",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#6C737C",
"dropLineColor": "#79CB60",
"dropLineShortColor": "#79CB60",
"focusCellBackground": "#cce5ff",
@@ -653,57 +694,59 @@
"foreground": "#5B6168",
"gridColor": "#F7F8FA",
"highlightOuter": "#cce5ff",
+ "hoverBackground": "#3A66D170",
+ "hoverInactiveBackground": "#cce5ff",
"lightSelectionForeground": "#111111",
"lightSelectionInactiveForeground": "#292D31",
- "lightSelectionInactiveBackground": "#f3f3f3",
+ "lightSelectionInactiveBackground": "#F7F8FA",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111",
"selectionInactiveBackground": "#cce5ff",
- "selectionInactiveForeground": "#FFFFFF",
+ "selectionInactiveForeground": "#111111",
"sortIconColor": "#5B6168",
- "stripeColor": "#fafbfc"
+ "stripeColor": "#FFFFFF"
},
"TableHeader": {
"background": "#F7F8FA",
"borderColor": "#F7F8FA",
- "bottomSeparatorColor": "#f3f3f3",
+ "bottomSeparatorColor": "#F7F8FA",
"cellBorder": "4,0,4,0",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"focusCellBackground": "#cce5ff",
"focusCellForeground": "#111111",
"height": 25,
- "separatorColor": "#f3f3f3"
+ "separatorColor": "#F7F8FA"
},
"text": "#292D31",
"textInactiveText": "#292D31",
"textText": "#292D31",
"TextArea": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"caretForeground": "#79CB60",
"foreground": "#5B6168",
- "inactiveForeground": "#9ba0a3",
+ "inactiveForeground": "#6C737C",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111"
},
"TextField": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"caretForeground": "#79CB60",
"foreground": "#5B6168",
- "inactiveForeground": "#9ba0a3",
+ "inactiveForeground": "#6C737C",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111"
},
"TextPane": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"caretForeground": "#79CB60",
"foreground": "#5B6168",
- "inactiveForeground": "#9ba0a3",
+ "inactiveForeground": "#6C737C",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111"
},
"TitlePane": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"Button.hoverBackground": "#CCE5FF",
"inactiveBackground": "#F7F8FA",
"infoForeground": "#292D31",
@@ -711,9 +754,9 @@
},
"TitledBorder.titleColor": "#5B6168",
"ToggleButton": {
- "borderColor": "#edf1f5",
+ "borderColor": "#F1F3F6",
"buttonColor": "#5B6168",
- "disabledText": "#9ba0a3",
+ "disabledText": "#6C737C",
"foreground": "#5B6168",
"offForeground": "#F7F8FA",
"offBackground": "#F7F8FA",
@@ -721,7 +764,7 @@
"onForeground": "#79CB60"
},
"ToolBar": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"borderHandleColor": "#292D31",
"floatingForeground": "#292D31",
"foreground": "#5B6168"
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#F7F8FA",
"Actions.infoForeground": "#292D31",
- "background": "#F7F8FA",
- "borderColor": "#CCE5FF",
+ "background": "#DFECFE",
+ "borderColor": "#DFE1E4",
"foreground": "#5B6168",
"infoForeground": "#292D31",
"separatorColor": "#DFE1E4",
@@ -740,61 +783,104 @@
"Button": {
"hoverBackground": "#cce5ff",
"selectedForeground": "#111111",
- "selectedBackground": "#fafbfc"
+ "selectedBackground": "#FFFFFF"
},
"Header": {
"background": "#F7F8FA",
- "borderColor": "#f3f3f3",
+ "borderColor": "#F7F8FA",
"inactiveBackground": "#F7F8FA"
},
"HeaderCloseButton": {
"background": "#F7F8FA"
},
"HeaderTab": {
+ "borderColor": "#CCE5FF",
"hoverBackground": "#CCE5FF",
- "hoverInactiveBackground": "#f3f3f3",
+ "hoverInactiveBackground": "#CCE5FF",
"inactiveUnderlineColor": "#79CB60",
- "selectedBackground": "#fafbfc",
- "selectedInactiveBackground": "#fafbfc",
+ "selectedBackground": "#FFFFFF",
+ "selectedInactiveBackground": "#FFFFFF",
"underlineColor": "#79CB60",
- "underlinedTabBackground": "#CCE5FF",
- "underlinedTabInactiveBackground": "#f3f3f3"
+ "underlinedTabBackground": "#cce5ff",
+ "underlinedTabInactiveBackground": "#F7F8FA",
+ "underlinedTabForeground": "#111111",
+ "underlinedTabInactiveForeground": "#5B6168"
}
},
"Tree": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"foreground": "#292D31",
"hash": "#DFE1E4",
+ "hoverBackground": "#3A66D170",
+ "hoverInactiveBackground": "#cce5ff",
"modifiedItemForeground": "#79CB60",
"rowHeight": 28,
- "selectionBackground": "#3A66D1",
- "selectionForeground": "#FFFFFF",
- "selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#3A66D1",
- "textBackground": "#fafbfc"
+ "selectionBackground": "#3A66D170",
+ "selectionForeground": "#111111",
+ "selectionInactiveForeground": "#111111",
+ "selectionInactiveBackground": "#3A66D170",
+ "textBackground": "#FFFFFF"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#DFE1E4",
- "ColorPicker.background": "#F7F8FA",
- "ColorPicker.foreground": "#5B6168",
- "Component.borderColor": "#DFE1E4",
- "Component.background": "#F7F8FA",
- "Component.foreground": "#5B6168",
- "Connector.borderColor": "#DFE1E4",
- "Connector.hoverBorderColor": "#CCE5FF",
- "Canvas.background": "#fafbfc",
+ "Canvas.background": "#FFFFFF",
+ "ColorPicker": {
+ "background": "#F7F8FA",
+ "foreground": "#5B6168"
+ },
+ "Component": {
+ "borderColor": "#DFE1E4",
+ "background": "#F7F8FA",
+ "foreground": "#5B6168",
+ "hoverBorderColor": "#CCE5FF"
+ },
+ "Connector": {
+ "borderColor": "#DFE1E4",
+ "hoverBorderColor": "#CCE5FF"
+ },
+ "Canvas.background": "#FFFFFF",
"highStroke.foreground": "#5B6168",
"Label.foreground": "#292D31",
- "List.selectionBackground": "#3A66D1",
- "Panel.borderColor": "#DFE1E4",
- "Panel.background": "#F7F8FA",
+ "List.selectionBackground": "#3A66D170",
+ "motion": {
+ "borderColor": "#DFE1E4",
+ "Component.foreground": "#5B6168",
+ "ConstraintSetText.foreground": "#292D31",
+ "ConstraintSet.background": "#F7F8FA",
+ "CSPanel.SelectedFocusBackground": "#3A66D1",
+ "CSPanel.SelectedBackground": "#3A66D170",
+ "cs_FocusText.infoForeground": "#292D31",
+ "CursorTextColor.foreground": "#5B6168",
+ "HoverColor.disabledBackground": "#6C737C",
+ "motionGraph.background": "#F7F8FA",
+ "Notification.background": "#DFECFE",
+ "ourAvg.background": "#F7F8FA",
+ "ourCS.background": "#F7F8FA",
+ "ourCS_Border.borderColor": "#DFE1E4",
+ "ourCS_TextColor.foreground": "#292D31",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#111111",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#cce5ff",
+ "ourCS_SelectedBorder.pressedBorderColor": "#CCE5FF",
+ "ourML_BarColor.separatorColor": "#DFE1E4",
+ "PrimaryPanel.background": "#FFFFFF",
+ "SecondaryPanel.background": "#F7F8FA",
+ "SecondaryPanel.header.foreground": "#292D31",
+ "SecondaryPanel.header.background": "#FFFFFF",
+ "timeLine.disabledBorderColor": "#DFE1E4"
+ },
+ "Panel": {
+ "borderColor": "#DFE1E4",
+ "background": "#F7F8FA"
+ },
"percent.foreground": "#5B6168",
- "Placeholder.background": "#F7F8FA",
- "Placeholder.borderColor": "#DFE1E4",
- "Placeholder.foreground": "#5B6168",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#F7F8FA",
+ "borderColor": "#DFE1E4",
+ "foreground": "#5B6168",
+ "selectedForeground": "#111111"
+ },
"Preview.background": "#F7F8FA",
"stroke.acceleratorForeground": "#292D31"
},
@@ -820,7 +906,7 @@
"HgLog": {
"branchIconColor": "#79CB60",
"bookmarkIconColor": "#111111",
- "closedBranchIconColor": "#9ba0a3",
+ "closedBranchIconColor": "#6C737C",
"localTagIconColor": "#292D31",
"mqTagIconColor": "#292D31",
"tagIconColor": "#292D31",
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#292D31",
- "Commit.currentBranchBackground": "#f3f3f3"
+ "Commit.currentBranchBackground": "#F7F8FA",
+ "Commit.hoveredBackground": "#3A66D170"
},
"RefLabel": {
"foreground": "#111111",
@@ -836,40 +923,46 @@
}
},
"Viewport": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"foreground": "#5B6168"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#F7F8FA",
"background": "#F7F8FA",
"borderColor": "#F7F8FA",
- "captionBackground": "#fafbfc",
+ "captionBackground": "#FFFFFF",
"captionForeground": "#5B6168",
- "footerBackground": "#fafbfc",
+ "Details.background": "#F7F8FA",
+ "footerBackground": "#FFFFFF",
"footerForeground": "#5B6168",
"headerBackground": "#F7F8FA",
"headerForeground": "#5B6168",
+ "List.background": "#FFFFFF",
"separatorColor": "#DFE1E4",
+ "SidePanel.background": "#F7F8FA",
"Projects": {
- "background": "#f3f3f3",
+ "actions.background": "#FFFFFF",
+ "actions.selectionBackground": "#CCE5FF",
+ "background": "#F7F8FA",
"selectionBackground": "#3A66D1",
- "selectionInactiveBackground": "#f3f3f3"
+ "selectionInactiveBackground": "#F7F8FA"
}
},
- "window": "#fafbfc",
+ "window": "#FFFFFF",
"windowBorder": "#DFE1E4",
"windowText": "#292D31",
"Window.border": "#DFE1E4"
},
"icons": {
"ColorPalette": {
- "#43494A": "#fafbfc",
+ "#43494A": "#FFFFFF",
"#6B6B6B": "#292D31",
"#A7A7A7": "#F7F8FA",
"#3D6185": "#79CB60",
"#466D94": "#79CB60",
"#3C3F41": "#F7F8FA",
- "#545556": "#9ba0a3",
- "#606060": "#9ba0a3",
+ "#545556": "#6C737C",
+ "#606060": "#6C737C",
"#9AA7B0": "#5B6168",
"#675133": "#79CB60",
"Actions.Blue": "#6F42C1",
@@ -879,20 +972,20 @@
"Actions.GreyInline.Dark": "#5B6168",
"Actions.Red": "#22863A",
"Actions.Yellow": "#6F42C1",
- "Checkbox.Background.Default": "#fafbfc",
- "Checkbox.Background.Default.Dark": "#fafbfc",
- "Checkbox.Background.Disabled": "#dcdcdc",
- "Checkbox.Background.Disabled.Dark": "#dcdcdc",
+ "Checkbox.Background.Default": "#FFFFFF",
+ "Checkbox.Background.Default.Dark": "#FFFFFF",
+ "Checkbox.Background.Disabled": "#FDFDFD",
+ "Checkbox.Background.Disabled.Dark": "#FDFDFD",
"Checkbox.Border.Default": "#DFE1E4",
"Checkbox.Border.Default.Dark": "#DFE1E4",
- "Checkbox.Border.Disabled": "#9ba0a3",
- "Checkbox.Border.Disabled.Dark": "#9ba0a3",
+ "Checkbox.Border.Disabled": "#6C737C",
+ "Checkbox.Border.Disabled.Dark": "#6C737C",
"Checkbox.Focus.Thin.Default": "#79CB60",
"Checkbox.Focus.Thin.Default.Dark": "#79CB60",
"Checkbox.Focus.Wide": "#79CB60",
"Checkbox.Focus.Wide.Dark": "#79CB60",
- "Checkbox.Foreground.Disabled": "#9ba0a3",
- "Checkbox.Foreground.Disabled.Dark": "#9ba0a3",
+ "Checkbox.Foreground.Disabled": "#6C737C",
+ "Checkbox.Foreground.Disabled.Dark": "#6C737C",
"Checkbox.Background.Selected": "#79CB60",
"Checkbox.Background.Selected.Dark": "#F7F8FA",
"Checkbox.Border.Selected": "#79CB60",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub.theme.json
index 6002f77d..f2a07ab2 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/GitHub.theme.json
@@ -2,32 +2,38 @@
"name": "GitHub",
"dark": false,
"author": "Mallowigi",
- "editorScheme": "/colors/Github.xml",
+ "editorScheme": "/colors/GitHub (Material).xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/github.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#292D31",
"background": "#F7F8FA",
"borderColor": "#DFE1E4",
- "disabledBackground": "#dcdcdc",
- "disabledForeground": "#9ba0a3",
- "disabledText": "#9ba0a3",
+ "disabledBackground": "#FDFDFD",
+ "disabledForeground": "#6C737C",
+ "disabledText": "#6C737C",
"focusColor": "#CCE5FF",
"focusedBorderColor": "#79CB60",
"foreground": "#5B6168",
- "inactiveBackground": "#dcdcdc",
+ "inactiveBackground": "#FDFDFD",
"inactiveForeground": "#292D31",
"infoForeground": "#292D31",
"selectionBackground": "#3A66D1",
- "selectionBackgroundInactive": "#f3f3f3",
- "selectionForeground": "#FFFFFF",
- "selectionInactiveBackground": "#f3f3f3",
+ "selectionBackgroundInactive": "#F7F8FA",
+ "selectionForeground": "#111111",
+ "selectionInactiveBackground": "#F7F8FA",
"separatorColor": "#DFE1E4"
},
"activeCaption": "#F7F8FA",
"ActionButton": {
"hoverBackground": "#79CB6050",
"hoverBorderColor": "#79CB6050",
- "hoverSeparatorColor": "#edf1f5",
+ "hoverSeparatorColor": "#F1F3F6",
"focusedBorderColor": "#79CB6050",
"pressedBackground": "#79CB6050",
"pressedBorderColor": "#79CB6050"
@@ -50,32 +56,35 @@
"startBackground": "#cce5ff",
"startBorderColor": "#cce5ff"
},
- "disabledBorderColor": "#edf1f5",
- "disabledText": "#9ba0a3",
- "endBackground": "#edf1f5",
- "endBorderColor": "#edf1f5",
+ "disabledBorderColor": "#F1F3F6",
+ "disabledText": "#6C737C",
+ "endBackground": "#F1F3F6",
+ "endBorderColor": "#F1F3F6",
"focus": "#CCE5FF",
"focusedBorderColor": "#79CB60",
"foreground": "#292D31",
- "highlight": "#FFFFFF",
- "mt.background": "#edf1f5",
+ "highlight": "#111111",
+ "mt.background": "#F1F3F6",
"mt.foreground": "#292D31",
- "mt.selectedForeground": "#FFFFFF",
+ "mt.selectedForeground": "#111111",
"mt.selection.color1": "#cce5ff",
"mt.selection.color2": "#cce5ff",
- "startBackground": "#edf1f5",
- "startBorderColor": "#edf1f5",
- "shadowColor": "#edf1f5",
+ "startBackground": "#F1F3F6",
+ "startBorderColor": "#F1F3F6",
+ "shadowColor": "#F1F3F6",
"shadowWidth": 0
},
"Canvas": {
"Tooltip.borderColor": "#DFE1E4",
"Tooltip.background": "#DFECFE"
},
- "Content.background": "#fafbfc",
+ "Content": {
+ "background": "#FFFFFF",
+ "selectionBackground": "#3A66D1"
+ },
"CheckBox": {
"background": "#F7F8FA",
- "disabledText": "#9ba0a3",
+ "disabledText": "#6C737C",
"foreground": "#5B6168",
"select": "#79CB60"
},
@@ -84,54 +93,63 @@
"acceleratorSelectionForeground": "#292D31",
"background": "#F7F8FA",
"disabledBackground": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"selectionBackground": "#3A66D1",
"selectionForeground": "#111111"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#5B6168",
+ "AccessEnabled": {
+ "accessDot": "#79CB60",
+ "dropdownBorder": "#F7F8FA",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#F7F8FA",
"foreground": "#5B6168",
"swatchesDefaultRecentColor": "#5B6168"
},
- "ComboBoxButton.background": "#edf1f5",
+ "ComboBoxButton.background": "#F1F3F6",
"ComboBox": {
"ArrowButton": {
- "background": "#edf1f5",
- "disabledIconColor": "#9ba0a3",
+ "background": "#F1F3F6",
+ "disabledIconColor": "#6C737C",
"iconColor": "#5B6168",
"nonEditableBackground": "#F7F8FA"
},
"background": "#F7F8FA",
- "buttonBackground": "#edf1f5",
- "disabledForeground": "#9ba0a3",
+ "buttonBackground": "#F1F3F6",
+ "darcula.hoveredArrowButtonForeground": "#79CB60",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"modifiedItemForeground": "#79CB60",
- "nonEditableBackground": "#f3f3f3",
+ "nonEditableBackground": "#F7F8FA",
"padding": "5,5,5,5",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111"
},
"ComboPopup.border": "#DFE1E4",
"CompletionPopup": {
- "background": "#f3f3f3",
+ "background": "#F7F8FA",
"foreground": "#5B6168",
"infoForeground": "#292D31",
"matchForeground": "#79CB60",
"matchSelectionForeground": "#79CB60",
"nonFocusedState": "false",
- "selectedGrayedForeground": "#FFFFFF",
- "selectionGrayForeground": "#FFFFFF",
+ "selectedGrayedForeground": "#111111",
+ "selectionGrayForeground": "#111111",
"selectionInactiveInfoForeground": "#292D31",
"selectionInactiveBackground": "#3A66D150",
"selectionBackground": "#3A66D180",
- "selectionForeground": "#FFFFFF",
- "selectionInfoForeground": "#FFFFFF"
+ "selectionForeground": "#111111",
+ "selectionInfoForeground": "#111111"
},
"Component": {
"arc": 4,
"borderColor": "#CCE5FF",
- "disabledBorderColor": "#edf1f5",
+ "disabledBorderColor": "#F1F3F6",
"focusColor": "#79CB60",
"focusedBorderColor": "#79CB60",
"hoverIconColor": "#79CB60",
@@ -142,7 +160,7 @@
"controlText": "#292D31",
"Counter": {
"background": "#79CB60",
- "foreground": "#FFFFFF"
+ "foreground": "#111111"
},
"Debugger": {
"Variables": {
@@ -168,11 +186,13 @@
"hoverBackground": "#cce5ff",
"hoverColor": "#F7F8FA",
"hoverMaskColor": "#CCE5FF",
- "inactiveColoredFileBackground": "#edf1f5",
- "inactiveUnderlineColor": "#9ba0a3",
+ "inactiveColoredTabBackground": "#F7F8FA",
+ "inactiveColoredFileBackground": "#F1F3F6",
+ "inactiveUnderlineColor": "#79CB60",
"inactiveMaskColor": "#F7F8FA",
"underlineColor": "#79CB60",
- "underlinedTabBackground": "#cce5ff"
+ "underlinedTabBackground": "#cce5ff",
+ "underlinedTabForeground": "#111111"
},
"Desktop.background": "#F7F8FA",
"DialogWrapper.southPanelBackground": "#F7F8FA",
@@ -192,25 +212,27 @@
"caretForeground": "#79CB60",
"foreground": "#5B6168",
"inactiveBackground": "#F7F8FA",
- "inactiveForeground": "#9ba0a3",
+ "inactiveForeground": "#6C737C",
"selectionBackground": "#3A66D1",
"selectionForeground": "#111111"
},
"EditorTabs": {
- "borderColor": "#f3f3f3",
+ "borderColor": "#F7F8FA",
+ "hoverBackground": "#CCE5FF",
"hoverColor": "#CCE5FF",
"hoverMaskColor": "#CCE5FF",
"inactiveMaskColor": "#F7F8FA",
- "inactiveColoredFileBackground": "#F7F8FA2",
- "inactiveUnderlineColor": "#9ba0a3",
+ "inactiveColoredFileBackground": "#F7F8FA",
+ "inactiveUnderlineColor": "#6C737C",
"selectedForeground": "#5B6168",
"selectedBackground": "#cce5ff",
"underlineColor": "#79CB60",
- "underlinedTabBackground": "#cce5ff"
+ "underlinedTabBackground": "#cce5ff",
+ "underlinedTabForeground": "#111111"
},
"EditorGroupsTabs": {
"background": "#F7F8FA",
- "borderColor": "#f3f3f3",
+ "borderColor": "#F7F8FA",
"hoverBackground": "#CCE5FF",
"hoverColor": "#CCE5FF",
"inactiveUnderlineColor": "#79CB60",
@@ -221,7 +243,7 @@
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#dcdcdc",
+ "Yellow": "#FDFDFD",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -241,22 +263,23 @@
"background": "#F7F8FA",
"caretForeground": "#79CB60",
"foreground": "#5B6168",
- "inactiveBackground": "#edf1f5",
- "inactiveForeground": "#9ba0a3",
+ "inactiveBackground": "#F1F3F6",
+ "inactiveForeground": "#6C737C",
"selectionForeground": "#111111",
"selectionBackground": "#cce5ff"
},
+ "GotItTooltip.borderColor": "#DFECFE",
"Group": {
"disabledSeparatorColor": "#DFE1E4",
"separatorColor": "#DFE1E4"
},
"GutterTooltip": {
- "infoForeground": "#5B6168",
+ "infoForeground": "#292D31",
"lineSeparatorColor": "#F7F8FA"
},
"HeaderColor": {
"active": "#F7F8FA",
- "inactive": "#fafbfc"
+ "inactive": "#FFFFFF"
},
"HelpTooltip": {
"background": "#F7F8FA",
@@ -266,7 +289,7 @@
"shortcutForeground": "#292D31"
},
"Hyperlink.linkColor": "#79CB60",
- "inactiveCaption": "#f3f3f3",
+ "inactiveCaption": "#F7F8FA",
"inactiveCaptionBorder": "#F7F8FA",
"inactiveCaptionText": "#292D31",
"info": "#292D31",
@@ -283,12 +306,13 @@
},
"Label": {
"background": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"disabledShadow": "#F7F8FA",
- "disabledText": "#9ba0a3",
+ "disabledText": "#6C737C",
"foreground": "#5B6168",
"infoForeground": "#292D31",
- "selectedForeground": "#111111"
+ "selectedForeground": "#111111",
+ "selectedDisabledForeground": "#5B6168"
},
"Link": {
"activeForeground": "#79CB60",
@@ -299,64 +323,66 @@
},
"link.foreground": "#79CB60",
"List": {
- "background": "#f3f3f3",
+ "background": "#F7F8FA",
"foreground": "#5B6168",
+ "hoverBackground": "#3A66D170",
+ "hoverInactiveBackground": "#cce5ff",
"selectionBackground": "#3A66D150",
- "selectionForeground": "#FFFFFF",
+ "selectionForeground": "#111111",
"selectionInactiveForeground": "#111111",
- "selectionInactiveBackground": "#3A66D1"
+ "selectionInactiveBackground": "#3A66D170"
},
"material": {
"background": "#F7F8FA",
"branchColor": "#5B6168",
- "contrast": "#fafbfc",
+ "contrast": "#FFFFFF",
"foreground": "#5B6168",
- "mergeCommits": "#edf1f5",
+ "mergeCommits": "#F1F3F6",
"primaryColor": "#292D31",
- "selectionForeground": "#FFFFFF",
+ "selectionForeground": "#111111",
"tab.backgroundColor": "#F7F8FA",
"tab.borderColor": "#79CB60",
"tagColor": "#292D31"
},
"MemoryIndicator": {
- "allocatedBackground": "#f3f3f3",
+ "allocatedBackground": "#F7F8FA",
"usedColor": "#CCE5FF",
"usedBackground": "#CCE5FF"
},
"Menu": {
"acceleratorForeground": "#292D31",
- "acceleratorSelectionForeground": "#FFFFFF",
+ "acceleratorSelectionForeground": "#111111",
"background": "#F7F8FA",
"border": "4,2,4,2",
- "borderColor": "#f3f3f3",
- "disabledBackground": "#f3f3f3",
- "disabledForeground": "#9ba0a3",
+ "borderColor": "#F7F8FA",
+ "disabledBackground": "#F7F8FA",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"selectionBackground": "#3A66D1",
- "selectionForeground": "#FFFFFF",
+ "selectionForeground": "#111111",
"separatorColor": "#DFE1E4"
},
"MenuBar": {
"background": "#F7F8FA",
"borderColor": "#F7F8FA",
"disabledBackground": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"highlight": "#F7F8FA",
"selectionBackground": "#3A66D1",
- "selectionForeground": "#FFFFFF",
+ "selectionForeground": "#111111",
"shadow": "#F7F8FA"
},
"MenuItem": {
"acceleratorForeground": "#292D31",
- "acceleratorSelectionForeground": "#FFFFFF",
+ "acceleratorSelectionForeground": "#111111",
"border": "4,2,4,2",
"background": "#F7F8FA",
"disabledBackground": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"selectionBackground": "#3A66D1",
- "selectionForeground": "#FFFFFF"
+ "selectionForeground": "#111111"
},
"NavBar": {
"arrowColor": "#5B6168",
@@ -378,9 +404,9 @@
"errorBorderColor": "#DFECFE",
"foreground": "#5B6168",
"MoreButton": {
- "background": "#edf1f5",
+ "background": "#F1F3F6",
"foreground": "#5B6168",
- "innerBorderColor": "#edf1f5"
+ "innerBorderColor": "#F1F3F6"
},
"ToolWindow": {
"errorBackground": "#DFECFE",
@@ -398,20 +424,20 @@
"messageForeground": "#5B6168"
},
"Outline": {
- "color": "#edf1f5",
+ "color": "#F1F3F6",
"focusedColor": "#79CB60",
- "disabledColor": "#9ba0a3"
+ "disabledColor": "#6C737C"
},
"Panel": {
"background": "#F7F8FA",
"foreground": "#5B6168"
},
"ParameterInfo": {
- "background": "#f3f3f3",
+ "background": "#F7F8FA",
"borderColor": "#cce5ff",
- "currentOverloadBackground": "#cce5ff",
+ "currentOverloadBackground": "#CCE5FF",
"currentParameterForeground": "#79CB60",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"infoForeground": "#292D31",
"lineSeparatorColor": "#cce5ff"
@@ -421,29 +447,30 @@
"capsLockIconColor": "#79CB60",
"caretForeground": "#79CB60",
"foreground": "#5B6168",
- "inactiveForeground": "#9ba0a3",
+ "inactiveForeground": "#6C737C",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111"
},
"Plugins": {
"background": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"eapTagBackground": "#CCE5FF",
- "lightSelectionBackground": "#3A66D1",
+ "hoverBackground": "#3A66D170",
+ "lightSelectionBackground": "#cce5ff",
"paidTagBackground": "#CCE5FF",
"selectionBackground": "#3A66D1",
"tagForeground": "#79CB60",
"tagBackground": "#CCE5FF",
"trialTagBackground": "#CCE5FF",
"Button": {
- "installBackground": "#edf1f5",
- "installBorderColor": "#edf1f5",
+ "installBackground": "#F1F3F6",
+ "installBorderColor": "#F1F3F6",
"installForeground": "#5B6168",
"installFocusedBackground": "#CCE5FF",
- "installFillForeground": "#9ba0a3",
- "installFillBackground": "#edf1f5",
- "updateBackground": "#edf1f5",
- "updateBorderColor": "#edf1f5",
+ "installFillForeground": "#6C737C",
+ "installFillBackground": "#F1F3F6",
+ "updateBackground": "#79CB60",
+ "updateBorderColor": "#F1F3F6",
"updateForeground": "#5B6168"
},
"SearchField": {
@@ -451,12 +478,12 @@
"borderColor": "#DFE1E4"
},
"SectionHeader": {
- "background": "#f3f3f3",
+ "background": "#F7F8FA",
"foreground": "#5B6168"
},
"Tab": {
"hoverBackground": "#cce5ff",
- "selectedForeground": "#FFFFFF",
+ "selectedForeground": "#111111",
"selectedBackground": "#cce5ff"
}
},
@@ -466,20 +493,20 @@
"borderColor": "#F7F8FA",
"foreground": "#79CB60"
},
- "borderColor": "#fafbfc",
+ "borderColor": "#FFFFFF",
"inactiveBorderColor": "#F7F8FA",
- "innerBorderColor": "#f3f3f3",
+ "innerBorderColor": "#F7F8FA",
"Header": {
"activeBackground": "#F7F8FA",
- "inactiveBackground": "#fafbfc"
+ "inactiveBackground": "#FFFFFF"
},
"paintBorder": true,
"separatorForeground": "#5B6168",
- "separatorColor": "#f3f3f3",
+ "separatorColor": "#F7F8FA",
"Toolbar": {
- "Floating.background": "#fafbfc",
- "background": "#fafbfc",
- "borderColor": "#fafbfc"
+ "Floating.background": "#FFFFFF",
+ "background": "#FFFFFF",
+ "borderColor": "#FFFFFF"
}
},
"PopupMenu": {
@@ -504,7 +531,7 @@
},
"RadioButton": {
"background": "#F7F8FA",
- "disabledText": "#9ba0a3",
+ "disabledText": "#6C737C",
"foreground": "#5B6168"
},
"RadioButtonMenuItem": {
@@ -512,11 +539,12 @@
"acceleratorSelectionForeground": "#292D31",
"background": "#F7F8FA",
"disabledBackground": "#F7F8FA",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"selectionBackground": "#3A66D1",
- "selectionForeground": "#FFFFFF"
+ "selectionForeground": "#111111"
},
+ "ScreenView.borderColor": "#DFE1E4",
"ScrollBar": {
"background": "#F7F8FA",
"hoverThumbBorderColor": "#79CB60",
@@ -553,7 +581,7 @@
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"foreground": "#292D31"
},
"Header": {
@@ -565,7 +593,7 @@
},
"SearchField": {
"background": "#F7F8FA",
- "borderColor": "#fafbfc",
+ "borderColor": "#FFFFFF",
"infoForeground": "#292D31"
},
"Tab": {
@@ -576,13 +604,22 @@
},
"SearchMatch": {
"endBackground": "#79CB60",
- "startBackground": "#79CB60"
+ "startBackground": "#79CB60",
+ "endColor": "#79CB60",
+ "startColor": "#79CB60"
},
"SearchField.errorBackground": "#DFECFE",
+ "SearchOption": {
+ "selectedBackground": "#cce5ff"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#292D31",
+ "Repeated.File.Foreground": "#5B6168"
+ },
"Separator": {
- "background": "#f3f3f3",
- "foreground": "#f3f3f3",
- "separatorColor": "#f3f3f3"
+ "background": "#F7F8FA",
+ "foreground": "#F7F8FA",
+ "separatorColor": "#F7F8FA"
},
"SidePanel": {
"background": "#F7F8FA"
@@ -593,7 +630,7 @@
"buttonColor": "#79CB60",
"foreground": "#5B6168",
"majorTickLength": 6,
- "tickColor": "#f3f3f3",
+ "tickColor": "#F7F8FA",
"trackColor": "#cce5ff",
"trackWidth": 7,
"thumb": "#79CB60"
@@ -614,17 +651,19 @@
"background": "#F7F8FA",
"highlight": "#F7F8FA"
},
- "SplitPaneDivider.draggingColor": "#f3f3f3",
+ "SplitPaneDivider.draggingColor": "#F7F8FA",
"StatusBar": {
- "borderColor": "#F7F8FA"
+ "borderColor": "#F7F8FA",
+ "hoverBackground": "#CCE5FF",
+ "LightEditBackground": "#cce5ff"
},
"TabbedPane": {
"background": "#F7F8FA",
"contentAreaColor": "#CCE5FF",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#DFE1E4",
- "disabledForeground": "#9ba0a3",
- "disabledUnderlineColor": "#9ba0a3",
+ "disabledForeground": "#6C737C",
+ "disabledUnderlineColor": "#6C737C",
"focus": "#cce5ff",
"focusColor": "#cce5ff",
"fontSizeOffset": 0,
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#F7F8FA",
"Table": {
+ "alternativeRowBackground": "#FFFFFF",
"background": "#F7F8FA",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#6C737C",
"dropLineColor": "#79CB60",
"dropLineShortColor": "#79CB60",
"focusCellBackground": "#cce5ff",
@@ -653,27 +694,29 @@
"foreground": "#5B6168",
"gridColor": "#F7F8FA",
"highlightOuter": "#cce5ff",
+ "hoverBackground": "#3A66D170",
+ "hoverInactiveBackground": "#cce5ff",
"lightSelectionForeground": "#111111",
"lightSelectionInactiveForeground": "#292D31",
- "lightSelectionInactiveBackground": "#f3f3f3",
+ "lightSelectionInactiveBackground": "#F7F8FA",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111",
"selectionInactiveBackground": "#cce5ff",
- "selectionInactiveForeground": "#FFFFFF",
+ "selectionInactiveForeground": "#111111",
"sortIconColor": "#5B6168",
- "stripeColor": "#fafbfc"
+ "stripeColor": "#FFFFFF"
},
"TableHeader": {
"background": "#F7F8FA",
"borderColor": "#F7F8FA",
- "bottomSeparatorColor": "#f3f3f3",
+ "bottomSeparatorColor": "#F7F8FA",
"cellBorder": "4,0,4,0",
- "disabledForeground": "#9ba0a3",
+ "disabledForeground": "#6C737C",
"foreground": "#5B6168",
"focusCellBackground": "#cce5ff",
"focusCellForeground": "#111111",
"height": 25,
- "separatorColor": "#f3f3f3"
+ "separatorColor": "#F7F8FA"
},
"text": "#292D31",
"textInactiveText": "#292D31",
@@ -682,7 +725,7 @@
"background": "#F7F8FA",
"caretForeground": "#79CB60",
"foreground": "#5B6168",
- "inactiveForeground": "#9ba0a3",
+ "inactiveForeground": "#6C737C",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111"
},
@@ -690,7 +733,7 @@
"background": "#F7F8FA",
"caretForeground": "#79CB60",
"foreground": "#5B6168",
- "inactiveForeground": "#9ba0a3",
+ "inactiveForeground": "#6C737C",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111"
},
@@ -698,12 +741,12 @@
"background": "#F7F8FA",
"caretForeground": "#79CB60",
"foreground": "#5B6168",
- "inactiveForeground": "#9ba0a3",
+ "inactiveForeground": "#6C737C",
"selectionBackground": "#cce5ff",
"selectionForeground": "#111111"
},
"TitlePane": {
- "background": "#fafbfc",
+ "background": "#FFFFFF",
"Button.hoverBackground": "#CCE5FF",
"inactiveBackground": "#F7F8FA",
"infoForeground": "#292D31",
@@ -711,9 +754,9 @@
},
"TitledBorder.titleColor": "#5B6168",
"ToggleButton": {
- "borderColor": "#edf1f5",
+ "borderColor": "#F1F3F6",
"buttonColor": "#5B6168",
- "disabledText": "#9ba0a3",
+ "disabledText": "#6C737C",
"foreground": "#5B6168",
"offForeground": "#F7F8FA",
"offBackground": "#F7F8FA",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#F7F8FA",
"Actions.infoForeground": "#292D31",
- "background": "#F7F8FA",
- "borderColor": "#CCE5FF",
+ "background": "#DFECFE",
+ "borderColor": "#DFE1E4",
"foreground": "#5B6168",
"infoForeground": "#292D31",
"separatorColor": "#DFE1E4",
@@ -740,61 +783,104 @@
"Button": {
"hoverBackground": "#cce5ff",
"selectedForeground": "#111111",
- "selectedBackground": "#fafbfc"
+ "selectedBackground": "#FFFFFF"
},
"Header": {
"background": "#F7F8FA",
- "borderColor": "#f3f3f3",
+ "borderColor": "#F7F8FA",
"inactiveBackground": "#F7F8FA"
},
"HeaderCloseButton": {
"background": "#F7F8FA"
},
"HeaderTab": {
+ "borderColor": "#CCE5FF",
"hoverBackground": "#CCE5FF",
- "hoverInactiveBackground": "#f3f3f3",
+ "hoverInactiveBackground": "#CCE5FF",
"inactiveUnderlineColor": "#79CB60",
- "selectedBackground": "#fafbfc",
- "selectedInactiveBackground": "#fafbfc",
+ "selectedBackground": "#FFFFFF",
+ "selectedInactiveBackground": "#FFFFFF",
"underlineColor": "#79CB60",
- "underlinedTabBackground": "#CCE5FF",
- "underlinedTabInactiveBackground": "#f3f3f3"
+ "underlinedTabBackground": "#cce5ff",
+ "underlinedTabInactiveBackground": "#F7F8FA",
+ "underlinedTabForeground": "#111111",
+ "underlinedTabInactiveForeground": "#5B6168"
}
},
"Tree": {
"background": "#F7F8FA",
"foreground": "#292D31",
"hash": "#DFE1E4",
+ "hoverBackground": "#3A66D170",
+ "hoverInactiveBackground": "#cce5ff",
"modifiedItemForeground": "#79CB60",
"rowHeight": 28,
- "selectionBackground": "#3A66D1",
- "selectionForeground": "#FFFFFF",
- "selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#3A66D1",
+ "selectionBackground": "#3A66D170",
+ "selectionForeground": "#111111",
+ "selectionInactiveForeground": "#111111",
+ "selectionInactiveBackground": "#3A66D170",
"textBackground": "#F7F8FA"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#DFE1E4",
- "ColorPicker.background": "#F7F8FA",
- "ColorPicker.foreground": "#5B6168",
- "Component.borderColor": "#DFE1E4",
- "Component.background": "#F7F8FA",
- "Component.foreground": "#5B6168",
- "Connector.borderColor": "#DFE1E4",
- "Connector.hoverBorderColor": "#CCE5FF",
- "Canvas.background": "#fafbfc",
+ "Canvas.background": "#FFFFFF",
+ "ColorPicker": {
+ "background": "#F7F8FA",
+ "foreground": "#5B6168"
+ },
+ "Component": {
+ "borderColor": "#DFE1E4",
+ "background": "#F7F8FA",
+ "foreground": "#5B6168",
+ "hoverBorderColor": "#CCE5FF"
+ },
+ "Connector": {
+ "borderColor": "#DFE1E4",
+ "hoverBorderColor": "#CCE5FF"
+ },
+ "Canvas.background": "#FFFFFF",
"highStroke.foreground": "#5B6168",
"Label.foreground": "#292D31",
- "List.selectionBackground": "#3A66D1",
- "Panel.borderColor": "#DFE1E4",
- "Panel.background": "#F7F8FA",
+ "List.selectionBackground": "#3A66D170",
+ "motion": {
+ "borderColor": "#DFE1E4",
+ "Component.foreground": "#5B6168",
+ "ConstraintSetText.foreground": "#292D31",
+ "ConstraintSet.background": "#F7F8FA",
+ "CSPanel.SelectedFocusBackground": "#3A66D1",
+ "CSPanel.SelectedBackground": "#3A66D170",
+ "cs_FocusText.infoForeground": "#292D31",
+ "CursorTextColor.foreground": "#5B6168",
+ "HoverColor.disabledBackground": "#6C737C",
+ "motionGraph.background": "#F7F8FA",
+ "Notification.background": "#DFECFE",
+ "ourAvg.background": "#F7F8FA",
+ "ourCS.background": "#F7F8FA",
+ "ourCS_Border.borderColor": "#DFE1E4",
+ "ourCS_TextColor.foreground": "#292D31",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#111111",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#cce5ff",
+ "ourCS_SelectedBorder.pressedBorderColor": "#CCE5FF",
+ "ourML_BarColor.separatorColor": "#DFE1E4",
+ "PrimaryPanel.background": "#FFFFFF",
+ "SecondaryPanel.background": "#F7F8FA",
+ "SecondaryPanel.header.foreground": "#292D31",
+ "SecondaryPanel.header.background": "#FFFFFF",
+ "timeLine.disabledBorderColor": "#DFE1E4"
+ },
+ "Panel": {
+ "borderColor": "#DFE1E4",
+ "background": "#F7F8FA"
+ },
"percent.foreground": "#5B6168",
- "Placeholder.background": "#F7F8FA",
- "Placeholder.borderColor": "#DFE1E4",
- "Placeholder.foreground": "#5B6168",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#F7F8FA",
+ "borderColor": "#DFE1E4",
+ "foreground": "#5B6168",
+ "selectedForeground": "#111111"
+ },
"Preview.background": "#F7F8FA",
"stroke.acceleratorForeground": "#292D31"
},
@@ -820,7 +906,7 @@
"HgLog": {
"branchIconColor": "#79CB60",
"bookmarkIconColor": "#111111",
- "closedBranchIconColor": "#9ba0a3",
+ "closedBranchIconColor": "#6C737C",
"localTagIconColor": "#292D31",
"mqTagIconColor": "#292D31",
"tagIconColor": "#292D31",
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#292D31",
- "Commit.currentBranchBackground": "#f3f3f3"
+ "Commit.currentBranchBackground": "#F7F8FA",
+ "Commit.hoveredBackground": "#3A66D170"
},
"RefLabel": {
"foreground": "#111111",
@@ -840,19 +927,25 @@
"foreground": "#5B6168"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#F7F8FA",
"background": "#F7F8FA",
"borderColor": "#F7F8FA",
- "captionBackground": "#fafbfc",
+ "captionBackground": "#FFFFFF",
"captionForeground": "#5B6168",
- "footerBackground": "#fafbfc",
+ "Details.background": "#F7F8FA",
+ "footerBackground": "#FFFFFF",
"footerForeground": "#5B6168",
"headerBackground": "#F7F8FA",
"headerForeground": "#5B6168",
+ "List.background": "#FFFFFF",
"separatorColor": "#DFE1E4",
+ "SidePanel.background": "#F7F8FA",
"Projects": {
- "background": "#f3f3f3",
+ "actions.background": "#FFFFFF",
+ "actions.selectionBackground": "#CCE5FF",
+ "background": "#F7F8FA",
"selectionBackground": "#3A66D1",
- "selectionInactiveBackground": "#f3f3f3"
+ "selectionInactiveBackground": "#F7F8FA"
}
},
"window": "#F7F8FA",
@@ -862,14 +955,14 @@
},
"icons": {
"ColorPalette": {
- "#43494A": "#fafbfc",
+ "#43494A": "#FFFFFF",
"#6B6B6B": "#292D31",
"#A7A7A7": "#F7F8FA",
"#3D6185": "#79CB60",
"#466D94": "#79CB60",
"#3C3F41": "#F7F8FA",
- "#545556": "#9ba0a3",
- "#606060": "#9ba0a3",
+ "#545556": "#6C737C",
+ "#606060": "#6C737C",
"#9AA7B0": "#5B6168",
"#675133": "#79CB60",
"Actions.Blue": "#6F42C1",
@@ -879,20 +972,20 @@
"Actions.GreyInline.Dark": "#5B6168",
"Actions.Red": "#22863A",
"Actions.Yellow": "#6F42C1",
- "Checkbox.Background.Default": "#fafbfc",
- "Checkbox.Background.Default.Dark": "#fafbfc",
- "Checkbox.Background.Disabled": "#dcdcdc",
- "Checkbox.Background.Disabled.Dark": "#dcdcdc",
+ "Checkbox.Background.Default": "#FFFFFF",
+ "Checkbox.Background.Default.Dark": "#FFFFFF",
+ "Checkbox.Background.Disabled": "#FDFDFD",
+ "Checkbox.Background.Disabled.Dark": "#FDFDFD",
"Checkbox.Border.Default": "#DFE1E4",
"Checkbox.Border.Default.Dark": "#DFE1E4",
- "Checkbox.Border.Disabled": "#9ba0a3",
- "Checkbox.Border.Disabled.Dark": "#9ba0a3",
+ "Checkbox.Border.Disabled": "#6C737C",
+ "Checkbox.Border.Disabled.Dark": "#6C737C",
"Checkbox.Focus.Thin.Default": "#79CB60",
"Checkbox.Focus.Thin.Default.Dark": "#79CB60",
"Checkbox.Focus.Wide": "#79CB60",
"Checkbox.Focus.Wide.Dark": "#79CB60",
- "Checkbox.Foreground.Disabled": "#9ba0a3",
- "Checkbox.Foreground.Disabled.Dark": "#9ba0a3",
+ "Checkbox.Foreground.Disabled": "#6C737C",
+ "Checkbox.Foreground.Disabled.Dark": "#6C737C",
"Checkbox.Background.Selected": "#79CB60",
"Checkbox.Background.Selected.Dark": "#F7F8FA",
"Checkbox.Border.Selected": "#79CB60",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl Contrast.theme.json
index ef88efdd..259186d4 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl Contrast.theme.json
@@ -3,225 +3,247 @@
"dark": false,
"author": "Mallowigi",
"editorScheme": "/colors/Light Owl.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/lightowl.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
- "acceleratorSelectionForeground": "#90A7B2",
- "background": "#F0F0F0",
- "borderColor": "#d9d9d9",
- "disabledBackground": "#E0E7EA",
- "disabledForeground": "#93A1A1",
- "disabledText": "#93A1A1",
- "focusColor": "#CCCCCC",
- "focusedBorderColor": "#2AA298",
- "foreground": "#403f53",
- "inactiveBackground": "#E0E7EA",
- "inactiveForeground": "#90A7B2",
- "infoForeground": "#90A7B2",
- "selectionBackground": "#d3e8f8",
- "selectionBackgroundInactive": "#FBFBFB",
+ "acceleratorSelectionForeground": "#403F53",
+ "background": "#FAFAFA",
+ "borderColor": "#efefef",
+ "disabledBackground": "#82AAFF",
+ "disabledForeground": "#dddddd",
+ "disabledText": "#dddddd",
+ "focusColor": "#E0E7EA",
+ "focusedBorderColor": "#269386",
+ "foreground": "#546e7a",
+ "inactiveBackground": "#82AAFF",
+ "inactiveForeground": "#403F53",
+ "infoForeground": "#403F53",
+ "selectionBackground": "#999e9e",
+ "selectionBackgroundInactive": "#f2f5f7",
"selectionForeground": "#403f53",
- "selectionInactiveBackground": "#FBFBFB",
- "separatorColor": "#d9d9d9"
+ "selectionInactiveBackground": "#f2f5f7",
+ "separatorColor": "#efefef"
},
- "activeCaption": "#F0F0F0",
+ "activeCaption": "#FAFAFA",
"ActionButton": {
- "hoverBackground": "#2AA29850",
- "hoverBorderColor": "#2AA29850",
- "hoverSeparatorColor": "#d9d9d9",
- "focusedBorderColor": "#2AA29850",
- "pressedBackground": "#2AA29850",
- "pressedBorderColor": "#2AA29850"
+ "hoverBackground": "#26938650",
+ "hoverBorderColor": "#26938650",
+ "hoverSeparatorColor": "#FAFAFA",
+ "focusedBorderColor": "#26938650",
+ "pressedBackground": "#26938650",
+ "pressedBorderColor": "#26938650"
},
"Autocomplete": {
- "selectionBackground": "#d3e8f8"
+ "selectionBackground": "#999e9e"
},
- "Borders.ContrastBorderColor": "#F0F0F0",
- "Borders.color": "#d9d9d9",
+ "Borders.ContrastBorderColor": "#FAFAFA",
+ "Borders.color": "#efefef",
"Button": {
"arc": 0,
- "background": "#F0F0F0",
+ "background": "#FAFAFA",
"default": {
- "endBackground": "#d3e8f8",
- "endBorderColor": "#d3e8f8",
+ "endBackground": "#FAFAFA",
+ "endBorderColor": "#FAFAFA",
"foreground": "#333333",
- "focusColor": "#2AA298",
- "focusedBorderColor": "#2AA298",
- "shadowColor": "#d3e8f8",
- "startBackground": "#d3e8f8",
- "startBorderColor": "#d3e8f8"
+ "focusColor": "#269386",
+ "focusedBorderColor": "#269386",
+ "shadowColor": "#FAFAFA",
+ "startBackground": "#FAFAFA",
+ "startBorderColor": "#FAFAFA"
},
- "disabledBorderColor": "#d9d9d9",
- "disabledText": "#93A1A1",
- "endBackground": "#d9d9d9",
- "endBorderColor": "#d9d9d9",
- "focus": "#CCCCCC",
- "focusedBorderColor": "#2AA298",
- "foreground": "#90A7B2",
+ "disabledBorderColor": "#FAFAFA",
+ "disabledText": "#dddddd",
+ "endBackground": "#FAFAFA",
+ "endBorderColor": "#FAFAFA",
+ "focus": "#E0E7EA",
+ "focusedBorderColor": "#269386",
+ "foreground": "#403F53",
"highlight": "#403f53",
- "mt.background": "#d9d9d9",
- "mt.foreground": "#90A7B2",
+ "mt.background": "#FAFAFA",
+ "mt.foreground": "#403F53",
"mt.selectedForeground": "#403f53",
- "mt.selection.color1": "#d3e8f8",
- "mt.selection.color2": "#d3e8f8",
- "startBackground": "#d9d9d9",
- "startBorderColor": "#d9d9d9",
- "shadowColor": "#d9d9d9",
+ "mt.selection.color1": "#FAFAFA",
+ "mt.selection.color2": "#FAFAFA",
+ "startBackground": "#FAFAFA",
+ "startBorderColor": "#FAFAFA",
+ "shadowColor": "#FAFAFA",
"shadowWidth": 0
},
"Canvas": {
- "Tooltip.borderColor": "#d9d9d9",
+ "Tooltip.borderColor": "#efefef",
"Tooltip.background": "#F0F0F0"
},
- "Content.background": "#f0f0f0",
+ "Content": {
+ "background": "#FAFAFA",
+ "selectionBackground": "#999e9e"
+ },
"CheckBox": {
- "background": "#F0F0F0",
- "disabledText": "#93A1A1",
- "foreground": "#403f53",
- "select": "#2AA298"
+ "background": "#FAFAFA",
+ "disabledText": "#dddddd",
+ "foreground": "#546e7a",
+ "select": "#269386"
},
"CheckBoxMenuItem": {
- "acceleratorForeground": "#90A7B2",
- "acceleratorSelectionForeground": "#90A7B2",
- "background": "#F0F0F0",
- "disabledBackground": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "selectionBackground": "#d3e8f8",
+ "acceleratorForeground": "#403F53",
+ "acceleratorSelectionForeground": "#403F53",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#333333"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#546e7a",
+ "AccessEnabled": {
+ "accessDot": "#269386",
+ "dropdownBorder": "#f2f5f7",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
- "background": "#F0F0F0",
- "foreground": "#403f53",
- "swatchesDefaultRecentColor": "#403f53"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a",
+ "swatchesDefaultRecentColor": "#546e7a"
},
- "ComboBoxButton.background": "#d9d9d9",
+ "ComboBoxButton.background": "#FAFAFA",
"ComboBox": {
"ArrowButton": {
- "background": "#d9d9d9",
- "disabledIconColor": "#93A1A1",
- "iconColor": "#403f53",
- "nonEditableBackground": "#F0F0F0"
+ "background": "#FAFAFA",
+ "disabledIconColor": "#dddddd",
+ "iconColor": "#546e7a",
+ "nonEditableBackground": "#FAFAFA"
},
- "background": "#f0f0f0",
- "buttonBackground": "#d9d9d9",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "modifiedItemForeground": "#2AA298",
- "nonEditableBackground": "#FBFBFB",
+ "background": "#FAFAFA",
+ "buttonBackground": "#FAFAFA",
+ "darcula.hoveredArrowButtonForeground": "#269386",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "modifiedItemForeground": "#269386",
+ "nonEditableBackground": "#f2f5f7",
"padding": "5,5,5,5",
- "selectionBackground": "#d3e8f8",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333"
},
- "ComboPopup.border": "#d9d9d9",
+ "ComboPopup.border": "#efefef",
"CompletionPopup": {
- "background": "#FBFBFB",
- "foreground": "#403f53",
- "infoForeground": "#90A7B2",
- "matchForeground": "#2AA298",
- "matchSelectionForeground": "#2AA298",
+ "background": "#f2f5f7",
+ "foreground": "#546e7a",
+ "infoForeground": "#403F53",
+ "matchForeground": "#269386",
+ "matchSelectionForeground": "#269386",
"nonFocusedState": "false",
"selectedGrayedForeground": "#403f53",
"selectionGrayForeground": "#403f53",
- "selectionInactiveInfoForeground": "#90A7B2",
- "selectionInactiveBackground": "#d3e8f850",
- "selectionBackground": "#d3e8f880",
+ "selectionInactiveInfoForeground": "#403F53",
+ "selectionInactiveBackground": "#999e9e50",
+ "selectionBackground": "#999e9e80",
"selectionForeground": "#403f53",
"selectionInfoForeground": "#403f53"
},
"Component": {
"arc": 4,
- "borderColor": "#CCCCCC",
- "disabledBorderColor": "#d9d9d9",
- "focusColor": "#2AA298",
- "focusedBorderColor": "#2AA298",
- "hoverIconColor": "#2AA298",
- "infoForeground": "#90A7B2",
- "iconColor": "#403f53"
+ "borderColor": "#E0E7EA",
+ "disabledBorderColor": "#FAFAFA",
+ "focusColor": "#269386",
+ "focusedBorderColor": "#269386",
+ "hoverIconColor": "#269386",
+ "infoForeground": "#403F53",
+ "iconColor": "#546e7a"
},
- "control": "#F0F0F0",
- "controlText": "#90A7B2",
+ "control": "#FAFAFA",
+ "controlText": "#403F53",
"Counter": {
- "background": "#2AA298",
+ "background": "#269386",
"foreground": "#403f53"
},
"Debugger": {
"Variables": {
- "collectingDataForeground": "#90A7B2",
- "changedValueForeground": "#2AA298",
+ "collectingDataForeground": "#403F53",
+ "changedValueForeground": "#269386",
"errorMessageForeground": "#994cc3",
- "evaluatingExpressionForeground": "#90A7B2",
+ "evaluatingExpressionForeground": "#403F53",
"exceptionForeground": "#4876d6",
- "modifyingValueForeground": "#2AA298",
- "valueForeground": "#2AA298"
+ "modifyingValueForeground": "#269386",
+ "valueForeground": "#269386"
}
},
"DebuggerTabs": {
- "selectedBackground": "#CCCCCC",
- "underlinedTabBackground": "#CCCCCC"
+ "selectedBackground": "#E0E7EA",
+ "underlinedTabBackground": "#E0E7EA"
},
"DebuggerPopup": {
- "borderColor": "#CCCCCC"
+ "borderColor": "#E0E7EA"
},
"DefaultTabs": {
- "background": "#F0F0F0",
- "borderColor": "#F0F0F0",
- "hoverBackground": "#d3e8f8",
- "hoverColor": "#f0f0f0",
- "hoverMaskColor": "#CCCCCC",
- "inactiveColoredFileBackground": "#d9d9d9",
- "inactiveUnderlineColor": "#93A1A1",
- "inactiveMaskColor": "#f0f0f0",
- "underlineColor": "#2AA298",
- "underlinedTabBackground": "#d3e8f8"
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "hoverBackground": "#FAFAFA",
+ "hoverColor": "#FAFAFA",
+ "hoverMaskColor": "#E0E7EA",
+ "inactiveColoredTabBackground": "#FAFAFA",
+ "inactiveColoredFileBackground": "#FAFAFA",
+ "inactiveUnderlineColor": "#269386",
+ "inactiveMaskColor": "#FAFAFA",
+ "underlineColor": "#269386",
+ "underlinedTabBackground": "#FAFAFA",
+ "underlinedTabForeground": "#403f53"
},
- "Desktop.background": "#F0F0F0",
- "DialogWrapper.southPanelBackground": "#F0F0F0",
- "DialogWrapper.southPanelDivider": "#F0F0F0",
+ "Desktop.background": "#FAFAFA",
+ "DialogWrapper.southPanelBackground": "#FAFAFA",
+ "DialogWrapper.southPanelDivider": "#FAFAFA",
"DragAndDrop": {
- "areaBackground": "#F0F0F0",
- "areaBorderColor": "#F0F0F0",
- "areaForeground": "#403f53"
+ "areaBackground": "#FAFAFA",
+ "areaBorderColor": "#FAFAFA",
+ "areaForeground": "#546e7a"
},
"Editor": {
- "background": "#f0f0f0",
- "foreground": "#403f53",
- "shortcutForeground": "#90A7B2"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a",
+ "shortcutForeground": "#403F53"
},
"EditorPane": {
- "background": "#f0f0f0",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveBackground": "#F0F0F0",
- "inactiveForeground": "#93A1A1",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveBackground": "#FAFAFA",
+ "inactiveForeground": "#dddddd",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#333333"
},
"EditorTabs": {
- "borderColor": "#FBFBFB",
- "hoverColor": "#CCCCCC",
- "hoverMaskColor": "#CCCCCC",
- "inactiveMaskColor": "#F0F0F0",
- "inactiveColoredFileBackground": "#F0F0F02",
- "inactiveUnderlineColor": "#93A1A1",
- "selectedForeground": "#403f53",
- "selectedBackground": "#d3e8f8",
- "underlineColor": "#2AA298",
- "underlinedTabBackground": "#d3e8f8"
+ "borderColor": "#f2f5f7",
+ "hoverBackground": "#E0E7EA",
+ "hoverColor": "#E0E7EA",
+ "hoverMaskColor": "#E0E7EA",
+ "inactiveMaskColor": "#FAFAFA",
+ "inactiveColoredFileBackground": "#FAFAFA",
+ "inactiveUnderlineColor": "#dddddd",
+ "selectedForeground": "#546e7a",
+ "selectedBackground": "#FAFAFA",
+ "underlineColor": "#269386",
+ "underlinedTabBackground": "#FAFAFA",
+ "underlinedTabForeground": "#403f53"
},
"EditorGroupsTabs": {
- "background": "#F0F0F0",
- "borderColor": "#FBFBFB",
- "hoverBackground": "#CCCCCC",
- "hoverColor": "#CCCCCC",
- "inactiveUnderlineColor": "#2AA298",
- "underlineColor": "#2AA298",
- "underlinedTabBackground": "#d3e8f8",
- "underlinedTabForeground": "#403f53"
+ "background": "#FAFAFA",
+ "borderColor": "#f2f5f7",
+ "hoverBackground": "#E0E7EA",
+ "hoverColor": "#E0E7EA",
+ "inactiveUnderlineColor": "#269386",
+ "underlineColor": "#269386",
+ "underlinedTabBackground": "#FAFAFA",
+ "underlinedTabForeground": "#546e7a"
},
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#E0E7EA",
+ "Yellow": "#82AAFF",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -236,151 +258,155 @@
"nativeSearchNotMatchedBackground": "#C792EA",
"nativeFocusSearchNotMatchedBackground": "#BB80B3"
},
- "Focus.color": "#d9d9d9",
+ "Focus.color": "#efefef",
"FormattedTextField": {
- "background": "#f0f0f0",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveBackground": "#d9d9d9",
- "inactiveForeground": "#93A1A1",
+ "background": "#FAFAFA",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveBackground": "#FAFAFA",
+ "inactiveForeground": "#dddddd",
"selectionForeground": "#333333",
- "selectionBackground": "#d3e8f8"
+ "selectionBackground": "#FAFAFA"
},
+ "GotItTooltip.borderColor": "#F0F0F0",
"Group": {
- "disabledSeparatorColor": "#d9d9d9",
- "separatorColor": "#d9d9d9"
+ "disabledSeparatorColor": "#efefef",
+ "separatorColor": "#efefef"
},
"GutterTooltip": {
- "infoForeground": "#403f53",
- "lineSeparatorColor": "#F0F0F0"
+ "infoForeground": "#403F53",
+ "lineSeparatorColor": "#FAFAFA"
},
"HeaderColor": {
- "active": "#F0F0F0",
- "inactive": "#f0f0f0"
+ "active": "#FAFAFA",
+ "inactive": "#FAFAFA"
},
"HelpTooltip": {
- "background": "#F0F0F0",
- "borderColor": "#d9d9d9",
- "foreground": "#403f53",
- "infoForeground": "#90A7B2",
- "shortcutForeground": "#90A7B2"
+ "background": "#FAFAFA",
+ "borderColor": "#efefef",
+ "foreground": "#546e7a",
+ "infoForeground": "#403F53",
+ "shortcutForeground": "#403F53"
},
- "Hyperlink.linkColor": "#2AA298",
- "inactiveCaption": "#FBFBFB",
- "inactiveCaptionBorder": "#F0F0F0",
- "inactiveCaptionText": "#90A7B2",
- "info": "#90A7B2",
- "infoText": "#90A7B2",
+ "Hyperlink.linkColor": "#269386",
+ "inactiveCaption": "#f2f5f7",
+ "inactiveCaptionBorder": "#FAFAFA",
+ "inactiveCaptionText": "#403F53",
+ "info": "#403F53",
+ "infoText": "#403F53",
"IdeStatusBar.border": "4,4,4,4",
- "InformationHint.borderColor": "#d9d9d9",
+ "InformationHint.borderColor": "#efefef",
"InplaceRefactoringPopup": {
- "borderColor": "#F0F0F0"
+ "borderColor": "#FAFAFA"
},
"InternalFrame": {
- "activeTitleForeground": "#403f53",
- "background": "#F0F0F0",
- "inactiveTitleForeground": "#90A7B2"
+ "activeTitleForeground": "#546e7a",
+ "background": "#FAFAFA",
+ "inactiveTitleForeground": "#403F53"
},
"Label": {
- "background": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "disabledShadow": "#F0F0F0",
- "disabledText": "#93A1A1",
- "foreground": "#403f53",
- "infoForeground": "#90A7B2",
- "selectedForeground": "#333333"
+ "background": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "disabledShadow": "#FAFAFA",
+ "disabledText": "#dddddd",
+ "foreground": "#546e7a",
+ "infoForeground": "#403F53",
+ "selectedForeground": "#333333",
+ "selectedDisabledForeground": "#546e7a"
},
"Link": {
- "activeForeground": "#2AA298",
- "hoverForeground": "#2AA298",
- "pressedForeground": "#2AA298",
- "secondaryForeground": "#90A7B2",
- "visitedForeground": "#2AA298"
+ "activeForeground": "#269386",
+ "hoverForeground": "#269386",
+ "pressedForeground": "#269386",
+ "secondaryForeground": "#403F53",
+ "visitedForeground": "#269386"
},
- "link.foreground": "#2AA298",
+ "link.foreground": "#269386",
"List": {
- "background": "#FBFBFB",
- "foreground": "#403f53",
- "selectionBackground": "#d3e8f850",
+ "background": "#f2f5f7",
+ "foreground": "#546e7a",
+ "hoverBackground": "#E0E7EA70",
+ "hoverInactiveBackground": "#FAFAFA",
+ "selectionBackground": "#999e9e50",
"selectionForeground": "#403f53",
"selectionInactiveForeground": "#333333",
- "selectionInactiveBackground": "#d3e8f87c"
+ "selectionInactiveBackground": "#E0E7EA70"
},
"material": {
- "background": "#F0F0F0",
- "branchColor": "#403f53",
- "contrast": "#f0f0f0",
- "foreground": "#403f53",
- "mergeCommits": "#d9d9d9",
- "primaryColor": "#90A7B2",
+ "background": "#FAFAFA",
+ "branchColor": "#546e7a",
+ "contrast": "#FAFAFA",
+ "foreground": "#546e7a",
+ "mergeCommits": "#FAFAFA",
+ "primaryColor": "#403F53",
"selectionForeground": "#403f53",
- "tab.backgroundColor": "#F0F0F0",
- "tab.borderColor": "#2AA298",
- "tagColor": "#90A7B2"
+ "tab.backgroundColor": "#FAFAFA",
+ "tab.borderColor": "#269386",
+ "tagColor": "#403F53"
},
"MemoryIndicator": {
- "allocatedBackground": "#FBFBFB",
- "usedColor": "#CCCCCC",
- "usedBackground": "#CCCCCC"
+ "allocatedBackground": "#f2f5f7",
+ "usedColor": "#E0E7EA",
+ "usedBackground": "#E0E7EA"
},
"Menu": {
- "acceleratorForeground": "#90A7B2",
+ "acceleratorForeground": "#403F53",
"acceleratorSelectionForeground": "#403f53",
- "background": "#F0F0F0",
+ "background": "#FAFAFA",
"border": "4,2,4,2",
- "borderColor": "#FBFBFB",
- "disabledBackground": "#FBFBFB",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "selectionBackground": "#d3e8f8",
+ "borderColor": "#f2f5f7",
+ "disabledBackground": "#f2f5f7",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#403f53",
- "separatorColor": "#d9d9d9"
+ "separatorColor": "#efefef"
},
"MenuBar": {
- "background": "#f0f0f0",
- "borderColor": "#F0F0F0",
- "disabledBackground": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "highlight": "#F0F0F0",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "highlight": "#FAFAFA",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#403f53",
- "shadow": "#f0f0f0"
+ "shadow": "#FAFAFA"
},
"MenuItem": {
- "acceleratorForeground": "#90A7B2",
+ "acceleratorForeground": "#403F53",
"acceleratorSelectionForeground": "#403f53",
"border": "4,2,4,2",
- "background": "#F0F0F0",
- "disabledBackground": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#403f53"
},
"NavBar": {
- "arrowColor": "#403f53",
- "borderColor": "#F0F0F0"
+ "arrowColor": "#546e7a",
+ "borderColor": "#FAFAFA"
},
"NewClass": {
"Panel": {
- "background": "#F0F0F0"
+ "background": "#FAFAFA"
},
"SearchField": {
- "background": "#f0f0f0"
+ "background": "#FAFAFA"
}
},
- "NewPSD.warning": "#2AA298",
+ "NewPSD.warning": "#269386",
"Notification": {
"background": "#F0F0F0",
"borderColor": "#F0F0F0",
"errorBackground": "#F0F0F0",
"errorBorderColor": "#F0F0F0",
- "foreground": "#403f53",
+ "foreground": "#546e7a",
"MoreButton": {
- "background": "#d9d9d9",
- "foreground": "#403f53",
- "innerBorderColor": "#d9d9d9"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a",
+ "innerBorderColor": "#FAFAFA"
},
"ToolWindow": {
"errorBackground": "#F0F0F0",
@@ -391,246 +417,259 @@
"warningBorderColor": "#F0F0F0"
}
},
- "OnePixelDivider.background": "#d9d9d9",
+ "OnePixelDivider.background": "#efefef",
"OptionPane": {
- "background": "#F0F0F0",
- "foreground": "#403f53",
- "messageForeground": "#403f53"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a",
+ "messageForeground": "#546e7a"
},
"Outline": {
- "color": "#d9d9d9",
- "focusedColor": "#2AA298",
- "disabledColor": "#93A1A1"
+ "color": "#FAFAFA",
+ "focusedColor": "#269386",
+ "disabledColor": "#dddddd"
},
"Panel": {
- "background": "#F0F0F0",
- "foreground": "#403f53"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a"
},
"ParameterInfo": {
- "background": "#FBFBFB",
- "borderColor": "#d3e8f8",
- "currentOverloadBackground": "#d3e8f8",
- "currentParameterForeground": "#2AA298",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "infoForeground": "#90A7B2",
- "lineSeparatorColor": "#d3e8f8"
+ "background": "#f2f5f7",
+ "borderColor": "#FAFAFA",
+ "currentOverloadBackground": "#E0E7EA",
+ "currentParameterForeground": "#269386",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "infoForeground": "#403F53",
+ "lineSeparatorColor": "#FAFAFA"
},
"PasswordField": {
- "background": "#f0f0f0",
- "capsLockIconColor": "#2AA298",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveForeground": "#93A1A1",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "capsLockIconColor": "#269386",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveForeground": "#dddddd",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333"
},
"Plugins": {
- "background": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "eapTagBackground": "#CCCCCC",
- "lightSelectionBackground": "#d3e8f8",
- "paidTagBackground": "#CCCCCC",
- "selectionBackground": "#d3e8f8",
- "tagForeground": "#2AA298",
- "tagBackground": "#CCCCCC",
- "trialTagBackground": "#CCCCCC",
+ "background": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "eapTagBackground": "#E0E7EA",
+ "hoverBackground": "#E0E7EA70",
+ "lightSelectionBackground": "#FAFAFA",
+ "paidTagBackground": "#E0E7EA",
+ "selectionBackground": "#999e9e",
+ "tagForeground": "#269386",
+ "tagBackground": "#E0E7EA",
+ "trialTagBackground": "#E0E7EA",
"Button": {
- "installBackground": "#d9d9d9",
- "installBorderColor": "#d9d9d9",
- "installForeground": "#403f53",
- "installFocusedBackground": "#CCCCCC",
- "installFillForeground": "#93A1A1",
- "installFillBackground": "#d9d9d9",
- "updateBackground": "#d9d9d9",
- "updateBorderColor": "#d9d9d9",
- "updateForeground": "#403f53"
+ "installBackground": "#FAFAFA",
+ "installBorderColor": "#FAFAFA",
+ "installForeground": "#546e7a",
+ "installFocusedBackground": "#E0E7EA",
+ "installFillForeground": "#dddddd",
+ "installFillBackground": "#FAFAFA",
+ "updateBackground": "#269386",
+ "updateBorderColor": "#FAFAFA",
+ "updateForeground": "#546e7a"
},
"SearchField": {
- "background": "#f0f0f0",
- "borderColor": "#d9d9d9"
+ "background": "#FAFAFA",
+ "borderColor": "#efefef"
},
"SectionHeader": {
- "background": "#FBFBFB",
- "foreground": "#403f53"
+ "background": "#f2f5f7",
+ "foreground": "#546e7a"
},
"Tab": {
- "hoverBackground": "#d3e8f8",
+ "hoverBackground": "#FAFAFA",
"selectedForeground": "#403f53",
- "selectedBackground": "#d3e8f8"
+ "selectedBackground": "#FAFAFA"
}
},
"Popup": {
"Advertiser": {
- "background": "#F0F0F0",
- "borderColor": "#F0F0F0",
- "foreground": "#2AA298"
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "foreground": "#269386"
},
- "borderColor": "#f0f0f0",
- "inactiveBorderColor": "#F0F0F0",
- "innerBorderColor": "#FBFBFB",
+ "borderColor": "#FAFAFA",
+ "inactiveBorderColor": "#FAFAFA",
+ "innerBorderColor": "#f2f5f7",
"Header": {
- "activeBackground": "#F0F0F0",
- "inactiveBackground": "#f0f0f0"
+ "activeBackground": "#FAFAFA",
+ "inactiveBackground": "#FAFAFA"
},
"paintBorder": true,
- "separatorForeground": "#403f53",
- "separatorColor": "#FBFBFB",
+ "separatorForeground": "#546e7a",
+ "separatorColor": "#f2f5f7",
"Toolbar": {
- "Floating.background": "#f0f0f0",
- "background": "#f0f0f0",
- "borderColor": "#f0f0f0"
+ "Floating.background": "#FAFAFA",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA"
}
},
"PopupMenu": {
- "background": "#F0F0F0",
+ "background": "#FAFAFA",
"border": "2,0,2,0",
- "foreground": "#403f53",
- "translucentBackground": "#F0F0F0"
+ "foreground": "#546e7a",
+ "translucentBackground": "#FAFAFA"
},
"PopupMenuSeparator.height": 10,
"PopupMenuSeparator.stripeIndent": 5,
"ProgressBar": {
- "background": "#F0F0F0",
- "foreground": "#2AA298",
- "indeterminateEndColor": "#2AA298",
- "indeterminateStartColor": "#2AA298",
- "progressColor": "#2AA298",
- "selectionBackground": "#CCCCCC",
- "trackColor": "#CCCCCC"
+ "background": "#FAFAFA",
+ "foreground": "#269386",
+ "indeterminateEndColor": "#269386",
+ "indeterminateStartColor": "#269386",
+ "progressColor": "#269386",
+ "selectionBackground": "#E0E7EA",
+ "trackColor": "#E0E7EA"
},
"PsiViewer": {
- "referenceHighlightColor": "#2AA298"
+ "referenceHighlightColor": "#269386"
},
"RadioButton": {
- "background": "#F0F0F0",
- "disabledText": "#93A1A1",
- "foreground": "#403f53"
+ "background": "#FAFAFA",
+ "disabledText": "#dddddd",
+ "foreground": "#546e7a"
},
"RadioButtonMenuItem": {
- "acceleratorForeground": "#90A7B2",
- "acceleratorSelectionForeground": "#90A7B2",
- "background": "#F0F0F0",
- "disabledBackground": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "selectionBackground": "#d3e8f8",
+ "acceleratorForeground": "#403F53",
+ "acceleratorSelectionForeground": "#403F53",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#403f53"
},
+ "ScreenView.borderColor": "#efefef",
"ScrollBar": {
- "background": "#F0F0F0",
- "hoverThumbBorderColor": "#2AA298",
- "hoverThumbColor": "#2AA298",
- "hoverTrackColor": "#F0F0F030",
+ "background": "#FAFAFA",
+ "hoverThumbBorderColor": "#269386",
+ "hoverThumbColor": "#269386",
+ "hoverTrackColor": "#FAFAFA30",
"Mac": {
- "hoverThumbBorderColor": "#2AA298",
- "hoverThumbColor": "#2AA298",
- "hoverTrackColor": "#F0F0F030",
- "thumbBorderColor": "#2AA29870",
- "thumbColor": "#2AA29870",
- "trackColor": "#F0F0F030",
+ "hoverThumbBorderColor": "#269386",
+ "hoverThumbColor": "#269386",
+ "hoverTrackColor": "#FAFAFA30",
+ "thumbBorderColor": "#26938670",
+ "thumbColor": "#26938670",
+ "trackColor": "#FAFAFA30",
"Transparent": {
- "hoverThumbBorderColor": "#2AA298",
- "hoverThumbColor": "#2AA298",
- "hoverTrackColor": "#F0F0F030",
- "thumbBorderColor": "#2AA29870",
- "thumbColor": "#2AA29870",
- "trackColor": "#F0F0F030"
+ "hoverThumbBorderColor": "#269386",
+ "hoverThumbColor": "#269386",
+ "hoverTrackColor": "#FAFAFA30",
+ "thumbBorderColor": "#26938670",
+ "thumbColor": "#26938670",
+ "trackColor": "#FAFAFA30"
}
},
- "thumb": "#CCCCCC",
- "thumbBorderColor": "#2AA29870",
- "thumbColor": "#2AA29870",
- "trackColor": "#F0F0F030",
+ "thumb": "#E0E7EA",
+ "thumbBorderColor": "#26938670",
+ "thumbColor": "#26938670",
+ "trackColor": "#FAFAFA30",
"Transparent": {
- "hoverThumbBorderColor": "#2AA298",
- "hoverThumbColor": "#2AA298",
- "hoverTrackColor": "#F0F0F030",
- "thumbBorderColor": "#2AA29870",
- "thumbColor": "#2AA29870",
- "trackColor": "#F0F0F030"
+ "hoverThumbBorderColor": "#269386",
+ "hoverThumbColor": "#269386",
+ "hoverTrackColor": "#FAFAFA30",
+ "thumbBorderColor": "#26938670",
+ "thumbColor": "#26938670",
+ "trackColor": "#FAFAFA30"
}
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#f0f0f0",
- "foreground": "#90A7B2"
+ "background": "#FAFAFA",
+ "foreground": "#403F53"
},
"Header": {
- "background": "#F0F0F0"
+ "background": "#FAFAFA"
},
"List": {
- "separatorForeground": "#90A7B2",
- "separatorColor": "#d9d9d9"
+ "separatorForeground": "#403F53",
+ "separatorColor": "#efefef"
},
"SearchField": {
- "background": "#F0F0F0",
- "borderColor": "#f0f0f0",
- "infoForeground": "#90A7B2"
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "infoForeground": "#403F53"
},
"Tab": {
"active.foreground": "#333333",
"selectedForeground": "#333333",
- "selectedBackground": "#CCCCCC"
+ "selectedBackground": "#E0E7EA"
}
},
"SearchMatch": {
- "endBackground": "#2AA298",
- "startBackground": "#2AA298"
+ "endBackground": "#269386",
+ "startBackground": "#269386",
+ "endColor": "#269386",
+ "startColor": "#269386"
},
"SearchField.errorBackground": "#F0F0F0",
+ "SearchOption": {
+ "selectedBackground": "#FAFAFA"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#403F53",
+ "Repeated.File.Foreground": "#546e7a"
+ },
"Separator": {
- "background": "#FBFBFB",
- "foreground": "#FBFBFB",
- "separatorColor": "#FBFBFB"
+ "background": "#f2f5f7",
+ "foreground": "#f2f5f7",
+ "separatorColor": "#f2f5f7"
},
"SidePanel": {
- "background": "#f0f0f0"
+ "background": "#FAFAFA"
},
"Slider": {
- "background": "#F0F0F0",
- "buttonBorderColor": "#2AA298",
- "buttonColor": "#2AA298",
- "foreground": "#403f53",
+ "background": "#FAFAFA",
+ "buttonBorderColor": "#269386",
+ "buttonColor": "#269386",
+ "foreground": "#546e7a",
"majorTickLength": 6,
- "tickColor": "#FBFBFB",
- "trackColor": "#d3e8f8",
+ "tickColor": "#f2f5f7",
+ "trackColor": "#FAFAFA",
"trackWidth": 7,
- "thumb": "#2AA298"
+ "thumb": "#269386"
},
"SpeedSearch": {
- "background": "#CCCCCC",
- "borderColor": "#d9d9d9",
- "foreground": "#403f53",
- "errorForeground": "#403f53"
+ "background": "#E0E7EA",
+ "borderColor": "#efefef",
+ "foreground": "#546e7a",
+ "errorForeground": "#546e7a"
},
"Spinner": {
- "background": "#F0F0F0",
+ "background": "#FAFAFA",
"border": "3,3,3,3",
- "foreground": "#403f53",
+ "foreground": "#546e7a",
"selectionForeground": "#333333"
},
"SplitPane": {
- "background": "#F0F0F0",
- "highlight": "#f0f0f0"
+ "background": "#FAFAFA",
+ "highlight": "#FAFAFA"
},
- "SplitPaneDivider.draggingColor": "#FBFBFB",
+ "SplitPaneDivider.draggingColor": "#f2f5f7",
"StatusBar": {
- "borderColor": "#F0F0F0"
+ "borderColor": "#FAFAFA",
+ "hoverBackground": "#E0E7EA",
+ "LightEditBackground": "#FAFAFA"
},
"TabbedPane": {
- "background": "#F0F0F0",
- "contentAreaColor": "#CCCCCC",
+ "background": "#FAFAFA",
+ "contentAreaColor": "#E0E7EA",
"contentBorderInsets": "3,1,1,1",
- "darkShadow": "#d9d9d9",
- "disabledForeground": "#93A1A1",
- "disabledUnderlineColor": "#93A1A1",
- "focus": "#d3e8f8",
- "focusColor": "#d3e8f8",
+ "darkShadow": "#efefef",
+ "disabledForeground": "#dddddd",
+ "disabledUnderlineColor": "#dddddd",
+ "focus": "#FAFAFA",
+ "focusColor": "#FAFAFA",
"fontSizeOffset": 0,
- "foreground": "#403f53",
- "highlight": "#d9d9d9",
- "hoverColor": "#CCCCCC",
+ "foreground": "#546e7a",
+ "highlight": "#efefef",
+ "hoverColor": "#E0E7EA",
"labelShift": 0,
"selectedForeground": "#333333",
"selectedLabelShift": 0,
@@ -639,164 +678,211 @@
"tabHeight": 32,
"tabInsets": "5,10,5,10",
"tabSelectionHeight": 2,
- "underlineColor": "#2AA298"
+ "underlineColor": "#269386"
},
- "TabbedPane.mt.tab.background": "#f0f0f0",
+ "TabbedPane.mt.tab.background": "#FAFAFA",
"Table": {
- "background": "#F0F0F0",
+ "alternativeRowBackground": "#FAFAFA",
+ "background": "#FAFAFA",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
- "dropLineColor": "#2AA298",
- "dropLineShortColor": "#2AA298",
- "focusCellBackground": "#d3e8f8",
+ "disabledForeground": "#dddddd",
+ "dropLineColor": "#269386",
+ "dropLineShortColor": "#269386",
+ "focusCellBackground": "#FAFAFA",
"focusCellForeground": "#333333",
- "foreground": "#403f53",
- "gridColor": "#F0F0F0",
- "highlightOuter": "#d3e8f8",
+ "foreground": "#546e7a",
+ "gridColor": "#FAFAFA",
+ "highlightOuter": "#FAFAFA",
+ "hoverBackground": "#E0E7EA70",
+ "hoverInactiveBackground": "#FAFAFA",
"lightSelectionForeground": "#333333",
- "lightSelectionInactiveForeground": "#90A7B2",
- "lightSelectionInactiveBackground": "#FBFBFB",
- "selectionBackground": "#d3e8f8",
+ "lightSelectionInactiveForeground": "#403F53",
+ "lightSelectionInactiveBackground": "#f2f5f7",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333",
- "selectionInactiveBackground": "#d3e8f8",
+ "selectionInactiveBackground": "#FAFAFA",
"selectionInactiveForeground": "#403f53",
- "sortIconColor": "#403f53",
- "stripeColor": "#f0f0f0"
+ "sortIconColor": "#546e7a",
+ "stripeColor": "#FAFAFA"
},
"TableHeader": {
- "background": "#F0F0F0",
- "borderColor": "#F0F0F0",
- "bottomSeparatorColor": "#FBFBFB",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "bottomSeparatorColor": "#f2f5f7",
"cellBorder": "4,0,4,0",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "focusCellBackground": "#d3e8f8",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "focusCellBackground": "#FAFAFA",
"focusCellForeground": "#333333",
"height": 25,
- "separatorColor": "#FBFBFB"
+ "separatorColor": "#f2f5f7"
},
- "text": "#90A7B2",
- "textInactiveText": "#90A7B2",
- "textText": "#90A7B2",
+ "text": "#403F53",
+ "textInactiveText": "#403F53",
+ "textText": "#403F53",
"TextArea": {
- "background": "#f0f0f0",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveForeground": "#93A1A1",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveForeground": "#dddddd",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333"
},
"TextField": {
- "background": "#f0f0f0",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveForeground": "#93A1A1",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveForeground": "#dddddd",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333"
},
"TextPane": {
- "background": "#f0f0f0",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveForeground": "#93A1A1",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveForeground": "#dddddd",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333"
},
"TitlePane": {
- "background": "#f0f0f0",
- "Button.hoverBackground": "#CCCCCC",
- "inactiveBackground": "#F0F0F0",
- "infoForeground": "#90A7B2",
- "inactiveInfoForeground": "#90A7B2"
+ "background": "#FAFAFA",
+ "Button.hoverBackground": "#E0E7EA",
+ "inactiveBackground": "#FAFAFA",
+ "infoForeground": "#403F53",
+ "inactiveInfoForeground": "#403F53"
},
- "TitledBorder.titleColor": "#403f53",
+ "TitledBorder.titleColor": "#546e7a",
"ToggleButton": {
- "borderColor": "#d9d9d9",
- "buttonColor": "#403f53",
- "disabledText": "#93A1A1",
- "foreground": "#403f53",
- "offForeground": "#F0F0F0",
- "offBackground": "#F0F0F0",
- "onBackground": "#2AA298",
- "onForeground": "#2AA298"
+ "borderColor": "#FAFAFA",
+ "buttonColor": "#546e7a",
+ "disabledText": "#dddddd",
+ "foreground": "#546e7a",
+ "offForeground": "#FAFAFA",
+ "offBackground": "#FAFAFA",
+ "onBackground": "#269386",
+ "onForeground": "#269386"
},
"ToolBar": {
- "background": "#f0f0f0",
- "borderHandleColor": "#90A7B2",
- "floatingForeground": "#90A7B2",
- "foreground": "#403f53"
+ "background": "#FAFAFA",
+ "borderHandleColor": "#403F53",
+ "floatingForeground": "#403F53",
+ "foreground": "#546e7a"
},
"ToolTip": {
- "Actions.background": "#F0F0F0",
- "Actions.infoForeground": "#90A7B2",
+ "Actions.background": "#FAFAFA",
+ "Actions.infoForeground": "#403F53",
"background": "#F0F0F0",
- "borderColor": "#CCCCCC",
- "foreground": "#403f53",
- "infoForeground": "#90A7B2",
- "separatorColor": "#d9d9d9",
- "shortcutForeground": "#90A7B2"
+ "borderColor": "#efefef",
+ "foreground": "#546e7a",
+ "infoForeground": "#403F53",
+ "separatorColor": "#efefef",
+ "shortcutForeground": "#403F53"
},
"ToolWindow": {
"Button": {
- "hoverBackground": "#d3e8f8",
+ "hoverBackground": "#FAFAFA",
"selectedForeground": "#333333",
- "selectedBackground": "#f0f0f0"
+ "selectedBackground": "#FAFAFA"
},
"Header": {
- "background": "#F0F0F0",
- "borderColor": "#FBFBFB",
- "inactiveBackground": "#F0F0F0"
+ "background": "#FAFAFA",
+ "borderColor": "#f2f5f7",
+ "inactiveBackground": "#FAFAFA"
},
"HeaderCloseButton": {
- "background": "#F0F0F0"
+ "background": "#FAFAFA"
},
"HeaderTab": {
- "hoverBackground": "#CCCCCC",
- "hoverInactiveBackground": "#FBFBFB",
- "inactiveUnderlineColor": "#2AA298",
- "selectedBackground": "#f0f0f0",
- "selectedInactiveBackground": "#f0f0f0",
- "underlineColor": "#2AA298",
- "underlinedTabBackground": "#CCCCCC",
- "underlinedTabInactiveBackground": "#FBFBFB"
+ "borderColor": "#E0E7EA",
+ "hoverBackground": "#E0E7EA",
+ "hoverInactiveBackground": "#E0E7EA",
+ "inactiveUnderlineColor": "#269386",
+ "selectedBackground": "#FAFAFA",
+ "selectedInactiveBackground": "#FAFAFA",
+ "underlineColor": "#269386",
+ "underlinedTabBackground": "#FAFAFA",
+ "underlinedTabInactiveBackground": "#f2f5f7",
+ "underlinedTabForeground": "#403f53",
+ "underlinedTabInactiveForeground": "#546e7a"
}
},
"Tree": {
- "background": "#f0f0f0",
- "foreground": "#90A7B2",
- "hash": "#d9d9d9",
- "modifiedItemForeground": "#2AA298",
+ "background": "#FAFAFA",
+ "foreground": "#403F53",
+ "hash": "#efefef",
+ "hoverBackground": "#E0E7EA70",
+ "hoverInactiveBackground": "#FAFAFA",
+ "modifiedItemForeground": "#269386",
"rowHeight": 28,
- "selectionBackground": "#d3e8f87c",
+ "selectionBackground": "#E0E7EA70",
"selectionForeground": "#403f53",
"selectionInactiveForeground": "#403f53",
- "selectionInactiveBackground": "#d3e8f87c",
- "textBackground": "#f0f0f0"
+ "selectionInactiveBackground": "#E0E7EA70",
+ "textBackground": "#FAFAFA"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
- "Activity.borderColor": "#d9d9d9",
- "ColorPicker.background": "#F0F0F0",
- "ColorPicker.foreground": "#403f53",
- "Component.borderColor": "#d9d9d9",
- "Component.background": "#F0F0F0",
- "Component.foreground": "#403f53",
- "Connector.borderColor": "#d9d9d9",
- "Connector.hoverBorderColor": "#CCCCCC",
- "Canvas.background": "#f0f0f0",
- "highStroke.foreground": "#403f53",
- "Label.foreground": "#90A7B2",
- "List.selectionBackground": "#d3e8f87c",
- "Panel.borderColor": "#d9d9d9",
- "Panel.background": "#F0F0F0",
- "percent.foreground": "#403f53",
- "Placeholder.background": "#F0F0F0",
- "Placeholder.borderColor": "#d9d9d9",
- "Placeholder.foreground": "#403f53",
- "Placeholder.selectedForeground": "#403f53",
- "Preview.background": "#F0F0F0",
- "stroke.acceleratorForeground": "#90A7B2"
+ "UIDesigner": {
+ "Activity.borderColor": "#efefef",
+ "Canvas.background": "#FAFAFA",
+ "ColorPicker": {
+ "background": "#FAFAFA",
+ "foreground": "#546e7a"
+ },
+ "Component": {
+ "borderColor": "#efefef",
+ "background": "#FAFAFA",
+ "foreground": "#546e7a",
+ "hoverBorderColor": "#E0E7EA"
+ },
+ "Connector": {
+ "borderColor": "#efefef",
+ "hoverBorderColor": "#E0E7EA"
+ },
+ "Canvas.background": "#FAFAFA",
+ "highStroke.foreground": "#546e7a",
+ "Label.foreground": "#403F53",
+ "List.selectionBackground": "#E0E7EA70",
+ "motion": {
+ "borderColor": "#efefef",
+ "Component.foreground": "#546e7a",
+ "ConstraintSetText.foreground": "#403F53",
+ "ConstraintSet.background": "#f2f5f7",
+ "CSPanel.SelectedFocusBackground": "#999e9e",
+ "CSPanel.SelectedBackground": "#E0E7EA70",
+ "cs_FocusText.infoForeground": "#403F53",
+ "CursorTextColor.foreground": "#546e7a",
+ "HoverColor.disabledBackground": "#dddddd",
+ "motionGraph.background": "#FAFAFA",
+ "Notification.background": "#F0F0F0",
+ "ourAvg.background": "#f2f5f7",
+ "ourCS.background": "#f2f5f7",
+ "ourCS_Border.borderColor": "#efefef",
+ "ourCS_TextColor.foreground": "#403F53",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#403f53",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#FAFAFA",
+ "ourCS_SelectedBorder.pressedBorderColor": "#E0E7EA",
+ "ourML_BarColor.separatorColor": "#efefef",
+ "PrimaryPanel.background": "#FAFAFA",
+ "SecondaryPanel.background": "#FAFAFA",
+ "SecondaryPanel.header.foreground": "#403F53",
+ "SecondaryPanel.header.background": "#FAFAFA",
+ "timeLine.disabledBorderColor": "#efefef"
+ },
+ "Panel": {
+ "borderColor": "#efefef",
+ "background": "#FAFAFA"
+ },
+ "percent.foreground": "#546e7a",
+ "Placeholder": {
+ "background": "#FAFAFA",
+ "borderColor": "#efefef",
+ "foreground": "#546e7a",
+ "selectedForeground": "#403f53"
+ },
+ "Preview.background": "#FAFAFA",
+ "stroke.acceleratorForeground": "#403F53"
},
"ValidationTooltip": {
"errorBackground": "#F0F0F0",
@@ -806,101 +892,108 @@
},
"VersionControl": {
"FileHistory.Commit": {
- "selectedBranchBackground": "#F0F0F0"
+ "selectedBranchBackground": "#FAFAFA"
},
"GitCommits": {
- "graphColor": "#CCCCCC"
+ "graphColor": "#E0E7EA"
},
"GitLog": {
- "localBranchIconColor": "#2AA298",
- "otherIconColor": "#90A7B2",
- "remoteBranchIconColor": "#403f53",
- "tagIconColor": "#90A7B2"
+ "localBranchIconColor": "#269386",
+ "otherIconColor": "#403F53",
+ "remoteBranchIconColor": "#546e7a",
+ "tagIconColor": "#403F53"
},
"HgLog": {
- "branchIconColor": "#2AA298",
+ "branchIconColor": "#269386",
"bookmarkIconColor": "#333333",
- "closedBranchIconColor": "#93A1A1",
- "localTagIconColor": "#90A7B2",
- "mqTagIconColor": "#90A7B2",
- "tagIconColor": "#90A7B2",
- "tipIconColor": "#90A7B2"
+ "closedBranchIconColor": "#dddddd",
+ "localTagIconColor": "#403F53",
+ "mqTagIconColor": "#403F53",
+ "tagIconColor": "#403F53",
+ "tipIconColor": "#403F53"
},
"Log": {
- "Commit.unmatchedForeground": "#90A7B2",
- "Commit.currentBranchBackground": "#FBFBFB"
+ "Commit.unmatchedForeground": "#403F53",
+ "Commit.currentBranchBackground": "#f2f5f7",
+ "Commit.hoveredBackground": "#E0E7EA70"
},
"RefLabel": {
"foreground": "#333333",
- "backgroundBase": "#CCCCCC"
+ "backgroundBase": "#E0E7EA"
}
},
"Viewport": {
- "background": "#f0f0f0",
- "foreground": "#403f53"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a"
},
"WelcomeScreen": {
- "background": "#F0F0F0",
- "borderColor": "#F0F0F0",
- "captionBackground": "#f0f0f0",
- "captionForeground": "#403f53",
- "footerBackground": "#f0f0f0",
- "footerForeground": "#403f53",
- "headerBackground": "#F0F0F0",
- "headerForeground": "#403f53",
- "separatorColor": "#d9d9d9",
+ "AssociatedComponent.background": "#FAFAFA",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "captionBackground": "#FAFAFA",
+ "captionForeground": "#546e7a",
+ "Details.background": "#FAFAFA",
+ "footerBackground": "#FAFAFA",
+ "footerForeground": "#546e7a",
+ "headerBackground": "#FAFAFA",
+ "headerForeground": "#546e7a",
+ "List.background": "#FAFAFA",
+ "separatorColor": "#efefef",
+ "SidePanel.background": "#f2f5f7",
"Projects": {
- "background": "#FBFBFB",
- "selectionBackground": "#d3e8f8",
- "selectionInactiveBackground": "#FBFBFB"
+ "actions.background": "#FAFAFA",
+ "actions.selectionBackground": "#E0E7EA",
+ "background": "#f2f5f7",
+ "selectionBackground": "#999e9e",
+ "selectionInactiveBackground": "#f2f5f7"
}
},
- "window": "#f0f0f0",
- "windowBorder": "#d9d9d9",
- "windowText": "#90A7B2",
- "Window.border": "#d9d9d9"
+ "window": "#FAFAFA",
+ "windowBorder": "#efefef",
+ "windowText": "#403F53",
+ "Window.border": "#efefef"
},
"icons": {
"ColorPalette": {
- "#43494A": "#f0f0f0",
- "#6B6B6B": "#90A7B2",
- "#A7A7A7": "#F0F0F0",
- "#3D6185": "#2AA298",
- "#466D94": "#2AA298",
- "#3C3F41": "#F0F0F0",
- "#545556": "#93A1A1",
- "#606060": "#93A1A1",
- "#9AA7B0": "#403f53",
- "#675133": "#2AA298",
+ "#43494A": "#FAFAFA",
+ "#6B6B6B": "#403F53",
+ "#A7A7A7": "#FAFAFA",
+ "#3D6185": "#269386",
+ "#466D94": "#269386",
+ "#3C3F41": "#FAFAFA",
+ "#545556": "#dddddd",
+ "#606060": "#dddddd",
+ "#9AA7B0": "#546e7a",
+ "#675133": "#269386",
"Actions.Blue": "#4876d6",
"Actions.Green": "#c96765",
- "Actions.Grey": "#90A7B2",
+ "Actions.Grey": "#403F53",
"Actions.GreyInline": "#637777",
- "Actions.GreyInline.Dark": "#403f53",
+ "Actions.GreyInline.Dark": "#546e7a",
"Actions.Red": "#994cc3",
"Actions.Yellow": "#4876d6",
- "Checkbox.Background.Default": "#f0f0f0",
- "Checkbox.Background.Default.Dark": "#f0f0f0",
- "Checkbox.Background.Disabled": "#E0E7EA",
- "Checkbox.Background.Disabled.Dark": "#E0E7EA",
- "Checkbox.Border.Default": "#d9d9d9",
- "Checkbox.Border.Default.Dark": "#d9d9d9",
- "Checkbox.Border.Disabled": "#93A1A1",
- "Checkbox.Border.Disabled.Dark": "#93A1A1",
- "Checkbox.Focus.Thin.Default": "#2AA298",
- "Checkbox.Focus.Thin.Default.Dark": "#2AA298",
- "Checkbox.Focus.Wide": "#2AA298",
- "Checkbox.Focus.Wide.Dark": "#2AA298",
- "Checkbox.Foreground.Disabled": "#93A1A1",
- "Checkbox.Foreground.Disabled.Dark": "#93A1A1",
- "Checkbox.Background.Selected": "#2AA298",
- "Checkbox.Background.Selected.Dark": "#F0F0F0",
- "Checkbox.Border.Selected": "#2AA298",
- "Checkbox.Border.Selected.Dark": "#2AA298",
- "Checkbox.Foreground.Selected": "#2AA298",
- "Checkbox.Foreground.Selected.Dark": "#2AA298",
- "Checkbox.Focus.Thin.Selected": "#403f53",
- "Checkbox.Focus.Thin.Selected.Dark": "#403f53",
+ "Checkbox.Background.Default": "#FAFAFA",
+ "Checkbox.Background.Default.Dark": "#FAFAFA",
+ "Checkbox.Background.Disabled": "#82AAFF",
+ "Checkbox.Background.Disabled.Dark": "#82AAFF",
+ "Checkbox.Border.Default": "#efefef",
+ "Checkbox.Border.Default.Dark": "#efefef",
+ "Checkbox.Border.Disabled": "#dddddd",
+ "Checkbox.Border.Disabled.Dark": "#dddddd",
+ "Checkbox.Focus.Thin.Default": "#269386",
+ "Checkbox.Focus.Thin.Default.Dark": "#269386",
+ "Checkbox.Focus.Wide": "#269386",
+ "Checkbox.Focus.Wide.Dark": "#269386",
+ "Checkbox.Foreground.Disabled": "#dddddd",
+ "Checkbox.Foreground.Disabled.Dark": "#dddddd",
+ "Checkbox.Background.Selected": "#269386",
+ "Checkbox.Background.Selected.Dark": "#FAFAFA",
+ "Checkbox.Border.Selected": "#269386",
+ "Checkbox.Border.Selected.Dark": "#269386",
+ "Checkbox.Foreground.Selected": "#269386",
+ "Checkbox.Foreground.Selected.Dark": "#269386",
+ "Checkbox.Focus.Thin.Selected": "#546e7a",
+ "Checkbox.Focus.Thin.Selected.Dark": "#546e7a",
"Objects.Grey": "#637777",
"Objects.Blue": "#4876d6",
"Objects.RedStatus": "#994cc3",
@@ -909,7 +1002,7 @@
"Objects.Yellow": "#4876d6",
"Objects.Green": "#c96765",
"Objects.Purple": "#994cc3",
- "Objects.BlackText": "#403f53",
+ "Objects.BlackText": "#546e7a",
"Objects.YellowDark": "#aa0982",
"Objects.GreenAndroid": "#c96765"
}
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl.theme.json
index bfa197d2..bc5564d3 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Light Owl.theme.json
@@ -3,225 +3,247 @@
"dark": false,
"author": "Mallowigi",
"editorScheme": "/colors/Light Owl.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/lightowl.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
- "acceleratorSelectionForeground": "#90A7B2",
- "background": "#F0F0F0",
- "borderColor": "#d9d9d9",
- "disabledBackground": "#E0E7EA",
- "disabledForeground": "#93A1A1",
- "disabledText": "#93A1A1",
- "focusColor": "#CCCCCC",
- "focusedBorderColor": "#2AA298",
- "foreground": "#403f53",
- "inactiveBackground": "#E0E7EA",
- "inactiveForeground": "#90A7B2",
- "infoForeground": "#90A7B2",
- "selectionBackground": "#d3e8f8",
- "selectionBackgroundInactive": "#FBFBFB",
+ "acceleratorSelectionForeground": "#403F53",
+ "background": "#FAFAFA",
+ "borderColor": "#efefef",
+ "disabledBackground": "#82AAFF",
+ "disabledForeground": "#dddddd",
+ "disabledText": "#dddddd",
+ "focusColor": "#E0E7EA",
+ "focusedBorderColor": "#269386",
+ "foreground": "#546e7a",
+ "inactiveBackground": "#82AAFF",
+ "inactiveForeground": "#403F53",
+ "infoForeground": "#403F53",
+ "selectionBackground": "#999e9e",
+ "selectionBackgroundInactive": "#f2f5f7",
"selectionForeground": "#403f53",
- "selectionInactiveBackground": "#FBFBFB",
- "separatorColor": "#d9d9d9"
+ "selectionInactiveBackground": "#f2f5f7",
+ "separatorColor": "#efefef"
},
- "activeCaption": "#F0F0F0",
+ "activeCaption": "#FAFAFA",
"ActionButton": {
- "hoverBackground": "#2AA29850",
- "hoverBorderColor": "#2AA29850",
- "hoverSeparatorColor": "#d9d9d9",
- "focusedBorderColor": "#2AA29850",
- "pressedBackground": "#2AA29850",
- "pressedBorderColor": "#2AA29850"
+ "hoverBackground": "#26938650",
+ "hoverBorderColor": "#26938650",
+ "hoverSeparatorColor": "#FAFAFA",
+ "focusedBorderColor": "#26938650",
+ "pressedBackground": "#26938650",
+ "pressedBorderColor": "#26938650"
},
"Autocomplete": {
- "selectionBackground": "#d3e8f8"
+ "selectionBackground": "#999e9e"
},
- "Borders.ContrastBorderColor": "#F0F0F0",
- "Borders.color": "#d9d9d9",
+ "Borders.ContrastBorderColor": "#FAFAFA",
+ "Borders.color": "#efefef",
"Button": {
"arc": 0,
- "background": "#F0F0F0",
+ "background": "#FAFAFA",
"default": {
- "endBackground": "#d3e8f8",
- "endBorderColor": "#d3e8f8",
+ "endBackground": "#FAFAFA",
+ "endBorderColor": "#FAFAFA",
"foreground": "#333333",
- "focusColor": "#2AA298",
- "focusedBorderColor": "#2AA298",
- "shadowColor": "#d3e8f8",
- "startBackground": "#d3e8f8",
- "startBorderColor": "#d3e8f8"
+ "focusColor": "#269386",
+ "focusedBorderColor": "#269386",
+ "shadowColor": "#FAFAFA",
+ "startBackground": "#FAFAFA",
+ "startBorderColor": "#FAFAFA"
},
- "disabledBorderColor": "#d9d9d9",
- "disabledText": "#93A1A1",
- "endBackground": "#d9d9d9",
- "endBorderColor": "#d9d9d9",
- "focus": "#CCCCCC",
- "focusedBorderColor": "#2AA298",
- "foreground": "#90A7B2",
+ "disabledBorderColor": "#FAFAFA",
+ "disabledText": "#dddddd",
+ "endBackground": "#FAFAFA",
+ "endBorderColor": "#FAFAFA",
+ "focus": "#E0E7EA",
+ "focusedBorderColor": "#269386",
+ "foreground": "#403F53",
"highlight": "#403f53",
- "mt.background": "#d9d9d9",
- "mt.foreground": "#90A7B2",
+ "mt.background": "#FAFAFA",
+ "mt.foreground": "#403F53",
"mt.selectedForeground": "#403f53",
- "mt.selection.color1": "#d3e8f8",
- "mt.selection.color2": "#d3e8f8",
- "startBackground": "#d9d9d9",
- "startBorderColor": "#d9d9d9",
- "shadowColor": "#d9d9d9",
+ "mt.selection.color1": "#FAFAFA",
+ "mt.selection.color2": "#FAFAFA",
+ "startBackground": "#FAFAFA",
+ "startBorderColor": "#FAFAFA",
+ "shadowColor": "#FAFAFA",
"shadowWidth": 0
},
"Canvas": {
- "Tooltip.borderColor": "#d9d9d9",
+ "Tooltip.borderColor": "#efefef",
"Tooltip.background": "#F0F0F0"
},
- "Content.background": "#f0f0f0",
+ "Content": {
+ "background": "#FAFAFA",
+ "selectionBackground": "#999e9e"
+ },
"CheckBox": {
- "background": "#F0F0F0",
- "disabledText": "#93A1A1",
- "foreground": "#403f53",
- "select": "#2AA298"
+ "background": "#FAFAFA",
+ "disabledText": "#dddddd",
+ "foreground": "#546e7a",
+ "select": "#269386"
},
"CheckBoxMenuItem": {
- "acceleratorForeground": "#90A7B2",
- "acceleratorSelectionForeground": "#90A7B2",
- "background": "#F0F0F0",
- "disabledBackground": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "selectionBackground": "#d3e8f8",
+ "acceleratorForeground": "#403F53",
+ "acceleratorSelectionForeground": "#403F53",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#333333"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#546e7a",
+ "AccessEnabled": {
+ "accessDot": "#269386",
+ "dropdownBorder": "#f2f5f7",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
- "background": "#F0F0F0",
- "foreground": "#403f53",
- "swatchesDefaultRecentColor": "#403f53"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a",
+ "swatchesDefaultRecentColor": "#546e7a"
},
- "ComboBoxButton.background": "#d9d9d9",
+ "ComboBoxButton.background": "#FAFAFA",
"ComboBox": {
"ArrowButton": {
- "background": "#d9d9d9",
- "disabledIconColor": "#93A1A1",
- "iconColor": "#403f53",
- "nonEditableBackground": "#F0F0F0"
+ "background": "#FAFAFA",
+ "disabledIconColor": "#dddddd",
+ "iconColor": "#546e7a",
+ "nonEditableBackground": "#FAFAFA"
},
- "background": "#F0F0F0",
- "buttonBackground": "#d9d9d9",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "modifiedItemForeground": "#2AA298",
- "nonEditableBackground": "#FBFBFB",
+ "background": "#FAFAFA",
+ "buttonBackground": "#FAFAFA",
+ "darcula.hoveredArrowButtonForeground": "#269386",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "modifiedItemForeground": "#269386",
+ "nonEditableBackground": "#f2f5f7",
"padding": "5,5,5,5",
- "selectionBackground": "#d3e8f8",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333"
},
- "ComboPopup.border": "#d9d9d9",
+ "ComboPopup.border": "#efefef",
"CompletionPopup": {
- "background": "#FBFBFB",
- "foreground": "#403f53",
- "infoForeground": "#90A7B2",
- "matchForeground": "#2AA298",
- "matchSelectionForeground": "#2AA298",
+ "background": "#f2f5f7",
+ "foreground": "#546e7a",
+ "infoForeground": "#403F53",
+ "matchForeground": "#269386",
+ "matchSelectionForeground": "#269386",
"nonFocusedState": "false",
"selectedGrayedForeground": "#403f53",
"selectionGrayForeground": "#403f53",
- "selectionInactiveInfoForeground": "#90A7B2",
- "selectionInactiveBackground": "#d3e8f850",
- "selectionBackground": "#d3e8f880",
+ "selectionInactiveInfoForeground": "#403F53",
+ "selectionInactiveBackground": "#999e9e50",
+ "selectionBackground": "#999e9e80",
"selectionForeground": "#403f53",
"selectionInfoForeground": "#403f53"
},
"Component": {
"arc": 4,
- "borderColor": "#CCCCCC",
- "disabledBorderColor": "#d9d9d9",
- "focusColor": "#2AA298",
- "focusedBorderColor": "#2AA298",
- "hoverIconColor": "#2AA298",
- "infoForeground": "#90A7B2",
- "iconColor": "#403f53"
+ "borderColor": "#E0E7EA",
+ "disabledBorderColor": "#FAFAFA",
+ "focusColor": "#269386",
+ "focusedBorderColor": "#269386",
+ "hoverIconColor": "#269386",
+ "infoForeground": "#403F53",
+ "iconColor": "#546e7a"
},
- "control": "#F0F0F0",
- "controlText": "#90A7B2",
+ "control": "#FAFAFA",
+ "controlText": "#403F53",
"Counter": {
- "background": "#2AA298",
+ "background": "#269386",
"foreground": "#403f53"
},
"Debugger": {
"Variables": {
- "collectingDataForeground": "#90A7B2",
- "changedValueForeground": "#2AA298",
+ "collectingDataForeground": "#403F53",
+ "changedValueForeground": "#269386",
"errorMessageForeground": "#994cc3",
- "evaluatingExpressionForeground": "#90A7B2",
+ "evaluatingExpressionForeground": "#403F53",
"exceptionForeground": "#4876d6",
- "modifyingValueForeground": "#2AA298",
- "valueForeground": "#2AA298"
+ "modifyingValueForeground": "#269386",
+ "valueForeground": "#269386"
}
},
"DebuggerTabs": {
- "selectedBackground": "#CCCCCC",
- "underlinedTabBackground": "#CCCCCC"
+ "selectedBackground": "#E0E7EA",
+ "underlinedTabBackground": "#E0E7EA"
},
"DebuggerPopup": {
- "borderColor": "#CCCCCC"
+ "borderColor": "#E0E7EA"
},
"DefaultTabs": {
- "background": "#F0F0F0",
- "borderColor": "#F0F0F0",
- "hoverBackground": "#d3e8f8",
- "hoverColor": "#F0F0F0",
- "hoverMaskColor": "#CCCCCC",
- "inactiveColoredFileBackground": "#d9d9d9",
- "inactiveUnderlineColor": "#93A1A1",
- "inactiveMaskColor": "#F0F0F0",
- "underlineColor": "#2AA298",
- "underlinedTabBackground": "#d3e8f8"
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "hoverBackground": "#FAFAFA",
+ "hoverColor": "#FAFAFA",
+ "hoverMaskColor": "#E0E7EA",
+ "inactiveColoredTabBackground": "#FAFAFA",
+ "inactiveColoredFileBackground": "#FAFAFA",
+ "inactiveUnderlineColor": "#269386",
+ "inactiveMaskColor": "#FAFAFA",
+ "underlineColor": "#269386",
+ "underlinedTabBackground": "#FAFAFA",
+ "underlinedTabForeground": "#403f53"
},
- "Desktop.background": "#F0F0F0",
- "DialogWrapper.southPanelBackground": "#F0F0F0",
- "DialogWrapper.southPanelDivider": "#F0F0F0",
+ "Desktop.background": "#FAFAFA",
+ "DialogWrapper.southPanelBackground": "#FAFAFA",
+ "DialogWrapper.southPanelDivider": "#FAFAFA",
"DragAndDrop": {
- "areaBackground": "#F0F0F0",
- "areaBorderColor": "#F0F0F0",
- "areaForeground": "#403f53"
+ "areaBackground": "#FAFAFA",
+ "areaBorderColor": "#FAFAFA",
+ "areaForeground": "#546e7a"
},
"Editor": {
- "background": "#F0F0F0",
- "foreground": "#403f53",
- "shortcutForeground": "#90A7B2"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a",
+ "shortcutForeground": "#403F53"
},
"EditorPane": {
- "background": "#F0F0F0",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveBackground": "#F0F0F0",
- "inactiveForeground": "#93A1A1",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveBackground": "#FAFAFA",
+ "inactiveForeground": "#dddddd",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#333333"
},
"EditorTabs": {
- "borderColor": "#FBFBFB",
- "hoverColor": "#CCCCCC",
- "hoverMaskColor": "#CCCCCC",
- "inactiveMaskColor": "#F0F0F0",
- "inactiveColoredFileBackground": "#F0F0F02",
- "inactiveUnderlineColor": "#93A1A1",
- "selectedForeground": "#403f53",
- "selectedBackground": "#d3e8f8",
- "underlineColor": "#2AA298",
- "underlinedTabBackground": "#d3e8f8"
+ "borderColor": "#f2f5f7",
+ "hoverBackground": "#E0E7EA",
+ "hoverColor": "#E0E7EA",
+ "hoverMaskColor": "#E0E7EA",
+ "inactiveMaskColor": "#FAFAFA",
+ "inactiveColoredFileBackground": "#FAFAFA",
+ "inactiveUnderlineColor": "#dddddd",
+ "selectedForeground": "#546e7a",
+ "selectedBackground": "#FAFAFA",
+ "underlineColor": "#269386",
+ "underlinedTabBackground": "#FAFAFA",
+ "underlinedTabForeground": "#403f53"
},
"EditorGroupsTabs": {
- "background": "#F0F0F0",
- "borderColor": "#FBFBFB",
- "hoverBackground": "#CCCCCC",
- "hoverColor": "#CCCCCC",
- "inactiveUnderlineColor": "#2AA298",
- "underlineColor": "#2AA298",
- "underlinedTabBackground": "#d3e8f8",
- "underlinedTabForeground": "#403f53"
+ "background": "#FAFAFA",
+ "borderColor": "#f2f5f7",
+ "hoverBackground": "#E0E7EA",
+ "hoverColor": "#E0E7EA",
+ "inactiveUnderlineColor": "#269386",
+ "underlineColor": "#269386",
+ "underlinedTabBackground": "#FAFAFA",
+ "underlinedTabForeground": "#546e7a"
},
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#E0E7EA",
+ "Yellow": "#82AAFF",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -236,151 +258,155 @@
"nativeSearchNotMatchedBackground": "#C792EA",
"nativeFocusSearchNotMatchedBackground": "#BB80B3"
},
- "Focus.color": "#d9d9d9",
+ "Focus.color": "#efefef",
"FormattedTextField": {
- "background": "#F0F0F0",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveBackground": "#d9d9d9",
- "inactiveForeground": "#93A1A1",
+ "background": "#FAFAFA",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveBackground": "#FAFAFA",
+ "inactiveForeground": "#dddddd",
"selectionForeground": "#333333",
- "selectionBackground": "#d3e8f8"
+ "selectionBackground": "#FAFAFA"
},
+ "GotItTooltip.borderColor": "#F0F0F0",
"Group": {
- "disabledSeparatorColor": "#d9d9d9",
- "separatorColor": "#d9d9d9"
+ "disabledSeparatorColor": "#efefef",
+ "separatorColor": "#efefef"
},
"GutterTooltip": {
- "infoForeground": "#403f53",
- "lineSeparatorColor": "#F0F0F0"
+ "infoForeground": "#403F53",
+ "lineSeparatorColor": "#FAFAFA"
},
"HeaderColor": {
- "active": "#F0F0F0",
- "inactive": "#f0f0f0"
+ "active": "#FAFAFA",
+ "inactive": "#FAFAFA"
},
"HelpTooltip": {
- "background": "#F0F0F0",
- "borderColor": "#d9d9d9",
- "foreground": "#403f53",
- "infoForeground": "#90A7B2",
- "shortcutForeground": "#90A7B2"
+ "background": "#FAFAFA",
+ "borderColor": "#efefef",
+ "foreground": "#546e7a",
+ "infoForeground": "#403F53",
+ "shortcutForeground": "#403F53"
},
- "Hyperlink.linkColor": "#2AA298",
- "inactiveCaption": "#FBFBFB",
- "inactiveCaptionBorder": "#F0F0F0",
- "inactiveCaptionText": "#90A7B2",
- "info": "#90A7B2",
- "infoText": "#90A7B2",
+ "Hyperlink.linkColor": "#269386",
+ "inactiveCaption": "#f2f5f7",
+ "inactiveCaptionBorder": "#FAFAFA",
+ "inactiveCaptionText": "#403F53",
+ "info": "#403F53",
+ "infoText": "#403F53",
"IdeStatusBar.border": "4,4,4,4",
- "InformationHint.borderColor": "#d9d9d9",
+ "InformationHint.borderColor": "#efefef",
"InplaceRefactoringPopup": {
- "borderColor": "#F0F0F0"
+ "borderColor": "#FAFAFA"
},
"InternalFrame": {
- "activeTitleForeground": "#403f53",
- "background": "#F0F0F0",
- "inactiveTitleForeground": "#90A7B2"
+ "activeTitleForeground": "#546e7a",
+ "background": "#FAFAFA",
+ "inactiveTitleForeground": "#403F53"
},
"Label": {
- "background": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "disabledShadow": "#F0F0F0",
- "disabledText": "#93A1A1",
- "foreground": "#403f53",
- "infoForeground": "#90A7B2",
- "selectedForeground": "#333333"
+ "background": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "disabledShadow": "#FAFAFA",
+ "disabledText": "#dddddd",
+ "foreground": "#546e7a",
+ "infoForeground": "#403F53",
+ "selectedForeground": "#333333",
+ "selectedDisabledForeground": "#546e7a"
},
"Link": {
- "activeForeground": "#2AA298",
- "hoverForeground": "#2AA298",
- "pressedForeground": "#2AA298",
- "secondaryForeground": "#90A7B2",
- "visitedForeground": "#2AA298"
+ "activeForeground": "#269386",
+ "hoverForeground": "#269386",
+ "pressedForeground": "#269386",
+ "secondaryForeground": "#403F53",
+ "visitedForeground": "#269386"
},
- "link.foreground": "#2AA298",
+ "link.foreground": "#269386",
"List": {
- "background": "#FBFBFB",
- "foreground": "#403f53",
- "selectionBackground": "#d3e8f850",
+ "background": "#f2f5f7",
+ "foreground": "#546e7a",
+ "hoverBackground": "#E0E7EA70",
+ "hoverInactiveBackground": "#FAFAFA",
+ "selectionBackground": "#999e9e50",
"selectionForeground": "#403f53",
"selectionInactiveForeground": "#333333",
- "selectionInactiveBackground": "#d3e8f87c"
+ "selectionInactiveBackground": "#E0E7EA70"
},
"material": {
- "background": "#F0F0F0",
- "branchColor": "#403f53",
- "contrast": "#f0f0f0",
- "foreground": "#403f53",
- "mergeCommits": "#d9d9d9",
- "primaryColor": "#90A7B2",
+ "background": "#FAFAFA",
+ "branchColor": "#546e7a",
+ "contrast": "#FAFAFA",
+ "foreground": "#546e7a",
+ "mergeCommits": "#FAFAFA",
+ "primaryColor": "#403F53",
"selectionForeground": "#403f53",
- "tab.backgroundColor": "#F0F0F0",
- "tab.borderColor": "#2AA298",
- "tagColor": "#90A7B2"
+ "tab.backgroundColor": "#FAFAFA",
+ "tab.borderColor": "#269386",
+ "tagColor": "#403F53"
},
"MemoryIndicator": {
- "allocatedBackground": "#FBFBFB",
- "usedColor": "#CCCCCC",
- "usedBackground": "#CCCCCC"
+ "allocatedBackground": "#f2f5f7",
+ "usedColor": "#E0E7EA",
+ "usedBackground": "#E0E7EA"
},
"Menu": {
- "acceleratorForeground": "#90A7B2",
+ "acceleratorForeground": "#403F53",
"acceleratorSelectionForeground": "#403f53",
- "background": "#F0F0F0",
+ "background": "#FAFAFA",
"border": "4,2,4,2",
- "borderColor": "#FBFBFB",
- "disabledBackground": "#FBFBFB",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "selectionBackground": "#d3e8f8",
+ "borderColor": "#f2f5f7",
+ "disabledBackground": "#f2f5f7",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#403f53",
- "separatorColor": "#d9d9d9"
+ "separatorColor": "#efefef"
},
"MenuBar": {
- "background": "#F0F0F0",
- "borderColor": "#F0F0F0",
- "disabledBackground": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "highlight": "#F0F0F0",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "highlight": "#FAFAFA",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#403f53",
- "shadow": "#F0F0F0"
+ "shadow": "#FAFAFA"
},
"MenuItem": {
- "acceleratorForeground": "#90A7B2",
+ "acceleratorForeground": "#403F53",
"acceleratorSelectionForeground": "#403f53",
"border": "4,2,4,2",
- "background": "#F0F0F0",
- "disabledBackground": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#403f53"
},
"NavBar": {
- "arrowColor": "#403f53",
- "borderColor": "#F0F0F0"
+ "arrowColor": "#546e7a",
+ "borderColor": "#FAFAFA"
},
"NewClass": {
"Panel": {
- "background": "#F0F0F0"
+ "background": "#FAFAFA"
},
"SearchField": {
- "background": "#F0F0F0"
+ "background": "#FAFAFA"
}
},
- "NewPSD.warning": "#2AA298",
+ "NewPSD.warning": "#269386",
"Notification": {
"background": "#F0F0F0",
"borderColor": "#F0F0F0",
"errorBackground": "#F0F0F0",
"errorBorderColor": "#F0F0F0",
- "foreground": "#403f53",
+ "foreground": "#546e7a",
"MoreButton": {
- "background": "#d9d9d9",
- "foreground": "#403f53",
- "innerBorderColor": "#d9d9d9"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a",
+ "innerBorderColor": "#FAFAFA"
},
"ToolWindow": {
"errorBackground": "#F0F0F0",
@@ -391,246 +417,259 @@
"warningBorderColor": "#F0F0F0"
}
},
- "OnePixelDivider.background": "#d9d9d9",
+ "OnePixelDivider.background": "#efefef",
"OptionPane": {
- "background": "#F0F0F0",
- "foreground": "#403f53",
- "messageForeground": "#403f53"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a",
+ "messageForeground": "#546e7a"
},
"Outline": {
- "color": "#d9d9d9",
- "focusedColor": "#2AA298",
- "disabledColor": "#93A1A1"
+ "color": "#FAFAFA",
+ "focusedColor": "#269386",
+ "disabledColor": "#dddddd"
},
"Panel": {
- "background": "#F0F0F0",
- "foreground": "#403f53"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a"
},
"ParameterInfo": {
- "background": "#FBFBFB",
- "borderColor": "#d3e8f8",
- "currentOverloadBackground": "#d3e8f8",
- "currentParameterForeground": "#2AA298",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "infoForeground": "#90A7B2",
- "lineSeparatorColor": "#d3e8f8"
+ "background": "#f2f5f7",
+ "borderColor": "#FAFAFA",
+ "currentOverloadBackground": "#E0E7EA",
+ "currentParameterForeground": "#269386",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "infoForeground": "#403F53",
+ "lineSeparatorColor": "#FAFAFA"
},
"PasswordField": {
- "background": "#F0F0F0",
- "capsLockIconColor": "#2AA298",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveForeground": "#93A1A1",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "capsLockIconColor": "#269386",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveForeground": "#dddddd",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333"
},
"Plugins": {
- "background": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "eapTagBackground": "#CCCCCC",
- "lightSelectionBackground": "#d3e8f8",
- "paidTagBackground": "#CCCCCC",
- "selectionBackground": "#d3e8f8",
- "tagForeground": "#2AA298",
- "tagBackground": "#CCCCCC",
- "trialTagBackground": "#CCCCCC",
+ "background": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "eapTagBackground": "#E0E7EA",
+ "hoverBackground": "#E0E7EA70",
+ "lightSelectionBackground": "#FAFAFA",
+ "paidTagBackground": "#E0E7EA",
+ "selectionBackground": "#999e9e",
+ "tagForeground": "#269386",
+ "tagBackground": "#E0E7EA",
+ "trialTagBackground": "#E0E7EA",
"Button": {
- "installBackground": "#d9d9d9",
- "installBorderColor": "#d9d9d9",
- "installForeground": "#403f53",
- "installFocusedBackground": "#CCCCCC",
- "installFillForeground": "#93A1A1",
- "installFillBackground": "#d9d9d9",
- "updateBackground": "#d9d9d9",
- "updateBorderColor": "#d9d9d9",
- "updateForeground": "#403f53"
+ "installBackground": "#FAFAFA",
+ "installBorderColor": "#FAFAFA",
+ "installForeground": "#546e7a",
+ "installFocusedBackground": "#E0E7EA",
+ "installFillForeground": "#dddddd",
+ "installFillBackground": "#FAFAFA",
+ "updateBackground": "#269386",
+ "updateBorderColor": "#FAFAFA",
+ "updateForeground": "#546e7a"
},
"SearchField": {
- "background": "#F0F0F0",
- "borderColor": "#d9d9d9"
+ "background": "#FAFAFA",
+ "borderColor": "#efefef"
},
"SectionHeader": {
- "background": "#FBFBFB",
- "foreground": "#403f53"
+ "background": "#f2f5f7",
+ "foreground": "#546e7a"
},
"Tab": {
- "hoverBackground": "#d3e8f8",
+ "hoverBackground": "#FAFAFA",
"selectedForeground": "#403f53",
- "selectedBackground": "#d3e8f8"
+ "selectedBackground": "#FAFAFA"
}
},
"Popup": {
"Advertiser": {
- "background": "#F0F0F0",
- "borderColor": "#F0F0F0",
- "foreground": "#2AA298"
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "foreground": "#269386"
},
- "borderColor": "#f0f0f0",
- "inactiveBorderColor": "#F0F0F0",
- "innerBorderColor": "#FBFBFB",
+ "borderColor": "#FAFAFA",
+ "inactiveBorderColor": "#FAFAFA",
+ "innerBorderColor": "#f2f5f7",
"Header": {
- "activeBackground": "#F0F0F0",
- "inactiveBackground": "#f0f0f0"
+ "activeBackground": "#FAFAFA",
+ "inactiveBackground": "#FAFAFA"
},
"paintBorder": true,
- "separatorForeground": "#403f53",
- "separatorColor": "#FBFBFB",
+ "separatorForeground": "#546e7a",
+ "separatorColor": "#f2f5f7",
"Toolbar": {
- "Floating.background": "#f0f0f0",
- "background": "#f0f0f0",
- "borderColor": "#f0f0f0"
+ "Floating.background": "#FAFAFA",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA"
}
},
"PopupMenu": {
- "background": "#F0F0F0",
+ "background": "#FAFAFA",
"border": "2,0,2,0",
- "foreground": "#403f53",
- "translucentBackground": "#F0F0F0"
+ "foreground": "#546e7a",
+ "translucentBackground": "#FAFAFA"
},
"PopupMenuSeparator.height": 10,
"PopupMenuSeparator.stripeIndent": 5,
"ProgressBar": {
- "background": "#F0F0F0",
- "foreground": "#2AA298",
- "indeterminateEndColor": "#2AA298",
- "indeterminateStartColor": "#2AA298",
- "progressColor": "#2AA298",
- "selectionBackground": "#CCCCCC",
- "trackColor": "#CCCCCC"
+ "background": "#FAFAFA",
+ "foreground": "#269386",
+ "indeterminateEndColor": "#269386",
+ "indeterminateStartColor": "#269386",
+ "progressColor": "#269386",
+ "selectionBackground": "#E0E7EA",
+ "trackColor": "#E0E7EA"
},
"PsiViewer": {
- "referenceHighlightColor": "#2AA298"
+ "referenceHighlightColor": "#269386"
},
"RadioButton": {
- "background": "#F0F0F0",
- "disabledText": "#93A1A1",
- "foreground": "#403f53"
+ "background": "#FAFAFA",
+ "disabledText": "#dddddd",
+ "foreground": "#546e7a"
},
"RadioButtonMenuItem": {
- "acceleratorForeground": "#90A7B2",
- "acceleratorSelectionForeground": "#90A7B2",
- "background": "#F0F0F0",
- "disabledBackground": "#F0F0F0",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "selectionBackground": "#d3e8f8",
+ "acceleratorForeground": "#403F53",
+ "acceleratorSelectionForeground": "#403F53",
+ "background": "#FAFAFA",
+ "disabledBackground": "#FAFAFA",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "selectionBackground": "#999e9e",
"selectionForeground": "#403f53"
},
+ "ScreenView.borderColor": "#efefef",
"ScrollBar": {
- "background": "#F0F0F0",
- "hoverThumbBorderColor": "#2AA298",
- "hoverThumbColor": "#2AA298",
- "hoverTrackColor": "#F0F0F030",
+ "background": "#FAFAFA",
+ "hoverThumbBorderColor": "#269386",
+ "hoverThumbColor": "#269386",
+ "hoverTrackColor": "#FAFAFA30",
"Mac": {
- "hoverThumbBorderColor": "#2AA298",
- "hoverThumbColor": "#2AA298",
- "hoverTrackColor": "#F0F0F030",
- "thumbBorderColor": "#2AA29870",
- "thumbColor": "#2AA29870",
- "trackColor": "#F0F0F030",
+ "hoverThumbBorderColor": "#269386",
+ "hoverThumbColor": "#269386",
+ "hoverTrackColor": "#FAFAFA30",
+ "thumbBorderColor": "#26938670",
+ "thumbColor": "#26938670",
+ "trackColor": "#FAFAFA30",
"Transparent": {
- "hoverThumbBorderColor": "#2AA298",
- "hoverThumbColor": "#2AA298",
- "hoverTrackColor": "#F0F0F030",
- "thumbBorderColor": "#2AA29870",
- "thumbColor": "#2AA29870",
- "trackColor": "#F0F0F030"
+ "hoverThumbBorderColor": "#269386",
+ "hoverThumbColor": "#269386",
+ "hoverTrackColor": "#FAFAFA30",
+ "thumbBorderColor": "#26938670",
+ "thumbColor": "#26938670",
+ "trackColor": "#FAFAFA30"
}
},
- "thumb": "#CCCCCC",
- "thumbBorderColor": "#2AA29870",
- "thumbColor": "#2AA29870",
- "trackColor": "#F0F0F030",
+ "thumb": "#E0E7EA",
+ "thumbBorderColor": "#26938670",
+ "thumbColor": "#26938670",
+ "trackColor": "#FAFAFA30",
"Transparent": {
- "hoverThumbBorderColor": "#2AA298",
- "hoverThumbColor": "#2AA298",
- "hoverTrackColor": "#F0F0F030",
- "thumbBorderColor": "#2AA29870",
- "thumbColor": "#2AA29870",
- "trackColor": "#F0F0F030"
+ "hoverThumbBorderColor": "#269386",
+ "hoverThumbColor": "#269386",
+ "hoverTrackColor": "#FAFAFA30",
+ "thumbBorderColor": "#26938670",
+ "thumbColor": "#26938670",
+ "trackColor": "#FAFAFA30"
}
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#f0f0f0",
- "foreground": "#90A7B2"
+ "background": "#FAFAFA",
+ "foreground": "#403F53"
},
"Header": {
- "background": "#F0F0F0"
+ "background": "#FAFAFA"
},
"List": {
- "separatorForeground": "#90A7B2",
- "separatorColor": "#d9d9d9"
+ "separatorForeground": "#403F53",
+ "separatorColor": "#efefef"
},
"SearchField": {
- "background": "#F0F0F0",
- "borderColor": "#f0f0f0",
- "infoForeground": "#90A7B2"
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "infoForeground": "#403F53"
},
"Tab": {
"active.foreground": "#333333",
"selectedForeground": "#333333",
- "selectedBackground": "#CCCCCC"
+ "selectedBackground": "#E0E7EA"
}
},
"SearchMatch": {
- "endBackground": "#2AA298",
- "startBackground": "#2AA298"
+ "endBackground": "#269386",
+ "startBackground": "#269386",
+ "endColor": "#269386",
+ "startColor": "#269386"
},
"SearchField.errorBackground": "#F0F0F0",
+ "SearchOption": {
+ "selectedBackground": "#FAFAFA"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#403F53",
+ "Repeated.File.Foreground": "#546e7a"
+ },
"Separator": {
- "background": "#FBFBFB",
- "foreground": "#FBFBFB",
- "separatorColor": "#FBFBFB"
+ "background": "#f2f5f7",
+ "foreground": "#f2f5f7",
+ "separatorColor": "#f2f5f7"
},
"SidePanel": {
- "background": "#F0F0F0"
+ "background": "#FAFAFA"
},
"Slider": {
- "background": "#F0F0F0",
- "buttonBorderColor": "#2AA298",
- "buttonColor": "#2AA298",
- "foreground": "#403f53",
+ "background": "#FAFAFA",
+ "buttonBorderColor": "#269386",
+ "buttonColor": "#269386",
+ "foreground": "#546e7a",
"majorTickLength": 6,
- "tickColor": "#FBFBFB",
- "trackColor": "#d3e8f8",
+ "tickColor": "#f2f5f7",
+ "trackColor": "#FAFAFA",
"trackWidth": 7,
- "thumb": "#2AA298"
+ "thumb": "#269386"
},
"SpeedSearch": {
- "background": "#CCCCCC",
- "borderColor": "#d9d9d9",
- "foreground": "#403f53",
- "errorForeground": "#403f53"
+ "background": "#E0E7EA",
+ "borderColor": "#efefef",
+ "foreground": "#546e7a",
+ "errorForeground": "#546e7a"
},
"Spinner": {
- "background": "#F0F0F0",
+ "background": "#FAFAFA",
"border": "3,3,3,3",
- "foreground": "#403f53",
+ "foreground": "#546e7a",
"selectionForeground": "#333333"
},
"SplitPane": {
- "background": "#F0F0F0",
- "highlight": "#F0F0F0"
+ "background": "#FAFAFA",
+ "highlight": "#FAFAFA"
},
- "SplitPaneDivider.draggingColor": "#FBFBFB",
+ "SplitPaneDivider.draggingColor": "#f2f5f7",
"StatusBar": {
- "borderColor": "#F0F0F0"
+ "borderColor": "#FAFAFA",
+ "hoverBackground": "#E0E7EA",
+ "LightEditBackground": "#FAFAFA"
},
"TabbedPane": {
- "background": "#F0F0F0",
- "contentAreaColor": "#CCCCCC",
+ "background": "#FAFAFA",
+ "contentAreaColor": "#E0E7EA",
"contentBorderInsets": "3,1,1,1",
- "darkShadow": "#d9d9d9",
- "disabledForeground": "#93A1A1",
- "disabledUnderlineColor": "#93A1A1",
- "focus": "#d3e8f8",
- "focusColor": "#d3e8f8",
+ "darkShadow": "#efefef",
+ "disabledForeground": "#dddddd",
+ "disabledUnderlineColor": "#dddddd",
+ "focus": "#FAFAFA",
+ "focusColor": "#FAFAFA",
"fontSizeOffset": 0,
- "foreground": "#403f53",
- "highlight": "#d9d9d9",
- "hoverColor": "#CCCCCC",
+ "foreground": "#546e7a",
+ "highlight": "#efefef",
+ "hoverColor": "#E0E7EA",
"labelShift": 0,
"selectedForeground": "#333333",
"selectedLabelShift": 0,
@@ -639,164 +678,211 @@
"tabHeight": 32,
"tabInsets": "5,10,5,10",
"tabSelectionHeight": 2,
- "underlineColor": "#2AA298"
+ "underlineColor": "#269386"
},
- "TabbedPane.mt.tab.background": "#F0F0F0",
+ "TabbedPane.mt.tab.background": "#FAFAFA",
"Table": {
- "background": "#F0F0F0",
+ "alternativeRowBackground": "#FAFAFA",
+ "background": "#FAFAFA",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
- "dropLineColor": "#2AA298",
- "dropLineShortColor": "#2AA298",
- "focusCellBackground": "#d3e8f8",
+ "disabledForeground": "#dddddd",
+ "dropLineColor": "#269386",
+ "dropLineShortColor": "#269386",
+ "focusCellBackground": "#FAFAFA",
"focusCellForeground": "#333333",
- "foreground": "#403f53",
- "gridColor": "#F0F0F0",
- "highlightOuter": "#d3e8f8",
+ "foreground": "#546e7a",
+ "gridColor": "#FAFAFA",
+ "highlightOuter": "#FAFAFA",
+ "hoverBackground": "#E0E7EA70",
+ "hoverInactiveBackground": "#FAFAFA",
"lightSelectionForeground": "#333333",
- "lightSelectionInactiveForeground": "#90A7B2",
- "lightSelectionInactiveBackground": "#FBFBFB",
- "selectionBackground": "#d3e8f8",
+ "lightSelectionInactiveForeground": "#403F53",
+ "lightSelectionInactiveBackground": "#f2f5f7",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333",
- "selectionInactiveBackground": "#d3e8f8",
+ "selectionInactiveBackground": "#FAFAFA",
"selectionInactiveForeground": "#403f53",
- "sortIconColor": "#403f53",
- "stripeColor": "#f0f0f0"
+ "sortIconColor": "#546e7a",
+ "stripeColor": "#FAFAFA"
},
"TableHeader": {
- "background": "#F0F0F0",
- "borderColor": "#F0F0F0",
- "bottomSeparatorColor": "#FBFBFB",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "bottomSeparatorColor": "#f2f5f7",
"cellBorder": "4,0,4,0",
- "disabledForeground": "#93A1A1",
- "foreground": "#403f53",
- "focusCellBackground": "#d3e8f8",
+ "disabledForeground": "#dddddd",
+ "foreground": "#546e7a",
+ "focusCellBackground": "#FAFAFA",
"focusCellForeground": "#333333",
"height": 25,
- "separatorColor": "#FBFBFB"
+ "separatorColor": "#f2f5f7"
},
- "text": "#90A7B2",
- "textInactiveText": "#90A7B2",
- "textText": "#90A7B2",
+ "text": "#403F53",
+ "textInactiveText": "#403F53",
+ "textText": "#403F53",
"TextArea": {
- "background": "#F0F0F0",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveForeground": "#93A1A1",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveForeground": "#dddddd",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333"
},
"TextField": {
- "background": "#F0F0F0",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveForeground": "#93A1A1",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveForeground": "#dddddd",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333"
},
"TextPane": {
- "background": "#F0F0F0",
- "caretForeground": "#2AA298",
- "foreground": "#403f53",
- "inactiveForeground": "#93A1A1",
- "selectionBackground": "#d3e8f8",
+ "background": "#FAFAFA",
+ "caretForeground": "#269386",
+ "foreground": "#546e7a",
+ "inactiveForeground": "#dddddd",
+ "selectionBackground": "#FAFAFA",
"selectionForeground": "#333333"
},
"TitlePane": {
- "background": "#f0f0f0",
- "Button.hoverBackground": "#CCCCCC",
- "inactiveBackground": "#F0F0F0",
- "infoForeground": "#90A7B2",
- "inactiveInfoForeground": "#90A7B2"
+ "background": "#FAFAFA",
+ "Button.hoverBackground": "#E0E7EA",
+ "inactiveBackground": "#FAFAFA",
+ "infoForeground": "#403F53",
+ "inactiveInfoForeground": "#403F53"
},
- "TitledBorder.titleColor": "#403f53",
+ "TitledBorder.titleColor": "#546e7a",
"ToggleButton": {
- "borderColor": "#d9d9d9",
- "buttonColor": "#403f53",
- "disabledText": "#93A1A1",
- "foreground": "#403f53",
- "offForeground": "#F0F0F0",
- "offBackground": "#F0F0F0",
- "onBackground": "#2AA298",
- "onForeground": "#2AA298"
+ "borderColor": "#FAFAFA",
+ "buttonColor": "#546e7a",
+ "disabledText": "#dddddd",
+ "foreground": "#546e7a",
+ "offForeground": "#FAFAFA",
+ "offBackground": "#FAFAFA",
+ "onBackground": "#269386",
+ "onForeground": "#269386"
},
"ToolBar": {
- "background": "#F0F0F0",
- "borderHandleColor": "#90A7B2",
- "floatingForeground": "#90A7B2",
- "foreground": "#403f53"
+ "background": "#FAFAFA",
+ "borderHandleColor": "#403F53",
+ "floatingForeground": "#403F53",
+ "foreground": "#546e7a"
},
"ToolTip": {
- "Actions.background": "#F0F0F0",
- "Actions.infoForeground": "#90A7B2",
+ "Actions.background": "#FAFAFA",
+ "Actions.infoForeground": "#403F53",
"background": "#F0F0F0",
- "borderColor": "#CCCCCC",
- "foreground": "#403f53",
- "infoForeground": "#90A7B2",
- "separatorColor": "#d9d9d9",
- "shortcutForeground": "#90A7B2"
+ "borderColor": "#efefef",
+ "foreground": "#546e7a",
+ "infoForeground": "#403F53",
+ "separatorColor": "#efefef",
+ "shortcutForeground": "#403F53"
},
"ToolWindow": {
"Button": {
- "hoverBackground": "#d3e8f8",
+ "hoverBackground": "#FAFAFA",
"selectedForeground": "#333333",
- "selectedBackground": "#f0f0f0"
+ "selectedBackground": "#FAFAFA"
},
"Header": {
- "background": "#F0F0F0",
- "borderColor": "#FBFBFB",
- "inactiveBackground": "#F0F0F0"
+ "background": "#FAFAFA",
+ "borderColor": "#f2f5f7",
+ "inactiveBackground": "#FAFAFA"
},
"HeaderCloseButton": {
- "background": "#F0F0F0"
+ "background": "#FAFAFA"
},
"HeaderTab": {
- "hoverBackground": "#CCCCCC",
- "hoverInactiveBackground": "#FBFBFB",
- "inactiveUnderlineColor": "#2AA298",
- "selectedBackground": "#f0f0f0",
- "selectedInactiveBackground": "#f0f0f0",
- "underlineColor": "#2AA298",
- "underlinedTabBackground": "#CCCCCC",
- "underlinedTabInactiveBackground": "#FBFBFB"
+ "borderColor": "#E0E7EA",
+ "hoverBackground": "#E0E7EA",
+ "hoverInactiveBackground": "#E0E7EA",
+ "inactiveUnderlineColor": "#269386",
+ "selectedBackground": "#FAFAFA",
+ "selectedInactiveBackground": "#FAFAFA",
+ "underlineColor": "#269386",
+ "underlinedTabBackground": "#FAFAFA",
+ "underlinedTabInactiveBackground": "#f2f5f7",
+ "underlinedTabForeground": "#403f53",
+ "underlinedTabInactiveForeground": "#546e7a"
}
},
"Tree": {
- "background": "#F0F0F0",
- "foreground": "#90A7B2",
- "hash": "#d9d9d9",
- "modifiedItemForeground": "#2AA298",
+ "background": "#FAFAFA",
+ "foreground": "#403F53",
+ "hash": "#efefef",
+ "hoverBackground": "#E0E7EA70",
+ "hoverInactiveBackground": "#FAFAFA",
+ "modifiedItemForeground": "#269386",
"rowHeight": 28,
- "selectionBackground": "#d3e8f87c",
+ "selectionBackground": "#E0E7EA70",
"selectionForeground": "#403f53",
"selectionInactiveForeground": "#403f53",
- "selectionInactiveBackground": "#d3e8f87c",
- "textBackground": "#F0F0F0"
+ "selectionInactiveBackground": "#E0E7EA70",
+ "textBackground": "#FAFAFA"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
- "Activity.borderColor": "#d9d9d9",
- "ColorPicker.background": "#F0F0F0",
- "ColorPicker.foreground": "#403f53",
- "Component.borderColor": "#d9d9d9",
- "Component.background": "#F0F0F0",
- "Component.foreground": "#403f53",
- "Connector.borderColor": "#d9d9d9",
- "Connector.hoverBorderColor": "#CCCCCC",
- "Canvas.background": "#f0f0f0",
- "highStroke.foreground": "#403f53",
- "Label.foreground": "#90A7B2",
- "List.selectionBackground": "#d3e8f87c",
- "Panel.borderColor": "#d9d9d9",
- "Panel.background": "#F0F0F0",
- "percent.foreground": "#403f53",
- "Placeholder.background": "#F0F0F0",
- "Placeholder.borderColor": "#d9d9d9",
- "Placeholder.foreground": "#403f53",
- "Placeholder.selectedForeground": "#403f53",
- "Preview.background": "#F0F0F0",
- "stroke.acceleratorForeground": "#90A7B2"
+ "UIDesigner": {
+ "Activity.borderColor": "#efefef",
+ "Canvas.background": "#FAFAFA",
+ "ColorPicker": {
+ "background": "#FAFAFA",
+ "foreground": "#546e7a"
+ },
+ "Component": {
+ "borderColor": "#efefef",
+ "background": "#FAFAFA",
+ "foreground": "#546e7a",
+ "hoverBorderColor": "#E0E7EA"
+ },
+ "Connector": {
+ "borderColor": "#efefef",
+ "hoverBorderColor": "#E0E7EA"
+ },
+ "Canvas.background": "#FAFAFA",
+ "highStroke.foreground": "#546e7a",
+ "Label.foreground": "#403F53",
+ "List.selectionBackground": "#E0E7EA70",
+ "motion": {
+ "borderColor": "#efefef",
+ "Component.foreground": "#546e7a",
+ "ConstraintSetText.foreground": "#403F53",
+ "ConstraintSet.background": "#f2f5f7",
+ "CSPanel.SelectedFocusBackground": "#999e9e",
+ "CSPanel.SelectedBackground": "#E0E7EA70",
+ "cs_FocusText.infoForeground": "#403F53",
+ "CursorTextColor.foreground": "#546e7a",
+ "HoverColor.disabledBackground": "#dddddd",
+ "motionGraph.background": "#FAFAFA",
+ "Notification.background": "#F0F0F0",
+ "ourAvg.background": "#f2f5f7",
+ "ourCS.background": "#f2f5f7",
+ "ourCS_Border.borderColor": "#efefef",
+ "ourCS_TextColor.foreground": "#403F53",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#403f53",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#FAFAFA",
+ "ourCS_SelectedBorder.pressedBorderColor": "#E0E7EA",
+ "ourML_BarColor.separatorColor": "#efefef",
+ "PrimaryPanel.background": "#FAFAFA",
+ "SecondaryPanel.background": "#FAFAFA",
+ "SecondaryPanel.header.foreground": "#403F53",
+ "SecondaryPanel.header.background": "#FAFAFA",
+ "timeLine.disabledBorderColor": "#efefef"
+ },
+ "Panel": {
+ "borderColor": "#efefef",
+ "background": "#FAFAFA"
+ },
+ "percent.foreground": "#546e7a",
+ "Placeholder": {
+ "background": "#FAFAFA",
+ "borderColor": "#efefef",
+ "foreground": "#546e7a",
+ "selectedForeground": "#403f53"
+ },
+ "Preview.background": "#FAFAFA",
+ "stroke.acceleratorForeground": "#403F53"
},
"ValidationTooltip": {
"errorBackground": "#F0F0F0",
@@ -806,101 +892,108 @@
},
"VersionControl": {
"FileHistory.Commit": {
- "selectedBranchBackground": "#F0F0F0"
+ "selectedBranchBackground": "#FAFAFA"
},
"GitCommits": {
- "graphColor": "#CCCCCC"
+ "graphColor": "#E0E7EA"
},
"GitLog": {
- "localBranchIconColor": "#2AA298",
- "otherIconColor": "#90A7B2",
- "remoteBranchIconColor": "#403f53",
- "tagIconColor": "#90A7B2"
+ "localBranchIconColor": "#269386",
+ "otherIconColor": "#403F53",
+ "remoteBranchIconColor": "#546e7a",
+ "tagIconColor": "#403F53"
},
"HgLog": {
- "branchIconColor": "#2AA298",
+ "branchIconColor": "#269386",
"bookmarkIconColor": "#333333",
- "closedBranchIconColor": "#93A1A1",
- "localTagIconColor": "#90A7B2",
- "mqTagIconColor": "#90A7B2",
- "tagIconColor": "#90A7B2",
- "tipIconColor": "#90A7B2"
+ "closedBranchIconColor": "#dddddd",
+ "localTagIconColor": "#403F53",
+ "mqTagIconColor": "#403F53",
+ "tagIconColor": "#403F53",
+ "tipIconColor": "#403F53"
},
"Log": {
- "Commit.unmatchedForeground": "#90A7B2",
- "Commit.currentBranchBackground": "#FBFBFB"
+ "Commit.unmatchedForeground": "#403F53",
+ "Commit.currentBranchBackground": "#f2f5f7",
+ "Commit.hoveredBackground": "#E0E7EA70"
},
"RefLabel": {
"foreground": "#333333",
- "backgroundBase": "#CCCCCC"
+ "backgroundBase": "#E0E7EA"
}
},
"Viewport": {
- "background": "#F0F0F0",
- "foreground": "#403f53"
+ "background": "#FAFAFA",
+ "foreground": "#546e7a"
},
"WelcomeScreen": {
- "background": "#F0F0F0",
- "borderColor": "#F0F0F0",
- "captionBackground": "#f0f0f0",
- "captionForeground": "#403f53",
- "footerBackground": "#f0f0f0",
- "footerForeground": "#403f53",
- "headerBackground": "#F0F0F0",
- "headerForeground": "#403f53",
- "separatorColor": "#d9d9d9",
+ "AssociatedComponent.background": "#FAFAFA",
+ "background": "#FAFAFA",
+ "borderColor": "#FAFAFA",
+ "captionBackground": "#FAFAFA",
+ "captionForeground": "#546e7a",
+ "Details.background": "#FAFAFA",
+ "footerBackground": "#FAFAFA",
+ "footerForeground": "#546e7a",
+ "headerBackground": "#FAFAFA",
+ "headerForeground": "#546e7a",
+ "List.background": "#FAFAFA",
+ "separatorColor": "#efefef",
+ "SidePanel.background": "#f2f5f7",
"Projects": {
- "background": "#FBFBFB",
- "selectionBackground": "#d3e8f8",
- "selectionInactiveBackground": "#FBFBFB"
+ "actions.background": "#FAFAFA",
+ "actions.selectionBackground": "#E0E7EA",
+ "background": "#f2f5f7",
+ "selectionBackground": "#999e9e",
+ "selectionInactiveBackground": "#f2f5f7"
}
},
- "window": "#F0F0F0",
- "windowBorder": "#d9d9d9",
- "windowText": "#90A7B2",
- "Window.border": "#d9d9d9"
+ "window": "#FAFAFA",
+ "windowBorder": "#efefef",
+ "windowText": "#403F53",
+ "Window.border": "#efefef"
},
"icons": {
"ColorPalette": {
- "#43494A": "#f0f0f0",
- "#6B6B6B": "#90A7B2",
- "#A7A7A7": "#F0F0F0",
- "#3D6185": "#2AA298",
- "#466D94": "#2AA298",
- "#3C3F41": "#F0F0F0",
- "#545556": "#93A1A1",
- "#606060": "#93A1A1",
- "#9AA7B0": "#403f53",
- "#675133": "#2AA298",
+ "#43494A": "#FAFAFA",
+ "#6B6B6B": "#403F53",
+ "#A7A7A7": "#FAFAFA",
+ "#3D6185": "#269386",
+ "#466D94": "#269386",
+ "#3C3F41": "#FAFAFA",
+ "#545556": "#dddddd",
+ "#606060": "#dddddd",
+ "#9AA7B0": "#546e7a",
+ "#675133": "#269386",
"Actions.Blue": "#4876d6",
"Actions.Green": "#c96765",
- "Actions.Grey": "#90A7B2",
+ "Actions.Grey": "#403F53",
"Actions.GreyInline": "#637777",
- "Actions.GreyInline.Dark": "#403f53",
+ "Actions.GreyInline.Dark": "#546e7a",
"Actions.Red": "#994cc3",
"Actions.Yellow": "#4876d6",
- "Checkbox.Background.Default": "#f0f0f0",
- "Checkbox.Background.Default.Dark": "#f0f0f0",
- "Checkbox.Background.Disabled": "#E0E7EA",
- "Checkbox.Background.Disabled.Dark": "#E0E7EA",
- "Checkbox.Border.Default": "#d9d9d9",
- "Checkbox.Border.Default.Dark": "#d9d9d9",
- "Checkbox.Border.Disabled": "#93A1A1",
- "Checkbox.Border.Disabled.Dark": "#93A1A1",
- "Checkbox.Focus.Thin.Default": "#2AA298",
- "Checkbox.Focus.Thin.Default.Dark": "#2AA298",
- "Checkbox.Focus.Wide": "#2AA298",
- "Checkbox.Focus.Wide.Dark": "#2AA298",
- "Checkbox.Foreground.Disabled": "#93A1A1",
- "Checkbox.Foreground.Disabled.Dark": "#93A1A1",
- "Checkbox.Background.Selected": "#2AA298",
- "Checkbox.Background.Selected.Dark": "#F0F0F0",
- "Checkbox.Border.Selected": "#2AA298",
- "Checkbox.Border.Selected.Dark": "#2AA298",
- "Checkbox.Foreground.Selected": "#2AA298",
- "Checkbox.Foreground.Selected.Dark": "#2AA298",
- "Checkbox.Focus.Thin.Selected": "#403f53",
- "Checkbox.Focus.Thin.Selected.Dark": "#403f53",
+ "Checkbox.Background.Default": "#FAFAFA",
+ "Checkbox.Background.Default.Dark": "#FAFAFA",
+ "Checkbox.Background.Disabled": "#82AAFF",
+ "Checkbox.Background.Disabled.Dark": "#82AAFF",
+ "Checkbox.Border.Default": "#efefef",
+ "Checkbox.Border.Default.Dark": "#efefef",
+ "Checkbox.Border.Disabled": "#dddddd",
+ "Checkbox.Border.Disabled.Dark": "#dddddd",
+ "Checkbox.Focus.Thin.Default": "#269386",
+ "Checkbox.Focus.Thin.Default.Dark": "#269386",
+ "Checkbox.Focus.Wide": "#269386",
+ "Checkbox.Focus.Wide.Dark": "#269386",
+ "Checkbox.Foreground.Disabled": "#dddddd",
+ "Checkbox.Foreground.Disabled.Dark": "#dddddd",
+ "Checkbox.Background.Selected": "#269386",
+ "Checkbox.Background.Selected.Dark": "#FAFAFA",
+ "Checkbox.Border.Selected": "#269386",
+ "Checkbox.Border.Selected.Dark": "#269386",
+ "Checkbox.Foreground.Selected": "#269386",
+ "Checkbox.Foreground.Selected.Dark": "#269386",
+ "Checkbox.Focus.Thin.Selected": "#546e7a",
+ "Checkbox.Focus.Thin.Selected.Dark": "#546e7a",
"Objects.Grey": "#637777",
"Objects.Blue": "#4876d6",
"Objects.RedStatus": "#994cc3",
@@ -909,7 +1002,7 @@
"Objects.Yellow": "#4876d6",
"Objects.Green": "#c96765",
"Objects.Purple": "#994cc3",
- "Objects.BlackText": "#403f53",
+ "Objects.BlackText": "#546e7a",
"Objects.YellowDark": "#aa0982",
"Objects.GreenAndroid": "#c96765"
}
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker Contrast.theme.json
index adbb78e5..435c41e3 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker Contrast.theme.json
@@ -3,6 +3,12 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Material Darker.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/darker.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#727272",
@@ -17,7 +23,7 @@
"inactiveBackground": "#323232",
"inactiveForeground": "#727272",
"infoForeground": "#727272",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionBackgroundInactive": "#292929",
"selectionForeground": "#FFFFFF",
"selectionInactiveBackground": "#292929",
@@ -33,7 +39,7 @@
"pressedBorderColor": "#FF980050"
},
"Autocomplete": {
- "selectionBackground": "#404040"
+ "selectionBackground": "#353535"
},
"Borders.ContrastBorderColor": "#212121",
"Borders.color": "#292929",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#292929",
"Tooltip.background": "#1A1A1A"
},
- "Content.background": "#1A1A1A",
+ "Content": {
+ "background": "#1A1A1A",
+ "selectionBackground": "#353535"
+ },
"CheckBox": {
"background": "#212121",
"disabledText": "#474747",
@@ -86,9 +95,17 @@
"disabledBackground": "#212121",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#B0BEC5",
+ "AccessEnabled": {
+ "accessDot": "#FF9800",
+ "dropdownBorder": "#292929",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#212121",
"foreground": "#B0BEC5",
@@ -104,6 +121,7 @@
},
"background": "#1A1A1A",
"buttonBackground": "#2A2A2A",
+ "darcula.hoveredArrowButtonForeground": "#FF9800",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
"modifiedItemForeground": "#FF9800",
@@ -123,8 +141,8 @@
"selectedGrayedForeground": "#FFFFFF",
"selectionGrayForeground": "#FFFFFF",
"selectionInactiveInfoForeground": "#727272",
- "selectionInactiveBackground": "#40404050",
- "selectionBackground": "#40404080",
+ "selectionInactiveBackground": "#35353550",
+ "selectionBackground": "#35353580",
"selectionForeground": "#FFFFFF",
"selectionInfoForeground": "#FFFFFF"
},
@@ -168,11 +186,13 @@
"hoverBackground": "#323232",
"hoverColor": "#1A1A1A",
"hoverMaskColor": "#3F3F3F",
+ "inactiveColoredTabBackground": "#212121",
"inactiveColoredFileBackground": "#2A2A2A",
- "inactiveUnderlineColor": "#474747",
+ "inactiveUnderlineColor": "#FF9800",
"inactiveMaskColor": "#1A1A1A",
"underlineColor": "#FF9800",
- "underlinedTabBackground": "#323232"
+ "underlinedTabBackground": "#323232",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#212121",
"DialogWrapper.southPanelBackground": "#212121",
@@ -193,20 +213,22 @@
"foreground": "#B0BEC5",
"inactiveBackground": "#212121",
"inactiveForeground": "#474747",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF"
},
"EditorTabs": {
"borderColor": "#292929",
+ "hoverBackground": "#3F3F3F",
"hoverColor": "#3F3F3F",
"hoverMaskColor": "#3F3F3F",
"inactiveMaskColor": "#212121",
- "inactiveColoredFileBackground": "#2121212",
+ "inactiveColoredFileBackground": "#212121",
"inactiveUnderlineColor": "#474747",
"selectedForeground": "#B0BEC5",
"selectedBackground": "#323232",
"underlineColor": "#FF9800",
- "underlinedTabBackground": "#323232"
+ "underlinedTabBackground": "#323232",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#212121",
@@ -246,12 +268,13 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#323232"
},
+ "GotItTooltip.borderColor": "#1A1A1A",
"Group": {
"disabledSeparatorColor": "#292929",
"separatorColor": "#292929"
},
"GutterTooltip": {
- "infoForeground": "#B0BEC5",
+ "infoForeground": "#727272",
"lineSeparatorColor": "#212121"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#474747",
"foreground": "#B0BEC5",
"infoForeground": "#727272",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#B0BEC5"
},
"Link": {
"activeForeground": "#FF9800",
@@ -301,10 +325,12 @@
"List": {
"background": "#292929",
"foreground": "#B0BEC5",
- "selectionBackground": "#40404050",
+ "hoverBackground": "#32323270",
+ "hoverInactiveBackground": "#323232",
+ "selectionBackground": "#35353550",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#323232c0"
+ "selectionInactiveBackground": "#32323270"
},
"material": {
"background": "#212121",
@@ -332,7 +358,7 @@
"disabledBackground": "#292929",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF",
"separatorColor": "#292929"
},
@@ -343,7 +369,7 @@
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
"highlight": "#212121",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF",
"shadow": "#1A1A1A"
},
@@ -355,7 +381,7 @@
"disabledBackground": "#212121",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF"
},
"NavBar": {
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#292929",
"borderColor": "#323232",
- "currentOverloadBackground": "#323232",
+ "currentOverloadBackground": "#3F3F3F",
"currentParameterForeground": "#FF9800",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
@@ -429,9 +455,10 @@
"background": "#212121",
"disabledForeground": "#474747",
"eapTagBackground": "#3F3F3F",
- "lightSelectionBackground": "#404040",
+ "hoverBackground": "#32323270",
+ "lightSelectionBackground": "#323232",
"paidTagBackground": "#3F3F3F",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"tagForeground": "#FF9800",
"tagBackground": "#3F3F3F",
"trialTagBackground": "#3F3F3F",
@@ -442,7 +469,7 @@
"installFocusedBackground": "#3F3F3F",
"installFillForeground": "#474747",
"installFillBackground": "#2A2A2A",
- "updateBackground": "#2A2A2A",
+ "updateBackground": "#FF9800",
"updateBorderColor": "#2A2A2A",
"updateForeground": "#B0BEC5"
},
@@ -514,9 +541,10 @@
"disabledBackground": "#212121",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#292929",
"ScrollBar": {
"background": "#212121",
"hoverThumbBorderColor": "#FF9800",
@@ -576,9 +604,18 @@
},
"SearchMatch": {
"endBackground": "#FF9800",
- "startBackground": "#FF9800"
+ "startBackground": "#FF9800",
+ "endColor": "#FF9800",
+ "startColor": "#FF9800"
},
"SearchField.errorBackground": "#1A1A1A",
+ "SearchOption": {
+ "selectedBackground": "#323232"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#727272",
+ "Repeated.File.Foreground": "#B0BEC5"
+ },
"Separator": {
"background": "#292929",
"foreground": "#292929",
@@ -616,7 +653,9 @@
},
"SplitPaneDivider.draggingColor": "#292929",
"StatusBar": {
- "borderColor": "#212121"
+ "borderColor": "#212121",
+ "hoverBackground": "#3F3F3F",
+ "LightEditBackground": "#323232"
},
"TabbedPane": {
"background": "#212121",
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#1A1A1A",
"Table": {
+ "alternativeRowBackground": "#1A1A1A",
"background": "#212121",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#474747",
"dropLineColor": "#FF9800",
"dropLineShortColor": "#FF9800",
"focusCellBackground": "#323232",
@@ -653,6 +694,8 @@
"foreground": "#B0BEC5",
"gridColor": "#212121",
"highlightOuter": "#323232",
+ "hoverBackground": "#32323270",
+ "hoverInactiveBackground": "#323232",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#727272",
"lightSelectionInactiveBackground": "#292929",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#212121",
"Actions.infoForeground": "#727272",
- "background": "#212121",
- "borderColor": "#3F3F3F",
+ "background": "#1A1A1A",
+ "borderColor": "#292929",
"foreground": "#B0BEC5",
"infoForeground": "#727272",
"separatorColor": "#292929",
@@ -751,50 +794,93 @@
"background": "#212121"
},
"HeaderTab": {
+ "borderColor": "#3F3F3F",
"hoverBackground": "#3F3F3F",
- "hoverInactiveBackground": "#292929",
+ "hoverInactiveBackground": "#3F3F3F",
"inactiveUnderlineColor": "#FF9800",
"selectedBackground": "#1A1A1A",
"selectedInactiveBackground": "#1A1A1A",
"underlineColor": "#FF9800",
- "underlinedTabBackground": "#3F3F3F",
- "underlinedTabInactiveBackground": "#292929"
+ "underlinedTabBackground": "#323232",
+ "underlinedTabInactiveBackground": "#292929",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#B0BEC5"
}
},
"Tree": {
"background": "#1A1A1A",
"foreground": "#727272",
"hash": "#292929",
+ "hoverBackground": "#32323270",
+ "hoverInactiveBackground": "#323232",
"modifiedItemForeground": "#FF9800",
"rowHeight": 28,
- "selectionBackground": "#323232c0",
+ "selectionBackground": "#32323270",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#323232c0",
+ "selectionInactiveBackground": "#32323270",
"textBackground": "#1A1A1A"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#292929",
- "ColorPicker.background": "#212121",
- "ColorPicker.foreground": "#B0BEC5",
- "Component.borderColor": "#292929",
- "Component.background": "#212121",
- "Component.foreground": "#B0BEC5",
- "Connector.borderColor": "#292929",
- "Connector.hoverBorderColor": "#3F3F3F",
+ "Canvas.background": "#1A1A1A",
+ "ColorPicker": {
+ "background": "#212121",
+ "foreground": "#B0BEC5"
+ },
+ "Component": {
+ "borderColor": "#292929",
+ "background": "#212121",
+ "foreground": "#B0BEC5",
+ "hoverBorderColor": "#3F3F3F"
+ },
+ "Connector": {
+ "borderColor": "#292929",
+ "hoverBorderColor": "#3F3F3F"
+ },
"Canvas.background": "#1A1A1A",
"highStroke.foreground": "#B0BEC5",
"Label.foreground": "#727272",
- "List.selectionBackground": "#323232c0",
- "Panel.borderColor": "#292929",
- "Panel.background": "#212121",
+ "List.selectionBackground": "#32323270",
+ "motion": {
+ "borderColor": "#292929",
+ "Component.foreground": "#B0BEC5",
+ "ConstraintSetText.foreground": "#727272",
+ "ConstraintSet.background": "#292929",
+ "CSPanel.SelectedFocusBackground": "#353535",
+ "CSPanel.SelectedBackground": "#32323270",
+ "cs_FocusText.infoForeground": "#727272",
+ "CursorTextColor.foreground": "#B0BEC5",
+ "HoverColor.disabledBackground": "#474747",
+ "motionGraph.background": "#212121",
+ "Notification.background": "#1A1A1A",
+ "ourAvg.background": "#292929",
+ "ourCS.background": "#292929",
+ "ourCS_Border.borderColor": "#292929",
+ "ourCS_TextColor.foreground": "#727272",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#323232",
+ "ourCS_SelectedBorder.pressedBorderColor": "#3F3F3F",
+ "ourML_BarColor.separatorColor": "#292929",
+ "PrimaryPanel.background": "#1A1A1A",
+ "SecondaryPanel.background": "#212121",
+ "SecondaryPanel.header.foreground": "#727272",
+ "SecondaryPanel.header.background": "#1A1A1A",
+ "timeLine.disabledBorderColor": "#292929"
+ },
+ "Panel": {
+ "borderColor": "#292929",
+ "background": "#212121"
+ },
"percent.foreground": "#B0BEC5",
- "Placeholder.background": "#212121",
- "Placeholder.borderColor": "#292929",
- "Placeholder.foreground": "#B0BEC5",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#212121",
+ "borderColor": "#292929",
+ "foreground": "#B0BEC5",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#212121",
"stroke.acceleratorForeground": "#727272"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#727272",
- "Commit.currentBranchBackground": "#292929"
+ "Commit.currentBranchBackground": "#292929",
+ "Commit.hoveredBackground": "#32323270"
},
"RefLabel": {
"foreground": "#FFFFFF",
@@ -840,18 +927,24 @@
"foreground": "#B0BEC5"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#212121",
"background": "#212121",
"borderColor": "#212121",
"captionBackground": "#1A1A1A",
"captionForeground": "#B0BEC5",
+ "Details.background": "#212121",
"footerBackground": "#1A1A1A",
"footerForeground": "#B0BEC5",
"headerBackground": "#212121",
"headerForeground": "#B0BEC5",
+ "List.background": "#1A1A1A",
"separatorColor": "#292929",
+ "SidePanel.background": "#292929",
"Projects": {
+ "actions.background": "#1A1A1A",
+ "actions.selectionBackground": "#3F3F3F",
"background": "#292929",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionInactiveBackground": "#292929"
}
},
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker.theme.json
index 4cb6f3a1..ee3950e2 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Darker.theme.json
@@ -3,6 +3,12 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Material Darker.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/darker.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#727272",
@@ -17,7 +23,7 @@
"inactiveBackground": "#323232",
"inactiveForeground": "#727272",
"infoForeground": "#727272",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionBackgroundInactive": "#292929",
"selectionForeground": "#FFFFFF",
"selectionInactiveBackground": "#292929",
@@ -33,7 +39,7 @@
"pressedBorderColor": "#FF980050"
},
"Autocomplete": {
- "selectionBackground": "#404040"
+ "selectionBackground": "#353535"
},
"Borders.ContrastBorderColor": "#212121",
"Borders.color": "#292929",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#292929",
"Tooltip.background": "#1A1A1A"
},
- "Content.background": "#1A1A1A",
+ "Content": {
+ "background": "#1A1A1A",
+ "selectionBackground": "#353535"
+ },
"CheckBox": {
"background": "#212121",
"disabledText": "#474747",
@@ -86,9 +95,17 @@
"disabledBackground": "#212121",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#B0BEC5",
+ "AccessEnabled": {
+ "accessDot": "#FF9800",
+ "dropdownBorder": "#292929",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#212121",
"foreground": "#B0BEC5",
@@ -104,6 +121,7 @@
},
"background": "#212121",
"buttonBackground": "#2A2A2A",
+ "darcula.hoveredArrowButtonForeground": "#FF9800",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
"modifiedItemForeground": "#FF9800",
@@ -123,8 +141,8 @@
"selectedGrayedForeground": "#FFFFFF",
"selectionGrayForeground": "#FFFFFF",
"selectionInactiveInfoForeground": "#727272",
- "selectionInactiveBackground": "#40404050",
- "selectionBackground": "#40404080",
+ "selectionInactiveBackground": "#35353550",
+ "selectionBackground": "#35353580",
"selectionForeground": "#FFFFFF",
"selectionInfoForeground": "#FFFFFF"
},
@@ -168,11 +186,13 @@
"hoverBackground": "#323232",
"hoverColor": "#212121",
"hoverMaskColor": "#3F3F3F",
+ "inactiveColoredTabBackground": "#212121",
"inactiveColoredFileBackground": "#2A2A2A",
- "inactiveUnderlineColor": "#474747",
+ "inactiveUnderlineColor": "#FF9800",
"inactiveMaskColor": "#212121",
"underlineColor": "#FF9800",
- "underlinedTabBackground": "#323232"
+ "underlinedTabBackground": "#323232",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#212121",
"DialogWrapper.southPanelBackground": "#212121",
@@ -193,20 +213,22 @@
"foreground": "#B0BEC5",
"inactiveBackground": "#212121",
"inactiveForeground": "#474747",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF"
},
"EditorTabs": {
"borderColor": "#292929",
+ "hoverBackground": "#3F3F3F",
"hoverColor": "#3F3F3F",
"hoverMaskColor": "#3F3F3F",
"inactiveMaskColor": "#212121",
- "inactiveColoredFileBackground": "#2121212",
+ "inactiveColoredFileBackground": "#212121",
"inactiveUnderlineColor": "#474747",
"selectedForeground": "#B0BEC5",
"selectedBackground": "#323232",
"underlineColor": "#FF9800",
- "underlinedTabBackground": "#323232"
+ "underlinedTabBackground": "#323232",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#212121",
@@ -246,12 +268,13 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#323232"
},
+ "GotItTooltip.borderColor": "#1A1A1A",
"Group": {
"disabledSeparatorColor": "#292929",
"separatorColor": "#292929"
},
"GutterTooltip": {
- "infoForeground": "#B0BEC5",
+ "infoForeground": "#727272",
"lineSeparatorColor": "#212121"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#474747",
"foreground": "#B0BEC5",
"infoForeground": "#727272",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#B0BEC5"
},
"Link": {
"activeForeground": "#FF9800",
@@ -301,10 +325,12 @@
"List": {
"background": "#292929",
"foreground": "#B0BEC5",
- "selectionBackground": "#40404050",
+ "hoverBackground": "#32323270",
+ "hoverInactiveBackground": "#323232",
+ "selectionBackground": "#35353550",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#323232c0"
+ "selectionInactiveBackground": "#32323270"
},
"material": {
"background": "#212121",
@@ -332,7 +358,7 @@
"disabledBackground": "#292929",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF",
"separatorColor": "#292929"
},
@@ -343,7 +369,7 @@
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
"highlight": "#212121",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF",
"shadow": "#212121"
},
@@ -355,7 +381,7 @@
"disabledBackground": "#212121",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF"
},
"NavBar": {
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#292929",
"borderColor": "#323232",
- "currentOverloadBackground": "#323232",
+ "currentOverloadBackground": "#3F3F3F",
"currentParameterForeground": "#FF9800",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
@@ -429,9 +455,10 @@
"background": "#212121",
"disabledForeground": "#474747",
"eapTagBackground": "#3F3F3F",
- "lightSelectionBackground": "#404040",
+ "hoverBackground": "#32323270",
+ "lightSelectionBackground": "#323232",
"paidTagBackground": "#3F3F3F",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"tagForeground": "#FF9800",
"tagBackground": "#3F3F3F",
"trialTagBackground": "#3F3F3F",
@@ -442,7 +469,7 @@
"installFocusedBackground": "#3F3F3F",
"installFillForeground": "#474747",
"installFillBackground": "#2A2A2A",
- "updateBackground": "#2A2A2A",
+ "updateBackground": "#FF9800",
"updateBorderColor": "#2A2A2A",
"updateForeground": "#B0BEC5"
},
@@ -514,9 +541,10 @@
"disabledBackground": "#212121",
"disabledForeground": "#474747",
"foreground": "#B0BEC5",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#292929",
"ScrollBar": {
"background": "#212121",
"hoverThumbBorderColor": "#FF9800",
@@ -576,9 +604,18 @@
},
"SearchMatch": {
"endBackground": "#FF9800",
- "startBackground": "#FF9800"
+ "startBackground": "#FF9800",
+ "endColor": "#FF9800",
+ "startColor": "#FF9800"
},
"SearchField.errorBackground": "#1A1A1A",
+ "SearchOption": {
+ "selectedBackground": "#323232"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#727272",
+ "Repeated.File.Foreground": "#B0BEC5"
+ },
"Separator": {
"background": "#292929",
"foreground": "#292929",
@@ -616,7 +653,9 @@
},
"SplitPaneDivider.draggingColor": "#292929",
"StatusBar": {
- "borderColor": "#212121"
+ "borderColor": "#212121",
+ "hoverBackground": "#3F3F3F",
+ "LightEditBackground": "#323232"
},
"TabbedPane": {
"background": "#212121",
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#212121",
"Table": {
+ "alternativeRowBackground": "#1A1A1A",
"background": "#212121",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#474747",
"dropLineColor": "#FF9800",
"dropLineShortColor": "#FF9800",
"focusCellBackground": "#323232",
@@ -653,6 +694,8 @@
"foreground": "#B0BEC5",
"gridColor": "#212121",
"highlightOuter": "#323232",
+ "hoverBackground": "#32323270",
+ "hoverInactiveBackground": "#323232",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#727272",
"lightSelectionInactiveBackground": "#292929",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#212121",
"Actions.infoForeground": "#727272",
- "background": "#212121",
- "borderColor": "#3F3F3F",
+ "background": "#1A1A1A",
+ "borderColor": "#292929",
"foreground": "#B0BEC5",
"infoForeground": "#727272",
"separatorColor": "#292929",
@@ -751,50 +794,93 @@
"background": "#212121"
},
"HeaderTab": {
+ "borderColor": "#3F3F3F",
"hoverBackground": "#3F3F3F",
- "hoverInactiveBackground": "#292929",
+ "hoverInactiveBackground": "#3F3F3F",
"inactiveUnderlineColor": "#FF9800",
"selectedBackground": "#1A1A1A",
"selectedInactiveBackground": "#1A1A1A",
"underlineColor": "#FF9800",
- "underlinedTabBackground": "#3F3F3F",
- "underlinedTabInactiveBackground": "#292929"
+ "underlinedTabBackground": "#323232",
+ "underlinedTabInactiveBackground": "#292929",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#B0BEC5"
}
},
"Tree": {
"background": "#212121",
"foreground": "#727272",
"hash": "#292929",
+ "hoverBackground": "#32323270",
+ "hoverInactiveBackground": "#323232",
"modifiedItemForeground": "#FF9800",
"rowHeight": 28,
- "selectionBackground": "#323232c0",
+ "selectionBackground": "#32323270",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#323232c0",
+ "selectionInactiveBackground": "#32323270",
"textBackground": "#212121"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#292929",
- "ColorPicker.background": "#212121",
- "ColorPicker.foreground": "#B0BEC5",
- "Component.borderColor": "#292929",
- "Component.background": "#212121",
- "Component.foreground": "#B0BEC5",
- "Connector.borderColor": "#292929",
- "Connector.hoverBorderColor": "#3F3F3F",
+ "Canvas.background": "#1A1A1A",
+ "ColorPicker": {
+ "background": "#212121",
+ "foreground": "#B0BEC5"
+ },
+ "Component": {
+ "borderColor": "#292929",
+ "background": "#212121",
+ "foreground": "#B0BEC5",
+ "hoverBorderColor": "#3F3F3F"
+ },
+ "Connector": {
+ "borderColor": "#292929",
+ "hoverBorderColor": "#3F3F3F"
+ },
"Canvas.background": "#1A1A1A",
"highStroke.foreground": "#B0BEC5",
"Label.foreground": "#727272",
- "List.selectionBackground": "#323232c0",
- "Panel.borderColor": "#292929",
- "Panel.background": "#212121",
+ "List.selectionBackground": "#32323270",
+ "motion": {
+ "borderColor": "#292929",
+ "Component.foreground": "#B0BEC5",
+ "ConstraintSetText.foreground": "#727272",
+ "ConstraintSet.background": "#292929",
+ "CSPanel.SelectedFocusBackground": "#353535",
+ "CSPanel.SelectedBackground": "#32323270",
+ "cs_FocusText.infoForeground": "#727272",
+ "CursorTextColor.foreground": "#B0BEC5",
+ "HoverColor.disabledBackground": "#474747",
+ "motionGraph.background": "#212121",
+ "Notification.background": "#1A1A1A",
+ "ourAvg.background": "#292929",
+ "ourCS.background": "#292929",
+ "ourCS_Border.borderColor": "#292929",
+ "ourCS_TextColor.foreground": "#727272",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#323232",
+ "ourCS_SelectedBorder.pressedBorderColor": "#3F3F3F",
+ "ourML_BarColor.separatorColor": "#292929",
+ "PrimaryPanel.background": "#1A1A1A",
+ "SecondaryPanel.background": "#212121",
+ "SecondaryPanel.header.foreground": "#727272",
+ "SecondaryPanel.header.background": "#1A1A1A",
+ "timeLine.disabledBorderColor": "#292929"
+ },
+ "Panel": {
+ "borderColor": "#292929",
+ "background": "#212121"
+ },
"percent.foreground": "#B0BEC5",
- "Placeholder.background": "#212121",
- "Placeholder.borderColor": "#292929",
- "Placeholder.foreground": "#B0BEC5",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#212121",
+ "borderColor": "#292929",
+ "foreground": "#B0BEC5",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#212121",
"stroke.acceleratorForeground": "#727272"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#727272",
- "Commit.currentBranchBackground": "#292929"
+ "Commit.currentBranchBackground": "#292929",
+ "Commit.hoveredBackground": "#32323270"
},
"RefLabel": {
"foreground": "#FFFFFF",
@@ -840,18 +927,24 @@
"foreground": "#B0BEC5"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#212121",
"background": "#212121",
"borderColor": "#212121",
"captionBackground": "#1A1A1A",
"captionForeground": "#B0BEC5",
+ "Details.background": "#212121",
"footerBackground": "#1A1A1A",
"footerForeground": "#B0BEC5",
"headerBackground": "#212121",
"headerForeground": "#B0BEC5",
+ "List.background": "#1A1A1A",
"separatorColor": "#292929",
+ "SidePanel.background": "#292929",
"Projects": {
+ "actions.background": "#1A1A1A",
+ "actions.selectionBackground": "#3F3F3F",
"background": "#292929",
- "selectionBackground": "#404040",
+ "selectionBackground": "#353535",
"selectionInactiveBackground": "#292929"
}
},
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean Contrast.theme.json
index c4df47a4..54aa149f 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean Contrast.theme.json
@@ -3,6 +3,12 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Material Deep Ocean.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/deepocean.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#4B526D",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#0F111A",
"Tooltip.background": "#090B10"
},
- "Content.background": "#090B10",
+ "Content": {
+ "background": "#090B10",
+ "selectionBackground": "#232632"
+ },
"CheckBox": {
"background": "#0F111A",
"disabledText": "#464B5D",
@@ -89,6 +98,14 @@
"selectionBackground": "#232632",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#8F93A2",
+ "AccessEnabled": {
+ "accessDot": "#84ffff",
+ "dropdownBorder": "#181A1F",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#0F111A",
"foreground": "#8F93A2",
@@ -104,6 +121,7 @@
},
"background": "#090B10",
"buttonBackground": "#191A21",
+ "darcula.hoveredArrowButtonForeground": "#84ffff",
"disabledForeground": "#464B5D",
"foreground": "#8F93A2",
"modifiedItemForeground": "#84ffff",
@@ -168,11 +186,13 @@
"hoverBackground": "#1A1C25",
"hoverColor": "#090B10",
"hoverMaskColor": "#1F2233",
+ "inactiveColoredTabBackground": "#0F111A",
"inactiveColoredFileBackground": "#191A21",
- "inactiveUnderlineColor": "#464B5D",
+ "inactiveUnderlineColor": "#84ffff",
"inactiveMaskColor": "#090B10",
"underlineColor": "#84ffff",
- "underlinedTabBackground": "#1A1C25"
+ "underlinedTabBackground": "#1A1C25",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#0F111A",
"DialogWrapper.southPanelBackground": "#0F111A",
@@ -198,15 +218,17 @@
},
"EditorTabs": {
"borderColor": "#181A1F",
+ "hoverBackground": "#1F2233",
"hoverColor": "#1F2233",
"hoverMaskColor": "#1F2233",
"inactiveMaskColor": "#0F111A",
- "inactiveColoredFileBackground": "#0F111A2",
+ "inactiveColoredFileBackground": "#0F111A",
"inactiveUnderlineColor": "#464B5D",
"selectedForeground": "#8F93A2",
"selectedBackground": "#1A1C25",
"underlineColor": "#84ffff",
- "underlinedTabBackground": "#1A1C25"
+ "underlinedTabBackground": "#1A1C25",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#0F111A",
@@ -246,12 +268,13 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#1A1C25"
},
+ "GotItTooltip.borderColor": "#090B10",
"Group": {
"disabledSeparatorColor": "#0F111A",
"separatorColor": "#0F111A"
},
"GutterTooltip": {
- "infoForeground": "#8F93A2",
+ "infoForeground": "#4B526D",
"lineSeparatorColor": "#0F111A"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#464B5D",
"foreground": "#8F93A2",
"infoForeground": "#4B526D",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#8F93A2"
},
"Link": {
"activeForeground": "#84ffff",
@@ -301,10 +325,12 @@
"List": {
"background": "#181A1F",
"foreground": "#8F93A2",
+ "hoverBackground": "#717CB416",
+ "hoverInactiveBackground": "#1A1C25",
"selectionBackground": "#23263250",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#717CB430"
+ "selectionInactiveBackground": "#717CB416"
},
"material": {
"background": "#0F111A",
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#181A1F",
"borderColor": "#1A1C25",
- "currentOverloadBackground": "#1A1C25",
+ "currentOverloadBackground": "#1F2233",
"currentParameterForeground": "#84ffff",
"disabledForeground": "#464B5D",
"foreground": "#8F93A2",
@@ -429,7 +455,8 @@
"background": "#0F111A",
"disabledForeground": "#464B5D",
"eapTagBackground": "#1F2233",
- "lightSelectionBackground": "#232632",
+ "hoverBackground": "#717CB416",
+ "lightSelectionBackground": "#1A1C25",
"paidTagBackground": "#1F2233",
"selectionBackground": "#232632",
"tagForeground": "#84ffff",
@@ -442,7 +469,7 @@
"installFocusedBackground": "#1F2233",
"installFillForeground": "#464B5D",
"installFillBackground": "#191A21",
- "updateBackground": "#191A21",
+ "updateBackground": "#84ffff",
"updateBorderColor": "#191A21",
"updateForeground": "#8F93A2"
},
@@ -517,6 +544,7 @@
"selectionBackground": "#232632",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#0F111A",
"ScrollBar": {
"background": "#0F111A",
"hoverThumbBorderColor": "#84ffff",
@@ -576,9 +604,18 @@
},
"SearchMatch": {
"endBackground": "#84ffff",
- "startBackground": "#84ffff"
+ "startBackground": "#84ffff",
+ "endColor": "#84ffff",
+ "startColor": "#84ffff"
},
"SearchField.errorBackground": "#090B10",
+ "SearchOption": {
+ "selectedBackground": "#1A1C25"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#4B526D",
+ "Repeated.File.Foreground": "#8F93A2"
+ },
"Separator": {
"background": "#181A1F",
"foreground": "#181A1F",
@@ -616,7 +653,9 @@
},
"SplitPaneDivider.draggingColor": "#181A1F",
"StatusBar": {
- "borderColor": "#0F111A"
+ "borderColor": "#0F111A",
+ "hoverBackground": "#1F2233",
+ "LightEditBackground": "#1A1C25"
},
"TabbedPane": {
"background": "#0F111A",
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#090B10",
"Table": {
+ "alternativeRowBackground": "#090B10",
"background": "#0F111A",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#464B5D",
"dropLineColor": "#84ffff",
"dropLineShortColor": "#84ffff",
"focusCellBackground": "#1A1C25",
@@ -653,6 +694,8 @@
"foreground": "#8F93A2",
"gridColor": "#0F111A",
"highlightOuter": "#1A1C25",
+ "hoverBackground": "#717CB416",
+ "hoverInactiveBackground": "#1A1C25",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#4B526D",
"lightSelectionInactiveBackground": "#181A1F",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#0F111A",
"Actions.infoForeground": "#4B526D",
- "background": "#0F111A",
- "borderColor": "#1F2233",
+ "background": "#090B10",
+ "borderColor": "#0F111A",
"foreground": "#8F93A2",
"infoForeground": "#4B526D",
"separatorColor": "#0F111A",
@@ -751,50 +794,93 @@
"background": "#0F111A"
},
"HeaderTab": {
+ "borderColor": "#1F2233",
"hoverBackground": "#1F2233",
- "hoverInactiveBackground": "#181A1F",
+ "hoverInactiveBackground": "#1F2233",
"inactiveUnderlineColor": "#84ffff",
"selectedBackground": "#090B10",
"selectedInactiveBackground": "#090B10",
"underlineColor": "#84ffff",
- "underlinedTabBackground": "#1F2233",
- "underlinedTabInactiveBackground": "#181A1F"
+ "underlinedTabBackground": "#1A1C25",
+ "underlinedTabInactiveBackground": "#181A1F",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#8F93A2"
}
},
"Tree": {
"background": "#090B10",
"foreground": "#4B526D",
"hash": "#0F111A",
+ "hoverBackground": "#717CB416",
+ "hoverInactiveBackground": "#1A1C25",
"modifiedItemForeground": "#84ffff",
"rowHeight": 28,
- "selectionBackground": "#717CB430",
+ "selectionBackground": "#717CB416",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#717CB430",
+ "selectionInactiveBackground": "#717CB416",
"textBackground": "#090B10"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#0F111A",
- "ColorPicker.background": "#0F111A",
- "ColorPicker.foreground": "#8F93A2",
- "Component.borderColor": "#0F111A",
- "Component.background": "#0F111A",
- "Component.foreground": "#8F93A2",
- "Connector.borderColor": "#0F111A",
- "Connector.hoverBorderColor": "#1F2233",
+ "Canvas.background": "#090B10",
+ "ColorPicker": {
+ "background": "#0F111A",
+ "foreground": "#8F93A2"
+ },
+ "Component": {
+ "borderColor": "#0F111A",
+ "background": "#0F111A",
+ "foreground": "#8F93A2",
+ "hoverBorderColor": "#1F2233"
+ },
+ "Connector": {
+ "borderColor": "#0F111A",
+ "hoverBorderColor": "#1F2233"
+ },
"Canvas.background": "#090B10",
"highStroke.foreground": "#8F93A2",
"Label.foreground": "#4B526D",
- "List.selectionBackground": "#717CB430",
- "Panel.borderColor": "#0F111A",
- "Panel.background": "#0F111A",
+ "List.selectionBackground": "#717CB416",
+ "motion": {
+ "borderColor": "#0F111A",
+ "Component.foreground": "#8F93A2",
+ "ConstraintSetText.foreground": "#4B526D",
+ "ConstraintSet.background": "#181A1F",
+ "CSPanel.SelectedFocusBackground": "#232632",
+ "CSPanel.SelectedBackground": "#717CB416",
+ "cs_FocusText.infoForeground": "#4B526D",
+ "CursorTextColor.foreground": "#8F93A2",
+ "HoverColor.disabledBackground": "#464B5D",
+ "motionGraph.background": "#0F111A",
+ "Notification.background": "#090B10",
+ "ourAvg.background": "#181A1F",
+ "ourCS.background": "#181A1F",
+ "ourCS_Border.borderColor": "#0F111A",
+ "ourCS_TextColor.foreground": "#4B526D",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#1A1C25",
+ "ourCS_SelectedBorder.pressedBorderColor": "#1F2233",
+ "ourML_BarColor.separatorColor": "#0F111A",
+ "PrimaryPanel.background": "#090B10",
+ "SecondaryPanel.background": "#0F111A",
+ "SecondaryPanel.header.foreground": "#4B526D",
+ "SecondaryPanel.header.background": "#090B10",
+ "timeLine.disabledBorderColor": "#0F111A"
+ },
+ "Panel": {
+ "borderColor": "#0F111A",
+ "background": "#0F111A"
+ },
"percent.foreground": "#8F93A2",
- "Placeholder.background": "#0F111A",
- "Placeholder.borderColor": "#0F111A",
- "Placeholder.foreground": "#8F93A2",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#0F111A",
+ "borderColor": "#0F111A",
+ "foreground": "#8F93A2",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#0F111A",
"stroke.acceleratorForeground": "#4B526D"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#4B526D",
- "Commit.currentBranchBackground": "#181A1F"
+ "Commit.currentBranchBackground": "#181A1F",
+ "Commit.hoveredBackground": "#717CB416"
},
"RefLabel": {
"foreground": "#FFFFFF",
@@ -840,16 +927,22 @@
"foreground": "#8F93A2"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#0F111A",
"background": "#0F111A",
"borderColor": "#0F111A",
"captionBackground": "#090B10",
"captionForeground": "#8F93A2",
+ "Details.background": "#0F111A",
"footerBackground": "#090B10",
"footerForeground": "#8F93A2",
"headerBackground": "#0F111A",
"headerForeground": "#8F93A2",
+ "List.background": "#090B10",
"separatorColor": "#0F111A",
+ "SidePanel.background": "#181A1F",
"Projects": {
+ "actions.background": "#090B10",
+ "actions.selectionBackground": "#1F2233",
"background": "#181A1F",
"selectionBackground": "#232632",
"selectionInactiveBackground": "#181A1F"
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean.theme.json
index 4d5b6173..83103f96 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Deep Ocean.theme.json
@@ -3,6 +3,12 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Material Deep Ocean.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/deepocean.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#4B526D",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#0F111A",
"Tooltip.background": "#090B10"
},
- "Content.background": "#090B10",
+ "Content": {
+ "background": "#090B10",
+ "selectionBackground": "#232632"
+ },
"CheckBox": {
"background": "#0F111A",
"disabledText": "#464B5D",
@@ -89,6 +98,14 @@
"selectionBackground": "#232632",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#8F93A2",
+ "AccessEnabled": {
+ "accessDot": "#84ffff",
+ "dropdownBorder": "#181A1F",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#0F111A",
"foreground": "#8F93A2",
@@ -104,6 +121,7 @@
},
"background": "#0F111A",
"buttonBackground": "#191A21",
+ "darcula.hoveredArrowButtonForeground": "#84ffff",
"disabledForeground": "#464B5D",
"foreground": "#8F93A2",
"modifiedItemForeground": "#84ffff",
@@ -168,11 +186,13 @@
"hoverBackground": "#1A1C25",
"hoverColor": "#0F111A",
"hoverMaskColor": "#1F2233",
+ "inactiveColoredTabBackground": "#0F111A",
"inactiveColoredFileBackground": "#191A21",
- "inactiveUnderlineColor": "#464B5D",
+ "inactiveUnderlineColor": "#84ffff",
"inactiveMaskColor": "#0F111A",
"underlineColor": "#84ffff",
- "underlinedTabBackground": "#1A1C25"
+ "underlinedTabBackground": "#1A1C25",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#0F111A",
"DialogWrapper.southPanelBackground": "#0F111A",
@@ -198,15 +218,17 @@
},
"EditorTabs": {
"borderColor": "#181A1F",
+ "hoverBackground": "#1F2233",
"hoverColor": "#1F2233",
"hoverMaskColor": "#1F2233",
"inactiveMaskColor": "#0F111A",
- "inactiveColoredFileBackground": "#0F111A2",
+ "inactiveColoredFileBackground": "#0F111A",
"inactiveUnderlineColor": "#464B5D",
"selectedForeground": "#8F93A2",
"selectedBackground": "#1A1C25",
"underlineColor": "#84ffff",
- "underlinedTabBackground": "#1A1C25"
+ "underlinedTabBackground": "#1A1C25",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#0F111A",
@@ -246,12 +268,13 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#1A1C25"
},
+ "GotItTooltip.borderColor": "#090B10",
"Group": {
"disabledSeparatorColor": "#0F111A",
"separatorColor": "#0F111A"
},
"GutterTooltip": {
- "infoForeground": "#8F93A2",
+ "infoForeground": "#4B526D",
"lineSeparatorColor": "#0F111A"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#464B5D",
"foreground": "#8F93A2",
"infoForeground": "#4B526D",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#8F93A2"
},
"Link": {
"activeForeground": "#84ffff",
@@ -301,10 +325,12 @@
"List": {
"background": "#181A1F",
"foreground": "#8F93A2",
+ "hoverBackground": "#717CB416",
+ "hoverInactiveBackground": "#1A1C25",
"selectionBackground": "#23263250",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#717CB430"
+ "selectionInactiveBackground": "#717CB416"
},
"material": {
"background": "#0F111A",
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#181A1F",
"borderColor": "#1A1C25",
- "currentOverloadBackground": "#1A1C25",
+ "currentOverloadBackground": "#1F2233",
"currentParameterForeground": "#84ffff",
"disabledForeground": "#464B5D",
"foreground": "#8F93A2",
@@ -429,7 +455,8 @@
"background": "#0F111A",
"disabledForeground": "#464B5D",
"eapTagBackground": "#1F2233",
- "lightSelectionBackground": "#232632",
+ "hoverBackground": "#717CB416",
+ "lightSelectionBackground": "#1A1C25",
"paidTagBackground": "#1F2233",
"selectionBackground": "#232632",
"tagForeground": "#84ffff",
@@ -442,7 +469,7 @@
"installFocusedBackground": "#1F2233",
"installFillForeground": "#464B5D",
"installFillBackground": "#191A21",
- "updateBackground": "#191A21",
+ "updateBackground": "#84ffff",
"updateBorderColor": "#191A21",
"updateForeground": "#8F93A2"
},
@@ -517,6 +544,7 @@
"selectionBackground": "#232632",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#0F111A",
"ScrollBar": {
"background": "#0F111A",
"hoverThumbBorderColor": "#84ffff",
@@ -576,9 +604,18 @@
},
"SearchMatch": {
"endBackground": "#84ffff",
- "startBackground": "#84ffff"
+ "startBackground": "#84ffff",
+ "endColor": "#84ffff",
+ "startColor": "#84ffff"
},
"SearchField.errorBackground": "#090B10",
+ "SearchOption": {
+ "selectedBackground": "#1A1C25"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#4B526D",
+ "Repeated.File.Foreground": "#8F93A2"
+ },
"Separator": {
"background": "#181A1F",
"foreground": "#181A1F",
@@ -616,7 +653,9 @@
},
"SplitPaneDivider.draggingColor": "#181A1F",
"StatusBar": {
- "borderColor": "#0F111A"
+ "borderColor": "#0F111A",
+ "hoverBackground": "#1F2233",
+ "LightEditBackground": "#1A1C25"
},
"TabbedPane": {
"background": "#0F111A",
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#0F111A",
"Table": {
+ "alternativeRowBackground": "#090B10",
"background": "#0F111A",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#464B5D",
"dropLineColor": "#84ffff",
"dropLineShortColor": "#84ffff",
"focusCellBackground": "#1A1C25",
@@ -653,6 +694,8 @@
"foreground": "#8F93A2",
"gridColor": "#0F111A",
"highlightOuter": "#1A1C25",
+ "hoverBackground": "#717CB416",
+ "hoverInactiveBackground": "#1A1C25",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#4B526D",
"lightSelectionInactiveBackground": "#181A1F",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#0F111A",
"Actions.infoForeground": "#4B526D",
- "background": "#0F111A",
- "borderColor": "#1F2233",
+ "background": "#090B10",
+ "borderColor": "#0F111A",
"foreground": "#8F93A2",
"infoForeground": "#4B526D",
"separatorColor": "#0F111A",
@@ -751,50 +794,93 @@
"background": "#0F111A"
},
"HeaderTab": {
+ "borderColor": "#1F2233",
"hoverBackground": "#1F2233",
- "hoverInactiveBackground": "#181A1F",
+ "hoverInactiveBackground": "#1F2233",
"inactiveUnderlineColor": "#84ffff",
"selectedBackground": "#090B10",
"selectedInactiveBackground": "#090B10",
"underlineColor": "#84ffff",
- "underlinedTabBackground": "#1F2233",
- "underlinedTabInactiveBackground": "#181A1F"
+ "underlinedTabBackground": "#1A1C25",
+ "underlinedTabInactiveBackground": "#181A1F",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#8F93A2"
}
},
"Tree": {
"background": "#0F111A",
"foreground": "#4B526D",
"hash": "#0F111A",
+ "hoverBackground": "#717CB416",
+ "hoverInactiveBackground": "#1A1C25",
"modifiedItemForeground": "#84ffff",
"rowHeight": 28,
- "selectionBackground": "#717CB430",
+ "selectionBackground": "#717CB416",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#717CB430",
+ "selectionInactiveBackground": "#717CB416",
"textBackground": "#0F111A"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#0F111A",
- "ColorPicker.background": "#0F111A",
- "ColorPicker.foreground": "#8F93A2",
- "Component.borderColor": "#0F111A",
- "Component.background": "#0F111A",
- "Component.foreground": "#8F93A2",
- "Connector.borderColor": "#0F111A",
- "Connector.hoverBorderColor": "#1F2233",
+ "Canvas.background": "#090B10",
+ "ColorPicker": {
+ "background": "#0F111A",
+ "foreground": "#8F93A2"
+ },
+ "Component": {
+ "borderColor": "#0F111A",
+ "background": "#0F111A",
+ "foreground": "#8F93A2",
+ "hoverBorderColor": "#1F2233"
+ },
+ "Connector": {
+ "borderColor": "#0F111A",
+ "hoverBorderColor": "#1F2233"
+ },
"Canvas.background": "#090B10",
"highStroke.foreground": "#8F93A2",
"Label.foreground": "#4B526D",
- "List.selectionBackground": "#717CB430",
- "Panel.borderColor": "#0F111A",
- "Panel.background": "#0F111A",
+ "List.selectionBackground": "#717CB416",
+ "motion": {
+ "borderColor": "#0F111A",
+ "Component.foreground": "#8F93A2",
+ "ConstraintSetText.foreground": "#4B526D",
+ "ConstraintSet.background": "#181A1F",
+ "CSPanel.SelectedFocusBackground": "#232632",
+ "CSPanel.SelectedBackground": "#717CB416",
+ "cs_FocusText.infoForeground": "#4B526D",
+ "CursorTextColor.foreground": "#8F93A2",
+ "HoverColor.disabledBackground": "#464B5D",
+ "motionGraph.background": "#0F111A",
+ "Notification.background": "#090B10",
+ "ourAvg.background": "#181A1F",
+ "ourCS.background": "#181A1F",
+ "ourCS_Border.borderColor": "#0F111A",
+ "ourCS_TextColor.foreground": "#4B526D",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#1A1C25",
+ "ourCS_SelectedBorder.pressedBorderColor": "#1F2233",
+ "ourML_BarColor.separatorColor": "#0F111A",
+ "PrimaryPanel.background": "#090B10",
+ "SecondaryPanel.background": "#0F111A",
+ "SecondaryPanel.header.foreground": "#4B526D",
+ "SecondaryPanel.header.background": "#090B10",
+ "timeLine.disabledBorderColor": "#0F111A"
+ },
+ "Panel": {
+ "borderColor": "#0F111A",
+ "background": "#0F111A"
+ },
"percent.foreground": "#8F93A2",
- "Placeholder.background": "#0F111A",
- "Placeholder.borderColor": "#0F111A",
- "Placeholder.foreground": "#8F93A2",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#0F111A",
+ "borderColor": "#0F111A",
+ "foreground": "#8F93A2",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#0F111A",
"stroke.acceleratorForeground": "#4B526D"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#4B526D",
- "Commit.currentBranchBackground": "#181A1F"
+ "Commit.currentBranchBackground": "#181A1F",
+ "Commit.hoveredBackground": "#717CB416"
},
"RefLabel": {
"foreground": "#FFFFFF",
@@ -840,16 +927,22 @@
"foreground": "#8F93A2"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#0F111A",
"background": "#0F111A",
"borderColor": "#0F111A",
"captionBackground": "#090B10",
"captionForeground": "#8F93A2",
+ "Details.background": "#0F111A",
"footerBackground": "#090B10",
"footerForeground": "#8F93A2",
"headerBackground": "#0F111A",
"headerForeground": "#8F93A2",
+ "List.background": "#090B10",
"separatorColor": "#0F111A",
+ "SidePanel.background": "#181A1F",
"Projects": {
+ "actions.background": "#090B10",
+ "actions.selectionBackground": "#1F2233",
"background": "#181A1F",
"selectionBackground": "#232632",
"selectionInactiveBackground": "#181A1F"
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter Contrast.theme.json
index edde7257..0b0f96fe 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter Contrast.theme.json
@@ -3,24 +3,30 @@
"dark": false,
"author": "Mallowigi",
"editorScheme": "/colors/Material Lighter.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/lighter.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#94A7B0",
"background": "#FAFAFA",
"borderColor": "#d3e1e8",
- "disabledBackground": "#CCD7DA",
+ "disabledBackground": "#eae8e8",
"disabledForeground": "#D2D4D5",
"disabledText": "#D2D4D5",
"focusColor": "#E7E7E8",
"focusedBorderColor": "#00BCD4",
"foreground": "#546E7A",
- "inactiveBackground": "#CCD7DA",
+ "inactiveBackground": "#eae8e8",
"inactiveForeground": "#94A7B0",
"infoForeground": "#94A7B0",
"selectionBackground": "#80CBC4",
- "selectionBackgroundInactive": "#FFFFFF",
+ "selectionBackgroundInactive": "#eae8e8",
"selectionForeground": "#546e7a",
- "selectionInactiveBackground": "#FFFFFF",
+ "selectionInactiveBackground": "#eae8e8",
"separatorColor": "#d3e1e8"
},
"activeCaption": "#FAFAFA",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#d3e1e8",
"Tooltip.background": "#eae8e8"
},
- "Content.background": "#EEEEEE",
+ "Content": {
+ "background": "#F4F4F4",
+ "selectionBackground": "#80CBC4"
+ },
"CheckBox": {
"background": "#FAFAFA",
"disabledText": "#D2D4D5",
@@ -89,6 +98,14 @@
"selectionBackground": "#80CBC4",
"selectionForeground": "#546e7a"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#546E7A",
+ "AccessEnabled": {
+ "accessDot": "#00BCD4",
+ "dropdownBorder": "#eae8e8",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#FAFAFA",
"foreground": "#546E7A",
@@ -102,19 +119,20 @@
"iconColor": "#546E7A",
"nonEditableBackground": "#FAFAFA"
},
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"buttonBackground": "#F3F4F5",
+ "darcula.hoveredArrowButtonForeground": "#00BCD4",
"disabledForeground": "#D2D4D5",
"foreground": "#546E7A",
"modifiedItemForeground": "#00BCD4",
- "nonEditableBackground": "#FFFFFF",
+ "nonEditableBackground": "#eae8e8",
"padding": "5,5,5,5",
"selectionBackground": "#E7E7E8",
"selectionForeground": "#546e7a"
},
"ComboPopup.border": "#d3e1e8",
"CompletionPopup": {
- "background": "#FFFFFF",
+ "background": "#eae8e8",
"foreground": "#546E7A",
"infoForeground": "#94A7B0",
"matchForeground": "#00BCD4",
@@ -166,13 +184,15 @@
"background": "#FAFAFA",
"borderColor": "#FAFAFA",
"hoverBackground": "#E7E7E8",
- "hoverColor": "#EEEEEE",
+ "hoverColor": "#F4F4F4",
"hoverMaskColor": "#E7E7E8",
+ "inactiveColoredTabBackground": "#FAFAFA",
"inactiveColoredFileBackground": "#F3F4F5",
- "inactiveUnderlineColor": "#D2D4D5",
- "inactiveMaskColor": "#EEEEEE",
+ "inactiveUnderlineColor": "#00BCD4",
+ "inactiveMaskColor": "#F4F4F4",
"underlineColor": "#00BCD4",
- "underlinedTabBackground": "#E7E7E8"
+ "underlinedTabBackground": "#E7E7E8",
+ "underlinedTabForeground": "#546e7a"
},
"Desktop.background": "#FAFAFA",
"DialogWrapper.southPanelBackground": "#FAFAFA",
@@ -183,12 +203,12 @@
"areaForeground": "#546E7A"
},
"Editor": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"foreground": "#546E7A",
"shortcutForeground": "#94A7B0"
},
"EditorPane": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"caretForeground": "#00BCD4",
"foreground": "#546E7A",
"inactiveBackground": "#FAFAFA",
@@ -197,20 +217,22 @@
"selectionForeground": "#546e7a"
},
"EditorTabs": {
- "borderColor": "#FFFFFF",
+ "borderColor": "#eae8e8",
+ "hoverBackground": "#E7E7E8",
"hoverColor": "#E7E7E8",
"hoverMaskColor": "#E7E7E8",
"inactiveMaskColor": "#FAFAFA",
- "inactiveColoredFileBackground": "#FAFAFA2",
+ "inactiveColoredFileBackground": "#FAFAFA",
"inactiveUnderlineColor": "#D2D4D5",
"selectedForeground": "#546E7A",
"selectedBackground": "#E7E7E8",
"underlineColor": "#00BCD4",
- "underlinedTabBackground": "#E7E7E8"
+ "underlinedTabBackground": "#E7E7E8",
+ "underlinedTabForeground": "#546e7a"
},
"EditorGroupsTabs": {
"background": "#FAFAFA",
- "borderColor": "#FFFFFF",
+ "borderColor": "#eae8e8",
"hoverBackground": "#E7E7E8",
"hoverColor": "#E7E7E8",
"inactiveUnderlineColor": "#00BCD4",
@@ -221,7 +243,7 @@
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#CCD7DA",
+ "Yellow": "#eae8e8",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -238,7 +260,7 @@
},
"Focus.color": "#d3e1e8",
"FormattedTextField": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"caretForeground": "#00BCD4",
"foreground": "#546E7A",
"inactiveBackground": "#F3F4F5",
@@ -246,17 +268,18 @@
"selectionForeground": "#546e7a",
"selectionBackground": "#E7E7E8"
},
+ "GotItTooltip.borderColor": "#eae8e8",
"Group": {
"disabledSeparatorColor": "#d3e1e8",
"separatorColor": "#d3e1e8"
},
"GutterTooltip": {
- "infoForeground": "#546E7A",
+ "infoForeground": "#94A7B0",
"lineSeparatorColor": "#FAFAFA"
},
"HeaderColor": {
"active": "#FAFAFA",
- "inactive": "#EEEEEE"
+ "inactive": "#F4F4F4"
},
"HelpTooltip": {
"background": "#FAFAFA",
@@ -266,7 +289,7 @@
"shortcutForeground": "#94A7B0"
},
"Hyperlink.linkColor": "#00BCD4",
- "inactiveCaption": "#FFFFFF",
+ "inactiveCaption": "#eae8e8",
"inactiveCaptionBorder": "#FAFAFA",
"inactiveCaptionText": "#94A7B0",
"info": "#94A7B0",
@@ -288,7 +311,8 @@
"disabledText": "#D2D4D5",
"foreground": "#546E7A",
"infoForeground": "#94A7B0",
- "selectedForeground": "#546e7a"
+ "selectedForeground": "#546e7a",
+ "selectedDisabledForeground": "#546E7A"
},
"Link": {
"activeForeground": "#00BCD4",
@@ -299,17 +323,19 @@
},
"link.foreground": "#00BCD4",
"List": {
- "background": "#FFFFFF",
+ "background": "#eae8e8",
"foreground": "#546E7A",
+ "hoverBackground": "#80CBC480",
+ "hoverInactiveBackground": "#E7E7E8",
"selectionBackground": "#80CBC450",
"selectionForeground": "#546e7a",
"selectionInactiveForeground": "#546e7a",
- "selectionInactiveBackground": "#80CBC440"
+ "selectionInactiveBackground": "#80CBC480"
},
"material": {
"background": "#FAFAFA",
"branchColor": "#546E7A",
- "contrast": "#EEEEEE",
+ "contrast": "#F4F4F4",
"foreground": "#546E7A",
"mergeCommits": "#F3F4F5",
"primaryColor": "#94A7B0",
@@ -319,7 +345,7 @@
"tagColor": "#94A7B0"
},
"MemoryIndicator": {
- "allocatedBackground": "#FFFFFF",
+ "allocatedBackground": "#eae8e8",
"usedColor": "#E7E7E8",
"usedBackground": "#E7E7E8"
},
@@ -328,8 +354,8 @@
"acceleratorSelectionForeground": "#546e7a",
"background": "#FAFAFA",
"border": "4,2,4,2",
- "borderColor": "#FFFFFF",
- "disabledBackground": "#FFFFFF",
+ "borderColor": "#eae8e8",
+ "disabledBackground": "#eae8e8",
"disabledForeground": "#D2D4D5",
"foreground": "#546E7A",
"selectionBackground": "#80CBC4",
@@ -337,7 +363,7 @@
"separatorColor": "#d3e1e8"
},
"MenuBar": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"borderColor": "#FAFAFA",
"disabledBackground": "#FAFAFA",
"disabledForeground": "#D2D4D5",
@@ -345,7 +371,7 @@
"highlight": "#FAFAFA",
"selectionBackground": "#80CBC4",
"selectionForeground": "#546e7a",
- "shadow": "#EEEEEE"
+ "shadow": "#F4F4F4"
},
"MenuItem": {
"acceleratorForeground": "#94A7B0",
@@ -367,7 +393,7 @@
"background": "#FAFAFA"
},
"SearchField": {
- "background": "#EEEEEE"
+ "background": "#F4F4F4"
}
},
"NewPSD.warning": "#00BCD4",
@@ -407,7 +433,7 @@
"foreground": "#546E7A"
},
"ParameterInfo": {
- "background": "#FFFFFF",
+ "background": "#eae8e8",
"borderColor": "#E7E7E8",
"currentOverloadBackground": "#E7E7E8",
"currentParameterForeground": "#00BCD4",
@@ -417,7 +443,7 @@
"lineSeparatorColor": "#E7E7E8"
},
"PasswordField": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"capsLockIconColor": "#00BCD4",
"caretForeground": "#00BCD4",
"foreground": "#546E7A",
@@ -429,7 +455,8 @@
"background": "#FAFAFA",
"disabledForeground": "#D2D4D5",
"eapTagBackground": "#E7E7E8",
- "lightSelectionBackground": "#80CBC4",
+ "hoverBackground": "#80CBC480",
+ "lightSelectionBackground": "#E7E7E8",
"paidTagBackground": "#E7E7E8",
"selectionBackground": "#80CBC4",
"tagForeground": "#00BCD4",
@@ -442,16 +469,16 @@
"installFocusedBackground": "#E7E7E8",
"installFillForeground": "#D2D4D5",
"installFillBackground": "#F3F4F5",
- "updateBackground": "#F3F4F5",
+ "updateBackground": "#00BCD4",
"updateBorderColor": "#F3F4F5",
"updateForeground": "#546E7A"
},
"SearchField": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"borderColor": "#d3e1e8"
},
"SectionHeader": {
- "background": "#FFFFFF",
+ "background": "#eae8e8",
"foreground": "#546E7A"
},
"Tab": {
@@ -466,20 +493,20 @@
"borderColor": "#FAFAFA",
"foreground": "#00BCD4"
},
- "borderColor": "#EEEEEE",
+ "borderColor": "#F4F4F4",
"inactiveBorderColor": "#FAFAFA",
- "innerBorderColor": "#FFFFFF",
+ "innerBorderColor": "#eae8e8",
"Header": {
"activeBackground": "#FAFAFA",
- "inactiveBackground": "#EEEEEE"
+ "inactiveBackground": "#F4F4F4"
},
"paintBorder": true,
"separatorForeground": "#546E7A",
- "separatorColor": "#FFFFFF",
+ "separatorColor": "#eae8e8",
"Toolbar": {
- "Floating.background": "#EEEEEE",
- "background": "#EEEEEE",
- "borderColor": "#EEEEEE"
+ "Floating.background": "#F4F4F4",
+ "background": "#F4F4F4",
+ "borderColor": "#F4F4F4"
}
},
"PopupMenu": {
@@ -517,6 +544,7 @@
"selectionBackground": "#80CBC4",
"selectionForeground": "#546e7a"
},
+ "ScreenView.borderColor": "#d3e1e8",
"ScrollBar": {
"background": "#FAFAFA",
"hoverThumbBorderColor": "#00BCD4",
@@ -553,7 +581,7 @@
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"foreground": "#94A7B0"
},
"Header": {
@@ -565,7 +593,7 @@
},
"SearchField": {
"background": "#FAFAFA",
- "borderColor": "#EEEEEE",
+ "borderColor": "#F4F4F4",
"infoForeground": "#94A7B0"
},
"Tab": {
@@ -576,16 +604,25 @@
},
"SearchMatch": {
"endBackground": "#00BCD4",
- "startBackground": "#00BCD4"
+ "startBackground": "#00BCD4",
+ "endColor": "#00BCD4",
+ "startColor": "#00BCD4"
},
"SearchField.errorBackground": "#eae8e8",
+ "SearchOption": {
+ "selectedBackground": "#E7E7E8"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#94A7B0",
+ "Repeated.File.Foreground": "#546E7A"
+ },
"Separator": {
- "background": "#FFFFFF",
- "foreground": "#FFFFFF",
- "separatorColor": "#FFFFFF"
+ "background": "#eae8e8",
+ "foreground": "#eae8e8",
+ "separatorColor": "#eae8e8"
},
"SidePanel": {
- "background": "#EEEEEE"
+ "background": "#F4F4F4"
},
"Slider": {
"background": "#FAFAFA",
@@ -593,7 +630,7 @@
"buttonColor": "#00BCD4",
"foreground": "#546E7A",
"majorTickLength": 6,
- "tickColor": "#FFFFFF",
+ "tickColor": "#eae8e8",
"trackColor": "#E7E7E8",
"trackWidth": 7,
"thumb": "#00BCD4"
@@ -612,11 +649,13 @@
},
"SplitPane": {
"background": "#FAFAFA",
- "highlight": "#EEEEEE"
+ "highlight": "#F4F4F4"
},
- "SplitPaneDivider.draggingColor": "#FFFFFF",
+ "SplitPaneDivider.draggingColor": "#eae8e8",
"StatusBar": {
- "borderColor": "#FAFAFA"
+ "borderColor": "#FAFAFA",
+ "hoverBackground": "#E7E7E8",
+ "LightEditBackground": "#E7E7E8"
},
"TabbedPane": {
"background": "#FAFAFA",
@@ -641,11 +680,13 @@
"tabSelectionHeight": 2,
"underlineColor": "#00BCD4"
},
- "TabbedPane.mt.tab.background": "#EEEEEE",
+ "TabbedPane.mt.tab.background": "#F4F4F4",
"Table": {
+ "alternativeRowBackground": "#F4F4F4",
"background": "#FAFAFA",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#D2D4D5",
"dropLineColor": "#00BCD4",
"dropLineShortColor": "#00BCD4",
"focusCellBackground": "#E7E7E8",
@@ -653,33 +694,35 @@
"foreground": "#546E7A",
"gridColor": "#FAFAFA",
"highlightOuter": "#E7E7E8",
+ "hoverBackground": "#80CBC480",
+ "hoverInactiveBackground": "#E7E7E8",
"lightSelectionForeground": "#546e7a",
"lightSelectionInactiveForeground": "#94A7B0",
- "lightSelectionInactiveBackground": "#FFFFFF",
+ "lightSelectionInactiveBackground": "#eae8e8",
"selectionBackground": "#E7E7E8",
"selectionForeground": "#546e7a",
"selectionInactiveBackground": "#E7E7E8",
"selectionInactiveForeground": "#546e7a",
"sortIconColor": "#546E7A",
- "stripeColor": "#EEEEEE"
+ "stripeColor": "#F4F4F4"
},
"TableHeader": {
"background": "#FAFAFA",
"borderColor": "#FAFAFA",
- "bottomSeparatorColor": "#FFFFFF",
+ "bottomSeparatorColor": "#eae8e8",
"cellBorder": "4,0,4,0",
"disabledForeground": "#D2D4D5",
"foreground": "#546E7A",
"focusCellBackground": "#E7E7E8",
"focusCellForeground": "#546e7a",
"height": 25,
- "separatorColor": "#FFFFFF"
+ "separatorColor": "#eae8e8"
},
"text": "#94A7B0",
"textInactiveText": "#94A7B0",
"textText": "#94A7B0",
"TextArea": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"caretForeground": "#00BCD4",
"foreground": "#546E7A",
"inactiveForeground": "#D2D4D5",
@@ -687,7 +730,7 @@
"selectionForeground": "#546e7a"
},
"TextField": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"caretForeground": "#00BCD4",
"foreground": "#546E7A",
"inactiveForeground": "#D2D4D5",
@@ -695,7 +738,7 @@
"selectionForeground": "#546e7a"
},
"TextPane": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"caretForeground": "#00BCD4",
"foreground": "#546E7A",
"inactiveForeground": "#D2D4D5",
@@ -703,7 +746,7 @@
"selectionForeground": "#546e7a"
},
"TitlePane": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"Button.hoverBackground": "#E7E7E8",
"inactiveBackground": "#FAFAFA",
"infoForeground": "#94A7B0",
@@ -721,7 +764,7 @@
"onForeground": "#00BCD4"
},
"ToolBar": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"borderHandleColor": "#94A7B0",
"floatingForeground": "#94A7B0",
"foreground": "#546E7A"
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#FAFAFA",
"Actions.infoForeground": "#94A7B0",
- "background": "#FAFAFA",
- "borderColor": "#E7E7E8",
+ "background": "#eae8e8",
+ "borderColor": "#d3e1e8",
"foreground": "#546E7A",
"infoForeground": "#94A7B0",
"separatorColor": "#d3e1e8",
@@ -740,61 +783,104 @@
"Button": {
"hoverBackground": "#E7E7E8",
"selectedForeground": "#546e7a",
- "selectedBackground": "#EEEEEE"
+ "selectedBackground": "#F4F4F4"
},
"Header": {
"background": "#FAFAFA",
- "borderColor": "#FFFFFF",
+ "borderColor": "#eae8e8",
"inactiveBackground": "#FAFAFA"
},
"HeaderCloseButton": {
"background": "#FAFAFA"
},
"HeaderTab": {
+ "borderColor": "#E7E7E8",
"hoverBackground": "#E7E7E8",
- "hoverInactiveBackground": "#FFFFFF",
+ "hoverInactiveBackground": "#E7E7E8",
"inactiveUnderlineColor": "#00BCD4",
- "selectedBackground": "#EEEEEE",
- "selectedInactiveBackground": "#EEEEEE",
+ "selectedBackground": "#F4F4F4",
+ "selectedInactiveBackground": "#F4F4F4",
"underlineColor": "#00BCD4",
"underlinedTabBackground": "#E7E7E8",
- "underlinedTabInactiveBackground": "#FFFFFF"
+ "underlinedTabInactiveBackground": "#eae8e8",
+ "underlinedTabForeground": "#546e7a",
+ "underlinedTabInactiveForeground": "#546E7A"
}
},
"Tree": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"foreground": "#94A7B0",
"hash": "#d3e1e8",
+ "hoverBackground": "#80CBC480",
+ "hoverInactiveBackground": "#E7E7E8",
"modifiedItemForeground": "#00BCD4",
"rowHeight": 28,
- "selectionBackground": "#80CBC440",
+ "selectionBackground": "#80CBC480",
"selectionForeground": "#546e7a",
"selectionInactiveForeground": "#546e7a",
- "selectionInactiveBackground": "#80CBC440",
- "textBackground": "#EEEEEE"
+ "selectionInactiveBackground": "#80CBC480",
+ "textBackground": "#F4F4F4"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#d3e1e8",
- "ColorPicker.background": "#FAFAFA",
- "ColorPicker.foreground": "#546E7A",
- "Component.borderColor": "#d3e1e8",
- "Component.background": "#FAFAFA",
- "Component.foreground": "#546E7A",
- "Connector.borderColor": "#d3e1e8",
- "Connector.hoverBorderColor": "#E7E7E8",
- "Canvas.background": "#EEEEEE",
+ "Canvas.background": "#F4F4F4",
+ "ColorPicker": {
+ "background": "#FAFAFA",
+ "foreground": "#546E7A"
+ },
+ "Component": {
+ "borderColor": "#d3e1e8",
+ "background": "#FAFAFA",
+ "foreground": "#546E7A",
+ "hoverBorderColor": "#E7E7E8"
+ },
+ "Connector": {
+ "borderColor": "#d3e1e8",
+ "hoverBorderColor": "#E7E7E8"
+ },
+ "Canvas.background": "#F4F4F4",
"highStroke.foreground": "#546E7A",
"Label.foreground": "#94A7B0",
- "List.selectionBackground": "#80CBC440",
- "Panel.borderColor": "#d3e1e8",
- "Panel.background": "#FAFAFA",
+ "List.selectionBackground": "#80CBC480",
+ "motion": {
+ "borderColor": "#d3e1e8",
+ "Component.foreground": "#546E7A",
+ "ConstraintSetText.foreground": "#94A7B0",
+ "ConstraintSet.background": "#eae8e8",
+ "CSPanel.SelectedFocusBackground": "#80CBC4",
+ "CSPanel.SelectedBackground": "#80CBC480",
+ "cs_FocusText.infoForeground": "#94A7B0",
+ "CursorTextColor.foreground": "#546E7A",
+ "HoverColor.disabledBackground": "#D2D4D5",
+ "motionGraph.background": "#FAFAFA",
+ "Notification.background": "#eae8e8",
+ "ourAvg.background": "#eae8e8",
+ "ourCS.background": "#eae8e8",
+ "ourCS_Border.borderColor": "#d3e1e8",
+ "ourCS_TextColor.foreground": "#94A7B0",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#546e7a",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#E7E7E8",
+ "ourCS_SelectedBorder.pressedBorderColor": "#E7E7E8",
+ "ourML_BarColor.separatorColor": "#d3e1e8",
+ "PrimaryPanel.background": "#F4F4F4",
+ "SecondaryPanel.background": "#FAFAFA",
+ "SecondaryPanel.header.foreground": "#94A7B0",
+ "SecondaryPanel.header.background": "#F4F4F4",
+ "timeLine.disabledBorderColor": "#d3e1e8"
+ },
+ "Panel": {
+ "borderColor": "#d3e1e8",
+ "background": "#FAFAFA"
+ },
"percent.foreground": "#546E7A",
- "Placeholder.background": "#FAFAFA",
- "Placeholder.borderColor": "#d3e1e8",
- "Placeholder.foreground": "#546E7A",
- "Placeholder.selectedForeground": "#546e7a",
+ "Placeholder": {
+ "background": "#FAFAFA",
+ "borderColor": "#d3e1e8",
+ "foreground": "#546E7A",
+ "selectedForeground": "#546e7a"
+ },
"Preview.background": "#FAFAFA",
"stroke.acceleratorForeground": "#94A7B0"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#94A7B0",
- "Commit.currentBranchBackground": "#FFFFFF"
+ "Commit.currentBranchBackground": "#eae8e8",
+ "Commit.hoveredBackground": "#80CBC480"
},
"RefLabel": {
"foreground": "#546e7a",
@@ -836,33 +923,39 @@
}
},
"Viewport": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"foreground": "#546E7A"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#FAFAFA",
"background": "#FAFAFA",
"borderColor": "#FAFAFA",
- "captionBackground": "#EEEEEE",
+ "captionBackground": "#F4F4F4",
"captionForeground": "#546E7A",
- "footerBackground": "#EEEEEE",
+ "Details.background": "#FAFAFA",
+ "footerBackground": "#F4F4F4",
"footerForeground": "#546E7A",
"headerBackground": "#FAFAFA",
"headerForeground": "#546E7A",
+ "List.background": "#F4F4F4",
"separatorColor": "#d3e1e8",
+ "SidePanel.background": "#eae8e8",
"Projects": {
- "background": "#FFFFFF",
+ "actions.background": "#F4F4F4",
+ "actions.selectionBackground": "#E7E7E8",
+ "background": "#eae8e8",
"selectionBackground": "#80CBC4",
- "selectionInactiveBackground": "#FFFFFF"
+ "selectionInactiveBackground": "#eae8e8"
}
},
- "window": "#EEEEEE",
+ "window": "#F4F4F4",
"windowBorder": "#d3e1e8",
"windowText": "#94A7B0",
"Window.border": "#d3e1e8"
},
"icons": {
"ColorPalette": {
- "#43494A": "#EEEEEE",
+ "#43494A": "#F4F4F4",
"#6B6B6B": "#94A7B0",
"#A7A7A7": "#FAFAFA",
"#3D6185": "#00BCD4",
@@ -879,10 +972,10 @@
"Actions.GreyInline.Dark": "#546E7A",
"Actions.Red": "#E53935",
"Actions.Yellow": "#F6A434",
- "Checkbox.Background.Default": "#EEEEEE",
- "Checkbox.Background.Default.Dark": "#EEEEEE",
- "Checkbox.Background.Disabled": "#CCD7DA",
- "Checkbox.Background.Disabled.Dark": "#CCD7DA",
+ "Checkbox.Background.Default": "#F4F4F4",
+ "Checkbox.Background.Default.Dark": "#F4F4F4",
+ "Checkbox.Background.Disabled": "#eae8e8",
+ "Checkbox.Background.Disabled.Dark": "#eae8e8",
"Checkbox.Border.Default": "#d3e1e8",
"Checkbox.Border.Default.Dark": "#d3e1e8",
"Checkbox.Border.Disabled": "#D2D4D5",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter.theme.json
index 26ce91a8..f26db84f 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Lighter.theme.json
@@ -3,24 +3,30 @@
"dark": false,
"author": "Mallowigi",
"editorScheme": "/colors/Material Lighter.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/lighter.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#94A7B0",
"background": "#FAFAFA",
"borderColor": "#d3e1e8",
- "disabledBackground": "#CCD7DA",
+ "disabledBackground": "#eae8e8",
"disabledForeground": "#D2D4D5",
"disabledText": "#D2D4D5",
"focusColor": "#E7E7E8",
"focusedBorderColor": "#00BCD4",
"foreground": "#546E7A",
- "inactiveBackground": "#CCD7DA",
+ "inactiveBackground": "#eae8e8",
"inactiveForeground": "#94A7B0",
"infoForeground": "#94A7B0",
"selectionBackground": "#80CBC4",
- "selectionBackgroundInactive": "#FFFFFF",
+ "selectionBackgroundInactive": "#eae8e8",
"selectionForeground": "#546e7a",
- "selectionInactiveBackground": "#FFFFFF",
+ "selectionInactiveBackground": "#eae8e8",
"separatorColor": "#d3e1e8"
},
"activeCaption": "#FAFAFA",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#d3e1e8",
"Tooltip.background": "#eae8e8"
},
- "Content.background": "#EEEEEE",
+ "Content": {
+ "background": "#F4F4F4",
+ "selectionBackground": "#80CBC4"
+ },
"CheckBox": {
"background": "#FAFAFA",
"disabledText": "#D2D4D5",
@@ -89,6 +98,14 @@
"selectionBackground": "#80CBC4",
"selectionForeground": "#546e7a"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#546E7A",
+ "AccessEnabled": {
+ "accessDot": "#00BCD4",
+ "dropdownBorder": "#eae8e8",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#FAFAFA",
"foreground": "#546E7A",
@@ -104,17 +121,18 @@
},
"background": "#FAFAFA",
"buttonBackground": "#F3F4F5",
+ "darcula.hoveredArrowButtonForeground": "#00BCD4",
"disabledForeground": "#D2D4D5",
"foreground": "#546E7A",
"modifiedItemForeground": "#00BCD4",
- "nonEditableBackground": "#FFFFFF",
+ "nonEditableBackground": "#eae8e8",
"padding": "5,5,5,5",
"selectionBackground": "#E7E7E8",
"selectionForeground": "#546e7a"
},
"ComboPopup.border": "#d3e1e8",
"CompletionPopup": {
- "background": "#FFFFFF",
+ "background": "#eae8e8",
"foreground": "#546E7A",
"infoForeground": "#94A7B0",
"matchForeground": "#00BCD4",
@@ -168,11 +186,13 @@
"hoverBackground": "#E7E7E8",
"hoverColor": "#FAFAFA",
"hoverMaskColor": "#E7E7E8",
+ "inactiveColoredTabBackground": "#FAFAFA",
"inactiveColoredFileBackground": "#F3F4F5",
- "inactiveUnderlineColor": "#D2D4D5",
+ "inactiveUnderlineColor": "#00BCD4",
"inactiveMaskColor": "#FAFAFA",
"underlineColor": "#00BCD4",
- "underlinedTabBackground": "#E7E7E8"
+ "underlinedTabBackground": "#E7E7E8",
+ "underlinedTabForeground": "#546e7a"
},
"Desktop.background": "#FAFAFA",
"DialogWrapper.southPanelBackground": "#FAFAFA",
@@ -197,20 +217,22 @@
"selectionForeground": "#546e7a"
},
"EditorTabs": {
- "borderColor": "#FFFFFF",
+ "borderColor": "#eae8e8",
+ "hoverBackground": "#E7E7E8",
"hoverColor": "#E7E7E8",
"hoverMaskColor": "#E7E7E8",
"inactiveMaskColor": "#FAFAFA",
- "inactiveColoredFileBackground": "#FAFAFA2",
+ "inactiveColoredFileBackground": "#FAFAFA",
"inactiveUnderlineColor": "#D2D4D5",
"selectedForeground": "#546E7A",
"selectedBackground": "#E7E7E8",
"underlineColor": "#00BCD4",
- "underlinedTabBackground": "#E7E7E8"
+ "underlinedTabBackground": "#E7E7E8",
+ "underlinedTabForeground": "#546e7a"
},
"EditorGroupsTabs": {
"background": "#FAFAFA",
- "borderColor": "#FFFFFF",
+ "borderColor": "#eae8e8",
"hoverBackground": "#E7E7E8",
"hoverColor": "#E7E7E8",
"inactiveUnderlineColor": "#00BCD4",
@@ -221,7 +243,7 @@
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#CCD7DA",
+ "Yellow": "#eae8e8",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -246,17 +268,18 @@
"selectionForeground": "#546e7a",
"selectionBackground": "#E7E7E8"
},
+ "GotItTooltip.borderColor": "#eae8e8",
"Group": {
"disabledSeparatorColor": "#d3e1e8",
"separatorColor": "#d3e1e8"
},
"GutterTooltip": {
- "infoForeground": "#546E7A",
+ "infoForeground": "#94A7B0",
"lineSeparatorColor": "#FAFAFA"
},
"HeaderColor": {
"active": "#FAFAFA",
- "inactive": "#EEEEEE"
+ "inactive": "#F4F4F4"
},
"HelpTooltip": {
"background": "#FAFAFA",
@@ -266,7 +289,7 @@
"shortcutForeground": "#94A7B0"
},
"Hyperlink.linkColor": "#00BCD4",
- "inactiveCaption": "#FFFFFF",
+ "inactiveCaption": "#eae8e8",
"inactiveCaptionBorder": "#FAFAFA",
"inactiveCaptionText": "#94A7B0",
"info": "#94A7B0",
@@ -288,7 +311,8 @@
"disabledText": "#D2D4D5",
"foreground": "#546E7A",
"infoForeground": "#94A7B0",
- "selectedForeground": "#546e7a"
+ "selectedForeground": "#546e7a",
+ "selectedDisabledForeground": "#546E7A"
},
"Link": {
"activeForeground": "#00BCD4",
@@ -299,17 +323,19 @@
},
"link.foreground": "#00BCD4",
"List": {
- "background": "#FFFFFF",
+ "background": "#eae8e8",
"foreground": "#546E7A",
+ "hoverBackground": "#80CBC480",
+ "hoverInactiveBackground": "#E7E7E8",
"selectionBackground": "#80CBC450",
"selectionForeground": "#546e7a",
"selectionInactiveForeground": "#546e7a",
- "selectionInactiveBackground": "#80CBC440"
+ "selectionInactiveBackground": "#80CBC480"
},
"material": {
"background": "#FAFAFA",
"branchColor": "#546E7A",
- "contrast": "#EEEEEE",
+ "contrast": "#F4F4F4",
"foreground": "#546E7A",
"mergeCommits": "#F3F4F5",
"primaryColor": "#94A7B0",
@@ -319,7 +345,7 @@
"tagColor": "#94A7B0"
},
"MemoryIndicator": {
- "allocatedBackground": "#FFFFFF",
+ "allocatedBackground": "#eae8e8",
"usedColor": "#E7E7E8",
"usedBackground": "#E7E7E8"
},
@@ -328,8 +354,8 @@
"acceleratorSelectionForeground": "#546e7a",
"background": "#FAFAFA",
"border": "4,2,4,2",
- "borderColor": "#FFFFFF",
- "disabledBackground": "#FFFFFF",
+ "borderColor": "#eae8e8",
+ "disabledBackground": "#eae8e8",
"disabledForeground": "#D2D4D5",
"foreground": "#546E7A",
"selectionBackground": "#80CBC4",
@@ -407,7 +433,7 @@
"foreground": "#546E7A"
},
"ParameterInfo": {
- "background": "#FFFFFF",
+ "background": "#eae8e8",
"borderColor": "#E7E7E8",
"currentOverloadBackground": "#E7E7E8",
"currentParameterForeground": "#00BCD4",
@@ -429,7 +455,8 @@
"background": "#FAFAFA",
"disabledForeground": "#D2D4D5",
"eapTagBackground": "#E7E7E8",
- "lightSelectionBackground": "#80CBC4",
+ "hoverBackground": "#80CBC480",
+ "lightSelectionBackground": "#E7E7E8",
"paidTagBackground": "#E7E7E8",
"selectionBackground": "#80CBC4",
"tagForeground": "#00BCD4",
@@ -442,7 +469,7 @@
"installFocusedBackground": "#E7E7E8",
"installFillForeground": "#D2D4D5",
"installFillBackground": "#F3F4F5",
- "updateBackground": "#F3F4F5",
+ "updateBackground": "#00BCD4",
"updateBorderColor": "#F3F4F5",
"updateForeground": "#546E7A"
},
@@ -451,7 +478,7 @@
"borderColor": "#d3e1e8"
},
"SectionHeader": {
- "background": "#FFFFFF",
+ "background": "#eae8e8",
"foreground": "#546E7A"
},
"Tab": {
@@ -466,20 +493,20 @@
"borderColor": "#FAFAFA",
"foreground": "#00BCD4"
},
- "borderColor": "#EEEEEE",
+ "borderColor": "#F4F4F4",
"inactiveBorderColor": "#FAFAFA",
- "innerBorderColor": "#FFFFFF",
+ "innerBorderColor": "#eae8e8",
"Header": {
"activeBackground": "#FAFAFA",
- "inactiveBackground": "#EEEEEE"
+ "inactiveBackground": "#F4F4F4"
},
"paintBorder": true,
"separatorForeground": "#546E7A",
- "separatorColor": "#FFFFFF",
+ "separatorColor": "#eae8e8",
"Toolbar": {
- "Floating.background": "#EEEEEE",
- "background": "#EEEEEE",
- "borderColor": "#EEEEEE"
+ "Floating.background": "#F4F4F4",
+ "background": "#F4F4F4",
+ "borderColor": "#F4F4F4"
}
},
"PopupMenu": {
@@ -517,6 +544,7 @@
"selectionBackground": "#80CBC4",
"selectionForeground": "#546e7a"
},
+ "ScreenView.borderColor": "#d3e1e8",
"ScrollBar": {
"background": "#FAFAFA",
"hoverThumbBorderColor": "#00BCD4",
@@ -553,7 +581,7 @@
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"foreground": "#94A7B0"
},
"Header": {
@@ -565,7 +593,7 @@
},
"SearchField": {
"background": "#FAFAFA",
- "borderColor": "#EEEEEE",
+ "borderColor": "#F4F4F4",
"infoForeground": "#94A7B0"
},
"Tab": {
@@ -576,13 +604,22 @@
},
"SearchMatch": {
"endBackground": "#00BCD4",
- "startBackground": "#00BCD4"
+ "startBackground": "#00BCD4",
+ "endColor": "#00BCD4",
+ "startColor": "#00BCD4"
},
"SearchField.errorBackground": "#eae8e8",
+ "SearchOption": {
+ "selectedBackground": "#E7E7E8"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#94A7B0",
+ "Repeated.File.Foreground": "#546E7A"
+ },
"Separator": {
- "background": "#FFFFFF",
- "foreground": "#FFFFFF",
- "separatorColor": "#FFFFFF"
+ "background": "#eae8e8",
+ "foreground": "#eae8e8",
+ "separatorColor": "#eae8e8"
},
"SidePanel": {
"background": "#FAFAFA"
@@ -593,7 +630,7 @@
"buttonColor": "#00BCD4",
"foreground": "#546E7A",
"majorTickLength": 6,
- "tickColor": "#FFFFFF",
+ "tickColor": "#eae8e8",
"trackColor": "#E7E7E8",
"trackWidth": 7,
"thumb": "#00BCD4"
@@ -614,9 +651,11 @@
"background": "#FAFAFA",
"highlight": "#FAFAFA"
},
- "SplitPaneDivider.draggingColor": "#FFFFFF",
+ "SplitPaneDivider.draggingColor": "#eae8e8",
"StatusBar": {
- "borderColor": "#FAFAFA"
+ "borderColor": "#FAFAFA",
+ "hoverBackground": "#E7E7E8",
+ "LightEditBackground": "#E7E7E8"
},
"TabbedPane": {
"background": "#FAFAFA",
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#FAFAFA",
"Table": {
+ "alternativeRowBackground": "#F4F4F4",
"background": "#FAFAFA",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#D2D4D5",
"dropLineColor": "#00BCD4",
"dropLineShortColor": "#00BCD4",
"focusCellBackground": "#E7E7E8",
@@ -653,27 +694,29 @@
"foreground": "#546E7A",
"gridColor": "#FAFAFA",
"highlightOuter": "#E7E7E8",
+ "hoverBackground": "#80CBC480",
+ "hoverInactiveBackground": "#E7E7E8",
"lightSelectionForeground": "#546e7a",
"lightSelectionInactiveForeground": "#94A7B0",
- "lightSelectionInactiveBackground": "#FFFFFF",
+ "lightSelectionInactiveBackground": "#eae8e8",
"selectionBackground": "#E7E7E8",
"selectionForeground": "#546e7a",
"selectionInactiveBackground": "#E7E7E8",
"selectionInactiveForeground": "#546e7a",
"sortIconColor": "#546E7A",
- "stripeColor": "#EEEEEE"
+ "stripeColor": "#F4F4F4"
},
"TableHeader": {
"background": "#FAFAFA",
"borderColor": "#FAFAFA",
- "bottomSeparatorColor": "#FFFFFF",
+ "bottomSeparatorColor": "#eae8e8",
"cellBorder": "4,0,4,0",
"disabledForeground": "#D2D4D5",
"foreground": "#546E7A",
"focusCellBackground": "#E7E7E8",
"focusCellForeground": "#546e7a",
"height": 25,
- "separatorColor": "#FFFFFF"
+ "separatorColor": "#eae8e8"
},
"text": "#94A7B0",
"textInactiveText": "#94A7B0",
@@ -703,7 +746,7 @@
"selectionForeground": "#546e7a"
},
"TitlePane": {
- "background": "#EEEEEE",
+ "background": "#F4F4F4",
"Button.hoverBackground": "#E7E7E8",
"inactiveBackground": "#FAFAFA",
"infoForeground": "#94A7B0",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#FAFAFA",
"Actions.infoForeground": "#94A7B0",
- "background": "#FAFAFA",
- "borderColor": "#E7E7E8",
+ "background": "#eae8e8",
+ "borderColor": "#d3e1e8",
"foreground": "#546E7A",
"infoForeground": "#94A7B0",
"separatorColor": "#d3e1e8",
@@ -740,61 +783,104 @@
"Button": {
"hoverBackground": "#E7E7E8",
"selectedForeground": "#546e7a",
- "selectedBackground": "#EEEEEE"
+ "selectedBackground": "#F4F4F4"
},
"Header": {
"background": "#FAFAFA",
- "borderColor": "#FFFFFF",
+ "borderColor": "#eae8e8",
"inactiveBackground": "#FAFAFA"
},
"HeaderCloseButton": {
"background": "#FAFAFA"
},
"HeaderTab": {
+ "borderColor": "#E7E7E8",
"hoverBackground": "#E7E7E8",
- "hoverInactiveBackground": "#FFFFFF",
+ "hoverInactiveBackground": "#E7E7E8",
"inactiveUnderlineColor": "#00BCD4",
- "selectedBackground": "#EEEEEE",
- "selectedInactiveBackground": "#EEEEEE",
+ "selectedBackground": "#F4F4F4",
+ "selectedInactiveBackground": "#F4F4F4",
"underlineColor": "#00BCD4",
"underlinedTabBackground": "#E7E7E8",
- "underlinedTabInactiveBackground": "#FFFFFF"
+ "underlinedTabInactiveBackground": "#eae8e8",
+ "underlinedTabForeground": "#546e7a",
+ "underlinedTabInactiveForeground": "#546E7A"
}
},
"Tree": {
"background": "#FAFAFA",
"foreground": "#94A7B0",
"hash": "#d3e1e8",
+ "hoverBackground": "#80CBC480",
+ "hoverInactiveBackground": "#E7E7E8",
"modifiedItemForeground": "#00BCD4",
"rowHeight": 28,
- "selectionBackground": "#80CBC440",
+ "selectionBackground": "#80CBC480",
"selectionForeground": "#546e7a",
"selectionInactiveForeground": "#546e7a",
- "selectionInactiveBackground": "#80CBC440",
+ "selectionInactiveBackground": "#80CBC480",
"textBackground": "#FAFAFA"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#d3e1e8",
- "ColorPicker.background": "#FAFAFA",
- "ColorPicker.foreground": "#546E7A",
- "Component.borderColor": "#d3e1e8",
- "Component.background": "#FAFAFA",
- "Component.foreground": "#546E7A",
- "Connector.borderColor": "#d3e1e8",
- "Connector.hoverBorderColor": "#E7E7E8",
- "Canvas.background": "#EEEEEE",
+ "Canvas.background": "#F4F4F4",
+ "ColorPicker": {
+ "background": "#FAFAFA",
+ "foreground": "#546E7A"
+ },
+ "Component": {
+ "borderColor": "#d3e1e8",
+ "background": "#FAFAFA",
+ "foreground": "#546E7A",
+ "hoverBorderColor": "#E7E7E8"
+ },
+ "Connector": {
+ "borderColor": "#d3e1e8",
+ "hoverBorderColor": "#E7E7E8"
+ },
+ "Canvas.background": "#F4F4F4",
"highStroke.foreground": "#546E7A",
"Label.foreground": "#94A7B0",
- "List.selectionBackground": "#80CBC440",
- "Panel.borderColor": "#d3e1e8",
- "Panel.background": "#FAFAFA",
+ "List.selectionBackground": "#80CBC480",
+ "motion": {
+ "borderColor": "#d3e1e8",
+ "Component.foreground": "#546E7A",
+ "ConstraintSetText.foreground": "#94A7B0",
+ "ConstraintSet.background": "#eae8e8",
+ "CSPanel.SelectedFocusBackground": "#80CBC4",
+ "CSPanel.SelectedBackground": "#80CBC480",
+ "cs_FocusText.infoForeground": "#94A7B0",
+ "CursorTextColor.foreground": "#546E7A",
+ "HoverColor.disabledBackground": "#D2D4D5",
+ "motionGraph.background": "#FAFAFA",
+ "Notification.background": "#eae8e8",
+ "ourAvg.background": "#eae8e8",
+ "ourCS.background": "#eae8e8",
+ "ourCS_Border.borderColor": "#d3e1e8",
+ "ourCS_TextColor.foreground": "#94A7B0",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#546e7a",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#E7E7E8",
+ "ourCS_SelectedBorder.pressedBorderColor": "#E7E7E8",
+ "ourML_BarColor.separatorColor": "#d3e1e8",
+ "PrimaryPanel.background": "#F4F4F4",
+ "SecondaryPanel.background": "#FAFAFA",
+ "SecondaryPanel.header.foreground": "#94A7B0",
+ "SecondaryPanel.header.background": "#F4F4F4",
+ "timeLine.disabledBorderColor": "#d3e1e8"
+ },
+ "Panel": {
+ "borderColor": "#d3e1e8",
+ "background": "#FAFAFA"
+ },
"percent.foreground": "#546E7A",
- "Placeholder.background": "#FAFAFA",
- "Placeholder.borderColor": "#d3e1e8",
- "Placeholder.foreground": "#546E7A",
- "Placeholder.selectedForeground": "#546e7a",
+ "Placeholder": {
+ "background": "#FAFAFA",
+ "borderColor": "#d3e1e8",
+ "foreground": "#546E7A",
+ "selectedForeground": "#546e7a"
+ },
"Preview.background": "#FAFAFA",
"stroke.acceleratorForeground": "#94A7B0"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#94A7B0",
- "Commit.currentBranchBackground": "#FFFFFF"
+ "Commit.currentBranchBackground": "#eae8e8",
+ "Commit.hoveredBackground": "#80CBC480"
},
"RefLabel": {
"foreground": "#546e7a",
@@ -840,19 +927,25 @@
"foreground": "#546E7A"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#FAFAFA",
"background": "#FAFAFA",
"borderColor": "#FAFAFA",
- "captionBackground": "#EEEEEE",
+ "captionBackground": "#F4F4F4",
"captionForeground": "#546E7A",
- "footerBackground": "#EEEEEE",
+ "Details.background": "#FAFAFA",
+ "footerBackground": "#F4F4F4",
"footerForeground": "#546E7A",
"headerBackground": "#FAFAFA",
"headerForeground": "#546E7A",
+ "List.background": "#F4F4F4",
"separatorColor": "#d3e1e8",
+ "SidePanel.background": "#eae8e8",
"Projects": {
- "background": "#FFFFFF",
+ "actions.background": "#F4F4F4",
+ "actions.selectionBackground": "#E7E7E8",
+ "background": "#eae8e8",
"selectionBackground": "#80CBC4",
- "selectionInactiveBackground": "#FFFFFF"
+ "selectionInactiveBackground": "#eae8e8"
}
},
"window": "#FAFAFA",
@@ -862,7 +955,7 @@
},
"icons": {
"ColorPalette": {
- "#43494A": "#EEEEEE",
+ "#43494A": "#F4F4F4",
"#6B6B6B": "#94A7B0",
"#A7A7A7": "#FAFAFA",
"#3D6185": "#00BCD4",
@@ -879,10 +972,10 @@
"Actions.GreyInline.Dark": "#546E7A",
"Actions.Red": "#E53935",
"Actions.Yellow": "#F6A434",
- "Checkbox.Background.Default": "#EEEEEE",
- "Checkbox.Background.Default.Dark": "#EEEEEE",
- "Checkbox.Background.Disabled": "#CCD7DA",
- "Checkbox.Background.Disabled.Dark": "#CCD7DA",
+ "Checkbox.Background.Default": "#F4F4F4",
+ "Checkbox.Background.Default.Dark": "#F4F4F4",
+ "Checkbox.Background.Disabled": "#eae8e8",
+ "Checkbox.Background.Disabled.Dark": "#eae8e8",
"Checkbox.Border.Default": "#d3e1e8",
"Checkbox.Border.Default.Dark": "#d3e1e8",
"Checkbox.Border.Disabled": "#D2D4D5",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic Contrast.theme.json
index 9e8d0483..18d32596 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic Contrast.theme.json
@@ -3,6 +3,12 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Material Oceanic.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/oceanic.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#607D8B",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#2A373E",
"Tooltip.background": "#1E272C"
},
- "Content.background": "#1E272C",
+ "Content": {
+ "background": "#1E272C",
+ "selectionBackground": "#546E7A"
+ },
"CheckBox": {
"background": "#263238",
"disabledText": "#415967",
@@ -89,6 +98,14 @@
"selectionBackground": "#546E7A",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#B0BEC5",
+ "AccessEnabled": {
+ "accessDot": "#009688",
+ "dropdownBorder": "#32424A",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#263238",
"foreground": "#B0BEC5",
@@ -104,6 +121,7 @@
},
"background": "#1E272C",
"buttonBackground": "#2E3C43",
+ "darcula.hoveredArrowButtonForeground": "#009688",
"disabledForeground": "#415967",
"foreground": "#B0BEC5",
"modifiedItemForeground": "#009688",
@@ -168,11 +186,13 @@
"hoverBackground": "#314549",
"hoverColor": "#1E272C",
"hoverMaskColor": "#425B67",
+ "inactiveColoredTabBackground": "#263238",
"inactiveColoredFileBackground": "#2E3C43",
- "inactiveUnderlineColor": "#415967",
+ "inactiveUnderlineColor": "#009688",
"inactiveMaskColor": "#1E272C",
"underlineColor": "#009688",
- "underlinedTabBackground": "#314549"
+ "underlinedTabBackground": "#314549",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#263238",
"DialogWrapper.southPanelBackground": "#263238",
@@ -198,15 +218,17 @@
},
"EditorTabs": {
"borderColor": "#32424A",
+ "hoverBackground": "#425B67",
"hoverColor": "#425B67",
"hoverMaskColor": "#425B67",
"inactiveMaskColor": "#263238",
- "inactiveColoredFileBackground": "#2632382",
+ "inactiveColoredFileBackground": "#263238",
"inactiveUnderlineColor": "#415967",
"selectedForeground": "#B0BEC5",
"selectedBackground": "#314549",
"underlineColor": "#009688",
- "underlinedTabBackground": "#314549"
+ "underlinedTabBackground": "#314549",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#263238",
@@ -246,12 +268,13 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#314549"
},
+ "GotItTooltip.borderColor": "#1E272C",
"Group": {
"disabledSeparatorColor": "#2A373E",
"separatorColor": "#2A373E"
},
"GutterTooltip": {
- "infoForeground": "#B0BEC5",
+ "infoForeground": "#607D8B",
"lineSeparatorColor": "#263238"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#415967",
"foreground": "#B0BEC5",
"infoForeground": "#607D8B",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#B0BEC5"
},
"Link": {
"activeForeground": "#009688",
@@ -301,10 +325,12 @@
"List": {
"background": "#32424A",
"foreground": "#B0BEC5",
+ "hoverBackground": "#546E7A70",
+ "hoverInactiveBackground": "#314549",
"selectionBackground": "#546E7A50",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#546E7A50"
+ "selectionInactiveBackground": "#546E7A70"
},
"material": {
"background": "#263238",
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#32424A",
"borderColor": "#314549",
- "currentOverloadBackground": "#314549",
+ "currentOverloadBackground": "#425B67",
"currentParameterForeground": "#009688",
"disabledForeground": "#415967",
"foreground": "#B0BEC5",
@@ -429,7 +455,8 @@
"background": "#263238",
"disabledForeground": "#415967",
"eapTagBackground": "#425B67",
- "lightSelectionBackground": "#546E7A",
+ "hoverBackground": "#546E7A70",
+ "lightSelectionBackground": "#314549",
"paidTagBackground": "#425B67",
"selectionBackground": "#546E7A",
"tagForeground": "#009688",
@@ -442,7 +469,7 @@
"installFocusedBackground": "#425B67",
"installFillForeground": "#415967",
"installFillBackground": "#2E3C43",
- "updateBackground": "#2E3C43",
+ "updateBackground": "#009688",
"updateBorderColor": "#2E3C43",
"updateForeground": "#B0BEC5"
},
@@ -517,6 +544,7 @@
"selectionBackground": "#546E7A",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#2A373E",
"ScrollBar": {
"background": "#263238",
"hoverThumbBorderColor": "#009688",
@@ -576,9 +604,18 @@
},
"SearchMatch": {
"endBackground": "#009688",
- "startBackground": "#009688"
+ "startBackground": "#009688",
+ "endColor": "#009688",
+ "startColor": "#009688"
},
"SearchField.errorBackground": "#1E272C",
+ "SearchOption": {
+ "selectedBackground": "#314549"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#607D8B",
+ "Repeated.File.Foreground": "#B0BEC5"
+ },
"Separator": {
"background": "#32424A",
"foreground": "#32424A",
@@ -616,7 +653,9 @@
},
"SplitPaneDivider.draggingColor": "#32424A",
"StatusBar": {
- "borderColor": "#263238"
+ "borderColor": "#263238",
+ "hoverBackground": "#425B67",
+ "LightEditBackground": "#314549"
},
"TabbedPane": {
"background": "#263238",
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#1E272C",
"Table": {
+ "alternativeRowBackground": "#1E272C",
"background": "#263238",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#415967",
"dropLineColor": "#009688",
"dropLineShortColor": "#009688",
"focusCellBackground": "#314549",
@@ -653,6 +694,8 @@
"foreground": "#B0BEC5",
"gridColor": "#263238",
"highlightOuter": "#314549",
+ "hoverBackground": "#546E7A70",
+ "hoverInactiveBackground": "#314549",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#607D8B",
"lightSelectionInactiveBackground": "#32424A",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#263238",
"Actions.infoForeground": "#607D8B",
- "background": "#263238",
- "borderColor": "#425B67",
+ "background": "#1E272C",
+ "borderColor": "#2A373E",
"foreground": "#B0BEC5",
"infoForeground": "#607D8B",
"separatorColor": "#2A373E",
@@ -751,50 +794,93 @@
"background": "#263238"
},
"HeaderTab": {
+ "borderColor": "#425B67",
"hoverBackground": "#425B67",
- "hoverInactiveBackground": "#32424A",
+ "hoverInactiveBackground": "#425B67",
"inactiveUnderlineColor": "#009688",
"selectedBackground": "#1E272C",
"selectedInactiveBackground": "#1E272C",
"underlineColor": "#009688",
- "underlinedTabBackground": "#425B67",
- "underlinedTabInactiveBackground": "#32424A"
+ "underlinedTabBackground": "#314549",
+ "underlinedTabInactiveBackground": "#32424A",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#B0BEC5"
}
},
"Tree": {
"background": "#1E272C",
"foreground": "#607D8B",
"hash": "#2A373E",
+ "hoverBackground": "#546E7A70",
+ "hoverInactiveBackground": "#314549",
"modifiedItemForeground": "#009688",
"rowHeight": 28,
- "selectionBackground": "#546E7A50",
+ "selectionBackground": "#546E7A70",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#546E7A50",
+ "selectionInactiveBackground": "#546E7A70",
"textBackground": "#1E272C"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#2A373E",
- "ColorPicker.background": "#263238",
- "ColorPicker.foreground": "#B0BEC5",
- "Component.borderColor": "#2A373E",
- "Component.background": "#263238",
- "Component.foreground": "#B0BEC5",
- "Connector.borderColor": "#2A373E",
- "Connector.hoverBorderColor": "#425B67",
+ "Canvas.background": "#1E272C",
+ "ColorPicker": {
+ "background": "#263238",
+ "foreground": "#B0BEC5"
+ },
+ "Component": {
+ "borderColor": "#2A373E",
+ "background": "#263238",
+ "foreground": "#B0BEC5",
+ "hoverBorderColor": "#425B67"
+ },
+ "Connector": {
+ "borderColor": "#2A373E",
+ "hoverBorderColor": "#425B67"
+ },
"Canvas.background": "#1E272C",
"highStroke.foreground": "#B0BEC5",
"Label.foreground": "#607D8B",
- "List.selectionBackground": "#546E7A50",
- "Panel.borderColor": "#2A373E",
- "Panel.background": "#263238",
+ "List.selectionBackground": "#546E7A70",
+ "motion": {
+ "borderColor": "#2A373E",
+ "Component.foreground": "#B0BEC5",
+ "ConstraintSetText.foreground": "#607D8B",
+ "ConstraintSet.background": "#32424A",
+ "CSPanel.SelectedFocusBackground": "#546E7A",
+ "CSPanel.SelectedBackground": "#546E7A70",
+ "cs_FocusText.infoForeground": "#607D8B",
+ "CursorTextColor.foreground": "#B0BEC5",
+ "HoverColor.disabledBackground": "#415967",
+ "motionGraph.background": "#263238",
+ "Notification.background": "#1E272C",
+ "ourAvg.background": "#32424A",
+ "ourCS.background": "#32424A",
+ "ourCS_Border.borderColor": "#2A373E",
+ "ourCS_TextColor.foreground": "#607D8B",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#314549",
+ "ourCS_SelectedBorder.pressedBorderColor": "#425B67",
+ "ourML_BarColor.separatorColor": "#2A373E",
+ "PrimaryPanel.background": "#1E272C",
+ "SecondaryPanel.background": "#263238",
+ "SecondaryPanel.header.foreground": "#607D8B",
+ "SecondaryPanel.header.background": "#1E272C",
+ "timeLine.disabledBorderColor": "#2A373E"
+ },
+ "Panel": {
+ "borderColor": "#2A373E",
+ "background": "#263238"
+ },
"percent.foreground": "#B0BEC5",
- "Placeholder.background": "#263238",
- "Placeholder.borderColor": "#2A373E",
- "Placeholder.foreground": "#B0BEC5",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#263238",
+ "borderColor": "#2A373E",
+ "foreground": "#B0BEC5",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#263238",
"stroke.acceleratorForeground": "#607D8B"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#607D8B",
- "Commit.currentBranchBackground": "#32424A"
+ "Commit.currentBranchBackground": "#32424A",
+ "Commit.hoveredBackground": "#546E7A70"
},
"RefLabel": {
"foreground": "#FFFFFF",
@@ -840,16 +927,22 @@
"foreground": "#B0BEC5"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#263238",
"background": "#263238",
"borderColor": "#263238",
"captionBackground": "#1E272C",
"captionForeground": "#B0BEC5",
+ "Details.background": "#263238",
"footerBackground": "#1E272C",
"footerForeground": "#B0BEC5",
"headerBackground": "#263238",
"headerForeground": "#B0BEC5",
+ "List.background": "#1E272C",
"separatorColor": "#2A373E",
+ "SidePanel.background": "#32424A",
"Projects": {
+ "actions.background": "#1E272C",
+ "actions.selectionBackground": "#425B67",
"background": "#32424A",
"selectionBackground": "#546E7A",
"selectionInactiveBackground": "#32424A"
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic.theme.json
index 40f47454..282c2029 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Oceanic.theme.json
@@ -3,6 +3,12 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Material Oceanic.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/oceanic.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#607D8B",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#2A373E",
"Tooltip.background": "#1E272C"
},
- "Content.background": "#1E272C",
+ "Content": {
+ "background": "#1E272C",
+ "selectionBackground": "#546E7A"
+ },
"CheckBox": {
"background": "#263238",
"disabledText": "#415967",
@@ -89,6 +98,14 @@
"selectionBackground": "#546E7A",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#B0BEC5",
+ "AccessEnabled": {
+ "accessDot": "#009688",
+ "dropdownBorder": "#32424A",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#263238",
"foreground": "#B0BEC5",
@@ -104,6 +121,7 @@
},
"background": "#263238",
"buttonBackground": "#2E3C43",
+ "darcula.hoveredArrowButtonForeground": "#009688",
"disabledForeground": "#415967",
"foreground": "#B0BEC5",
"modifiedItemForeground": "#009688",
@@ -168,11 +186,13 @@
"hoverBackground": "#314549",
"hoverColor": "#263238",
"hoverMaskColor": "#425B67",
+ "inactiveColoredTabBackground": "#263238",
"inactiveColoredFileBackground": "#2E3C43",
- "inactiveUnderlineColor": "#415967",
+ "inactiveUnderlineColor": "#009688",
"inactiveMaskColor": "#263238",
"underlineColor": "#009688",
- "underlinedTabBackground": "#314549"
+ "underlinedTabBackground": "#314549",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#263238",
"DialogWrapper.southPanelBackground": "#263238",
@@ -198,15 +218,17 @@
},
"EditorTabs": {
"borderColor": "#32424A",
+ "hoverBackground": "#425B67",
"hoverColor": "#425B67",
"hoverMaskColor": "#425B67",
"inactiveMaskColor": "#263238",
- "inactiveColoredFileBackground": "#2632382",
+ "inactiveColoredFileBackground": "#263238",
"inactiveUnderlineColor": "#415967",
"selectedForeground": "#B0BEC5",
"selectedBackground": "#314549",
"underlineColor": "#009688",
- "underlinedTabBackground": "#314549"
+ "underlinedTabBackground": "#314549",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#263238",
@@ -246,12 +268,13 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#314549"
},
+ "GotItTooltip.borderColor": "#1E272C",
"Group": {
"disabledSeparatorColor": "#2A373E",
"separatorColor": "#2A373E"
},
"GutterTooltip": {
- "infoForeground": "#B0BEC5",
+ "infoForeground": "#607D8B",
"lineSeparatorColor": "#263238"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#415967",
"foreground": "#B0BEC5",
"infoForeground": "#607D8B",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#B0BEC5"
},
"Link": {
"activeForeground": "#009688",
@@ -301,10 +325,12 @@
"List": {
"background": "#32424A",
"foreground": "#B0BEC5",
+ "hoverBackground": "#546E7A70",
+ "hoverInactiveBackground": "#314549",
"selectionBackground": "#546E7A50",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#546E7A50"
+ "selectionInactiveBackground": "#546E7A70"
},
"material": {
"background": "#263238",
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#32424A",
"borderColor": "#314549",
- "currentOverloadBackground": "#314549",
+ "currentOverloadBackground": "#425B67",
"currentParameterForeground": "#009688",
"disabledForeground": "#415967",
"foreground": "#B0BEC5",
@@ -429,7 +455,8 @@
"background": "#263238",
"disabledForeground": "#415967",
"eapTagBackground": "#425B67",
- "lightSelectionBackground": "#546E7A",
+ "hoverBackground": "#546E7A70",
+ "lightSelectionBackground": "#314549",
"paidTagBackground": "#425B67",
"selectionBackground": "#546E7A",
"tagForeground": "#009688",
@@ -442,7 +469,7 @@
"installFocusedBackground": "#425B67",
"installFillForeground": "#415967",
"installFillBackground": "#2E3C43",
- "updateBackground": "#2E3C43",
+ "updateBackground": "#009688",
"updateBorderColor": "#2E3C43",
"updateForeground": "#B0BEC5"
},
@@ -517,6 +544,7 @@
"selectionBackground": "#546E7A",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#2A373E",
"ScrollBar": {
"background": "#263238",
"hoverThumbBorderColor": "#009688",
@@ -576,9 +604,18 @@
},
"SearchMatch": {
"endBackground": "#009688",
- "startBackground": "#009688"
+ "startBackground": "#009688",
+ "endColor": "#009688",
+ "startColor": "#009688"
},
"SearchField.errorBackground": "#1E272C",
+ "SearchOption": {
+ "selectedBackground": "#314549"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#607D8B",
+ "Repeated.File.Foreground": "#B0BEC5"
+ },
"Separator": {
"background": "#32424A",
"foreground": "#32424A",
@@ -616,7 +653,9 @@
},
"SplitPaneDivider.draggingColor": "#32424A",
"StatusBar": {
- "borderColor": "#263238"
+ "borderColor": "#263238",
+ "hoverBackground": "#425B67",
+ "LightEditBackground": "#314549"
},
"TabbedPane": {
"background": "#263238",
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#263238",
"Table": {
+ "alternativeRowBackground": "#1E272C",
"background": "#263238",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#415967",
"dropLineColor": "#009688",
"dropLineShortColor": "#009688",
"focusCellBackground": "#314549",
@@ -653,6 +694,8 @@
"foreground": "#B0BEC5",
"gridColor": "#263238",
"highlightOuter": "#314549",
+ "hoverBackground": "#546E7A70",
+ "hoverInactiveBackground": "#314549",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#607D8B",
"lightSelectionInactiveBackground": "#32424A",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#263238",
"Actions.infoForeground": "#607D8B",
- "background": "#263238",
- "borderColor": "#425B67",
+ "background": "#1E272C",
+ "borderColor": "#2A373E",
"foreground": "#B0BEC5",
"infoForeground": "#607D8B",
"separatorColor": "#2A373E",
@@ -751,50 +794,93 @@
"background": "#263238"
},
"HeaderTab": {
+ "borderColor": "#425B67",
"hoverBackground": "#425B67",
- "hoverInactiveBackground": "#32424A",
+ "hoverInactiveBackground": "#425B67",
"inactiveUnderlineColor": "#009688",
"selectedBackground": "#1E272C",
"selectedInactiveBackground": "#1E272C",
"underlineColor": "#009688",
- "underlinedTabBackground": "#425B67",
- "underlinedTabInactiveBackground": "#32424A"
+ "underlinedTabBackground": "#314549",
+ "underlinedTabInactiveBackground": "#32424A",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#B0BEC5"
}
},
"Tree": {
"background": "#263238",
"foreground": "#607D8B",
"hash": "#2A373E",
+ "hoverBackground": "#546E7A70",
+ "hoverInactiveBackground": "#314549",
"modifiedItemForeground": "#009688",
"rowHeight": 28,
- "selectionBackground": "#546E7A50",
+ "selectionBackground": "#546E7A70",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#546E7A50",
+ "selectionInactiveBackground": "#546E7A70",
"textBackground": "#263238"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#2A373E",
- "ColorPicker.background": "#263238",
- "ColorPicker.foreground": "#B0BEC5",
- "Component.borderColor": "#2A373E",
- "Component.background": "#263238",
- "Component.foreground": "#B0BEC5",
- "Connector.borderColor": "#2A373E",
- "Connector.hoverBorderColor": "#425B67",
+ "Canvas.background": "#1E272C",
+ "ColorPicker": {
+ "background": "#263238",
+ "foreground": "#B0BEC5"
+ },
+ "Component": {
+ "borderColor": "#2A373E",
+ "background": "#263238",
+ "foreground": "#B0BEC5",
+ "hoverBorderColor": "#425B67"
+ },
+ "Connector": {
+ "borderColor": "#2A373E",
+ "hoverBorderColor": "#425B67"
+ },
"Canvas.background": "#1E272C",
"highStroke.foreground": "#B0BEC5",
"Label.foreground": "#607D8B",
- "List.selectionBackground": "#546E7A50",
- "Panel.borderColor": "#2A373E",
- "Panel.background": "#263238",
+ "List.selectionBackground": "#546E7A70",
+ "motion": {
+ "borderColor": "#2A373E",
+ "Component.foreground": "#B0BEC5",
+ "ConstraintSetText.foreground": "#607D8B",
+ "ConstraintSet.background": "#32424A",
+ "CSPanel.SelectedFocusBackground": "#546E7A",
+ "CSPanel.SelectedBackground": "#546E7A70",
+ "cs_FocusText.infoForeground": "#607D8B",
+ "CursorTextColor.foreground": "#B0BEC5",
+ "HoverColor.disabledBackground": "#415967",
+ "motionGraph.background": "#263238",
+ "Notification.background": "#1E272C",
+ "ourAvg.background": "#32424A",
+ "ourCS.background": "#32424A",
+ "ourCS_Border.borderColor": "#2A373E",
+ "ourCS_TextColor.foreground": "#607D8B",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#314549",
+ "ourCS_SelectedBorder.pressedBorderColor": "#425B67",
+ "ourML_BarColor.separatorColor": "#2A373E",
+ "PrimaryPanel.background": "#1E272C",
+ "SecondaryPanel.background": "#263238",
+ "SecondaryPanel.header.foreground": "#607D8B",
+ "SecondaryPanel.header.background": "#1E272C",
+ "timeLine.disabledBorderColor": "#2A373E"
+ },
+ "Panel": {
+ "borderColor": "#2A373E",
+ "background": "#263238"
+ },
"percent.foreground": "#B0BEC5",
- "Placeholder.background": "#263238",
- "Placeholder.borderColor": "#2A373E",
- "Placeholder.foreground": "#B0BEC5",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#263238",
+ "borderColor": "#2A373E",
+ "foreground": "#B0BEC5",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#263238",
"stroke.acceleratorForeground": "#607D8B"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#607D8B",
- "Commit.currentBranchBackground": "#32424A"
+ "Commit.currentBranchBackground": "#32424A",
+ "Commit.hoveredBackground": "#546E7A70"
},
"RefLabel": {
"foreground": "#FFFFFF",
@@ -840,16 +927,22 @@
"foreground": "#B0BEC5"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#263238",
"background": "#263238",
"borderColor": "#263238",
"captionBackground": "#1E272C",
"captionForeground": "#B0BEC5",
+ "Details.background": "#263238",
"footerBackground": "#1E272C",
"footerForeground": "#B0BEC5",
"headerBackground": "#263238",
"headerForeground": "#B0BEC5",
+ "List.background": "#1E272C",
"separatorColor": "#2A373E",
+ "SidePanel.background": "#32424A",
"Projects": {
+ "actions.background": "#1E272C",
+ "actions.selectionBackground": "#425B67",
"background": "#32424A",
"selectionBackground": "#546E7A",
"selectionInactiveBackground": "#32424A"
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight Contrast.theme.json
index d08262df..53cc05eb 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight Contrast.theme.json
@@ -3,6 +3,12 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Material Palenight.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/palenight.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#676E95",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#2b2a3e",
"Tooltip.background": "#202331"
},
- "Content.background": "#202331",
+ "Content": {
+ "background": "#202331",
+ "selectionBackground": "#3C435E"
+ },
"CheckBox": {
"background": "#292D3E",
"disabledText": "#515772",
@@ -89,6 +98,14 @@
"selectionBackground": "#3C435E",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#A6ACCD",
+ "AccessEnabled": {
+ "accessDot": "#ab47bc",
+ "dropdownBorder": "#34324a",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#292D3E",
"foreground": "#A6ACCD",
@@ -104,6 +121,7 @@
},
"background": "#202331",
"buttonBackground": "#303348",
+ "darcula.hoveredArrowButtonForeground": "#ab47bc",
"disabledForeground": "#515772",
"foreground": "#A6ACCD",
"modifiedItemForeground": "#ab47bc",
@@ -168,11 +186,13 @@
"hoverBackground": "#414863",
"hoverColor": "#202331",
"hoverMaskColor": "#444267",
+ "inactiveColoredTabBackground": "#292D3E",
"inactiveColoredFileBackground": "#303348",
- "inactiveUnderlineColor": "#515772",
+ "inactiveUnderlineColor": "#ab47bc",
"inactiveMaskColor": "#202331",
"underlineColor": "#ab47bc",
- "underlinedTabBackground": "#414863"
+ "underlinedTabBackground": "#414863",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#292D3E",
"DialogWrapper.southPanelBackground": "#292D3E",
@@ -198,15 +218,17 @@
},
"EditorTabs": {
"borderColor": "#34324a",
+ "hoverBackground": "#444267",
"hoverColor": "#444267",
"hoverMaskColor": "#444267",
"inactiveMaskColor": "#292D3E",
- "inactiveColoredFileBackground": "#292D3E2",
+ "inactiveColoredFileBackground": "#292D3E",
"inactiveUnderlineColor": "#515772",
"selectedForeground": "#A6ACCD",
"selectedBackground": "#414863",
"underlineColor": "#ab47bc",
- "underlinedTabBackground": "#414863"
+ "underlinedTabBackground": "#414863",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#292D3E",
@@ -246,12 +268,13 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#414863"
},
+ "GotItTooltip.borderColor": "#202331",
"Group": {
"disabledSeparatorColor": "#2b2a3e",
"separatorColor": "#2b2a3e"
},
"GutterTooltip": {
- "infoForeground": "#A6ACCD",
+ "infoForeground": "#676E95",
"lineSeparatorColor": "#292D3E"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#515772",
"foreground": "#A6ACCD",
"infoForeground": "#676E95",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#A6ACCD"
},
"Link": {
"activeForeground": "#ab47bc",
@@ -301,10 +325,12 @@
"List": {
"background": "#34324a",
"foreground": "#A6ACCD",
+ "hoverBackground": "#676E9570",
+ "hoverInactiveBackground": "#414863",
"selectionBackground": "#3C435E50",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#676E9550"
+ "selectionInactiveBackground": "#676E9570"
},
"material": {
"background": "#292D3E",
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#34324a",
"borderColor": "#414863",
- "currentOverloadBackground": "#414863",
+ "currentOverloadBackground": "#444267",
"currentParameterForeground": "#ab47bc",
"disabledForeground": "#515772",
"foreground": "#A6ACCD",
@@ -429,7 +455,8 @@
"background": "#292D3E",
"disabledForeground": "#515772",
"eapTagBackground": "#444267",
- "lightSelectionBackground": "#3C435E",
+ "hoverBackground": "#676E9570",
+ "lightSelectionBackground": "#414863",
"paidTagBackground": "#444267",
"selectionBackground": "#3C435E",
"tagForeground": "#ab47bc",
@@ -442,7 +469,7 @@
"installFocusedBackground": "#444267",
"installFillForeground": "#515772",
"installFillBackground": "#303348",
- "updateBackground": "#303348",
+ "updateBackground": "#ab47bc",
"updateBorderColor": "#303348",
"updateForeground": "#A6ACCD"
},
@@ -517,6 +544,7 @@
"selectionBackground": "#3C435E",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#2b2a3e",
"ScrollBar": {
"background": "#292D3E",
"hoverThumbBorderColor": "#ab47bc",
@@ -576,9 +604,18 @@
},
"SearchMatch": {
"endBackground": "#ab47bc",
- "startBackground": "#ab47bc"
+ "startBackground": "#ab47bc",
+ "endColor": "#ab47bc",
+ "startColor": "#ab47bc"
},
"SearchField.errorBackground": "#202331",
+ "SearchOption": {
+ "selectedBackground": "#414863"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#676E95",
+ "Repeated.File.Foreground": "#A6ACCD"
+ },
"Separator": {
"background": "#34324a",
"foreground": "#34324a",
@@ -616,7 +653,9 @@
},
"SplitPaneDivider.draggingColor": "#34324a",
"StatusBar": {
- "borderColor": "#292D3E"
+ "borderColor": "#292D3E",
+ "hoverBackground": "#444267",
+ "LightEditBackground": "#414863"
},
"TabbedPane": {
"background": "#292D3E",
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#202331",
"Table": {
+ "alternativeRowBackground": "#202331",
"background": "#292D3E",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#515772",
"dropLineColor": "#ab47bc",
"dropLineShortColor": "#ab47bc",
"focusCellBackground": "#414863",
@@ -653,6 +694,8 @@
"foreground": "#A6ACCD",
"gridColor": "#292D3E",
"highlightOuter": "#414863",
+ "hoverBackground": "#676E9570",
+ "hoverInactiveBackground": "#414863",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#676E95",
"lightSelectionInactiveBackground": "#34324a",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#292D3E",
"Actions.infoForeground": "#676E95",
- "background": "#292D3E",
- "borderColor": "#444267",
+ "background": "#202331",
+ "borderColor": "#2b2a3e",
"foreground": "#A6ACCD",
"infoForeground": "#676E95",
"separatorColor": "#2b2a3e",
@@ -751,50 +794,93 @@
"background": "#292D3E"
},
"HeaderTab": {
+ "borderColor": "#444267",
"hoverBackground": "#444267",
- "hoverInactiveBackground": "#34324a",
+ "hoverInactiveBackground": "#444267",
"inactiveUnderlineColor": "#ab47bc",
"selectedBackground": "#202331",
"selectedInactiveBackground": "#202331",
"underlineColor": "#ab47bc",
- "underlinedTabBackground": "#444267",
- "underlinedTabInactiveBackground": "#34324a"
+ "underlinedTabBackground": "#414863",
+ "underlinedTabInactiveBackground": "#34324a",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#A6ACCD"
}
},
"Tree": {
"background": "#202331",
"foreground": "#676E95",
"hash": "#2b2a3e",
+ "hoverBackground": "#676E9570",
+ "hoverInactiveBackground": "#414863",
"modifiedItemForeground": "#ab47bc",
"rowHeight": 28,
- "selectionBackground": "#676E9550",
+ "selectionBackground": "#676E9570",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#676E9550",
+ "selectionInactiveBackground": "#676E9570",
"textBackground": "#202331"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#2b2a3e",
- "ColorPicker.background": "#292D3E",
- "ColorPicker.foreground": "#A6ACCD",
- "Component.borderColor": "#2b2a3e",
- "Component.background": "#292D3E",
- "Component.foreground": "#A6ACCD",
- "Connector.borderColor": "#2b2a3e",
- "Connector.hoverBorderColor": "#444267",
+ "Canvas.background": "#202331",
+ "ColorPicker": {
+ "background": "#292D3E",
+ "foreground": "#A6ACCD"
+ },
+ "Component": {
+ "borderColor": "#2b2a3e",
+ "background": "#292D3E",
+ "foreground": "#A6ACCD",
+ "hoverBorderColor": "#444267"
+ },
+ "Connector": {
+ "borderColor": "#2b2a3e",
+ "hoverBorderColor": "#444267"
+ },
"Canvas.background": "#202331",
"highStroke.foreground": "#A6ACCD",
"Label.foreground": "#676E95",
- "List.selectionBackground": "#676E9550",
- "Panel.borderColor": "#2b2a3e",
- "Panel.background": "#292D3E",
+ "List.selectionBackground": "#676E9570",
+ "motion": {
+ "borderColor": "#2b2a3e",
+ "Component.foreground": "#A6ACCD",
+ "ConstraintSetText.foreground": "#676E95",
+ "ConstraintSet.background": "#34324a",
+ "CSPanel.SelectedFocusBackground": "#3C435E",
+ "CSPanel.SelectedBackground": "#676E9570",
+ "cs_FocusText.infoForeground": "#676E95",
+ "CursorTextColor.foreground": "#A6ACCD",
+ "HoverColor.disabledBackground": "#515772",
+ "motionGraph.background": "#292D3E",
+ "Notification.background": "#202331",
+ "ourAvg.background": "#34324a",
+ "ourCS.background": "#34324a",
+ "ourCS_Border.borderColor": "#2b2a3e",
+ "ourCS_TextColor.foreground": "#676E95",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#414863",
+ "ourCS_SelectedBorder.pressedBorderColor": "#444267",
+ "ourML_BarColor.separatorColor": "#2b2a3e",
+ "PrimaryPanel.background": "#202331",
+ "SecondaryPanel.background": "#292D3E",
+ "SecondaryPanel.header.foreground": "#676E95",
+ "SecondaryPanel.header.background": "#202331",
+ "timeLine.disabledBorderColor": "#2b2a3e"
+ },
+ "Panel": {
+ "borderColor": "#2b2a3e",
+ "background": "#292D3E"
+ },
"percent.foreground": "#A6ACCD",
- "Placeholder.background": "#292D3E",
- "Placeholder.borderColor": "#2b2a3e",
- "Placeholder.foreground": "#A6ACCD",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#292D3E",
+ "borderColor": "#2b2a3e",
+ "foreground": "#A6ACCD",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#292D3E",
"stroke.acceleratorForeground": "#676E95"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#676E95",
- "Commit.currentBranchBackground": "#34324a"
+ "Commit.currentBranchBackground": "#34324a",
+ "Commit.hoveredBackground": "#676E9570"
},
"RefLabel": {
"foreground": "#FFFFFF",
@@ -840,16 +927,22 @@
"foreground": "#A6ACCD"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#292D3E",
"background": "#292D3E",
"borderColor": "#292D3E",
"captionBackground": "#202331",
"captionForeground": "#A6ACCD",
+ "Details.background": "#292D3E",
"footerBackground": "#202331",
"footerForeground": "#A6ACCD",
"headerBackground": "#292D3E",
"headerForeground": "#A6ACCD",
+ "List.background": "#202331",
"separatorColor": "#2b2a3e",
+ "SidePanel.background": "#34324a",
"Projects": {
+ "actions.background": "#202331",
+ "actions.selectionBackground": "#444267",
"background": "#34324a",
"selectionBackground": "#3C435E",
"selectionInactiveBackground": "#34324a"
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight.theme.json
index bf0aec6f..f2713f13 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Material Palenight.theme.json
@@ -3,6 +3,12 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Material Palenight.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/palenight.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#676E95",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#2b2a3e",
"Tooltip.background": "#202331"
},
- "Content.background": "#202331",
+ "Content": {
+ "background": "#202331",
+ "selectionBackground": "#3C435E"
+ },
"CheckBox": {
"background": "#292D3E",
"disabledText": "#515772",
@@ -89,6 +98,14 @@
"selectionBackground": "#3C435E",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#A6ACCD",
+ "AccessEnabled": {
+ "accessDot": "#ab47bc",
+ "dropdownBorder": "#34324a",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#292D3E",
"foreground": "#A6ACCD",
@@ -104,6 +121,7 @@
},
"background": "#292D3E",
"buttonBackground": "#303348",
+ "darcula.hoveredArrowButtonForeground": "#ab47bc",
"disabledForeground": "#515772",
"foreground": "#A6ACCD",
"modifiedItemForeground": "#ab47bc",
@@ -168,11 +186,13 @@
"hoverBackground": "#414863",
"hoverColor": "#292D3E",
"hoverMaskColor": "#444267",
+ "inactiveColoredTabBackground": "#292D3E",
"inactiveColoredFileBackground": "#303348",
- "inactiveUnderlineColor": "#515772",
+ "inactiveUnderlineColor": "#ab47bc",
"inactiveMaskColor": "#292D3E",
"underlineColor": "#ab47bc",
- "underlinedTabBackground": "#414863"
+ "underlinedTabBackground": "#414863",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#292D3E",
"DialogWrapper.southPanelBackground": "#292D3E",
@@ -198,15 +218,17 @@
},
"EditorTabs": {
"borderColor": "#34324a",
+ "hoverBackground": "#444267",
"hoverColor": "#444267",
"hoverMaskColor": "#444267",
"inactiveMaskColor": "#292D3E",
- "inactiveColoredFileBackground": "#292D3E2",
+ "inactiveColoredFileBackground": "#292D3E",
"inactiveUnderlineColor": "#515772",
"selectedForeground": "#A6ACCD",
"selectedBackground": "#414863",
"underlineColor": "#ab47bc",
- "underlinedTabBackground": "#414863"
+ "underlinedTabBackground": "#414863",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#292D3E",
@@ -246,12 +268,13 @@
"selectionForeground": "#FFFFFF",
"selectionBackground": "#414863"
},
+ "GotItTooltip.borderColor": "#202331",
"Group": {
"disabledSeparatorColor": "#2b2a3e",
"separatorColor": "#2b2a3e"
},
"GutterTooltip": {
- "infoForeground": "#A6ACCD",
+ "infoForeground": "#676E95",
"lineSeparatorColor": "#292D3E"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#515772",
"foreground": "#A6ACCD",
"infoForeground": "#676E95",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#A6ACCD"
},
"Link": {
"activeForeground": "#ab47bc",
@@ -301,10 +325,12 @@
"List": {
"background": "#34324a",
"foreground": "#A6ACCD",
+ "hoverBackground": "#676E9570",
+ "hoverInactiveBackground": "#414863",
"selectionBackground": "#3C435E50",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#676E9550"
+ "selectionInactiveBackground": "#676E9570"
},
"material": {
"background": "#292D3E",
@@ -409,7 +435,7 @@
"ParameterInfo": {
"background": "#34324a",
"borderColor": "#414863",
- "currentOverloadBackground": "#414863",
+ "currentOverloadBackground": "#444267",
"currentParameterForeground": "#ab47bc",
"disabledForeground": "#515772",
"foreground": "#A6ACCD",
@@ -429,7 +455,8 @@
"background": "#292D3E",
"disabledForeground": "#515772",
"eapTagBackground": "#444267",
- "lightSelectionBackground": "#3C435E",
+ "hoverBackground": "#676E9570",
+ "lightSelectionBackground": "#414863",
"paidTagBackground": "#444267",
"selectionBackground": "#3C435E",
"tagForeground": "#ab47bc",
@@ -442,7 +469,7 @@
"installFocusedBackground": "#444267",
"installFillForeground": "#515772",
"installFillBackground": "#303348",
- "updateBackground": "#303348",
+ "updateBackground": "#ab47bc",
"updateBorderColor": "#303348",
"updateForeground": "#A6ACCD"
},
@@ -517,6 +544,7 @@
"selectionBackground": "#3C435E",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#2b2a3e",
"ScrollBar": {
"background": "#292D3E",
"hoverThumbBorderColor": "#ab47bc",
@@ -576,9 +604,18 @@
},
"SearchMatch": {
"endBackground": "#ab47bc",
- "startBackground": "#ab47bc"
+ "startBackground": "#ab47bc",
+ "endColor": "#ab47bc",
+ "startColor": "#ab47bc"
},
"SearchField.errorBackground": "#202331",
+ "SearchOption": {
+ "selectedBackground": "#414863"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#676E95",
+ "Repeated.File.Foreground": "#A6ACCD"
+ },
"Separator": {
"background": "#34324a",
"foreground": "#34324a",
@@ -616,7 +653,9 @@
},
"SplitPaneDivider.draggingColor": "#34324a",
"StatusBar": {
- "borderColor": "#292D3E"
+ "borderColor": "#292D3E",
+ "hoverBackground": "#444267",
+ "LightEditBackground": "#414863"
},
"TabbedPane": {
"background": "#292D3E",
@@ -643,9 +682,11 @@
},
"TabbedPane.mt.tab.background": "#292D3E",
"Table": {
+ "alternativeRowBackground": "#202331",
"background": "#292D3E",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#515772",
"dropLineColor": "#ab47bc",
"dropLineShortColor": "#ab47bc",
"focusCellBackground": "#414863",
@@ -653,6 +694,8 @@
"foreground": "#A6ACCD",
"gridColor": "#292D3E",
"highlightOuter": "#414863",
+ "hoverBackground": "#676E9570",
+ "hoverInactiveBackground": "#414863",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#676E95",
"lightSelectionInactiveBackground": "#34324a",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#292D3E",
"Actions.infoForeground": "#676E95",
- "background": "#292D3E",
- "borderColor": "#444267",
+ "background": "#202331",
+ "borderColor": "#2b2a3e",
"foreground": "#A6ACCD",
"infoForeground": "#676E95",
"separatorColor": "#2b2a3e",
@@ -751,50 +794,93 @@
"background": "#292D3E"
},
"HeaderTab": {
+ "borderColor": "#444267",
"hoverBackground": "#444267",
- "hoverInactiveBackground": "#34324a",
+ "hoverInactiveBackground": "#444267",
"inactiveUnderlineColor": "#ab47bc",
"selectedBackground": "#202331",
"selectedInactiveBackground": "#202331",
"underlineColor": "#ab47bc",
- "underlinedTabBackground": "#444267",
- "underlinedTabInactiveBackground": "#34324a"
+ "underlinedTabBackground": "#414863",
+ "underlinedTabInactiveBackground": "#34324a",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#A6ACCD"
}
},
"Tree": {
"background": "#292D3E",
"foreground": "#676E95",
"hash": "#2b2a3e",
+ "hoverBackground": "#676E9570",
+ "hoverInactiveBackground": "#414863",
"modifiedItemForeground": "#ab47bc",
"rowHeight": 28,
- "selectionBackground": "#676E9550",
+ "selectionBackground": "#676E9570",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#676E9550",
+ "selectionInactiveBackground": "#676E9570",
"textBackground": "#292D3E"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#2b2a3e",
- "ColorPicker.background": "#292D3E",
- "ColorPicker.foreground": "#A6ACCD",
- "Component.borderColor": "#2b2a3e",
- "Component.background": "#292D3E",
- "Component.foreground": "#A6ACCD",
- "Connector.borderColor": "#2b2a3e",
- "Connector.hoverBorderColor": "#444267",
+ "Canvas.background": "#202331",
+ "ColorPicker": {
+ "background": "#292D3E",
+ "foreground": "#A6ACCD"
+ },
+ "Component": {
+ "borderColor": "#2b2a3e",
+ "background": "#292D3E",
+ "foreground": "#A6ACCD",
+ "hoverBorderColor": "#444267"
+ },
+ "Connector": {
+ "borderColor": "#2b2a3e",
+ "hoverBorderColor": "#444267"
+ },
"Canvas.background": "#202331",
"highStroke.foreground": "#A6ACCD",
"Label.foreground": "#676E95",
- "List.selectionBackground": "#676E9550",
- "Panel.borderColor": "#2b2a3e",
- "Panel.background": "#292D3E",
+ "List.selectionBackground": "#676E9570",
+ "motion": {
+ "borderColor": "#2b2a3e",
+ "Component.foreground": "#A6ACCD",
+ "ConstraintSetText.foreground": "#676E95",
+ "ConstraintSet.background": "#34324a",
+ "CSPanel.SelectedFocusBackground": "#3C435E",
+ "CSPanel.SelectedBackground": "#676E9570",
+ "cs_FocusText.infoForeground": "#676E95",
+ "CursorTextColor.foreground": "#A6ACCD",
+ "HoverColor.disabledBackground": "#515772",
+ "motionGraph.background": "#292D3E",
+ "Notification.background": "#202331",
+ "ourAvg.background": "#34324a",
+ "ourCS.background": "#34324a",
+ "ourCS_Border.borderColor": "#2b2a3e",
+ "ourCS_TextColor.foreground": "#676E95",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#414863",
+ "ourCS_SelectedBorder.pressedBorderColor": "#444267",
+ "ourML_BarColor.separatorColor": "#2b2a3e",
+ "PrimaryPanel.background": "#202331",
+ "SecondaryPanel.background": "#292D3E",
+ "SecondaryPanel.header.foreground": "#676E95",
+ "SecondaryPanel.header.background": "#202331",
+ "timeLine.disabledBorderColor": "#2b2a3e"
+ },
+ "Panel": {
+ "borderColor": "#2b2a3e",
+ "background": "#292D3E"
+ },
"percent.foreground": "#A6ACCD",
- "Placeholder.background": "#292D3E",
- "Placeholder.borderColor": "#2b2a3e",
- "Placeholder.foreground": "#A6ACCD",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#292D3E",
+ "borderColor": "#2b2a3e",
+ "foreground": "#A6ACCD",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#292D3E",
"stroke.acceleratorForeground": "#676E95"
},
@@ -828,7 +914,8 @@
},
"Log": {
"Commit.unmatchedForeground": "#676E95",
- "Commit.currentBranchBackground": "#34324a"
+ "Commit.currentBranchBackground": "#34324a",
+ "Commit.hoveredBackground": "#676E9570"
},
"RefLabel": {
"foreground": "#FFFFFF",
@@ -840,16 +927,22 @@
"foreground": "#A6ACCD"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#292D3E",
"background": "#292D3E",
"borderColor": "#292D3E",
"captionBackground": "#202331",
"captionForeground": "#A6ACCD",
+ "Details.background": "#292D3E",
"footerBackground": "#202331",
"footerForeground": "#A6ACCD",
"headerBackground": "#292D3E",
"headerForeground": "#A6ACCD",
+ "List.background": "#202331",
"separatorColor": "#2b2a3e",
+ "SidePanel.background": "#34324a",
"Projects": {
+ "actions.background": "#202331",
+ "actions.selectionBackground": "#444267",
"background": "#34324a",
"selectionBackground": "#3C435E",
"selectionInactiveBackground": "#34324a"
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro Contrast.theme.json
index b16896d9..f9a4b449 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro Contrast.theme.json
@@ -3,21 +3,27 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Monokai Pro.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/monokai.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#939293",
"background": "#2D2A2E",
"borderColor": "#2d2a2e",
"disabledBackground": "#3a3a3c",
- "disabledForeground": "#5b595c",
- "disabledText": "#5b595c",
+ "disabledForeground": "#727072",
+ "disabledText": "#727072",
"focusColor": "#5b595c",
"focusedBorderColor": "#ffd866",
"foreground": "#fcfcfa",
"inactiveBackground": "#3a3a3c",
"inactiveForeground": "#939293",
"infoForeground": "#939293",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionBackgroundInactive": "#403E41",
"selectionForeground": "#FFFFFF",
"selectionInactiveBackground": "#403E41",
@@ -33,7 +39,7 @@
"pressedBorderColor": "#ffd86650"
},
"Autocomplete": {
- "selectionBackground": "#6E6C6F"
+ "selectionBackground": "#5B595C"
},
"Borders.ContrastBorderColor": "#2D2A2E",
"Borders.color": "#2d2a2e",
@@ -43,7 +49,7 @@
"default": {
"endBackground": "#4A474B",
"endBorderColor": "#4A474B",
- "foreground": "#ffd866",
+ "foreground": "#FFFFFF",
"focusColor": "#ffd866",
"focusedBorderColor": "#ffd866",
"shadowColor": "#4A474B",
@@ -51,7 +57,7 @@
"startBorderColor": "#4A474B"
},
"disabledBorderColor": "#403E41",
- "disabledText": "#5b595c",
+ "disabledText": "#727072",
"endBackground": "#403E41",
"endBorderColor": "#403E41",
"focus": "#5b595c",
@@ -72,10 +78,13 @@
"Tooltip.borderColor": "#2d2a2e",
"Tooltip.background": "#363437"
},
- "Content.background": "#3a3a3c",
+ "Content": {
+ "background": "#221F22",
+ "selectionBackground": "#5B595C"
+ },
"CheckBox": {
"background": "#2D2A2E",
- "disabledText": "#5b595c",
+ "disabledText": "#727072",
"foreground": "#fcfcfa",
"select": "#ffd866"
},
@@ -84,10 +93,18 @@
"acceleratorSelectionForeground": "#939293",
"background": "#2D2A2E",
"disabledBackground": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
- "selectionBackground": "#6E6C6F",
- "selectionForeground": "#ffd866"
+ "selectionBackground": "#5B595C",
+ "selectionForeground": "#FFFFFF"
+ },
+ "CodeWithMe": {
+ "Avatar.foreground": "#fcfcfa",
+ "AccessEnabled": {
+ "accessDot": "#ffd866",
+ "dropdownBorder": "#403E41",
+ "pillBackground": "$second"
+ }
},
"ColorChooser": {
"background": "#2D2A2E",
@@ -98,19 +115,20 @@
"ComboBox": {
"ArrowButton": {
"background": "#403E41",
- "disabledIconColor": "#5b595c",
+ "disabledIconColor": "#727072",
"iconColor": "#fcfcfa",
"nonEditableBackground": "#2D2A2E"
},
- "background": "#3a3a3c",
+ "background": "#221F22",
"buttonBackground": "#403E41",
- "disabledForeground": "#5b595c",
+ "darcula.hoveredArrowButtonForeground": "#ffd866",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
"modifiedItemForeground": "#ffd866",
"nonEditableBackground": "#403E41",
"padding": "5,5,5,5",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"ComboPopup.border": "#2d2a2e",
"CompletionPopup": {
@@ -123,8 +141,8 @@
"selectedGrayedForeground": "#FFFFFF",
"selectionGrayForeground": "#FFFFFF",
"selectionInactiveInfoForeground": "#939293",
- "selectionInactiveBackground": "#6E6C6F50",
- "selectionBackground": "#6E6C6F80",
+ "selectionInactiveBackground": "#5B595C50",
+ "selectionBackground": "#5B595C80",
"selectionForeground": "#FFFFFF",
"selectionInfoForeground": "#FFFFFF"
},
@@ -166,13 +184,15 @@
"background": "#2D2A2E",
"borderColor": "#2D2A2E",
"hoverBackground": "#4A474B",
- "hoverColor": "#3a3a3c",
+ "hoverColor": "#221F22",
"hoverMaskColor": "#5b595c",
+ "inactiveColoredTabBackground": "#2D2A2E",
"inactiveColoredFileBackground": "#403E41",
- "inactiveUnderlineColor": "#5b595c",
- "inactiveMaskColor": "#3a3a3c",
+ "inactiveUnderlineColor": "#ffd866",
+ "inactiveMaskColor": "#221F22",
"underlineColor": "#ffd866",
- "underlinedTabBackground": "#4A474B"
+ "underlinedTabBackground": "#4A474B",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#2D2A2E",
"DialogWrapper.southPanelBackground": "#2D2A2E",
@@ -183,30 +203,32 @@
"areaForeground": "#fcfcfa"
},
"Editor": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"foreground": "#fcfcfa",
"shortcutForeground": "#939293"
},
"EditorPane": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
"inactiveBackground": "#2D2A2E",
- "inactiveForeground": "#5b595c",
- "selectionBackground": "#6E6C6F",
- "selectionForeground": "#ffd866"
+ "inactiveForeground": "#727072",
+ "selectionBackground": "#5B595C",
+ "selectionForeground": "#FFFFFF"
},
"EditorTabs": {
"borderColor": "#403E41",
+ "hoverBackground": "#5b595c",
"hoverColor": "#5b595c",
"hoverMaskColor": "#5b595c",
"inactiveMaskColor": "#2D2A2E",
- "inactiveColoredFileBackground": "#2D2A2E2",
- "inactiveUnderlineColor": "#5b595c",
+ "inactiveColoredFileBackground": "#2D2A2E",
+ "inactiveUnderlineColor": "#727072",
"selectedForeground": "#fcfcfa",
"selectedBackground": "#4A474B",
"underlineColor": "#ffd866",
- "underlinedTabBackground": "#4A474B"
+ "underlinedTabBackground": "#4A474B",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#2D2A2E",
@@ -238,25 +260,26 @@
},
"Focus.color": "#2d2a2e",
"FormattedTextField": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
"inactiveBackground": "#403E41",
- "inactiveForeground": "#5b595c",
- "selectionForeground": "#ffd866",
+ "inactiveForeground": "#727072",
+ "selectionForeground": "#FFFFFF",
"selectionBackground": "#4A474B"
},
+ "GotItTooltip.borderColor": "#363437",
"Group": {
"disabledSeparatorColor": "#2d2a2e",
"separatorColor": "#2d2a2e"
},
"GutterTooltip": {
- "infoForeground": "#fcfcfa",
+ "infoForeground": "#939293",
"lineSeparatorColor": "#2D2A2E"
},
"HeaderColor": {
"active": "#2D2A2E",
- "inactive": "#3a3a3c"
+ "inactive": "#221F22"
},
"HelpTooltip": {
"background": "#2D2A2E",
@@ -283,12 +306,13 @@
},
"Label": {
"background": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"disabledShadow": "#2D2A2E",
- "disabledText": "#5b595c",
+ "disabledText": "#727072",
"foreground": "#fcfcfa",
"infoForeground": "#939293",
- "selectedForeground": "#ffd866"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#fcfcfa"
},
"Link": {
"activeForeground": "#ffd866",
@@ -301,15 +325,17 @@
"List": {
"background": "#403E41",
"foreground": "#fcfcfa",
- "selectionBackground": "#6E6C6F50",
+ "hoverBackground": "#403E4170",
+ "hoverInactiveBackground": "#4A474B",
+ "selectionBackground": "#5B595C50",
"selectionForeground": "#FFFFFF",
- "selectionInactiveForeground": "#ffd866",
- "selectionInactiveBackground": "#403E41"
+ "selectionInactiveForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#403E4170"
},
"material": {
"background": "#2D2A2E",
"branchColor": "#fcfcfa",
- "contrast": "#3a3a3c",
+ "contrast": "#221F22",
"foreground": "#fcfcfa",
"mergeCommits": "#403E41",
"primaryColor": "#939293",
@@ -330,22 +356,22 @@
"border": "4,2,4,2",
"borderColor": "#403E41",
"disabledBackground": "#403E41",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionForeground": "#FFFFFF",
"separatorColor": "#2d2a2e"
},
"MenuBar": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"borderColor": "#2D2A2E",
"disabledBackground": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
"highlight": "#2D2A2E",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionForeground": "#FFFFFF",
- "shadow": "#3a3a3c"
+ "shadow": "#221F22"
},
"MenuItem": {
"acceleratorForeground": "#939293",
@@ -353,9 +379,9 @@
"border": "4,2,4,2",
"background": "#2D2A2E",
"disabledBackground": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionForeground": "#FFFFFF"
},
"NavBar": {
@@ -367,7 +393,7 @@
"background": "#2D2A2E"
},
"SearchField": {
- "background": "#3a3a3c"
+ "background": "#221F22"
}
},
"NewPSD.warning": "#ffd866",
@@ -400,7 +426,7 @@
"Outline": {
"color": "#403E41",
"focusedColor": "#ffd866",
- "disabledColor": "#5b595c"
+ "disabledColor": "#727072"
},
"Panel": {
"background": "#2D2A2E",
@@ -409,29 +435,30 @@
"ParameterInfo": {
"background": "#403E41",
"borderColor": "#4A474B",
- "currentOverloadBackground": "#4A474B",
+ "currentOverloadBackground": "#5b595c",
"currentParameterForeground": "#ffd866",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
"infoForeground": "#939293",
"lineSeparatorColor": "#4A474B"
},
"PasswordField": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"capsLockIconColor": "#ffd866",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
- "inactiveForeground": "#5b595c",
+ "inactiveForeground": "#727072",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"Plugins": {
"background": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"eapTagBackground": "#5b595c",
- "lightSelectionBackground": "#6E6C6F",
+ "hoverBackground": "#403E4170",
+ "lightSelectionBackground": "#4A474B",
"paidTagBackground": "#5b595c",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"tagForeground": "#ffd866",
"tagBackground": "#5b595c",
"trialTagBackground": "#5b595c",
@@ -440,14 +467,14 @@
"installBorderColor": "#403E41",
"installForeground": "#fcfcfa",
"installFocusedBackground": "#5b595c",
- "installFillForeground": "#5b595c",
+ "installFillForeground": "#727072",
"installFillBackground": "#403E41",
- "updateBackground": "#403E41",
+ "updateBackground": "#ffd866",
"updateBorderColor": "#403E41",
"updateForeground": "#fcfcfa"
},
"SearchField": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"borderColor": "#2d2a2e"
},
"SectionHeader": {
@@ -466,20 +493,20 @@
"borderColor": "#2D2A2E",
"foreground": "#ffd866"
},
- "borderColor": "#3a3a3c",
+ "borderColor": "#221F22",
"inactiveBorderColor": "#2D2A2E",
"innerBorderColor": "#403E41",
"Header": {
"activeBackground": "#2D2A2E",
- "inactiveBackground": "#3a3a3c"
+ "inactiveBackground": "#221F22"
},
"paintBorder": true,
"separatorForeground": "#fcfcfa",
"separatorColor": "#403E41",
"Toolbar": {
- "Floating.background": "#3a3a3c",
- "background": "#3a3a3c",
- "borderColor": "#3a3a3c"
+ "Floating.background": "#221F22",
+ "background": "#221F22",
+ "borderColor": "#221F22"
}
},
"PopupMenu": {
@@ -504,7 +531,7 @@
},
"RadioButton": {
"background": "#2D2A2E",
- "disabledText": "#5b595c",
+ "disabledText": "#727072",
"foreground": "#fcfcfa"
},
"RadioButtonMenuItem": {
@@ -512,11 +539,12 @@
"acceleratorSelectionForeground": "#939293",
"background": "#2D2A2E",
"disabledBackground": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#2d2a2e",
"ScrollBar": {
"background": "#2D2A2E",
"hoverThumbBorderColor": "#ffd866",
@@ -553,7 +581,7 @@
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"foreground": "#939293"
},
"Header": {
@@ -565,27 +593,36 @@
},
"SearchField": {
"background": "#2D2A2E",
- "borderColor": "#3a3a3c",
+ "borderColor": "#221F22",
"infoForeground": "#939293"
},
"Tab": {
- "active.foreground": "#ffd866",
- "selectedForeground": "#ffd866",
+ "active.foreground": "#FFFFFF",
+ "selectedForeground": "#FFFFFF",
"selectedBackground": "#5b595c"
}
},
"SearchMatch": {
"endBackground": "#ffd866",
- "startBackground": "#ffd866"
+ "startBackground": "#ffd866",
+ "endColor": "#ffd866",
+ "startColor": "#ffd866"
},
"SearchField.errorBackground": "#363437",
+ "SearchOption": {
+ "selectedBackground": "#4A474B"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#939293",
+ "Repeated.File.Foreground": "#fcfcfa"
+ },
"Separator": {
"background": "#403E41",
"foreground": "#403E41",
"separatorColor": "#403E41"
},
"SidePanel": {
- "background": "#3a3a3c"
+ "background": "#221F22"
},
"Slider": {
"background": "#2D2A2E",
@@ -608,23 +645,25 @@
"background": "#2D2A2E",
"border": "3,3,3,3",
"foreground": "#fcfcfa",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"SplitPane": {
"background": "#2D2A2E",
- "highlight": "#3a3a3c"
+ "highlight": "#221F22"
},
"SplitPaneDivider.draggingColor": "#403E41",
"StatusBar": {
- "borderColor": "#2D2A2E"
+ "borderColor": "#2D2A2E",
+ "hoverBackground": "#5b595c",
+ "LightEditBackground": "#4A474B"
},
"TabbedPane": {
"background": "#2D2A2E",
"contentAreaColor": "#5b595c",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#2d2a2e",
- "disabledForeground": "#5b595c",
- "disabledUnderlineColor": "#5b595c",
+ "disabledForeground": "#727072",
+ "disabledUnderlineColor": "#727072",
"focus": "#4A474B",
"focusColor": "#4A474B",
"fontSizeOffset": 0,
@@ -632,7 +671,7 @@
"highlight": "#2d2a2e",
"hoverColor": "#5b595c",
"labelShift": 0,
- "selectedForeground": "#ffd866",
+ "selectedForeground": "#FFFFFF",
"selectedLabelShift": 0,
"selectedTabPadInsets": "0,0,0,0",
"tabsOverlapBorder": true,
@@ -641,37 +680,41 @@
"tabSelectionHeight": 2,
"underlineColor": "#ffd866"
},
- "TabbedPane.mt.tab.background": "#3a3a3c",
+ "TabbedPane.mt.tab.background": "#221F22",
"Table": {
+ "alternativeRowBackground": "#221F22",
"background": "#2D2A2E",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#727072",
"dropLineColor": "#ffd866",
"dropLineShortColor": "#ffd866",
"focusCellBackground": "#4A474B",
- "focusCellForeground": "#ffd866",
+ "focusCellForeground": "#FFFFFF",
"foreground": "#fcfcfa",
"gridColor": "#2D2A2E",
"highlightOuter": "#4A474B",
- "lightSelectionForeground": "#ffd866",
+ "hoverBackground": "#403E4170",
+ "hoverInactiveBackground": "#4A474B",
+ "lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#939293",
"lightSelectionInactiveBackground": "#403E41",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866",
+ "selectionForeground": "#FFFFFF",
"selectionInactiveBackground": "#4A474B",
"selectionInactiveForeground": "#FFFFFF",
"sortIconColor": "#fcfcfa",
- "stripeColor": "#3a3a3c"
+ "stripeColor": "#221F22"
},
"TableHeader": {
"background": "#2D2A2E",
"borderColor": "#2D2A2E",
"bottomSeparatorColor": "#403E41",
"cellBorder": "4,0,4,0",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
"focusCellBackground": "#4A474B",
- "focusCellForeground": "#ffd866",
+ "focusCellForeground": "#FFFFFF",
"height": 25,
"separatorColor": "#403E41"
},
@@ -679,31 +722,31 @@
"textInactiveText": "#939293",
"textText": "#939293",
"TextArea": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
- "inactiveForeground": "#5b595c",
+ "inactiveForeground": "#727072",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"TextField": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
- "inactiveForeground": "#5b595c",
+ "inactiveForeground": "#727072",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"TextPane": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
- "inactiveForeground": "#5b595c",
+ "inactiveForeground": "#727072",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"TitlePane": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"Button.hoverBackground": "#5b595c",
"inactiveBackground": "#2D2A2E",
"infoForeground": "#939293",
@@ -713,7 +756,7 @@
"ToggleButton": {
"borderColor": "#403E41",
"buttonColor": "#fcfcfa",
- "disabledText": "#5b595c",
+ "disabledText": "#727072",
"foreground": "#fcfcfa",
"offForeground": "#2D2A2E",
"offBackground": "#2D2A2E",
@@ -721,7 +764,7 @@
"onForeground": "#ffd866"
},
"ToolBar": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"borderHandleColor": "#939293",
"floatingForeground": "#939293",
"foreground": "#fcfcfa"
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#2D2A2E",
"Actions.infoForeground": "#939293",
- "background": "#2D2A2E",
- "borderColor": "#5b595c",
+ "background": "#363437",
+ "borderColor": "#2d2a2e",
"foreground": "#fcfcfa",
"infoForeground": "#939293",
"separatorColor": "#2d2a2e",
@@ -739,8 +782,8 @@
"ToolWindow": {
"Button": {
"hoverBackground": "#4A474B",
- "selectedForeground": "#ffd866",
- "selectedBackground": "#3a3a3c"
+ "selectedForeground": "#FFFFFF",
+ "selectedBackground": "#221F22"
},
"Header": {
"background": "#2D2A2E",
@@ -751,50 +794,93 @@
"background": "#2D2A2E"
},
"HeaderTab": {
+ "borderColor": "#5b595c",
"hoverBackground": "#5b595c",
- "hoverInactiveBackground": "#403E41",
+ "hoverInactiveBackground": "#5b595c",
"inactiveUnderlineColor": "#ffd866",
- "selectedBackground": "#3a3a3c",
- "selectedInactiveBackground": "#3a3a3c",
+ "selectedBackground": "#221F22",
+ "selectedInactiveBackground": "#221F22",
"underlineColor": "#ffd866",
- "underlinedTabBackground": "#5b595c",
- "underlinedTabInactiveBackground": "#403E41"
+ "underlinedTabBackground": "#4A474B",
+ "underlinedTabInactiveBackground": "#403E41",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#fcfcfa"
}
},
"Tree": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"foreground": "#939293",
"hash": "#2d2a2e",
+ "hoverBackground": "#403E4170",
+ "hoverInactiveBackground": "#4A474B",
"modifiedItemForeground": "#ffd866",
"rowHeight": 28,
- "selectionBackground": "#403E41",
+ "selectionBackground": "#403E4170",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#403E41",
- "textBackground": "#3a3a3c"
+ "selectionInactiveBackground": "#403E4170",
+ "textBackground": "#221F22"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#2d2a2e",
- "ColorPicker.background": "#2D2A2E",
- "ColorPicker.foreground": "#fcfcfa",
- "Component.borderColor": "#2d2a2e",
- "Component.background": "#2D2A2E",
- "Component.foreground": "#fcfcfa",
- "Connector.borderColor": "#2d2a2e",
- "Connector.hoverBorderColor": "#5b595c",
- "Canvas.background": "#3a3a3c",
+ "Canvas.background": "#221F22",
+ "ColorPicker": {
+ "background": "#2D2A2E",
+ "foreground": "#fcfcfa"
+ },
+ "Component": {
+ "borderColor": "#2d2a2e",
+ "background": "#2D2A2E",
+ "foreground": "#fcfcfa",
+ "hoverBorderColor": "#5b595c"
+ },
+ "Connector": {
+ "borderColor": "#2d2a2e",
+ "hoverBorderColor": "#5b595c"
+ },
+ "Canvas.background": "#221F22",
"highStroke.foreground": "#fcfcfa",
"Label.foreground": "#939293",
- "List.selectionBackground": "#403E41",
- "Panel.borderColor": "#2d2a2e",
- "Panel.background": "#2D2A2E",
+ "List.selectionBackground": "#403E4170",
+ "motion": {
+ "borderColor": "#2d2a2e",
+ "Component.foreground": "#fcfcfa",
+ "ConstraintSetText.foreground": "#939293",
+ "ConstraintSet.background": "#403E41",
+ "CSPanel.SelectedFocusBackground": "#5B595C",
+ "CSPanel.SelectedBackground": "#403E4170",
+ "cs_FocusText.infoForeground": "#939293",
+ "CursorTextColor.foreground": "#fcfcfa",
+ "HoverColor.disabledBackground": "#727072",
+ "motionGraph.background": "#2D2A2E",
+ "Notification.background": "#363437",
+ "ourAvg.background": "#403E41",
+ "ourCS.background": "#403E41",
+ "ourCS_Border.borderColor": "#2d2a2e",
+ "ourCS_TextColor.foreground": "#939293",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#4A474B",
+ "ourCS_SelectedBorder.pressedBorderColor": "#5b595c",
+ "ourML_BarColor.separatorColor": "#2d2a2e",
+ "PrimaryPanel.background": "#221F22",
+ "SecondaryPanel.background": "#2D2A2E",
+ "SecondaryPanel.header.foreground": "#939293",
+ "SecondaryPanel.header.background": "#221F22",
+ "timeLine.disabledBorderColor": "#2d2a2e"
+ },
+ "Panel": {
+ "borderColor": "#2d2a2e",
+ "background": "#2D2A2E"
+ },
"percent.foreground": "#fcfcfa",
- "Placeholder.background": "#2D2A2E",
- "Placeholder.borderColor": "#2d2a2e",
- "Placeholder.foreground": "#fcfcfa",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#2D2A2E",
+ "borderColor": "#2d2a2e",
+ "foreground": "#fcfcfa",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#2D2A2E",
"stroke.acceleratorForeground": "#939293"
},
@@ -819,8 +905,8 @@
},
"HgLog": {
"branchIconColor": "#ffd866",
- "bookmarkIconColor": "#ffd866",
- "closedBranchIconColor": "#5b595c",
+ "bookmarkIconColor": "#FFFFFF",
+ "closedBranchIconColor": "#727072",
"localTagIconColor": "#939293",
"mqTagIconColor": "#939293",
"tagIconColor": "#939293",
@@ -828,48 +914,55 @@
},
"Log": {
"Commit.unmatchedForeground": "#939293",
- "Commit.currentBranchBackground": "#403E41"
+ "Commit.currentBranchBackground": "#403E41",
+ "Commit.hoveredBackground": "#403E4170"
},
"RefLabel": {
- "foreground": "#ffd866",
+ "foreground": "#FFFFFF",
"backgroundBase": "#5b595c"
}
},
"Viewport": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"foreground": "#fcfcfa"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#2D2A2E",
"background": "#2D2A2E",
"borderColor": "#2D2A2E",
- "captionBackground": "#3a3a3c",
+ "captionBackground": "#221F22",
"captionForeground": "#fcfcfa",
- "footerBackground": "#3a3a3c",
+ "Details.background": "#2D2A2E",
+ "footerBackground": "#221F22",
"footerForeground": "#fcfcfa",
"headerBackground": "#2D2A2E",
"headerForeground": "#fcfcfa",
+ "List.background": "#221F22",
"separatorColor": "#2d2a2e",
+ "SidePanel.background": "#403E41",
"Projects": {
+ "actions.background": "#221F22",
+ "actions.selectionBackground": "#5b595c",
"background": "#403E41",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionInactiveBackground": "#403E41"
}
},
- "window": "#3a3a3c",
+ "window": "#221F22",
"windowBorder": "#2d2a2e",
"windowText": "#939293",
"Window.border": "#2d2a2e"
},
"icons": {
"ColorPalette": {
- "#43494A": "#3a3a3c",
+ "#43494A": "#221F22",
"#6B6B6B": "#939293",
"#A7A7A7": "#2D2A2E",
"#3D6185": "#ffd866",
"#466D94": "#ffd866",
"#3C3F41": "#2D2A2E",
- "#545556": "#5b595c",
- "#606060": "#5b595c",
+ "#545556": "#727072",
+ "#606060": "#727072",
"#9AA7B0": "#fcfcfa",
"#675133": "#ffd866",
"Actions.Blue": "#A9DC76",
@@ -879,20 +972,20 @@
"Actions.GreyInline.Dark": "#fcfcfa",
"Actions.Red": "#FF6188",
"Actions.Yellow": "#78DCE8",
- "Checkbox.Background.Default": "#3a3a3c",
- "Checkbox.Background.Default.Dark": "#3a3a3c",
+ "Checkbox.Background.Default": "#221F22",
+ "Checkbox.Background.Default.Dark": "#221F22",
"Checkbox.Background.Disabled": "#3a3a3c",
"Checkbox.Background.Disabled.Dark": "#3a3a3c",
"Checkbox.Border.Default": "#2d2a2e",
"Checkbox.Border.Default.Dark": "#2d2a2e",
- "Checkbox.Border.Disabled": "#5b595c",
- "Checkbox.Border.Disabled.Dark": "#5b595c",
+ "Checkbox.Border.Disabled": "#727072",
+ "Checkbox.Border.Disabled.Dark": "#727072",
"Checkbox.Focus.Thin.Default": "#ffd866",
"Checkbox.Focus.Thin.Default.Dark": "#ffd866",
"Checkbox.Focus.Wide": "#ffd866",
"Checkbox.Focus.Wide.Dark": "#ffd866",
- "Checkbox.Foreground.Disabled": "#5b595c",
- "Checkbox.Foreground.Disabled.Dark": "#5b595c",
+ "Checkbox.Foreground.Disabled": "#727072",
+ "Checkbox.Foreground.Disabled.Dark": "#727072",
"Checkbox.Background.Selected": "#ffd866",
"Checkbox.Background.Selected.Dark": "#2D2A2E",
"Checkbox.Border.Selected": "#ffd866",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro.theme.json
index 9a71d591..cdeda171 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Monokai Pro.theme.json
@@ -3,21 +3,27 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Monokai Pro.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/monokai.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#939293",
"background": "#2D2A2E",
"borderColor": "#2d2a2e",
"disabledBackground": "#3a3a3c",
- "disabledForeground": "#5b595c",
- "disabledText": "#5b595c",
+ "disabledForeground": "#727072",
+ "disabledText": "#727072",
"focusColor": "#5b595c",
"focusedBorderColor": "#ffd866",
"foreground": "#fcfcfa",
"inactiveBackground": "#3a3a3c",
"inactiveForeground": "#939293",
"infoForeground": "#939293",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionBackgroundInactive": "#403E41",
"selectionForeground": "#FFFFFF",
"selectionInactiveBackground": "#403E41",
@@ -33,7 +39,7 @@
"pressedBorderColor": "#ffd86650"
},
"Autocomplete": {
- "selectionBackground": "#6E6C6F"
+ "selectionBackground": "#5B595C"
},
"Borders.ContrastBorderColor": "#2D2A2E",
"Borders.color": "#2d2a2e",
@@ -43,7 +49,7 @@
"default": {
"endBackground": "#4A474B",
"endBorderColor": "#4A474B",
- "foreground": "#ffd866",
+ "foreground": "#FFFFFF",
"focusColor": "#ffd866",
"focusedBorderColor": "#ffd866",
"shadowColor": "#4A474B",
@@ -51,7 +57,7 @@
"startBorderColor": "#4A474B"
},
"disabledBorderColor": "#403E41",
- "disabledText": "#5b595c",
+ "disabledText": "#727072",
"endBackground": "#403E41",
"endBorderColor": "#403E41",
"focus": "#5b595c",
@@ -72,10 +78,13 @@
"Tooltip.borderColor": "#2d2a2e",
"Tooltip.background": "#363437"
},
- "Content.background": "#3a3a3c",
+ "Content": {
+ "background": "#221F22",
+ "selectionBackground": "#5B595C"
+ },
"CheckBox": {
"background": "#2D2A2E",
- "disabledText": "#5b595c",
+ "disabledText": "#727072",
"foreground": "#fcfcfa",
"select": "#ffd866"
},
@@ -84,10 +93,18 @@
"acceleratorSelectionForeground": "#939293",
"background": "#2D2A2E",
"disabledBackground": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
- "selectionBackground": "#6E6C6F",
- "selectionForeground": "#ffd866"
+ "selectionBackground": "#5B595C",
+ "selectionForeground": "#FFFFFF"
+ },
+ "CodeWithMe": {
+ "Avatar.foreground": "#fcfcfa",
+ "AccessEnabled": {
+ "accessDot": "#ffd866",
+ "dropdownBorder": "#403E41",
+ "pillBackground": "$second"
+ }
},
"ColorChooser": {
"background": "#2D2A2E",
@@ -98,19 +115,20 @@
"ComboBox": {
"ArrowButton": {
"background": "#403E41",
- "disabledIconColor": "#5b595c",
+ "disabledIconColor": "#727072",
"iconColor": "#fcfcfa",
"nonEditableBackground": "#2D2A2E"
},
"background": "#2D2A2E",
"buttonBackground": "#403E41",
- "disabledForeground": "#5b595c",
+ "darcula.hoveredArrowButtonForeground": "#ffd866",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
"modifiedItemForeground": "#ffd866",
"nonEditableBackground": "#403E41",
"padding": "5,5,5,5",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"ComboPopup.border": "#2d2a2e",
"CompletionPopup": {
@@ -123,8 +141,8 @@
"selectedGrayedForeground": "#FFFFFF",
"selectionGrayForeground": "#FFFFFF",
"selectionInactiveInfoForeground": "#939293",
- "selectionInactiveBackground": "#6E6C6F50",
- "selectionBackground": "#6E6C6F80",
+ "selectionInactiveBackground": "#5B595C50",
+ "selectionBackground": "#5B595C80",
"selectionForeground": "#FFFFFF",
"selectionInfoForeground": "#FFFFFF"
},
@@ -168,11 +186,13 @@
"hoverBackground": "#4A474B",
"hoverColor": "#2D2A2E",
"hoverMaskColor": "#5b595c",
+ "inactiveColoredTabBackground": "#2D2A2E",
"inactiveColoredFileBackground": "#403E41",
- "inactiveUnderlineColor": "#5b595c",
+ "inactiveUnderlineColor": "#ffd866",
"inactiveMaskColor": "#2D2A2E",
"underlineColor": "#ffd866",
- "underlinedTabBackground": "#4A474B"
+ "underlinedTabBackground": "#4A474B",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#2D2A2E",
"DialogWrapper.southPanelBackground": "#2D2A2E",
@@ -192,21 +212,23 @@
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
"inactiveBackground": "#2D2A2E",
- "inactiveForeground": "#5b595c",
- "selectionBackground": "#6E6C6F",
- "selectionForeground": "#ffd866"
+ "inactiveForeground": "#727072",
+ "selectionBackground": "#5B595C",
+ "selectionForeground": "#FFFFFF"
},
"EditorTabs": {
"borderColor": "#403E41",
+ "hoverBackground": "#5b595c",
"hoverColor": "#5b595c",
"hoverMaskColor": "#5b595c",
"inactiveMaskColor": "#2D2A2E",
- "inactiveColoredFileBackground": "#2D2A2E2",
- "inactiveUnderlineColor": "#5b595c",
+ "inactiveColoredFileBackground": "#2D2A2E",
+ "inactiveUnderlineColor": "#727072",
"selectedForeground": "#fcfcfa",
"selectedBackground": "#4A474B",
"underlineColor": "#ffd866",
- "underlinedTabBackground": "#4A474B"
+ "underlinedTabBackground": "#4A474B",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#2D2A2E",
@@ -242,21 +264,22 @@
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
"inactiveBackground": "#403E41",
- "inactiveForeground": "#5b595c",
- "selectionForeground": "#ffd866",
+ "inactiveForeground": "#727072",
+ "selectionForeground": "#FFFFFF",
"selectionBackground": "#4A474B"
},
+ "GotItTooltip.borderColor": "#363437",
"Group": {
"disabledSeparatorColor": "#2d2a2e",
"separatorColor": "#2d2a2e"
},
"GutterTooltip": {
- "infoForeground": "#fcfcfa",
+ "infoForeground": "#939293",
"lineSeparatorColor": "#2D2A2E"
},
"HeaderColor": {
"active": "#2D2A2E",
- "inactive": "#3a3a3c"
+ "inactive": "#221F22"
},
"HelpTooltip": {
"background": "#2D2A2E",
@@ -283,12 +306,13 @@
},
"Label": {
"background": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"disabledShadow": "#2D2A2E",
- "disabledText": "#5b595c",
+ "disabledText": "#727072",
"foreground": "#fcfcfa",
"infoForeground": "#939293",
- "selectedForeground": "#ffd866"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#fcfcfa"
},
"Link": {
"activeForeground": "#ffd866",
@@ -301,15 +325,17 @@
"List": {
"background": "#403E41",
"foreground": "#fcfcfa",
- "selectionBackground": "#6E6C6F50",
+ "hoverBackground": "#403E4170",
+ "hoverInactiveBackground": "#4A474B",
+ "selectionBackground": "#5B595C50",
"selectionForeground": "#FFFFFF",
- "selectionInactiveForeground": "#ffd866",
- "selectionInactiveBackground": "#403E41"
+ "selectionInactiveForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#403E4170"
},
"material": {
"background": "#2D2A2E",
"branchColor": "#fcfcfa",
- "contrast": "#3a3a3c",
+ "contrast": "#221F22",
"foreground": "#fcfcfa",
"mergeCommits": "#403E41",
"primaryColor": "#939293",
@@ -330,9 +356,9 @@
"border": "4,2,4,2",
"borderColor": "#403E41",
"disabledBackground": "#403E41",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionForeground": "#FFFFFF",
"separatorColor": "#2d2a2e"
},
@@ -340,10 +366,10 @@
"background": "#2D2A2E",
"borderColor": "#2D2A2E",
"disabledBackground": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
"highlight": "#2D2A2E",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionForeground": "#FFFFFF",
"shadow": "#2D2A2E"
},
@@ -353,9 +379,9 @@
"border": "4,2,4,2",
"background": "#2D2A2E",
"disabledBackground": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionForeground": "#FFFFFF"
},
"NavBar": {
@@ -400,7 +426,7 @@
"Outline": {
"color": "#403E41",
"focusedColor": "#ffd866",
- "disabledColor": "#5b595c"
+ "disabledColor": "#727072"
},
"Panel": {
"background": "#2D2A2E",
@@ -409,9 +435,9 @@
"ParameterInfo": {
"background": "#403E41",
"borderColor": "#4A474B",
- "currentOverloadBackground": "#4A474B",
+ "currentOverloadBackground": "#5b595c",
"currentParameterForeground": "#ffd866",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
"infoForeground": "#939293",
"lineSeparatorColor": "#4A474B"
@@ -421,17 +447,18 @@
"capsLockIconColor": "#ffd866",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
- "inactiveForeground": "#5b595c",
+ "inactiveForeground": "#727072",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"Plugins": {
"background": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"eapTagBackground": "#5b595c",
- "lightSelectionBackground": "#6E6C6F",
+ "hoverBackground": "#403E4170",
+ "lightSelectionBackground": "#4A474B",
"paidTagBackground": "#5b595c",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"tagForeground": "#ffd866",
"tagBackground": "#5b595c",
"trialTagBackground": "#5b595c",
@@ -440,9 +467,9 @@
"installBorderColor": "#403E41",
"installForeground": "#fcfcfa",
"installFocusedBackground": "#5b595c",
- "installFillForeground": "#5b595c",
+ "installFillForeground": "#727072",
"installFillBackground": "#403E41",
- "updateBackground": "#403E41",
+ "updateBackground": "#ffd866",
"updateBorderColor": "#403E41",
"updateForeground": "#fcfcfa"
},
@@ -466,20 +493,20 @@
"borderColor": "#2D2A2E",
"foreground": "#ffd866"
},
- "borderColor": "#3a3a3c",
+ "borderColor": "#221F22",
"inactiveBorderColor": "#2D2A2E",
"innerBorderColor": "#403E41",
"Header": {
"activeBackground": "#2D2A2E",
- "inactiveBackground": "#3a3a3c"
+ "inactiveBackground": "#221F22"
},
"paintBorder": true,
"separatorForeground": "#fcfcfa",
"separatorColor": "#403E41",
"Toolbar": {
- "Floating.background": "#3a3a3c",
- "background": "#3a3a3c",
- "borderColor": "#3a3a3c"
+ "Floating.background": "#221F22",
+ "background": "#221F22",
+ "borderColor": "#221F22"
}
},
"PopupMenu": {
@@ -504,7 +531,7 @@
},
"RadioButton": {
"background": "#2D2A2E",
- "disabledText": "#5b595c",
+ "disabledText": "#727072",
"foreground": "#fcfcfa"
},
"RadioButtonMenuItem": {
@@ -512,11 +539,12 @@
"acceleratorSelectionForeground": "#939293",
"background": "#2D2A2E",
"disabledBackground": "#2D2A2E",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#2d2a2e",
"ScrollBar": {
"background": "#2D2A2E",
"hoverThumbBorderColor": "#ffd866",
@@ -553,7 +581,7 @@
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"foreground": "#939293"
},
"Header": {
@@ -565,20 +593,29 @@
},
"SearchField": {
"background": "#2D2A2E",
- "borderColor": "#3a3a3c",
+ "borderColor": "#221F22",
"infoForeground": "#939293"
},
"Tab": {
- "active.foreground": "#ffd866",
- "selectedForeground": "#ffd866",
+ "active.foreground": "#FFFFFF",
+ "selectedForeground": "#FFFFFF",
"selectedBackground": "#5b595c"
}
},
"SearchMatch": {
"endBackground": "#ffd866",
- "startBackground": "#ffd866"
+ "startBackground": "#ffd866",
+ "endColor": "#ffd866",
+ "startColor": "#ffd866"
},
"SearchField.errorBackground": "#363437",
+ "SearchOption": {
+ "selectedBackground": "#4A474B"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#939293",
+ "Repeated.File.Foreground": "#fcfcfa"
+ },
"Separator": {
"background": "#403E41",
"foreground": "#403E41",
@@ -608,7 +645,7 @@
"background": "#2D2A2E",
"border": "3,3,3,3",
"foreground": "#fcfcfa",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"SplitPane": {
"background": "#2D2A2E",
@@ -616,15 +653,17 @@
},
"SplitPaneDivider.draggingColor": "#403E41",
"StatusBar": {
- "borderColor": "#2D2A2E"
+ "borderColor": "#2D2A2E",
+ "hoverBackground": "#5b595c",
+ "LightEditBackground": "#4A474B"
},
"TabbedPane": {
"background": "#2D2A2E",
"contentAreaColor": "#5b595c",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#2d2a2e",
- "disabledForeground": "#5b595c",
- "disabledUnderlineColor": "#5b595c",
+ "disabledForeground": "#727072",
+ "disabledUnderlineColor": "#727072",
"focus": "#4A474B",
"focusColor": "#4A474B",
"fontSizeOffset": 0,
@@ -632,7 +671,7 @@
"highlight": "#2d2a2e",
"hoverColor": "#5b595c",
"labelShift": 0,
- "selectedForeground": "#ffd866",
+ "selectedForeground": "#FFFFFF",
"selectedLabelShift": 0,
"selectedTabPadInsets": "0,0,0,0",
"tabsOverlapBorder": true,
@@ -643,35 +682,39 @@
},
"TabbedPane.mt.tab.background": "#2D2A2E",
"Table": {
+ "alternativeRowBackground": "#221F22",
"background": "#2D2A2E",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#727072",
"dropLineColor": "#ffd866",
"dropLineShortColor": "#ffd866",
"focusCellBackground": "#4A474B",
- "focusCellForeground": "#ffd866",
+ "focusCellForeground": "#FFFFFF",
"foreground": "#fcfcfa",
"gridColor": "#2D2A2E",
"highlightOuter": "#4A474B",
- "lightSelectionForeground": "#ffd866",
+ "hoverBackground": "#403E4170",
+ "hoverInactiveBackground": "#4A474B",
+ "lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#939293",
"lightSelectionInactiveBackground": "#403E41",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866",
+ "selectionForeground": "#FFFFFF",
"selectionInactiveBackground": "#4A474B",
"selectionInactiveForeground": "#FFFFFF",
"sortIconColor": "#fcfcfa",
- "stripeColor": "#3a3a3c"
+ "stripeColor": "#221F22"
},
"TableHeader": {
"background": "#2D2A2E",
"borderColor": "#2D2A2E",
"bottomSeparatorColor": "#403E41",
"cellBorder": "4,0,4,0",
- "disabledForeground": "#5b595c",
+ "disabledForeground": "#727072",
"foreground": "#fcfcfa",
"focusCellBackground": "#4A474B",
- "focusCellForeground": "#ffd866",
+ "focusCellForeground": "#FFFFFF",
"height": 25,
"separatorColor": "#403E41"
},
@@ -682,28 +725,28 @@
"background": "#2D2A2E",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
- "inactiveForeground": "#5b595c",
+ "inactiveForeground": "#727072",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"TextField": {
"background": "#2D2A2E",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
- "inactiveForeground": "#5b595c",
+ "inactiveForeground": "#727072",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"TextPane": {
"background": "#2D2A2E",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
- "inactiveForeground": "#5b595c",
+ "inactiveForeground": "#727072",
"selectionBackground": "#4A474B",
- "selectionForeground": "#ffd866"
+ "selectionForeground": "#FFFFFF"
},
"TitlePane": {
- "background": "#3a3a3c",
+ "background": "#221F22",
"Button.hoverBackground": "#5b595c",
"inactiveBackground": "#2D2A2E",
"infoForeground": "#939293",
@@ -713,7 +756,7 @@
"ToggleButton": {
"borderColor": "#403E41",
"buttonColor": "#fcfcfa",
- "disabledText": "#5b595c",
+ "disabledText": "#727072",
"foreground": "#fcfcfa",
"offForeground": "#2D2A2E",
"offBackground": "#2D2A2E",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#2D2A2E",
"Actions.infoForeground": "#939293",
- "background": "#2D2A2E",
- "borderColor": "#5b595c",
+ "background": "#363437",
+ "borderColor": "#2d2a2e",
"foreground": "#fcfcfa",
"infoForeground": "#939293",
"separatorColor": "#2d2a2e",
@@ -739,8 +782,8 @@
"ToolWindow": {
"Button": {
"hoverBackground": "#4A474B",
- "selectedForeground": "#ffd866",
- "selectedBackground": "#3a3a3c"
+ "selectedForeground": "#FFFFFF",
+ "selectedBackground": "#221F22"
},
"Header": {
"background": "#2D2A2E",
@@ -751,50 +794,93 @@
"background": "#2D2A2E"
},
"HeaderTab": {
+ "borderColor": "#5b595c",
"hoverBackground": "#5b595c",
- "hoverInactiveBackground": "#403E41",
+ "hoverInactiveBackground": "#5b595c",
"inactiveUnderlineColor": "#ffd866",
- "selectedBackground": "#3a3a3c",
- "selectedInactiveBackground": "#3a3a3c",
+ "selectedBackground": "#221F22",
+ "selectedInactiveBackground": "#221F22",
"underlineColor": "#ffd866",
- "underlinedTabBackground": "#5b595c",
- "underlinedTabInactiveBackground": "#403E41"
+ "underlinedTabBackground": "#4A474B",
+ "underlinedTabInactiveBackground": "#403E41",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#fcfcfa"
}
},
"Tree": {
"background": "#2D2A2E",
"foreground": "#939293",
"hash": "#2d2a2e",
+ "hoverBackground": "#403E4170",
+ "hoverInactiveBackground": "#4A474B",
"modifiedItemForeground": "#ffd866",
"rowHeight": 28,
- "selectionBackground": "#403E41",
+ "selectionBackground": "#403E4170",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#403E41",
+ "selectionInactiveBackground": "#403E4170",
"textBackground": "#2D2A2E"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#2d2a2e",
- "ColorPicker.background": "#2D2A2E",
- "ColorPicker.foreground": "#fcfcfa",
- "Component.borderColor": "#2d2a2e",
- "Component.background": "#2D2A2E",
- "Component.foreground": "#fcfcfa",
- "Connector.borderColor": "#2d2a2e",
- "Connector.hoverBorderColor": "#5b595c",
- "Canvas.background": "#3a3a3c",
+ "Canvas.background": "#221F22",
+ "ColorPicker": {
+ "background": "#2D2A2E",
+ "foreground": "#fcfcfa"
+ },
+ "Component": {
+ "borderColor": "#2d2a2e",
+ "background": "#2D2A2E",
+ "foreground": "#fcfcfa",
+ "hoverBorderColor": "#5b595c"
+ },
+ "Connector": {
+ "borderColor": "#2d2a2e",
+ "hoverBorderColor": "#5b595c"
+ },
+ "Canvas.background": "#221F22",
"highStroke.foreground": "#fcfcfa",
"Label.foreground": "#939293",
- "List.selectionBackground": "#403E41",
- "Panel.borderColor": "#2d2a2e",
- "Panel.background": "#2D2A2E",
+ "List.selectionBackground": "#403E4170",
+ "motion": {
+ "borderColor": "#2d2a2e",
+ "Component.foreground": "#fcfcfa",
+ "ConstraintSetText.foreground": "#939293",
+ "ConstraintSet.background": "#403E41",
+ "CSPanel.SelectedFocusBackground": "#5B595C",
+ "CSPanel.SelectedBackground": "#403E4170",
+ "cs_FocusText.infoForeground": "#939293",
+ "CursorTextColor.foreground": "#fcfcfa",
+ "HoverColor.disabledBackground": "#727072",
+ "motionGraph.background": "#2D2A2E",
+ "Notification.background": "#363437",
+ "ourAvg.background": "#403E41",
+ "ourCS.background": "#403E41",
+ "ourCS_Border.borderColor": "#2d2a2e",
+ "ourCS_TextColor.foreground": "#939293",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#4A474B",
+ "ourCS_SelectedBorder.pressedBorderColor": "#5b595c",
+ "ourML_BarColor.separatorColor": "#2d2a2e",
+ "PrimaryPanel.background": "#221F22",
+ "SecondaryPanel.background": "#2D2A2E",
+ "SecondaryPanel.header.foreground": "#939293",
+ "SecondaryPanel.header.background": "#221F22",
+ "timeLine.disabledBorderColor": "#2d2a2e"
+ },
+ "Panel": {
+ "borderColor": "#2d2a2e",
+ "background": "#2D2A2E"
+ },
"percent.foreground": "#fcfcfa",
- "Placeholder.background": "#2D2A2E",
- "Placeholder.borderColor": "#2d2a2e",
- "Placeholder.foreground": "#fcfcfa",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#2D2A2E",
+ "borderColor": "#2d2a2e",
+ "foreground": "#fcfcfa",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#2D2A2E",
"stroke.acceleratorForeground": "#939293"
},
@@ -819,8 +905,8 @@
},
"HgLog": {
"branchIconColor": "#ffd866",
- "bookmarkIconColor": "#ffd866",
- "closedBranchIconColor": "#5b595c",
+ "bookmarkIconColor": "#FFFFFF",
+ "closedBranchIconColor": "#727072",
"localTagIconColor": "#939293",
"mqTagIconColor": "#939293",
"tagIconColor": "#939293",
@@ -828,10 +914,11 @@
},
"Log": {
"Commit.unmatchedForeground": "#939293",
- "Commit.currentBranchBackground": "#403E41"
+ "Commit.currentBranchBackground": "#403E41",
+ "Commit.hoveredBackground": "#403E4170"
},
"RefLabel": {
- "foreground": "#ffd866",
+ "foreground": "#FFFFFF",
"backgroundBase": "#5b595c"
}
},
@@ -840,18 +927,24 @@
"foreground": "#fcfcfa"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#2D2A2E",
"background": "#2D2A2E",
"borderColor": "#2D2A2E",
- "captionBackground": "#3a3a3c",
+ "captionBackground": "#221F22",
"captionForeground": "#fcfcfa",
- "footerBackground": "#3a3a3c",
+ "Details.background": "#2D2A2E",
+ "footerBackground": "#221F22",
"footerForeground": "#fcfcfa",
"headerBackground": "#2D2A2E",
"headerForeground": "#fcfcfa",
+ "List.background": "#221F22",
"separatorColor": "#2d2a2e",
+ "SidePanel.background": "#403E41",
"Projects": {
+ "actions.background": "#221F22",
+ "actions.selectionBackground": "#5b595c",
"background": "#403E41",
- "selectionBackground": "#6E6C6F",
+ "selectionBackground": "#5B595C",
"selectionInactiveBackground": "#403E41"
}
},
@@ -862,14 +955,14 @@
},
"icons": {
"ColorPalette": {
- "#43494A": "#3a3a3c",
+ "#43494A": "#221F22",
"#6B6B6B": "#939293",
"#A7A7A7": "#2D2A2E",
"#3D6185": "#ffd866",
"#466D94": "#ffd866",
"#3C3F41": "#2D2A2E",
- "#545556": "#5b595c",
- "#606060": "#5b595c",
+ "#545556": "#727072",
+ "#606060": "#727072",
"#9AA7B0": "#fcfcfa",
"#675133": "#ffd866",
"Actions.Blue": "#A9DC76",
@@ -879,20 +972,20 @@
"Actions.GreyInline.Dark": "#fcfcfa",
"Actions.Red": "#FF6188",
"Actions.Yellow": "#78DCE8",
- "Checkbox.Background.Default": "#3a3a3c",
- "Checkbox.Background.Default.Dark": "#3a3a3c",
+ "Checkbox.Background.Default": "#221F22",
+ "Checkbox.Background.Default.Dark": "#221F22",
"Checkbox.Background.Disabled": "#3a3a3c",
"Checkbox.Background.Disabled.Dark": "#3a3a3c",
"Checkbox.Border.Default": "#2d2a2e",
"Checkbox.Border.Default.Dark": "#2d2a2e",
- "Checkbox.Border.Disabled": "#5b595c",
- "Checkbox.Border.Disabled.Dark": "#5b595c",
+ "Checkbox.Border.Disabled": "#727072",
+ "Checkbox.Border.Disabled.Dark": "#727072",
"Checkbox.Focus.Thin.Default": "#ffd866",
"Checkbox.Focus.Thin.Default.Dark": "#ffd866",
"Checkbox.Focus.Wide": "#ffd866",
"Checkbox.Focus.Wide.Dark": "#ffd866",
- "Checkbox.Foreground.Disabled": "#5b595c",
- "Checkbox.Foreground.Disabled.Dark": "#5b595c",
+ "Checkbox.Foreground.Disabled": "#727072",
+ "Checkbox.Foreground.Disabled.Dark": "#727072",
"Checkbox.Background.Selected": "#ffd866",
"Checkbox.Background.Selected.Dark": "#2D2A2E",
"Checkbox.Border.Selected": "#ffd866",
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Moonlight Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Moonlight Contrast.theme.json
new file mode 100644
index 00000000..a552b01d
--- /dev/null
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Moonlight Contrast.theme.json
@@ -0,0 +1,1010 @@
+{
+ "name": "Moonlight Contrast",
+ "dark": true,
+ "author": "Mallowigi",
+ "editorScheme": "/colors/Moonlight.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/moonlight.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
+ "ui": {
+ "*": {
+ "acceleratorSelectionForeground": "#a9b8e8",
+ "background": "#222436",
+ "borderColor": "#222436",
+ "disabledBackground": "#2f334d",
+ "disabledForeground": "#828bb8",
+ "disabledText": "#828bb8",
+ "focusColor": "#444a73",
+ "focusedBorderColor": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveBackground": "#2f334d",
+ "inactiveForeground": "#a9b8e8",
+ "infoForeground": "#a9b8e8",
+ "selectionBackground": "#444a73",
+ "selectionBackgroundInactive": "#2f334d",
+ "selectionForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#2f334d",
+ "separatorColor": "#222436"
+ },
+ "activeCaption": "#222436",
+ "ActionButton": {
+ "hoverBackground": "#4fd6be50",
+ "hoverBorderColor": "#4fd6be50",
+ "hoverSeparatorColor": "#444a73",
+ "focusedBorderColor": "#4fd6be50",
+ "pressedBackground": "#4fd6be50",
+ "pressedBorderColor": "#4fd6be50"
+ },
+ "Autocomplete": {
+ "selectionBackground": "#444a73"
+ },
+ "Borders.ContrastBorderColor": "#222436",
+ "Borders.color": "#222436",
+ "Button": {
+ "arc": 0,
+ "background": "#222436",
+ "default": {
+ "endBackground": "#2f334d",
+ "endBorderColor": "#2f334d",
+ "foreground": "#FFFFFF",
+ "focusColor": "#4fd6be",
+ "focusedBorderColor": "#4fd6be",
+ "shadowColor": "#2f334d",
+ "startBackground": "#2f334d",
+ "startBorderColor": "#2f334d"
+ },
+ "disabledBorderColor": "#444a73",
+ "disabledText": "#828bb8",
+ "endBackground": "#444a73",
+ "endBorderColor": "#444a73",
+ "focus": "#444a73",
+ "focusedBorderColor": "#4fd6be",
+ "foreground": "#a9b8e8",
+ "highlight": "#FFFFFF",
+ "mt.background": "#444a73",
+ "mt.foreground": "#a9b8e8",
+ "mt.selectedForeground": "#FFFFFF",
+ "mt.selection.color1": "#2f334d",
+ "mt.selection.color2": "#2f334d",
+ "startBackground": "#444a73",
+ "startBorderColor": "#444a73",
+ "shadowColor": "#444a73",
+ "shadowWidth": 0
+ },
+ "Canvas": {
+ "Tooltip.borderColor": "#222436",
+ "Tooltip.background": "#191a2a"
+ },
+ "Content": {
+ "background": "#191a2a",
+ "selectionBackground": "#444a73"
+ },
+ "CheckBox": {
+ "background": "#222436",
+ "disabledText": "#828bb8",
+ "foreground": "#c8d3f5",
+ "select": "#4fd6be"
+ },
+ "CheckBoxMenuItem": {
+ "acceleratorForeground": "#a9b8e8",
+ "acceleratorSelectionForeground": "#a9b8e8",
+ "background": "#222436",
+ "disabledBackground": "#222436",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF"
+ },
+ "CodeWithMe": {
+ "Avatar.foreground": "#c8d3f5",
+ "AccessEnabled": {
+ "accessDot": "#4fd6be",
+ "dropdownBorder": "#2f334d",
+ "pillBackground": "$second"
+ }
+ },
+ "ColorChooser": {
+ "background": "#222436",
+ "foreground": "#c8d3f5",
+ "swatchesDefaultRecentColor": "#c8d3f5"
+ },
+ "ComboBoxButton.background": "#444a73",
+ "ComboBox": {
+ "ArrowButton": {
+ "background": "#444a73",
+ "disabledIconColor": "#828bb8",
+ "iconColor": "#c8d3f5",
+ "nonEditableBackground": "#222436"
+ },
+ "background": "#191a2a",
+ "buttonBackground": "#444a73",
+ "darcula.hoveredArrowButtonForeground": "#4fd6be",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "modifiedItemForeground": "#4fd6be",
+ "nonEditableBackground": "#2f334d",
+ "padding": "5,5,5,5",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF"
+ },
+ "ComboPopup.border": "#222436",
+ "CompletionPopup": {
+ "background": "#2f334d",
+ "foreground": "#c8d3f5",
+ "infoForeground": "#a9b8e8",
+ "matchForeground": "#4fd6be",
+ "matchSelectionForeground": "#4fd6be",
+ "nonFocusedState": "false",
+ "selectedGrayedForeground": "#FFFFFF",
+ "selectionGrayForeground": "#FFFFFF",
+ "selectionInactiveInfoForeground": "#a9b8e8",
+ "selectionInactiveBackground": "#444a7350",
+ "selectionBackground": "#444a7380",
+ "selectionForeground": "#FFFFFF",
+ "selectionInfoForeground": "#FFFFFF"
+ },
+ "Component": {
+ "arc": 4,
+ "borderColor": "#444a73",
+ "disabledBorderColor": "#444a73",
+ "focusColor": "#4fd6be",
+ "focusedBorderColor": "#4fd6be",
+ "hoverIconColor": "#4fd6be",
+ "infoForeground": "#a9b8e8",
+ "iconColor": "#c8d3f5"
+ },
+ "control": "#222436",
+ "controlText": "#a9b8e8",
+ "Counter": {
+ "background": "#4fd6be",
+ "foreground": "#FFFFFF"
+ },
+ "Debugger": {
+ "Variables": {
+ "collectingDataForeground": "#a9b8e8",
+ "changedValueForeground": "#4fd6be",
+ "errorMessageForeground": "#ff757f",
+ "evaluatingExpressionForeground": "#a9b8e8",
+ "exceptionForeground": "#c099ff",
+ "modifyingValueForeground": "#4fd6be",
+ "valueForeground": "#4fd6be"
+ }
+ },
+ "DebuggerTabs": {
+ "selectedBackground": "#444a73",
+ "underlinedTabBackground": "#444a73"
+ },
+ "DebuggerPopup": {
+ "borderColor": "#444a73"
+ },
+ "DefaultTabs": {
+ "background": "#222436",
+ "borderColor": "#222436",
+ "hoverBackground": "#2f334d",
+ "hoverColor": "#191a2a",
+ "hoverMaskColor": "#444a73",
+ "inactiveColoredTabBackground": "#222436",
+ "inactiveColoredFileBackground": "#444a73",
+ "inactiveUnderlineColor": "#4fd6be",
+ "inactiveMaskColor": "#191a2a",
+ "underlineColor": "#4fd6be",
+ "underlinedTabBackground": "#2f334d",
+ "underlinedTabForeground": "#FFFFFF"
+ },
+ "Desktop.background": "#222436",
+ "DialogWrapper.southPanelBackground": "#222436",
+ "DialogWrapper.southPanelDivider": "#222436",
+ "DragAndDrop": {
+ "areaBackground": "#222436",
+ "areaBorderColor": "#222436",
+ "areaForeground": "#c8d3f5"
+ },
+ "Editor": {
+ "background": "#191a2a",
+ "foreground": "#c8d3f5",
+ "shortcutForeground": "#a9b8e8"
+ },
+ "EditorPane": {
+ "background": "#191a2a",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveBackground": "#222436",
+ "inactiveForeground": "#828bb8",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF"
+ },
+ "EditorTabs": {
+ "borderColor": "#2f334d",
+ "hoverBackground": "#444a73",
+ "hoverColor": "#444a73",
+ "hoverMaskColor": "#444a73",
+ "inactiveMaskColor": "#222436",
+ "inactiveColoredFileBackground": "#222436",
+ "inactiveUnderlineColor": "#828bb8",
+ "selectedForeground": "#c8d3f5",
+ "selectedBackground": "#2f334d",
+ "underlineColor": "#4fd6be",
+ "underlinedTabBackground": "#2f334d",
+ "underlinedTabForeground": "#FFFFFF"
+ },
+ "EditorGroupsTabs": {
+ "background": "#222436",
+ "borderColor": "#2f334d",
+ "hoverBackground": "#444a73",
+ "hoverColor": "#444a73",
+ "inactiveUnderlineColor": "#4fd6be",
+ "underlineColor": "#4fd6be",
+ "underlinedTabBackground": "#2f334d",
+ "underlinedTabForeground": "#c8d3f5"
+ },
+ "FileColor": {
+ "Green": "#387002",
+ "Blue": "#004BA0",
+ "Yellow": "#2f334d",
+ "Orange": "#B53D00",
+ "Violet": "#4D2C91",
+ "Rose": "#A00037"
+ },
+ "FlameGraph": {
+ "JVMBackground": "#89DDF7",
+ "JVMFocusBackground": "#82AAFF",
+ "JVMSearchNotMatchedBackground": "#FF5370",
+ "JVMFocusSearchNotMatchedBackground": "#AB7967",
+ "nativeBackground": "#FFCB6B",
+ "nativeFocusBackground": "#F78C6C",
+ "nativeSearchNotMatchedBackground": "#C792EA",
+ "nativeFocusSearchNotMatchedBackground": "#BB80B3"
+ },
+ "Focus.color": "#222436",
+ "FormattedTextField": {
+ "background": "#191a2a",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveBackground": "#444a73",
+ "inactiveForeground": "#828bb8",
+ "selectionForeground": "#FFFFFF",
+ "selectionBackground": "#2f334d"
+ },
+ "GotItTooltip.borderColor": "#191a2a",
+ "Group": {
+ "disabledSeparatorColor": "#222436",
+ "separatorColor": "#222436"
+ },
+ "GutterTooltip": {
+ "infoForeground": "#a9b8e8",
+ "lineSeparatorColor": "#222436"
+ },
+ "HeaderColor": {
+ "active": "#222436",
+ "inactive": "#191a2a"
+ },
+ "HelpTooltip": {
+ "background": "#222436",
+ "borderColor": "#222436",
+ "foreground": "#c8d3f5",
+ "infoForeground": "#a9b8e8",
+ "shortcutForeground": "#a9b8e8"
+ },
+ "Hyperlink.linkColor": "#4fd6be",
+ "inactiveCaption": "#2f334d",
+ "inactiveCaptionBorder": "#222436",
+ "inactiveCaptionText": "#a9b8e8",
+ "info": "#a9b8e8",
+ "infoText": "#a9b8e8",
+ "IdeStatusBar.border": "4,4,4,4",
+ "InformationHint.borderColor": "#222436",
+ "InplaceRefactoringPopup": {
+ "borderColor": "#222436"
+ },
+ "InternalFrame": {
+ "activeTitleForeground": "#c8d3f5",
+ "background": "#222436",
+ "inactiveTitleForeground": "#a9b8e8"
+ },
+ "Label": {
+ "background": "#222436",
+ "disabledForeground": "#828bb8",
+ "disabledShadow": "#222436",
+ "disabledText": "#828bb8",
+ "foreground": "#c8d3f5",
+ "infoForeground": "#a9b8e8",
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#c8d3f5"
+ },
+ "Link": {
+ "activeForeground": "#4fd6be",
+ "hoverForeground": "#4fd6be",
+ "pressedForeground": "#4fd6be",
+ "secondaryForeground": "#a9b8e8",
+ "visitedForeground": "#4fd6be"
+ },
+ "link.foreground": "#4fd6be",
+ "List": {
+ "background": "#2f334d",
+ "foreground": "#c8d3f5",
+ "hoverBackground": "#444a7370",
+ "hoverInactiveBackground": "#2f334d",
+ "selectionBackground": "#444a7350",
+ "selectionForeground": "#FFFFFF",
+ "selectionInactiveForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#444a7370"
+ },
+ "material": {
+ "background": "#222436",
+ "branchColor": "#c8d3f5",
+ "contrast": "#191a2a",
+ "foreground": "#c8d3f5",
+ "mergeCommits": "#444a73",
+ "primaryColor": "#a9b8e8",
+ "selectionForeground": "#FFFFFF",
+ "tab.backgroundColor": "#222436",
+ "tab.borderColor": "#4fd6be",
+ "tagColor": "#a9b8e8"
+ },
+ "MemoryIndicator": {
+ "allocatedBackground": "#2f334d",
+ "usedColor": "#444a73",
+ "usedBackground": "#444a73"
+ },
+ "Menu": {
+ "acceleratorForeground": "#a9b8e8",
+ "acceleratorSelectionForeground": "#FFFFFF",
+ "background": "#222436",
+ "border": "4,2,4,2",
+ "borderColor": "#2f334d",
+ "disabledBackground": "#2f334d",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF",
+ "separatorColor": "#222436"
+ },
+ "MenuBar": {
+ "background": "#191a2a",
+ "borderColor": "#222436",
+ "disabledBackground": "#222436",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "highlight": "#222436",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF",
+ "shadow": "#191a2a"
+ },
+ "MenuItem": {
+ "acceleratorForeground": "#a9b8e8",
+ "acceleratorSelectionForeground": "#FFFFFF",
+ "border": "4,2,4,2",
+ "background": "#222436",
+ "disabledBackground": "#222436",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF"
+ },
+ "NavBar": {
+ "arrowColor": "#c8d3f5",
+ "borderColor": "#222436"
+ },
+ "NewClass": {
+ "Panel": {
+ "background": "#222436"
+ },
+ "SearchField": {
+ "background": "#191a2a"
+ }
+ },
+ "NewPSD.warning": "#4fd6be",
+ "Notification": {
+ "background": "#191a2a",
+ "borderColor": "#191a2a",
+ "errorBackground": "#191a2a",
+ "errorBorderColor": "#191a2a",
+ "foreground": "#c8d3f5",
+ "MoreButton": {
+ "background": "#444a73",
+ "foreground": "#c8d3f5",
+ "innerBorderColor": "#444a73"
+ },
+ "ToolWindow": {
+ "errorBackground": "#191a2a",
+ "errorBorderColor": "#191a2a",
+ "informativeBackground": "#191a2a",
+ "informativeBorderColor": "#191a2a",
+ "warningBackground": "#191a2a",
+ "warningBorderColor": "#191a2a"
+ }
+ },
+ "OnePixelDivider.background": "#222436",
+ "OptionPane": {
+ "background": "#222436",
+ "foreground": "#c8d3f5",
+ "messageForeground": "#c8d3f5"
+ },
+ "Outline": {
+ "color": "#444a73",
+ "focusedColor": "#4fd6be",
+ "disabledColor": "#828bb8"
+ },
+ "Panel": {
+ "background": "#222436",
+ "foreground": "#c8d3f5"
+ },
+ "ParameterInfo": {
+ "background": "#2f334d",
+ "borderColor": "#2f334d",
+ "currentOverloadBackground": "#444a73",
+ "currentParameterForeground": "#4fd6be",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "infoForeground": "#a9b8e8",
+ "lineSeparatorColor": "#2f334d"
+ },
+ "PasswordField": {
+ "background": "#191a2a",
+ "capsLockIconColor": "#4fd6be",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveForeground": "#828bb8",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF"
+ },
+ "Plugins": {
+ "background": "#222436",
+ "disabledForeground": "#828bb8",
+ "eapTagBackground": "#444a73",
+ "hoverBackground": "#444a7370",
+ "lightSelectionBackground": "#2f334d",
+ "paidTagBackground": "#444a73",
+ "selectionBackground": "#444a73",
+ "tagForeground": "#4fd6be",
+ "tagBackground": "#444a73",
+ "trialTagBackground": "#444a73",
+ "Button": {
+ "installBackground": "#444a73",
+ "installBorderColor": "#444a73",
+ "installForeground": "#c8d3f5",
+ "installFocusedBackground": "#444a73",
+ "installFillForeground": "#828bb8",
+ "installFillBackground": "#444a73",
+ "updateBackground": "#4fd6be",
+ "updateBorderColor": "#444a73",
+ "updateForeground": "#c8d3f5"
+ },
+ "SearchField": {
+ "background": "#191a2a",
+ "borderColor": "#222436"
+ },
+ "SectionHeader": {
+ "background": "#2f334d",
+ "foreground": "#c8d3f5"
+ },
+ "Tab": {
+ "hoverBackground": "#2f334d",
+ "selectedForeground": "#FFFFFF",
+ "selectedBackground": "#2f334d"
+ }
+ },
+ "Popup": {
+ "Advertiser": {
+ "background": "#222436",
+ "borderColor": "#222436",
+ "foreground": "#4fd6be"
+ },
+ "borderColor": "#191a2a",
+ "inactiveBorderColor": "#222436",
+ "innerBorderColor": "#2f334d",
+ "Header": {
+ "activeBackground": "#222436",
+ "inactiveBackground": "#191a2a"
+ },
+ "paintBorder": true,
+ "separatorForeground": "#c8d3f5",
+ "separatorColor": "#2f334d",
+ "Toolbar": {
+ "Floating.background": "#191a2a",
+ "background": "#191a2a",
+ "borderColor": "#191a2a"
+ }
+ },
+ "PopupMenu": {
+ "background": "#222436",
+ "border": "2,0,2,0",
+ "foreground": "#c8d3f5",
+ "translucentBackground": "#222436"
+ },
+ "PopupMenuSeparator.height": 10,
+ "PopupMenuSeparator.stripeIndent": 5,
+ "ProgressBar": {
+ "background": "#222436",
+ "foreground": "#4fd6be",
+ "indeterminateEndColor": "#4fd6be",
+ "indeterminateStartColor": "#4fd6be",
+ "progressColor": "#4fd6be",
+ "selectionBackground": "#444a73",
+ "trackColor": "#444a73"
+ },
+ "PsiViewer": {
+ "referenceHighlightColor": "#4fd6be"
+ },
+ "RadioButton": {
+ "background": "#222436",
+ "disabledText": "#828bb8",
+ "foreground": "#c8d3f5"
+ },
+ "RadioButtonMenuItem": {
+ "acceleratorForeground": "#a9b8e8",
+ "acceleratorSelectionForeground": "#a9b8e8",
+ "background": "#222436",
+ "disabledBackground": "#222436",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF"
+ },
+ "ScreenView.borderColor": "#222436",
+ "ScrollBar": {
+ "background": "#222436",
+ "hoverThumbBorderColor": "#4fd6be",
+ "hoverThumbColor": "#4fd6be",
+ "hoverTrackColor": "#22243630",
+ "Mac": {
+ "hoverThumbBorderColor": "#4fd6be",
+ "hoverThumbColor": "#4fd6be",
+ "hoverTrackColor": "#22243630",
+ "thumbBorderColor": "#4fd6be70",
+ "thumbColor": "#4fd6be70",
+ "trackColor": "#22243630",
+ "Transparent": {
+ "hoverThumbBorderColor": "#4fd6be",
+ "hoverThumbColor": "#4fd6be",
+ "hoverTrackColor": "#22243630",
+ "thumbBorderColor": "#4fd6be70",
+ "thumbColor": "#4fd6be70",
+ "trackColor": "#22243630"
+ }
+ },
+ "thumb": "#444a73",
+ "thumbBorderColor": "#4fd6be70",
+ "thumbColor": "#4fd6be70",
+ "trackColor": "#22243630",
+ "Transparent": {
+ "hoverThumbBorderColor": "#4fd6be",
+ "hoverThumbColor": "#4fd6be",
+ "hoverTrackColor": "#22243630",
+ "thumbBorderColor": "#4fd6be70",
+ "thumbColor": "#4fd6be70",
+ "trackColor": "#22243630"
+ }
+ },
+ "SearchEverywhere": {
+ "Advertiser": {
+ "background": "#191a2a",
+ "foreground": "#a9b8e8"
+ },
+ "Header": {
+ "background": "#222436"
+ },
+ "List": {
+ "separatorForeground": "#a9b8e8",
+ "separatorColor": "#222436"
+ },
+ "SearchField": {
+ "background": "#222436",
+ "borderColor": "#191a2a",
+ "infoForeground": "#a9b8e8"
+ },
+ "Tab": {
+ "active.foreground": "#FFFFFF",
+ "selectedForeground": "#FFFFFF",
+ "selectedBackground": "#444a73"
+ }
+ },
+ "SearchMatch": {
+ "endBackground": "#4fd6be",
+ "startBackground": "#4fd6be",
+ "endColor": "#4fd6be",
+ "startColor": "#4fd6be"
+ },
+ "SearchField.errorBackground": "#191a2a",
+ "SearchOption": {
+ "selectedBackground": "#2f334d"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#a9b8e8",
+ "Repeated.File.Foreground": "#c8d3f5"
+ },
+ "Separator": {
+ "background": "#2f334d",
+ "foreground": "#2f334d",
+ "separatorColor": "#2f334d"
+ },
+ "SidePanel": {
+ "background": "#191a2a"
+ },
+ "Slider": {
+ "background": "#222436",
+ "buttonBorderColor": "#4fd6be",
+ "buttonColor": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "majorTickLength": 6,
+ "tickColor": "#2f334d",
+ "trackColor": "#2f334d",
+ "trackWidth": 7,
+ "thumb": "#4fd6be"
+ },
+ "SpeedSearch": {
+ "background": "#444a73",
+ "borderColor": "#222436",
+ "foreground": "#c8d3f5",
+ "errorForeground": "#c8d3f5"
+ },
+ "Spinner": {
+ "background": "#222436",
+ "border": "3,3,3,3",
+ "foreground": "#c8d3f5",
+ "selectionForeground": "#FFFFFF"
+ },
+ "SplitPane": {
+ "background": "#222436",
+ "highlight": "#191a2a"
+ },
+ "SplitPaneDivider.draggingColor": "#2f334d",
+ "StatusBar": {
+ "borderColor": "#222436",
+ "hoverBackground": "#444a73",
+ "LightEditBackground": "#2f334d"
+ },
+ "TabbedPane": {
+ "background": "#222436",
+ "contentAreaColor": "#444a73",
+ "contentBorderInsets": "3,1,1,1",
+ "darkShadow": "#222436",
+ "disabledForeground": "#828bb8",
+ "disabledUnderlineColor": "#828bb8",
+ "focus": "#2f334d",
+ "focusColor": "#2f334d",
+ "fontSizeOffset": 0,
+ "foreground": "#c8d3f5",
+ "highlight": "#222436",
+ "hoverColor": "#444a73",
+ "labelShift": 0,
+ "selectedForeground": "#FFFFFF",
+ "selectedLabelShift": 0,
+ "selectedTabPadInsets": "0,0,0,0",
+ "tabsOverlapBorder": true,
+ "tabHeight": 32,
+ "tabInsets": "5,10,5,10",
+ "tabSelectionHeight": 2,
+ "underlineColor": "#4fd6be"
+ },
+ "TabbedPane.mt.tab.background": "#191a2a",
+ "Table": {
+ "alternativeRowBackground": "#191a2a",
+ "background": "#222436",
+ "cellNoFocusBorder": "10,5,10,5",
+ "focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#828bb8",
+ "dropLineColor": "#4fd6be",
+ "dropLineShortColor": "#4fd6be",
+ "focusCellBackground": "#2f334d",
+ "focusCellForeground": "#FFFFFF",
+ "foreground": "#c8d3f5",
+ "gridColor": "#222436",
+ "highlightOuter": "#2f334d",
+ "hoverBackground": "#444a7370",
+ "hoverInactiveBackground": "#2f334d",
+ "lightSelectionForeground": "#FFFFFF",
+ "lightSelectionInactiveForeground": "#a9b8e8",
+ "lightSelectionInactiveBackground": "#2f334d",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#2f334d",
+ "selectionInactiveForeground": "#FFFFFF",
+ "sortIconColor": "#c8d3f5",
+ "stripeColor": "#191a2a"
+ },
+ "TableHeader": {
+ "background": "#222436",
+ "borderColor": "#222436",
+ "bottomSeparatorColor": "#2f334d",
+ "cellBorder": "4,0,4,0",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "focusCellBackground": "#2f334d",
+ "focusCellForeground": "#FFFFFF",
+ "height": 25,
+ "separatorColor": "#2f334d"
+ },
+ "text": "#a9b8e8",
+ "textInactiveText": "#a9b8e8",
+ "textText": "#a9b8e8",
+ "TextArea": {
+ "background": "#191a2a",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveForeground": "#828bb8",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF"
+ },
+ "TextField": {
+ "background": "#191a2a",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveForeground": "#828bb8",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF"
+ },
+ "TextPane": {
+ "background": "#191a2a",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveForeground": "#828bb8",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF"
+ },
+ "TitlePane": {
+ "background": "#191a2a",
+ "Button.hoverBackground": "#444a73",
+ "inactiveBackground": "#222436",
+ "infoForeground": "#a9b8e8",
+ "inactiveInfoForeground": "#a9b8e8"
+ },
+ "TitledBorder.titleColor": "#c8d3f5",
+ "ToggleButton": {
+ "borderColor": "#444a73",
+ "buttonColor": "#c8d3f5",
+ "disabledText": "#828bb8",
+ "foreground": "#c8d3f5",
+ "offForeground": "#222436",
+ "offBackground": "#222436",
+ "onBackground": "#4fd6be",
+ "onForeground": "#4fd6be"
+ },
+ "ToolBar": {
+ "background": "#191a2a",
+ "borderHandleColor": "#a9b8e8",
+ "floatingForeground": "#a9b8e8",
+ "foreground": "#c8d3f5"
+ },
+ "ToolTip": {
+ "Actions.background": "#222436",
+ "Actions.infoForeground": "#a9b8e8",
+ "background": "#191a2a",
+ "borderColor": "#222436",
+ "foreground": "#c8d3f5",
+ "infoForeground": "#a9b8e8",
+ "separatorColor": "#222436",
+ "shortcutForeground": "#a9b8e8"
+ },
+ "ToolWindow": {
+ "Button": {
+ "hoverBackground": "#2f334d",
+ "selectedForeground": "#FFFFFF",
+ "selectedBackground": "#191a2a"
+ },
+ "Header": {
+ "background": "#222436",
+ "borderColor": "#2f334d",
+ "inactiveBackground": "#222436"
+ },
+ "HeaderCloseButton": {
+ "background": "#222436"
+ },
+ "HeaderTab": {
+ "borderColor": "#444a73",
+ "hoverBackground": "#444a73",
+ "hoverInactiveBackground": "#444a73",
+ "inactiveUnderlineColor": "#4fd6be",
+ "selectedBackground": "#191a2a",
+ "selectedInactiveBackground": "#191a2a",
+ "underlineColor": "#4fd6be",
+ "underlinedTabBackground": "#2f334d",
+ "underlinedTabInactiveBackground": "#2f334d",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#c8d3f5"
+ }
+ },
+ "Tree": {
+ "background": "#191a2a",
+ "foreground": "#a9b8e8",
+ "hash": "#222436",
+ "hoverBackground": "#444a7370",
+ "hoverInactiveBackground": "#2f334d",
+ "modifiedItemForeground": "#4fd6be",
+ "rowHeight": 28,
+ "selectionBackground": "#444a7370",
+ "selectionForeground": "#FFFFFF",
+ "selectionInactiveForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#444a7370",
+ "textBackground": "#191a2a"
+ },
+ "Tree.leftChildIndent": 10,
+ "Tree.rightChildIndent": 5,
+ "UIDesigner": {
+ "Activity.borderColor": "#222436",
+ "Canvas.background": "#191a2a",
+ "ColorPicker": {
+ "background": "#222436",
+ "foreground": "#c8d3f5"
+ },
+ "Component": {
+ "borderColor": "#222436",
+ "background": "#222436",
+ "foreground": "#c8d3f5",
+ "hoverBorderColor": "#444a73"
+ },
+ "Connector": {
+ "borderColor": "#222436",
+ "hoverBorderColor": "#444a73"
+ },
+ "Canvas.background": "#191a2a",
+ "highStroke.foreground": "#c8d3f5",
+ "Label.foreground": "#a9b8e8",
+ "List.selectionBackground": "#444a7370",
+ "motion": {
+ "borderColor": "#222436",
+ "Component.foreground": "#c8d3f5",
+ "ConstraintSetText.foreground": "#a9b8e8",
+ "ConstraintSet.background": "#2f334d",
+ "CSPanel.SelectedFocusBackground": "#444a73",
+ "CSPanel.SelectedBackground": "#444a7370",
+ "cs_FocusText.infoForeground": "#a9b8e8",
+ "CursorTextColor.foreground": "#c8d3f5",
+ "HoverColor.disabledBackground": "#828bb8",
+ "motionGraph.background": "#222436",
+ "Notification.background": "#191a2a",
+ "ourAvg.background": "#2f334d",
+ "ourCS.background": "#2f334d",
+ "ourCS_Border.borderColor": "#222436",
+ "ourCS_TextColor.foreground": "#a9b8e8",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#2f334d",
+ "ourCS_SelectedBorder.pressedBorderColor": "#444a73",
+ "ourML_BarColor.separatorColor": "#222436",
+ "PrimaryPanel.background": "#191a2a",
+ "SecondaryPanel.background": "#222436",
+ "SecondaryPanel.header.foreground": "#a9b8e8",
+ "SecondaryPanel.header.background": "#191a2a",
+ "timeLine.disabledBorderColor": "#222436"
+ },
+ "Panel": {
+ "borderColor": "#222436",
+ "background": "#222436"
+ },
+ "percent.foreground": "#c8d3f5",
+ "Placeholder": {
+ "background": "#222436",
+ "borderColor": "#222436",
+ "foreground": "#c8d3f5",
+ "selectedForeground": "#FFFFFF"
+ },
+ "Preview.background": "#222436",
+ "stroke.acceleratorForeground": "#a9b8e8"
+ },
+ "ValidationTooltip": {
+ "errorBackground": "#191a2a",
+ "errorBorderColor": "#191a2a",
+ "warningBackground": "#191a2a",
+ "warningBorderColor": "#191a2a"
+ },
+ "VersionControl": {
+ "FileHistory.Commit": {
+ "selectedBranchBackground": "#222436"
+ },
+ "GitCommits": {
+ "graphColor": "#444a73"
+ },
+ "GitLog": {
+ "localBranchIconColor": "#4fd6be",
+ "otherIconColor": "#a9b8e8",
+ "remoteBranchIconColor": "#c8d3f5",
+ "tagIconColor": "#a9b8e8"
+ },
+ "HgLog": {
+ "branchIconColor": "#4fd6be",
+ "bookmarkIconColor": "#FFFFFF",
+ "closedBranchIconColor": "#828bb8",
+ "localTagIconColor": "#a9b8e8",
+ "mqTagIconColor": "#a9b8e8",
+ "tagIconColor": "#a9b8e8",
+ "tipIconColor": "#a9b8e8"
+ },
+ "Log": {
+ "Commit.unmatchedForeground": "#a9b8e8",
+ "Commit.currentBranchBackground": "#2f334d",
+ "Commit.hoveredBackground": "#444a7370"
+ },
+ "RefLabel": {
+ "foreground": "#FFFFFF",
+ "backgroundBase": "#444a73"
+ }
+ },
+ "Viewport": {
+ "background": "#191a2a",
+ "foreground": "#c8d3f5"
+ },
+ "WelcomeScreen": {
+ "AssociatedComponent.background": "#222436",
+ "background": "#222436",
+ "borderColor": "#222436",
+ "captionBackground": "#191a2a",
+ "captionForeground": "#c8d3f5",
+ "Details.background": "#222436",
+ "footerBackground": "#191a2a",
+ "footerForeground": "#c8d3f5",
+ "headerBackground": "#222436",
+ "headerForeground": "#c8d3f5",
+ "List.background": "#191a2a",
+ "separatorColor": "#222436",
+ "SidePanel.background": "#2f334d",
+ "Projects": {
+ "actions.background": "#191a2a",
+ "actions.selectionBackground": "#444a73",
+ "background": "#2f334d",
+ "selectionBackground": "#444a73",
+ "selectionInactiveBackground": "#2f334d"
+ }
+ },
+ "window": "#191a2a",
+ "windowBorder": "#222436",
+ "windowText": "#a9b8e8",
+ "Window.border": "#222436"
+ },
+ "icons": {
+ "ColorPalette": {
+ "#43494A": "#191a2a",
+ "#6B6B6B": "#a9b8e8",
+ "#A7A7A7": "#222436",
+ "#3D6185": "#4fd6be",
+ "#466D94": "#4fd6be",
+ "#3C3F41": "#222436",
+ "#545556": "#828bb8",
+ "#606060": "#828bb8",
+ "#9AA7B0": "#c8d3f5",
+ "#675133": "#4fd6be",
+ "Actions.Blue": "#82aaff",
+ "Actions.Green": "#c3e88d",
+ "Actions.Grey": "#a9b8e8",
+ "Actions.GreyInline": "#7a88cf",
+ "Actions.GreyInline.Dark": "#c8d3f5",
+ "Actions.Red": "#ff757f",
+ "Actions.Yellow": "#c099ff",
+ "Checkbox.Background.Default": "#191a2a",
+ "Checkbox.Background.Default.Dark": "#191a2a",
+ "Checkbox.Background.Disabled": "#2f334d",
+ "Checkbox.Background.Disabled.Dark": "#2f334d",
+ "Checkbox.Border.Default": "#222436",
+ "Checkbox.Border.Default.Dark": "#222436",
+ "Checkbox.Border.Disabled": "#828bb8",
+ "Checkbox.Border.Disabled.Dark": "#828bb8",
+ "Checkbox.Focus.Thin.Default": "#4fd6be",
+ "Checkbox.Focus.Thin.Default.Dark": "#4fd6be",
+ "Checkbox.Focus.Wide": "#4fd6be",
+ "Checkbox.Focus.Wide.Dark": "#4fd6be",
+ "Checkbox.Foreground.Disabled": "#828bb8",
+ "Checkbox.Foreground.Disabled.Dark": "#828bb8",
+ "Checkbox.Background.Selected": "#4fd6be",
+ "Checkbox.Background.Selected.Dark": "#222436",
+ "Checkbox.Border.Selected": "#4fd6be",
+ "Checkbox.Border.Selected.Dark": "#4fd6be",
+ "Checkbox.Foreground.Selected": "#4fd6be",
+ "Checkbox.Foreground.Selected.Dark": "#4fd6be",
+ "Checkbox.Focus.Thin.Selected": "#c8d3f5",
+ "Checkbox.Focus.Thin.Selected.Dark": "#c8d3f5",
+ "Objects.Grey": "#7a88cf",
+ "Objects.Blue": "#82aaff",
+ "Objects.RedStatus": "#ff757f",
+ "Objects.Red": "#ff757f",
+ "Objects.Pink": "#c099ff",
+ "Objects.Yellow": "#c099ff",
+ "Objects.Green": "#c3e88d",
+ "Objects.Purple": "#c099ff",
+ "Objects.BlackText": "#c8d3f5",
+ "Objects.YellowDark": "#ff966c",
+ "Objects.GreenAndroid": "#c3e88d"
+ }
+ }
+}
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Moonlight.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Moonlight.theme.json
new file mode 100644
index 00000000..4ab94a73
--- /dev/null
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Moonlight.theme.json
@@ -0,0 +1,1010 @@
+{
+ "name": "Moonlight",
+ "dark": true,
+ "author": "Mallowigi",
+ "editorScheme": "/colors/Moonlight.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/moonlight.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
+ "ui": {
+ "*": {
+ "acceleratorSelectionForeground": "#a9b8e8",
+ "background": "#222436",
+ "borderColor": "#222436",
+ "disabledBackground": "#2f334d",
+ "disabledForeground": "#828bb8",
+ "disabledText": "#828bb8",
+ "focusColor": "#444a73",
+ "focusedBorderColor": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveBackground": "#2f334d",
+ "inactiveForeground": "#a9b8e8",
+ "infoForeground": "#a9b8e8",
+ "selectionBackground": "#444a73",
+ "selectionBackgroundInactive": "#2f334d",
+ "selectionForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#2f334d",
+ "separatorColor": "#222436"
+ },
+ "activeCaption": "#222436",
+ "ActionButton": {
+ "hoverBackground": "#4fd6be50",
+ "hoverBorderColor": "#4fd6be50",
+ "hoverSeparatorColor": "#444a73",
+ "focusedBorderColor": "#4fd6be50",
+ "pressedBackground": "#4fd6be50",
+ "pressedBorderColor": "#4fd6be50"
+ },
+ "Autocomplete": {
+ "selectionBackground": "#444a73"
+ },
+ "Borders.ContrastBorderColor": "#222436",
+ "Borders.color": "#222436",
+ "Button": {
+ "arc": 0,
+ "background": "#222436",
+ "default": {
+ "endBackground": "#2f334d",
+ "endBorderColor": "#2f334d",
+ "foreground": "#FFFFFF",
+ "focusColor": "#4fd6be",
+ "focusedBorderColor": "#4fd6be",
+ "shadowColor": "#2f334d",
+ "startBackground": "#2f334d",
+ "startBorderColor": "#2f334d"
+ },
+ "disabledBorderColor": "#444a73",
+ "disabledText": "#828bb8",
+ "endBackground": "#444a73",
+ "endBorderColor": "#444a73",
+ "focus": "#444a73",
+ "focusedBorderColor": "#4fd6be",
+ "foreground": "#a9b8e8",
+ "highlight": "#FFFFFF",
+ "mt.background": "#444a73",
+ "mt.foreground": "#a9b8e8",
+ "mt.selectedForeground": "#FFFFFF",
+ "mt.selection.color1": "#2f334d",
+ "mt.selection.color2": "#2f334d",
+ "startBackground": "#444a73",
+ "startBorderColor": "#444a73",
+ "shadowColor": "#444a73",
+ "shadowWidth": 0
+ },
+ "Canvas": {
+ "Tooltip.borderColor": "#222436",
+ "Tooltip.background": "#191a2a"
+ },
+ "Content": {
+ "background": "#191a2a",
+ "selectionBackground": "#444a73"
+ },
+ "CheckBox": {
+ "background": "#222436",
+ "disabledText": "#828bb8",
+ "foreground": "#c8d3f5",
+ "select": "#4fd6be"
+ },
+ "CheckBoxMenuItem": {
+ "acceleratorForeground": "#a9b8e8",
+ "acceleratorSelectionForeground": "#a9b8e8",
+ "background": "#222436",
+ "disabledBackground": "#222436",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF"
+ },
+ "CodeWithMe": {
+ "Avatar.foreground": "#c8d3f5",
+ "AccessEnabled": {
+ "accessDot": "#4fd6be",
+ "dropdownBorder": "#2f334d",
+ "pillBackground": "$second"
+ }
+ },
+ "ColorChooser": {
+ "background": "#222436",
+ "foreground": "#c8d3f5",
+ "swatchesDefaultRecentColor": "#c8d3f5"
+ },
+ "ComboBoxButton.background": "#444a73",
+ "ComboBox": {
+ "ArrowButton": {
+ "background": "#444a73",
+ "disabledIconColor": "#828bb8",
+ "iconColor": "#c8d3f5",
+ "nonEditableBackground": "#222436"
+ },
+ "background": "#222436",
+ "buttonBackground": "#444a73",
+ "darcula.hoveredArrowButtonForeground": "#4fd6be",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "modifiedItemForeground": "#4fd6be",
+ "nonEditableBackground": "#2f334d",
+ "padding": "5,5,5,5",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF"
+ },
+ "ComboPopup.border": "#222436",
+ "CompletionPopup": {
+ "background": "#2f334d",
+ "foreground": "#c8d3f5",
+ "infoForeground": "#a9b8e8",
+ "matchForeground": "#4fd6be",
+ "matchSelectionForeground": "#4fd6be",
+ "nonFocusedState": "false",
+ "selectedGrayedForeground": "#FFFFFF",
+ "selectionGrayForeground": "#FFFFFF",
+ "selectionInactiveInfoForeground": "#a9b8e8",
+ "selectionInactiveBackground": "#444a7350",
+ "selectionBackground": "#444a7380",
+ "selectionForeground": "#FFFFFF",
+ "selectionInfoForeground": "#FFFFFF"
+ },
+ "Component": {
+ "arc": 4,
+ "borderColor": "#444a73",
+ "disabledBorderColor": "#444a73",
+ "focusColor": "#4fd6be",
+ "focusedBorderColor": "#4fd6be",
+ "hoverIconColor": "#4fd6be",
+ "infoForeground": "#a9b8e8",
+ "iconColor": "#c8d3f5"
+ },
+ "control": "#222436",
+ "controlText": "#a9b8e8",
+ "Counter": {
+ "background": "#4fd6be",
+ "foreground": "#FFFFFF"
+ },
+ "Debugger": {
+ "Variables": {
+ "collectingDataForeground": "#a9b8e8",
+ "changedValueForeground": "#4fd6be",
+ "errorMessageForeground": "#ff757f",
+ "evaluatingExpressionForeground": "#a9b8e8",
+ "exceptionForeground": "#c099ff",
+ "modifyingValueForeground": "#4fd6be",
+ "valueForeground": "#4fd6be"
+ }
+ },
+ "DebuggerTabs": {
+ "selectedBackground": "#444a73",
+ "underlinedTabBackground": "#444a73"
+ },
+ "DebuggerPopup": {
+ "borderColor": "#444a73"
+ },
+ "DefaultTabs": {
+ "background": "#222436",
+ "borderColor": "#222436",
+ "hoverBackground": "#2f334d",
+ "hoverColor": "#222436",
+ "hoverMaskColor": "#444a73",
+ "inactiveColoredTabBackground": "#222436",
+ "inactiveColoredFileBackground": "#444a73",
+ "inactiveUnderlineColor": "#4fd6be",
+ "inactiveMaskColor": "#222436",
+ "underlineColor": "#4fd6be",
+ "underlinedTabBackground": "#2f334d",
+ "underlinedTabForeground": "#FFFFFF"
+ },
+ "Desktop.background": "#222436",
+ "DialogWrapper.southPanelBackground": "#222436",
+ "DialogWrapper.southPanelDivider": "#222436",
+ "DragAndDrop": {
+ "areaBackground": "#222436",
+ "areaBorderColor": "#222436",
+ "areaForeground": "#c8d3f5"
+ },
+ "Editor": {
+ "background": "#222436",
+ "foreground": "#c8d3f5",
+ "shortcutForeground": "#a9b8e8"
+ },
+ "EditorPane": {
+ "background": "#222436",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveBackground": "#222436",
+ "inactiveForeground": "#828bb8",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF"
+ },
+ "EditorTabs": {
+ "borderColor": "#2f334d",
+ "hoverBackground": "#444a73",
+ "hoverColor": "#444a73",
+ "hoverMaskColor": "#444a73",
+ "inactiveMaskColor": "#222436",
+ "inactiveColoredFileBackground": "#222436",
+ "inactiveUnderlineColor": "#828bb8",
+ "selectedForeground": "#c8d3f5",
+ "selectedBackground": "#2f334d",
+ "underlineColor": "#4fd6be",
+ "underlinedTabBackground": "#2f334d",
+ "underlinedTabForeground": "#FFFFFF"
+ },
+ "EditorGroupsTabs": {
+ "background": "#222436",
+ "borderColor": "#2f334d",
+ "hoverBackground": "#444a73",
+ "hoverColor": "#444a73",
+ "inactiveUnderlineColor": "#4fd6be",
+ "underlineColor": "#4fd6be",
+ "underlinedTabBackground": "#2f334d",
+ "underlinedTabForeground": "#c8d3f5"
+ },
+ "FileColor": {
+ "Green": "#387002",
+ "Blue": "#004BA0",
+ "Yellow": "#2f334d",
+ "Orange": "#B53D00",
+ "Violet": "#4D2C91",
+ "Rose": "#A00037"
+ },
+ "FlameGraph": {
+ "JVMBackground": "#89DDF7",
+ "JVMFocusBackground": "#82AAFF",
+ "JVMSearchNotMatchedBackground": "#FF5370",
+ "JVMFocusSearchNotMatchedBackground": "#AB7967",
+ "nativeBackground": "#FFCB6B",
+ "nativeFocusBackground": "#F78C6C",
+ "nativeSearchNotMatchedBackground": "#C792EA",
+ "nativeFocusSearchNotMatchedBackground": "#BB80B3"
+ },
+ "Focus.color": "#222436",
+ "FormattedTextField": {
+ "background": "#222436",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveBackground": "#444a73",
+ "inactiveForeground": "#828bb8",
+ "selectionForeground": "#FFFFFF",
+ "selectionBackground": "#2f334d"
+ },
+ "GotItTooltip.borderColor": "#191a2a",
+ "Group": {
+ "disabledSeparatorColor": "#222436",
+ "separatorColor": "#222436"
+ },
+ "GutterTooltip": {
+ "infoForeground": "#a9b8e8",
+ "lineSeparatorColor": "#222436"
+ },
+ "HeaderColor": {
+ "active": "#222436",
+ "inactive": "#191a2a"
+ },
+ "HelpTooltip": {
+ "background": "#222436",
+ "borderColor": "#222436",
+ "foreground": "#c8d3f5",
+ "infoForeground": "#a9b8e8",
+ "shortcutForeground": "#a9b8e8"
+ },
+ "Hyperlink.linkColor": "#4fd6be",
+ "inactiveCaption": "#2f334d",
+ "inactiveCaptionBorder": "#222436",
+ "inactiveCaptionText": "#a9b8e8",
+ "info": "#a9b8e8",
+ "infoText": "#a9b8e8",
+ "IdeStatusBar.border": "4,4,4,4",
+ "InformationHint.borderColor": "#222436",
+ "InplaceRefactoringPopup": {
+ "borderColor": "#222436"
+ },
+ "InternalFrame": {
+ "activeTitleForeground": "#c8d3f5",
+ "background": "#222436",
+ "inactiveTitleForeground": "#a9b8e8"
+ },
+ "Label": {
+ "background": "#222436",
+ "disabledForeground": "#828bb8",
+ "disabledShadow": "#222436",
+ "disabledText": "#828bb8",
+ "foreground": "#c8d3f5",
+ "infoForeground": "#a9b8e8",
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#c8d3f5"
+ },
+ "Link": {
+ "activeForeground": "#4fd6be",
+ "hoverForeground": "#4fd6be",
+ "pressedForeground": "#4fd6be",
+ "secondaryForeground": "#a9b8e8",
+ "visitedForeground": "#4fd6be"
+ },
+ "link.foreground": "#4fd6be",
+ "List": {
+ "background": "#2f334d",
+ "foreground": "#c8d3f5",
+ "hoverBackground": "#444a7370",
+ "hoverInactiveBackground": "#2f334d",
+ "selectionBackground": "#444a7350",
+ "selectionForeground": "#FFFFFF",
+ "selectionInactiveForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#444a7370"
+ },
+ "material": {
+ "background": "#222436",
+ "branchColor": "#c8d3f5",
+ "contrast": "#191a2a",
+ "foreground": "#c8d3f5",
+ "mergeCommits": "#444a73",
+ "primaryColor": "#a9b8e8",
+ "selectionForeground": "#FFFFFF",
+ "tab.backgroundColor": "#222436",
+ "tab.borderColor": "#4fd6be",
+ "tagColor": "#a9b8e8"
+ },
+ "MemoryIndicator": {
+ "allocatedBackground": "#2f334d",
+ "usedColor": "#444a73",
+ "usedBackground": "#444a73"
+ },
+ "Menu": {
+ "acceleratorForeground": "#a9b8e8",
+ "acceleratorSelectionForeground": "#FFFFFF",
+ "background": "#222436",
+ "border": "4,2,4,2",
+ "borderColor": "#2f334d",
+ "disabledBackground": "#2f334d",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF",
+ "separatorColor": "#222436"
+ },
+ "MenuBar": {
+ "background": "#222436",
+ "borderColor": "#222436",
+ "disabledBackground": "#222436",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "highlight": "#222436",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF",
+ "shadow": "#222436"
+ },
+ "MenuItem": {
+ "acceleratorForeground": "#a9b8e8",
+ "acceleratorSelectionForeground": "#FFFFFF",
+ "border": "4,2,4,2",
+ "background": "#222436",
+ "disabledBackground": "#222436",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF"
+ },
+ "NavBar": {
+ "arrowColor": "#c8d3f5",
+ "borderColor": "#222436"
+ },
+ "NewClass": {
+ "Panel": {
+ "background": "#222436"
+ },
+ "SearchField": {
+ "background": "#222436"
+ }
+ },
+ "NewPSD.warning": "#4fd6be",
+ "Notification": {
+ "background": "#191a2a",
+ "borderColor": "#191a2a",
+ "errorBackground": "#191a2a",
+ "errorBorderColor": "#191a2a",
+ "foreground": "#c8d3f5",
+ "MoreButton": {
+ "background": "#444a73",
+ "foreground": "#c8d3f5",
+ "innerBorderColor": "#444a73"
+ },
+ "ToolWindow": {
+ "errorBackground": "#191a2a",
+ "errorBorderColor": "#191a2a",
+ "informativeBackground": "#191a2a",
+ "informativeBorderColor": "#191a2a",
+ "warningBackground": "#191a2a",
+ "warningBorderColor": "#191a2a"
+ }
+ },
+ "OnePixelDivider.background": "#222436",
+ "OptionPane": {
+ "background": "#222436",
+ "foreground": "#c8d3f5",
+ "messageForeground": "#c8d3f5"
+ },
+ "Outline": {
+ "color": "#444a73",
+ "focusedColor": "#4fd6be",
+ "disabledColor": "#828bb8"
+ },
+ "Panel": {
+ "background": "#222436",
+ "foreground": "#c8d3f5"
+ },
+ "ParameterInfo": {
+ "background": "#2f334d",
+ "borderColor": "#2f334d",
+ "currentOverloadBackground": "#444a73",
+ "currentParameterForeground": "#4fd6be",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "infoForeground": "#a9b8e8",
+ "lineSeparatorColor": "#2f334d"
+ },
+ "PasswordField": {
+ "background": "#222436",
+ "capsLockIconColor": "#4fd6be",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveForeground": "#828bb8",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF"
+ },
+ "Plugins": {
+ "background": "#222436",
+ "disabledForeground": "#828bb8",
+ "eapTagBackground": "#444a73",
+ "hoverBackground": "#444a7370",
+ "lightSelectionBackground": "#2f334d",
+ "paidTagBackground": "#444a73",
+ "selectionBackground": "#444a73",
+ "tagForeground": "#4fd6be",
+ "tagBackground": "#444a73",
+ "trialTagBackground": "#444a73",
+ "Button": {
+ "installBackground": "#444a73",
+ "installBorderColor": "#444a73",
+ "installForeground": "#c8d3f5",
+ "installFocusedBackground": "#444a73",
+ "installFillForeground": "#828bb8",
+ "installFillBackground": "#444a73",
+ "updateBackground": "#4fd6be",
+ "updateBorderColor": "#444a73",
+ "updateForeground": "#c8d3f5"
+ },
+ "SearchField": {
+ "background": "#222436",
+ "borderColor": "#222436"
+ },
+ "SectionHeader": {
+ "background": "#2f334d",
+ "foreground": "#c8d3f5"
+ },
+ "Tab": {
+ "hoverBackground": "#2f334d",
+ "selectedForeground": "#FFFFFF",
+ "selectedBackground": "#2f334d"
+ }
+ },
+ "Popup": {
+ "Advertiser": {
+ "background": "#222436",
+ "borderColor": "#222436",
+ "foreground": "#4fd6be"
+ },
+ "borderColor": "#191a2a",
+ "inactiveBorderColor": "#222436",
+ "innerBorderColor": "#2f334d",
+ "Header": {
+ "activeBackground": "#222436",
+ "inactiveBackground": "#191a2a"
+ },
+ "paintBorder": true,
+ "separatorForeground": "#c8d3f5",
+ "separatorColor": "#2f334d",
+ "Toolbar": {
+ "Floating.background": "#191a2a",
+ "background": "#191a2a",
+ "borderColor": "#191a2a"
+ }
+ },
+ "PopupMenu": {
+ "background": "#222436",
+ "border": "2,0,2,0",
+ "foreground": "#c8d3f5",
+ "translucentBackground": "#222436"
+ },
+ "PopupMenuSeparator.height": 10,
+ "PopupMenuSeparator.stripeIndent": 5,
+ "ProgressBar": {
+ "background": "#222436",
+ "foreground": "#4fd6be",
+ "indeterminateEndColor": "#4fd6be",
+ "indeterminateStartColor": "#4fd6be",
+ "progressColor": "#4fd6be",
+ "selectionBackground": "#444a73",
+ "trackColor": "#444a73"
+ },
+ "PsiViewer": {
+ "referenceHighlightColor": "#4fd6be"
+ },
+ "RadioButton": {
+ "background": "#222436",
+ "disabledText": "#828bb8",
+ "foreground": "#c8d3f5"
+ },
+ "RadioButtonMenuItem": {
+ "acceleratorForeground": "#a9b8e8",
+ "acceleratorSelectionForeground": "#a9b8e8",
+ "background": "#222436",
+ "disabledBackground": "#222436",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "selectionBackground": "#444a73",
+ "selectionForeground": "#FFFFFF"
+ },
+ "ScreenView.borderColor": "#222436",
+ "ScrollBar": {
+ "background": "#222436",
+ "hoverThumbBorderColor": "#4fd6be",
+ "hoverThumbColor": "#4fd6be",
+ "hoverTrackColor": "#22243630",
+ "Mac": {
+ "hoverThumbBorderColor": "#4fd6be",
+ "hoverThumbColor": "#4fd6be",
+ "hoverTrackColor": "#22243630",
+ "thumbBorderColor": "#4fd6be70",
+ "thumbColor": "#4fd6be70",
+ "trackColor": "#22243630",
+ "Transparent": {
+ "hoverThumbBorderColor": "#4fd6be",
+ "hoverThumbColor": "#4fd6be",
+ "hoverTrackColor": "#22243630",
+ "thumbBorderColor": "#4fd6be70",
+ "thumbColor": "#4fd6be70",
+ "trackColor": "#22243630"
+ }
+ },
+ "thumb": "#444a73",
+ "thumbBorderColor": "#4fd6be70",
+ "thumbColor": "#4fd6be70",
+ "trackColor": "#22243630",
+ "Transparent": {
+ "hoverThumbBorderColor": "#4fd6be",
+ "hoverThumbColor": "#4fd6be",
+ "hoverTrackColor": "#22243630",
+ "thumbBorderColor": "#4fd6be70",
+ "thumbColor": "#4fd6be70",
+ "trackColor": "#22243630"
+ }
+ },
+ "SearchEverywhere": {
+ "Advertiser": {
+ "background": "#191a2a",
+ "foreground": "#a9b8e8"
+ },
+ "Header": {
+ "background": "#222436"
+ },
+ "List": {
+ "separatorForeground": "#a9b8e8",
+ "separatorColor": "#222436"
+ },
+ "SearchField": {
+ "background": "#222436",
+ "borderColor": "#191a2a",
+ "infoForeground": "#a9b8e8"
+ },
+ "Tab": {
+ "active.foreground": "#FFFFFF",
+ "selectedForeground": "#FFFFFF",
+ "selectedBackground": "#444a73"
+ }
+ },
+ "SearchMatch": {
+ "endBackground": "#4fd6be",
+ "startBackground": "#4fd6be",
+ "endColor": "#4fd6be",
+ "startColor": "#4fd6be"
+ },
+ "SearchField.errorBackground": "#191a2a",
+ "SearchOption": {
+ "selectedBackground": "#2f334d"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#a9b8e8",
+ "Repeated.File.Foreground": "#c8d3f5"
+ },
+ "Separator": {
+ "background": "#2f334d",
+ "foreground": "#2f334d",
+ "separatorColor": "#2f334d"
+ },
+ "SidePanel": {
+ "background": "#222436"
+ },
+ "Slider": {
+ "background": "#222436",
+ "buttonBorderColor": "#4fd6be",
+ "buttonColor": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "majorTickLength": 6,
+ "tickColor": "#2f334d",
+ "trackColor": "#2f334d",
+ "trackWidth": 7,
+ "thumb": "#4fd6be"
+ },
+ "SpeedSearch": {
+ "background": "#444a73",
+ "borderColor": "#222436",
+ "foreground": "#c8d3f5",
+ "errorForeground": "#c8d3f5"
+ },
+ "Spinner": {
+ "background": "#222436",
+ "border": "3,3,3,3",
+ "foreground": "#c8d3f5",
+ "selectionForeground": "#FFFFFF"
+ },
+ "SplitPane": {
+ "background": "#222436",
+ "highlight": "#222436"
+ },
+ "SplitPaneDivider.draggingColor": "#2f334d",
+ "StatusBar": {
+ "borderColor": "#222436",
+ "hoverBackground": "#444a73",
+ "LightEditBackground": "#2f334d"
+ },
+ "TabbedPane": {
+ "background": "#222436",
+ "contentAreaColor": "#444a73",
+ "contentBorderInsets": "3,1,1,1",
+ "darkShadow": "#222436",
+ "disabledForeground": "#828bb8",
+ "disabledUnderlineColor": "#828bb8",
+ "focus": "#2f334d",
+ "focusColor": "#2f334d",
+ "fontSizeOffset": 0,
+ "foreground": "#c8d3f5",
+ "highlight": "#222436",
+ "hoverColor": "#444a73",
+ "labelShift": 0,
+ "selectedForeground": "#FFFFFF",
+ "selectedLabelShift": 0,
+ "selectedTabPadInsets": "0,0,0,0",
+ "tabsOverlapBorder": true,
+ "tabHeight": 32,
+ "tabInsets": "5,10,5,10",
+ "tabSelectionHeight": 2,
+ "underlineColor": "#4fd6be"
+ },
+ "TabbedPane.mt.tab.background": "#222436",
+ "Table": {
+ "alternativeRowBackground": "#191a2a",
+ "background": "#222436",
+ "cellNoFocusBorder": "10,5,10,5",
+ "focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#828bb8",
+ "dropLineColor": "#4fd6be",
+ "dropLineShortColor": "#4fd6be",
+ "focusCellBackground": "#2f334d",
+ "focusCellForeground": "#FFFFFF",
+ "foreground": "#c8d3f5",
+ "gridColor": "#222436",
+ "highlightOuter": "#2f334d",
+ "hoverBackground": "#444a7370",
+ "hoverInactiveBackground": "#2f334d",
+ "lightSelectionForeground": "#FFFFFF",
+ "lightSelectionInactiveForeground": "#a9b8e8",
+ "lightSelectionInactiveBackground": "#2f334d",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#2f334d",
+ "selectionInactiveForeground": "#FFFFFF",
+ "sortIconColor": "#c8d3f5",
+ "stripeColor": "#191a2a"
+ },
+ "TableHeader": {
+ "background": "#222436",
+ "borderColor": "#222436",
+ "bottomSeparatorColor": "#2f334d",
+ "cellBorder": "4,0,4,0",
+ "disabledForeground": "#828bb8",
+ "foreground": "#c8d3f5",
+ "focusCellBackground": "#2f334d",
+ "focusCellForeground": "#FFFFFF",
+ "height": 25,
+ "separatorColor": "#2f334d"
+ },
+ "text": "#a9b8e8",
+ "textInactiveText": "#a9b8e8",
+ "textText": "#a9b8e8",
+ "TextArea": {
+ "background": "#222436",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveForeground": "#828bb8",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF"
+ },
+ "TextField": {
+ "background": "#222436",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveForeground": "#828bb8",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF"
+ },
+ "TextPane": {
+ "background": "#222436",
+ "caretForeground": "#4fd6be",
+ "foreground": "#c8d3f5",
+ "inactiveForeground": "#828bb8",
+ "selectionBackground": "#2f334d",
+ "selectionForeground": "#FFFFFF"
+ },
+ "TitlePane": {
+ "background": "#191a2a",
+ "Button.hoverBackground": "#444a73",
+ "inactiveBackground": "#222436",
+ "infoForeground": "#a9b8e8",
+ "inactiveInfoForeground": "#a9b8e8"
+ },
+ "TitledBorder.titleColor": "#c8d3f5",
+ "ToggleButton": {
+ "borderColor": "#444a73",
+ "buttonColor": "#c8d3f5",
+ "disabledText": "#828bb8",
+ "foreground": "#c8d3f5",
+ "offForeground": "#222436",
+ "offBackground": "#222436",
+ "onBackground": "#4fd6be",
+ "onForeground": "#4fd6be"
+ },
+ "ToolBar": {
+ "background": "#222436",
+ "borderHandleColor": "#a9b8e8",
+ "floatingForeground": "#a9b8e8",
+ "foreground": "#c8d3f5"
+ },
+ "ToolTip": {
+ "Actions.background": "#222436",
+ "Actions.infoForeground": "#a9b8e8",
+ "background": "#191a2a",
+ "borderColor": "#222436",
+ "foreground": "#c8d3f5",
+ "infoForeground": "#a9b8e8",
+ "separatorColor": "#222436",
+ "shortcutForeground": "#a9b8e8"
+ },
+ "ToolWindow": {
+ "Button": {
+ "hoverBackground": "#2f334d",
+ "selectedForeground": "#FFFFFF",
+ "selectedBackground": "#191a2a"
+ },
+ "Header": {
+ "background": "#222436",
+ "borderColor": "#2f334d",
+ "inactiveBackground": "#222436"
+ },
+ "HeaderCloseButton": {
+ "background": "#222436"
+ },
+ "HeaderTab": {
+ "borderColor": "#444a73",
+ "hoverBackground": "#444a73",
+ "hoverInactiveBackground": "#444a73",
+ "inactiveUnderlineColor": "#4fd6be",
+ "selectedBackground": "#191a2a",
+ "selectedInactiveBackground": "#191a2a",
+ "underlineColor": "#4fd6be",
+ "underlinedTabBackground": "#2f334d",
+ "underlinedTabInactiveBackground": "#2f334d",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#c8d3f5"
+ }
+ },
+ "Tree": {
+ "background": "#222436",
+ "foreground": "#a9b8e8",
+ "hash": "#222436",
+ "hoverBackground": "#444a7370",
+ "hoverInactiveBackground": "#2f334d",
+ "modifiedItemForeground": "#4fd6be",
+ "rowHeight": 28,
+ "selectionBackground": "#444a7370",
+ "selectionForeground": "#FFFFFF",
+ "selectionInactiveForeground": "#FFFFFF",
+ "selectionInactiveBackground": "#444a7370",
+ "textBackground": "#222436"
+ },
+ "Tree.leftChildIndent": 10,
+ "Tree.rightChildIndent": 5,
+ "UIDesigner": {
+ "Activity.borderColor": "#222436",
+ "Canvas.background": "#191a2a",
+ "ColorPicker": {
+ "background": "#222436",
+ "foreground": "#c8d3f5"
+ },
+ "Component": {
+ "borderColor": "#222436",
+ "background": "#222436",
+ "foreground": "#c8d3f5",
+ "hoverBorderColor": "#444a73"
+ },
+ "Connector": {
+ "borderColor": "#222436",
+ "hoverBorderColor": "#444a73"
+ },
+ "Canvas.background": "#191a2a",
+ "highStroke.foreground": "#c8d3f5",
+ "Label.foreground": "#a9b8e8",
+ "List.selectionBackground": "#444a7370",
+ "motion": {
+ "borderColor": "#222436",
+ "Component.foreground": "#c8d3f5",
+ "ConstraintSetText.foreground": "#a9b8e8",
+ "ConstraintSet.background": "#2f334d",
+ "CSPanel.SelectedFocusBackground": "#444a73",
+ "CSPanel.SelectedBackground": "#444a7370",
+ "cs_FocusText.infoForeground": "#a9b8e8",
+ "CursorTextColor.foreground": "#c8d3f5",
+ "HoverColor.disabledBackground": "#828bb8",
+ "motionGraph.background": "#222436",
+ "Notification.background": "#191a2a",
+ "ourAvg.background": "#2f334d",
+ "ourCS.background": "#2f334d",
+ "ourCS_Border.borderColor": "#222436",
+ "ourCS_TextColor.foreground": "#a9b8e8",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#2f334d",
+ "ourCS_SelectedBorder.pressedBorderColor": "#444a73",
+ "ourML_BarColor.separatorColor": "#222436",
+ "PrimaryPanel.background": "#191a2a",
+ "SecondaryPanel.background": "#222436",
+ "SecondaryPanel.header.foreground": "#a9b8e8",
+ "SecondaryPanel.header.background": "#191a2a",
+ "timeLine.disabledBorderColor": "#222436"
+ },
+ "Panel": {
+ "borderColor": "#222436",
+ "background": "#222436"
+ },
+ "percent.foreground": "#c8d3f5",
+ "Placeholder": {
+ "background": "#222436",
+ "borderColor": "#222436",
+ "foreground": "#c8d3f5",
+ "selectedForeground": "#FFFFFF"
+ },
+ "Preview.background": "#222436",
+ "stroke.acceleratorForeground": "#a9b8e8"
+ },
+ "ValidationTooltip": {
+ "errorBackground": "#191a2a",
+ "errorBorderColor": "#191a2a",
+ "warningBackground": "#191a2a",
+ "warningBorderColor": "#191a2a"
+ },
+ "VersionControl": {
+ "FileHistory.Commit": {
+ "selectedBranchBackground": "#222436"
+ },
+ "GitCommits": {
+ "graphColor": "#444a73"
+ },
+ "GitLog": {
+ "localBranchIconColor": "#4fd6be",
+ "otherIconColor": "#a9b8e8",
+ "remoteBranchIconColor": "#c8d3f5",
+ "tagIconColor": "#a9b8e8"
+ },
+ "HgLog": {
+ "branchIconColor": "#4fd6be",
+ "bookmarkIconColor": "#FFFFFF",
+ "closedBranchIconColor": "#828bb8",
+ "localTagIconColor": "#a9b8e8",
+ "mqTagIconColor": "#a9b8e8",
+ "tagIconColor": "#a9b8e8",
+ "tipIconColor": "#a9b8e8"
+ },
+ "Log": {
+ "Commit.unmatchedForeground": "#a9b8e8",
+ "Commit.currentBranchBackground": "#2f334d",
+ "Commit.hoveredBackground": "#444a7370"
+ },
+ "RefLabel": {
+ "foreground": "#FFFFFF",
+ "backgroundBase": "#444a73"
+ }
+ },
+ "Viewport": {
+ "background": "#222436",
+ "foreground": "#c8d3f5"
+ },
+ "WelcomeScreen": {
+ "AssociatedComponent.background": "#222436",
+ "background": "#222436",
+ "borderColor": "#222436",
+ "captionBackground": "#191a2a",
+ "captionForeground": "#c8d3f5",
+ "Details.background": "#222436",
+ "footerBackground": "#191a2a",
+ "footerForeground": "#c8d3f5",
+ "headerBackground": "#222436",
+ "headerForeground": "#c8d3f5",
+ "List.background": "#191a2a",
+ "separatorColor": "#222436",
+ "SidePanel.background": "#2f334d",
+ "Projects": {
+ "actions.background": "#191a2a",
+ "actions.selectionBackground": "#444a73",
+ "background": "#2f334d",
+ "selectionBackground": "#444a73",
+ "selectionInactiveBackground": "#2f334d"
+ }
+ },
+ "window": "#222436",
+ "windowBorder": "#222436",
+ "windowText": "#a9b8e8",
+ "Window.border": "#222436"
+ },
+ "icons": {
+ "ColorPalette": {
+ "#43494A": "#191a2a",
+ "#6B6B6B": "#a9b8e8",
+ "#A7A7A7": "#222436",
+ "#3D6185": "#4fd6be",
+ "#466D94": "#4fd6be",
+ "#3C3F41": "#222436",
+ "#545556": "#828bb8",
+ "#606060": "#828bb8",
+ "#9AA7B0": "#c8d3f5",
+ "#675133": "#4fd6be",
+ "Actions.Blue": "#82aaff",
+ "Actions.Green": "#c3e88d",
+ "Actions.Grey": "#a9b8e8",
+ "Actions.GreyInline": "#7a88cf",
+ "Actions.GreyInline.Dark": "#c8d3f5",
+ "Actions.Red": "#ff757f",
+ "Actions.Yellow": "#c099ff",
+ "Checkbox.Background.Default": "#191a2a",
+ "Checkbox.Background.Default.Dark": "#191a2a",
+ "Checkbox.Background.Disabled": "#2f334d",
+ "Checkbox.Background.Disabled.Dark": "#2f334d",
+ "Checkbox.Border.Default": "#222436",
+ "Checkbox.Border.Default.Dark": "#222436",
+ "Checkbox.Border.Disabled": "#828bb8",
+ "Checkbox.Border.Disabled.Dark": "#828bb8",
+ "Checkbox.Focus.Thin.Default": "#4fd6be",
+ "Checkbox.Focus.Thin.Default.Dark": "#4fd6be",
+ "Checkbox.Focus.Wide": "#4fd6be",
+ "Checkbox.Focus.Wide.Dark": "#4fd6be",
+ "Checkbox.Foreground.Disabled": "#828bb8",
+ "Checkbox.Foreground.Disabled.Dark": "#828bb8",
+ "Checkbox.Background.Selected": "#4fd6be",
+ "Checkbox.Background.Selected.Dark": "#222436",
+ "Checkbox.Border.Selected": "#4fd6be",
+ "Checkbox.Border.Selected.Dark": "#4fd6be",
+ "Checkbox.Foreground.Selected": "#4fd6be",
+ "Checkbox.Foreground.Selected.Dark": "#4fd6be",
+ "Checkbox.Focus.Thin.Selected": "#c8d3f5",
+ "Checkbox.Focus.Thin.Selected.Dark": "#c8d3f5",
+ "Objects.Grey": "#7a88cf",
+ "Objects.Blue": "#82aaff",
+ "Objects.RedStatus": "#ff757f",
+ "Objects.Red": "#ff757f",
+ "Objects.Pink": "#c099ff",
+ "Objects.Yellow": "#c099ff",
+ "Objects.Green": "#c3e88d",
+ "Objects.Purple": "#c099ff",
+ "Objects.BlackText": "#c8d3f5",
+ "Objects.YellowDark": "#ff966c",
+ "Objects.GreenAndroid": "#c3e88d"
+ }
+ }
+}
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl Contrast.theme.json
index 2e6a6b24..a8a0314a 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl Contrast.theme.json
@@ -3,176 +3,196 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Night Owl.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/nightowl.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
- "acceleratorSelectionForeground": "#5f7e97",
+ "acceleratorSelectionForeground": "#607d8b",
"background": "#011627",
- "borderColor": "#122d42",
- "disabledBackground": "#0e293f",
- "disabledForeground": "#697098",
- "disabledText": "#697098",
- "focusColor": "#084d81",
+ "borderColor": "#2a373e",
+ "disabledBackground": "#0B253A",
+ "disabledForeground": "#2e3c42",
+ "disabledText": "#2e3c42",
+ "focusColor": "#152C3B",
"focusedBorderColor": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveBackground": "#0e293f",
- "inactiveForeground": "#5f7e97",
- "infoForeground": "#5f7e97",
- "selectionBackground": "#5f7e97",
- "selectionBackgroundInactive": "#0b2942",
+ "foreground": "#b0bec5",
+ "inactiveBackground": "#0B253A",
+ "inactiveForeground": "#607d8b",
+ "infoForeground": "#607d8b",
+ "selectionBackground": "#152C3B",
+ "selectionBackgroundInactive": "#011627",
"selectionForeground": "#ffffff",
- "selectionInactiveBackground": "#0b2942",
- "separatorColor": "#122d42"
+ "selectionInactiveBackground": "#011627",
+ "separatorColor": "#2a373e"
},
"activeCaption": "#011627",
"ActionButton": {
"hoverBackground": "#7e57c250",
"hoverBorderColor": "#7e57c250",
- "hoverSeparatorColor": "#0b253a",
+ "hoverSeparatorColor": "#2e3c43",
"focusedBorderColor": "#7e57c250",
"pressedBackground": "#7e57c250",
"pressedBorderColor": "#7e57c250"
},
"Autocomplete": {
- "selectionBackground": "#5f7e97"
+ "selectionBackground": "#152C3B"
},
"Borders.ContrastBorderColor": "#011627",
- "Borders.color": "#122d42",
+ "Borders.color": "#2a373e",
"Button": {
"arc": 0,
"background": "#011627",
"default": {
- "endBackground": "#13344f",
- "endBorderColor": "#13344f",
+ "endBackground": "#152C3B",
+ "endBorderColor": "#152C3B",
"foreground": "#ffffff",
"focusColor": "#7e57c2",
"focusedBorderColor": "#7e57c2",
- "shadowColor": "#13344f",
- "startBackground": "#13344f",
- "startBorderColor": "#13344f"
+ "shadowColor": "#152C3B",
+ "startBackground": "#152C3B",
+ "startBorderColor": "#152C3B"
},
- "disabledBorderColor": "#0b253a",
- "disabledText": "#697098",
- "endBackground": "#0b253a",
- "endBorderColor": "#0b253a",
- "focus": "#084d81",
+ "disabledBorderColor": "#2e3c43",
+ "disabledText": "#2e3c42",
+ "endBackground": "#2e3c43",
+ "endBorderColor": "#2e3c43",
+ "focus": "#152C3B",
"focusedBorderColor": "#7e57c2",
- "foreground": "#5f7e97",
+ "foreground": "#607d8b",
"highlight": "#ffffff",
- "mt.background": "#0b253a",
- "mt.foreground": "#5f7e97",
+ "mt.background": "#2e3c43",
+ "mt.foreground": "#607d8b",
"mt.selectedForeground": "#ffffff",
- "mt.selection.color1": "#13344f",
- "mt.selection.color2": "#13344f",
- "startBackground": "#0b253a",
- "startBorderColor": "#0b253a",
- "shadowColor": "#0b253a",
+ "mt.selection.color1": "#152C3B",
+ "mt.selection.color2": "#152C3B",
+ "startBackground": "#2e3c43",
+ "startBorderColor": "#2e3c43",
+ "shadowColor": "#2e3c43",
"shadowWidth": 0
},
"Canvas": {
- "Tooltip.borderColor": "#122d42",
- "Tooltip.background": "#01111d"
+ "Tooltip.borderColor": "#2a373e",
+ "Tooltip.background": "#152C3B"
+ },
+ "Content": {
+ "background": "#001424",
+ "selectionBackground": "#152C3B"
},
- "Content.background": "#010e1a",
"CheckBox": {
"background": "#011627",
- "disabledText": "#697098",
- "foreground": "#d6deeb",
+ "disabledText": "#2e3c42",
+ "foreground": "#b0bec5",
"select": "#7e57c2"
},
"CheckBoxMenuItem": {
- "acceleratorForeground": "#5f7e97",
- "acceleratorSelectionForeground": "#5f7e97",
+ "acceleratorForeground": "#607d8b",
+ "acceleratorSelectionForeground": "#607d8b",
"background": "#011627",
"disabledBackground": "#011627",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "selectionBackground": "#5f7e97",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#b0bec5",
+ "AccessEnabled": {
+ "accessDot": "#7e57c2",
+ "dropdownBorder": "#011627",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#011627",
- "foreground": "#d6deeb",
- "swatchesDefaultRecentColor": "#d6deeb"
+ "foreground": "#b0bec5",
+ "swatchesDefaultRecentColor": "#b0bec5"
},
- "ComboBoxButton.background": "#0b253a",
+ "ComboBoxButton.background": "#2e3c43",
"ComboBox": {
"ArrowButton": {
- "background": "#0b253a",
- "disabledIconColor": "#697098",
- "iconColor": "#d6deeb",
+ "background": "#2e3c43",
+ "disabledIconColor": "#2e3c42",
+ "iconColor": "#b0bec5",
"nonEditableBackground": "#011627"
},
- "background": "#010e1a",
- "buttonBackground": "#0b253a",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
+ "background": "#001424",
+ "buttonBackground": "#2e3c43",
+ "darcula.hoveredArrowButtonForeground": "#7e57c2",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
"modifiedItemForeground": "#7e57c2",
- "nonEditableBackground": "#0b2942",
+ "nonEditableBackground": "#011627",
"padding": "5,5,5,5",
- "selectionBackground": "#13344f",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
- "ComboPopup.border": "#122d42",
+ "ComboPopup.border": "#2a373e",
"CompletionPopup": {
- "background": "#0b2942",
- "foreground": "#d6deeb",
- "infoForeground": "#5f7e97",
+ "background": "#011627",
+ "foreground": "#b0bec5",
+ "infoForeground": "#607d8b",
"matchForeground": "#7e57c2",
"matchSelectionForeground": "#7e57c2",
"nonFocusedState": "false",
"selectedGrayedForeground": "#ffffff",
"selectionGrayForeground": "#ffffff",
- "selectionInactiveInfoForeground": "#5f7e97",
- "selectionInactiveBackground": "#5f7e9750",
- "selectionBackground": "#5f7e9780",
+ "selectionInactiveInfoForeground": "#607d8b",
+ "selectionInactiveBackground": "#152C3B50",
+ "selectionBackground": "#152C3B80",
"selectionForeground": "#ffffff",
"selectionInfoForeground": "#ffffff"
},
"Component": {
"arc": 4,
- "borderColor": "#084d81",
- "disabledBorderColor": "#0b253a",
+ "borderColor": "#152C3B",
+ "disabledBorderColor": "#2e3c43",
"focusColor": "#7e57c2",
"focusedBorderColor": "#7e57c2",
"hoverIconColor": "#7e57c2",
- "infoForeground": "#5f7e97",
- "iconColor": "#d6deeb"
+ "infoForeground": "#607d8b",
+ "iconColor": "#b0bec5"
},
"control": "#011627",
- "controlText": "#5f7e97",
+ "controlText": "#607d8b",
"Counter": {
"background": "#7e57c2",
"foreground": "#ffffff"
},
"Debugger": {
"Variables": {
- "collectingDataForeground": "#5f7e97",
+ "collectingDataForeground": "#607d8b",
"changedValueForeground": "#7e57c2",
"errorMessageForeground": "#7fdbca",
- "evaluatingExpressionForeground": "#5f7e97",
+ "evaluatingExpressionForeground": "#607d8b",
"exceptionForeground": "#FAD430",
"modifyingValueForeground": "#7e57c2",
"valueForeground": "#7e57c2"
}
},
"DebuggerTabs": {
- "selectedBackground": "#084d81",
- "underlinedTabBackground": "#084d81"
+ "selectedBackground": "#152C3B",
+ "underlinedTabBackground": "#152C3B"
},
"DebuggerPopup": {
- "borderColor": "#084d81"
+ "borderColor": "#152C3B"
},
"DefaultTabs": {
"background": "#011627",
"borderColor": "#011627",
- "hoverBackground": "#13344f",
- "hoverColor": "#010e1a",
- "hoverMaskColor": "#084d81",
- "inactiveColoredFileBackground": "#0b253a",
- "inactiveUnderlineColor": "#697098",
- "inactiveMaskColor": "#010e1a",
+ "hoverBackground": "#152C3B",
+ "hoverColor": "#001424",
+ "hoverMaskColor": "#152C3B",
+ "inactiveColoredTabBackground": "#011627",
+ "inactiveColoredFileBackground": "#2e3c43",
+ "inactiveUnderlineColor": "#7e57c2",
+ "inactiveMaskColor": "#001424",
"underlineColor": "#7e57c2",
- "underlinedTabBackground": "#13344f"
+ "underlinedTabBackground": "#152C3B",
+ "underlinedTabForeground": "#ffffff"
},
"Desktop.background": "#011627",
"DialogWrapper.southPanelBackground": "#011627",
@@ -180,48 +200,50 @@
"DragAndDrop": {
"areaBackground": "#011627",
"areaBorderColor": "#011627",
- "areaForeground": "#d6deeb"
+ "areaForeground": "#b0bec5"
},
"Editor": {
- "background": "#010e1a",
- "foreground": "#d6deeb",
- "shortcutForeground": "#5f7e97"
+ "background": "#001424",
+ "foreground": "#b0bec5",
+ "shortcutForeground": "#607d8b"
},
"EditorPane": {
- "background": "#010e1a",
+ "background": "#001424",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
+ "foreground": "#b0bec5",
"inactiveBackground": "#011627",
- "inactiveForeground": "#697098",
- "selectionBackground": "#5f7e97",
+ "inactiveForeground": "#2e3c42",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"EditorTabs": {
- "borderColor": "#0b2942",
- "hoverColor": "#084d81",
- "hoverMaskColor": "#084d81",
+ "borderColor": "#011627",
+ "hoverBackground": "#152C3B",
+ "hoverColor": "#152C3B",
+ "hoverMaskColor": "#152C3B",
"inactiveMaskColor": "#011627",
- "inactiveColoredFileBackground": "#0116272",
- "inactiveUnderlineColor": "#697098",
- "selectedForeground": "#d6deeb",
- "selectedBackground": "#13344f",
+ "inactiveColoredFileBackground": "#011627",
+ "inactiveUnderlineColor": "#2e3c42",
+ "selectedForeground": "#b0bec5",
+ "selectedBackground": "#152C3B",
"underlineColor": "#7e57c2",
- "underlinedTabBackground": "#13344f"
+ "underlinedTabBackground": "#152C3B",
+ "underlinedTabForeground": "#ffffff"
},
"EditorGroupsTabs": {
"background": "#011627",
- "borderColor": "#0b2942",
- "hoverBackground": "#084d81",
- "hoverColor": "#084d81",
+ "borderColor": "#011627",
+ "hoverBackground": "#152C3B",
+ "hoverColor": "#152C3B",
"inactiveUnderlineColor": "#7e57c2",
"underlineColor": "#7e57c2",
- "underlinedTabBackground": "#13344f",
- "underlinedTabForeground": "#d6deeb"
+ "underlinedTabBackground": "#152C3B",
+ "underlinedTabForeground": "#b0bec5"
},
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#0e293f",
+ "Yellow": "#0B253A",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -236,130 +258,134 @@
"nativeSearchNotMatchedBackground": "#C792EA",
"nativeFocusSearchNotMatchedBackground": "#BB80B3"
},
- "Focus.color": "#122d42",
+ "Focus.color": "#2a373e",
"FormattedTextField": {
- "background": "#010e1a",
+ "background": "#001424",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveBackground": "#0b253a",
- "inactiveForeground": "#697098",
+ "foreground": "#b0bec5",
+ "inactiveBackground": "#2e3c43",
+ "inactiveForeground": "#2e3c42",
"selectionForeground": "#ffffff",
- "selectionBackground": "#13344f"
+ "selectionBackground": "#152C3B"
},
+ "GotItTooltip.borderColor": "#152C3B",
"Group": {
- "disabledSeparatorColor": "#122d42",
- "separatorColor": "#122d42"
+ "disabledSeparatorColor": "#2a373e",
+ "separatorColor": "#2a373e"
},
"GutterTooltip": {
- "infoForeground": "#d6deeb",
+ "infoForeground": "#607d8b",
"lineSeparatorColor": "#011627"
},
"HeaderColor": {
"active": "#011627",
- "inactive": "#010e1a"
+ "inactive": "#001424"
},
"HelpTooltip": {
"background": "#011627",
- "borderColor": "#122d42",
- "foreground": "#d6deeb",
- "infoForeground": "#5f7e97",
- "shortcutForeground": "#5f7e97"
+ "borderColor": "#2a373e",
+ "foreground": "#b0bec5",
+ "infoForeground": "#607d8b",
+ "shortcutForeground": "#607d8b"
},
"Hyperlink.linkColor": "#7e57c2",
- "inactiveCaption": "#0b2942",
+ "inactiveCaption": "#011627",
"inactiveCaptionBorder": "#011627",
- "inactiveCaptionText": "#5f7e97",
- "info": "#5f7e97",
- "infoText": "#5f7e97",
+ "inactiveCaptionText": "#607d8b",
+ "info": "#607d8b",
+ "infoText": "#607d8b",
"IdeStatusBar.border": "4,4,4,4",
- "InformationHint.borderColor": "#122d42",
+ "InformationHint.borderColor": "#2a373e",
"InplaceRefactoringPopup": {
"borderColor": "#011627"
},
"InternalFrame": {
- "activeTitleForeground": "#d6deeb",
+ "activeTitleForeground": "#b0bec5",
"background": "#011627",
- "inactiveTitleForeground": "#5f7e97"
+ "inactiveTitleForeground": "#607d8b"
},
"Label": {
"background": "#011627",
- "disabledForeground": "#697098",
+ "disabledForeground": "#2e3c42",
"disabledShadow": "#011627",
- "disabledText": "#697098",
- "foreground": "#d6deeb",
- "infoForeground": "#5f7e97",
- "selectedForeground": "#ffffff"
+ "disabledText": "#2e3c42",
+ "foreground": "#b0bec5",
+ "infoForeground": "#607d8b",
+ "selectedForeground": "#ffffff",
+ "selectedDisabledForeground": "#b0bec5"
},
"Link": {
"activeForeground": "#7e57c2",
"hoverForeground": "#7e57c2",
"pressedForeground": "#7e57c2",
- "secondaryForeground": "#5f7e97",
+ "secondaryForeground": "#607d8b",
"visitedForeground": "#7e57c2"
},
"link.foreground": "#7e57c2",
"List": {
- "background": "#0b2942",
- "foreground": "#d6deeb",
- "selectionBackground": "#5f7e9750",
+ "background": "#011627",
+ "foreground": "#b0bec5",
+ "hoverBackground": "#152C3B70",
+ "hoverInactiveBackground": "#152C3B",
+ "selectionBackground": "#152C3B50",
"selectionForeground": "#ffffff",
"selectionInactiveForeground": "#ffffff",
- "selectionInactiveBackground": "#13344f50"
+ "selectionInactiveBackground": "#152C3B70"
},
"material": {
"background": "#011627",
- "branchColor": "#d6deeb",
- "contrast": "#010e1a",
- "foreground": "#d6deeb",
- "mergeCommits": "#0b253a",
- "primaryColor": "#5f7e97",
+ "branchColor": "#b0bec5",
+ "contrast": "#001424",
+ "foreground": "#b0bec5",
+ "mergeCommits": "#2e3c43",
+ "primaryColor": "#607d8b",
"selectionForeground": "#ffffff",
"tab.backgroundColor": "#011627",
"tab.borderColor": "#7e57c2",
- "tagColor": "#5f7e97"
+ "tagColor": "#607d8b"
},
"MemoryIndicator": {
- "allocatedBackground": "#0b2942",
- "usedColor": "#084d81",
- "usedBackground": "#084d81"
+ "allocatedBackground": "#011627",
+ "usedColor": "#152C3B",
+ "usedBackground": "#152C3B"
},
"Menu": {
- "acceleratorForeground": "#5f7e97",
+ "acceleratorForeground": "#607d8b",
"acceleratorSelectionForeground": "#ffffff",
"background": "#011627",
"border": "4,2,4,2",
- "borderColor": "#0b2942",
- "disabledBackground": "#0b2942",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "selectionBackground": "#5f7e97",
- "selectionForeground": "#ffffff",
- "separatorColor": "#122d42"
- },
- "MenuBar": {
- "background": "#010e1a",
"borderColor": "#011627",
"disabledBackground": "#011627",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "highlight": "#011627",
- "selectionBackground": "#5f7e97",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff",
- "shadow": "#010e1a"
+ "separatorColor": "#2a373e"
+ },
+ "MenuBar": {
+ "background": "#001424",
+ "borderColor": "#011627",
+ "disabledBackground": "#011627",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "highlight": "#011627",
+ "selectionBackground": "#152C3B",
+ "selectionForeground": "#ffffff",
+ "shadow": "#001424"
},
"MenuItem": {
- "acceleratorForeground": "#5f7e97",
+ "acceleratorForeground": "#607d8b",
"acceleratorSelectionForeground": "#ffffff",
"border": "4,2,4,2",
"background": "#011627",
"disabledBackground": "#011627",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "selectionBackground": "#5f7e97",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"NavBar": {
- "arrowColor": "#d6deeb",
+ "arrowColor": "#b0bec5",
"borderColor": "#011627"
},
"NewClass": {
@@ -367,97 +393,98 @@
"background": "#011627"
},
"SearchField": {
- "background": "#010e1a"
+ "background": "#001424"
}
},
"NewPSD.warning": "#7e57c2",
"Notification": {
- "background": "#01111d",
- "borderColor": "#01111d",
- "errorBackground": "#01111d",
- "errorBorderColor": "#01111d",
- "foreground": "#d6deeb",
+ "background": "#152C3B",
+ "borderColor": "#152C3B",
+ "errorBackground": "#152C3B",
+ "errorBorderColor": "#152C3B",
+ "foreground": "#b0bec5",
"MoreButton": {
- "background": "#0b253a",
- "foreground": "#d6deeb",
- "innerBorderColor": "#0b253a"
+ "background": "#2e3c43",
+ "foreground": "#b0bec5",
+ "innerBorderColor": "#2e3c43"
},
"ToolWindow": {
- "errorBackground": "#01111d",
- "errorBorderColor": "#01111d",
- "informativeBackground": "#01111d",
- "informativeBorderColor": "#01111d",
- "warningBackground": "#01111d",
- "warningBorderColor": "#01111d"
+ "errorBackground": "#152C3B",
+ "errorBorderColor": "#152C3B",
+ "informativeBackground": "#152C3B",
+ "informativeBorderColor": "#152C3B",
+ "warningBackground": "#152C3B",
+ "warningBorderColor": "#152C3B"
}
},
- "OnePixelDivider.background": "#122d42",
+ "OnePixelDivider.background": "#2a373e",
"OptionPane": {
"background": "#011627",
- "foreground": "#d6deeb",
- "messageForeground": "#d6deeb"
+ "foreground": "#b0bec5",
+ "messageForeground": "#b0bec5"
},
"Outline": {
- "color": "#0b253a",
+ "color": "#2e3c43",
"focusedColor": "#7e57c2",
- "disabledColor": "#697098"
+ "disabledColor": "#2e3c42"
},
"Panel": {
"background": "#011627",
- "foreground": "#d6deeb"
+ "foreground": "#b0bec5"
},
"ParameterInfo": {
- "background": "#0b2942",
- "borderColor": "#13344f",
- "currentOverloadBackground": "#13344f",
+ "background": "#011627",
+ "borderColor": "#152C3B",
+ "currentOverloadBackground": "#152C3B",
"currentParameterForeground": "#7e57c2",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "infoForeground": "#5f7e97",
- "lineSeparatorColor": "#13344f"
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "infoForeground": "#607d8b",
+ "lineSeparatorColor": "#152C3B"
},
"PasswordField": {
- "background": "#010e1a",
+ "background": "#001424",
"capsLockIconColor": "#7e57c2",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveForeground": "#697098",
- "selectionBackground": "#13344f",
+ "foreground": "#b0bec5",
+ "inactiveForeground": "#2e3c42",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"Plugins": {
"background": "#011627",
- "disabledForeground": "#697098",
- "eapTagBackground": "#084d81",
- "lightSelectionBackground": "#5f7e97",
- "paidTagBackground": "#084d81",
- "selectionBackground": "#5f7e97",
+ "disabledForeground": "#2e3c42",
+ "eapTagBackground": "#152C3B",
+ "hoverBackground": "#152C3B70",
+ "lightSelectionBackground": "#152C3B",
+ "paidTagBackground": "#152C3B",
+ "selectionBackground": "#152C3B",
"tagForeground": "#7e57c2",
- "tagBackground": "#084d81",
- "trialTagBackground": "#084d81",
+ "tagBackground": "#152C3B",
+ "trialTagBackground": "#152C3B",
"Button": {
- "installBackground": "#0b253a",
- "installBorderColor": "#0b253a",
- "installForeground": "#d6deeb",
- "installFocusedBackground": "#084d81",
- "installFillForeground": "#697098",
- "installFillBackground": "#0b253a",
- "updateBackground": "#0b253a",
- "updateBorderColor": "#0b253a",
- "updateForeground": "#d6deeb"
+ "installBackground": "#2e3c43",
+ "installBorderColor": "#2e3c43",
+ "installForeground": "#b0bec5",
+ "installFocusedBackground": "#152C3B",
+ "installFillForeground": "#2e3c42",
+ "installFillBackground": "#2e3c43",
+ "updateBackground": "#7e57c2",
+ "updateBorderColor": "#2e3c43",
+ "updateForeground": "#b0bec5"
},
"SearchField": {
- "background": "#010e1a",
- "borderColor": "#122d42"
+ "background": "#001424",
+ "borderColor": "#2a373e"
},
"SectionHeader": {
- "background": "#0b2942",
- "foreground": "#d6deeb"
+ "background": "#011627",
+ "foreground": "#b0bec5"
},
"Tab": {
- "hoverBackground": "#13344f",
+ "hoverBackground": "#152C3B",
"selectedForeground": "#ffffff",
- "selectedBackground": "#13344f"
+ "selectedBackground": "#152C3B"
}
},
"Popup": {
@@ -466,26 +493,26 @@
"borderColor": "#011627",
"foreground": "#7e57c2"
},
- "borderColor": "#010e1a",
+ "borderColor": "#001424",
"inactiveBorderColor": "#011627",
- "innerBorderColor": "#0b2942",
+ "innerBorderColor": "#011627",
"Header": {
"activeBackground": "#011627",
- "inactiveBackground": "#010e1a"
+ "inactiveBackground": "#001424"
},
"paintBorder": true,
- "separatorForeground": "#d6deeb",
- "separatorColor": "#0b2942",
+ "separatorForeground": "#b0bec5",
+ "separatorColor": "#011627",
"Toolbar": {
- "Floating.background": "#010e1a",
- "background": "#010e1a",
- "borderColor": "#010e1a"
+ "Floating.background": "#001424",
+ "background": "#001424",
+ "borderColor": "#001424"
}
},
"PopupMenu": {
"background": "#011627",
"border": "2,0,2,0",
- "foreground": "#d6deeb",
+ "foreground": "#b0bec5",
"translucentBackground": "#011627"
},
"PopupMenuSeparator.height": 10,
@@ -496,27 +523,28 @@
"indeterminateEndColor": "#7e57c2",
"indeterminateStartColor": "#7e57c2",
"progressColor": "#7e57c2",
- "selectionBackground": "#084d81",
- "trackColor": "#084d81"
+ "selectionBackground": "#152C3B",
+ "trackColor": "#152C3B"
},
"PsiViewer": {
"referenceHighlightColor": "#7e57c2"
},
"RadioButton": {
"background": "#011627",
- "disabledText": "#697098",
- "foreground": "#d6deeb"
+ "disabledText": "#2e3c42",
+ "foreground": "#b0bec5"
},
"RadioButtonMenuItem": {
- "acceleratorForeground": "#5f7e97",
- "acceleratorSelectionForeground": "#5f7e97",
+ "acceleratorForeground": "#607d8b",
+ "acceleratorSelectionForeground": "#607d8b",
"background": "#011627",
"disabledBackground": "#011627",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "selectionBackground": "#5f7e97",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
+ "ScreenView.borderColor": "#2a373e",
"ScrollBar": {
"background": "#011627",
"hoverThumbBorderColor": "#7e57c2",
@@ -538,7 +566,7 @@
"trackColor": "#01162730"
}
},
- "thumb": "#084d81",
+ "thumb": "#152C3B",
"thumbBorderColor": "#7e57c270",
"thumbColor": "#7e57c270",
"trackColor": "#01162730",
@@ -553,84 +581,95 @@
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#010e1a",
- "foreground": "#5f7e97"
+ "background": "#001424",
+ "foreground": "#607d8b"
},
"Header": {
"background": "#011627"
},
"List": {
- "separatorForeground": "#5f7e97",
- "separatorColor": "#122d42"
+ "separatorForeground": "#607d8b",
+ "separatorColor": "#2a373e"
},
"SearchField": {
"background": "#011627",
- "borderColor": "#010e1a",
- "infoForeground": "#5f7e97"
+ "borderColor": "#001424",
+ "infoForeground": "#607d8b"
},
"Tab": {
"active.foreground": "#ffffff",
"selectedForeground": "#ffffff",
- "selectedBackground": "#084d81"
+ "selectedBackground": "#152C3B"
}
},
"SearchMatch": {
"endBackground": "#7e57c2",
- "startBackground": "#7e57c2"
+ "startBackground": "#7e57c2",
+ "endColor": "#7e57c2",
+ "startColor": "#7e57c2"
+ },
+ "SearchField.errorBackground": "#152C3B",
+ "SearchOption": {
+ "selectedBackground": "#152C3B"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#607d8b",
+ "Repeated.File.Foreground": "#b0bec5"
},
- "SearchField.errorBackground": "#01111d",
"Separator": {
- "background": "#0b2942",
- "foreground": "#0b2942",
- "separatorColor": "#0b2942"
+ "background": "#011627",
+ "foreground": "#011627",
+ "separatorColor": "#011627"
},
"SidePanel": {
- "background": "#010e1a"
+ "background": "#001424"
},
"Slider": {
"background": "#011627",
"buttonBorderColor": "#7e57c2",
"buttonColor": "#7e57c2",
- "foreground": "#d6deeb",
+ "foreground": "#b0bec5",
"majorTickLength": 6,
- "tickColor": "#0b2942",
- "trackColor": "#13344f",
+ "tickColor": "#011627",
+ "trackColor": "#152C3B",
"trackWidth": 7,
"thumb": "#7e57c2"
},
"SpeedSearch": {
- "background": "#084d81",
- "borderColor": "#122d42",
- "foreground": "#d6deeb",
- "errorForeground": "#d6deeb"
+ "background": "#152C3B",
+ "borderColor": "#2a373e",
+ "foreground": "#b0bec5",
+ "errorForeground": "#b0bec5"
},
"Spinner": {
"background": "#011627",
"border": "3,3,3,3",
- "foreground": "#d6deeb",
+ "foreground": "#b0bec5",
"selectionForeground": "#ffffff"
},
"SplitPane": {
"background": "#011627",
- "highlight": "#010e1a"
+ "highlight": "#001424"
},
- "SplitPaneDivider.draggingColor": "#0b2942",
+ "SplitPaneDivider.draggingColor": "#011627",
"StatusBar": {
- "borderColor": "#011627"
+ "borderColor": "#011627",
+ "hoverBackground": "#152C3B",
+ "LightEditBackground": "#152C3B"
},
"TabbedPane": {
"background": "#011627",
- "contentAreaColor": "#084d81",
+ "contentAreaColor": "#152C3B",
"contentBorderInsets": "3,1,1,1",
- "darkShadow": "#122d42",
- "disabledForeground": "#697098",
- "disabledUnderlineColor": "#697098",
- "focus": "#13344f",
- "focusColor": "#13344f",
+ "darkShadow": "#2a373e",
+ "disabledForeground": "#2e3c42",
+ "disabledUnderlineColor": "#2e3c42",
+ "focus": "#152C3B",
+ "focusColor": "#152C3B",
"fontSizeOffset": 0,
- "foreground": "#d6deeb",
- "highlight": "#122d42",
- "hoverColor": "#084d81",
+ "foreground": "#b0bec5",
+ "highlight": "#2a373e",
+ "hoverColor": "#152C3B",
"labelShift": 0,
"selectedForeground": "#ffffff",
"selectedLabelShift": 0,
@@ -641,266 +680,320 @@
"tabSelectionHeight": 2,
"underlineColor": "#7e57c2"
},
- "TabbedPane.mt.tab.background": "#010e1a",
+ "TabbedPane.mt.tab.background": "#001424",
"Table": {
+ "alternativeRowBackground": "#001424",
"background": "#011627",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#2e3c42",
"dropLineColor": "#7e57c2",
"dropLineShortColor": "#7e57c2",
- "focusCellBackground": "#13344f",
+ "focusCellBackground": "#152C3B",
"focusCellForeground": "#ffffff",
- "foreground": "#d6deeb",
+ "foreground": "#b0bec5",
"gridColor": "#011627",
- "highlightOuter": "#13344f",
+ "highlightOuter": "#152C3B",
+ "hoverBackground": "#152C3B70",
+ "hoverInactiveBackground": "#152C3B",
"lightSelectionForeground": "#ffffff",
- "lightSelectionInactiveForeground": "#5f7e97",
- "lightSelectionInactiveBackground": "#0b2942",
- "selectionBackground": "#13344f",
+ "lightSelectionInactiveForeground": "#607d8b",
+ "lightSelectionInactiveBackground": "#011627",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff",
- "selectionInactiveBackground": "#13344f",
+ "selectionInactiveBackground": "#152C3B",
"selectionInactiveForeground": "#ffffff",
- "sortIconColor": "#d6deeb",
- "stripeColor": "#010e1a"
+ "sortIconColor": "#b0bec5",
+ "stripeColor": "#001424"
},
"TableHeader": {
"background": "#011627",
"borderColor": "#011627",
- "bottomSeparatorColor": "#0b2942",
+ "bottomSeparatorColor": "#011627",
"cellBorder": "4,0,4,0",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "focusCellBackground": "#13344f",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "focusCellBackground": "#152C3B",
"focusCellForeground": "#ffffff",
"height": 25,
- "separatorColor": "#0b2942"
+ "separatorColor": "#011627"
},
- "text": "#5f7e97",
- "textInactiveText": "#5f7e97",
- "textText": "#5f7e97",
+ "text": "#607d8b",
+ "textInactiveText": "#607d8b",
+ "textText": "#607d8b",
"TextArea": {
- "background": "#010e1a",
+ "background": "#001424",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveForeground": "#697098",
- "selectionBackground": "#13344f",
+ "foreground": "#b0bec5",
+ "inactiveForeground": "#2e3c42",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"TextField": {
- "background": "#010e1a",
+ "background": "#001424",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveForeground": "#697098",
- "selectionBackground": "#13344f",
+ "foreground": "#b0bec5",
+ "inactiveForeground": "#2e3c42",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"TextPane": {
- "background": "#010e1a",
+ "background": "#001424",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveForeground": "#697098",
- "selectionBackground": "#13344f",
+ "foreground": "#b0bec5",
+ "inactiveForeground": "#2e3c42",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"TitlePane": {
- "background": "#010e1a",
- "Button.hoverBackground": "#084d81",
+ "background": "#001424",
+ "Button.hoverBackground": "#152C3B",
"inactiveBackground": "#011627",
- "infoForeground": "#5f7e97",
- "inactiveInfoForeground": "#5f7e97"
+ "infoForeground": "#607d8b",
+ "inactiveInfoForeground": "#607d8b"
},
- "TitledBorder.titleColor": "#d6deeb",
+ "TitledBorder.titleColor": "#b0bec5",
"ToggleButton": {
- "borderColor": "#0b253a",
- "buttonColor": "#d6deeb",
- "disabledText": "#697098",
- "foreground": "#d6deeb",
+ "borderColor": "#2e3c43",
+ "buttonColor": "#b0bec5",
+ "disabledText": "#2e3c42",
+ "foreground": "#b0bec5",
"offForeground": "#011627",
"offBackground": "#011627",
"onBackground": "#7e57c2",
"onForeground": "#7e57c2"
},
"ToolBar": {
- "background": "#010e1a",
- "borderHandleColor": "#5f7e97",
- "floatingForeground": "#5f7e97",
- "foreground": "#d6deeb"
+ "background": "#001424",
+ "borderHandleColor": "#607d8b",
+ "floatingForeground": "#607d8b",
+ "foreground": "#b0bec5"
},
"ToolTip": {
"Actions.background": "#011627",
- "Actions.infoForeground": "#5f7e97",
- "background": "#011627",
- "borderColor": "#084d81",
- "foreground": "#d6deeb",
- "infoForeground": "#5f7e97",
- "separatorColor": "#122d42",
- "shortcutForeground": "#5f7e97"
+ "Actions.infoForeground": "#607d8b",
+ "background": "#152C3B",
+ "borderColor": "#2a373e",
+ "foreground": "#b0bec5",
+ "infoForeground": "#607d8b",
+ "separatorColor": "#2a373e",
+ "shortcutForeground": "#607d8b"
},
"ToolWindow": {
"Button": {
- "hoverBackground": "#13344f",
+ "hoverBackground": "#152C3B",
"selectedForeground": "#ffffff",
- "selectedBackground": "#010e1a"
+ "selectedBackground": "#001424"
},
"Header": {
"background": "#011627",
- "borderColor": "#0b2942",
+ "borderColor": "#011627",
"inactiveBackground": "#011627"
},
"HeaderCloseButton": {
"background": "#011627"
},
"HeaderTab": {
- "hoverBackground": "#084d81",
- "hoverInactiveBackground": "#0b2942",
+ "borderColor": "#152C3B",
+ "hoverBackground": "#152C3B",
+ "hoverInactiveBackground": "#152C3B",
"inactiveUnderlineColor": "#7e57c2",
- "selectedBackground": "#010e1a",
- "selectedInactiveBackground": "#010e1a",
+ "selectedBackground": "#001424",
+ "selectedInactiveBackground": "#001424",
"underlineColor": "#7e57c2",
- "underlinedTabBackground": "#084d81",
- "underlinedTabInactiveBackground": "#0b2942"
+ "underlinedTabBackground": "#152C3B",
+ "underlinedTabInactiveBackground": "#011627",
+ "underlinedTabForeground": "#ffffff",
+ "underlinedTabInactiveForeground": "#b0bec5"
}
},
"Tree": {
- "background": "#010e1a",
- "foreground": "#5f7e97",
- "hash": "#122d42",
+ "background": "#001424",
+ "foreground": "#607d8b",
+ "hash": "#2a373e",
+ "hoverBackground": "#152C3B70",
+ "hoverInactiveBackground": "#152C3B",
"modifiedItemForeground": "#7e57c2",
"rowHeight": 28,
- "selectionBackground": "#13344f50",
+ "selectionBackground": "#152C3B70",
"selectionForeground": "#ffffff",
"selectionInactiveForeground": "#ffffff",
- "selectionInactiveBackground": "#13344f50",
- "textBackground": "#010e1a"
+ "selectionInactiveBackground": "#152C3B70",
+ "textBackground": "#001424"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
- "Activity.borderColor": "#122d42",
- "ColorPicker.background": "#011627",
- "ColorPicker.foreground": "#d6deeb",
- "Component.borderColor": "#122d42",
- "Component.background": "#011627",
- "Component.foreground": "#d6deeb",
- "Connector.borderColor": "#122d42",
- "Connector.hoverBorderColor": "#084d81",
- "Canvas.background": "#010e1a",
- "highStroke.foreground": "#d6deeb",
- "Label.foreground": "#5f7e97",
- "List.selectionBackground": "#13344f50",
- "Panel.borderColor": "#122d42",
- "Panel.background": "#011627",
- "percent.foreground": "#d6deeb",
- "Placeholder.background": "#011627",
- "Placeholder.borderColor": "#122d42",
- "Placeholder.foreground": "#d6deeb",
- "Placeholder.selectedForeground": "#ffffff",
+ "UIDesigner": {
+ "Activity.borderColor": "#2a373e",
+ "Canvas.background": "#001424",
+ "ColorPicker": {
+ "background": "#011627",
+ "foreground": "#b0bec5"
+ },
+ "Component": {
+ "borderColor": "#2a373e",
+ "background": "#011627",
+ "foreground": "#b0bec5",
+ "hoverBorderColor": "#152C3B"
+ },
+ "Connector": {
+ "borderColor": "#2a373e",
+ "hoverBorderColor": "#152C3B"
+ },
+ "Canvas.background": "#001424",
+ "highStroke.foreground": "#b0bec5",
+ "Label.foreground": "#607d8b",
+ "List.selectionBackground": "#152C3B70",
+ "motion": {
+ "borderColor": "#2a373e",
+ "Component.foreground": "#b0bec5",
+ "ConstraintSetText.foreground": "#607d8b",
+ "ConstraintSet.background": "#011627",
+ "CSPanel.SelectedFocusBackground": "#152C3B",
+ "CSPanel.SelectedBackground": "#152C3B70",
+ "cs_FocusText.infoForeground": "#607d8b",
+ "CursorTextColor.foreground": "#b0bec5",
+ "HoverColor.disabledBackground": "#2e3c42",
+ "motionGraph.background": "#011627",
+ "Notification.background": "#152C3B",
+ "ourAvg.background": "#011627",
+ "ourCS.background": "#011627",
+ "ourCS_Border.borderColor": "#2a373e",
+ "ourCS_TextColor.foreground": "#607d8b",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#ffffff",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#152C3B",
+ "ourCS_SelectedBorder.pressedBorderColor": "#152C3B",
+ "ourML_BarColor.separatorColor": "#2a373e",
+ "PrimaryPanel.background": "#001424",
+ "SecondaryPanel.background": "#011627",
+ "SecondaryPanel.header.foreground": "#607d8b",
+ "SecondaryPanel.header.background": "#001424",
+ "timeLine.disabledBorderColor": "#2a373e"
+ },
+ "Panel": {
+ "borderColor": "#2a373e",
+ "background": "#011627"
+ },
+ "percent.foreground": "#b0bec5",
+ "Placeholder": {
+ "background": "#011627",
+ "borderColor": "#2a373e",
+ "foreground": "#b0bec5",
+ "selectedForeground": "#ffffff"
+ },
"Preview.background": "#011627",
- "stroke.acceleratorForeground": "#5f7e97"
+ "stroke.acceleratorForeground": "#607d8b"
},
"ValidationTooltip": {
- "errorBackground": "#01111d",
- "errorBorderColor": "#01111d",
- "warningBackground": "#01111d",
- "warningBorderColor": "#01111d"
+ "errorBackground": "#152C3B",
+ "errorBorderColor": "#152C3B",
+ "warningBackground": "#152C3B",
+ "warningBorderColor": "#152C3B"
},
"VersionControl": {
"FileHistory.Commit": {
"selectedBranchBackground": "#011627"
},
"GitCommits": {
- "graphColor": "#084d81"
+ "graphColor": "#152C3B"
},
"GitLog": {
"localBranchIconColor": "#7e57c2",
- "otherIconColor": "#5f7e97",
- "remoteBranchIconColor": "#d6deeb",
- "tagIconColor": "#5f7e97"
+ "otherIconColor": "#607d8b",
+ "remoteBranchIconColor": "#b0bec5",
+ "tagIconColor": "#607d8b"
},
"HgLog": {
"branchIconColor": "#7e57c2",
"bookmarkIconColor": "#ffffff",
- "closedBranchIconColor": "#697098",
- "localTagIconColor": "#5f7e97",
- "mqTagIconColor": "#5f7e97",
- "tagIconColor": "#5f7e97",
- "tipIconColor": "#5f7e97"
+ "closedBranchIconColor": "#2e3c42",
+ "localTagIconColor": "#607d8b",
+ "mqTagIconColor": "#607d8b",
+ "tagIconColor": "#607d8b",
+ "tipIconColor": "#607d8b"
},
"Log": {
- "Commit.unmatchedForeground": "#5f7e97",
- "Commit.currentBranchBackground": "#0b2942"
+ "Commit.unmatchedForeground": "#607d8b",
+ "Commit.currentBranchBackground": "#011627",
+ "Commit.hoveredBackground": "#152C3B70"
},
"RefLabel": {
"foreground": "#ffffff",
- "backgroundBase": "#084d81"
+ "backgroundBase": "#152C3B"
}
},
"Viewport": {
- "background": "#010e1a",
- "foreground": "#d6deeb"
+ "background": "#001424",
+ "foreground": "#b0bec5"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#011627",
"background": "#011627",
"borderColor": "#011627",
- "captionBackground": "#010e1a",
- "captionForeground": "#d6deeb",
- "footerBackground": "#010e1a",
- "footerForeground": "#d6deeb",
+ "captionBackground": "#001424",
+ "captionForeground": "#b0bec5",
+ "Details.background": "#011627",
+ "footerBackground": "#001424",
+ "footerForeground": "#b0bec5",
"headerBackground": "#011627",
- "headerForeground": "#d6deeb",
- "separatorColor": "#122d42",
+ "headerForeground": "#b0bec5",
+ "List.background": "#001424",
+ "separatorColor": "#2a373e",
+ "SidePanel.background": "#011627",
"Projects": {
- "background": "#0b2942",
- "selectionBackground": "#5f7e97",
- "selectionInactiveBackground": "#0b2942"
+ "actions.background": "#001424",
+ "actions.selectionBackground": "#152C3B",
+ "background": "#011627",
+ "selectionBackground": "#152C3B",
+ "selectionInactiveBackground": "#011627"
}
},
- "window": "#010e1a",
- "windowBorder": "#122d42",
- "windowText": "#5f7e97",
- "Window.border": "#122d42"
+ "window": "#001424",
+ "windowBorder": "#2a373e",
+ "windowText": "#607d8b",
+ "Window.border": "#2a373e"
},
"icons": {
"ColorPalette": {
- "#43494A": "#010e1a",
- "#6B6B6B": "#5f7e97",
+ "#43494A": "#001424",
+ "#6B6B6B": "#607d8b",
"#A7A7A7": "#011627",
"#3D6185": "#7e57c2",
"#466D94": "#7e57c2",
"#3C3F41": "#011627",
- "#545556": "#697098",
- "#606060": "#697098",
- "#9AA7B0": "#d6deeb",
+ "#545556": "#2e3c42",
+ "#606060": "#2e3c42",
+ "#9AA7B0": "#b0bec5",
"#675133": "#7e57c2",
"Actions.Blue": "#82AAFF",
"Actions.Green": "#ecc48d",
- "Actions.Grey": "#5f7e97",
+ "Actions.Grey": "#607d8b",
"Actions.GreyInline": "#637777",
- "Actions.GreyInline.Dark": "#d6deeb",
+ "Actions.GreyInline.Dark": "#b0bec5",
"Actions.Red": "#7fdbca",
"Actions.Yellow": "#FAD430",
- "Checkbox.Background.Default": "#010e1a",
- "Checkbox.Background.Default.Dark": "#010e1a",
- "Checkbox.Background.Disabled": "#0e293f",
- "Checkbox.Background.Disabled.Dark": "#0e293f",
- "Checkbox.Border.Default": "#122d42",
- "Checkbox.Border.Default.Dark": "#122d42",
- "Checkbox.Border.Disabled": "#697098",
- "Checkbox.Border.Disabled.Dark": "#697098",
+ "Checkbox.Background.Default": "#001424",
+ "Checkbox.Background.Default.Dark": "#001424",
+ "Checkbox.Background.Disabled": "#0B253A",
+ "Checkbox.Background.Disabled.Dark": "#0B253A",
+ "Checkbox.Border.Default": "#2a373e",
+ "Checkbox.Border.Default.Dark": "#2a373e",
+ "Checkbox.Border.Disabled": "#2e3c42",
+ "Checkbox.Border.Disabled.Dark": "#2e3c42",
"Checkbox.Focus.Thin.Default": "#7e57c2",
"Checkbox.Focus.Thin.Default.Dark": "#7e57c2",
"Checkbox.Focus.Wide": "#7e57c2",
"Checkbox.Focus.Wide.Dark": "#7e57c2",
- "Checkbox.Foreground.Disabled": "#697098",
- "Checkbox.Foreground.Disabled.Dark": "#697098",
+ "Checkbox.Foreground.Disabled": "#2e3c42",
+ "Checkbox.Foreground.Disabled.Dark": "#2e3c42",
"Checkbox.Background.Selected": "#7e57c2",
"Checkbox.Background.Selected.Dark": "#011627",
"Checkbox.Border.Selected": "#7e57c2",
"Checkbox.Border.Selected.Dark": "#7e57c2",
"Checkbox.Foreground.Selected": "#7e57c2",
"Checkbox.Foreground.Selected.Dark": "#7e57c2",
- "Checkbox.Focus.Thin.Selected": "#d6deeb",
- "Checkbox.Focus.Thin.Selected.Dark": "#d6deeb",
+ "Checkbox.Focus.Thin.Selected": "#b0bec5",
+ "Checkbox.Focus.Thin.Selected.Dark": "#b0bec5",
"Objects.Grey": "#637777",
"Objects.Blue": "#82AAFF",
"Objects.RedStatus": "#7fdbca",
@@ -909,7 +1002,7 @@
"Objects.Yellow": "#FAD430",
"Objects.Green": "#ecc48d",
"Objects.Purple": "#c792ea",
- "Objects.BlackText": "#d6deeb",
+ "Objects.BlackText": "#b0bec5",
"Objects.YellowDark": "#f78c6c",
"Objects.GreenAndroid": "#ecc48d"
}
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl.theme.json
index 1412b1ce..36e60be7 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Night Owl.theme.json
@@ -3,176 +3,196 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Night Owl.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/nightowl.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
- "acceleratorSelectionForeground": "#5f7e97",
+ "acceleratorSelectionForeground": "#607d8b",
"background": "#011627",
- "borderColor": "#122d42",
- "disabledBackground": "#0e293f",
- "disabledForeground": "#697098",
- "disabledText": "#697098",
- "focusColor": "#084d81",
+ "borderColor": "#2a373e",
+ "disabledBackground": "#0B253A",
+ "disabledForeground": "#2e3c42",
+ "disabledText": "#2e3c42",
+ "focusColor": "#152C3B",
"focusedBorderColor": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveBackground": "#0e293f",
- "inactiveForeground": "#5f7e97",
- "infoForeground": "#5f7e97",
- "selectionBackground": "#5f7e97",
- "selectionBackgroundInactive": "#0b2942",
+ "foreground": "#b0bec5",
+ "inactiveBackground": "#0B253A",
+ "inactiveForeground": "#607d8b",
+ "infoForeground": "#607d8b",
+ "selectionBackground": "#152C3B",
+ "selectionBackgroundInactive": "#011627",
"selectionForeground": "#ffffff",
- "selectionInactiveBackground": "#0b2942",
- "separatorColor": "#122d42"
+ "selectionInactiveBackground": "#011627",
+ "separatorColor": "#2a373e"
},
"activeCaption": "#011627",
"ActionButton": {
"hoverBackground": "#7e57c250",
"hoverBorderColor": "#7e57c250",
- "hoverSeparatorColor": "#0b253a",
+ "hoverSeparatorColor": "#2e3c43",
"focusedBorderColor": "#7e57c250",
"pressedBackground": "#7e57c250",
"pressedBorderColor": "#7e57c250"
},
"Autocomplete": {
- "selectionBackground": "#5f7e97"
+ "selectionBackground": "#152C3B"
},
"Borders.ContrastBorderColor": "#011627",
- "Borders.color": "#122d42",
+ "Borders.color": "#2a373e",
"Button": {
"arc": 0,
"background": "#011627",
"default": {
- "endBackground": "#13344f",
- "endBorderColor": "#13344f",
+ "endBackground": "#152C3B",
+ "endBorderColor": "#152C3B",
"foreground": "#ffffff",
"focusColor": "#7e57c2",
"focusedBorderColor": "#7e57c2",
- "shadowColor": "#13344f",
- "startBackground": "#13344f",
- "startBorderColor": "#13344f"
+ "shadowColor": "#152C3B",
+ "startBackground": "#152C3B",
+ "startBorderColor": "#152C3B"
},
- "disabledBorderColor": "#0b253a",
- "disabledText": "#697098",
- "endBackground": "#0b253a",
- "endBorderColor": "#0b253a",
- "focus": "#084d81",
+ "disabledBorderColor": "#2e3c43",
+ "disabledText": "#2e3c42",
+ "endBackground": "#2e3c43",
+ "endBorderColor": "#2e3c43",
+ "focus": "#152C3B",
"focusedBorderColor": "#7e57c2",
- "foreground": "#5f7e97",
+ "foreground": "#607d8b",
"highlight": "#ffffff",
- "mt.background": "#0b253a",
- "mt.foreground": "#5f7e97",
+ "mt.background": "#2e3c43",
+ "mt.foreground": "#607d8b",
"mt.selectedForeground": "#ffffff",
- "mt.selection.color1": "#13344f",
- "mt.selection.color2": "#13344f",
- "startBackground": "#0b253a",
- "startBorderColor": "#0b253a",
- "shadowColor": "#0b253a",
+ "mt.selection.color1": "#152C3B",
+ "mt.selection.color2": "#152C3B",
+ "startBackground": "#2e3c43",
+ "startBorderColor": "#2e3c43",
+ "shadowColor": "#2e3c43",
"shadowWidth": 0
},
"Canvas": {
- "Tooltip.borderColor": "#122d42",
- "Tooltip.background": "#01111d"
+ "Tooltip.borderColor": "#2a373e",
+ "Tooltip.background": "#152C3B"
+ },
+ "Content": {
+ "background": "#001424",
+ "selectionBackground": "#152C3B"
},
- "Content.background": "#010e1a",
"CheckBox": {
"background": "#011627",
- "disabledText": "#697098",
- "foreground": "#d6deeb",
+ "disabledText": "#2e3c42",
+ "foreground": "#b0bec5",
"select": "#7e57c2"
},
"CheckBoxMenuItem": {
- "acceleratorForeground": "#5f7e97",
- "acceleratorSelectionForeground": "#5f7e97",
+ "acceleratorForeground": "#607d8b",
+ "acceleratorSelectionForeground": "#607d8b",
"background": "#011627",
"disabledBackground": "#011627",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "selectionBackground": "#5f7e97",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#b0bec5",
+ "AccessEnabled": {
+ "accessDot": "#7e57c2",
+ "dropdownBorder": "#011627",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#011627",
- "foreground": "#d6deeb",
- "swatchesDefaultRecentColor": "#d6deeb"
+ "foreground": "#b0bec5",
+ "swatchesDefaultRecentColor": "#b0bec5"
},
- "ComboBoxButton.background": "#0b253a",
+ "ComboBoxButton.background": "#2e3c43",
"ComboBox": {
"ArrowButton": {
- "background": "#0b253a",
- "disabledIconColor": "#697098",
- "iconColor": "#d6deeb",
+ "background": "#2e3c43",
+ "disabledIconColor": "#2e3c42",
+ "iconColor": "#b0bec5",
"nonEditableBackground": "#011627"
},
"background": "#011627",
- "buttonBackground": "#0b253a",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
+ "buttonBackground": "#2e3c43",
+ "darcula.hoveredArrowButtonForeground": "#7e57c2",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
"modifiedItemForeground": "#7e57c2",
- "nonEditableBackground": "#0b2942",
+ "nonEditableBackground": "#011627",
"padding": "5,5,5,5",
- "selectionBackground": "#13344f",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
- "ComboPopup.border": "#122d42",
+ "ComboPopup.border": "#2a373e",
"CompletionPopup": {
- "background": "#0b2942",
- "foreground": "#d6deeb",
- "infoForeground": "#5f7e97",
+ "background": "#011627",
+ "foreground": "#b0bec5",
+ "infoForeground": "#607d8b",
"matchForeground": "#7e57c2",
"matchSelectionForeground": "#7e57c2",
"nonFocusedState": "false",
"selectedGrayedForeground": "#ffffff",
"selectionGrayForeground": "#ffffff",
- "selectionInactiveInfoForeground": "#5f7e97",
- "selectionInactiveBackground": "#5f7e9750",
- "selectionBackground": "#5f7e9780",
+ "selectionInactiveInfoForeground": "#607d8b",
+ "selectionInactiveBackground": "#152C3B50",
+ "selectionBackground": "#152C3B80",
"selectionForeground": "#ffffff",
"selectionInfoForeground": "#ffffff"
},
"Component": {
"arc": 4,
- "borderColor": "#084d81",
- "disabledBorderColor": "#0b253a",
+ "borderColor": "#152C3B",
+ "disabledBorderColor": "#2e3c43",
"focusColor": "#7e57c2",
"focusedBorderColor": "#7e57c2",
"hoverIconColor": "#7e57c2",
- "infoForeground": "#5f7e97",
- "iconColor": "#d6deeb"
+ "infoForeground": "#607d8b",
+ "iconColor": "#b0bec5"
},
"control": "#011627",
- "controlText": "#5f7e97",
+ "controlText": "#607d8b",
"Counter": {
"background": "#7e57c2",
"foreground": "#ffffff"
},
"Debugger": {
"Variables": {
- "collectingDataForeground": "#5f7e97",
+ "collectingDataForeground": "#607d8b",
"changedValueForeground": "#7e57c2",
"errorMessageForeground": "#7fdbca",
- "evaluatingExpressionForeground": "#5f7e97",
+ "evaluatingExpressionForeground": "#607d8b",
"exceptionForeground": "#FAD430",
"modifyingValueForeground": "#7e57c2",
"valueForeground": "#7e57c2"
}
},
"DebuggerTabs": {
- "selectedBackground": "#084d81",
- "underlinedTabBackground": "#084d81"
+ "selectedBackground": "#152C3B",
+ "underlinedTabBackground": "#152C3B"
},
"DebuggerPopup": {
- "borderColor": "#084d81"
+ "borderColor": "#152C3B"
},
"DefaultTabs": {
"background": "#011627",
"borderColor": "#011627",
- "hoverBackground": "#13344f",
+ "hoverBackground": "#152C3B",
"hoverColor": "#011627",
- "hoverMaskColor": "#084d81",
- "inactiveColoredFileBackground": "#0b253a",
- "inactiveUnderlineColor": "#697098",
+ "hoverMaskColor": "#152C3B",
+ "inactiveColoredTabBackground": "#011627",
+ "inactiveColoredFileBackground": "#2e3c43",
+ "inactiveUnderlineColor": "#7e57c2",
"inactiveMaskColor": "#011627",
"underlineColor": "#7e57c2",
- "underlinedTabBackground": "#13344f"
+ "underlinedTabBackground": "#152C3B",
+ "underlinedTabForeground": "#ffffff"
},
"Desktop.background": "#011627",
"DialogWrapper.southPanelBackground": "#011627",
@@ -180,48 +200,50 @@
"DragAndDrop": {
"areaBackground": "#011627",
"areaBorderColor": "#011627",
- "areaForeground": "#d6deeb"
+ "areaForeground": "#b0bec5"
},
"Editor": {
"background": "#011627",
- "foreground": "#d6deeb",
- "shortcutForeground": "#5f7e97"
+ "foreground": "#b0bec5",
+ "shortcutForeground": "#607d8b"
},
"EditorPane": {
"background": "#011627",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
+ "foreground": "#b0bec5",
"inactiveBackground": "#011627",
- "inactiveForeground": "#697098",
- "selectionBackground": "#5f7e97",
+ "inactiveForeground": "#2e3c42",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"EditorTabs": {
- "borderColor": "#0b2942",
- "hoverColor": "#084d81",
- "hoverMaskColor": "#084d81",
+ "borderColor": "#011627",
+ "hoverBackground": "#152C3B",
+ "hoverColor": "#152C3B",
+ "hoverMaskColor": "#152C3B",
"inactiveMaskColor": "#011627",
- "inactiveColoredFileBackground": "#0116272",
- "inactiveUnderlineColor": "#697098",
- "selectedForeground": "#d6deeb",
- "selectedBackground": "#13344f",
+ "inactiveColoredFileBackground": "#011627",
+ "inactiveUnderlineColor": "#2e3c42",
+ "selectedForeground": "#b0bec5",
+ "selectedBackground": "#152C3B",
"underlineColor": "#7e57c2",
- "underlinedTabBackground": "#13344f"
+ "underlinedTabBackground": "#152C3B",
+ "underlinedTabForeground": "#ffffff"
},
"EditorGroupsTabs": {
"background": "#011627",
- "borderColor": "#0b2942",
- "hoverBackground": "#084d81",
- "hoverColor": "#084d81",
+ "borderColor": "#011627",
+ "hoverBackground": "#152C3B",
+ "hoverColor": "#152C3B",
"inactiveUnderlineColor": "#7e57c2",
"underlineColor": "#7e57c2",
- "underlinedTabBackground": "#13344f",
- "underlinedTabForeground": "#d6deeb"
+ "underlinedTabBackground": "#152C3B",
+ "underlinedTabForeground": "#b0bec5"
},
"FileColor": {
"Green": "#387002",
"Blue": "#004BA0",
- "Yellow": "#0e293f",
+ "Yellow": "#0B253A",
"Orange": "#B53D00",
"Violet": "#4D2C91",
"Rose": "#A00037"
@@ -236,130 +258,134 @@
"nativeSearchNotMatchedBackground": "#C792EA",
"nativeFocusSearchNotMatchedBackground": "#BB80B3"
},
- "Focus.color": "#122d42",
+ "Focus.color": "#2a373e",
"FormattedTextField": {
"background": "#011627",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveBackground": "#0b253a",
- "inactiveForeground": "#697098",
+ "foreground": "#b0bec5",
+ "inactiveBackground": "#2e3c43",
+ "inactiveForeground": "#2e3c42",
"selectionForeground": "#ffffff",
- "selectionBackground": "#13344f"
+ "selectionBackground": "#152C3B"
},
+ "GotItTooltip.borderColor": "#152C3B",
"Group": {
- "disabledSeparatorColor": "#122d42",
- "separatorColor": "#122d42"
+ "disabledSeparatorColor": "#2a373e",
+ "separatorColor": "#2a373e"
},
"GutterTooltip": {
- "infoForeground": "#d6deeb",
+ "infoForeground": "#607d8b",
"lineSeparatorColor": "#011627"
},
"HeaderColor": {
"active": "#011627",
- "inactive": "#010e1a"
+ "inactive": "#001424"
},
"HelpTooltip": {
"background": "#011627",
- "borderColor": "#122d42",
- "foreground": "#d6deeb",
- "infoForeground": "#5f7e97",
- "shortcutForeground": "#5f7e97"
+ "borderColor": "#2a373e",
+ "foreground": "#b0bec5",
+ "infoForeground": "#607d8b",
+ "shortcutForeground": "#607d8b"
},
"Hyperlink.linkColor": "#7e57c2",
- "inactiveCaption": "#0b2942",
+ "inactiveCaption": "#011627",
"inactiveCaptionBorder": "#011627",
- "inactiveCaptionText": "#5f7e97",
- "info": "#5f7e97",
- "infoText": "#5f7e97",
+ "inactiveCaptionText": "#607d8b",
+ "info": "#607d8b",
+ "infoText": "#607d8b",
"IdeStatusBar.border": "4,4,4,4",
- "InformationHint.borderColor": "#122d42",
+ "InformationHint.borderColor": "#2a373e",
"InplaceRefactoringPopup": {
"borderColor": "#011627"
},
"InternalFrame": {
- "activeTitleForeground": "#d6deeb",
+ "activeTitleForeground": "#b0bec5",
"background": "#011627",
- "inactiveTitleForeground": "#5f7e97"
+ "inactiveTitleForeground": "#607d8b"
},
"Label": {
"background": "#011627",
- "disabledForeground": "#697098",
+ "disabledForeground": "#2e3c42",
"disabledShadow": "#011627",
- "disabledText": "#697098",
- "foreground": "#d6deeb",
- "infoForeground": "#5f7e97",
- "selectedForeground": "#ffffff"
+ "disabledText": "#2e3c42",
+ "foreground": "#b0bec5",
+ "infoForeground": "#607d8b",
+ "selectedForeground": "#ffffff",
+ "selectedDisabledForeground": "#b0bec5"
},
"Link": {
"activeForeground": "#7e57c2",
"hoverForeground": "#7e57c2",
"pressedForeground": "#7e57c2",
- "secondaryForeground": "#5f7e97",
+ "secondaryForeground": "#607d8b",
"visitedForeground": "#7e57c2"
},
"link.foreground": "#7e57c2",
"List": {
- "background": "#0b2942",
- "foreground": "#d6deeb",
- "selectionBackground": "#5f7e9750",
+ "background": "#011627",
+ "foreground": "#b0bec5",
+ "hoverBackground": "#152C3B70",
+ "hoverInactiveBackground": "#152C3B",
+ "selectionBackground": "#152C3B50",
"selectionForeground": "#ffffff",
"selectionInactiveForeground": "#ffffff",
- "selectionInactiveBackground": "#13344f50"
+ "selectionInactiveBackground": "#152C3B70"
},
"material": {
"background": "#011627",
- "branchColor": "#d6deeb",
- "contrast": "#010e1a",
- "foreground": "#d6deeb",
- "mergeCommits": "#0b253a",
- "primaryColor": "#5f7e97",
+ "branchColor": "#b0bec5",
+ "contrast": "#001424",
+ "foreground": "#b0bec5",
+ "mergeCommits": "#2e3c43",
+ "primaryColor": "#607d8b",
"selectionForeground": "#ffffff",
"tab.backgroundColor": "#011627",
"tab.borderColor": "#7e57c2",
- "tagColor": "#5f7e97"
+ "tagColor": "#607d8b"
},
"MemoryIndicator": {
- "allocatedBackground": "#0b2942",
- "usedColor": "#084d81",
- "usedBackground": "#084d81"
+ "allocatedBackground": "#011627",
+ "usedColor": "#152C3B",
+ "usedBackground": "#152C3B"
},
"Menu": {
- "acceleratorForeground": "#5f7e97",
+ "acceleratorForeground": "#607d8b",
"acceleratorSelectionForeground": "#ffffff",
"background": "#011627",
"border": "4,2,4,2",
- "borderColor": "#0b2942",
- "disabledBackground": "#0b2942",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "selectionBackground": "#5f7e97",
+ "borderColor": "#011627",
+ "disabledBackground": "#011627",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff",
- "separatorColor": "#122d42"
+ "separatorColor": "#2a373e"
},
"MenuBar": {
"background": "#011627",
"borderColor": "#011627",
"disabledBackground": "#011627",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
"highlight": "#011627",
- "selectionBackground": "#5f7e97",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff",
"shadow": "#011627"
},
"MenuItem": {
- "acceleratorForeground": "#5f7e97",
+ "acceleratorForeground": "#607d8b",
"acceleratorSelectionForeground": "#ffffff",
"border": "4,2,4,2",
"background": "#011627",
"disabledBackground": "#011627",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "selectionBackground": "#5f7e97",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"NavBar": {
- "arrowColor": "#d6deeb",
+ "arrowColor": "#b0bec5",
"borderColor": "#011627"
},
"NewClass": {
@@ -372,92 +398,93 @@
},
"NewPSD.warning": "#7e57c2",
"Notification": {
- "background": "#01111d",
- "borderColor": "#01111d",
- "errorBackground": "#01111d",
- "errorBorderColor": "#01111d",
- "foreground": "#d6deeb",
+ "background": "#152C3B",
+ "borderColor": "#152C3B",
+ "errorBackground": "#152C3B",
+ "errorBorderColor": "#152C3B",
+ "foreground": "#b0bec5",
"MoreButton": {
- "background": "#0b253a",
- "foreground": "#d6deeb",
- "innerBorderColor": "#0b253a"
+ "background": "#2e3c43",
+ "foreground": "#b0bec5",
+ "innerBorderColor": "#2e3c43"
},
"ToolWindow": {
- "errorBackground": "#01111d",
- "errorBorderColor": "#01111d",
- "informativeBackground": "#01111d",
- "informativeBorderColor": "#01111d",
- "warningBackground": "#01111d",
- "warningBorderColor": "#01111d"
+ "errorBackground": "#152C3B",
+ "errorBorderColor": "#152C3B",
+ "informativeBackground": "#152C3B",
+ "informativeBorderColor": "#152C3B",
+ "warningBackground": "#152C3B",
+ "warningBorderColor": "#152C3B"
}
},
- "OnePixelDivider.background": "#122d42",
+ "OnePixelDivider.background": "#2a373e",
"OptionPane": {
"background": "#011627",
- "foreground": "#d6deeb",
- "messageForeground": "#d6deeb"
+ "foreground": "#b0bec5",
+ "messageForeground": "#b0bec5"
},
"Outline": {
- "color": "#0b253a",
+ "color": "#2e3c43",
"focusedColor": "#7e57c2",
- "disabledColor": "#697098"
+ "disabledColor": "#2e3c42"
},
"Panel": {
"background": "#011627",
- "foreground": "#d6deeb"
+ "foreground": "#b0bec5"
},
"ParameterInfo": {
- "background": "#0b2942",
- "borderColor": "#13344f",
- "currentOverloadBackground": "#13344f",
+ "background": "#011627",
+ "borderColor": "#152C3B",
+ "currentOverloadBackground": "#152C3B",
"currentParameterForeground": "#7e57c2",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "infoForeground": "#5f7e97",
- "lineSeparatorColor": "#13344f"
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "infoForeground": "#607d8b",
+ "lineSeparatorColor": "#152C3B"
},
"PasswordField": {
"background": "#011627",
"capsLockIconColor": "#7e57c2",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveForeground": "#697098",
- "selectionBackground": "#13344f",
+ "foreground": "#b0bec5",
+ "inactiveForeground": "#2e3c42",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"Plugins": {
"background": "#011627",
- "disabledForeground": "#697098",
- "eapTagBackground": "#084d81",
- "lightSelectionBackground": "#5f7e97",
- "paidTagBackground": "#084d81",
- "selectionBackground": "#5f7e97",
+ "disabledForeground": "#2e3c42",
+ "eapTagBackground": "#152C3B",
+ "hoverBackground": "#152C3B70",
+ "lightSelectionBackground": "#152C3B",
+ "paidTagBackground": "#152C3B",
+ "selectionBackground": "#152C3B",
"tagForeground": "#7e57c2",
- "tagBackground": "#084d81",
- "trialTagBackground": "#084d81",
+ "tagBackground": "#152C3B",
+ "trialTagBackground": "#152C3B",
"Button": {
- "installBackground": "#0b253a",
- "installBorderColor": "#0b253a",
- "installForeground": "#d6deeb",
- "installFocusedBackground": "#084d81",
- "installFillForeground": "#697098",
- "installFillBackground": "#0b253a",
- "updateBackground": "#0b253a",
- "updateBorderColor": "#0b253a",
- "updateForeground": "#d6deeb"
+ "installBackground": "#2e3c43",
+ "installBorderColor": "#2e3c43",
+ "installForeground": "#b0bec5",
+ "installFocusedBackground": "#152C3B",
+ "installFillForeground": "#2e3c42",
+ "installFillBackground": "#2e3c43",
+ "updateBackground": "#7e57c2",
+ "updateBorderColor": "#2e3c43",
+ "updateForeground": "#b0bec5"
},
"SearchField": {
"background": "#011627",
- "borderColor": "#122d42"
+ "borderColor": "#2a373e"
},
"SectionHeader": {
- "background": "#0b2942",
- "foreground": "#d6deeb"
+ "background": "#011627",
+ "foreground": "#b0bec5"
},
"Tab": {
- "hoverBackground": "#13344f",
+ "hoverBackground": "#152C3B",
"selectedForeground": "#ffffff",
- "selectedBackground": "#13344f"
+ "selectedBackground": "#152C3B"
}
},
"Popup": {
@@ -466,26 +493,26 @@
"borderColor": "#011627",
"foreground": "#7e57c2"
},
- "borderColor": "#010e1a",
+ "borderColor": "#001424",
"inactiveBorderColor": "#011627",
- "innerBorderColor": "#0b2942",
+ "innerBorderColor": "#011627",
"Header": {
"activeBackground": "#011627",
- "inactiveBackground": "#010e1a"
+ "inactiveBackground": "#001424"
},
"paintBorder": true,
- "separatorForeground": "#d6deeb",
- "separatorColor": "#0b2942",
+ "separatorForeground": "#b0bec5",
+ "separatorColor": "#011627",
"Toolbar": {
- "Floating.background": "#010e1a",
- "background": "#010e1a",
- "borderColor": "#010e1a"
+ "Floating.background": "#001424",
+ "background": "#001424",
+ "borderColor": "#001424"
}
},
"PopupMenu": {
"background": "#011627",
"border": "2,0,2,0",
- "foreground": "#d6deeb",
+ "foreground": "#b0bec5",
"translucentBackground": "#011627"
},
"PopupMenuSeparator.height": 10,
@@ -496,27 +523,28 @@
"indeterminateEndColor": "#7e57c2",
"indeterminateStartColor": "#7e57c2",
"progressColor": "#7e57c2",
- "selectionBackground": "#084d81",
- "trackColor": "#084d81"
+ "selectionBackground": "#152C3B",
+ "trackColor": "#152C3B"
},
"PsiViewer": {
"referenceHighlightColor": "#7e57c2"
},
"RadioButton": {
"background": "#011627",
- "disabledText": "#697098",
- "foreground": "#d6deeb"
+ "disabledText": "#2e3c42",
+ "foreground": "#b0bec5"
},
"RadioButtonMenuItem": {
- "acceleratorForeground": "#5f7e97",
- "acceleratorSelectionForeground": "#5f7e97",
+ "acceleratorForeground": "#607d8b",
+ "acceleratorSelectionForeground": "#607d8b",
"background": "#011627",
"disabledBackground": "#011627",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "selectionBackground": "#5f7e97",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
+ "ScreenView.borderColor": "#2a373e",
"ScrollBar": {
"background": "#011627",
"hoverThumbBorderColor": "#7e57c2",
@@ -538,7 +566,7 @@
"trackColor": "#01162730"
}
},
- "thumb": "#084d81",
+ "thumb": "#152C3B",
"thumbBorderColor": "#7e57c270",
"thumbColor": "#7e57c270",
"trackColor": "#01162730",
@@ -553,36 +581,45 @@
},
"SearchEverywhere": {
"Advertiser": {
- "background": "#010e1a",
- "foreground": "#5f7e97"
+ "background": "#001424",
+ "foreground": "#607d8b"
},
"Header": {
"background": "#011627"
},
"List": {
- "separatorForeground": "#5f7e97",
- "separatorColor": "#122d42"
+ "separatorForeground": "#607d8b",
+ "separatorColor": "#2a373e"
},
"SearchField": {
"background": "#011627",
- "borderColor": "#010e1a",
- "infoForeground": "#5f7e97"
+ "borderColor": "#001424",
+ "infoForeground": "#607d8b"
},
"Tab": {
"active.foreground": "#ffffff",
"selectedForeground": "#ffffff",
- "selectedBackground": "#084d81"
+ "selectedBackground": "#152C3B"
}
},
"SearchMatch": {
"endBackground": "#7e57c2",
- "startBackground": "#7e57c2"
+ "startBackground": "#7e57c2",
+ "endColor": "#7e57c2",
+ "startColor": "#7e57c2"
+ },
+ "SearchField.errorBackground": "#152C3B",
+ "SearchOption": {
+ "selectedBackground": "#152C3B"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#607d8b",
+ "Repeated.File.Foreground": "#b0bec5"
},
- "SearchField.errorBackground": "#01111d",
"Separator": {
- "background": "#0b2942",
- "foreground": "#0b2942",
- "separatorColor": "#0b2942"
+ "background": "#011627",
+ "foreground": "#011627",
+ "separatorColor": "#011627"
},
"SidePanel": {
"background": "#011627"
@@ -591,46 +628,48 @@
"background": "#011627",
"buttonBorderColor": "#7e57c2",
"buttonColor": "#7e57c2",
- "foreground": "#d6deeb",
+ "foreground": "#b0bec5",
"majorTickLength": 6,
- "tickColor": "#0b2942",
- "trackColor": "#13344f",
+ "tickColor": "#011627",
+ "trackColor": "#152C3B",
"trackWidth": 7,
"thumb": "#7e57c2"
},
"SpeedSearch": {
- "background": "#084d81",
- "borderColor": "#122d42",
- "foreground": "#d6deeb",
- "errorForeground": "#d6deeb"
+ "background": "#152C3B",
+ "borderColor": "#2a373e",
+ "foreground": "#b0bec5",
+ "errorForeground": "#b0bec5"
},
"Spinner": {
"background": "#011627",
"border": "3,3,3,3",
- "foreground": "#d6deeb",
+ "foreground": "#b0bec5",
"selectionForeground": "#ffffff"
},
"SplitPane": {
"background": "#011627",
"highlight": "#011627"
},
- "SplitPaneDivider.draggingColor": "#0b2942",
+ "SplitPaneDivider.draggingColor": "#011627",
"StatusBar": {
- "borderColor": "#011627"
+ "borderColor": "#011627",
+ "hoverBackground": "#152C3B",
+ "LightEditBackground": "#152C3B"
},
"TabbedPane": {
"background": "#011627",
- "contentAreaColor": "#084d81",
+ "contentAreaColor": "#152C3B",
"contentBorderInsets": "3,1,1,1",
- "darkShadow": "#122d42",
- "disabledForeground": "#697098",
- "disabledUnderlineColor": "#697098",
- "focus": "#13344f",
- "focusColor": "#13344f",
+ "darkShadow": "#2a373e",
+ "disabledForeground": "#2e3c42",
+ "disabledUnderlineColor": "#2e3c42",
+ "focus": "#152C3B",
+ "focusColor": "#152C3B",
"fontSizeOffset": 0,
- "foreground": "#d6deeb",
- "highlight": "#122d42",
- "hoverColor": "#084d81",
+ "foreground": "#b0bec5",
+ "highlight": "#2a373e",
+ "hoverColor": "#152C3B",
"labelShift": 0,
"selectedForeground": "#ffffff",
"selectedLabelShift": 0,
@@ -643,78 +682,82 @@
},
"TabbedPane.mt.tab.background": "#011627",
"Table": {
+ "alternativeRowBackground": "#001424",
"background": "#011627",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#2e3c42",
"dropLineColor": "#7e57c2",
"dropLineShortColor": "#7e57c2",
- "focusCellBackground": "#13344f",
+ "focusCellBackground": "#152C3B",
"focusCellForeground": "#ffffff",
- "foreground": "#d6deeb",
+ "foreground": "#b0bec5",
"gridColor": "#011627",
- "highlightOuter": "#13344f",
+ "highlightOuter": "#152C3B",
+ "hoverBackground": "#152C3B70",
+ "hoverInactiveBackground": "#152C3B",
"lightSelectionForeground": "#ffffff",
- "lightSelectionInactiveForeground": "#5f7e97",
- "lightSelectionInactiveBackground": "#0b2942",
- "selectionBackground": "#13344f",
+ "lightSelectionInactiveForeground": "#607d8b",
+ "lightSelectionInactiveBackground": "#011627",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff",
- "selectionInactiveBackground": "#13344f",
+ "selectionInactiveBackground": "#152C3B",
"selectionInactiveForeground": "#ffffff",
- "sortIconColor": "#d6deeb",
- "stripeColor": "#010e1a"
+ "sortIconColor": "#b0bec5",
+ "stripeColor": "#001424"
},
"TableHeader": {
"background": "#011627",
"borderColor": "#011627",
- "bottomSeparatorColor": "#0b2942",
+ "bottomSeparatorColor": "#011627",
"cellBorder": "4,0,4,0",
- "disabledForeground": "#697098",
- "foreground": "#d6deeb",
- "focusCellBackground": "#13344f",
+ "disabledForeground": "#2e3c42",
+ "foreground": "#b0bec5",
+ "focusCellBackground": "#152C3B",
"focusCellForeground": "#ffffff",
"height": 25,
- "separatorColor": "#0b2942"
+ "separatorColor": "#011627"
},
- "text": "#5f7e97",
- "textInactiveText": "#5f7e97",
- "textText": "#5f7e97",
+ "text": "#607d8b",
+ "textInactiveText": "#607d8b",
+ "textText": "#607d8b",
"TextArea": {
"background": "#011627",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveForeground": "#697098",
- "selectionBackground": "#13344f",
+ "foreground": "#b0bec5",
+ "inactiveForeground": "#2e3c42",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"TextField": {
"background": "#011627",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveForeground": "#697098",
- "selectionBackground": "#13344f",
+ "foreground": "#b0bec5",
+ "inactiveForeground": "#2e3c42",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"TextPane": {
"background": "#011627",
"caretForeground": "#7e57c2",
- "foreground": "#d6deeb",
- "inactiveForeground": "#697098",
- "selectionBackground": "#13344f",
+ "foreground": "#b0bec5",
+ "inactiveForeground": "#2e3c42",
+ "selectionBackground": "#152C3B",
"selectionForeground": "#ffffff"
},
"TitlePane": {
- "background": "#010e1a",
- "Button.hoverBackground": "#084d81",
+ "background": "#001424",
+ "Button.hoverBackground": "#152C3B",
"inactiveBackground": "#011627",
- "infoForeground": "#5f7e97",
- "inactiveInfoForeground": "#5f7e97"
+ "infoForeground": "#607d8b",
+ "inactiveInfoForeground": "#607d8b"
},
- "TitledBorder.titleColor": "#d6deeb",
+ "TitledBorder.titleColor": "#b0bec5",
"ToggleButton": {
- "borderColor": "#0b253a",
- "buttonColor": "#d6deeb",
- "disabledText": "#697098",
- "foreground": "#d6deeb",
+ "borderColor": "#2e3c43",
+ "buttonColor": "#b0bec5",
+ "disabledText": "#2e3c42",
+ "foreground": "#b0bec5",
"offForeground": "#011627",
"offBackground": "#011627",
"onBackground": "#7e57c2",
@@ -722,185 +765,235 @@
},
"ToolBar": {
"background": "#011627",
- "borderHandleColor": "#5f7e97",
- "floatingForeground": "#5f7e97",
- "foreground": "#d6deeb"
+ "borderHandleColor": "#607d8b",
+ "floatingForeground": "#607d8b",
+ "foreground": "#b0bec5"
},
"ToolTip": {
"Actions.background": "#011627",
- "Actions.infoForeground": "#5f7e97",
- "background": "#011627",
- "borderColor": "#084d81",
- "foreground": "#d6deeb",
- "infoForeground": "#5f7e97",
- "separatorColor": "#122d42",
- "shortcutForeground": "#5f7e97"
+ "Actions.infoForeground": "#607d8b",
+ "background": "#152C3B",
+ "borderColor": "#2a373e",
+ "foreground": "#b0bec5",
+ "infoForeground": "#607d8b",
+ "separatorColor": "#2a373e",
+ "shortcutForeground": "#607d8b"
},
"ToolWindow": {
"Button": {
- "hoverBackground": "#13344f",
+ "hoverBackground": "#152C3B",
"selectedForeground": "#ffffff",
- "selectedBackground": "#010e1a"
+ "selectedBackground": "#001424"
},
"Header": {
"background": "#011627",
- "borderColor": "#0b2942",
+ "borderColor": "#011627",
"inactiveBackground": "#011627"
},
"HeaderCloseButton": {
"background": "#011627"
},
"HeaderTab": {
- "hoverBackground": "#084d81",
- "hoverInactiveBackground": "#0b2942",
+ "borderColor": "#152C3B",
+ "hoverBackground": "#152C3B",
+ "hoverInactiveBackground": "#152C3B",
"inactiveUnderlineColor": "#7e57c2",
- "selectedBackground": "#010e1a",
- "selectedInactiveBackground": "#010e1a",
+ "selectedBackground": "#001424",
+ "selectedInactiveBackground": "#001424",
"underlineColor": "#7e57c2",
- "underlinedTabBackground": "#084d81",
- "underlinedTabInactiveBackground": "#0b2942"
+ "underlinedTabBackground": "#152C3B",
+ "underlinedTabInactiveBackground": "#011627",
+ "underlinedTabForeground": "#ffffff",
+ "underlinedTabInactiveForeground": "#b0bec5"
}
},
"Tree": {
"background": "#011627",
- "foreground": "#5f7e97",
- "hash": "#122d42",
+ "foreground": "#607d8b",
+ "hash": "#2a373e",
+ "hoverBackground": "#152C3B70",
+ "hoverInactiveBackground": "#152C3B",
"modifiedItemForeground": "#7e57c2",
"rowHeight": 28,
- "selectionBackground": "#13344f50",
+ "selectionBackground": "#152C3B70",
"selectionForeground": "#ffffff",
"selectionInactiveForeground": "#ffffff",
- "selectionInactiveBackground": "#13344f50",
+ "selectionInactiveBackground": "#152C3B70",
"textBackground": "#011627"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
- "Activity.borderColor": "#122d42",
- "ColorPicker.background": "#011627",
- "ColorPicker.foreground": "#d6deeb",
- "Component.borderColor": "#122d42",
- "Component.background": "#011627",
- "Component.foreground": "#d6deeb",
- "Connector.borderColor": "#122d42",
- "Connector.hoverBorderColor": "#084d81",
- "Canvas.background": "#010e1a",
- "highStroke.foreground": "#d6deeb",
- "Label.foreground": "#5f7e97",
- "List.selectionBackground": "#13344f50",
- "Panel.borderColor": "#122d42",
- "Panel.background": "#011627",
- "percent.foreground": "#d6deeb",
- "Placeholder.background": "#011627",
- "Placeholder.borderColor": "#122d42",
- "Placeholder.foreground": "#d6deeb",
- "Placeholder.selectedForeground": "#ffffff",
+ "UIDesigner": {
+ "Activity.borderColor": "#2a373e",
+ "Canvas.background": "#001424",
+ "ColorPicker": {
+ "background": "#011627",
+ "foreground": "#b0bec5"
+ },
+ "Component": {
+ "borderColor": "#2a373e",
+ "background": "#011627",
+ "foreground": "#b0bec5",
+ "hoverBorderColor": "#152C3B"
+ },
+ "Connector": {
+ "borderColor": "#2a373e",
+ "hoverBorderColor": "#152C3B"
+ },
+ "Canvas.background": "#001424",
+ "highStroke.foreground": "#b0bec5",
+ "Label.foreground": "#607d8b",
+ "List.selectionBackground": "#152C3B70",
+ "motion": {
+ "borderColor": "#2a373e",
+ "Component.foreground": "#b0bec5",
+ "ConstraintSetText.foreground": "#607d8b",
+ "ConstraintSet.background": "#011627",
+ "CSPanel.SelectedFocusBackground": "#152C3B",
+ "CSPanel.SelectedBackground": "#152C3B70",
+ "cs_FocusText.infoForeground": "#607d8b",
+ "CursorTextColor.foreground": "#b0bec5",
+ "HoverColor.disabledBackground": "#2e3c42",
+ "motionGraph.background": "#011627",
+ "Notification.background": "#152C3B",
+ "ourAvg.background": "#011627",
+ "ourCS.background": "#011627",
+ "ourCS_Border.borderColor": "#2a373e",
+ "ourCS_TextColor.foreground": "#607d8b",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#ffffff",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#152C3B",
+ "ourCS_SelectedBorder.pressedBorderColor": "#152C3B",
+ "ourML_BarColor.separatorColor": "#2a373e",
+ "PrimaryPanel.background": "#001424",
+ "SecondaryPanel.background": "#011627",
+ "SecondaryPanel.header.foreground": "#607d8b",
+ "SecondaryPanel.header.background": "#001424",
+ "timeLine.disabledBorderColor": "#2a373e"
+ },
+ "Panel": {
+ "borderColor": "#2a373e",
+ "background": "#011627"
+ },
+ "percent.foreground": "#b0bec5",
+ "Placeholder": {
+ "background": "#011627",
+ "borderColor": "#2a373e",
+ "foreground": "#b0bec5",
+ "selectedForeground": "#ffffff"
+ },
"Preview.background": "#011627",
- "stroke.acceleratorForeground": "#5f7e97"
+ "stroke.acceleratorForeground": "#607d8b"
},
"ValidationTooltip": {
- "errorBackground": "#01111d",
- "errorBorderColor": "#01111d",
- "warningBackground": "#01111d",
- "warningBorderColor": "#01111d"
+ "errorBackground": "#152C3B",
+ "errorBorderColor": "#152C3B",
+ "warningBackground": "#152C3B",
+ "warningBorderColor": "#152C3B"
},
"VersionControl": {
"FileHistory.Commit": {
"selectedBranchBackground": "#011627"
},
"GitCommits": {
- "graphColor": "#084d81"
+ "graphColor": "#152C3B"
},
"GitLog": {
"localBranchIconColor": "#7e57c2",
- "otherIconColor": "#5f7e97",
- "remoteBranchIconColor": "#d6deeb",
- "tagIconColor": "#5f7e97"
+ "otherIconColor": "#607d8b",
+ "remoteBranchIconColor": "#b0bec5",
+ "tagIconColor": "#607d8b"
},
"HgLog": {
"branchIconColor": "#7e57c2",
"bookmarkIconColor": "#ffffff",
- "closedBranchIconColor": "#697098",
- "localTagIconColor": "#5f7e97",
- "mqTagIconColor": "#5f7e97",
- "tagIconColor": "#5f7e97",
- "tipIconColor": "#5f7e97"
+ "closedBranchIconColor": "#2e3c42",
+ "localTagIconColor": "#607d8b",
+ "mqTagIconColor": "#607d8b",
+ "tagIconColor": "#607d8b",
+ "tipIconColor": "#607d8b"
},
"Log": {
- "Commit.unmatchedForeground": "#5f7e97",
- "Commit.currentBranchBackground": "#0b2942"
+ "Commit.unmatchedForeground": "#607d8b",
+ "Commit.currentBranchBackground": "#011627",
+ "Commit.hoveredBackground": "#152C3B70"
},
"RefLabel": {
"foreground": "#ffffff",
- "backgroundBase": "#084d81"
+ "backgroundBase": "#152C3B"
}
},
"Viewport": {
"background": "#011627",
- "foreground": "#d6deeb"
+ "foreground": "#b0bec5"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#011627",
"background": "#011627",
"borderColor": "#011627",
- "captionBackground": "#010e1a",
- "captionForeground": "#d6deeb",
- "footerBackground": "#010e1a",
- "footerForeground": "#d6deeb",
+ "captionBackground": "#001424",
+ "captionForeground": "#b0bec5",
+ "Details.background": "#011627",
+ "footerBackground": "#001424",
+ "footerForeground": "#b0bec5",
"headerBackground": "#011627",
- "headerForeground": "#d6deeb",
- "separatorColor": "#122d42",
+ "headerForeground": "#b0bec5",
+ "List.background": "#001424",
+ "separatorColor": "#2a373e",
+ "SidePanel.background": "#011627",
"Projects": {
- "background": "#0b2942",
- "selectionBackground": "#5f7e97",
- "selectionInactiveBackground": "#0b2942"
+ "actions.background": "#001424",
+ "actions.selectionBackground": "#152C3B",
+ "background": "#011627",
+ "selectionBackground": "#152C3B",
+ "selectionInactiveBackground": "#011627"
}
},
"window": "#011627",
- "windowBorder": "#122d42",
- "windowText": "#5f7e97",
- "Window.border": "#122d42"
+ "windowBorder": "#2a373e",
+ "windowText": "#607d8b",
+ "Window.border": "#2a373e"
},
"icons": {
"ColorPalette": {
- "#43494A": "#010e1a",
- "#6B6B6B": "#5f7e97",
+ "#43494A": "#001424",
+ "#6B6B6B": "#607d8b",
"#A7A7A7": "#011627",
"#3D6185": "#7e57c2",
"#466D94": "#7e57c2",
"#3C3F41": "#011627",
- "#545556": "#697098",
- "#606060": "#697098",
- "#9AA7B0": "#d6deeb",
+ "#545556": "#2e3c42",
+ "#606060": "#2e3c42",
+ "#9AA7B0": "#b0bec5",
"#675133": "#7e57c2",
"Actions.Blue": "#82AAFF",
"Actions.Green": "#ecc48d",
- "Actions.Grey": "#5f7e97",
+ "Actions.Grey": "#607d8b",
"Actions.GreyInline": "#637777",
- "Actions.GreyInline.Dark": "#d6deeb",
+ "Actions.GreyInline.Dark": "#b0bec5",
"Actions.Red": "#7fdbca",
"Actions.Yellow": "#FAD430",
- "Checkbox.Background.Default": "#010e1a",
- "Checkbox.Background.Default.Dark": "#010e1a",
- "Checkbox.Background.Disabled": "#0e293f",
- "Checkbox.Background.Disabled.Dark": "#0e293f",
- "Checkbox.Border.Default": "#122d42",
- "Checkbox.Border.Default.Dark": "#122d42",
- "Checkbox.Border.Disabled": "#697098",
- "Checkbox.Border.Disabled.Dark": "#697098",
+ "Checkbox.Background.Default": "#001424",
+ "Checkbox.Background.Default.Dark": "#001424",
+ "Checkbox.Background.Disabled": "#0B253A",
+ "Checkbox.Background.Disabled.Dark": "#0B253A",
+ "Checkbox.Border.Default": "#2a373e",
+ "Checkbox.Border.Default.Dark": "#2a373e",
+ "Checkbox.Border.Disabled": "#2e3c42",
+ "Checkbox.Border.Disabled.Dark": "#2e3c42",
"Checkbox.Focus.Thin.Default": "#7e57c2",
"Checkbox.Focus.Thin.Default.Dark": "#7e57c2",
"Checkbox.Focus.Wide": "#7e57c2",
"Checkbox.Focus.Wide.Dark": "#7e57c2",
- "Checkbox.Foreground.Disabled": "#697098",
- "Checkbox.Foreground.Disabled.Dark": "#697098",
+ "Checkbox.Foreground.Disabled": "#2e3c42",
+ "Checkbox.Foreground.Disabled.Dark": "#2e3c42",
"Checkbox.Background.Selected": "#7e57c2",
"Checkbox.Background.Selected.Dark": "#011627",
"Checkbox.Border.Selected": "#7e57c2",
"Checkbox.Border.Selected.Dark": "#7e57c2",
"Checkbox.Foreground.Selected": "#7e57c2",
"Checkbox.Foreground.Selected.Dark": "#7e57c2",
- "Checkbox.Focus.Thin.Selected": "#d6deeb",
- "Checkbox.Focus.Thin.Selected.Dark": "#d6deeb",
+ "Checkbox.Focus.Thin.Selected": "#b0bec5",
+ "Checkbox.Focus.Thin.Selected.Dark": "#b0bec5",
"Objects.Grey": "#637777",
"Objects.Blue": "#82AAFF",
"Objects.RedStatus": "#7fdbca",
@@ -909,7 +1002,7 @@
"Objects.Yellow": "#FAD430",
"Objects.Green": "#ecc48d",
"Objects.Purple": "#c792ea",
- "Objects.BlackText": "#d6deeb",
+ "Objects.BlackText": "#b0bec5",
"Objects.YellowDark": "#f78c6c",
"Objects.GreenAndroid": "#ecc48d"
}
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark Contrast.theme.json
index 218f50e6..0f3616ad 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark Contrast.theme.json
@@ -1,8 +1,14 @@
{
- "name": "Material Solarized Dark Contrast",
+ "name": "Solarized Dark Contrast",
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Solarized Dark.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/solardark.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#586e75",
@@ -11,7 +17,7 @@
"disabledBackground": "#083F4D",
"disabledForeground": "#2E5861",
"disabledText": "#2E5861",
- "focusColor": "#005a6f",
+ "focusColor": "#11353F",
"focusedBorderColor": "#d33682",
"foreground": "#839496",
"inactiveBackground": "#083F4D",
@@ -41,28 +47,28 @@
"arc": 0,
"background": "#002B36",
"default": {
- "endBackground": "#003946",
- "endBorderColor": "#003946",
+ "endBackground": "#11353F",
+ "endBorderColor": "#11353F",
"foreground": "#FFFFFF",
"focusColor": "#d33682",
"focusedBorderColor": "#d33682",
- "shadowColor": "#003946",
- "startBackground": "#003946",
- "startBorderColor": "#003946"
+ "shadowColor": "#11353F",
+ "startBackground": "#11353F",
+ "startBorderColor": "#11353F"
},
"disabledBorderColor": "#073642",
"disabledText": "#2E5861",
"endBackground": "#073642",
"endBorderColor": "#073642",
- "focus": "#005a6f",
+ "focus": "#11353F",
"focusedBorderColor": "#d33682",
"foreground": "#586e75",
"highlight": "#FFFFFF",
"mt.background": "#073642",
"mt.foreground": "#586e75",
"mt.selectedForeground": "#FFFFFF",
- "mt.selection.color1": "#003946",
- "mt.selection.color2": "#003946",
+ "mt.selection.color1": "#11353F",
+ "mt.selection.color2": "#11353F",
"startBackground": "#073642",
"startBorderColor": "#073642",
"shadowColor": "#073642",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#0D3640",
"Tooltip.background": "#2E4C52"
},
- "Content.background": "#00252E",
+ "Content": {
+ "background": "#00252E",
+ "selectionBackground": "#2E4C52"
+ },
"CheckBox": {
"background": "#002B36",
"disabledText": "#2E5861",
@@ -89,6 +98,14 @@
"selectionBackground": "#2E4C52",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#839496",
+ "AccessEnabled": {
+ "accessDot": "#d33682",
+ "dropdownBorder": "#003745",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#002B36",
"foreground": "#839496",
@@ -104,12 +121,13 @@
},
"background": "#00252E",
"buttonBackground": "#073642",
+ "darcula.hoveredArrowButtonForeground": "#d33682",
"disabledForeground": "#2E5861",
"foreground": "#839496",
"modifiedItemForeground": "#d33682",
"nonEditableBackground": "#003745",
"padding": "5,5,5,5",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF"
},
"ComboPopup.border": "#0D3640",
@@ -130,7 +148,7 @@
},
"Component": {
"arc": 4,
- "borderColor": "#005a6f",
+ "borderColor": "#11353F",
"disabledBorderColor": "#073642",
"focusColor": "#d33682",
"focusedBorderColor": "#d33682",
@@ -156,23 +174,25 @@
}
},
"DebuggerTabs": {
- "selectedBackground": "#005a6f",
- "underlinedTabBackground": "#005a6f"
+ "selectedBackground": "#11353F",
+ "underlinedTabBackground": "#11353F"
},
"DebuggerPopup": {
- "borderColor": "#005a6f"
+ "borderColor": "#11353F"
},
"DefaultTabs": {
"background": "#002B36",
"borderColor": "#002B36",
- "hoverBackground": "#003946",
+ "hoverBackground": "#11353F",
"hoverColor": "#00252E",
- "hoverMaskColor": "#005a6f",
+ "hoverMaskColor": "#11353F",
+ "inactiveColoredTabBackground": "#002B36",
"inactiveColoredFileBackground": "#073642",
- "inactiveUnderlineColor": "#2E5861",
+ "inactiveUnderlineColor": "#d33682",
"inactiveMaskColor": "#00252E",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#003946"
+ "underlinedTabBackground": "#11353F",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#002B36",
"DialogWrapper.southPanelBackground": "#002B36",
@@ -198,24 +218,26 @@
},
"EditorTabs": {
"borderColor": "#003745",
- "hoverColor": "#005a6f",
- "hoverMaskColor": "#005a6f",
+ "hoverBackground": "#11353F",
+ "hoverColor": "#11353F",
+ "hoverMaskColor": "#11353F",
"inactiveMaskColor": "#002B36",
- "inactiveColoredFileBackground": "#002B362",
+ "inactiveColoredFileBackground": "#002B36",
"inactiveUnderlineColor": "#2E5861",
"selectedForeground": "#839496",
- "selectedBackground": "#003946",
+ "selectedBackground": "#11353F",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#003946"
+ "underlinedTabBackground": "#11353F",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#002B36",
"borderColor": "#003745",
- "hoverBackground": "#005a6f",
- "hoverColor": "#005a6f",
+ "hoverBackground": "#11353F",
+ "hoverColor": "#11353F",
"inactiveUnderlineColor": "#d33682",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#003946",
+ "underlinedTabBackground": "#11353F",
"underlinedTabForeground": "#839496"
},
"FileColor": {
@@ -244,14 +266,15 @@
"inactiveBackground": "#073642",
"inactiveForeground": "#2E5861",
"selectionForeground": "#FFFFFF",
- "selectionBackground": "#003946"
+ "selectionBackground": "#11353F"
},
+ "GotItTooltip.borderColor": "#2E4C52",
"Group": {
"disabledSeparatorColor": "#0D3640",
"separatorColor": "#0D3640"
},
"GutterTooltip": {
- "infoForeground": "#839496",
+ "infoForeground": "#586e75",
"lineSeparatorColor": "#002B36"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#2E5861",
"foreground": "#839496",
"infoForeground": "#586e75",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#839496"
},
"Link": {
"activeForeground": "#d33682",
@@ -301,10 +325,12 @@
"List": {
"background": "#003745",
"foreground": "#839496",
+ "hoverBackground": "#2E4C5270",
+ "hoverInactiveBackground": "#11353F",
"selectionBackground": "#2E4C5250",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#2E4C5280"
+ "selectionInactiveBackground": "#2E4C5270"
},
"material": {
"background": "#002B36",
@@ -320,8 +346,8 @@
},
"MemoryIndicator": {
"allocatedBackground": "#003745",
- "usedColor": "#005a6f",
- "usedBackground": "#005a6f"
+ "usedColor": "#11353F",
+ "usedBackground": "#11353F"
},
"Menu": {
"acceleratorForeground": "#586e75",
@@ -408,13 +434,13 @@
},
"ParameterInfo": {
"background": "#003745",
- "borderColor": "#003946",
- "currentOverloadBackground": "#003946",
+ "borderColor": "#11353F",
+ "currentOverloadBackground": "#11353F",
"currentParameterForeground": "#d33682",
"disabledForeground": "#2E5861",
"foreground": "#839496",
"infoForeground": "#586e75",
- "lineSeparatorColor": "#003946"
+ "lineSeparatorColor": "#11353F"
},
"PasswordField": {
"background": "#00252E",
@@ -422,27 +448,28 @@
"caretForeground": "#d33682",
"foreground": "#839496",
"inactiveForeground": "#2E5861",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF"
},
"Plugins": {
"background": "#002B36",
"disabledForeground": "#2E5861",
- "eapTagBackground": "#005a6f",
- "lightSelectionBackground": "#2E4C52",
- "paidTagBackground": "#005a6f",
+ "eapTagBackground": "#11353F",
+ "hoverBackground": "#2E4C5270",
+ "lightSelectionBackground": "#11353F",
+ "paidTagBackground": "#11353F",
"selectionBackground": "#2E4C52",
"tagForeground": "#d33682",
- "tagBackground": "#005a6f",
- "trialTagBackground": "#005a6f",
+ "tagBackground": "#11353F",
+ "trialTagBackground": "#11353F",
"Button": {
"installBackground": "#073642",
"installBorderColor": "#073642",
"installForeground": "#839496",
- "installFocusedBackground": "#005a6f",
+ "installFocusedBackground": "#11353F",
"installFillForeground": "#2E5861",
"installFillBackground": "#073642",
- "updateBackground": "#073642",
+ "updateBackground": "#d33682",
"updateBorderColor": "#073642",
"updateForeground": "#839496"
},
@@ -455,9 +482,9 @@
"foreground": "#839496"
},
"Tab": {
- "hoverBackground": "#003946",
+ "hoverBackground": "#11353F",
"selectedForeground": "#FFFFFF",
- "selectedBackground": "#003946"
+ "selectedBackground": "#11353F"
}
},
"Popup": {
@@ -496,8 +523,8 @@
"indeterminateEndColor": "#d33682",
"indeterminateStartColor": "#d33682",
"progressColor": "#d33682",
- "selectionBackground": "#005a6f",
- "trackColor": "#005a6f"
+ "selectionBackground": "#11353F",
+ "trackColor": "#11353F"
},
"PsiViewer": {
"referenceHighlightColor": "#d33682"
@@ -517,6 +544,7 @@
"selectionBackground": "#2E4C52",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#0D3640",
"ScrollBar": {
"background": "#002B36",
"hoverThumbBorderColor": "#d33682",
@@ -538,7 +566,7 @@
"trackColor": "#002B3630"
}
},
- "thumb": "#005a6f",
+ "thumb": "#11353F",
"thumbBorderColor": "#d3368270",
"thumbColor": "#d3368270",
"trackColor": "#002B3630",
@@ -571,14 +599,23 @@
"Tab": {
"active.foreground": "#FFFFFF",
"selectedForeground": "#FFFFFF",
- "selectedBackground": "#005a6f"
+ "selectedBackground": "#11353F"
}
},
"SearchMatch": {
"endBackground": "#d33682",
- "startBackground": "#d33682"
+ "startBackground": "#d33682",
+ "endColor": "#d33682",
+ "startColor": "#d33682"
},
"SearchField.errorBackground": "#2E4C52",
+ "SearchOption": {
+ "selectedBackground": "#11353F"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#586e75",
+ "Repeated.File.Foreground": "#839496"
+ },
"Separator": {
"background": "#003745",
"foreground": "#003745",
@@ -594,12 +631,12 @@
"foreground": "#839496",
"majorTickLength": 6,
"tickColor": "#003745",
- "trackColor": "#003946",
+ "trackColor": "#11353F",
"trackWidth": 7,
"thumb": "#d33682"
},
"SpeedSearch": {
- "background": "#005a6f",
+ "background": "#11353F",
"borderColor": "#0D3640",
"foreground": "#839496",
"errorForeground": "#839496"
@@ -616,21 +653,23 @@
},
"SplitPaneDivider.draggingColor": "#003745",
"StatusBar": {
- "borderColor": "#002B36"
+ "borderColor": "#002B36",
+ "hoverBackground": "#11353F",
+ "LightEditBackground": "#11353F"
},
"TabbedPane": {
"background": "#002B36",
- "contentAreaColor": "#005a6f",
+ "contentAreaColor": "#11353F",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#0D3640",
"disabledForeground": "#2E5861",
"disabledUnderlineColor": "#2E5861",
- "focus": "#003946",
- "focusColor": "#003946",
+ "focus": "#11353F",
+ "focusColor": "#11353F",
"fontSizeOffset": 0,
"foreground": "#839496",
"highlight": "#0D3640",
- "hoverColor": "#005a6f",
+ "hoverColor": "#11353F",
"labelShift": 0,
"selectedForeground": "#FFFFFF",
"selectedLabelShift": 0,
@@ -643,22 +682,26 @@
},
"TabbedPane.mt.tab.background": "#00252E",
"Table": {
+ "alternativeRowBackground": "#00252E",
"background": "#002B36",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#2E5861",
"dropLineColor": "#d33682",
"dropLineShortColor": "#d33682",
- "focusCellBackground": "#003946",
+ "focusCellBackground": "#11353F",
"focusCellForeground": "#FFFFFF",
"foreground": "#839496",
"gridColor": "#002B36",
- "highlightOuter": "#003946",
+ "highlightOuter": "#11353F",
+ "hoverBackground": "#2E4C5270",
+ "hoverInactiveBackground": "#11353F",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#586e75",
"lightSelectionInactiveBackground": "#003745",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF",
- "selectionInactiveBackground": "#003946",
+ "selectionInactiveBackground": "#11353F",
"selectionInactiveForeground": "#FFFFFF",
"sortIconColor": "#839496",
"stripeColor": "#00252E"
@@ -670,7 +713,7 @@
"cellBorder": "4,0,4,0",
"disabledForeground": "#2E5861",
"foreground": "#839496",
- "focusCellBackground": "#003946",
+ "focusCellBackground": "#11353F",
"focusCellForeground": "#FFFFFF",
"height": 25,
"separatorColor": "#003745"
@@ -683,7 +726,7 @@
"caretForeground": "#d33682",
"foreground": "#839496",
"inactiveForeground": "#2E5861",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF"
},
"TextField": {
@@ -691,7 +734,7 @@
"caretForeground": "#d33682",
"foreground": "#839496",
"inactiveForeground": "#2E5861",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF"
},
"TextPane": {
@@ -699,12 +742,12 @@
"caretForeground": "#d33682",
"foreground": "#839496",
"inactiveForeground": "#2E5861",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF"
},
"TitlePane": {
"background": "#00252E",
- "Button.hoverBackground": "#005a6f",
+ "Button.hoverBackground": "#11353F",
"inactiveBackground": "#002B36",
"infoForeground": "#586e75",
"inactiveInfoForeground": "#586e75"
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#002B36",
"Actions.infoForeground": "#586e75",
- "background": "#002B36",
- "borderColor": "#005a6f",
+ "background": "#2E4C52",
+ "borderColor": "#0D3640",
"foreground": "#839496",
"infoForeground": "#586e75",
"separatorColor": "#0D3640",
@@ -738,7 +781,7 @@
},
"ToolWindow": {
"Button": {
- "hoverBackground": "#003946",
+ "hoverBackground": "#11353F",
"selectedForeground": "#FFFFFF",
"selectedBackground": "#00252E"
},
@@ -751,50 +794,93 @@
"background": "#002B36"
},
"HeaderTab": {
- "hoverBackground": "#005a6f",
- "hoverInactiveBackground": "#003745",
+ "borderColor": "#11353F",
+ "hoverBackground": "#11353F",
+ "hoverInactiveBackground": "#11353F",
"inactiveUnderlineColor": "#d33682",
"selectedBackground": "#00252E",
"selectedInactiveBackground": "#00252E",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#005a6f",
- "underlinedTabInactiveBackground": "#003745"
+ "underlinedTabBackground": "#11353F",
+ "underlinedTabInactiveBackground": "#003745",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#839496"
}
},
"Tree": {
"background": "#00252E",
"foreground": "#586e75",
"hash": "#0D3640",
+ "hoverBackground": "#2E4C5270",
+ "hoverInactiveBackground": "#11353F",
"modifiedItemForeground": "#d33682",
"rowHeight": 28,
- "selectionBackground": "#2E4C5280",
+ "selectionBackground": "#2E4C5270",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#2E4C5280",
+ "selectionInactiveBackground": "#2E4C5270",
"textBackground": "#00252E"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#0D3640",
- "ColorPicker.background": "#002B36",
- "ColorPicker.foreground": "#839496",
- "Component.borderColor": "#0D3640",
- "Component.background": "#002B36",
- "Component.foreground": "#839496",
- "Connector.borderColor": "#0D3640",
- "Connector.hoverBorderColor": "#005a6f",
+ "Canvas.background": "#00252E",
+ "ColorPicker": {
+ "background": "#002B36",
+ "foreground": "#839496"
+ },
+ "Component": {
+ "borderColor": "#0D3640",
+ "background": "#002B36",
+ "foreground": "#839496",
+ "hoverBorderColor": "#11353F"
+ },
+ "Connector": {
+ "borderColor": "#0D3640",
+ "hoverBorderColor": "#11353F"
+ },
"Canvas.background": "#00252E",
"highStroke.foreground": "#839496",
"Label.foreground": "#586e75",
- "List.selectionBackground": "#2E4C5280",
- "Panel.borderColor": "#0D3640",
- "Panel.background": "#002B36",
+ "List.selectionBackground": "#2E4C5270",
+ "motion": {
+ "borderColor": "#0D3640",
+ "Component.foreground": "#839496",
+ "ConstraintSetText.foreground": "#586e75",
+ "ConstraintSet.background": "#003745",
+ "CSPanel.SelectedFocusBackground": "#2E4C52",
+ "CSPanel.SelectedBackground": "#2E4C5270",
+ "cs_FocusText.infoForeground": "#586e75",
+ "CursorTextColor.foreground": "#839496",
+ "HoverColor.disabledBackground": "#2E5861",
+ "motionGraph.background": "#002B36",
+ "Notification.background": "#2E4C52",
+ "ourAvg.background": "#003745",
+ "ourCS.background": "#003745",
+ "ourCS_Border.borderColor": "#0D3640",
+ "ourCS_TextColor.foreground": "#586e75",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#11353F",
+ "ourCS_SelectedBorder.pressedBorderColor": "#11353F",
+ "ourML_BarColor.separatorColor": "#0D3640",
+ "PrimaryPanel.background": "#00252E",
+ "SecondaryPanel.background": "#002B36",
+ "SecondaryPanel.header.foreground": "#586e75",
+ "SecondaryPanel.header.background": "#00252E",
+ "timeLine.disabledBorderColor": "#0D3640"
+ },
+ "Panel": {
+ "borderColor": "#0D3640",
+ "background": "#002B36"
+ },
"percent.foreground": "#839496",
- "Placeholder.background": "#002B36",
- "Placeholder.borderColor": "#0D3640",
- "Placeholder.foreground": "#839496",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#002B36",
+ "borderColor": "#0D3640",
+ "foreground": "#839496",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#002B36",
"stroke.acceleratorForeground": "#586e75"
},
@@ -809,7 +895,7 @@
"selectedBranchBackground": "#002B36"
},
"GitCommits": {
- "graphColor": "#005a6f"
+ "graphColor": "#11353F"
},
"GitLog": {
"localBranchIconColor": "#d33682",
@@ -828,11 +914,12 @@
},
"Log": {
"Commit.unmatchedForeground": "#586e75",
- "Commit.currentBranchBackground": "#003745"
+ "Commit.currentBranchBackground": "#003745",
+ "Commit.hoveredBackground": "#2E4C5270"
},
"RefLabel": {
"foreground": "#FFFFFF",
- "backgroundBase": "#005a6f"
+ "backgroundBase": "#11353F"
}
},
"Viewport": {
@@ -840,16 +927,22 @@
"foreground": "#839496"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#002B36",
"background": "#002B36",
"borderColor": "#002B36",
"captionBackground": "#00252E",
"captionForeground": "#839496",
+ "Details.background": "#002B36",
"footerBackground": "#00252E",
"footerForeground": "#839496",
"headerBackground": "#002B36",
"headerForeground": "#839496",
+ "List.background": "#00252E",
"separatorColor": "#0D3640",
+ "SidePanel.background": "#003745",
"Projects": {
+ "actions.background": "#00252E",
+ "actions.selectionBackground": "#11353F",
"background": "#003745",
"selectionBackground": "#2E4C52",
"selectionInactiveBackground": "#003745"
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark.theme.json
index 77c18cf1..bc03015d 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Dark.theme.json
@@ -3,6 +3,12 @@
"dark": true,
"author": "Mallowigi",
"editorScheme": "/colors/Solarized Dark.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/solardark.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#586e75",
@@ -11,7 +17,7 @@
"disabledBackground": "#083F4D",
"disabledForeground": "#2E5861",
"disabledText": "#2E5861",
- "focusColor": "#005a6f",
+ "focusColor": "#11353F",
"focusedBorderColor": "#d33682",
"foreground": "#839496",
"inactiveBackground": "#083F4D",
@@ -41,28 +47,28 @@
"arc": 0,
"background": "#002B36",
"default": {
- "endBackground": "#003946",
- "endBorderColor": "#003946",
+ "endBackground": "#11353F",
+ "endBorderColor": "#11353F",
"foreground": "#FFFFFF",
"focusColor": "#d33682",
"focusedBorderColor": "#d33682",
- "shadowColor": "#003946",
- "startBackground": "#003946",
- "startBorderColor": "#003946"
+ "shadowColor": "#11353F",
+ "startBackground": "#11353F",
+ "startBorderColor": "#11353F"
},
"disabledBorderColor": "#073642",
"disabledText": "#2E5861",
"endBackground": "#073642",
"endBorderColor": "#073642",
- "focus": "#005a6f",
+ "focus": "#11353F",
"focusedBorderColor": "#d33682",
"foreground": "#586e75",
"highlight": "#FFFFFF",
"mt.background": "#073642",
"mt.foreground": "#586e75",
"mt.selectedForeground": "#FFFFFF",
- "mt.selection.color1": "#003946",
- "mt.selection.color2": "#003946",
+ "mt.selection.color1": "#11353F",
+ "mt.selection.color2": "#11353F",
"startBackground": "#073642",
"startBorderColor": "#073642",
"shadowColor": "#073642",
@@ -72,7 +78,10 @@
"Tooltip.borderColor": "#0D3640",
"Tooltip.background": "#2E4C52"
},
- "Content.background": "#00252E",
+ "Content": {
+ "background": "#00252E",
+ "selectionBackground": "#2E4C52"
+ },
"CheckBox": {
"background": "#002B36",
"disabledText": "#2E5861",
@@ -89,6 +98,14 @@
"selectionBackground": "#2E4C52",
"selectionForeground": "#FFFFFF"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#839496",
+ "AccessEnabled": {
+ "accessDot": "#d33682",
+ "dropdownBorder": "#003745",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#002B36",
"foreground": "#839496",
@@ -104,12 +121,13 @@
},
"background": "#002B36",
"buttonBackground": "#073642",
+ "darcula.hoveredArrowButtonForeground": "#d33682",
"disabledForeground": "#2E5861",
"foreground": "#839496",
"modifiedItemForeground": "#d33682",
"nonEditableBackground": "#003745",
"padding": "5,5,5,5",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF"
},
"ComboPopup.border": "#0D3640",
@@ -130,7 +148,7 @@
},
"Component": {
"arc": 4,
- "borderColor": "#005a6f",
+ "borderColor": "#11353F",
"disabledBorderColor": "#073642",
"focusColor": "#d33682",
"focusedBorderColor": "#d33682",
@@ -156,23 +174,25 @@
}
},
"DebuggerTabs": {
- "selectedBackground": "#005a6f",
- "underlinedTabBackground": "#005a6f"
+ "selectedBackground": "#11353F",
+ "underlinedTabBackground": "#11353F"
},
"DebuggerPopup": {
- "borderColor": "#005a6f"
+ "borderColor": "#11353F"
},
"DefaultTabs": {
"background": "#002B36",
"borderColor": "#002B36",
- "hoverBackground": "#003946",
+ "hoverBackground": "#11353F",
"hoverColor": "#002B36",
- "hoverMaskColor": "#005a6f",
+ "hoverMaskColor": "#11353F",
+ "inactiveColoredTabBackground": "#002B36",
"inactiveColoredFileBackground": "#073642",
- "inactiveUnderlineColor": "#2E5861",
+ "inactiveUnderlineColor": "#d33682",
"inactiveMaskColor": "#002B36",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#003946"
+ "underlinedTabBackground": "#11353F",
+ "underlinedTabForeground": "#FFFFFF"
},
"Desktop.background": "#002B36",
"DialogWrapper.southPanelBackground": "#002B36",
@@ -198,24 +218,26 @@
},
"EditorTabs": {
"borderColor": "#003745",
- "hoverColor": "#005a6f",
- "hoverMaskColor": "#005a6f",
+ "hoverBackground": "#11353F",
+ "hoverColor": "#11353F",
+ "hoverMaskColor": "#11353F",
"inactiveMaskColor": "#002B36",
- "inactiveColoredFileBackground": "#002B362",
+ "inactiveColoredFileBackground": "#002B36",
"inactiveUnderlineColor": "#2E5861",
"selectedForeground": "#839496",
- "selectedBackground": "#003946",
+ "selectedBackground": "#11353F",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#003946"
+ "underlinedTabBackground": "#11353F",
+ "underlinedTabForeground": "#FFFFFF"
},
"EditorGroupsTabs": {
"background": "#002B36",
"borderColor": "#003745",
- "hoverBackground": "#005a6f",
- "hoverColor": "#005a6f",
+ "hoverBackground": "#11353F",
+ "hoverColor": "#11353F",
"inactiveUnderlineColor": "#d33682",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#003946",
+ "underlinedTabBackground": "#11353F",
"underlinedTabForeground": "#839496"
},
"FileColor": {
@@ -244,14 +266,15 @@
"inactiveBackground": "#073642",
"inactiveForeground": "#2E5861",
"selectionForeground": "#FFFFFF",
- "selectionBackground": "#003946"
+ "selectionBackground": "#11353F"
},
+ "GotItTooltip.borderColor": "#2E4C52",
"Group": {
"disabledSeparatorColor": "#0D3640",
"separatorColor": "#0D3640"
},
"GutterTooltip": {
- "infoForeground": "#839496",
+ "infoForeground": "#586e75",
"lineSeparatorColor": "#002B36"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#2E5861",
"foreground": "#839496",
"infoForeground": "#586e75",
- "selectedForeground": "#FFFFFF"
+ "selectedForeground": "#FFFFFF",
+ "selectedDisabledForeground": "#839496"
},
"Link": {
"activeForeground": "#d33682",
@@ -301,10 +325,12 @@
"List": {
"background": "#003745",
"foreground": "#839496",
+ "hoverBackground": "#2E4C5270",
+ "hoverInactiveBackground": "#11353F",
"selectionBackground": "#2E4C5250",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#2E4C5280"
+ "selectionInactiveBackground": "#2E4C5270"
},
"material": {
"background": "#002B36",
@@ -320,8 +346,8 @@
},
"MemoryIndicator": {
"allocatedBackground": "#003745",
- "usedColor": "#005a6f",
- "usedBackground": "#005a6f"
+ "usedColor": "#11353F",
+ "usedBackground": "#11353F"
},
"Menu": {
"acceleratorForeground": "#586e75",
@@ -408,13 +434,13 @@
},
"ParameterInfo": {
"background": "#003745",
- "borderColor": "#003946",
- "currentOverloadBackground": "#003946",
+ "borderColor": "#11353F",
+ "currentOverloadBackground": "#11353F",
"currentParameterForeground": "#d33682",
"disabledForeground": "#2E5861",
"foreground": "#839496",
"infoForeground": "#586e75",
- "lineSeparatorColor": "#003946"
+ "lineSeparatorColor": "#11353F"
},
"PasswordField": {
"background": "#002B36",
@@ -422,27 +448,28 @@
"caretForeground": "#d33682",
"foreground": "#839496",
"inactiveForeground": "#2E5861",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF"
},
"Plugins": {
"background": "#002B36",
"disabledForeground": "#2E5861",
- "eapTagBackground": "#005a6f",
- "lightSelectionBackground": "#2E4C52",
- "paidTagBackground": "#005a6f",
+ "eapTagBackground": "#11353F",
+ "hoverBackground": "#2E4C5270",
+ "lightSelectionBackground": "#11353F",
+ "paidTagBackground": "#11353F",
"selectionBackground": "#2E4C52",
"tagForeground": "#d33682",
- "tagBackground": "#005a6f",
- "trialTagBackground": "#005a6f",
+ "tagBackground": "#11353F",
+ "trialTagBackground": "#11353F",
"Button": {
"installBackground": "#073642",
"installBorderColor": "#073642",
"installForeground": "#839496",
- "installFocusedBackground": "#005a6f",
+ "installFocusedBackground": "#11353F",
"installFillForeground": "#2E5861",
"installFillBackground": "#073642",
- "updateBackground": "#073642",
+ "updateBackground": "#d33682",
"updateBorderColor": "#073642",
"updateForeground": "#839496"
},
@@ -455,9 +482,9 @@
"foreground": "#839496"
},
"Tab": {
- "hoverBackground": "#003946",
+ "hoverBackground": "#11353F",
"selectedForeground": "#FFFFFF",
- "selectedBackground": "#003946"
+ "selectedBackground": "#11353F"
}
},
"Popup": {
@@ -496,8 +523,8 @@
"indeterminateEndColor": "#d33682",
"indeterminateStartColor": "#d33682",
"progressColor": "#d33682",
- "selectionBackground": "#005a6f",
- "trackColor": "#005a6f"
+ "selectionBackground": "#11353F",
+ "trackColor": "#11353F"
},
"PsiViewer": {
"referenceHighlightColor": "#d33682"
@@ -517,6 +544,7 @@
"selectionBackground": "#2E4C52",
"selectionForeground": "#FFFFFF"
},
+ "ScreenView.borderColor": "#0D3640",
"ScrollBar": {
"background": "#002B36",
"hoverThumbBorderColor": "#d33682",
@@ -538,7 +566,7 @@
"trackColor": "#002B3630"
}
},
- "thumb": "#005a6f",
+ "thumb": "#11353F",
"thumbBorderColor": "#d3368270",
"thumbColor": "#d3368270",
"trackColor": "#002B3630",
@@ -571,14 +599,23 @@
"Tab": {
"active.foreground": "#FFFFFF",
"selectedForeground": "#FFFFFF",
- "selectedBackground": "#005a6f"
+ "selectedBackground": "#11353F"
}
},
"SearchMatch": {
"endBackground": "#d33682",
- "startBackground": "#d33682"
+ "startBackground": "#d33682",
+ "endColor": "#d33682",
+ "startColor": "#d33682"
},
"SearchField.errorBackground": "#2E4C52",
+ "SearchOption": {
+ "selectedBackground": "#11353F"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#586e75",
+ "Repeated.File.Foreground": "#839496"
+ },
"Separator": {
"background": "#003745",
"foreground": "#003745",
@@ -594,12 +631,12 @@
"foreground": "#839496",
"majorTickLength": 6,
"tickColor": "#003745",
- "trackColor": "#003946",
+ "trackColor": "#11353F",
"trackWidth": 7,
"thumb": "#d33682"
},
"SpeedSearch": {
- "background": "#005a6f",
+ "background": "#11353F",
"borderColor": "#0D3640",
"foreground": "#839496",
"errorForeground": "#839496"
@@ -616,21 +653,23 @@
},
"SplitPaneDivider.draggingColor": "#003745",
"StatusBar": {
- "borderColor": "#002B36"
+ "borderColor": "#002B36",
+ "hoverBackground": "#11353F",
+ "LightEditBackground": "#11353F"
},
"TabbedPane": {
"background": "#002B36",
- "contentAreaColor": "#005a6f",
+ "contentAreaColor": "#11353F",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#0D3640",
"disabledForeground": "#2E5861",
"disabledUnderlineColor": "#2E5861",
- "focus": "#003946",
- "focusColor": "#003946",
+ "focus": "#11353F",
+ "focusColor": "#11353F",
"fontSizeOffset": 0,
"foreground": "#839496",
"highlight": "#0D3640",
- "hoverColor": "#005a6f",
+ "hoverColor": "#11353F",
"labelShift": 0,
"selectedForeground": "#FFFFFF",
"selectedLabelShift": 0,
@@ -643,22 +682,26 @@
},
"TabbedPane.mt.tab.background": "#002B36",
"Table": {
+ "alternativeRowBackground": "#00252E",
"background": "#002B36",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#2E5861",
"dropLineColor": "#d33682",
"dropLineShortColor": "#d33682",
- "focusCellBackground": "#003946",
+ "focusCellBackground": "#11353F",
"focusCellForeground": "#FFFFFF",
"foreground": "#839496",
"gridColor": "#002B36",
- "highlightOuter": "#003946",
+ "highlightOuter": "#11353F",
+ "hoverBackground": "#2E4C5270",
+ "hoverInactiveBackground": "#11353F",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveForeground": "#586e75",
"lightSelectionInactiveBackground": "#003745",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF",
- "selectionInactiveBackground": "#003946",
+ "selectionInactiveBackground": "#11353F",
"selectionInactiveForeground": "#FFFFFF",
"sortIconColor": "#839496",
"stripeColor": "#00252E"
@@ -670,7 +713,7 @@
"cellBorder": "4,0,4,0",
"disabledForeground": "#2E5861",
"foreground": "#839496",
- "focusCellBackground": "#003946",
+ "focusCellBackground": "#11353F",
"focusCellForeground": "#FFFFFF",
"height": 25,
"separatorColor": "#003745"
@@ -683,7 +726,7 @@
"caretForeground": "#d33682",
"foreground": "#839496",
"inactiveForeground": "#2E5861",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF"
},
"TextField": {
@@ -691,7 +734,7 @@
"caretForeground": "#d33682",
"foreground": "#839496",
"inactiveForeground": "#2E5861",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF"
},
"TextPane": {
@@ -699,12 +742,12 @@
"caretForeground": "#d33682",
"foreground": "#839496",
"inactiveForeground": "#2E5861",
- "selectionBackground": "#003946",
+ "selectionBackground": "#11353F",
"selectionForeground": "#FFFFFF"
},
"TitlePane": {
"background": "#00252E",
- "Button.hoverBackground": "#005a6f",
+ "Button.hoverBackground": "#11353F",
"inactiveBackground": "#002B36",
"infoForeground": "#586e75",
"inactiveInfoForeground": "#586e75"
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#002B36",
"Actions.infoForeground": "#586e75",
- "background": "#002B36",
- "borderColor": "#005a6f",
+ "background": "#2E4C52",
+ "borderColor": "#0D3640",
"foreground": "#839496",
"infoForeground": "#586e75",
"separatorColor": "#0D3640",
@@ -738,7 +781,7 @@
},
"ToolWindow": {
"Button": {
- "hoverBackground": "#003946",
+ "hoverBackground": "#11353F",
"selectedForeground": "#FFFFFF",
"selectedBackground": "#00252E"
},
@@ -751,50 +794,93 @@
"background": "#002B36"
},
"HeaderTab": {
- "hoverBackground": "#005a6f",
- "hoverInactiveBackground": "#003745",
+ "borderColor": "#11353F",
+ "hoverBackground": "#11353F",
+ "hoverInactiveBackground": "#11353F",
"inactiveUnderlineColor": "#d33682",
"selectedBackground": "#00252E",
"selectedInactiveBackground": "#00252E",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#005a6f",
- "underlinedTabInactiveBackground": "#003745"
+ "underlinedTabBackground": "#11353F",
+ "underlinedTabInactiveBackground": "#003745",
+ "underlinedTabForeground": "#FFFFFF",
+ "underlinedTabInactiveForeground": "#839496"
}
},
"Tree": {
"background": "#002B36",
"foreground": "#586e75",
"hash": "#0D3640",
+ "hoverBackground": "#2E4C5270",
+ "hoverInactiveBackground": "#11353F",
"modifiedItemForeground": "#d33682",
"rowHeight": 28,
- "selectionBackground": "#2E4C5280",
+ "selectionBackground": "#2E4C5270",
"selectionForeground": "#FFFFFF",
"selectionInactiveForeground": "#FFFFFF",
- "selectionInactiveBackground": "#2E4C5280",
+ "selectionInactiveBackground": "#2E4C5270",
"textBackground": "#002B36"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#0D3640",
- "ColorPicker.background": "#002B36",
- "ColorPicker.foreground": "#839496",
- "Component.borderColor": "#0D3640",
- "Component.background": "#002B36",
- "Component.foreground": "#839496",
- "Connector.borderColor": "#0D3640",
- "Connector.hoverBorderColor": "#005a6f",
+ "Canvas.background": "#00252E",
+ "ColorPicker": {
+ "background": "#002B36",
+ "foreground": "#839496"
+ },
+ "Component": {
+ "borderColor": "#0D3640",
+ "background": "#002B36",
+ "foreground": "#839496",
+ "hoverBorderColor": "#11353F"
+ },
+ "Connector": {
+ "borderColor": "#0D3640",
+ "hoverBorderColor": "#11353F"
+ },
"Canvas.background": "#00252E",
"highStroke.foreground": "#839496",
"Label.foreground": "#586e75",
- "List.selectionBackground": "#2E4C5280",
- "Panel.borderColor": "#0D3640",
- "Panel.background": "#002B36",
+ "List.selectionBackground": "#2E4C5270",
+ "motion": {
+ "borderColor": "#0D3640",
+ "Component.foreground": "#839496",
+ "ConstraintSetText.foreground": "#586e75",
+ "ConstraintSet.background": "#003745",
+ "CSPanel.SelectedFocusBackground": "#2E4C52",
+ "CSPanel.SelectedBackground": "#2E4C5270",
+ "cs_FocusText.infoForeground": "#586e75",
+ "CursorTextColor.foreground": "#839496",
+ "HoverColor.disabledBackground": "#2E5861",
+ "motionGraph.background": "#002B36",
+ "Notification.background": "#2E4C52",
+ "ourAvg.background": "#003745",
+ "ourCS.background": "#003745",
+ "ourCS_Border.borderColor": "#0D3640",
+ "ourCS_TextColor.foreground": "#586e75",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#FFFFFF",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#11353F",
+ "ourCS_SelectedBorder.pressedBorderColor": "#11353F",
+ "ourML_BarColor.separatorColor": "#0D3640",
+ "PrimaryPanel.background": "#00252E",
+ "SecondaryPanel.background": "#002B36",
+ "SecondaryPanel.header.foreground": "#586e75",
+ "SecondaryPanel.header.background": "#00252E",
+ "timeLine.disabledBorderColor": "#0D3640"
+ },
+ "Panel": {
+ "borderColor": "#0D3640",
+ "background": "#002B36"
+ },
"percent.foreground": "#839496",
- "Placeholder.background": "#002B36",
- "Placeholder.borderColor": "#0D3640",
- "Placeholder.foreground": "#839496",
- "Placeholder.selectedForeground": "#FFFFFF",
+ "Placeholder": {
+ "background": "#002B36",
+ "borderColor": "#0D3640",
+ "foreground": "#839496",
+ "selectedForeground": "#FFFFFF"
+ },
"Preview.background": "#002B36",
"stroke.acceleratorForeground": "#586e75"
},
@@ -809,7 +895,7 @@
"selectedBranchBackground": "#002B36"
},
"GitCommits": {
- "graphColor": "#005a6f"
+ "graphColor": "#11353F"
},
"GitLog": {
"localBranchIconColor": "#d33682",
@@ -828,11 +914,12 @@
},
"Log": {
"Commit.unmatchedForeground": "#586e75",
- "Commit.currentBranchBackground": "#003745"
+ "Commit.currentBranchBackground": "#003745",
+ "Commit.hoveredBackground": "#2E4C5270"
},
"RefLabel": {
"foreground": "#FFFFFF",
- "backgroundBase": "#005a6f"
+ "backgroundBase": "#11353F"
}
},
"Viewport": {
@@ -840,16 +927,22 @@
"foreground": "#839496"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#002B36",
"background": "#002B36",
"borderColor": "#002B36",
"captionBackground": "#00252E",
"captionForeground": "#839496",
+ "Details.background": "#002B36",
"footerBackground": "#00252E",
"footerForeground": "#839496",
"headerBackground": "#002B36",
"headerForeground": "#839496",
+ "List.background": "#00252E",
"separatorColor": "#0D3640",
+ "SidePanel.background": "#003745",
"Projects": {
+ "actions.background": "#00252E",
+ "actions.selectionBackground": "#11353F",
"background": "#003745",
"selectionBackground": "#2E4C52",
"selectionInactiveBackground": "#003745"
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light Contrast.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light Contrast.theme.json
index 19d5aae6..a6c24d12 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light Contrast.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light Contrast.theme.json
@@ -1,8 +1,14 @@
{
- "name": "Material Solarized Light Contrast",
+ "name": "Solarized Light Contrast",
"dark": false,
"author": "Mallowigi",
"editorScheme": "/colors/Solarized Light.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/solarlight.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#93a1a1",
@@ -11,13 +17,13 @@
"disabledBackground": "#E3DCC9",
"disabledForeground": "#C9CCC3",
"disabledText": "#C9CCC3",
- "focusColor": "#d1cbb8",
+ "focusColor": "#F6F0DE",
"focusedBorderColor": "#d33682",
"foreground": "#586e75",
"inactiveBackground": "#E3DCC9",
"inactiveForeground": "#93a1a1",
"infoForeground": "#93a1a1",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionBackgroundInactive": "#F6F0DE",
"selectionForeground": "#002b36",
"selectionInactiveBackground": "#F6F0DE",
@@ -27,13 +33,13 @@
"ActionButton": {
"hoverBackground": "#d3368250",
"hoverBorderColor": "#d3368250",
- "hoverSeparatorColor": "#d8d4c4",
+ "hoverSeparatorColor": "#FEFBF1",
"focusedBorderColor": "#d3368250",
"pressedBackground": "#d3368250",
"pressedBorderColor": "#d3368250"
},
"Autocomplete": {
- "selectionBackground": "#e8dcb6"
+ "selectionBackground": "#93a1a1"
},
"Borders.ContrastBorderColor": "#fdf6e3",
"Borders.color": "#edead9",
@@ -41,38 +47,41 @@
"arc": 0,
"background": "#fdf6e3",
"default": {
- "endBackground": "#d1cbb8",
- "endBorderColor": "#d1cbb8",
+ "endBackground": "#F6F0DE",
+ "endBorderColor": "#F6F0DE",
"foreground": "#002b36",
"focusColor": "#d33682",
"focusedBorderColor": "#d33682",
- "shadowColor": "#d1cbb8",
- "startBackground": "#d1cbb8",
- "startBorderColor": "#d1cbb8"
+ "shadowColor": "#F6F0DE",
+ "startBackground": "#F6F0DE",
+ "startBorderColor": "#F6F0DE"
},
- "disabledBorderColor": "#d8d4c4",
+ "disabledBorderColor": "#FEFBF1",
"disabledText": "#C9CCC3",
- "endBackground": "#d8d4c4",
- "endBorderColor": "#d8d4c4",
- "focus": "#d1cbb8",
+ "endBackground": "#FEFBF1",
+ "endBorderColor": "#FEFBF1",
+ "focus": "#F6F0DE",
"focusedBorderColor": "#d33682",
"foreground": "#93a1a1",
"highlight": "#002b36",
- "mt.background": "#d8d4c4",
+ "mt.background": "#FEFBF1",
"mt.foreground": "#93a1a1",
"mt.selectedForeground": "#002b36",
- "mt.selection.color1": "#d1cbb8",
- "mt.selection.color2": "#d1cbb8",
- "startBackground": "#d8d4c4",
- "startBorderColor": "#d8d4c4",
- "shadowColor": "#d8d4c4",
+ "mt.selection.color1": "#F6F0DE",
+ "mt.selection.color2": "#F6F0DE",
+ "startBackground": "#FEFBF1",
+ "startBorderColor": "#FEFBF1",
+ "shadowColor": "#FEFBF1",
"shadowWidth": 0
},
"Canvas": {
"Tooltip.borderColor": "#edead9",
"Tooltip.background": "#EDE8D4"
},
- "Content.background": "#eee8d5",
+ "Content": {
+ "background": "#eee8d5",
+ "selectionBackground": "#93a1a1"
+ },
"CheckBox": {
"background": "#fdf6e3",
"disabledText": "#C9CCC3",
@@ -86,30 +95,39 @@
"disabledBackground": "#fdf6e3",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#586e75",
+ "AccessEnabled": {
+ "accessDot": "#d33682",
+ "dropdownBorder": "#F6F0DE",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#fdf6e3",
"foreground": "#586e75",
"swatchesDefaultRecentColor": "#586e75"
},
- "ComboBoxButton.background": "#d8d4c4",
+ "ComboBoxButton.background": "#FEFBF1",
"ComboBox": {
"ArrowButton": {
- "background": "#d8d4c4",
+ "background": "#FEFBF1",
"disabledIconColor": "#C9CCC3",
"iconColor": "#586e75",
"nonEditableBackground": "#fdf6e3"
},
"background": "#eee8d5",
- "buttonBackground": "#d8d4c4",
+ "buttonBackground": "#FEFBF1",
+ "darcula.hoveredArrowButtonForeground": "#d33682",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
"modifiedItemForeground": "#d33682",
"nonEditableBackground": "#F6F0DE",
"padding": "5,5,5,5",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36"
},
"ComboPopup.border": "#edead9",
@@ -123,15 +141,15 @@
"selectedGrayedForeground": "#002b36",
"selectionGrayForeground": "#002b36",
"selectionInactiveInfoForeground": "#93a1a1",
- "selectionInactiveBackground": "#e8dcb650",
- "selectionBackground": "#e8dcb680",
+ "selectionInactiveBackground": "#93a1a150",
+ "selectionBackground": "#93a1a180",
"selectionForeground": "#002b36",
"selectionInfoForeground": "#002b36"
},
"Component": {
"arc": 4,
- "borderColor": "#d1cbb8",
- "disabledBorderColor": "#d8d4c4",
+ "borderColor": "#F6F0DE",
+ "disabledBorderColor": "#FEFBF1",
"focusColor": "#d33682",
"focusedBorderColor": "#d33682",
"hoverIconColor": "#d33682",
@@ -156,23 +174,25 @@
}
},
"DebuggerTabs": {
- "selectedBackground": "#d1cbb8",
- "underlinedTabBackground": "#d1cbb8"
+ "selectedBackground": "#F6F0DE",
+ "underlinedTabBackground": "#F6F0DE"
},
"DebuggerPopup": {
- "borderColor": "#d1cbb8"
+ "borderColor": "#F6F0DE"
},
"DefaultTabs": {
"background": "#fdf6e3",
"borderColor": "#fdf6e3",
- "hoverBackground": "#d1cbb8",
+ "hoverBackground": "#F6F0DE",
"hoverColor": "#eee8d5",
- "hoverMaskColor": "#d1cbb8",
- "inactiveColoredFileBackground": "#d8d4c4",
- "inactiveUnderlineColor": "#C9CCC3",
+ "hoverMaskColor": "#F6F0DE",
+ "inactiveColoredTabBackground": "#fdf6e3",
+ "inactiveColoredFileBackground": "#FEFBF1",
+ "inactiveUnderlineColor": "#d33682",
"inactiveMaskColor": "#eee8d5",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#d1cbb8"
+ "underlinedTabBackground": "#F6F0DE",
+ "underlinedTabForeground": "#002b36"
},
"Desktop.background": "#fdf6e3",
"DialogWrapper.southPanelBackground": "#fdf6e3",
@@ -193,29 +213,31 @@
"foreground": "#586e75",
"inactiveBackground": "#fdf6e3",
"inactiveForeground": "#C9CCC3",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36"
},
"EditorTabs": {
"borderColor": "#F6F0DE",
- "hoverColor": "#d1cbb8",
- "hoverMaskColor": "#d1cbb8",
+ "hoverBackground": "#F6F0DE",
+ "hoverColor": "#F6F0DE",
+ "hoverMaskColor": "#F6F0DE",
"inactiveMaskColor": "#fdf6e3",
- "inactiveColoredFileBackground": "#fdf6e32",
+ "inactiveColoredFileBackground": "#fdf6e3",
"inactiveUnderlineColor": "#C9CCC3",
"selectedForeground": "#586e75",
- "selectedBackground": "#d1cbb8",
+ "selectedBackground": "#F6F0DE",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#d1cbb8"
+ "underlinedTabBackground": "#F6F0DE",
+ "underlinedTabForeground": "#002b36"
},
"EditorGroupsTabs": {
"background": "#fdf6e3",
"borderColor": "#F6F0DE",
- "hoverBackground": "#d1cbb8",
- "hoverColor": "#d1cbb8",
+ "hoverBackground": "#F6F0DE",
+ "hoverColor": "#F6F0DE",
"inactiveUnderlineColor": "#d33682",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#d1cbb8",
+ "underlinedTabBackground": "#F6F0DE",
"underlinedTabForeground": "#586e75"
},
"FileColor": {
@@ -241,17 +263,18 @@
"background": "#eee8d5",
"caretForeground": "#d33682",
"foreground": "#586e75",
- "inactiveBackground": "#d8d4c4",
+ "inactiveBackground": "#FEFBF1",
"inactiveForeground": "#C9CCC3",
"selectionForeground": "#002b36",
- "selectionBackground": "#d1cbb8"
+ "selectionBackground": "#F6F0DE"
},
+ "GotItTooltip.borderColor": "#EDE8D4",
"Group": {
"disabledSeparatorColor": "#edead9",
"separatorColor": "#edead9"
},
"GutterTooltip": {
- "infoForeground": "#586e75",
+ "infoForeground": "#93a1a1",
"lineSeparatorColor": "#fdf6e3"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#C9CCC3",
"foreground": "#586e75",
"infoForeground": "#93a1a1",
- "selectedForeground": "#002b36"
+ "selectedForeground": "#002b36",
+ "selectedDisabledForeground": "#586e75"
},
"Link": {
"activeForeground": "#d33682",
@@ -301,17 +325,19 @@
"List": {
"background": "#F6F0DE",
"foreground": "#586e75",
- "selectionBackground": "#e8dcb650",
+ "hoverBackground": "#93a1a170",
+ "hoverInactiveBackground": "#F6F0DE",
+ "selectionBackground": "#93a1a150",
"selectionForeground": "#002b36",
"selectionInactiveForeground": "#002b36",
- "selectionInactiveBackground": "#e8dcb6b0"
+ "selectionInactiveBackground": "#93a1a170"
},
"material": {
"background": "#fdf6e3",
"branchColor": "#586e75",
"contrast": "#eee8d5",
"foreground": "#586e75",
- "mergeCommits": "#d8d4c4",
+ "mergeCommits": "#FEFBF1",
"primaryColor": "#93a1a1",
"selectionForeground": "#002b36",
"tab.backgroundColor": "#fdf6e3",
@@ -320,8 +346,8 @@
},
"MemoryIndicator": {
"allocatedBackground": "#F6F0DE",
- "usedColor": "#d1cbb8",
- "usedBackground": "#d1cbb8"
+ "usedColor": "#F6F0DE",
+ "usedBackground": "#F6F0DE"
},
"Menu": {
"acceleratorForeground": "#93a1a1",
@@ -332,7 +358,7 @@
"disabledBackground": "#F6F0DE",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36",
"separatorColor": "#edead9"
},
@@ -343,7 +369,7 @@
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
"highlight": "#fdf6e3",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36",
"shadow": "#eee8d5"
},
@@ -355,7 +381,7 @@
"disabledBackground": "#fdf6e3",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36"
},
"NavBar": {
@@ -378,9 +404,9 @@
"errorBorderColor": "#EDE8D4",
"foreground": "#586e75",
"MoreButton": {
- "background": "#d8d4c4",
+ "background": "#FEFBF1",
"foreground": "#586e75",
- "innerBorderColor": "#d8d4c4"
+ "innerBorderColor": "#FEFBF1"
},
"ToolWindow": {
"errorBackground": "#EDE8D4",
@@ -398,7 +424,7 @@
"messageForeground": "#586e75"
},
"Outline": {
- "color": "#d8d4c4",
+ "color": "#FEFBF1",
"focusedColor": "#d33682",
"disabledColor": "#C9CCC3"
},
@@ -408,13 +434,13 @@
},
"ParameterInfo": {
"background": "#F6F0DE",
- "borderColor": "#d1cbb8",
- "currentOverloadBackground": "#d1cbb8",
+ "borderColor": "#F6F0DE",
+ "currentOverloadBackground": "#F6F0DE",
"currentParameterForeground": "#d33682",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
"infoForeground": "#93a1a1",
- "lineSeparatorColor": "#d1cbb8"
+ "lineSeparatorColor": "#F6F0DE"
},
"PasswordField": {
"background": "#eee8d5",
@@ -422,28 +448,29 @@
"caretForeground": "#d33682",
"foreground": "#586e75",
"inactiveForeground": "#C9CCC3",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36"
},
"Plugins": {
"background": "#fdf6e3",
"disabledForeground": "#C9CCC3",
- "eapTagBackground": "#d1cbb8",
- "lightSelectionBackground": "#e8dcb6",
- "paidTagBackground": "#d1cbb8",
- "selectionBackground": "#e8dcb6",
+ "eapTagBackground": "#F6F0DE",
+ "hoverBackground": "#93a1a170",
+ "lightSelectionBackground": "#F6F0DE",
+ "paidTagBackground": "#F6F0DE",
+ "selectionBackground": "#93a1a1",
"tagForeground": "#d33682",
- "tagBackground": "#d1cbb8",
- "trialTagBackground": "#d1cbb8",
+ "tagBackground": "#F6F0DE",
+ "trialTagBackground": "#F6F0DE",
"Button": {
- "installBackground": "#d8d4c4",
- "installBorderColor": "#d8d4c4",
+ "installBackground": "#FEFBF1",
+ "installBorderColor": "#FEFBF1",
"installForeground": "#586e75",
- "installFocusedBackground": "#d1cbb8",
+ "installFocusedBackground": "#F6F0DE",
"installFillForeground": "#C9CCC3",
- "installFillBackground": "#d8d4c4",
- "updateBackground": "#d8d4c4",
- "updateBorderColor": "#d8d4c4",
+ "installFillBackground": "#FEFBF1",
+ "updateBackground": "#d33682",
+ "updateBorderColor": "#FEFBF1",
"updateForeground": "#586e75"
},
"SearchField": {
@@ -455,9 +482,9 @@
"foreground": "#586e75"
},
"Tab": {
- "hoverBackground": "#d1cbb8",
+ "hoverBackground": "#F6F0DE",
"selectedForeground": "#002b36",
- "selectedBackground": "#d1cbb8"
+ "selectedBackground": "#F6F0DE"
}
},
"Popup": {
@@ -496,8 +523,8 @@
"indeterminateEndColor": "#d33682",
"indeterminateStartColor": "#d33682",
"progressColor": "#d33682",
- "selectionBackground": "#d1cbb8",
- "trackColor": "#d1cbb8"
+ "selectionBackground": "#F6F0DE",
+ "trackColor": "#F6F0DE"
},
"PsiViewer": {
"referenceHighlightColor": "#d33682"
@@ -514,9 +541,10 @@
"disabledBackground": "#fdf6e3",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36"
},
+ "ScreenView.borderColor": "#edead9",
"ScrollBar": {
"background": "#fdf6e3",
"hoverThumbBorderColor": "#d33682",
@@ -538,7 +566,7 @@
"trackColor": "#fdf6e330"
}
},
- "thumb": "#d1cbb8",
+ "thumb": "#F6F0DE",
"thumbBorderColor": "#d3368270",
"thumbColor": "#d3368270",
"trackColor": "#fdf6e330",
@@ -571,14 +599,23 @@
"Tab": {
"active.foreground": "#002b36",
"selectedForeground": "#002b36",
- "selectedBackground": "#d1cbb8"
+ "selectedBackground": "#F6F0DE"
}
},
"SearchMatch": {
"endBackground": "#d33682",
- "startBackground": "#d33682"
+ "startBackground": "#d33682",
+ "endColor": "#d33682",
+ "startColor": "#d33682"
},
"SearchField.errorBackground": "#EDE8D4",
+ "SearchOption": {
+ "selectedBackground": "#F6F0DE"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#93a1a1",
+ "Repeated.File.Foreground": "#586e75"
+ },
"Separator": {
"background": "#F6F0DE",
"foreground": "#F6F0DE",
@@ -594,12 +631,12 @@
"foreground": "#586e75",
"majorTickLength": 6,
"tickColor": "#F6F0DE",
- "trackColor": "#d1cbb8",
+ "trackColor": "#F6F0DE",
"trackWidth": 7,
"thumb": "#d33682"
},
"SpeedSearch": {
- "background": "#d1cbb8",
+ "background": "#F6F0DE",
"borderColor": "#edead9",
"foreground": "#586e75",
"errorForeground": "#586e75"
@@ -616,21 +653,23 @@
},
"SplitPaneDivider.draggingColor": "#F6F0DE",
"StatusBar": {
- "borderColor": "#fdf6e3"
+ "borderColor": "#fdf6e3",
+ "hoverBackground": "#F6F0DE",
+ "LightEditBackground": "#F6F0DE"
},
"TabbedPane": {
"background": "#fdf6e3",
- "contentAreaColor": "#d1cbb8",
+ "contentAreaColor": "#F6F0DE",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#edead9",
"disabledForeground": "#C9CCC3",
"disabledUnderlineColor": "#C9CCC3",
- "focus": "#d1cbb8",
- "focusColor": "#d1cbb8",
+ "focus": "#F6F0DE",
+ "focusColor": "#F6F0DE",
"fontSizeOffset": 0,
"foreground": "#586e75",
"highlight": "#edead9",
- "hoverColor": "#d1cbb8",
+ "hoverColor": "#F6F0DE",
"labelShift": 0,
"selectedForeground": "#002b36",
"selectedLabelShift": 0,
@@ -643,22 +682,26 @@
},
"TabbedPane.mt.tab.background": "#eee8d5",
"Table": {
+ "alternativeRowBackground": "#eee8d5",
"background": "#fdf6e3",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#C9CCC3",
"dropLineColor": "#d33682",
"dropLineShortColor": "#d33682",
- "focusCellBackground": "#d1cbb8",
+ "focusCellBackground": "#F6F0DE",
"focusCellForeground": "#002b36",
"foreground": "#586e75",
"gridColor": "#fdf6e3",
- "highlightOuter": "#d1cbb8",
+ "highlightOuter": "#F6F0DE",
+ "hoverBackground": "#93a1a170",
+ "hoverInactiveBackground": "#F6F0DE",
"lightSelectionForeground": "#002b36",
"lightSelectionInactiveForeground": "#93a1a1",
"lightSelectionInactiveBackground": "#F6F0DE",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36",
- "selectionInactiveBackground": "#d1cbb8",
+ "selectionInactiveBackground": "#F6F0DE",
"selectionInactiveForeground": "#002b36",
"sortIconColor": "#586e75",
"stripeColor": "#eee8d5"
@@ -670,7 +713,7 @@
"cellBorder": "4,0,4,0",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
- "focusCellBackground": "#d1cbb8",
+ "focusCellBackground": "#F6F0DE",
"focusCellForeground": "#002b36",
"height": 25,
"separatorColor": "#F6F0DE"
@@ -683,7 +726,7 @@
"caretForeground": "#d33682",
"foreground": "#586e75",
"inactiveForeground": "#C9CCC3",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36"
},
"TextField": {
@@ -691,7 +734,7 @@
"caretForeground": "#d33682",
"foreground": "#586e75",
"inactiveForeground": "#C9CCC3",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36"
},
"TextPane": {
@@ -699,19 +742,19 @@
"caretForeground": "#d33682",
"foreground": "#586e75",
"inactiveForeground": "#C9CCC3",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36"
},
"TitlePane": {
"background": "#eee8d5",
- "Button.hoverBackground": "#d1cbb8",
+ "Button.hoverBackground": "#F6F0DE",
"inactiveBackground": "#fdf6e3",
"infoForeground": "#93a1a1",
"inactiveInfoForeground": "#93a1a1"
},
"TitledBorder.titleColor": "#586e75",
"ToggleButton": {
- "borderColor": "#d8d4c4",
+ "borderColor": "#FEFBF1",
"buttonColor": "#586e75",
"disabledText": "#C9CCC3",
"foreground": "#586e75",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#fdf6e3",
"Actions.infoForeground": "#93a1a1",
- "background": "#fdf6e3",
- "borderColor": "#d1cbb8",
+ "background": "#EDE8D4",
+ "borderColor": "#edead9",
"foreground": "#586e75",
"infoForeground": "#93a1a1",
"separatorColor": "#edead9",
@@ -738,7 +781,7 @@
},
"ToolWindow": {
"Button": {
- "hoverBackground": "#d1cbb8",
+ "hoverBackground": "#F6F0DE",
"selectedForeground": "#002b36",
"selectedBackground": "#eee8d5"
},
@@ -751,50 +794,93 @@
"background": "#fdf6e3"
},
"HeaderTab": {
- "hoverBackground": "#d1cbb8",
+ "borderColor": "#F6F0DE",
+ "hoverBackground": "#F6F0DE",
"hoverInactiveBackground": "#F6F0DE",
"inactiveUnderlineColor": "#d33682",
"selectedBackground": "#eee8d5",
"selectedInactiveBackground": "#eee8d5",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#d1cbb8",
- "underlinedTabInactiveBackground": "#F6F0DE"
+ "underlinedTabBackground": "#F6F0DE",
+ "underlinedTabInactiveBackground": "#F6F0DE",
+ "underlinedTabForeground": "#002b36",
+ "underlinedTabInactiveForeground": "#586e75"
}
},
"Tree": {
"background": "#eee8d5",
"foreground": "#93a1a1",
"hash": "#edead9",
+ "hoverBackground": "#93a1a170",
+ "hoverInactiveBackground": "#F6F0DE",
"modifiedItemForeground": "#d33682",
"rowHeight": 28,
- "selectionBackground": "#e8dcb6b0",
+ "selectionBackground": "#93a1a170",
"selectionForeground": "#002b36",
"selectionInactiveForeground": "#002b36",
- "selectionInactiveBackground": "#e8dcb6b0",
+ "selectionInactiveBackground": "#93a1a170",
"textBackground": "#eee8d5"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#edead9",
- "ColorPicker.background": "#fdf6e3",
- "ColorPicker.foreground": "#586e75",
- "Component.borderColor": "#edead9",
- "Component.background": "#fdf6e3",
- "Component.foreground": "#586e75",
- "Connector.borderColor": "#edead9",
- "Connector.hoverBorderColor": "#d1cbb8",
+ "Canvas.background": "#eee8d5",
+ "ColorPicker": {
+ "background": "#fdf6e3",
+ "foreground": "#586e75"
+ },
+ "Component": {
+ "borderColor": "#edead9",
+ "background": "#fdf6e3",
+ "foreground": "#586e75",
+ "hoverBorderColor": "#F6F0DE"
+ },
+ "Connector": {
+ "borderColor": "#edead9",
+ "hoverBorderColor": "#F6F0DE"
+ },
"Canvas.background": "#eee8d5",
"highStroke.foreground": "#586e75",
"Label.foreground": "#93a1a1",
- "List.selectionBackground": "#e8dcb6b0",
- "Panel.borderColor": "#edead9",
- "Panel.background": "#fdf6e3",
+ "List.selectionBackground": "#93a1a170",
+ "motion": {
+ "borderColor": "#edead9",
+ "Component.foreground": "#586e75",
+ "ConstraintSetText.foreground": "#93a1a1",
+ "ConstraintSet.background": "#F6F0DE",
+ "CSPanel.SelectedFocusBackground": "#93a1a1",
+ "CSPanel.SelectedBackground": "#93a1a170",
+ "cs_FocusText.infoForeground": "#93a1a1",
+ "CursorTextColor.foreground": "#586e75",
+ "HoverColor.disabledBackground": "#C9CCC3",
+ "motionGraph.background": "#fdf6e3",
+ "Notification.background": "#EDE8D4",
+ "ourAvg.background": "#F6F0DE",
+ "ourCS.background": "#F6F0DE",
+ "ourCS_Border.borderColor": "#edead9",
+ "ourCS_TextColor.foreground": "#93a1a1",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#002b36",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#F6F0DE",
+ "ourCS_SelectedBorder.pressedBorderColor": "#F6F0DE",
+ "ourML_BarColor.separatorColor": "#edead9",
+ "PrimaryPanel.background": "#eee8d5",
+ "SecondaryPanel.background": "#fdf6e3",
+ "SecondaryPanel.header.foreground": "#93a1a1",
+ "SecondaryPanel.header.background": "#eee8d5",
+ "timeLine.disabledBorderColor": "#edead9"
+ },
+ "Panel": {
+ "borderColor": "#edead9",
+ "background": "#fdf6e3"
+ },
"percent.foreground": "#586e75",
- "Placeholder.background": "#fdf6e3",
- "Placeholder.borderColor": "#edead9",
- "Placeholder.foreground": "#586e75",
- "Placeholder.selectedForeground": "#002b36",
+ "Placeholder": {
+ "background": "#fdf6e3",
+ "borderColor": "#edead9",
+ "foreground": "#586e75",
+ "selectedForeground": "#002b36"
+ },
"Preview.background": "#fdf6e3",
"stroke.acceleratorForeground": "#93a1a1"
},
@@ -809,7 +895,7 @@
"selectedBranchBackground": "#fdf6e3"
},
"GitCommits": {
- "graphColor": "#d1cbb8"
+ "graphColor": "#F6F0DE"
},
"GitLog": {
"localBranchIconColor": "#d33682",
@@ -828,11 +914,12 @@
},
"Log": {
"Commit.unmatchedForeground": "#93a1a1",
- "Commit.currentBranchBackground": "#F6F0DE"
+ "Commit.currentBranchBackground": "#F6F0DE",
+ "Commit.hoveredBackground": "#93a1a170"
},
"RefLabel": {
"foreground": "#002b36",
- "backgroundBase": "#d1cbb8"
+ "backgroundBase": "#F6F0DE"
}
},
"Viewport": {
@@ -840,18 +927,24 @@
"foreground": "#586e75"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#fdf6e3",
"background": "#fdf6e3",
"borderColor": "#fdf6e3",
"captionBackground": "#eee8d5",
"captionForeground": "#586e75",
+ "Details.background": "#fdf6e3",
"footerBackground": "#eee8d5",
"footerForeground": "#586e75",
"headerBackground": "#fdf6e3",
"headerForeground": "#586e75",
+ "List.background": "#eee8d5",
"separatorColor": "#edead9",
+ "SidePanel.background": "#F6F0DE",
"Projects": {
+ "actions.background": "#eee8d5",
+ "actions.selectionBackground": "#F6F0DE",
"background": "#F6F0DE",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionInactiveBackground": "#F6F0DE"
}
},
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light.theme.json
index af9f9ec6..a260b958 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/material-theme-ui-lite/Solarized Light.theme.json
@@ -3,6 +3,12 @@
"dark": false,
"author": "Mallowigi",
"editorScheme": "/colors/Solarized Light.xml",
+ "emptyFrameBackground": {
+ "anchor": "center",
+ "image": "/walls/solarlight.svg",
+ "fill": "scale",
+ "transparency": 50
+ },
"ui": {
"*": {
"acceleratorSelectionForeground": "#93a1a1",
@@ -11,13 +17,13 @@
"disabledBackground": "#E3DCC9",
"disabledForeground": "#C9CCC3",
"disabledText": "#C9CCC3",
- "focusColor": "#d1cbb8",
+ "focusColor": "#F6F0DE",
"focusedBorderColor": "#d33682",
"foreground": "#586e75",
"inactiveBackground": "#E3DCC9",
"inactiveForeground": "#93a1a1",
"infoForeground": "#93a1a1",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionBackgroundInactive": "#F6F0DE",
"selectionForeground": "#002b36",
"selectionInactiveBackground": "#F6F0DE",
@@ -27,13 +33,13 @@
"ActionButton": {
"hoverBackground": "#d3368250",
"hoverBorderColor": "#d3368250",
- "hoverSeparatorColor": "#d8d4c4",
+ "hoverSeparatorColor": "#FEFBF1",
"focusedBorderColor": "#d3368250",
"pressedBackground": "#d3368250",
"pressedBorderColor": "#d3368250"
},
"Autocomplete": {
- "selectionBackground": "#e8dcb6"
+ "selectionBackground": "#93a1a1"
},
"Borders.ContrastBorderColor": "#fdf6e3",
"Borders.color": "#edead9",
@@ -41,38 +47,41 @@
"arc": 0,
"background": "#fdf6e3",
"default": {
- "endBackground": "#d1cbb8",
- "endBorderColor": "#d1cbb8",
+ "endBackground": "#F6F0DE",
+ "endBorderColor": "#F6F0DE",
"foreground": "#002b36",
"focusColor": "#d33682",
"focusedBorderColor": "#d33682",
- "shadowColor": "#d1cbb8",
- "startBackground": "#d1cbb8",
- "startBorderColor": "#d1cbb8"
+ "shadowColor": "#F6F0DE",
+ "startBackground": "#F6F0DE",
+ "startBorderColor": "#F6F0DE"
},
- "disabledBorderColor": "#d8d4c4",
+ "disabledBorderColor": "#FEFBF1",
"disabledText": "#C9CCC3",
- "endBackground": "#d8d4c4",
- "endBorderColor": "#d8d4c4",
- "focus": "#d1cbb8",
+ "endBackground": "#FEFBF1",
+ "endBorderColor": "#FEFBF1",
+ "focus": "#F6F0DE",
"focusedBorderColor": "#d33682",
"foreground": "#93a1a1",
"highlight": "#002b36",
- "mt.background": "#d8d4c4",
+ "mt.background": "#FEFBF1",
"mt.foreground": "#93a1a1",
"mt.selectedForeground": "#002b36",
- "mt.selection.color1": "#d1cbb8",
- "mt.selection.color2": "#d1cbb8",
- "startBackground": "#d8d4c4",
- "startBorderColor": "#d8d4c4",
- "shadowColor": "#d8d4c4",
+ "mt.selection.color1": "#F6F0DE",
+ "mt.selection.color2": "#F6F0DE",
+ "startBackground": "#FEFBF1",
+ "startBorderColor": "#FEFBF1",
+ "shadowColor": "#FEFBF1",
"shadowWidth": 0
},
"Canvas": {
"Tooltip.borderColor": "#edead9",
"Tooltip.background": "#EDE8D4"
},
- "Content.background": "#eee8d5",
+ "Content": {
+ "background": "#eee8d5",
+ "selectionBackground": "#93a1a1"
+ },
"CheckBox": {
"background": "#fdf6e3",
"disabledText": "#C9CCC3",
@@ -86,30 +95,39 @@
"disabledBackground": "#fdf6e3",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36"
},
+ "CodeWithMe": {
+ "Avatar.foreground": "#586e75",
+ "AccessEnabled": {
+ "accessDot": "#d33682",
+ "dropdownBorder": "#F6F0DE",
+ "pillBackground": "$second"
+ }
+ },
"ColorChooser": {
"background": "#fdf6e3",
"foreground": "#586e75",
"swatchesDefaultRecentColor": "#586e75"
},
- "ComboBoxButton.background": "#d8d4c4",
+ "ComboBoxButton.background": "#FEFBF1",
"ComboBox": {
"ArrowButton": {
- "background": "#d8d4c4",
+ "background": "#FEFBF1",
"disabledIconColor": "#C9CCC3",
"iconColor": "#586e75",
"nonEditableBackground": "#fdf6e3"
},
"background": "#fdf6e3",
- "buttonBackground": "#d8d4c4",
+ "buttonBackground": "#FEFBF1",
+ "darcula.hoveredArrowButtonForeground": "#d33682",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
"modifiedItemForeground": "#d33682",
"nonEditableBackground": "#F6F0DE",
"padding": "5,5,5,5",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36"
},
"ComboPopup.border": "#edead9",
@@ -123,15 +141,15 @@
"selectedGrayedForeground": "#002b36",
"selectionGrayForeground": "#002b36",
"selectionInactiveInfoForeground": "#93a1a1",
- "selectionInactiveBackground": "#e8dcb650",
- "selectionBackground": "#e8dcb680",
+ "selectionInactiveBackground": "#93a1a150",
+ "selectionBackground": "#93a1a180",
"selectionForeground": "#002b36",
"selectionInfoForeground": "#002b36"
},
"Component": {
"arc": 4,
- "borderColor": "#d1cbb8",
- "disabledBorderColor": "#d8d4c4",
+ "borderColor": "#F6F0DE",
+ "disabledBorderColor": "#FEFBF1",
"focusColor": "#d33682",
"focusedBorderColor": "#d33682",
"hoverIconColor": "#d33682",
@@ -156,23 +174,25 @@
}
},
"DebuggerTabs": {
- "selectedBackground": "#d1cbb8",
- "underlinedTabBackground": "#d1cbb8"
+ "selectedBackground": "#F6F0DE",
+ "underlinedTabBackground": "#F6F0DE"
},
"DebuggerPopup": {
- "borderColor": "#d1cbb8"
+ "borderColor": "#F6F0DE"
},
"DefaultTabs": {
"background": "#fdf6e3",
"borderColor": "#fdf6e3",
- "hoverBackground": "#d1cbb8",
+ "hoverBackground": "#F6F0DE",
"hoverColor": "#fdf6e3",
- "hoverMaskColor": "#d1cbb8",
- "inactiveColoredFileBackground": "#d8d4c4",
- "inactiveUnderlineColor": "#C9CCC3",
+ "hoverMaskColor": "#F6F0DE",
+ "inactiveColoredTabBackground": "#fdf6e3",
+ "inactiveColoredFileBackground": "#FEFBF1",
+ "inactiveUnderlineColor": "#d33682",
"inactiveMaskColor": "#fdf6e3",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#d1cbb8"
+ "underlinedTabBackground": "#F6F0DE",
+ "underlinedTabForeground": "#002b36"
},
"Desktop.background": "#fdf6e3",
"DialogWrapper.southPanelBackground": "#fdf6e3",
@@ -193,29 +213,31 @@
"foreground": "#586e75",
"inactiveBackground": "#fdf6e3",
"inactiveForeground": "#C9CCC3",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36"
},
"EditorTabs": {
"borderColor": "#F6F0DE",
- "hoverColor": "#d1cbb8",
- "hoverMaskColor": "#d1cbb8",
+ "hoverBackground": "#F6F0DE",
+ "hoverColor": "#F6F0DE",
+ "hoverMaskColor": "#F6F0DE",
"inactiveMaskColor": "#fdf6e3",
- "inactiveColoredFileBackground": "#fdf6e32",
+ "inactiveColoredFileBackground": "#fdf6e3",
"inactiveUnderlineColor": "#C9CCC3",
"selectedForeground": "#586e75",
- "selectedBackground": "#d1cbb8",
+ "selectedBackground": "#F6F0DE",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#d1cbb8"
+ "underlinedTabBackground": "#F6F0DE",
+ "underlinedTabForeground": "#002b36"
},
"EditorGroupsTabs": {
"background": "#fdf6e3",
"borderColor": "#F6F0DE",
- "hoverBackground": "#d1cbb8",
- "hoverColor": "#d1cbb8",
+ "hoverBackground": "#F6F0DE",
+ "hoverColor": "#F6F0DE",
"inactiveUnderlineColor": "#d33682",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#d1cbb8",
+ "underlinedTabBackground": "#F6F0DE",
"underlinedTabForeground": "#586e75"
},
"FileColor": {
@@ -241,17 +263,18 @@
"background": "#fdf6e3",
"caretForeground": "#d33682",
"foreground": "#586e75",
- "inactiveBackground": "#d8d4c4",
+ "inactiveBackground": "#FEFBF1",
"inactiveForeground": "#C9CCC3",
"selectionForeground": "#002b36",
- "selectionBackground": "#d1cbb8"
+ "selectionBackground": "#F6F0DE"
},
+ "GotItTooltip.borderColor": "#EDE8D4",
"Group": {
"disabledSeparatorColor": "#edead9",
"separatorColor": "#edead9"
},
"GutterTooltip": {
- "infoForeground": "#586e75",
+ "infoForeground": "#93a1a1",
"lineSeparatorColor": "#fdf6e3"
},
"HeaderColor": {
@@ -288,7 +311,8 @@
"disabledText": "#C9CCC3",
"foreground": "#586e75",
"infoForeground": "#93a1a1",
- "selectedForeground": "#002b36"
+ "selectedForeground": "#002b36",
+ "selectedDisabledForeground": "#586e75"
},
"Link": {
"activeForeground": "#d33682",
@@ -301,17 +325,19 @@
"List": {
"background": "#F6F0DE",
"foreground": "#586e75",
- "selectionBackground": "#e8dcb650",
+ "hoverBackground": "#93a1a170",
+ "hoverInactiveBackground": "#F6F0DE",
+ "selectionBackground": "#93a1a150",
"selectionForeground": "#002b36",
"selectionInactiveForeground": "#002b36",
- "selectionInactiveBackground": "#e8dcb6b0"
+ "selectionInactiveBackground": "#93a1a170"
},
"material": {
"background": "#fdf6e3",
"branchColor": "#586e75",
"contrast": "#eee8d5",
"foreground": "#586e75",
- "mergeCommits": "#d8d4c4",
+ "mergeCommits": "#FEFBF1",
"primaryColor": "#93a1a1",
"selectionForeground": "#002b36",
"tab.backgroundColor": "#fdf6e3",
@@ -320,8 +346,8 @@
},
"MemoryIndicator": {
"allocatedBackground": "#F6F0DE",
- "usedColor": "#d1cbb8",
- "usedBackground": "#d1cbb8"
+ "usedColor": "#F6F0DE",
+ "usedBackground": "#F6F0DE"
},
"Menu": {
"acceleratorForeground": "#93a1a1",
@@ -332,7 +358,7 @@
"disabledBackground": "#F6F0DE",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36",
"separatorColor": "#edead9"
},
@@ -343,7 +369,7 @@
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
"highlight": "#fdf6e3",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36",
"shadow": "#fdf6e3"
},
@@ -355,7 +381,7 @@
"disabledBackground": "#fdf6e3",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36"
},
"NavBar": {
@@ -378,9 +404,9 @@
"errorBorderColor": "#EDE8D4",
"foreground": "#586e75",
"MoreButton": {
- "background": "#d8d4c4",
+ "background": "#FEFBF1",
"foreground": "#586e75",
- "innerBorderColor": "#d8d4c4"
+ "innerBorderColor": "#FEFBF1"
},
"ToolWindow": {
"errorBackground": "#EDE8D4",
@@ -398,7 +424,7 @@
"messageForeground": "#586e75"
},
"Outline": {
- "color": "#d8d4c4",
+ "color": "#FEFBF1",
"focusedColor": "#d33682",
"disabledColor": "#C9CCC3"
},
@@ -408,13 +434,13 @@
},
"ParameterInfo": {
"background": "#F6F0DE",
- "borderColor": "#d1cbb8",
- "currentOverloadBackground": "#d1cbb8",
+ "borderColor": "#F6F0DE",
+ "currentOverloadBackground": "#F6F0DE",
"currentParameterForeground": "#d33682",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
"infoForeground": "#93a1a1",
- "lineSeparatorColor": "#d1cbb8"
+ "lineSeparatorColor": "#F6F0DE"
},
"PasswordField": {
"background": "#fdf6e3",
@@ -422,28 +448,29 @@
"caretForeground": "#d33682",
"foreground": "#586e75",
"inactiveForeground": "#C9CCC3",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36"
},
"Plugins": {
"background": "#fdf6e3",
"disabledForeground": "#C9CCC3",
- "eapTagBackground": "#d1cbb8",
- "lightSelectionBackground": "#e8dcb6",
- "paidTagBackground": "#d1cbb8",
- "selectionBackground": "#e8dcb6",
+ "eapTagBackground": "#F6F0DE",
+ "hoverBackground": "#93a1a170",
+ "lightSelectionBackground": "#F6F0DE",
+ "paidTagBackground": "#F6F0DE",
+ "selectionBackground": "#93a1a1",
"tagForeground": "#d33682",
- "tagBackground": "#d1cbb8",
- "trialTagBackground": "#d1cbb8",
+ "tagBackground": "#F6F0DE",
+ "trialTagBackground": "#F6F0DE",
"Button": {
- "installBackground": "#d8d4c4",
- "installBorderColor": "#d8d4c4",
+ "installBackground": "#FEFBF1",
+ "installBorderColor": "#FEFBF1",
"installForeground": "#586e75",
- "installFocusedBackground": "#d1cbb8",
+ "installFocusedBackground": "#F6F0DE",
"installFillForeground": "#C9CCC3",
- "installFillBackground": "#d8d4c4",
- "updateBackground": "#d8d4c4",
- "updateBorderColor": "#d8d4c4",
+ "installFillBackground": "#FEFBF1",
+ "updateBackground": "#d33682",
+ "updateBorderColor": "#FEFBF1",
"updateForeground": "#586e75"
},
"SearchField": {
@@ -455,9 +482,9 @@
"foreground": "#586e75"
},
"Tab": {
- "hoverBackground": "#d1cbb8",
+ "hoverBackground": "#F6F0DE",
"selectedForeground": "#002b36",
- "selectedBackground": "#d1cbb8"
+ "selectedBackground": "#F6F0DE"
}
},
"Popup": {
@@ -496,8 +523,8 @@
"indeterminateEndColor": "#d33682",
"indeterminateStartColor": "#d33682",
"progressColor": "#d33682",
- "selectionBackground": "#d1cbb8",
- "trackColor": "#d1cbb8"
+ "selectionBackground": "#F6F0DE",
+ "trackColor": "#F6F0DE"
},
"PsiViewer": {
"referenceHighlightColor": "#d33682"
@@ -514,9 +541,10 @@
"disabledBackground": "#fdf6e3",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionForeground": "#002b36"
},
+ "ScreenView.borderColor": "#edead9",
"ScrollBar": {
"background": "#fdf6e3",
"hoverThumbBorderColor": "#d33682",
@@ -538,7 +566,7 @@
"trackColor": "#fdf6e330"
}
},
- "thumb": "#d1cbb8",
+ "thumb": "#F6F0DE",
"thumbBorderColor": "#d3368270",
"thumbColor": "#d3368270",
"trackColor": "#fdf6e330",
@@ -571,14 +599,23 @@
"Tab": {
"active.foreground": "#002b36",
"selectedForeground": "#002b36",
- "selectedBackground": "#d1cbb8"
+ "selectedBackground": "#F6F0DE"
}
},
"SearchMatch": {
"endBackground": "#d33682",
- "startBackground": "#d33682"
+ "startBackground": "#d33682",
+ "endColor": "#d33682",
+ "startColor": "#d33682"
},
"SearchField.errorBackground": "#EDE8D4",
+ "SearchOption": {
+ "selectedBackground": "#F6F0DE"
+ },
+ "SearchResults": {
+ "Ordinal.File.Foreground": "#93a1a1",
+ "Repeated.File.Foreground": "#586e75"
+ },
"Separator": {
"background": "#F6F0DE",
"foreground": "#F6F0DE",
@@ -594,12 +631,12 @@
"foreground": "#586e75",
"majorTickLength": 6,
"tickColor": "#F6F0DE",
- "trackColor": "#d1cbb8",
+ "trackColor": "#F6F0DE",
"trackWidth": 7,
"thumb": "#d33682"
},
"SpeedSearch": {
- "background": "#d1cbb8",
+ "background": "#F6F0DE",
"borderColor": "#edead9",
"foreground": "#586e75",
"errorForeground": "#586e75"
@@ -616,21 +653,23 @@
},
"SplitPaneDivider.draggingColor": "#F6F0DE",
"StatusBar": {
- "borderColor": "#fdf6e3"
+ "borderColor": "#fdf6e3",
+ "hoverBackground": "#F6F0DE",
+ "LightEditBackground": "#F6F0DE"
},
"TabbedPane": {
"background": "#fdf6e3",
- "contentAreaColor": "#d1cbb8",
+ "contentAreaColor": "#F6F0DE",
"contentBorderInsets": "3,1,1,1",
"darkShadow": "#edead9",
"disabledForeground": "#C9CCC3",
"disabledUnderlineColor": "#C9CCC3",
- "focus": "#d1cbb8",
- "focusColor": "#d1cbb8",
+ "focus": "#F6F0DE",
+ "focusColor": "#F6F0DE",
"fontSizeOffset": 0,
"foreground": "#586e75",
"highlight": "#edead9",
- "hoverColor": "#d1cbb8",
+ "hoverColor": "#F6F0DE",
"labelShift": 0,
"selectedForeground": "#002b36",
"selectedLabelShift": 0,
@@ -643,22 +682,26 @@
},
"TabbedPane.mt.tab.background": "#fdf6e3",
"Table": {
+ "alternativeRowBackground": "#eee8d5",
"background": "#fdf6e3",
"cellNoFocusBorder": "10,5,10,5",
"focusCellHighlightBorder": "10,5,10,5",
+ "disabledForeground": "#C9CCC3",
"dropLineColor": "#d33682",
"dropLineShortColor": "#d33682",
- "focusCellBackground": "#d1cbb8",
+ "focusCellBackground": "#F6F0DE",
"focusCellForeground": "#002b36",
"foreground": "#586e75",
"gridColor": "#fdf6e3",
- "highlightOuter": "#d1cbb8",
+ "highlightOuter": "#F6F0DE",
+ "hoverBackground": "#93a1a170",
+ "hoverInactiveBackground": "#F6F0DE",
"lightSelectionForeground": "#002b36",
"lightSelectionInactiveForeground": "#93a1a1",
"lightSelectionInactiveBackground": "#F6F0DE",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36",
- "selectionInactiveBackground": "#d1cbb8",
+ "selectionInactiveBackground": "#F6F0DE",
"selectionInactiveForeground": "#002b36",
"sortIconColor": "#586e75",
"stripeColor": "#eee8d5"
@@ -670,7 +713,7 @@
"cellBorder": "4,0,4,0",
"disabledForeground": "#C9CCC3",
"foreground": "#586e75",
- "focusCellBackground": "#d1cbb8",
+ "focusCellBackground": "#F6F0DE",
"focusCellForeground": "#002b36",
"height": 25,
"separatorColor": "#F6F0DE"
@@ -683,7 +726,7 @@
"caretForeground": "#d33682",
"foreground": "#586e75",
"inactiveForeground": "#C9CCC3",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36"
},
"TextField": {
@@ -691,7 +734,7 @@
"caretForeground": "#d33682",
"foreground": "#586e75",
"inactiveForeground": "#C9CCC3",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36"
},
"TextPane": {
@@ -699,19 +742,19 @@
"caretForeground": "#d33682",
"foreground": "#586e75",
"inactiveForeground": "#C9CCC3",
- "selectionBackground": "#d1cbb8",
+ "selectionBackground": "#F6F0DE",
"selectionForeground": "#002b36"
},
"TitlePane": {
"background": "#eee8d5",
- "Button.hoverBackground": "#d1cbb8",
+ "Button.hoverBackground": "#F6F0DE",
"inactiveBackground": "#fdf6e3",
"infoForeground": "#93a1a1",
"inactiveInfoForeground": "#93a1a1"
},
"TitledBorder.titleColor": "#586e75",
"ToggleButton": {
- "borderColor": "#d8d4c4",
+ "borderColor": "#FEFBF1",
"buttonColor": "#586e75",
"disabledText": "#C9CCC3",
"foreground": "#586e75",
@@ -729,8 +772,8 @@
"ToolTip": {
"Actions.background": "#fdf6e3",
"Actions.infoForeground": "#93a1a1",
- "background": "#fdf6e3",
- "borderColor": "#d1cbb8",
+ "background": "#EDE8D4",
+ "borderColor": "#edead9",
"foreground": "#586e75",
"infoForeground": "#93a1a1",
"separatorColor": "#edead9",
@@ -738,7 +781,7 @@
},
"ToolWindow": {
"Button": {
- "hoverBackground": "#d1cbb8",
+ "hoverBackground": "#F6F0DE",
"selectedForeground": "#002b36",
"selectedBackground": "#eee8d5"
},
@@ -751,50 +794,93 @@
"background": "#fdf6e3"
},
"HeaderTab": {
- "hoverBackground": "#d1cbb8",
+ "borderColor": "#F6F0DE",
+ "hoverBackground": "#F6F0DE",
"hoverInactiveBackground": "#F6F0DE",
"inactiveUnderlineColor": "#d33682",
"selectedBackground": "#eee8d5",
"selectedInactiveBackground": "#eee8d5",
"underlineColor": "#d33682",
- "underlinedTabBackground": "#d1cbb8",
- "underlinedTabInactiveBackground": "#F6F0DE"
+ "underlinedTabBackground": "#F6F0DE",
+ "underlinedTabInactiveBackground": "#F6F0DE",
+ "underlinedTabForeground": "#002b36",
+ "underlinedTabInactiveForeground": "#586e75"
}
},
"Tree": {
"background": "#fdf6e3",
"foreground": "#93a1a1",
"hash": "#edead9",
+ "hoverBackground": "#93a1a170",
+ "hoverInactiveBackground": "#F6F0DE",
"modifiedItemForeground": "#d33682",
"rowHeight": 28,
- "selectionBackground": "#e8dcb6b0",
+ "selectionBackground": "#93a1a170",
"selectionForeground": "#002b36",
"selectionInactiveForeground": "#002b36",
- "selectionInactiveBackground": "#e8dcb6b0",
+ "selectionInactiveBackground": "#93a1a170",
"textBackground": "#fdf6e3"
},
"Tree.leftChildIndent": 10,
"Tree.rightChildIndent": 5,
- "UiDesigner": {
+ "UIDesigner": {
"Activity.borderColor": "#edead9",
- "ColorPicker.background": "#fdf6e3",
- "ColorPicker.foreground": "#586e75",
- "Component.borderColor": "#edead9",
- "Component.background": "#fdf6e3",
- "Component.foreground": "#586e75",
- "Connector.borderColor": "#edead9",
- "Connector.hoverBorderColor": "#d1cbb8",
+ "Canvas.background": "#eee8d5",
+ "ColorPicker": {
+ "background": "#fdf6e3",
+ "foreground": "#586e75"
+ },
+ "Component": {
+ "borderColor": "#edead9",
+ "background": "#fdf6e3",
+ "foreground": "#586e75",
+ "hoverBorderColor": "#F6F0DE"
+ },
+ "Connector": {
+ "borderColor": "#edead9",
+ "hoverBorderColor": "#F6F0DE"
+ },
"Canvas.background": "#eee8d5",
"highStroke.foreground": "#586e75",
"Label.foreground": "#93a1a1",
- "List.selectionBackground": "#e8dcb6b0",
- "Panel.borderColor": "#edead9",
- "Panel.background": "#fdf6e3",
+ "List.selectionBackground": "#93a1a170",
+ "motion": {
+ "borderColor": "#edead9",
+ "Component.foreground": "#586e75",
+ "ConstraintSetText.foreground": "#93a1a1",
+ "ConstraintSet.background": "#F6F0DE",
+ "CSPanel.SelectedFocusBackground": "#93a1a1",
+ "CSPanel.SelectedBackground": "#93a1a170",
+ "cs_FocusText.infoForeground": "#93a1a1",
+ "CursorTextColor.foreground": "#586e75",
+ "HoverColor.disabledBackground": "#C9CCC3",
+ "motionGraph.background": "#fdf6e3",
+ "Notification.background": "#EDE8D4",
+ "ourAvg.background": "#F6F0DE",
+ "ourCS.background": "#F6F0DE",
+ "ourCS_Border.borderColor": "#edead9",
+ "ourCS_TextColor.foreground": "#93a1a1",
+ "ourCS_SelectedFocusBackground.selectionForeground": "#002b36",
+ "ourCS_SelectedBackground.selectionInactiveBackground": "#F6F0DE",
+ "ourCS_SelectedBorder.pressedBorderColor": "#F6F0DE",
+ "ourML_BarColor.separatorColor": "#edead9",
+ "PrimaryPanel.background": "#eee8d5",
+ "SecondaryPanel.background": "#fdf6e3",
+ "SecondaryPanel.header.foreground": "#93a1a1",
+ "SecondaryPanel.header.background": "#eee8d5",
+ "timeLine.disabledBorderColor": "#edead9"
+ },
+ "Panel": {
+ "borderColor": "#edead9",
+ "background": "#fdf6e3"
+ },
"percent.foreground": "#586e75",
- "Placeholder.background": "#fdf6e3",
- "Placeholder.borderColor": "#edead9",
- "Placeholder.foreground": "#586e75",
- "Placeholder.selectedForeground": "#002b36",
+ "Placeholder": {
+ "background": "#fdf6e3",
+ "borderColor": "#edead9",
+ "foreground": "#586e75",
+ "selectedForeground": "#002b36"
+ },
"Preview.background": "#fdf6e3",
"stroke.acceleratorForeground": "#93a1a1"
},
@@ -809,7 +895,7 @@
"selectedBranchBackground": "#fdf6e3"
},
"GitCommits": {
- "graphColor": "#d1cbb8"
+ "graphColor": "#F6F0DE"
},
"GitLog": {
"localBranchIconColor": "#d33682",
@@ -828,11 +914,12 @@
},
"Log": {
"Commit.unmatchedForeground": "#93a1a1",
- "Commit.currentBranchBackground": "#F6F0DE"
+ "Commit.currentBranchBackground": "#F6F0DE",
+ "Commit.hoveredBackground": "#93a1a170"
},
"RefLabel": {
"foreground": "#002b36",
- "backgroundBase": "#d1cbb8"
+ "backgroundBase": "#F6F0DE"
}
},
"Viewport": {
@@ -840,18 +927,24 @@
"foreground": "#586e75"
},
"WelcomeScreen": {
+ "AssociatedComponent.background": "#fdf6e3",
"background": "#fdf6e3",
"borderColor": "#fdf6e3",
"captionBackground": "#eee8d5",
"captionForeground": "#586e75",
+ "Details.background": "#fdf6e3",
"footerBackground": "#eee8d5",
"footerForeground": "#586e75",
"headerBackground": "#fdf6e3",
"headerForeground": "#586e75",
+ "List.background": "#eee8d5",
"separatorColor": "#edead9",
+ "SidePanel.background": "#F6F0DE",
"Projects": {
+ "actions.background": "#eee8d5",
+ "actions.selectionBackground": "#F6F0DE",
"background": "#F6F0DE",
- "selectionBackground": "#e8dcb6",
+ "selectionBackground": "#93a1a1",
"selectionInactiveBackground": "#F6F0DE"
}
},
diff --git a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/one_dark.theme.json b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/one_dark.theme.json
index 5e32a8e1..379efced 100644
--- a/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/one_dark.theme.json
+++ b/flatlaf-intellij-themes/src/main/resources/com/formdev/flatlaf/intellijthemes/themes/one_dark.theme.json
@@ -4,11 +4,13 @@
"author": "Mark Skelton",
"editorScheme": "/themes/one_dark.xml",
"colors": {
- "accentColor": "#568AF2"
+ "accentColor": "#568AF2",
+ "backgroundColor": "#21252b",
+ "borderColor": "#333841"
},
"ui": {
"*": {
- "background": "#21252b",
+ "background": "backgroundColor",
"foreground": "#abb2bf",
"infoForeground": "#5c6370",
@@ -18,8 +20,8 @@
"selectionBackgroundInactive": "#2c313a",
"selectionForeground": "#d7dae0",
- "disabledBackground": "#21252b",
- "inactiveBackground": "#21252b",
+ "disabledBackground": "backgroundColor",
+ "inactiveBackground": "backgroundColor",
"acceleratorForeground": "#E6E6E6",
"acceleratorSelectionForeground": "#E6E6E6",
@@ -28,7 +30,7 @@
"borderColor": "#333841",
"disabledBorderColor": "#2d3137",
- "focusColor": "#21252b",
+ "focusColor": "backgroundColor",
"focusedBorderColor": "accentColor",
"separatorColor": "#32363c"
@@ -47,7 +49,7 @@
"endBackground": "#3d424b",
"startBorderColor": "#464c55",
"endBorderColor": "#464c55",
- "shadowColor": "#21252b",
+ "shadowColor": "backgroundColor",
"focusedBorderColor": "#646a73",
"default": {
@@ -120,12 +122,12 @@
},
"FileColor": {
- "Yellow": "#563b2255",
- "Green": "#334e1f55",
- "Blue": "#28436d55",
- "Violet": "#37115655",
- "Orange": "#562b2255",
- "Rose": "#561a2b55"
+ "Yellow": "#3d3026",
+ "Green": "#293a24",
+ "Blue": "#24354f",
+ "Violet": "#2d1942",
+ "Orange": "#3d3026",
+ "Rose": "#3d1e2b"
},
"Label": {
@@ -167,6 +169,8 @@
}
},
+ "Panel.background": "backgroundColor",
+
"ParameterInfo": {
"background": "#3d424b",
"foreground": "#abb2bf",
@@ -176,6 +180,7 @@
"Plugins": {
"disabledForeground": "#5c6370",
+ "hoverBackground": "#323844",
"lightSelectionBackground": "#323844",
"tagBackground": "#414855",
"tagForeground": "#abb2bf",
@@ -228,7 +233,7 @@
"SearchEverywhere": {
"Advertiser.foreground": "#5c6370",
- "Header.background": "#21252b",
+ "Header.background": "backgroundColor",
"SearchField":{
"background": "#282c34",
@@ -335,7 +340,8 @@
"VersionControl": {
"Log.Commit": {
- "currentBranchBackground": "#21252b",
+ "currentBranchBackground": "#282c35",
+ "hoveredBackground": "#2c313c",
"unmatchedForeground": "#5c6370"
},
@@ -347,8 +353,13 @@
},
"WelcomeScreen": {
- "Projects.selectionInactiveBackground": "#2c313a",
- "separatorColor": "#2c313a"
+ "borderColor": "borderColor",
+ "Projects": {
+ "actions.background": "#323844",
+ "selectionInactiveBackground": "#2c313a"
+ },
+ "separatorColor": "#2c313a",
+ "SidePanel.background": "#282c34"
}
},
@@ -357,9 +368,9 @@
"Checkbox.Background.Default.Dark": "#282c34",
"Checkbox.Border.Default.Dark": "#414855",
"Checkbox.Foreground.Selected.Dark": "#abb2bf",
- "Checkbox.Focus.Wide.Dark": "accentColor",
- "Checkbox.Focus.Thin.Default.Dark": "accentColor",
- "Checkbox.Focus.Thin.Selected.Dark": "accentColor",
+ "Checkbox.Focus.Wide.Dark": "#568AF2",
+ "Checkbox.Focus.Thin.Default.Dark": "#568AF2",
+ "Checkbox.Focus.Thin.Selected.Dark": "#568AF2",
"Checkbox.Background.Disabled.Dark": "#21252b",
"Checkbox.Border.Disabled.Dark": "#2c313a",
"Checkbox.Foreground.Disabled.Dark": "#5c6370"
diff --git a/flatlaf-jide-oss/README.md b/flatlaf-jide-oss/README.md
index 2de13a14..d6235e47 100644
--- a/flatlaf-jide-oss/README.md
+++ b/flatlaf-jide-oss/README.md
@@ -6,8 +6,10 @@ This addon for FlatLaf adds support for **some**
Following JIDE Common Layer components are currently supported by this addon:
+- `JidePopupMenu`
- `JideTabbedPane`
- `RangeSlider`
+- `TristateCheckBox`
**Note**: We have currently no plans to support additional components. If you're
@@ -32,7 +34,3 @@ build script:
Otherwise download `flatlaf-jide-oss-.jar` here:
[](https://bintray.com/jformdesigner/flatlaf/flatlaf-jide-oss/_latestVersion)
-
-You also need `flatlaf-.jar`, which you can download here:
-
-[](https://bintray.com/jformdesigner/flatlaf/flatlaf/_latestVersion)
diff --git a/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/FlatJideOssDefaultsAddon.java b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/FlatJideOssDefaultsAddon.java
index 096a0ded..199d1a78 100644
--- a/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/FlatJideOssDefaultsAddon.java
+++ b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/FlatJideOssDefaultsAddon.java
@@ -19,6 +19,7 @@ package com.formdev.flatlaf.jideoss;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
+import javax.swing.LookAndFeel;
import javax.swing.UIDefaults;
import com.formdev.flatlaf.FlatDefaultsAddon;
import com.formdev.flatlaf.FlatLaf;
@@ -46,6 +47,14 @@ public class FlatJideOssDefaultsAddon
return super.getDefaults( lafClass );
}
+ @Override
+ public void afterDefaultsLoading( LookAndFeel laf, UIDefaults defaults ) {
+ // TristateCheckBox
+ defaults.put( "TristateCheckBox.icon", null );
+ defaults.put( "TristateCheckBox.setMixed.clientProperty", new Object[] { "JButton.selectedState", "indeterminate" } );
+ defaults.put( "TristateCheckBox.clearMixed.clientProperty", new Object[] { "JButton.selectedState", null } );
+ }
+
@Override
public int getPriority() {
return 11;
@@ -71,6 +80,7 @@ public class FlatJideOssDefaultsAddon
Object key = e.getKey();
if( key instanceof String &&
(((String)key).startsWith( "Jide" ) ||
+ ((String)key).startsWith( "TristateCheckBox." ) ||
key.equals( "RangeSliderUI" ) ||
key.equals( "Resizable.resizeBorder" )) )
{
@@ -85,6 +95,9 @@ public class FlatJideOssDefaultsAddon
defaults.putAll( jideDefaults );
jideDefaults = null;
}
+
+ // TristateCheckBox
+ defaults.put( "TristateCheckBox.icon", null );
}
}
}
diff --git a/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJidePopupMenuUI.java b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJidePopupMenuUI.java
new file mode 100644
index 00000000..d5ebd203
--- /dev/null
+++ b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJidePopupMenuUI.java
@@ -0,0 +1,39 @@
+/*
+ * 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.jideoss.ui;
+
+import javax.swing.*;
+import javax.swing.plaf.ComponentUI;
+import com.formdev.flatlaf.ui.FlatPopupMenuUI;
+import com.jidesoft.plaf.basic.BasicJidePopupMenuUI;
+
+/**
+ * Provides the Flat LaF UI delegate for {@link com.jidesoft.swing.JidePopupMenu}.
+ */
+public class FlatJidePopupMenuUI
+ extends FlatPopupMenuUI
+{
+ public static ComponentUI createUI( JComponent c ) {
+ return new FlatJidePopupMenuUI();
+ }
+
+ @Override
+ public Popup getPopup( JPopupMenu popupMenu, int x, int y ) {
+ Popup popup = BasicJidePopupMenuUI.addScrollPaneIfNecessary( popupMenu, x, y );
+ return popup == null ? super.getPopup( popupMenu, x, y ) : popup;
+ }
+}
diff --git a/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideTabbedPaneUI.java b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideTabbedPaneUI.java
index 7d1baea2..8ae713eb 100644
--- a/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideTabbedPaneUI.java
+++ b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideTabbedPaneUI.java
@@ -21,6 +21,7 @@ import static com.formdev.flatlaf.FlatClientProperties.clientPropertyBoolean;
import static com.formdev.flatlaf.util.UIScale.scale;
import java.awt.Color;
import java.awt.Dimension;
+import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
@@ -38,6 +39,7 @@ import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import com.formdev.flatlaf.FlatClientProperties;
import com.formdev.flatlaf.ui.FlatUIUtils;
+import com.jidesoft.plaf.LookAndFeelFactory;
import com.jidesoft.plaf.UIDefaultsLookup;
import com.jidesoft.plaf.basic.BasicJideTabbedPaneUI;
import com.jidesoft.swing.JideTabbedPane;
@@ -62,7 +64,10 @@ public class FlatJideTabbedPaneUI
protected boolean hasFullBorder;
protected boolean tabsOverlapBorder;
+ private Object[] oldRenderingHints;
+
public static ComponentUI createUI( JComponent c ) {
+ LookAndFeelFactory.installJideExtension();
return new FlatJideTabbedPaneUI();
}
@@ -193,9 +198,12 @@ public class FlatJideTabbedPaneUI
@Override
public void update( Graphics g, JComponent c ) {
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
+ oldRenderingHints = FlatUIUtils.setRenderingHints( g );
super.update( g, c );
+
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
+ oldRenderingHints = null;
}
@Override
@@ -222,6 +230,15 @@ public class FlatJideTabbedPaneUI
g.fillRect( x, y, w, h );
}
+ @Override
+ protected void paintText( Graphics g, int tabPlacement, Font font, FontMetrics metrics,
+ int tabIndex, String title, Rectangle textRect, boolean isSelected )
+ {
+ FlatUIUtils.runWithoutRenderingHints( g, oldRenderingHints, () -> {
+ super.paintText( g, tabPlacement, font, metrics, tabIndex, title, textRect, isSelected );
+ } );
+ }
+
@Override
protected void paintTabBorder( Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h,
boolean isSelected )
diff --git a/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatRangeSliderUI.java b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatRangeSliderUI.java
index 5e8ea9dc..fbd9f482 100644
--- a/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatRangeSliderUI.java
+++ b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatRangeSliderUI.java
@@ -18,21 +18,25 @@ package com.formdev.flatlaf.jideoss.ui;
import java.awt.Color;
import java.awt.Dimension;
+import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
-import java.awt.geom.Path2D;
+import java.awt.event.MouseEvent;
import java.awt.geom.RoundRectangle2D;
import java.util.Dictionary;
import java.util.Enumeration;
import javax.swing.JComponent;
import javax.swing.JSlider;
import javax.swing.LookAndFeel;
+import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
+import com.formdev.flatlaf.ui.FlatSliderUI;
import com.formdev.flatlaf.ui.FlatUIUtils;
import com.formdev.flatlaf.util.UIScale;
+import com.jidesoft.plaf.LookAndFeelFactory;
import com.jidesoft.plaf.basic.BasicRangeSliderUI;
/**
@@ -41,18 +45,32 @@ import com.jidesoft.plaf.basic.BasicRangeSliderUI;
public class FlatRangeSliderUI
extends BasicRangeSliderUI
{
- private int trackWidth;
- private int thumbWidth;
+ protected int trackWidth;
+ protected Dimension thumbSize;
+ protected int focusWidth;
- private Color trackColor;
- private Color thumbColor;
- private Color focusColor;
- private Color hoverColor;
- private Color disabledForeground;
+ protected Color trackValueColor;
+ protected Color trackColor;
+ protected Color thumbColor;
+ protected Color thumbBorderColor;
+ protected Color focusBaseColor;
+ protected Color focusedColor;
+ protected Color focusedThumbBorderColor;
+ protected Color hoverTrackColor;
+ protected Color hoverThumbColor;
+ protected Color pressedTrackColor;
+ protected Color pressedThumbColor;
+ protected Color disabledTrackColor;
+ protected Color disabledThumbColor;
+ protected Color disabledThumbBorderColor;
- private Rectangle firstThumbRect;
+ private Color defaultBackground;
+ private Color defaultForeground;
+
+ private Object[] oldRenderingHints;
public static ComponentUI createUI( JComponent c ) {
+ LookAndFeelFactory.installJideExtension();
return new FlatRangeSliderUI();
}
@@ -97,24 +115,70 @@ public class FlatRangeSliderUI
LookAndFeel.installProperty( slider, "opaque", false );
trackWidth = UIManager.getInt( "Slider.trackWidth" );
- thumbWidth = UIManager.getInt( "Slider.thumbWidth" );
+ thumbSize = UIManager.getDimension( "Slider.thumbSize" );
+ focusWidth = FlatUIUtils.getUIInt( "Slider.focusWidth", 4 );
+ trackValueColor = FlatUIUtils.getUIColor( "Slider.trackValueColor", "Slider.thumbColor" );
trackColor = UIManager.getColor( "Slider.trackColor" );
thumbColor = UIManager.getColor( "Slider.thumbColor" );
- focusColor = FlatUIUtils.getUIColor( "Slider.focusedColor", "Component.focusColor" );
- hoverColor = FlatUIUtils.getUIColor( "Slider.hoverColor", focusColor );
- disabledForeground = UIManager.getColor( "Slider.disabledForeground" );
+ thumbBorderColor = UIManager.getColor( "Slider.thumbBorderColor" );
+ focusBaseColor = UIManager.getColor( "Component.focusColor" );
+ focusedColor = FlatUIUtils.getUIColor( "Slider.focusedColor", focusBaseColor );
+ focusedThumbBorderColor = FlatUIUtils.getUIColor( "Slider.focusedThumbBorderColor", "Component.focusedBorderColor" );
+ hoverTrackColor = FlatUIUtils.getUIColor( "Slider.hoverTrackColor", "Slider.hoverThumbColor" );
+ hoverThumbColor = UIManager.getColor( "Slider.hoverThumbColor" );
+ pressedTrackColor = FlatUIUtils.getUIColor( "Slider.pressedTrackColor", "Slider.pressedThumbColor" );
+ pressedThumbColor = UIManager.getColor( "Slider.pressedThumbColor" );
+ disabledTrackColor = UIManager.getColor( "Slider.disabledTrackColor" );
+ disabledThumbColor = UIManager.getColor( "Slider.disabledThumbColor" );
+ disabledThumbBorderColor = FlatUIUtils.getUIColor( "Slider.disabledThumbBorderColor", "Component.disabledBorderColor" );
+
+ defaultBackground = UIManager.getColor( "Slider.background" );
+ defaultForeground = UIManager.getColor( "Slider.foreground" );
}
@Override
protected void uninstallDefaults( JSlider slider ) {
super.uninstallDefaults( slider );
+ trackValueColor = null;
trackColor = null;
thumbColor = null;
- focusColor = null;
- hoverColor = null;
- disabledForeground = null;
+ thumbBorderColor = null;
+ focusBaseColor = null;
+ focusedColor = null;
+ focusedThumbBorderColor = null;
+ hoverTrackColor = null;
+ hoverThumbColor = null;
+ pressedTrackColor = null;
+ pressedThumbColor = null;
+ disabledTrackColor = null;
+ disabledThumbColor = null;
+ disabledThumbBorderColor = null;
+
+ defaultBackground = null;
+ defaultForeground = null;
+ }
+
+ @Override
+ protected TrackListener createTrackListener( JSlider slider ) {
+ return new FlatRangeTrackListener( super.createTrackListener( slider ) );
+ }
+
+ @Override
+ public int getBaseline( JComponent c, int width, int height ) {
+ if( c == null )
+ throw new NullPointerException();
+ if( width < 0 || height < 0 )
+ throw new IllegalArgumentException();
+
+ // no baseline for vertical orientation
+ if( slider.getOrientation() == JSlider.VERTICAL )
+ return -1;
+
+ // compute a baseline so that the track is vertically centered
+ FontMetrics fm = slider.getFontMetrics( slider.getFont() );
+ return trackRect.y + Math.round( (trackRect.height - fm.getHeight()) / 2f ) + fm.getAscent() - 1;
}
@Override
@@ -144,30 +208,40 @@ public class FlatRangeSliderUI
@Override
protected Dimension getThumbSize() {
- return new Dimension( UIScale.scale( thumbWidth ), UIScale.scale( thumbWidth ) );
+ return FlatSliderUI.calcThumbSize( slider, thumbSize, focusWidth );
}
@Override
public void paint( Graphics g, JComponent c ) {
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
+ oldRenderingHints = FlatUIUtils.setRenderingHints( g );
+
+/*debug
+ g.setColor( Color.gray );
+ g.drawRect( 0, 0, c.getWidth() - 1, c.getHeight() - 1 );
+ g.setColor( Color.orange );
+ g.drawRect( focusRect.x, focusRect.y, focusRect.width - 1, focusRect.height - 1 );
+ g.setColor( Color.magenta );
+ g.drawRect( contentRect.x, contentRect.y, contentRect.width - 1, contentRect.height - 1 );
+ g.setColor( Color.blue );
+ g.drawRect( trackRect.x, trackRect.y, trackRect.width - 1, trackRect.height - 1 );
+ g.setColor( Color.red );
+ g.drawRect( thumbRect.x, thumbRect.y, thumbRect.width - 1, thumbRect.height - 1 );
+ Point p = adjustThumbForHighValue();
+ g.drawRect( thumbRect.x, thumbRect.y, thumbRect.width - 1, thumbRect.height - 1 );
+ restoreThumbForLowValue( p );
+debug*/
- second = false;
super.paint( g, c );
- Rectangle clip = g.getClipBounds();
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
+ oldRenderingHints = null;
+ }
- firstThumbRect = new Rectangle( thumbRect );
-
- second = true;
- Point p = adjustThumbForHighValue();
-
- if( clip.intersects( thumbRect ) ) {
- paintTrack( g );
- paintThumb( g );
- }
-
- restoreThumbForLowValue( p );
- second = false;
+ @Override
+ public void paintLabels( Graphics g ) {
+ FlatUIUtils.runWithoutRenderingHints( g, oldRenderingHints, () -> {
+ super.paintLabels( g );
+ } );
}
@Override
@@ -181,89 +255,151 @@ public class FlatRangeSliderUI
float tw = UIScale.scale( (float) trackWidth );
float arc = tw;
+ // get rectangle of second thumb
+ Point p = adjustThumbForHighValue();
+ Rectangle thumbRect2 = new Rectangle( thumbRect );
+ restoreThumbForLowValue( p );
+
RoundRectangle2D coloredTrack = null;
RoundRectangle2D track;
if( slider.getOrientation() == JSlider.HORIZONTAL ) {
float y = trackRect.y + (trackRect.height - tw) / 2f;
if( enabled ) {
- if( slider.getComponentOrientation().isLeftToRight() ) {
- int cw = thumbRect.x + (thumbRect.width / 2) - trackRect.x;
- if( second ) {
- track = new RoundRectangle2D.Float( trackRect.x + cw, y, trackRect.width - cw, tw, arc, arc );
- int firstCw = firstThumbRect.x + (firstThumbRect.width / 2) - trackRect.x;
- coloredTrack = new RoundRectangle2D.Float( trackRect.x + firstCw, y, cw - firstCw, tw, arc, arc );
- } else
- track = new RoundRectangle2D.Float( trackRect.x, y, cw, tw, arc, arc );
- } else {
- int cw = trackRect.x + trackRect.width - thumbRect.x - (thumbRect.width / 2);
- if( second ) {
- int firstCw = trackRect.x + trackRect.width - firstThumbRect.x - (firstThumbRect.width / 2);
- track = new RoundRectangle2D.Float( trackRect.x, y, trackRect.width - cw, tw, arc, arc );
- coloredTrack = new RoundRectangle2D.Float( trackRect.x + trackRect.width - cw, y, cw - firstCw, tw, arc, arc );
- } else
- track = new RoundRectangle2D.Float( trackRect.x + trackRect.width - cw, y, cw, tw, arc, arc );
+ Rectangle thumbRect1 = thumbRect;
+ if( !slider.getComponentOrientation().isLeftToRight() ) {
+ Rectangle temp = thumbRect1;
+ thumbRect1 = thumbRect2;
+ thumbRect2 = temp;
}
- } else
- track = new RoundRectangle2D.Float( trackRect.x, y, trackRect.width, tw, arc, arc );
+
+ int cx = thumbRect1.x + (thumbRect1.width / 2);
+ int cw = thumbRect2.x - thumbRect1.x;
+ coloredTrack = new RoundRectangle2D.Float( cx, y, cw, tw, arc, arc );
+ }
+ track = new RoundRectangle2D.Float( trackRect.x, y, trackRect.width, tw, arc, arc );
} else {
float x = trackRect.x + (trackRect.width - tw) / 2f;
if( enabled ) {
- int ch = thumbRect.y + (thumbRect.height / 2) - trackRect.y;
- if( second ) {
- int firstCh = firstThumbRect.y + (firstThumbRect.height / 2) - trackRect.y;
- track = new RoundRectangle2D.Float( x, trackRect.y, tw, ch, arc, arc );
- coloredTrack = new RoundRectangle2D.Float( x, trackRect.y + ch, tw, firstCh - ch, arc, arc );
- } else
- track = new RoundRectangle2D.Float( x, trackRect.y + ch, tw, trackRect.height - ch, arc, arc );
- } else
- track = new RoundRectangle2D.Float( x, trackRect.y, tw, trackRect.height, arc, arc );
+ int cy = thumbRect2.y + (thumbRect2.height / 2);
+ int ch = thumbRect.y - thumbRect2.y;
+ coloredTrack = new RoundRectangle2D.Float( x, cy, tw, ch, arc, arc );
+ }
+ track = new RoundRectangle2D.Float( x, trackRect.y, tw, trackRect.height, arc, arc );
}
+ g.setColor( enabled ? getTrackColor() : disabledTrackColor );
+ ((Graphics2D)g).fill( track );
+
if( coloredTrack != null ) {
- g.setColor( FlatUIUtils.deriveColor( FlatUIUtils.isPermanentFocusOwner( slider ) ? focusColor : (hover ? hoverColor : thumbColor), thumbColor ) );
+ boolean trackHover = hover && rollover1 && rollover2;
+ boolean trackPressed = pressed1 && pressed2;
+
+ Color trackValueColor = getTrackValueColor();
+ Color color = FlatSliderUI.stateColor( slider, trackHover, trackPressed,
+ trackValueColor, null, null, hoverTrackColor, pressedTrackColor );
+
+ g.setColor( FlatUIUtils.deriveColor( color, trackValueColor ) );
((Graphics2D)g).fill( coloredTrack );
}
-
- g.setColor( enabled ? trackColor : disabledForeground );
- ((Graphics2D)g).fill( track );
}
@Override
public void paintThumb( Graphics g ) {
- g.setColor( FlatUIUtils.deriveColor( slider.isEnabled()
- ? (FlatUIUtils.isPermanentFocusOwner( slider ) ? focusColor : (hover ? hoverColor : thumbColor))
- : disabledForeground,
- thumbColor ) );
+ boolean thumbHover = hover && ((!second && rollover1) || (second && rollover2));
+ boolean thumbPressed = (!second && pressed1) || (second && pressed2);
- if( isRoundThumb() )
- g.fillOval( thumbRect.x, thumbRect.y, thumbRect.width, thumbRect.height );
- else {
- double w = thumbRect.width;
- double h = thumbRect.height;
- double wh = w / 2;
+ Color thumbColor = getThumbColor();
+ Color color = FlatSliderUI.stateColor( slider, thumbHover, thumbPressed,
+ thumbColor, disabledThumbColor, null, hoverThumbColor, pressedThumbColor );
+ color = FlatUIUtils.deriveColor( color, thumbColor );
- Path2D thumb = FlatUIUtils.createPath( 0,0, w,0, w,(h - wh), wh,h, 0,(h - wh) );
+ Color foreground = slider.getForeground();
+ Color borderColor = (thumbBorderColor != null && foreground == defaultForeground)
+ ? FlatSliderUI.stateColor( slider, false, false, thumbBorderColor, disabledThumbBorderColor, focusedThumbBorderColor, null, null )
+ : null;
- Graphics2D g2 = (Graphics2D) g.create();
- try {
- g2.translate( thumbRect.x, thumbRect.y );
- if( slider.getOrientation() == JSlider.VERTICAL ) {
- if( slider.getComponentOrientation().isLeftToRight() ) {
- g2.translate( 0, thumbRect.height );
- g2.rotate( Math.toRadians( 270 ) );
- } else {
- g2.translate( thumbRect.width, 0 );
- g2.rotate( Math.toRadians( 90 ) );
- }
- }
- g2.fill( thumb );
- } finally {
- g2.dispose();
- }
- }
+ Color focusedColor = FlatUIUtils.deriveColor( this.focusedColor,
+ (foreground != defaultForeground) ? foreground : focusBaseColor );
+
+ FlatSliderUI.paintThumb( g, slider, thumbRect, isRoundThumb(), color, borderColor, focusedColor, focusWidth );
}
- private boolean isRoundThumb() {
+ protected Color getTrackValueColor() {
+ Color foreground = slider.getForeground();
+ return (foreground != defaultForeground) ? foreground : trackValueColor;
+ }
+
+ protected Color getTrackColor() {
+ Color backround = slider.getBackground();
+ return (backround != defaultBackground) ? backround : trackColor;
+ }
+
+ protected Color getThumbColor() {
+ Color foreground = slider.getForeground();
+ return (foreground != defaultForeground) ? foreground : thumbColor;
+ }
+
+ protected boolean isRoundThumb() {
return !slider.getPaintTicks() && !slider.getPaintLabels();
}
+
+ //---- class FlatRangeTrackListener ---------------------------------------
+
+ protected class FlatRangeTrackListener
+ extends RangeTrackListener
+ {
+ public FlatRangeTrackListener( TrackListener listener ) {
+ super( listener );
+ }
+
+ @Override
+ public void mousePressed( MouseEvent e ) {
+ if( !slider.isEnabled() )
+ return;
+
+ // use "old" behavior when clicking on track
+ if( UIManager.getBoolean( "Slider.scrollOnTrackClick" ) ) {
+ super.mousePressed( e );
+ return;
+ }
+
+ // "new" behavior set thumb to mouse location when clicking on track
+
+ int x = e.getX();
+ int y = e.getY();
+ int handle = getMouseHandle( x, y );
+
+ // clicked on thumb --> let super class do the work
+ if( handle != MOUSE_HANDLE_LOWER && handle != MOUSE_HANDLE_UPPER ) {
+ super.mousePressed( e );
+ return;
+ }
+
+ if( UIManager.getBoolean( "Slider.onlyLeftMouseButtonDrag" ) &&
+ !SwingUtilities.isLeftMouseButton( e ) )
+ return;
+
+ // get low or high thumb rectangle
+ Rectangle thumbRect = FlatRangeSliderUI.this.thumbRect;
+ if( handle == MOUSE_HANDLE_UPPER ) {
+ Point p = adjustThumbForHighValue();
+ thumbRect = new Rectangle( FlatRangeSliderUI.this.thumbRect );
+ restoreThumbForLowValue( p );
+ }
+
+ // move the mouse event coordinates to the center of the thumb
+ int tx = thumbRect.x + (thumbRect.width / 2) - x;
+ int ty = thumbRect.y + (thumbRect.height / 2) - y;
+ e.translatePoint( tx, ty );
+
+ // invoke super mousePressed() to start dragging thumb
+ super.mousePressed( e );
+
+ // move the mouse event coordinates back to current mouse location
+ e.translatePoint( -tx, -ty );
+
+ // invoke mouseDragged() to update thumb location
+ mouseDragged( e );
+ }
+ }
}
diff --git a/flatlaf-jide-oss/src/main/resources/com/formdev/flatlaf/jideoss/FlatLaf.properties b/flatlaf-jide-oss/src/main/resources/com/formdev/flatlaf/jideoss/FlatLaf.properties
index af28ab79..26a05cfa 100644
--- a/flatlaf-jide-oss/src/main/resources/com/formdev/flatlaf/jideoss/FlatLaf.properties
+++ b/flatlaf-jide-oss/src/main/resources/com/formdev/flatlaf/jideoss/FlatLaf.properties
@@ -16,23 +16,24 @@
#---- UI delegates ----
-JideTabbedPaneUI=com.formdev.flatlaf.jideoss.ui.FlatJideTabbedPaneUI
-RangeSliderUI=com.formdev.flatlaf.jideoss.ui.FlatRangeSliderUI
+JidePopupMenuUI = com.formdev.flatlaf.jideoss.ui.FlatJidePopupMenuUI
+JideTabbedPaneUI = com.formdev.flatlaf.jideoss.ui.FlatJideTabbedPaneUI
+RangeSliderUI = com.formdev.flatlaf.jideoss.ui.FlatRangeSliderUI
#---- JidePopup ----
-Resizable.resizeBorder=4,4,4,4,$PopupMenu.borderColor
+Resizable.resizeBorder = 4,4,4,4,$PopupMenu.borderColor
#---- JideTabbedPane ----
-JideTabbedPane.background=@background
-JideTabbedPane.foreground=@foreground
-JideTabbedPane.tabAreaBackground=@background
+JideTabbedPane.background = @background
+JideTabbedPane.foreground = @foreground
+JideTabbedPane.tabAreaBackground = @background
-JideTabbedPane.tabInsets=$TabbedPane.tabInsets
-JideTabbedPane.tabAreaInsets=$TabbedPane.tabAreaInsets
-JideTabbedPane.contentBorderInsets=0,0,0,0
-JideTabbedPane.tabRunOverlay=$TabbedPane.tabRunOverlay
-JideTabbedPane.shadow=$TabbedPane.shadow
+JideTabbedPane.tabInsets = $TabbedPane.tabInsets
+JideTabbedPane.tabAreaInsets = $TabbedPane.tabAreaInsets
+JideTabbedPane.contentBorderInsets = 0,0,0,0
+JideTabbedPane.tabRunOverlay = $TabbedPane.tabRunOverlay
+JideTabbedPane.shadow = $TabbedPane.shadow
diff --git a/flatlaf-swingx/README.md b/flatlaf-swingx/README.md
index 72d7fca4..0545cc62 100644
--- a/flatlaf-swingx/README.md
+++ b/flatlaf-swingx/README.md
@@ -38,7 +38,3 @@ build script:
Otherwise download `flatlaf-swingx-.jar` here:
[](https://bintray.com/jformdesigner/flatlaf/flatlaf-swingx/_latestVersion)
-
-You also need `flatlaf-.jar`, which you can download here:
-
-[](https://bintray.com/jformdesigner/flatlaf/flatlaf/_latestVersion)
diff --git a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatDatePickerUI.java b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatDatePickerUI.java
index 27ada24a..7c988d5b 100644
--- a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatDatePickerUI.java
+++ b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatDatePickerUI.java
@@ -70,6 +70,7 @@ public class FlatDatePickerUI
protected Color buttonArrowColor;
protected Color buttonDisabledArrowColor;
protected Color buttonHoverArrowColor;
+ protected Color buttonPressedArrowColor;
private JButton popupButton;
@@ -94,6 +95,7 @@ public class FlatDatePickerUI
buttonArrowColor = UIManager.getColor( "ComboBox.buttonArrowColor" );
buttonDisabledArrowColor = UIManager.getColor( "ComboBox.buttonDisabledArrowColor" );
buttonHoverArrowColor = UIManager.getColor( "ComboBox.buttonHoverArrowColor" );
+ buttonPressedArrowColor = UIManager.getColor( "ComboBox.buttonPressedArrowColor" );
super.installUI( c );
@@ -140,6 +142,7 @@ public class FlatDatePickerUI
buttonArrowColor = null;
buttonDisabledArrowColor = null;
buttonHoverArrowColor = null;
+ buttonPressedArrowColor = null;
if( datePicker.getBorder() instanceof UIResource )
datePicker.setBorder( null );
@@ -160,7 +163,7 @@ public class FlatDatePickerUI
@Override
protected JButton createPopupButton() {
popupButton = new FlatArrowButton( SwingConstants.SOUTH, arrowType, buttonArrowColor,
- buttonDisabledArrowColor, buttonHoverArrowColor, null );
+ buttonDisabledArrowColor, buttonHoverArrowColor, null, buttonPressedArrowColor, null );
popupButton.setName( "popupButton" );
return popupButton;
}
@@ -218,7 +221,7 @@ public class FlatDatePickerUI
FlatUIUtils.paintParentBackground( g, c );
Graphics2D g2 = (Graphics2D) g;
- FlatUIUtils.setRenderingHints( g2 );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g2 );
int width = c.getWidth();
int height = c.getHeight();
@@ -252,6 +255,8 @@ public class FlatDatePickerUI
g2.fill( new Rectangle2D.Float( lx, focusWidth, lw, height - 1 - (focusWidth * 2) ) );
paint( g, c );
+
+ FlatUIUtils.resetRenderingHints( g2, oldRenderingHints );
}
//---- class DefaultEditor ------------------------------------------------
diff --git a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatHyperlinkUI.java b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatHyperlinkUI.java
index ccd4557f..c80f2860 100644
--- a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatHyperlinkUI.java
+++ b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatHyperlinkUI.java
@@ -60,13 +60,6 @@ public class FlatHyperlinkUI
disabledText = null;
}
- @Override
- public void paint( Graphics g, JComponent c ) {
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
-
- super.paint( g, c );
- }
-
@Override
protected void paintText( Graphics g, AbstractButton b, Rectangle textRect, String text ) {
FlatButtonUI.paintText( g, b, textRect, text, b.isEnabled() ? b.getForeground() : disabledText );
@@ -78,8 +71,12 @@ public class FlatHyperlinkUI
private void paintUnderline( Graphics g, Rectangle rect ) {
int descent = g.getFontMetrics().getDescent();
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
+
((Graphics2D)g).fill( new Rectangle2D.Float(
rect.x, (rect.y + rect.height) - descent + UIScale.scale( 1f ),
rect.width, UIScale.scale( 1f ) ) );
+
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
}
diff --git a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatTaskPaneUI.java b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatTaskPaneUI.java
index 5897438e..e71ac7ca 100644
--- a/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatTaskPaneUI.java
+++ b/flatlaf-swingx/src/main/java/com/formdev/flatlaf/swingx/ui/FlatTaskPaneUI.java
@@ -146,7 +146,7 @@ public class FlatTaskPaneUI
if( color == null )
return;
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
g.setColor( color );
@@ -155,6 +155,8 @@ public class FlatTaskPaneUI
path.append( new Rectangle2D.Float( x, y, width, height ), false );
path.append( new Rectangle2D.Float( x + lineWidth, y, width - (lineWidth * 2), height - lineWidth ), false );
((Graphics2D)g).fill( path );
+
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
@Override
@@ -179,9 +181,11 @@ public class FlatTaskPaneUI
{
@Override
public void paintBorder( Component c, Graphics g, int x, int y, int width, int height ) {
- FlatUIUtils.setRenderingHints( (Graphics2D) g );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
super.paintBorder( c, g, x, y, width, height );
+
+ FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
@Override
diff --git a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatDarkLaf.properties b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatDarkLaf.properties
index 98e3238d..7ce6a467 100644
--- a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatDarkLaf.properties
+++ b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatDarkLaf.properties
@@ -16,54 +16,59 @@
#---- BusyLabel ----
-JXBusyLabel.baseColor=#777
-JXBusyLabel.highlightColor=#e0e0e0
+JXBusyLabel.baseColor = #777
+JXBusyLabel.highlightColor = #e0e0e0
#---- Header ----
-JXHeader.background=@background
-JXHeader.startBackground=#4c5052
+JXHeader.background = @background
+JXHeader.startBackground = #4c5052
+
+
+#---- HighlighterFactory ----
+
+UIColorHighlighter.stripingBackground = lighten(@textComponentBackground,5%)
#---- Hyperlink ----
-Hyperlink.linkColor=#589df6
-Hyperlink.visitedColor=$Hyperlink.linkColor
-Hyperlink.disabledText=@disabledText
+Hyperlink.linkColor = #589df6
+Hyperlink.visitedColor = $Hyperlink.linkColor
+Hyperlink.disabledText = @disabledText
#---- MonthView ----
-JXMonthView.background=@textComponentBackground
-JXMonthView.monthStringBackground=#4c5052
-JXMonthView.monthStringForeground=@foreground
-JXMonthView.daysOfTheWeekForeground=#aaa
-JXMonthView.weekOfTheYearForeground=#888
-JXMonthView.unselectableDayForeground=#E05555
-JXMonthView.selectedBackground=@selectionBackground
-JXMonthView.flaggedDayForeground=#E05555
-JXMonthView.leadingDayForeground=@disabledText
-JXMonthView.trailingDayForeground=@disabledText
-JXMonthView.arrowColor=@foreground
-JXMonthView.disabledArrowColor=@disabledText
+JXMonthView.background = @textComponentBackground
+JXMonthView.monthStringBackground = #4c5052
+JXMonthView.monthStringForeground = @foreground
+JXMonthView.daysOfTheWeekForeground = #aaa
+JXMonthView.weekOfTheYearForeground = #888
+JXMonthView.unselectableDayForeground = #E05555
+JXMonthView.selectedBackground = @selectionBackground
+JXMonthView.flaggedDayForeground = #E05555
+JXMonthView.leadingDayForeground = @disabledText
+JXMonthView.trailingDayForeground = @disabledText
+JXMonthView.arrowColor = @foreground
+JXMonthView.disabledArrowColor = @disabledText
#---- TaskPaneContainer ----
-TaskPaneContainer.background=#3E434C
-TaskPaneContainer.border=10,10,10,10
+TaskPaneContainer.background = #3E434C
+TaskPaneContainer.border = 10,10,10,10
#---- TaskPane ----
-TaskPane.background=@background
-TaskPane.borderColor=$Button.borderColor
-TaskPane.contentInsets=10,10,10,10
+TaskPane.background = @background
+TaskPane.borderColor = $Button.borderColor
+TaskPane.contentInsets = 10,10,10,10
-TaskPane.titleBackgroundGradientStart=#4c5052
-TaskPane.titleForeground=@foreground
-TaskPane.titleOver=#888
-TaskPane.specialTitleBackground=#afafaf
-TaskPane.specialTitleForeground=#222
-TaskPane.specialTitleOver=#666
+TaskPane.titleBackgroundGradientStart = #4c5052
+TaskPane.titleForeground = @foreground
+TaskPane.titleOver = #888
+TaskPane.specialTitleBackground = #afafaf
+TaskPane.specialTitleForeground = #222
+TaskPane.specialTitleOver = #666
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 3d0ca7b7..b15408db 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
@@ -16,29 +16,29 @@
#---- UI delegates ----
-BusyLabelUI=com.formdev.flatlaf.swingx.ui.FlatBusyLabelUI
-DatePickerUI=com.formdev.flatlaf.swingx.ui.FlatDatePickerUI
-HeaderUI=com.formdev.flatlaf.swingx.ui.FlatHeaderUI
-HyperlinkUI=com.formdev.flatlaf.swingx.ui.FlatHyperlinkUI
-MonthViewUI=com.formdev.flatlaf.swingx.ui.FlatMonthViewUI
-swingx/TaskPaneUI=com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI
-TitledPanelUI=com.formdev.flatlaf.swingx.ui.FlatTitledPanelUI
+BusyLabelUI = com.formdev.flatlaf.swingx.ui.FlatBusyLabelUI
+DatePickerUI = com.formdev.flatlaf.swingx.ui.FlatDatePickerUI
+HeaderUI = com.formdev.flatlaf.swingx.ui.FlatHeaderUI
+HyperlinkUI = com.formdev.flatlaf.swingx.ui.FlatHyperlinkUI
+MonthViewUI = com.formdev.flatlaf.swingx.ui.FlatMonthViewUI
+swingx/TaskPaneUI = com.formdev.flatlaf.swingx.ui.FlatTaskPaneUI
+TitledPanelUI = com.formdev.flatlaf.swingx.ui.FlatTitledPanelUI
#---- DatePicker ----
-JXDatePicker.border=com.formdev.flatlaf.swingx.ui.FlatDatePickerBorder
+JXDatePicker.border = com.formdev.flatlaf.swingx.ui.FlatDatePickerBorder
#---- MonthView ----
-JXMonthView.monthDownFileName={icon}com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon
-JXMonthView.monthUpFileName={icon}com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon
+JXMonthView.monthDownFileName = {icon}com.formdev.flatlaf.swingx.ui.FlatMonthDownIcon
+JXMonthView.monthUpFileName = {icon}com.formdev.flatlaf.swingx.ui.FlatMonthUpIcon
#---- TitledPanel ----
-JXTitledPanel.borderColor=$Button.borderColor
-JXTitledPanel.titleBackground=$TaskPane.titleBackgroundGradientStart
-JXTitledPanel.titleForeground=$TaskPane.titleForeground
-JXTitledPanel.captionInsets=4,10,4,10
+JXTitledPanel.borderColor = $Button.borderColor
+JXTitledPanel.titleBackground = $TaskPane.titleBackgroundGradientStart
+JXTitledPanel.titleForeground = $TaskPane.titleForeground
+JXTitledPanel.captionInsets = 4,10,4,10
diff --git a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLightLaf.properties b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLightLaf.properties
index 84e09193..fd81dfc8 100644
--- a/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLightLaf.properties
+++ b/flatlaf-swingx/src/main/resources/com/formdev/flatlaf/swingx/FlatLightLaf.properties
@@ -16,54 +16,59 @@
#---- BusyLabel ----
-JXBusyLabel.baseColor=#c4c4c4
-JXBusyLabel.highlightColor=#808080
+JXBusyLabel.baseColor = #c4c4c4
+JXBusyLabel.highlightColor = #808080
#---- Header ----
-JXHeader.background=@background
-JXHeader.startBackground=#fff
+JXHeader.background = @background
+JXHeader.startBackground = #fff
+
+
+#---- HighlighterFactory ----
+
+UIColorHighlighter.stripingBackground = darken(@textComponentBackground,5%)
#---- Hyperlink ----
-Hyperlink.linkColor=$Component.linkColor
-Hyperlink.visitedColor=$Hyperlink.linkColor
-Hyperlink.disabledText=@disabledText
+Hyperlink.linkColor = $Component.linkColor
+Hyperlink.visitedColor = $Hyperlink.linkColor
+Hyperlink.disabledText = @disabledText
#---- MonthView ----
-JXMonthView.background=@textComponentBackground
-JXMonthView.monthStringBackground=#dfdfdf
-JXMonthView.monthStringForeground=@foreground
-JXMonthView.daysOfTheWeekForeground=#444
-JXMonthView.weekOfTheYearForeground=#666
-JXMonthView.unselectableDayForeground=#E02222
-JXMonthView.selectedBackground=#B9CEF8
-JXMonthView.flaggedDayForeground=#E02222
-JXMonthView.leadingDayForeground=@disabledText
-JXMonthView.trailingDayForeground=@disabledText
-JXMonthView.arrowColor=@foreground
-JXMonthView.disabledArrowColor=@disabledText
+JXMonthView.background = @textComponentBackground
+JXMonthView.monthStringBackground = #dfdfdf
+JXMonthView.monthStringForeground = @foreground
+JXMonthView.daysOfTheWeekForeground = #444
+JXMonthView.weekOfTheYearForeground = #666
+JXMonthView.unselectableDayForeground = #E02222
+JXMonthView.selectedBackground = #B9CEF8
+JXMonthView.flaggedDayForeground = #E02222
+JXMonthView.leadingDayForeground = @disabledText
+JXMonthView.trailingDayForeground = @disabledText
+JXMonthView.arrowColor = @foreground
+JXMonthView.disabledArrowColor = @disabledText
#---- TaskPaneContainer ----
-TaskPaneContainer.background=#E6EBF0
-TaskPaneContainer.border=10,10,10,10
+TaskPaneContainer.background = #E6EBF0
+TaskPaneContainer.border = 10,10,10,10
#---- TaskPane ----
-TaskPane.background=@background
-TaskPane.borderColor=$Button.borderColor
-TaskPane.contentInsets=10,10,10,10
+TaskPane.background = @background
+TaskPane.borderColor = $Button.borderColor
+TaskPane.contentInsets = 10,10,10,10
-TaskPane.titleBackgroundGradientStart=#dfdfdf
-TaskPane.titleForeground=#222
-TaskPane.titleOver=#666
-TaskPane.specialTitleBackground=#afafaf
-TaskPane.specialTitleForeground=#222
-TaskPane.specialTitleOver=#666
+TaskPane.titleBackgroundGradientStart = #dfdfdf
+TaskPane.titleForeground = #222
+TaskPane.titleOver = #666
+TaskPane.specialTitleBackground = #afafaf
+TaskPane.specialTitleForeground = #222
+TaskPane.specialTitleOver = #666
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 d4e91e74..86389208 100644
--- a/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0_202.txt
+++ b/flatlaf-testing/dumps/uidefaults/FlatDarculaLaf_1.8.0_202.txt
@@ -10,6 +10,11 @@
- 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.innerFocusWidth 1
++ Button.innerFocusWidth 0
+
+- CheckBox.icon.focusedBackground #4d466d94 javax.swing.plaf.ColorUIResource [UI]
+
- ComboBox.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI]
+ ComboBox.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatRoundBorder [UI]
@@ -31,6 +36,9 @@
- HelpButton.icon [lazy] 22,22 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI]
+ HelpButton.icon [lazy] 26,26 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI]
+- HelpButton.innerFocusWidth 1
++ HelpButton.innerFocusWidth 0
+
- JXDatePicker.border [lazy] 1,1,1,1 false com.formdev.flatlaf.swingx.ui.FlatDatePickerBorder [UI]
+ JXDatePicker.border [lazy] 3,3,3,3 false com.formdev.flatlaf.swingx.ui.FlatDatePickerBorder [UI]
diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202-linux.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202-linux.txt
index 53feaf64..1b47b2a5 100644
--- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202-linux.txt
+++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202-linux.txt
@@ -1,9 +1,6 @@
- OS Windows 10
+ OS Linux
-- Button.defaultButtonFollowsFocus true
-+ Button.defaultButtonFollowsFocus false
-
- ProgressBar.font [active] Segoe UI plain 10 javax.swing.plaf.FontUIResource [UI]
+ ProgressBar.font [active] Cantarell plain 13 javax.swing.plaf.FontUIResource [UI]
diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202-mac.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202-mac.txt
index 7a4016df..ca6fa9ba 100644
--- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202-mac.txt
+++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202-mac.txt
@@ -1,9 +1,6 @@
- OS Windows 10
+ OS Mac OS X
-- Button.defaultButtonFollowsFocus true
-+ Button.defaultButtonFollowsFocus false
-
+ ComboBox.showPopupOnNavigation true
- Menu.shortcutKeys length=1 [I
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 d1e539e2..86797471 100644
--- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202.txt
+++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202.txt
@@ -77,7 +77,7 @@ 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.defaultButtonFollowsFocus true
+Button.defaultButtonFollowsFocus false
Button.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI]
Button.disabledBorderColor #5e6060 javax.swing.plaf.ColorUIResource [UI]
Button.disabledSelectedBackground #53585a com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse)
@@ -89,6 +89,7 @@ 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.iconTextGap 4
+Button.innerFocusWidth 1
Button.light #313131 javax.swing.plaf.ColorUIResource [UI]
Button.margin 2,14,2,14 javax.swing.plaf.InsetsUIResource [UI]
Button.minimumWidth 72
@@ -126,20 +127,20 @@ 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 #4d466d94 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.icon.selectedFocusedBorderColor #466d94 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 javax.swing.plaf.ColorUIResource [UI]
-CheckBox.icon[filled].selectedPressedBackground #989898 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.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI]
CheckBox.rollover true
CheckBox.textIconGap 4
@@ -189,10 +190,11 @@ ComboBox.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.F
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 #585858 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 #bbbbbb 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.buttonStyle auto
ComboBox.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI]
@@ -326,6 +328,7 @@ HeaderUI com.formdev.flatlaf.swingx.ui.FlatHeaderUI
HelpButton.background #43494a javax.swing.plaf.ColorUIResource [UI]
HelpButton.borderColor #6b6b6b 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]
@@ -333,6 +336,7 @@ 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.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]
@@ -437,6 +441,11 @@ JXTitledPanel.titleBackground #4c5052 javax.swing.plaf.ColorUIResource [UI]
JXTitledPanel.titleForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI]
+#---- JidePopupMenu ----
+
+JidePopupMenuUI com.formdev.flatlaf.jideoss.ui.FlatJidePopupMenuUI
+
+
#---- JideTabbedPane ----
JideTabbedPane.background #3c3f41 javax.swing.plaf.ColorUIResource [UI]
@@ -542,7 +551,7 @@ MenuItem.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenu
MenuItem.background #303234 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 javax.swing.plaf.ColorUIResource [UI]
+MenuItem.checkBackground #3c588b 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.font [active] $defaultFont [UI]
@@ -557,7 +566,7 @@ MenuItem.selectionForeground #bbbbbb 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 javax.swing.plaf.ColorUIResource [UI]
+MenuItem.underlineSelectionCheckBackground #3c588b com.formdev.flatlaf.util.DerivedColor [UI] darken(10%)
MenuItem.underlineSelectionColor #4a88c7 javax.swing.plaf.ColorUIResource [UI]
MenuItem.underlineSelectionHeight 3
@@ -752,6 +761,11 @@ RadioButtonMenuItemUI com.formdev.flatlaf.ui.FlatRadioButtonMenuItemUI
RadioButtonUI com.formdev.flatlaf.ui.FlatRadioButtonUI
+#---- RangeSlider ----
+
+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
@@ -759,7 +773,7 @@ Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.F
#---- RootPane ----
-RootPane.activeBorderColor #4d5154 com.formdev.flatlaf.util.DerivedColor [UI] darken(7% autoInverse)
+RootPane.activeBorderColor #4d5154 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
@@ -774,7 +788,7 @@ RootPane.defaultButtonWindowKeyBindings length=8 [Ljava.lang.Object;
[7] release
RootPane.honorDialogMinimumSizeOnResize true
RootPane.honorFrameMinimumSizeOnResize false
-RootPane.inactiveBorderColor #484c4e com.formdev.flatlaf.util.DerivedColor [UI] darken(5% autoInverse)
+RootPane.inactiveBorderColor #484c4e com.formdev.flatlaf.util.DerivedColor [UI] lighten(5% autoInverse)
RootPaneUI com.formdev.flatlaf.ui.FlatRootPaneUI
@@ -783,7 +797,7 @@ RootPaneUI com.formdev.flatlaf.ui.FlatRootPaneUI
ScrollBar.allowsAbsolutePositioning true
ScrollBar.background #3c3f41 javax.swing.plaf.ColorUIResource [UI]
ScrollBar.buttonArrowColor #9a9da1 javax.swing.plaf.ColorUIResource [UI]
-ScrollBar.buttonDisabledArrowColor #585858 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%)
@@ -836,23 +850,28 @@ SeparatorUI com.formdev.flatlaf.ui.FlatSeparatorUI
#---- Slider ----
Slider.background #3c3f41 javax.swing.plaf.ColorUIResource [UI]
-Slider.disabledForeground #4c5052 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.focusInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
+Slider.focusWidth 4
+Slider.focusedColor #b33d6185 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.horizontalSize 200,21 java.awt.Dimension
-Slider.hoverColor #808080 com.formdev.flatlaf.util.DerivedColor [UI] darken(15% autoInverse)
+Slider.hoverThumbColor #5d95cd 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 #a6a6a6 javax.swing.plaf.ColorUIResource [UI]
-Slider.thumbWidth 11
+Slider.thumbColor #4a88c7 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.trackWidth 3
+Slider.trackValueColor #4a88c7 javax.swing.plaf.ColorUIResource [UI]
+Slider.trackWidth 2
Slider.verticalSize 21,200 java.awt.Dimension
SliderUI com.formdev.flatlaf.ui.FlatSliderUI
@@ -864,8 +883,9 @@ Spinner.background #45494a 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 #585858 javax.swing.plaf.ColorUIResource [UI]
-Spinner.buttonHoverArrowColor #bbbbbb 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.buttonStyle button
Spinner.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI]
Spinner.disabledForeground #888888 javax.swing.plaf.ColorUIResource [UI]
@@ -898,7 +918,8 @@ SplitPaneDivider.gripDotCount 3
SplitPaneDivider.gripDotSize 3
SplitPaneDivider.gripGap 2
SplitPaneDivider.oneTouchArrowColor #9a9da1 javax.swing.plaf.ColorUIResource [UI]
-SplitPaneDivider.oneTouchHoverArrowColor #7a7d81 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.style grip
@@ -985,7 +1006,7 @@ Table.focusCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.F
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.font [active] $defaultFont [UI]
Table.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI]
-Table.gridColor #4c5152 javax.swing.plaf.ColorUIResource [UI]
+Table.gridColor #515657 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]
@@ -1233,7 +1254,7 @@ Tree.editorBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.F
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 #505355 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]
@@ -1263,6 +1284,21 @@ Tree.wideSelection true
TreeUI com.formdev.flatlaf.ui.FlatTreeUI
+#---- TristateCheckBox ----
+
+TristateCheckBox.clearMixed.clientProperty length=2 [Ljava.lang.Object;
+ [0] JButton.selectedState
+ [1] null
+TristateCheckBox.setMixed.clientProperty length=2 [Ljava.lang.Object;
+ [0] JButton.selectedState
+ [1] indeterminate
+
+
+#---- UIColorHighlighter ----
+
+UIColorHighlighter.stripingBackground #515657 javax.swing.plaf.ColorUIResource [UI]
+
+
#---- Viewport ----
Viewport.background #3c3f41 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 1943aed0..673508d6 100644
--- a/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0_202.txt
+++ b/flatlaf-testing/dumps/uidefaults/FlatIntelliJLaf_1.8.0_202.txt
@@ -29,9 +29,15 @@
- Button.default.foreground #000000 javax.swing.plaf.ColorUIResource [UI]
+ Button.default.foreground #ffffff 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.hoverBorderColor #87afda javax.swing.plaf.ColorUIResource [UI]
+ Button.default.hoverBorderColor #a9c9f5 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.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI]
- CheckBox.icon.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI]
diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202-linux.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202-linux.txt
index 53feaf64..1b47b2a5 100644
--- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202-linux.txt
+++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202-linux.txt
@@ -1,9 +1,6 @@
- OS Windows 10
+ OS Linux
-- Button.defaultButtonFollowsFocus true
-+ Button.defaultButtonFollowsFocus false
-
- ProgressBar.font [active] Segoe UI plain 10 javax.swing.plaf.FontUIResource [UI]
+ ProgressBar.font [active] Cantarell plain 13 javax.swing.plaf.FontUIResource [UI]
diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202-mac.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202-mac.txt
index 7a4016df..ca6fa9ba 100644
--- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202-mac.txt
+++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202-mac.txt
@@ -1,9 +1,6 @@
- OS Windows 10
+ OS Mac OS X
-- Button.defaultButtonFollowsFocus true
-+ Button.defaultButtonFollowsFocus false
-
+ ComboBox.showPopupOnNavigation true
- Menu.shortcutKeys length=1 [I
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 6da5e87e..97ad28a2 100644
--- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202.txt
+++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202.txt
@@ -77,7 +77,7 @@ 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.defaultButtonFollowsFocus true
+Button.defaultButtonFollowsFocus false
Button.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
Button.disabledBorderColor #cfcfcf javax.swing.plaf.ColorUIResource [UI]
Button.disabledSelectedBackground #dedede com.formdev.flatlaf.util.DerivedColor [UI] darken(13% autoInverse)
@@ -90,6 +90,7 @@ 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.iconTextGap 4
+Button.innerFocusWidth 0
Button.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI]
Button.margin 2,14,2,14 javax.swing.plaf.InsetsUIResource [UI]
Button.minimumWidth 72
@@ -142,8 +143,8 @@ CheckBox.icon[filled].selectedBorderColor #4b97d9 javax.swing.plaf.ColorUIRes
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 javax.swing.plaf.ColorUIResource [UI]
-CheckBox.icon[filled].selectedPressedBackground #2386dc 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.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI]
CheckBox.rollover true
CheckBox.textIconGap 4
@@ -193,10 +194,11 @@ ComboBox.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.F
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 #ababab 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 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.buttonStyle auto
ComboBox.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
@@ -330,6 +332,7 @@ HeaderUI com.formdev.flatlaf.swingx.ui.FlatHeaderUI
HelpButton.background #ffffff javax.swing.plaf.ColorUIResource [UI]
HelpButton.borderColor #b0b0b0 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]
@@ -338,6 +341,7 @@ 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.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]
@@ -442,6 +446,11 @@ JXTitledPanel.titleBackground #dfdfdf javax.swing.plaf.ColorUIResource [UI]
JXTitledPanel.titleForeground #222222 javax.swing.plaf.ColorUIResource [UI]
+#---- JidePopupMenu ----
+
+JidePopupMenuUI com.formdev.flatlaf.jideoss.ui.FlatJidePopupMenuUI
+
+
#---- JideTabbedPane ----
JideTabbedPane.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
@@ -547,7 +556,7 @@ MenuItem.arrowIcon [lazy] 6,10 com.formdev.flatlaf.icons.FlatMenu
MenuItem.background #ffffff 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 javax.swing.plaf.ColorUIResource [UI]
+MenuItem.checkBackground #bfd9f2 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.font [active] $defaultFont [UI]
@@ -562,7 +571,7 @@ MenuItem.selectionForeground #ffffff 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 javax.swing.plaf.ColorUIResource [UI]
+MenuItem.underlineSelectionCheckBackground #bfd9f2 com.formdev.flatlaf.util.DerivedColor [UI] lighten(40%)
MenuItem.underlineSelectionColor #4083c9 javax.swing.plaf.ColorUIResource [UI]
MenuItem.underlineSelectionHeight 3
@@ -757,6 +766,11 @@ RadioButtonMenuItemUI com.formdev.flatlaf.ui.FlatRadioButtonMenuItemUI
RadioButtonUI com.formdev.flatlaf.ui.FlatRadioButtonUI
+#---- RangeSlider ----
+
+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
@@ -764,7 +778,7 @@ Resizable.resizeBorder [lazy] 4,4,4,4 false com.formdev.flatlaf.ui.F
#---- RootPane ----
-RootPane.activeBorderColor #707070 javax.swing.plaf.ColorUIResource [UI]
+RootPane.activeBorderColor #737373 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
@@ -779,7 +793,7 @@ RootPane.defaultButtonWindowKeyBindings length=8 [Ljava.lang.Object;
[7] release
RootPane.honorDialogMinimumSizeOnResize true
RootPane.honorFrameMinimumSizeOnResize false
-RootPane.inactiveBorderColor #a3a3a3 com.formdev.flatlaf.util.DerivedColor [UI] lighten(20% autoInverse)
+RootPane.inactiveBorderColor #a6a6a6 com.formdev.flatlaf.util.DerivedColor [UI] darken(30% autoInverse)
RootPaneUI com.formdev.flatlaf.ui.FlatRootPaneUI
@@ -788,7 +802,7 @@ RootPaneUI com.formdev.flatlaf.ui.FlatRootPaneUI
ScrollBar.allowsAbsolutePositioning true
ScrollBar.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
ScrollBar.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI]
-ScrollBar.buttonDisabledArrowColor #ababab 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%)
@@ -841,23 +855,28 @@ SeparatorUI com.formdev.flatlaf.ui.FlatSeparatorUI
#---- Slider ----
Slider.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
-Slider.disabledForeground #c0c0c0 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.focusInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
+Slider.focusWidth 4
+Slider.focusedColor #8097c3f3 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.horizontalSize 200,21 java.awt.Dimension
-Slider.hoverColor #949494 com.formdev.flatlaf.util.DerivedColor [UI] lighten(15% autoInverse)
+Slider.hoverThumbColor #1775d3 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 #6e6e6e javax.swing.plaf.ColorUIResource [UI]
-Slider.thumbWidth 11
+Slider.thumbColor #1e82e6 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.trackWidth 3
+Slider.trackValueColor #1e82e6 javax.swing.plaf.ColorUIResource [UI]
+Slider.trackWidth 2
Slider.verticalSize 21,200 java.awt.Dimension
SliderUI com.formdev.flatlaf.ui.FlatSliderUI
@@ -869,8 +888,9 @@ Spinner.background #ffffff 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 #ababab javax.swing.plaf.ColorUIResource [UI]
-Spinner.buttonHoverArrowColor #999999 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.buttonStyle button
Spinner.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
Spinner.disabledForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI]
@@ -903,7 +923,8 @@ SplitPaneDivider.gripDotCount 3
SplitPaneDivider.gripDotSize 3
SplitPaneDivider.gripGap 2
SplitPaneDivider.oneTouchArrowColor #666666 javax.swing.plaf.ColorUIResource [UI]
-SplitPaneDivider.oneTouchHoverArrowColor #333333 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.style grip
@@ -990,7 +1011,7 @@ Table.focusCellHighlightBorder [lazy] 2,3,2,3 false com.formdev.flatlaf.ui.F
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.font [active] $defaultFont [UI]
Table.foreground #000000 javax.swing.plaf.ColorUIResource [UI]
-Table.gridColor #f7f7f7 javax.swing.plaf.ColorUIResource [UI]
+Table.gridColor #f2f2f2 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]
@@ -1268,6 +1289,21 @@ Tree.wideSelection true
TreeUI com.formdev.flatlaf.ui.FlatTreeUI
+#---- TristateCheckBox ----
+
+TristateCheckBox.clearMixed.clientProperty length=2 [Ljava.lang.Object;
+ [0] JButton.selectedState
+ [1] null
+TristateCheckBox.setMixed.clientProperty length=2 [Ljava.lang.Object;
+ [0] JButton.selectedState
+ [1] indeterminate
+
+
+#---- UIColorHighlighter ----
+
+UIColorHighlighter.stripingBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
+
+
#---- Viewport ----
Viewport.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0_202.txt
index 02d5e355..a34906f7 100644
--- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0_202.txt
+++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_InputMap_1.8.0_202.txt
@@ -7,8 +7,10 @@ OS Windows 10
#---- Button ----
-Button.focusInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [UI]
+Button.focusInputMap [lazy] 4 javax.swing.plaf.InputMapUIResource [UI]
+ ENTER pressed
SPACE pressed
+ released ENTER released
released SPACE released
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 b05ebcdb..cce64d58 100644
--- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0_202.txt
+++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0_202.txt
@@ -78,7 +78,7 @@ 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.defaultButtonFollowsFocus true
+Button.defaultButtonFollowsFocus false
Button.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI]
Button.disabledBorderColor #000088 javax.swing.plaf.ColorUIResource [UI]
Button.disabledText #000088 javax.swing.plaf.ColorUIResource [UI]
@@ -92,6 +92,7 @@ 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.iconTextGap 4
+Button.innerFocusWidth 1
Button.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI]
Button.margin 2,14,2,14 javax.swing.plaf.InsetsUIResource [UI]
Button.minimumWidth 72
@@ -191,6 +192,7 @@ ComboBox.buttonDisabledArrowColor #ababab javax.swing.plaf.ColorUIResource [U
ComboBox.buttonEditableBackground #cccccc 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.buttonStyle auto
ComboBox.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI]
@@ -318,6 +320,7 @@ HeaderUI com.formdev.flatlaf.swingx.ui.FlatHeaderUI
HelpButton.background #ffffff javax.swing.plaf.ColorUIResource [UI]
HelpButton.borderColor #878787 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]
@@ -326,6 +329,7 @@ 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.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]
@@ -430,6 +434,11 @@ JXTitledPanel.titleBackground #ffff00 javax.swing.plaf.ColorUIResource [UI]
JXTitledPanel.titleForeground #ff00ff javax.swing.plaf.ColorUIResource [UI]
+#---- JidePopupMenu ----
+
+JidePopupMenuUI com.formdev.flatlaf.jideoss.ui.FlatJidePopupMenuUI
+
+
#---- JideTabbedPane ----
JideTabbedPane.background #ccffcc javax.swing.plaf.ColorUIResource [UI]
@@ -518,6 +527,9 @@ MenuBar.highlight #ffffff javax.swing.plaf.ColorUIResource [UI]
MenuBar.hoverBackground #ffdddd 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.underlineSelectionHeight 5
MenuBar.windowBindings length=2 [Ljava.lang.Object;
[0] F10
[1] takeFocus
@@ -749,6 +761,11 @@ RadioButtonMenuItemUI com.formdev.flatlaf.ui.FlatRadioButtonMenuItemUI
RadioButtonUI com.formdev.flatlaf.ui.FlatRadioButtonUI
+#---- RangeSlider ----
+
+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
@@ -828,24 +845,30 @@ SeparatorUI com.formdev.flatlaf.ui.FlatSeparatorUI
#---- Slider ----
Slider.background #ccffcc javax.swing.plaf.ColorUIResource [UI]
-Slider.disabledForeground #000088 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.focusInsets 0,0,0,0 javax.swing.plaf.InsetsUIResource [UI]
+Slider.focusWidth 4
Slider.focusedColor #97c3f3 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.horizontalSize 200,21 java.awt.Dimension
-Slider.hoverColor #0000ff javax.swing.plaf.ColorUIResource [UI]
+Slider.hoverThumbColor #0000ff javax.swing.plaf.ColorUIResource [UI]
+Slider.hoverTrackColor #4444ff 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.thumbColor #880000 javax.swing.plaf.ColorUIResource [UI]
-Slider.thumbWidth 11
+Slider.thumbBorderColor #ff0000 javax.swing.plaf.ColorUIResource [UI]
+Slider.thumbColor #ffaaaa javax.swing.plaf.ColorUIResource [UI]
+Slider.thumbSize 12,12 javax.swing.plaf.DimensionUIResource [UI]
Slider.tickColor #ff0000 javax.swing.plaf.ColorUIResource [UI]
-Slider.trackColor #00bb00 javax.swing.plaf.ColorUIResource [UI]
-Slider.trackWidth 3
+Slider.trackColor #88ff88 javax.swing.plaf.ColorUIResource [UI]
+Slider.trackWidth 2
Slider.verticalSize 21,200 java.awt.Dimension
SliderUI com.formdev.flatlaf.ui.FlatSliderUI
@@ -859,6 +882,7 @@ 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.buttonStyle button
Spinner.disabledBackground #e0e0e0 javax.swing.plaf.ColorUIResource [UI]
Spinner.disabledForeground #000088 javax.swing.plaf.ColorUIResource [UI]
@@ -892,6 +916,7 @@ 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.style grip
@@ -1260,6 +1285,16 @@ Tree.wideSelection true
TreeUI com.formdev.flatlaf.ui.FlatTreeUI
+#---- TristateCheckBox ----
+
+TristateCheckBox.clearMixed.clientProperty length=2 [Ljava.lang.Object;
+ [0] JButton.selectedState
+ [1] null
+TristateCheckBox.setMixed.clientProperty length=2 [Ljava.lang.Object;
+ [0] JButton.selectedState
+ [1] indeterminate
+
+
#---- Viewport ----
Viewport.background #ccffcc javax.swing.plaf.ColorUIResource [UI]
diff --git a/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_InputMap_1.8.0_202-linux.txt b/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_InputMap_1.8.0_202-linux.txt
new file mode 100644
index 00000000..25577b30
--- /dev/null
+++ b/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_InputMap_1.8.0_202-linux.txt
@@ -0,0 +1,844 @@
+Class javax.swing.plaf.nimbus.NimbusLookAndFeel
+ID Nimbus
+Name Nimbus
+Java 1.8.0_202
+OS Linux
+
+
+#---- Button ----
+
+Button.focusInputMap [lazy] 4 javax.swing.plaf.InputMapUIResource [UI]
+ ENTER pressed
+ SPACE pressed
+ released ENTER released
+ released SPACE released
+
+
+#---- CheckBox ----
+
+CheckBox.focusInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [UI]
+ SPACE pressed
+ released SPACE released
+
+
+#---- ComboBox ----
+
+ComboBox.ancestorInputMap [lazy] 15 javax.swing.plaf.InputMapUIResource [UI]
+ alt DOWN togglePopup
+ alt KP_DOWN togglePopup
+ alt KP_UP togglePopup
+ alt UP togglePopup
+ DOWN selectNext
+ END endPassThrough
+ ENTER enterPressed
+ ESCAPE hidePopup
+ HOME homePassThrough
+ KP_DOWN selectNext
+ KP_UP selectPrevious
+ PAGE_DOWN pageDownPassThrough
+ PAGE_UP pageUpPassThrough
+ SPACE spacePopup
+ UP selectPrevious
+
+
+#---- EditorPane ----
+
+EditorPane.focusInputMap [lazy] 61 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl BACK_SPACE delete-previous-word
+ ctrl C copy-to-clipboard
+ ctrl DELETE delete-next-word
+ ctrl END caret-end
+ ctrl H delete-previous
+ ctrl HOME caret-begin
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-previous-word
+ ctrl KP_RIGHT caret-next-word
+ ctrl LEFT caret-previous-word
+ ctrl RIGHT caret-next-word
+ ctrl SPACE activate-link-action
+ ctrl T next-link-action
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ DOWN caret-down
+ END caret-end-line
+ ENTER insert-break
+ HOME caret-begin-line
+ KP_DOWN caret-down
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ KP_UP caret-up
+ LEFT caret-backward
+ PAGE_DOWN page-down
+ PAGE_UP page-up
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ TAB insert-tab
+ UP caret-up
+ shift ctrl END selection-end
+ shift ctrl HOME selection-begin
+ shift ctrl KP_LEFT selection-previous-word
+ shift ctrl KP_RIGHT selection-next-word
+ shift ctrl LEFT selection-previous-word
+ shift ctrl O toggle-componentOrientation
+ shift ctrl PAGE_DOWN selection-page-right
+ shift ctrl PAGE_UP selection-page-left
+ shift ctrl RIGHT selection-next-word
+ shift ctrl T previous-link-action
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift DOWN selection-down
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_DOWN selection-down
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift KP_UP selection-up
+ shift LEFT selection-backward
+ shift PAGE_DOWN selection-page-down
+ shift PAGE_UP selection-page-up
+ shift RIGHT selection-forward
+ shift UP selection-up
+
+
+#---- FileChooser ----
+
+FileChooser.ancestorInputMap [lazy] 6 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl ENTER approveSelection
+ BACK_SPACE Go Up
+ ENTER approveSelection
+ ESCAPE cancelSelection
+ F2 editFileName
+ F5 refresh
+
+
+#---- FormattedTextField ----
+
+FormattedTextField.focusInputMap [lazy] 44 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl BACK_SPACE delete-previous-word
+ ctrl C copy-to-clipboard
+ ctrl DELETE delete-next-word
+ ctrl H delete-previous
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-previous-word
+ ctrl KP_RIGHT caret-next-word
+ ctrl LEFT caret-previous-word
+ ctrl RIGHT caret-next-word
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ DOWN decrement
+ END caret-end-line
+ ENTER notify-field-accept
+ ESCAPE reset-field-edit
+ HOME caret-begin-line
+ KP_DOWN decrement
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ KP_UP increment
+ LEFT caret-backward
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ UP increment
+ shift ctrl KP_LEFT selection-previous-word
+ shift ctrl KP_RIGHT selection-next-word
+ shift ctrl LEFT selection-previous-word
+ shift ctrl O toggle-componentOrientation
+ shift ctrl RIGHT selection-next-word
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift LEFT selection-backward
+ shift RIGHT selection-forward
+
+
+#---- List ----
+
+List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl KP_LEFT selectNextColumnChangeLead
+ ctrl KP_RIGHT selectPreviousColumnChangeLead
+ ctrl LEFT selectNextColumnChangeLead
+ ctrl RIGHT selectPreviousColumnChangeLead
+ KP_LEFT selectNextColumn
+ KP_RIGHT selectPreviousColumn
+ LEFT selectNextColumn
+ RIGHT selectPreviousColumn
+ shift ctrl KP_LEFT selectNextColumnExtendSelection
+ shift ctrl KP_RIGHT selectPreviousColumnExtendSelection
+ shift ctrl LEFT selectNextColumnExtendSelection
+ shift ctrl RIGHT selectPreviousColumnExtendSelection
+ shift KP_LEFT selectNextColumnExtendSelection
+ shift KP_RIGHT selectPreviousColumnExtendSelection
+ shift LEFT selectNextColumnExtendSelection
+ shift RIGHT selectPreviousColumnExtendSelection
+List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A selectAll
+ ctrl BACK_SLASH clearSelection
+ ctrl C copy
+ ctrl DOWN selectNextRowChangeLead
+ ctrl END selectLastRowChangeLead
+ ctrl HOME selectFirstRowChangeLead
+ ctrl INSERT copy
+ ctrl KP_DOWN selectNextRowChangeLead
+ ctrl KP_LEFT selectPreviousColumnChangeLead
+ ctrl KP_RIGHT selectNextColumnChangeLead
+ ctrl KP_UP selectPreviousRowChangeLead
+ ctrl LEFT selectPreviousColumnChangeLead
+ ctrl PAGE_DOWN scrollDownChangeLead
+ ctrl PAGE_UP scrollUpChangeLead
+ ctrl RIGHT selectNextColumnChangeLead
+ ctrl SLASH selectAll
+ ctrl SPACE toggleAndAnchor
+ ctrl UP selectPreviousRowChangeLead
+ ctrl V paste
+ ctrl X cut
+ COPY copy
+ CUT cut
+ DOWN selectNextRow
+ END selectLastRow
+ HOME selectFirstRow
+ KP_DOWN selectNextRow
+ KP_LEFT selectPreviousColumn
+ KP_RIGHT selectNextColumn
+ KP_UP selectPreviousRow
+ LEFT selectPreviousColumn
+ PAGE_DOWN scrollDown
+ PAGE_UP scrollUp
+ PASTE paste
+ RIGHT selectNextColumn
+ SPACE addToSelection
+ UP selectPreviousRow
+ shift ctrl DOWN selectNextRowExtendSelection
+ shift ctrl END selectLastRowExtendSelection
+ shift ctrl HOME selectFirstRowExtendSelection
+ shift ctrl KP_DOWN selectNextRowExtendSelection
+ shift ctrl KP_LEFT selectPreviousColumnExtendSelection
+ shift ctrl KP_RIGHT selectNextColumnExtendSelection
+ shift ctrl KP_UP selectPreviousRowExtendSelection
+ shift ctrl LEFT selectPreviousColumnExtendSelection
+ shift ctrl PAGE_DOWN scrollDownExtendSelection
+ shift ctrl PAGE_UP scrollUpExtendSelection
+ shift ctrl RIGHT selectNextColumnExtendSelection
+ shift ctrl SPACE moveSelectionTo
+ shift ctrl UP selectPreviousRowExtendSelection
+ shift DELETE cut
+ shift DOWN selectNextRowExtendSelection
+ shift END selectLastRowExtendSelection
+ shift HOME selectFirstRowExtendSelection
+ shift INSERT paste
+ shift KP_DOWN selectNextRowExtendSelection
+ shift KP_LEFT selectPreviousColumnExtendSelection
+ shift KP_RIGHT selectNextColumnExtendSelection
+ shift KP_UP selectPreviousRowExtendSelection
+ shift LEFT selectPreviousColumnExtendSelection
+ shift PAGE_DOWN scrollDownExtendSelection
+ shift PAGE_UP scrollUpExtendSelection
+ shift RIGHT selectNextColumnExtendSelection
+ shift SPACE extendTo
+ shift UP selectPreviousRowExtendSelection
+
+
+#---- PasswordField ----
+
+PasswordField.focusInputMap [lazy] 37 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl C copy-to-clipboard
+ ctrl H delete-previous
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-begin-line
+ ctrl KP_RIGHT caret-end-line
+ ctrl LEFT caret-begin-line
+ ctrl RIGHT caret-end-line
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ END caret-end-line
+ ENTER notify-field-accept
+ HOME caret-begin-line
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ LEFT caret-backward
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ shift ctrl KP_LEFT selection-begin-line
+ shift ctrl KP_RIGHT selection-end-line
+ shift ctrl LEFT selection-begin-line
+ shift ctrl O toggle-componentOrientation
+ shift ctrl RIGHT selection-end-line
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift LEFT selection-backward
+ shift RIGHT selection-forward
+
+
+#---- PopupMenu ----
+
+PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object;
+ [0] LEFT
+ [1] selectChild
+ [2] KP_LEFT
+ [3] selectChild
+ [4] RIGHT
+ [5] selectParent
+ [6] KP_RIGHT
+ [7] selectParent
+PopupMenu.selectedWindowInputMapBindings length=22 [Ljava.lang.Object;
+ [0] ESCAPE
+ [1] cancel
+ [2] DOWN
+ [3] selectNext
+ [4] KP_DOWN
+ [5] selectNext
+ [6] UP
+ [7] selectPrevious
+ [8] KP_UP
+ [9] selectPrevious
+ [10] LEFT
+ [11] selectParent
+ [12] KP_LEFT
+ [13] selectParent
+ [14] RIGHT
+ [15] selectChild
+ [16] KP_RIGHT
+ [17] selectChild
+ [18] ENTER
+ [19] return
+ [20] SPACE
+ [21] return
+
+
+#---- RadioButton ----
+
+RadioButton.focusInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [UI]
+ SPACE pressed
+ released SPACE released
+
+
+#---- RootPane ----
+
+RootPane.ancestorInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [UI]
+ CONTEXT_MENU postPopup
+ shift F10 postPopup
+
+
+#---- ScrollBar ----
+
+ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI]
+ KP_LEFT positiveUnitIncrement
+ KP_RIGHT negativeUnitIncrement
+ LEFT positiveUnitIncrement
+ RIGHT negativeUnitIncrement
+ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI]
+ DOWN positiveUnitIncrement
+ END maxScroll
+ HOME minScroll
+ KP_DOWN positiveUnitIncrement
+ KP_LEFT negativeUnitIncrement
+ KP_RIGHT positiveUnitIncrement
+ KP_UP negativeUnitIncrement
+ LEFT negativeUnitIncrement
+ PAGE_DOWN positiveBlockIncrement
+ PAGE_UP negativeBlockIncrement
+ RIGHT positiveUnitIncrement
+ UP negativeUnitIncrement
+
+
+#---- ScrollPane ----
+
+ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl PAGE_DOWN scrollLeft
+ ctrl PAGE_UP scrollRight
+ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl END scrollEnd
+ ctrl HOME scrollHome
+ ctrl PAGE_DOWN scrollRight
+ ctrl PAGE_UP scrollLeft
+ DOWN unitScrollDown
+ KP_DOWN unitScrollDown
+ KP_LEFT unitScrollLeft
+ KP_RIGHT unitScrollRight
+ KP_UP unitScrollUp
+ LEFT unitScrollLeft
+ PAGE_DOWN scrollDown
+ PAGE_UP scrollUp
+ RIGHT unitScrollRight
+ UP unitScrollUp
+
+
+#---- Slider ----
+
+Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI]
+ KP_LEFT positiveUnitIncrement
+ KP_RIGHT negativeUnitIncrement
+ LEFT positiveUnitIncrement
+ RIGHT negativeUnitIncrement
+Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI]
+ DOWN negativeUnitIncrement
+ END maxScroll
+ HOME minScroll
+ KP_DOWN negativeUnitIncrement
+ KP_LEFT negativeUnitIncrement
+ KP_RIGHT positiveUnitIncrement
+ KP_UP positiveUnitIncrement
+ LEFT negativeUnitIncrement
+ PAGE_DOWN negativeBlockIncrement
+ PAGE_UP positiveBlockIncrement
+ RIGHT positiveUnitIncrement
+ UP positiveUnitIncrement
+
+
+#---- Spinner ----
+
+Spinner.ancestorInputMap [lazy] 4 javax.swing.plaf.InputMapUIResource [UI]
+ DOWN decrement
+ KP_DOWN decrement
+ KP_UP increment
+ UP increment
+
+
+#---- SplitPane ----
+
+SplitPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl TAB focusOutForward
+ DOWN positiveIncrement
+ END selectMax
+ F6 toggleFocus
+ F8 startResize
+ HOME selectMin
+ KP_DOWN positiveIncrement
+ KP_LEFT negativeIncrement
+ KP_RIGHT positiveIncrement
+ KP_UP negativeIncrement
+ LEFT negativeIncrement
+ RIGHT positiveIncrement
+ UP negativeIncrement
+ shift ctrl TAB focusOutBackward
+
+
+#---- TabbedPane ----
+
+TabbedPane.ancestorInputMap [lazy] 6 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl KP_UP requestFocus
+ ctrl PAGE_DOWN navigatePageDown
+ ctrl PAGE_UP navigatePageUp
+ ctrl TAB navigateNext
+ ctrl UP requestFocus
+ shift ctrl TAB navigatePrevious
+TabbedPane.focusInputMap [lazy] 11 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl DOWN requestFocusForVisibleComponent
+ ctrl KP_DOWN requestFocusForVisibleComponent
+ DOWN navigateDown
+ KP_DOWN navigateDown
+ KP_LEFT navigateLeft
+ KP_RIGHT navigateRight
+ KP_UP navigateUp
+ LEFT navigateLeft
+ RIGHT navigateRight
+ SPACE selectTabWithFocus
+ UP navigateUp
+
+
+#---- Table ----
+
+Table.ancestorInputMap.RightToLeft [lazy] 18 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl KP_LEFT selectNextColumnChangeLead
+ ctrl LEFT selectNextColumnChangeLead
+ ctrl PAGE_DOWN scrollLeftChangeSelection
+ ctrl PAGE_UP scrollRightChangeSelection
+ KP_LEFT selectNextColumn
+ KP_RIGHT selectPreviousColumn
+ LEFT selectNextColumn
+ RIGHT selectPreviousColumn
+ shift ctrl KP_LEFT selectNextColumnExtendSelection
+ shift ctrl KP_RIGHT selectPreviousColumnExtendSelection
+ shift ctrl LEFT selectNextColumnExtendSelection
+ shift ctrl PAGE_DOWN scrollLeftExtendSelection
+ shift ctrl PAGE_UP scrollRightExtendSelection
+ shift ctrl RIGHT selectPreviousColumnExtendSelection
+ shift KP_LEFT selectNextColumnExtendSelection
+ shift KP_RIGHT selectPreviousColumnChangeLead
+ shift LEFT selectNextColumnExtendSelection
+ shift RIGHT selectPreviousColumnChangeLead
+Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A selectAll
+ ctrl BACK_SLASH clearSelection
+ ctrl C copy
+ ctrl DOWN selectNextRowChangeLead
+ ctrl END selectLastRow
+ ctrl HOME selectFirstRow
+ ctrl INSERT copy
+ ctrl KP_DOWN selectNextRowChangeLead
+ ctrl KP_LEFT selectPreviousColumnChangeLead
+ ctrl KP_RIGHT selectNextColumnChangeLead
+ ctrl KP_UP selectPreviousRowChangeLead
+ ctrl LEFT selectPreviousColumnChangeLead
+ ctrl PAGE_DOWN scrollRightChangeSelection
+ ctrl PAGE_UP scrollLeftChangeSelection
+ ctrl RIGHT selectNextColumnChangeLead
+ ctrl SLASH selectAll
+ ctrl SPACE toggleAndAnchor
+ ctrl UP selectPreviousRowChangeLead
+ ctrl V paste
+ ctrl X cut
+ COPY copy
+ CUT cut
+ DOWN selectNextRow
+ END selectLastColumn
+ ENTER selectNextRowCell
+ ESCAPE cancel
+ F2 startEditing
+ F8 focusHeader
+ HOME selectFirstColumn
+ KP_DOWN selectNextRow
+ KP_LEFT selectPreviousColumn
+ KP_RIGHT selectNextColumn
+ KP_UP selectPreviousRow
+ LEFT selectPreviousColumn
+ PAGE_DOWN scrollDownChangeSelection
+ PAGE_UP scrollUpChangeSelection
+ PASTE paste
+ RIGHT selectNextColumn
+ SPACE addToSelection
+ TAB selectNextColumnCell
+ UP selectPreviousRow
+ shift ctrl DOWN selectNextRowExtendSelection
+ shift ctrl END selectLastRowExtendSelection
+ shift ctrl HOME selectFirstRowExtendSelection
+ shift ctrl KP_DOWN selectNextRowExtendSelection
+ shift ctrl KP_LEFT selectPreviousColumnExtendSelection
+ shift ctrl KP_RIGHT selectNextColumnExtendSelection
+ shift ctrl KP_UP selectPreviousRowExtendSelection
+ shift ctrl LEFT selectPreviousColumnExtendSelection
+ shift ctrl PAGE_DOWN scrollRightExtendSelection
+ shift ctrl PAGE_UP scrollLeftExtendSelection
+ shift ctrl RIGHT selectNextColumnExtendSelection
+ shift ctrl SPACE moveSelectionTo
+ shift ctrl UP selectPreviousRowExtendSelection
+ shift DELETE cut
+ shift DOWN selectNextRowExtendSelection
+ shift END selectLastColumnExtendSelection
+ shift ENTER selectPreviousRowCell
+ shift HOME selectFirstColumnExtendSelection
+ shift INSERT paste
+ shift KP_DOWN selectNextRowExtendSelection
+ shift KP_LEFT selectPreviousColumnExtendSelection
+ shift KP_RIGHT selectNextColumnExtendSelection
+ shift KP_UP selectPreviousRowExtendSelection
+ shift LEFT selectPreviousColumnExtendSelection
+ shift PAGE_DOWN scrollDownExtendSelection
+ shift PAGE_UP scrollUpExtendSelection
+ shift RIGHT selectNextColumnExtendSelection
+ shift SPACE extendTo
+ shift TAB selectPreviousColumnCell
+ shift UP selectPreviousRowExtendSelection
+
+
+#---- TableHeader ----
+
+TableHeader.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI]
+ alt KP_LEFT moveColumnLeft
+ alt KP_RIGHT moveColumnRight
+ alt LEFT moveColumnLeft
+ alt RIGHT moveColumnRight
+ ESCAPE focusTable
+ KP_LEFT selectColumnToLeft
+ KP_RIGHT selectColumnToRight
+ LEFT selectColumnToLeft
+ RIGHT selectColumnToRight
+ SPACE toggleSortOrder
+ shift alt KP_LEFT resizeLeft
+ shift alt KP_RIGHT resizeRight
+ shift alt LEFT resizeLeft
+ shift alt RIGHT resizeRight
+
+
+#---- TextArea ----
+
+TextArea.focusInputMap [lazy] 61 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl BACK_SPACE delete-previous-word
+ ctrl C copy-to-clipboard
+ ctrl DELETE delete-next-word
+ ctrl END caret-end
+ ctrl H delete-previous
+ ctrl HOME caret-begin
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-previous-word
+ ctrl KP_RIGHT caret-next-word
+ ctrl LEFT caret-previous-word
+ ctrl RIGHT caret-next-word
+ ctrl SPACE activate-link-action
+ ctrl T next-link-action
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ DOWN caret-down
+ END caret-end-line
+ ENTER insert-break
+ HOME caret-begin-line
+ KP_DOWN caret-down
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ KP_UP caret-up
+ LEFT caret-backward
+ PAGE_DOWN page-down
+ PAGE_UP page-up
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ TAB insert-tab
+ UP caret-up
+ shift ctrl END selection-end
+ shift ctrl HOME selection-begin
+ shift ctrl KP_LEFT selection-previous-word
+ shift ctrl KP_RIGHT selection-next-word
+ shift ctrl LEFT selection-previous-word
+ shift ctrl O toggle-componentOrientation
+ shift ctrl PAGE_DOWN selection-page-right
+ shift ctrl PAGE_UP selection-page-left
+ shift ctrl RIGHT selection-next-word
+ shift ctrl T previous-link-action
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift DOWN selection-down
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_DOWN selection-down
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift KP_UP selection-up
+ shift LEFT selection-backward
+ shift PAGE_DOWN selection-page-down
+ shift PAGE_UP selection-page-up
+ shift RIGHT selection-forward
+ shift UP selection-up
+
+
+#---- TextField ----
+
+TextField.focusInputMap [lazy] 39 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl BACK_SPACE delete-previous-word
+ ctrl C copy-to-clipboard
+ ctrl DELETE delete-next-word
+ ctrl H delete-previous
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-previous-word
+ ctrl KP_RIGHT caret-next-word
+ ctrl LEFT caret-previous-word
+ ctrl RIGHT caret-next-word
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ END caret-end-line
+ ENTER notify-field-accept
+ HOME caret-begin-line
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ LEFT caret-backward
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ shift ctrl KP_LEFT selection-previous-word
+ shift ctrl KP_RIGHT selection-next-word
+ shift ctrl LEFT selection-previous-word
+ shift ctrl O toggle-componentOrientation
+ shift ctrl RIGHT selection-next-word
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift LEFT selection-backward
+ shift RIGHT selection-forward
+
+
+#---- TextPane ----
+
+TextPane.focusInputMap [lazy] 61 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl BACK_SPACE delete-previous-word
+ ctrl C copy-to-clipboard
+ ctrl DELETE delete-next-word
+ ctrl END caret-end
+ ctrl H delete-previous
+ ctrl HOME caret-begin
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-previous-word
+ ctrl KP_RIGHT caret-next-word
+ ctrl LEFT caret-previous-word
+ ctrl RIGHT caret-next-word
+ ctrl SPACE activate-link-action
+ ctrl T next-link-action
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ DOWN caret-down
+ END caret-end-line
+ ENTER insert-break
+ HOME caret-begin-line
+ KP_DOWN caret-down
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ KP_UP caret-up
+ LEFT caret-backward
+ PAGE_DOWN page-down
+ PAGE_UP page-up
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ TAB insert-tab
+ UP caret-up
+ shift ctrl END selection-end
+ shift ctrl HOME selection-begin
+ shift ctrl KP_LEFT selection-previous-word
+ shift ctrl KP_RIGHT selection-next-word
+ shift ctrl LEFT selection-previous-word
+ shift ctrl O toggle-componentOrientation
+ shift ctrl PAGE_DOWN selection-page-right
+ shift ctrl PAGE_UP selection-page-left
+ shift ctrl RIGHT selection-next-word
+ shift ctrl T previous-link-action
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift DOWN selection-down
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_DOWN selection-down
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift KP_UP selection-up
+ shift LEFT selection-backward
+ shift PAGE_DOWN selection-page-down
+ shift PAGE_UP selection-page-up
+ shift RIGHT selection-forward
+ shift UP selection-up
+
+
+#---- ToggleButton ----
+
+ToggleButton.focusInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [UI]
+ SPACE pressed
+ released SPACE released
+
+
+#---- ToolBar ----
+
+ToolBar.ancestorInputMap [lazy] 8 javax.swing.plaf.InputMapUIResource [UI]
+ DOWN navigateDown
+ KP_DOWN navigateDown
+ KP_LEFT navigateLeft
+ KP_RIGHT navigateRight
+ KP_UP navigateUp
+ LEFT navigateLeft
+ RIGHT navigateRight
+ UP navigateUp
+
+
+#---- Tree ----
+
+Tree.ancestorInputMap [lazy] 1 javax.swing.plaf.InputMapUIResource [UI]
+ ESCAPE cancel
+Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI]
+ KP_LEFT selectChild
+ KP_RIGHT selectParent
+ LEFT selectChild
+ RIGHT selectParent
+Tree.focusInputMap [lazy] 60 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A selectAll
+ ctrl BACK_SLASH clearSelection
+ ctrl C copy
+ ctrl DOWN selectNextChangeLead
+ ctrl END selectLastChangeLead
+ ctrl HOME selectFirstChangeLead
+ ctrl INSERT copy
+ ctrl KP_DOWN selectNextChangeLead
+ ctrl KP_LEFT scrollLeft
+ ctrl KP_RIGHT scrollRight
+ ctrl KP_UP selectPreviousChangeLead
+ ctrl LEFT scrollLeft
+ ctrl PAGE_DOWN scrollDownChangeLead
+ ctrl PAGE_UP scrollUpChangeLead
+ ctrl RIGHT scrollRight
+ ctrl SLASH selectAll
+ ctrl SPACE toggleAndAnchor
+ ctrl UP selectPreviousChangeLead
+ ctrl V paste
+ ctrl X cut
+ BACK_SPACE moveSelectionToParent
+ COPY copy
+ CUT cut
+ DOWN selectNext
+ END selectLast
+ F2 startEditing
+ HOME selectFirst
+ KP_DOWN selectNext
+ KP_LEFT selectParent
+ KP_RIGHT selectChild
+ KP_UP selectPrevious
+ LEFT selectParent
+ PAGE_DOWN scrollDownChangeSelection
+ PAGE_UP scrollUpChangeSelection
+ PASTE paste
+ RIGHT selectChild
+ SPACE addToSelection
+ UP selectPrevious
+ shift ctrl DOWN selectNextExtendSelection
+ shift ctrl END selectLastExtendSelection
+ shift ctrl HOME selectFirstExtendSelection
+ shift ctrl KP_DOWN selectNextExtendSelection
+ shift ctrl KP_UP selectPreviousExtendSelection
+ shift ctrl PAGE_DOWN scrollDownExtendSelection
+ shift ctrl PAGE_UP scrollUpExtendSelection
+ shift ctrl SPACE moveSelectionTo
+ shift ctrl UP selectPreviousExtendSelection
+ shift DELETE cut
+ shift DOWN selectNextExtendSelection
+ shift END selectLastExtendSelection
+ shift HOME selectFirstExtendSelection
+ shift INSERT paste
+ shift KP_DOWN selectNextExtendSelection
+ shift KP_UP selectPreviousExtendSelection
+ shift PAGE_DOWN scrollDownExtendSelection
+ shift PAGE_UP scrollUpExtendSelection
+ shift SPACE extendTo
+ shift UP selectPreviousExtendSelection
+ typed + expand
+ typed - collapse
diff --git a/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_InputMap_9.0.4-linux.txt b/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_InputMap_9.0.4-linux.txt
new file mode 100644
index 00000000..bdf700d4
--- /dev/null
+++ b/flatlaf-testing/dumps/uidefaults/NimbusLookAndFeel_InputMap_9.0.4-linux.txt
@@ -0,0 +1,878 @@
+Class javax.swing.plaf.nimbus.NimbusLookAndFeel
+ID Nimbus
+Name Nimbus
+Java 9.0.4
+OS Linux
+
+
+#---- Button ----
+
+Button.focusInputMap [lazy] 4 javax.swing.plaf.InputMapUIResource [UI]
+ ENTER pressed
+ SPACE pressed
+ released ENTER released
+ released SPACE released
+
+
+#---- CheckBox ----
+
+CheckBox.focusInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [UI]
+ SPACE pressed
+ released SPACE released
+
+
+#---- ComboBox ----
+
+ComboBox.ancestorInputMap [lazy] 15 javax.swing.plaf.InputMapUIResource [UI]
+ alt DOWN togglePopup
+ alt KP_DOWN togglePopup
+ alt KP_UP togglePopup
+ alt UP togglePopup
+ DOWN selectNext
+ END endPassThrough
+ ENTER enterPressed
+ ESCAPE hidePopup
+ HOME homePassThrough
+ KP_DOWN selectNext
+ KP_UP selectPrevious
+ PAGE_DOWN pageDownPassThrough
+ PAGE_UP pageUpPassThrough
+ SPACE spacePopup
+ UP selectPrevious
+
+
+#---- Desktop ----
+
+Desktop.ancestorInputMap [lazy] 29 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl alt F6 selectNextFrame
+ ctrl F10 maximize
+ ctrl F12 navigateNext
+ ctrl F4 close
+ ctrl F5 restore
+ ctrl F6 selectNextFrame
+ ctrl F7 move
+ ctrl F8 resize
+ ctrl F9 minimize
+ ctrl TAB selectNextFrame
+ DOWN down
+ ESCAPE escape
+ KP_DOWN down
+ KP_LEFT left
+ KP_RIGHT right
+ KP_UP up
+ LEFT left
+ RIGHT right
+ UP up
+ shift ctrl alt F6 selectPreviousFrame
+ shift ctrl F12 navigatePrevious
+ shift DOWN shrinkDown
+ shift KP_DOWN shrinkDown
+ shift KP_LEFT shrinkLeft
+ shift KP_RIGHT shrinkRight
+ shift KP_UP shrinkUp
+ shift LEFT shrinkLeft
+ shift RIGHT shrinkRight
+ shift UP shrinkUp
+
+
+#---- EditorPane ----
+
+EditorPane.focusInputMap [lazy] 61 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl BACK_SPACE delete-previous-word
+ ctrl C copy-to-clipboard
+ ctrl DELETE delete-next-word
+ ctrl END caret-end
+ ctrl H delete-previous
+ ctrl HOME caret-begin
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-previous-word
+ ctrl KP_RIGHT caret-next-word
+ ctrl LEFT caret-previous-word
+ ctrl RIGHT caret-next-word
+ ctrl SPACE activate-link-action
+ ctrl T next-link-action
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ DOWN caret-down
+ END caret-end-line
+ ENTER insert-break
+ HOME caret-begin-line
+ KP_DOWN caret-down
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ KP_UP caret-up
+ LEFT caret-backward
+ PAGE_DOWN page-down
+ PAGE_UP page-up
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ TAB insert-tab
+ UP caret-up
+ shift ctrl END selection-end
+ shift ctrl HOME selection-begin
+ shift ctrl KP_LEFT selection-previous-word
+ shift ctrl KP_RIGHT selection-next-word
+ shift ctrl LEFT selection-previous-word
+ shift ctrl O toggle-componentOrientation
+ shift ctrl PAGE_DOWN selection-page-right
+ shift ctrl PAGE_UP selection-page-left
+ shift ctrl RIGHT selection-next-word
+ shift ctrl T previous-link-action
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift DOWN selection-down
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_DOWN selection-down
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift KP_UP selection-up
+ shift LEFT selection-backward
+ shift PAGE_DOWN selection-page-down
+ shift PAGE_UP selection-page-up
+ shift RIGHT selection-forward
+ shift UP selection-up
+
+
+#---- FileChooser ----
+
+FileChooser.ancestorInputMap [lazy] 6 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl ENTER approveSelection
+ BACK_SPACE Go Up
+ ENTER approveSelection
+ ESCAPE cancelSelection
+ F2 editFileName
+ F5 refresh
+
+
+#---- FormattedTextField ----
+
+FormattedTextField.focusInputMap [lazy] 44 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl BACK_SPACE delete-previous-word
+ ctrl C copy-to-clipboard
+ ctrl DELETE delete-next-word
+ ctrl H delete-previous
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-previous-word
+ ctrl KP_RIGHT caret-next-word
+ ctrl LEFT caret-previous-word
+ ctrl RIGHT caret-next-word
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ DOWN decrement
+ END caret-end-line
+ ENTER notify-field-accept
+ ESCAPE reset-field-edit
+ HOME caret-begin-line
+ KP_DOWN decrement
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ KP_UP increment
+ LEFT caret-backward
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ UP increment
+ shift ctrl KP_LEFT selection-previous-word
+ shift ctrl KP_RIGHT selection-next-word
+ shift ctrl LEFT selection-previous-word
+ shift ctrl O toggle-componentOrientation
+ shift ctrl RIGHT selection-next-word
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift LEFT selection-backward
+ shift RIGHT selection-forward
+
+
+#---- List ----
+
+List.focusInputMap.RightToLeft [lazy] 16 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl KP_LEFT selectNextColumnChangeLead
+ ctrl KP_RIGHT selectPreviousColumnChangeLead
+ ctrl LEFT selectNextColumnChangeLead
+ ctrl RIGHT selectPreviousColumnChangeLead
+ KP_LEFT selectNextColumn
+ KP_RIGHT selectPreviousColumn
+ LEFT selectNextColumn
+ RIGHT selectPreviousColumn
+ shift ctrl KP_LEFT selectNextColumnExtendSelection
+ shift ctrl KP_RIGHT selectPreviousColumnExtendSelection
+ shift ctrl LEFT selectNextColumnExtendSelection
+ shift ctrl RIGHT selectPreviousColumnExtendSelection
+ shift KP_LEFT selectNextColumnExtendSelection
+ shift KP_RIGHT selectPreviousColumnExtendSelection
+ shift LEFT selectNextColumnExtendSelection
+ shift RIGHT selectPreviousColumnExtendSelection
+List.focusInputMap [lazy] 64 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A selectAll
+ ctrl BACK_SLASH clearSelection
+ ctrl C copy
+ ctrl DOWN selectNextRowChangeLead
+ ctrl END selectLastRowChangeLead
+ ctrl HOME selectFirstRowChangeLead
+ ctrl INSERT copy
+ ctrl KP_DOWN selectNextRowChangeLead
+ ctrl KP_LEFT selectPreviousColumnChangeLead
+ ctrl KP_RIGHT selectNextColumnChangeLead
+ ctrl KP_UP selectPreviousRowChangeLead
+ ctrl LEFT selectPreviousColumnChangeLead
+ ctrl PAGE_DOWN scrollDownChangeLead
+ ctrl PAGE_UP scrollUpChangeLead
+ ctrl RIGHT selectNextColumnChangeLead
+ ctrl SLASH selectAll
+ ctrl SPACE toggleAndAnchor
+ ctrl UP selectPreviousRowChangeLead
+ ctrl V paste
+ ctrl X cut
+ COPY copy
+ CUT cut
+ DOWN selectNextRow
+ END selectLastRow
+ HOME selectFirstRow
+ KP_DOWN selectNextRow
+ KP_LEFT selectPreviousColumn
+ KP_RIGHT selectNextColumn
+ KP_UP selectPreviousRow
+ LEFT selectPreviousColumn
+ PAGE_DOWN scrollDown
+ PAGE_UP scrollUp
+ PASTE paste
+ RIGHT selectNextColumn
+ SPACE addToSelection
+ UP selectPreviousRow
+ shift ctrl DOWN selectNextRowExtendSelection
+ shift ctrl END selectLastRowExtendSelection
+ shift ctrl HOME selectFirstRowExtendSelection
+ shift ctrl KP_DOWN selectNextRowExtendSelection
+ shift ctrl KP_LEFT selectPreviousColumnExtendSelection
+ shift ctrl KP_RIGHT selectNextColumnExtendSelection
+ shift ctrl KP_UP selectPreviousRowExtendSelection
+ shift ctrl LEFT selectPreviousColumnExtendSelection
+ shift ctrl PAGE_DOWN scrollDownExtendSelection
+ shift ctrl PAGE_UP scrollUpExtendSelection
+ shift ctrl RIGHT selectNextColumnExtendSelection
+ shift ctrl SPACE moveSelectionTo
+ shift ctrl UP selectPreviousRowExtendSelection
+ shift DELETE cut
+ shift DOWN selectNextRowExtendSelection
+ shift END selectLastRowExtendSelection
+ shift HOME selectFirstRowExtendSelection
+ shift INSERT paste
+ shift KP_DOWN selectNextRowExtendSelection
+ shift KP_LEFT selectPreviousColumnExtendSelection
+ shift KP_RIGHT selectNextColumnExtendSelection
+ shift KP_UP selectPreviousRowExtendSelection
+ shift LEFT selectPreviousColumnExtendSelection
+ shift PAGE_DOWN scrollDownExtendSelection
+ shift PAGE_UP scrollUpExtendSelection
+ shift RIGHT selectNextColumnExtendSelection
+ shift SPACE extendTo
+ shift UP selectPreviousRowExtendSelection
+
+
+#---- PasswordField ----
+
+PasswordField.focusInputMap [lazy] 37 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl C copy-to-clipboard
+ ctrl H delete-previous
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-begin-line
+ ctrl KP_RIGHT caret-end-line
+ ctrl LEFT caret-begin-line
+ ctrl RIGHT caret-end-line
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ END caret-end-line
+ ENTER notify-field-accept
+ HOME caret-begin-line
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ LEFT caret-backward
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ shift ctrl KP_LEFT selection-begin-line
+ shift ctrl KP_RIGHT selection-end-line
+ shift ctrl LEFT selection-begin-line
+ shift ctrl O toggle-componentOrientation
+ shift ctrl RIGHT selection-end-line
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift LEFT selection-backward
+ shift RIGHT selection-forward
+
+
+#---- PopupMenu ----
+
+PopupMenu.selectedWindowInputMapBindings.RightToLeft length=8 [Ljava.lang.Object;
+ [0] LEFT
+ [1] selectChild
+ [2] KP_LEFT
+ [3] selectChild
+ [4] RIGHT
+ [5] selectParent
+ [6] KP_RIGHT
+ [7] selectParent
+PopupMenu.selectedWindowInputMapBindings length=22 [Ljava.lang.Object;
+ [0] ESCAPE
+ [1] cancel
+ [2] DOWN
+ [3] selectNext
+ [4] KP_DOWN
+ [5] selectNext
+ [6] UP
+ [7] selectPrevious
+ [8] KP_UP
+ [9] selectPrevious
+ [10] LEFT
+ [11] selectParent
+ [12] KP_LEFT
+ [13] selectParent
+ [14] RIGHT
+ [15] selectChild
+ [16] KP_RIGHT
+ [17] selectChild
+ [18] ENTER
+ [19] return
+ [20] SPACE
+ [21] return
+
+
+#---- RadioButton ----
+
+RadioButton.focusInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [UI]
+ SPACE pressed
+ released SPACE released
+
+
+#---- RootPane ----
+
+RootPane.ancestorInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [UI]
+ CONTEXT_MENU postPopup
+ shift F10 postPopup
+
+
+#---- ScrollBar ----
+
+ScrollBar.ancestorInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI]
+ KP_LEFT positiveUnitIncrement
+ KP_RIGHT negativeUnitIncrement
+ LEFT positiveUnitIncrement
+ RIGHT negativeUnitIncrement
+ScrollBar.ancestorInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI]
+ DOWN positiveUnitIncrement
+ END maxScroll
+ HOME minScroll
+ KP_DOWN positiveUnitIncrement
+ KP_LEFT negativeUnitIncrement
+ KP_RIGHT positiveUnitIncrement
+ KP_UP negativeUnitIncrement
+ LEFT negativeUnitIncrement
+ PAGE_DOWN positiveBlockIncrement
+ PAGE_UP negativeBlockIncrement
+ RIGHT positiveUnitIncrement
+ UP negativeUnitIncrement
+
+
+#---- ScrollPane ----
+
+ScrollPane.ancestorInputMap.RightToLeft [lazy] 2 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl PAGE_DOWN scrollLeft
+ ctrl PAGE_UP scrollRight
+ScrollPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl END scrollEnd
+ ctrl HOME scrollHome
+ ctrl PAGE_DOWN scrollRight
+ ctrl PAGE_UP scrollLeft
+ DOWN unitScrollDown
+ KP_DOWN unitScrollDown
+ KP_LEFT unitScrollLeft
+ KP_RIGHT unitScrollRight
+ KP_UP unitScrollUp
+ LEFT unitScrollLeft
+ PAGE_DOWN scrollDown
+ PAGE_UP scrollUp
+ RIGHT unitScrollRight
+ UP unitScrollUp
+
+
+#---- Slider ----
+
+Slider.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI]
+ KP_LEFT positiveUnitIncrement
+ KP_RIGHT negativeUnitIncrement
+ LEFT positiveUnitIncrement
+ RIGHT negativeUnitIncrement
+Slider.focusInputMap [lazy] 12 javax.swing.plaf.InputMapUIResource [UI]
+ DOWN negativeUnitIncrement
+ END maxScroll
+ HOME minScroll
+ KP_DOWN negativeUnitIncrement
+ KP_LEFT negativeUnitIncrement
+ KP_RIGHT positiveUnitIncrement
+ KP_UP positiveUnitIncrement
+ LEFT negativeUnitIncrement
+ PAGE_DOWN negativeBlockIncrement
+ PAGE_UP positiveBlockIncrement
+ RIGHT positiveUnitIncrement
+ UP positiveUnitIncrement
+
+
+#---- Spinner ----
+
+Spinner.ancestorInputMap [lazy] 4 javax.swing.plaf.InputMapUIResource [UI]
+ DOWN decrement
+ KP_DOWN decrement
+ KP_UP increment
+ UP increment
+
+
+#---- SplitPane ----
+
+SplitPane.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl TAB focusOutForward
+ DOWN positiveIncrement
+ END selectMax
+ F6 toggleFocus
+ F8 startResize
+ HOME selectMin
+ KP_DOWN positiveIncrement
+ KP_LEFT negativeIncrement
+ KP_RIGHT positiveIncrement
+ KP_UP negativeIncrement
+ LEFT negativeIncrement
+ RIGHT positiveIncrement
+ UP negativeIncrement
+ shift ctrl TAB focusOutBackward
+
+
+#---- TabbedPane ----
+
+TabbedPane.ancestorInputMap [lazy] 6 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl KP_UP requestFocus
+ ctrl PAGE_DOWN navigatePageDown
+ ctrl PAGE_UP navigatePageUp
+ ctrl TAB navigateNext
+ ctrl UP requestFocus
+ shift ctrl TAB navigatePrevious
+TabbedPane.focusInputMap [lazy] 11 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl DOWN requestFocusForVisibleComponent
+ ctrl KP_DOWN requestFocusForVisibleComponent
+ DOWN navigateDown
+ KP_DOWN navigateDown
+ KP_LEFT navigateLeft
+ KP_RIGHT navigateRight
+ KP_UP navigateUp
+ LEFT navigateLeft
+ RIGHT navigateRight
+ SPACE selectTabWithFocus
+ UP navigateUp
+
+
+#---- Table ----
+
+Table.ancestorInputMap.RightToLeft [lazy] 18 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl KP_LEFT selectNextColumnChangeLead
+ ctrl LEFT selectNextColumnChangeLead
+ ctrl PAGE_DOWN scrollLeftChangeSelection
+ ctrl PAGE_UP scrollRightChangeSelection
+ KP_LEFT selectNextColumn
+ KP_RIGHT selectPreviousColumn
+ LEFT selectNextColumn
+ RIGHT selectPreviousColumn
+ shift ctrl KP_LEFT selectNextColumnExtendSelection
+ shift ctrl KP_RIGHT selectPreviousColumnExtendSelection
+ shift ctrl LEFT selectNextColumnExtendSelection
+ shift ctrl PAGE_DOWN scrollLeftExtendSelection
+ shift ctrl PAGE_UP scrollRightExtendSelection
+ shift ctrl RIGHT selectPreviousColumnExtendSelection
+ shift KP_LEFT selectNextColumnExtendSelection
+ shift KP_RIGHT selectPreviousColumnChangeLead
+ shift LEFT selectNextColumnExtendSelection
+ shift RIGHT selectPreviousColumnChangeLead
+Table.ancestorInputMap [lazy] 71 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A selectAll
+ ctrl BACK_SLASH clearSelection
+ ctrl C copy
+ ctrl DOWN selectNextRowChangeLead
+ ctrl END selectLastRow
+ ctrl HOME selectFirstRow
+ ctrl INSERT copy
+ ctrl KP_DOWN selectNextRowChangeLead
+ ctrl KP_LEFT selectPreviousColumnChangeLead
+ ctrl KP_RIGHT selectNextColumnChangeLead
+ ctrl KP_UP selectPreviousRowChangeLead
+ ctrl LEFT selectPreviousColumnChangeLead
+ ctrl PAGE_DOWN scrollRightChangeSelection
+ ctrl PAGE_UP scrollLeftChangeSelection
+ ctrl RIGHT selectNextColumnChangeLead
+ ctrl SLASH selectAll
+ ctrl SPACE toggleAndAnchor
+ ctrl UP selectPreviousRowChangeLead
+ ctrl V paste
+ ctrl X cut
+ COPY copy
+ CUT cut
+ DOWN selectNextRow
+ END selectLastColumn
+ ENTER selectNextRowCell
+ ESCAPE cancel
+ F2 startEditing
+ F8 focusHeader
+ HOME selectFirstColumn
+ KP_DOWN selectNextRow
+ KP_LEFT selectPreviousColumn
+ KP_RIGHT selectNextColumn
+ KP_UP selectPreviousRow
+ LEFT selectPreviousColumn
+ PAGE_DOWN scrollDownChangeSelection
+ PAGE_UP scrollUpChangeSelection
+ PASTE paste
+ RIGHT selectNextColumn
+ SPACE addToSelection
+ TAB selectNextColumnCell
+ UP selectPreviousRow
+ shift ctrl DOWN selectNextRowExtendSelection
+ shift ctrl END selectLastRowExtendSelection
+ shift ctrl HOME selectFirstRowExtendSelection
+ shift ctrl KP_DOWN selectNextRowExtendSelection
+ shift ctrl KP_LEFT selectPreviousColumnExtendSelection
+ shift ctrl KP_RIGHT selectNextColumnExtendSelection
+ shift ctrl KP_UP selectPreviousRowExtendSelection
+ shift ctrl LEFT selectPreviousColumnExtendSelection
+ shift ctrl PAGE_DOWN scrollRightExtendSelection
+ shift ctrl PAGE_UP scrollLeftExtendSelection
+ shift ctrl RIGHT selectNextColumnExtendSelection
+ shift ctrl SPACE moveSelectionTo
+ shift ctrl UP selectPreviousRowExtendSelection
+ shift DELETE cut
+ shift DOWN selectNextRowExtendSelection
+ shift END selectLastColumnExtendSelection
+ shift ENTER selectPreviousRowCell
+ shift HOME selectFirstColumnExtendSelection
+ shift INSERT paste
+ shift KP_DOWN selectNextRowExtendSelection
+ shift KP_LEFT selectPreviousColumnExtendSelection
+ shift KP_RIGHT selectNextColumnExtendSelection
+ shift KP_UP selectPreviousRowExtendSelection
+ shift LEFT selectPreviousColumnExtendSelection
+ shift PAGE_DOWN scrollDownExtendSelection
+ shift PAGE_UP scrollUpExtendSelection
+ shift RIGHT selectNextColumnExtendSelection
+ shift SPACE extendTo
+ shift TAB selectPreviousColumnCell
+ shift UP selectPreviousRowExtendSelection
+
+
+#---- TableHeader ----
+
+TableHeader.ancestorInputMap [lazy] 14 javax.swing.plaf.InputMapUIResource [UI]
+ alt KP_LEFT moveColumnLeft
+ alt KP_RIGHT moveColumnRight
+ alt LEFT moveColumnLeft
+ alt RIGHT moveColumnRight
+ ESCAPE focusTable
+ KP_LEFT selectColumnToLeft
+ KP_RIGHT selectColumnToRight
+ LEFT selectColumnToLeft
+ RIGHT selectColumnToRight
+ SPACE toggleSortOrder
+ shift alt KP_LEFT resizeLeft
+ shift alt KP_RIGHT resizeRight
+ shift alt LEFT resizeLeft
+ shift alt RIGHT resizeRight
+
+
+#---- TextArea ----
+
+TextArea.focusInputMap [lazy] 61 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl BACK_SPACE delete-previous-word
+ ctrl C copy-to-clipboard
+ ctrl DELETE delete-next-word
+ ctrl END caret-end
+ ctrl H delete-previous
+ ctrl HOME caret-begin
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-previous-word
+ ctrl KP_RIGHT caret-next-word
+ ctrl LEFT caret-previous-word
+ ctrl RIGHT caret-next-word
+ ctrl SPACE activate-link-action
+ ctrl T next-link-action
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ DOWN caret-down
+ END caret-end-line
+ ENTER insert-break
+ HOME caret-begin-line
+ KP_DOWN caret-down
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ KP_UP caret-up
+ LEFT caret-backward
+ PAGE_DOWN page-down
+ PAGE_UP page-up
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ TAB insert-tab
+ UP caret-up
+ shift ctrl END selection-end
+ shift ctrl HOME selection-begin
+ shift ctrl KP_LEFT selection-previous-word
+ shift ctrl KP_RIGHT selection-next-word
+ shift ctrl LEFT selection-previous-word
+ shift ctrl O toggle-componentOrientation
+ shift ctrl PAGE_DOWN selection-page-right
+ shift ctrl PAGE_UP selection-page-left
+ shift ctrl RIGHT selection-next-word
+ shift ctrl T previous-link-action
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift DOWN selection-down
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_DOWN selection-down
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift KP_UP selection-up
+ shift LEFT selection-backward
+ shift PAGE_DOWN selection-page-down
+ shift PAGE_UP selection-page-up
+ shift RIGHT selection-forward
+ shift UP selection-up
+
+
+#---- TextField ----
+
+TextField.focusInputMap [lazy] 39 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl BACK_SPACE delete-previous-word
+ ctrl C copy-to-clipboard
+ ctrl DELETE delete-next-word
+ ctrl H delete-previous
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-previous-word
+ ctrl KP_RIGHT caret-next-word
+ ctrl LEFT caret-previous-word
+ ctrl RIGHT caret-next-word
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ END caret-end-line
+ ENTER notify-field-accept
+ HOME caret-begin-line
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ LEFT caret-backward
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ shift ctrl KP_LEFT selection-previous-word
+ shift ctrl KP_RIGHT selection-next-word
+ shift ctrl LEFT selection-previous-word
+ shift ctrl O toggle-componentOrientation
+ shift ctrl RIGHT selection-next-word
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift LEFT selection-backward
+ shift RIGHT selection-forward
+
+
+#---- TextPane ----
+
+TextPane.focusInputMap [lazy] 61 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A select-all
+ ctrl BACK_SLASH unselect
+ ctrl BACK_SPACE delete-previous-word
+ ctrl C copy-to-clipboard
+ ctrl DELETE delete-next-word
+ ctrl END caret-end
+ ctrl H delete-previous
+ ctrl HOME caret-begin
+ ctrl INSERT copy-to-clipboard
+ ctrl KP_LEFT caret-previous-word
+ ctrl KP_RIGHT caret-next-word
+ ctrl LEFT caret-previous-word
+ ctrl RIGHT caret-next-word
+ ctrl SPACE activate-link-action
+ ctrl T next-link-action
+ ctrl V paste-from-clipboard
+ ctrl X cut-to-clipboard
+ BACK_SPACE delete-previous
+ COPY copy-to-clipboard
+ CUT cut-to-clipboard
+ DELETE delete-next
+ DOWN caret-down
+ END caret-end-line
+ ENTER insert-break
+ HOME caret-begin-line
+ KP_DOWN caret-down
+ KP_LEFT caret-backward
+ KP_RIGHT caret-forward
+ KP_UP caret-up
+ LEFT caret-backward
+ PAGE_DOWN page-down
+ PAGE_UP page-up
+ PASTE paste-from-clipboard
+ RIGHT caret-forward
+ TAB insert-tab
+ UP caret-up
+ shift ctrl END selection-end
+ shift ctrl HOME selection-begin
+ shift ctrl KP_LEFT selection-previous-word
+ shift ctrl KP_RIGHT selection-next-word
+ shift ctrl LEFT selection-previous-word
+ shift ctrl O toggle-componentOrientation
+ shift ctrl PAGE_DOWN selection-page-right
+ shift ctrl PAGE_UP selection-page-left
+ shift ctrl RIGHT selection-next-word
+ shift ctrl T previous-link-action
+ shift BACK_SPACE delete-previous
+ shift DELETE cut-to-clipboard
+ shift DOWN selection-down
+ shift END selection-end-line
+ shift HOME selection-begin-line
+ shift INSERT paste-from-clipboard
+ shift KP_DOWN selection-down
+ shift KP_LEFT selection-backward
+ shift KP_RIGHT selection-forward
+ shift KP_UP selection-up
+ shift LEFT selection-backward
+ shift PAGE_DOWN selection-page-down
+ shift PAGE_UP selection-page-up
+ shift RIGHT selection-forward
+ shift UP selection-up
+
+
+#---- ToggleButton ----
+
+ToggleButton.focusInputMap [lazy] 2 javax.swing.plaf.InputMapUIResource [UI]
+ SPACE pressed
+ released SPACE released
+
+
+#---- ToolBar ----
+
+ToolBar.ancestorInputMap [lazy] 8 javax.swing.plaf.InputMapUIResource [UI]
+ DOWN navigateDown
+ KP_DOWN navigateDown
+ KP_LEFT navigateLeft
+ KP_RIGHT navigateRight
+ KP_UP navigateUp
+ LEFT navigateLeft
+ RIGHT navigateRight
+ UP navigateUp
+
+
+#---- Tree ----
+
+Tree.ancestorInputMap [lazy] 1 javax.swing.plaf.InputMapUIResource [UI]
+ ESCAPE cancel
+Tree.focusInputMap.RightToLeft [lazy] 4 javax.swing.plaf.InputMapUIResource [UI]
+ KP_LEFT selectChild
+ KP_RIGHT selectParent
+ LEFT selectChild
+ RIGHT selectParent
+Tree.focusInputMap [lazy] 60 javax.swing.plaf.InputMapUIResource [UI]
+ ctrl A selectAll
+ ctrl BACK_SLASH clearSelection
+ ctrl C copy
+ ctrl DOWN selectNextChangeLead
+ ctrl END selectLastChangeLead
+ ctrl HOME selectFirstChangeLead
+ ctrl INSERT copy
+ ctrl KP_DOWN selectNextChangeLead
+ ctrl KP_LEFT scrollLeft
+ ctrl KP_RIGHT scrollRight
+ ctrl KP_UP selectPreviousChangeLead
+ ctrl LEFT scrollLeft
+ ctrl PAGE_DOWN scrollDownChangeLead
+ ctrl PAGE_UP scrollUpChangeLead
+ ctrl RIGHT scrollRight
+ ctrl SLASH selectAll
+ ctrl SPACE toggleAndAnchor
+ ctrl UP selectPreviousChangeLead
+ ctrl V paste
+ ctrl X cut
+ BACK_SPACE moveSelectionToParent
+ COPY copy
+ CUT cut
+ DOWN selectNext
+ END selectLast
+ F2 startEditing
+ HOME selectFirst
+ KP_DOWN selectNext
+ KP_LEFT selectParent
+ KP_RIGHT selectChild
+ KP_UP selectPrevious
+ LEFT selectParent
+ PAGE_DOWN scrollDownChangeSelection
+ PAGE_UP scrollUpChangeSelection
+ PASTE paste
+ RIGHT selectChild
+ SPACE addToSelection
+ UP selectPrevious
+ shift ctrl DOWN selectNextExtendSelection
+ shift ctrl END selectLastExtendSelection
+ shift ctrl HOME selectFirstExtendSelection
+ shift ctrl KP_DOWN selectNextExtendSelection
+ shift ctrl KP_UP selectPreviousExtendSelection
+ shift ctrl PAGE_DOWN scrollDownExtendSelection
+ shift ctrl PAGE_UP scrollUpExtendSelection
+ shift ctrl SPACE moveSelectionTo
+ shift ctrl UP selectPreviousExtendSelection
+ shift DELETE cut
+ shift DOWN selectNextExtendSelection
+ shift END selectLastExtendSelection
+ shift HOME selectFirstExtendSelection
+ shift INSERT paste
+ shift KP_DOWN selectNextExtendSelection
+ shift KP_UP selectPreviousExtendSelection
+ shift PAGE_DOWN scrollDownExtendSelection
+ shift PAGE_UP scrollUpExtendSelection
+ shift SPACE extendTo
+ shift UP selectPreviousExtendSelection
+ typed + expand
+ typed - collapse
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatAnimatedIconTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatAnimatedIconTest.java
new file mode 100644
index 00000000..0bf90add
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatAnimatedIconTest.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.testing;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.geom.Ellipse2D;
+import javax.swing.*;
+import com.formdev.flatlaf.icons.FlatAnimatedIcon;
+import com.formdev.flatlaf.util.AnimatedIcon;
+import com.formdev.flatlaf.util.ColorFunctions;
+import net.miginfocom.swing.*;
+
+/**
+ * @author Karl Tauber
+ */
+public class FlatAnimatedIconTest
+ extends FlatTestPanel
+{
+ public static void main( String[] args ) {
+ SwingUtilities.invokeLater( () -> {
+ FlatTestFrame frame = FlatTestFrame.create( args, "FlatAnimatedIconTest" );
+ frame.showFrame( FlatAnimatedIconTest::new );
+ } );
+ }
+
+ FlatAnimatedIconTest() {
+ initComponents();
+
+ AnimatedRadioButtonIcon radioIcon = new AnimatedRadioButtonIcon();
+ radioButton1.setIcon( radioIcon );
+ radioButton2.setIcon( radioIcon );
+ radioButton3.setIcon( radioIcon );
+
+ checkBox1.setIcon( new AnimatedSwitchIcon() );
+ checkBox2.setIcon( new AnimatedMinimalTestIcon() );
+ }
+
+ private void initComponents() {
+ // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
+ radioButton1 = new JRadioButton();
+ radioButton2 = new JRadioButton();
+ radioButton3 = new JRadioButton();
+ checkBox1 = new JCheckBox();
+ checkBox2 = new JCheckBox();
+ durationLabel = new JLabel();
+ durationField = new JSpinner();
+
+ //======== this ========
+ setLayout(new MigLayout(
+ "insets dialog,hidemode 3",
+ // columns
+ "[]para" +
+ "[fill]",
+ // rows
+ "[]" +
+ "[]" +
+ "[]para" +
+ "[]" +
+ "[]" +
+ "[grow]" +
+ "[]"));
+
+ //---- radioButton1 ----
+ radioButton1.setText("radio 1");
+ radioButton1.setSelected(true);
+ add(radioButton1, "cell 0 0");
+
+ //---- radioButton2 ----
+ radioButton2.setText("radio 2");
+ add(radioButton2, "cell 0 1");
+
+ //---- radioButton3 ----
+ radioButton3.setText("radio 3");
+ add(radioButton3, "cell 0 2");
+
+ //---- checkBox1 ----
+ checkBox1.setText("switch");
+ add(checkBox1, "cell 0 3");
+
+ //---- checkBox2 ----
+ checkBox2.setText("minimal");
+ add(checkBox2, "cell 0 4");
+
+ //---- durationLabel ----
+ durationLabel.setText("Duration:");
+ add(durationLabel, "cell 0 6 2 1");
+
+ //---- durationField ----
+ durationField.setModel(new SpinnerNumberModel(200, 100, null, 50));
+ add(durationField, "cell 0 6 2 1");
+
+ //---- buttonGroup1 ----
+ ButtonGroup buttonGroup1 = new ButtonGroup();
+ buttonGroup1.add(radioButton1);
+ buttonGroup1.add(radioButton2);
+ buttonGroup1.add(radioButton3);
+ // JFormDesigner - End of component initialization //GEN-END:initComponents
+ }
+
+ // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
+ private JRadioButton radioButton1;
+ private JRadioButton radioButton2;
+ private JRadioButton radioButton3;
+ private JCheckBox checkBox1;
+ private JCheckBox checkBox2;
+ private JLabel durationLabel;
+ private JSpinner durationField;
+ // JFormDesigner - End of variables declaration //GEN-END:variables
+
+ //---- class AnimatedRadioButtonIcon --------------------------------------
+
+ /**
+ * Experimental radio button icon that:
+ * - fades icon color from off to on color
+ * - animates size of center dot from zero to full size
+ */
+ private class AnimatedRadioButtonIcon
+ extends FlatAnimatedIcon
+ {
+ private static final int SIZE = 16;
+ private static final int BORDER_SIZE = 2;
+ private static final int DOT_SIZE = 8;
+
+ private final Color offColor = Color.lightGray;
+ private final Color onColor = Color.red;
+
+ public AnimatedRadioButtonIcon() {
+ super( SIZE, SIZE, null );
+ }
+
+ @Override
+ public void paintIconAnimated( Component c, Graphics g, int x, int y, float animatedValue ) {
+ Color color = ColorFunctions.mix( onColor, offColor, animatedValue );;
+
+ // border
+ g.setColor( color );
+ g.fillOval( 0, 0, SIZE, SIZE );
+
+ // background
+ g.setColor( c.getBackground() );
+ int bwh = SIZE - (BORDER_SIZE * 2);
+ g.fillOval( BORDER_SIZE, BORDER_SIZE, bwh, bwh );
+
+ // dot
+ float dotDiameter = DOT_SIZE * animatedValue;
+ float xy = (SIZE - dotDiameter) / 2f;
+ g.setColor( color );
+ ((Graphics2D)g).fill( new Ellipse2D.Float( xy, xy, dotDiameter, dotDiameter ) );
+ }
+
+ @Override
+ public float getValue( Component c ) {
+ return ((JRadioButton)c).isSelected() ? 1 : 0;
+ }
+
+ @Override
+ public int getAnimationDuration() {
+ return (Integer) durationField.getValue();
+ }
+ }
+
+ //---- class AnimatedSwitchIcon -------------------------------------------
+
+ public class AnimatedSwitchIcon
+ extends FlatAnimatedIcon
+ {
+ private final Color offColor = Color.lightGray;
+ private final Color onColor = Color.red;
+
+ public AnimatedSwitchIcon() {
+ super( 28, 16, null );
+ }
+
+ @Override
+ public void paintIconAnimated( Component c, Graphics g, int x, int y, float animatedValue ) {
+ Color color = ColorFunctions.mix( onColor, offColor, animatedValue );;
+
+ g.setColor( color );
+ g.fillRoundRect( x, y, width, height, height, height );
+
+ int thumbSize = height - 4;
+ float thumbX = x + 2 + ((width - 4 - thumbSize) * animatedValue);
+ int thumbY = y + 2;
+ g.setColor( Color.white );
+ ((Graphics2D)g).fill( new Ellipse2D.Float( thumbX, thumbY, thumbSize, thumbSize ) );
+ }
+
+ @Override
+ public float getValue( Component c ) {
+ return ((AbstractButton)c).isSelected() ? 1 : 0;
+ }
+
+ @Override
+ public int getAnimationDuration() {
+ return (Integer) durationField.getValue();
+ }
+ }
+
+ //---- class AnimatedMinimalTestIcon --------------------------------------
+
+ /**
+ * Minimal example for an animated icon.
+ */
+ private class AnimatedMinimalTestIcon
+ implements AnimatedIcon
+ {
+ @Override
+ public int getIconWidth() {
+ return 100;
+ }
+
+ @Override
+ public int getIconHeight() {
+ return 20;
+ }
+
+ @Override
+ public void paintIconAnimated( Component c, Graphics g, int x, int y, float animatedValue ) {
+ int w = getIconWidth();
+ int h = getIconHeight();
+
+ g.setColor( Color.red );
+ g.drawRect( x, y, w - 1, h - 1 );
+ g.fillRect( x, y, Math.round( w * animatedValue ), h );
+ }
+
+ @Override
+ public float getValue( Component c ) {
+ return ((AbstractButton)c).isSelected() ? 1 : 0;
+ }
+
+ @Override
+ public int getAnimationDuration() {
+ return (Integer) durationField.getValue();
+ }
+ }
+}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatAnimatedIconTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatAnimatedIconTest.jfd
new file mode 100644
index 00000000..11c55e81
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatAnimatedIconTest.jfd
@@ -0,0 +1,72 @@
+JFDML JFormDesigner: "7.0.2.0.298" Java: "15" 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": "insets dialog,hidemode 3"
+ "$columnConstraints": "[]para[fill]"
+ "$rowConstraints": "[][][]para[][][grow][]"
+ } ) {
+ name: "this"
+ add( new FormComponent( "javax.swing.JRadioButton" ) {
+ name: "radioButton1"
+ "text": "radio 1"
+ "$buttonGroup": new FormReference( "buttonGroup1" )
+ "selected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
+ } )
+ add( new FormComponent( "javax.swing.JRadioButton" ) {
+ name: "radioButton2"
+ "text": "radio 2"
+ "$buttonGroup": new FormReference( "buttonGroup1" )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 1"
+ } )
+ add( new FormComponent( "javax.swing.JRadioButton" ) {
+ name: "radioButton3"
+ "text": "radio 3"
+ "$buttonGroup": new FormReference( "buttonGroup1" )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "checkBox1"
+ "text": "switch"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 3"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "checkBox2"
+ "text": "minimal"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 4"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "durationLabel"
+ "text": "Duration:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 6 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JSpinner" ) {
+ name: "durationField"
+ "model": new javax.swing.SpinnerNumberModel {
+ minimum: 100
+ stepSize: 50
+ value: 200
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 6 2 1"
+ } )
+ }, new FormLayoutConstraints( null ) {
+ "location": new java.awt.Point( 0, 0 )
+ "size": new java.awt.Dimension( 415, 350 )
+ } )
+ add( new FormNonVisual( "javax.swing.ButtonGroup" ) {
+ name: "buttonGroup1"
+ }, new FormLayoutConstraints( null ) {
+ "location": new java.awt.Point( 0, 360 )
+ } )
+ }
+}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatBaselineTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatBaselineTest.java
new file mode 100644
index 00000000..22a4851c
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatBaselineTest.java
@@ -0,0 +1,328 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.testing;
+
+import javax.swing.*;
+import javax.swing.table.*;
+import javax.swing.tree.*;
+import net.miginfocom.swing.*;
+
+/**
+ * @author Karl Tauber
+ */
+public class FlatBaselineTest
+ extends FlatTestPanel
+{
+ public static void main( String[] args ) {
+ SwingUtilities.invokeLater( () -> {
+ FlatTestFrame frame = FlatTestFrame.create( args, "FlatBaselineTest" );
+ frame.showFrame( FlatBaselineTest::new );
+ } );
+ }
+
+ public FlatBaselineTest() {
+ initComponents();
+ }
+
+ private void initComponents() {
+ // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
+ JLabel label1 = new JLabel();
+ JButton button1 = new JButton();
+ JToggleButton toggleButton1 = new JToggleButton();
+ JCheckBox checkBox1 = new JCheckBox();
+ JRadioButton radioButton1 = new JRadioButton();
+ JTextField textField4 = new JTextField();
+ JLabel label2 = new JLabel();
+ JTextField textField1 = new JTextField();
+ JFormattedTextField formattedTextField1 = new JFormattedTextField();
+ JPasswordField passwordField1 = new JPasswordField();
+ JComboBox comboBox1 = new JComboBox<>();
+ JSpinner spinner1 = new JSpinner();
+ JLabel label6 = new JLabel();
+ JScrollPane scrollPane1 = new JScrollPane();
+ JTextArea textArea1 = new JTextArea();
+ JTextArea textArea2 = new JTextArea();
+ JTextField textField2 = new JTextField();
+ JLabel label7 = new JLabel();
+ JScrollPane scrollPane3 = new JScrollPane();
+ JList list1 = new JList<>();
+ JScrollPane scrollPane4 = new JScrollPane();
+ JTree tree1 = new JTree();
+ JScrollPane scrollPane5 = new JScrollPane();
+ JTable table1 = new JTable();
+ JTextField textField3 = new JTextField();
+ JLabel label3 = new JLabel();
+ JSlider slider1 = new JSlider();
+ JSlider slider6 = new JSlider();
+ JLabel label8 = new JLabel();
+ JSlider slider7 = new JSlider();
+ JSlider slider8 = new JSlider();
+ JLabel label4 = new JLabel();
+ JProgressBar progressBar1 = new JProgressBar();
+ JProgressBar progressBar3 = new JProgressBar();
+ JSeparator separator1 = new JSeparator();
+ JLabel label5 = new JLabel();
+ JSlider slider2 = new JSlider();
+ JSlider slider3 = new JSlider();
+ JProgressBar progressBar2 = new JProgressBar();
+ JProgressBar progressBar4 = new JProgressBar();
+ JPanel hSpacer1 = new JPanel(null);
+ JLabel label9 = new JLabel();
+ JSlider slider4 = new JSlider();
+ JSlider slider5 = new JSlider();
+ JPanel hSpacer2 = new JPanel(null);
+
+ //======== this ========
+ setLayout(new MigLayout(
+ "insets dialog,hidemode 3,debug",
+ // columns
+ "[fill]" +
+ "[fill]" +
+ "[fill]" +
+ "[fill]" +
+ "[fill]" +
+ "[fill]" +
+ "[fill]",
+ // rows
+ "[]" +
+ "[]" +
+ "[50]" +
+ "[::80]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]"));
+
+ //---- label1 ----
+ label1.setText("Dext");
+ add(label1, "cell 0 0");
+
+ //---- button1 ----
+ button1.setText("Dext");
+ add(button1, "cell 1 0");
+
+ //---- toggleButton1 ----
+ toggleButton1.setText("Dext");
+ add(toggleButton1, "cell 2 0");
+
+ //---- checkBox1 ----
+ checkBox1.setText("Dext");
+ add(checkBox1, "cell 3 0");
+
+ //---- radioButton1 ----
+ radioButton1.setText("Dext");
+ add(radioButton1, "cell 4 0");
+
+ //---- textField4 ----
+ textField4.setText("Dext field");
+ add(textField4, "cell 6 0");
+
+ //---- label2 ----
+ label2.setText("Dext");
+ add(label2, "cell 0 1");
+
+ //---- textField1 ----
+ textField1.setText("Dext");
+ add(textField1, "cell 1 1");
+
+ //---- formattedTextField1 ----
+ formattedTextField1.setText("Dext");
+ add(formattedTextField1, "cell 2 1");
+
+ //---- passwordField1 ----
+ passwordField1.setText("Dext");
+ add(passwordField1, "cell 3 1");
+ add(comboBox1, "cell 4 1");
+ add(spinner1, "cell 5 1");
+
+ //---- label6 ----
+ label6.setText("Dext");
+ add(label6, "cell 0 2");
+
+ //======== scrollPane1 ========
+ {
+
+ //---- textArea1 ----
+ textArea1.setText("Dext");
+ textArea1.setRows(4);
+ scrollPane1.setViewportView(textArea1);
+ }
+ add(scrollPane1, "cell 1 2");
+
+ //---- textArea2 ----
+ textArea2.setText("Dext");
+ textArea2.setRows(4);
+ add(textArea2, "cell 2 2");
+
+ //---- textField2 ----
+ textField2.setText("Dext field");
+ add(textField2, "cell 6 2");
+
+ //---- label7 ----
+ label7.setText("Dext");
+ add(label7, "cell 0 3");
+
+ //======== scrollPane3 ========
+ {
+
+ //---- list1 ----
+ list1.setModel(new AbstractListModel() {
+ String[] values = {
+ "Dext",
+ "Dext",
+ "Dext"
+ };
+ @Override
+ public int getSize() { return values.length; }
+ @Override
+ public String getElementAt(int i) { return values[i]; }
+ });
+ scrollPane3.setViewportView(list1);
+ }
+ add(scrollPane3, "cell 1 3");
+
+ //======== scrollPane4 ========
+ {
+
+ //---- tree1 ----
+ tree1.setModel(new DefaultTreeModel(
+ new DefaultMutableTreeNode("Dext") {
+ {
+ add(new DefaultMutableTreeNode("Dext"));
+ add(new DefaultMutableTreeNode("Dext"));
+ }
+ }));
+ scrollPane4.setViewportView(tree1);
+ }
+ add(scrollPane4, "cell 2 3");
+
+ //======== scrollPane5 ========
+ {
+
+ //---- table1 ----
+ table1.setModel(new DefaultTableModel(
+ new Object[][] {
+ {"Dext", "0"},
+ {"Dext ", "1"},
+ },
+ new String[] {
+ "Dext", null
+ }
+ ));
+ scrollPane5.setViewportView(table1);
+ }
+ add(scrollPane5, "cell 3 3,wmax 100");
+
+ //---- textField3 ----
+ textField3.setText("Dext field");
+ add(textField3, "cell 6 3");
+
+ //---- label3 ----
+ label3.setText("Dext");
+ add(label3, "cell 0 4");
+ add(slider1, "cell 1 4 6 1");
+
+ //---- slider6 ----
+ slider6.setPaintTicks(true);
+ slider6.setMajorTickSpacing(25);
+ slider6.setMinorTickSpacing(5);
+ add(slider6, "cell 1 4 6 1");
+
+ //---- label8 ----
+ label8.setText("Dext");
+ add(label8, "cell 0 5");
+
+ //---- slider7 ----
+ slider7.setPaintLabels(true);
+ slider7.setMajorTickSpacing(25);
+ slider7.setMinorTickSpacing(5);
+ add(slider7, "cell 1 5 6 1");
+
+ //---- slider8 ----
+ slider8.setPaintLabels(true);
+ slider8.setPaintTicks(true);
+ slider8.setMajorTickSpacing(25);
+ slider8.setMinorTickSpacing(5);
+ add(slider8, "cell 1 5 6 1");
+
+ //---- label4 ----
+ label4.setText("Dext");
+ add(label4, "cell 0 6");
+
+ //---- progressBar1 ----
+ progressBar1.setValue(30);
+ add(progressBar1, "cell 1 6 6 1");
+
+ //---- progressBar3 ----
+ progressBar3.setStringPainted(true);
+ progressBar3.setValue(30);
+ add(progressBar3, "cell 1 6 6 1");
+ add(separator1, "cell 1 6 6 1");
+
+ //---- label5 ----
+ label5.setText("Dext");
+ add(label5, "cell 0 7");
+
+ //---- slider2 ----
+ slider2.setOrientation(SwingConstants.VERTICAL);
+ add(slider2, "cell 1 7 6 1");
+
+ //---- slider3 ----
+ slider3.setOrientation(SwingConstants.VERTICAL);
+ slider3.setPaintTicks(true);
+ slider3.setMajorTickSpacing(25);
+ slider3.setMinorTickSpacing(5);
+ add(slider3, "cell 1 7 6 1");
+
+ //---- progressBar2 ----
+ progressBar2.setOrientation(SwingConstants.VERTICAL);
+ progressBar2.setValue(30);
+ add(progressBar2, "cell 1 7 6 1");
+
+ //---- progressBar4 ----
+ progressBar4.setOrientation(SwingConstants.VERTICAL);
+ progressBar4.setStringPainted(true);
+ progressBar4.setValue(30);
+ add(progressBar4, "cell 1 7 6 1");
+ add(hSpacer1, "cell 1 7 6 1,growx");
+
+ //---- label9 ----
+ label9.setText("Dext");
+ add(label9, "cell 0 8");
+
+ //---- slider4 ----
+ slider4.setOrientation(SwingConstants.VERTICAL);
+ slider4.setPaintLabels(true);
+ slider4.setMajorTickSpacing(25);
+ slider4.setMinorTickSpacing(5);
+ add(slider4, "cell 1 8 6 1");
+
+ //---- slider5 ----
+ slider5.setOrientation(SwingConstants.VERTICAL);
+ slider5.setPaintLabels(true);
+ slider5.setPaintTicks(true);
+ slider5.setMajorTickSpacing(25);
+ slider5.setMinorTickSpacing(5);
+ add(slider5, "cell 1 8 6 1");
+ add(hSpacer2, "cell 1 8 6 1,growx");
+ // JFormDesigner - End of component initialization //GEN-END:initComponents
+ }
+
+ // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
+ // JFormDesigner - End of variables declaration //GEN-END:variables
+}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatBaselineTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatBaselineTest.jfd
new file mode 100644
index 00000000..b41f8d16
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatBaselineTest.jfd
@@ -0,0 +1,331 @@
+JFDML JFormDesigner: "7.0.2.0.298" Java: "15" encoding: "UTF-8"
+
+new FormModel {
+ contentType: "form/swing"
+ root: new FormRoot {
+ auxiliary() {
+ "JavaCodeGenerator.defaultVariableLocal": true
+ }
+ add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$layoutConstraints": "insets dialog,hidemode 3,debug"
+ "$columnConstraints": "[fill][fill][fill][fill][fill][fill][fill]"
+ "$rowConstraints": "[][][50][::80][][][][][]"
+ } ) {
+ name: "this"
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label1"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
+ } )
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "button1"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 0"
+ } )
+ add( new FormComponent( "javax.swing.JToggleButton" ) {
+ name: "toggleButton1"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 0"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "checkBox1"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 0"
+ } )
+ add( new FormComponent( "javax.swing.JRadioButton" ) {
+ name: "radioButton1"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 0"
+ } )
+ add( new FormComponent( "javax.swing.JTextField" ) {
+ name: "textField4"
+ "text": "Dext field"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 0"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label2"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 1"
+ } )
+ add( new FormComponent( "javax.swing.JTextField" ) {
+ name: "textField1"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 1"
+ } )
+ add( new FormComponent( "javax.swing.JFormattedTextField" ) {
+ name: "formattedTextField1"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JPasswordField" ) {
+ name: "passwordField1"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 1"
+ } )
+ add( new FormComponent( "javax.swing.JComboBox" ) {
+ name: "comboBox1"
+ auxiliary() {
+ "JavaCodeGenerator.typeParameters": "String"
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 1"
+ } )
+ add( new FormComponent( "javax.swing.JSpinner" ) {
+ name: "spinner1"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label6"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
+ add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
+ name: "scrollPane1"
+ add( new FormComponent( "javax.swing.JTextArea" ) {
+ name: "textArea1"
+ "text": "Dext"
+ "rows": 4
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 2"
+ } )
+ add( new FormComponent( "javax.swing.JTextArea" ) {
+ name: "textArea2"
+ "text": "Dext"
+ "rows": 4
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 2"
+ } )
+ add( new FormComponent( "javax.swing.JTextField" ) {
+ name: "textField2"
+ "text": "Dext field"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 2"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label7"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 3"
+ } )
+ add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
+ name: "scrollPane3"
+ add( new FormComponent( "javax.swing.JList" ) {
+ name: "list1"
+ "model": new javax.swing.DefaultListModel {
+ addElement( "Dext" )
+ addElement( "Dext" )
+ addElement( "Dext" )
+ }
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 3"
+ } )
+ add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
+ name: "scrollPane4"
+ add( new FormComponent( "javax.swing.JTree" ) {
+ name: "tree1"
+ "model": new javax.swing.tree.DefaultTreeModel( new javax.swing.tree.DefaultMutableTreeNode {
+ userObject: "Dext"
+ add( new javax.swing.tree.DefaultMutableTreeNode {
+ userObject: "Dext"
+ } )
+ add( new javax.swing.tree.DefaultMutableTreeNode {
+ userObject: "Dext"
+ } )
+ } )
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 3"
+ } )
+ add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
+ name: "scrollPane5"
+ add( new FormComponent( "javax.swing.JTable" ) {
+ name: "table1"
+ "model": new com.jformdesigner.model.SwingTableModel( new java.util.Vector {
+ add( new java.util.Vector {
+ add( "Dext" )
+ add( "0" )
+ } )
+ add( new java.util.Vector {
+ add( "Dext " )
+ add( "1" )
+ } )
+ }, new java.util.Vector {
+ add( "Dext" )
+ add( null )
+ }, 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 3 3,wmax 100"
+ } )
+ add( new FormComponent( "javax.swing.JTextField" ) {
+ name: "textField3"
+ "text": "Dext field"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 3"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label3"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 4"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "slider1"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 4 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "slider6"
+ "paintTicks": true
+ "majorTickSpacing": 25
+ "minorTickSpacing": 5
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 4 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label8"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 5"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "slider7"
+ "paintLabels": true
+ "majorTickSpacing": 25
+ "minorTickSpacing": 5
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 5 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "slider8"
+ "paintLabels": true
+ "paintTicks": true
+ "majorTickSpacing": 25
+ "minorTickSpacing": 5
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 5 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label4"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 6"
+ } )
+ add( new FormComponent( "javax.swing.JProgressBar" ) {
+ name: "progressBar1"
+ "value": 30
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 6 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JProgressBar" ) {
+ name: "progressBar3"
+ "stringPainted": true
+ "value": 30
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 6 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JSeparator" ) {
+ name: "separator1"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 6 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label5"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 7"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "slider2"
+ "orientation": 1
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 7 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "slider3"
+ "orientation": 1
+ "paintTicks": true
+ "majorTickSpacing": 25
+ "minorTickSpacing": 5
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 7 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JProgressBar" ) {
+ name: "progressBar2"
+ "orientation": 1
+ "value": 30
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 7 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JProgressBar" ) {
+ name: "progressBar4"
+ "orientation": 1
+ "stringPainted": true
+ "value": 30
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 7 6 1"
+ } )
+ add( new FormComponent( "com.jformdesigner.designer.wrapper.HSpacer" ) {
+ name: "hSpacer1"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 7 6 1,growx"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label9"
+ "text": "Dext"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 8"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "slider4"
+ "orientation": 1
+ "paintLabels": true
+ "majorTickSpacing": 25
+ "minorTickSpacing": 5
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 8 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "slider5"
+ "orientation": 1
+ "paintLabels": true
+ "paintTicks": true
+ "majorTickSpacing": 25
+ "minorTickSpacing": 5
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 8 6 1"
+ } )
+ add( new FormComponent( "com.jformdesigner.designer.wrapper.HSpacer" ) {
+ name: "hSpacer2"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 8 6 1,growx"
+ } )
+ }, new FormLayoutConstraints( null ) {
+ "location": new java.awt.Point( 0, 0 )
+ "size": new java.awt.Dimension( 650, 660 )
+ } )
+ }
+}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentStateTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentStateTest.java
new file mode 100644
index 00000000..49a0e4d3
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentStateTest.java
@@ -0,0 +1,1154 @@
+/*
+ * 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.util.function.Predicate;
+import javax.swing.*;
+import com.formdev.flatlaf.FlatClientProperties;
+import net.miginfocom.swing.*;
+
+/**
+ * @author Karl Tauber
+ */
+public class FlatComponentStateTest
+ extends FlatTestPanel
+{
+ public static void main( String[] args ) {
+ SwingUtilities.invokeLater( () -> {
+ FlatTestFrame frame = FlatTestFrame.create( args, "FlatComponentStateTest" );
+ frame.showFrame( FlatComponentStateTest::new );
+ } );
+ }
+
+ FlatComponentStateTest() {
+ initComponents();
+
+ Predicate unfocused = c -> false;
+ Predicate focused = c -> true;
+ textField1.putClientProperty( FlatClientProperties.COMPONENT_FOCUS_OWNER, unfocused );
+ textField2.putClientProperty( FlatClientProperties.COMPONENT_FOCUS_OWNER, focused );
+ comboBox1.putClientProperty( FlatClientProperties.COMPONENT_FOCUS_OWNER, unfocused );
+ comboBox2.putClientProperty( FlatClientProperties.COMPONENT_FOCUS_OWNER, focused );
+ }
+
+ private void initComponents() {
+ // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
+ label11 = new JLabel();
+ label12 = new JLabel();
+ label32 = new JLabel();
+ label5 = new JLabel();
+ label7 = new JLabel();
+ label6 = new JLabel();
+ label8 = new JLabel();
+ label13 = new JLabel();
+ label14 = new JLabel();
+ label15 = new JLabel();
+ label16 = new JLabel();
+ label9 = new JLabel();
+ label33 = new JLabel();
+ label1 = new JLabel();
+ testStateButton1 = new FlatComponentStateTest.TestStateButton();
+ testStateButton7 = new FlatComponentStateTest.TestStateButton();
+ testStateButton4 = new FlatComponentStateTest.TestStateButton();
+ testStateButton10 = new FlatComponentStateTest.TestStateButton();
+ testStateToggleButton1 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateToggleButton5 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateToggleButton9 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateToggleButton12 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateButton15 = new FlatComponentStateTest.TestStateButton();
+ testStateButton19 = new FlatComponentStateTest.TestStateButton();
+ label2 = new JLabel();
+ testStateButton2 = new FlatComponentStateTest.TestStateButton();
+ testStateButton8 = new FlatComponentStateTest.TestStateButton();
+ testStateButton5 = new FlatComponentStateTest.TestStateButton();
+ testStateButton11 = new FlatComponentStateTest.TestStateButton();
+ testStateToggleButton2 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateToggleButton6 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateToggleButton10 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateToggleButton13 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateButton16 = new FlatComponentStateTest.TestStateButton();
+ testStateButton20 = new FlatComponentStateTest.TestStateButton();
+ label3 = new JLabel();
+ testStateButton3 = new FlatComponentStateTest.TestStateButton();
+ testStateButton9 = new FlatComponentStateTest.TestStateButton();
+ testStateButton6 = new FlatComponentStateTest.TestStateButton();
+ testStateButton12 = new FlatComponentStateTest.TestStateButton();
+ testStateToggleButton3 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateToggleButton7 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateToggleButton11 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateToggleButton14 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateButton17 = new FlatComponentStateTest.TestStateButton();
+ testStateButton21 = new FlatComponentStateTest.TestStateButton();
+ label4 = new JLabel();
+ testStateButton13 = new FlatComponentStateTest.TestStateButton();
+ testStateButton14 = new FlatComponentStateTest.TestStateButton();
+ testStateToggleButton4 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateToggleButton8 = new FlatComponentStateTest.TestStateToggleButton();
+ testStateButton18 = new FlatComponentStateTest.TestStateButton();
+ label10 = new JLabel();
+ button1 = new JButton();
+ testDefaultButton1 = new FlatComponentStateTest.TestDefaultButton();
+ toggleButton1 = new JToggleButton();
+ toggleButton2 = new JToggleButton();
+ button2 = new JButton();
+ separator1 = new JSeparator();
+ label22 = new JLabel();
+ label27 = new JLabel();
+ label23 = new JLabel();
+ label28 = new JLabel();
+ label24 = new JLabel();
+ label29 = new JLabel();
+ label25 = new JLabel();
+ label30 = new JLabel();
+ label26 = new JLabel();
+ label31 = new JLabel();
+ label17 = new JLabel();
+ testStateCheckBox1 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateCheckBox8 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateCheckBox5 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateCheckBox12 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateRadioButton1 = new FlatComponentStateTest.TestStateRadioButton();
+ testStateRadioButton8 = new FlatComponentStateTest.TestStateRadioButton();
+ testStateRadioButton5 = new FlatComponentStateTest.TestStateRadioButton();
+ testStateRadioButton9 = new FlatComponentStateTest.TestStateRadioButton();
+ label18 = new JLabel();
+ testStateCheckBox2 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateCheckBox9 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateCheckBox6 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateCheckBox13 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateRadioButton2 = new FlatComponentStateTest.TestStateRadioButton();
+ testStateRadioButton10 = new FlatComponentStateTest.TestStateRadioButton();
+ testStateRadioButton6 = new FlatComponentStateTest.TestStateRadioButton();
+ testStateRadioButton11 = new FlatComponentStateTest.TestStateRadioButton();
+ label19 = new JLabel();
+ testStateCheckBox3 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateCheckBox10 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateCheckBox7 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateCheckBox14 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateRadioButton3 = new FlatComponentStateTest.TestStateRadioButton();
+ testStateRadioButton12 = new FlatComponentStateTest.TestStateRadioButton();
+ testStateRadioButton7 = new FlatComponentStateTest.TestStateRadioButton();
+ testStateRadioButton13 = new FlatComponentStateTest.TestStateRadioButton();
+ label20 = new JLabel();
+ testStateCheckBox4 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateCheckBox11 = new FlatComponentStateTest.TestStateCheckBox();
+ testStateRadioButton4 = new FlatComponentStateTest.TestStateRadioButton();
+ testStateRadioButton14 = new FlatComponentStateTest.TestStateRadioButton();
+ label21 = new JLabel();
+ checkBox1 = new JCheckBox();
+ checkBox2 = new JCheckBox();
+ radioButton1 = new JRadioButton();
+ radioButton2 = new JRadioButton();
+ separator2 = new JSeparator();
+ label35 = new JLabel();
+ textField1 = new JTextField();
+ textField2 = new JTextField();
+ label38 = new JLabel();
+ comboBox1 = new JComboBox<>();
+ comboBox2 = new JComboBox<>();
+
+ //======== this ========
+ setLayout(new MigLayout(
+ "insets dialog,hidemode 3",
+ // columns
+ "[fill]" +
+ "[fill]" +
+ "[fill]para" +
+ "[fill]" +
+ "[fill]para" +
+ "[fill]" +
+ "[fill]para" +
+ "[fill]" +
+ "[fill]para" +
+ "[fill]" +
+ "[fill]",
+ // rows
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]para" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]para" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]"));
+
+ //---- label11 ----
+ label11.setText("JButton");
+ label11.setFont(label11.getFont().deriveFont(label11.getFont().getSize() + 4f));
+ add(label11, "cell 1 0 2 1");
+
+ //---- label12 ----
+ label12.setText("JToggleButton");
+ label12.setFont(label12.getFont().deriveFont(label12.getFont().getSize() + 4f));
+ add(label12, "cell 5 0 3 1");
+
+ //---- label32 ----
+ label32.setText("Help Button");
+ label32.setFont(label32.getFont().deriveFont(label32.getFont().getSize() + 4f));
+ add(label32, "cell 9 0 2 1");
+
+ //---- label5 ----
+ label5.setText("regular");
+ add(label5, "cell 1 1");
+
+ //---- label7 ----
+ label7.setText("default");
+ add(label7, "cell 2 1");
+
+ //---- label6 ----
+ label6.setText("focused");
+ add(label6, "cell 3 1");
+
+ //---- label8 ----
+ label8.setText("default");
+ add(label8, "cell 4 1");
+
+ //---- label13 ----
+ label13.setText("unsel.");
+ add(label13, "cell 5 1");
+
+ //---- label14 ----
+ label14.setText("selected");
+ add(label14, "cell 6 1");
+
+ //---- label15 ----
+ label15.setText("focused");
+ add(label15, "cell 7 1");
+
+ //---- label16 ----
+ label16.setText("selected");
+ add(label16, "cell 8 1");
+
+ //---- label9 ----
+ label9.setText("regular");
+ add(label9, "cell 9 1");
+
+ //---- label33 ----
+ label33.setText("focused");
+ add(label33, "cell 10 1");
+
+ //---- label1 ----
+ label1.setText("none");
+ add(label1, "cell 0 2");
+
+ //---- testStateButton1 ----
+ testStateButton1.setText("text");
+ testStateButton1.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton1, "cell 1 2");
+
+ //---- testStateButton7 ----
+ testStateButton7.setText("text");
+ testStateButton7.setStateDefault(true);
+ testStateButton7.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton7, "cell 2 2");
+
+ //---- testStateButton4 ----
+ testStateButton4.setText("text");
+ testStateButton4.setStateFocused(true);
+ testStateButton4.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton4, "cell 3 2");
+
+ //---- testStateButton10 ----
+ testStateButton10.setText("text");
+ testStateButton10.setStateFocused(true);
+ testStateButton10.setStateDefault(true);
+ testStateButton10.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton10, "cell 4 2");
+
+ //---- testStateToggleButton1 ----
+ testStateToggleButton1.setText("text");
+ add(testStateToggleButton1, "cell 5 2");
+
+ //---- testStateToggleButton5 ----
+ testStateToggleButton5.setText("text");
+ testStateToggleButton5.setStateSelected(true);
+ add(testStateToggleButton5, "cell 6 2");
+
+ //---- testStateToggleButton9 ----
+ testStateToggleButton9.setText("text");
+ testStateToggleButton9.setStateFocused(true);
+ add(testStateToggleButton9, "cell 7 2");
+
+ //---- testStateToggleButton12 ----
+ testStateToggleButton12.setText("text");
+ testStateToggleButton12.setStateSelected(true);
+ testStateToggleButton12.setStateFocused(true);
+ add(testStateToggleButton12, "cell 8 2");
+
+ //---- testStateButton15 ----
+ testStateButton15.putClientProperty("JComponent.minimumWidth", 0);
+ testStateButton15.putClientProperty("JButton.buttonType", "help");
+ add(testStateButton15, "cell 9 2");
+
+ //---- testStateButton19 ----
+ testStateButton19.setStateFocused(true);
+ testStateButton19.putClientProperty("JComponent.minimumWidth", 0);
+ testStateButton19.putClientProperty("JButton.buttonType", "help");
+ add(testStateButton19, "cell 10 2");
+
+ //---- label2 ----
+ label2.setText("hover");
+ add(label2, "cell 0 3");
+
+ //---- testStateButton2 ----
+ testStateButton2.setText("text");
+ testStateButton2.setStateHover(true);
+ testStateButton2.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton2, "cell 1 3");
+
+ //---- testStateButton8 ----
+ testStateButton8.setText("text");
+ testStateButton8.setStateHover(true);
+ testStateButton8.setStateDefault(true);
+ testStateButton8.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton8, "cell 2 3");
+
+ //---- testStateButton5 ----
+ testStateButton5.setText("text");
+ testStateButton5.setStateHover(true);
+ testStateButton5.setStateFocused(true);
+ testStateButton5.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton5, "cell 3 3");
+
+ //---- testStateButton11 ----
+ testStateButton11.setText("text");
+ testStateButton11.setStateHover(true);
+ testStateButton11.setStateFocused(true);
+ testStateButton11.setStateDefault(true);
+ testStateButton11.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton11, "cell 4 3");
+
+ //---- testStateToggleButton2 ----
+ testStateToggleButton2.setText("text");
+ testStateToggleButton2.setStateHover(true);
+ add(testStateToggleButton2, "cell 5 3");
+
+ //---- testStateToggleButton6 ----
+ testStateToggleButton6.setText("text");
+ testStateToggleButton6.setStateHover(true);
+ testStateToggleButton6.setStateSelected(true);
+ add(testStateToggleButton6, "cell 6 3");
+
+ //---- testStateToggleButton10 ----
+ testStateToggleButton10.setText("text");
+ testStateToggleButton10.setStateHover(true);
+ testStateToggleButton10.setStateFocused(true);
+ add(testStateToggleButton10, "cell 7 3");
+
+ //---- testStateToggleButton13 ----
+ testStateToggleButton13.setText("text");
+ testStateToggleButton13.setStateHover(true);
+ testStateToggleButton13.setStateSelected(true);
+ testStateToggleButton13.setStateFocused(true);
+ add(testStateToggleButton13, "cell 8 3");
+
+ //---- testStateButton16 ----
+ testStateButton16.setStateHover(true);
+ testStateButton16.putClientProperty("JComponent.minimumWidth", 0);
+ testStateButton16.putClientProperty("JButton.buttonType", "help");
+ add(testStateButton16, "cell 9 3");
+
+ //---- testStateButton20 ----
+ testStateButton20.setStateHover(true);
+ testStateButton20.setStateFocused(true);
+ testStateButton20.putClientProperty("JComponent.minimumWidth", 0);
+ testStateButton20.putClientProperty("JButton.buttonType", "help");
+ add(testStateButton20, "cell 10 3");
+
+ //---- label3 ----
+ label3.setText("pressed");
+ add(label3, "cell 0 4");
+
+ //---- testStateButton3 ----
+ testStateButton3.setText("text");
+ testStateButton3.setStatePressed(true);
+ testStateButton3.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton3, "cell 1 4");
+
+ //---- testStateButton9 ----
+ testStateButton9.setText("text");
+ testStateButton9.setStatePressed(true);
+ testStateButton9.setStateDefault(true);
+ testStateButton9.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton9, "cell 2 4");
+
+ //---- testStateButton6 ----
+ testStateButton6.setText("text");
+ testStateButton6.setStatePressed(true);
+ testStateButton6.setStateFocused(true);
+ testStateButton6.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton6, "cell 3 4");
+
+ //---- testStateButton12 ----
+ testStateButton12.setText("text");
+ testStateButton12.setStatePressed(true);
+ testStateButton12.setStateFocused(true);
+ testStateButton12.setStateDefault(true);
+ testStateButton12.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton12, "cell 4 4");
+
+ //---- testStateToggleButton3 ----
+ testStateToggleButton3.setText("text");
+ testStateToggleButton3.setStatePressed(true);
+ add(testStateToggleButton3, "cell 5 4");
+
+ //---- testStateToggleButton7 ----
+ testStateToggleButton7.setText("text");
+ testStateToggleButton7.setStatePressed(true);
+ testStateToggleButton7.setStateSelected(true);
+ add(testStateToggleButton7, "cell 6 4");
+
+ //---- testStateToggleButton11 ----
+ testStateToggleButton11.setText("text");
+ testStateToggleButton11.setStatePressed(true);
+ testStateToggleButton11.setStateFocused(true);
+ add(testStateToggleButton11, "cell 7 4");
+
+ //---- testStateToggleButton14 ----
+ testStateToggleButton14.setText("text");
+ testStateToggleButton14.setStatePressed(true);
+ testStateToggleButton14.setStateSelected(true);
+ testStateToggleButton14.setStateFocused(true);
+ add(testStateToggleButton14, "cell 8 4");
+
+ //---- testStateButton17 ----
+ testStateButton17.setStatePressed(true);
+ testStateButton17.putClientProperty("JComponent.minimumWidth", 0);
+ testStateButton17.putClientProperty("JButton.buttonType", "help");
+ add(testStateButton17, "cell 9 4");
+
+ //---- testStateButton21 ----
+ testStateButton21.setStatePressed(true);
+ testStateButton21.setStateFocused(true);
+ testStateButton21.putClientProperty("JComponent.minimumWidth", 0);
+ testStateButton21.putClientProperty("JButton.buttonType", "help");
+ add(testStateButton21, "cell 10 4");
+
+ //---- label4 ----
+ label4.setText("disabled");
+ add(label4, "cell 0 5");
+
+ //---- testStateButton13 ----
+ testStateButton13.setText("text");
+ testStateButton13.setEnabled(false);
+ testStateButton13.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton13, "cell 1 5");
+
+ //---- testStateButton14 ----
+ testStateButton14.setText("text");
+ testStateButton14.setEnabled(false);
+ testStateButton14.setStateDefault(true);
+ testStateButton14.putClientProperty("JComponent.minimumWidth", 0);
+ add(testStateButton14, "cell 2 5");
+
+ //---- testStateToggleButton4 ----
+ testStateToggleButton4.setText("text");
+ testStateToggleButton4.setEnabled(false);
+ add(testStateToggleButton4, "cell 5 5");
+
+ //---- testStateToggleButton8 ----
+ testStateToggleButton8.setText("text");
+ testStateToggleButton8.setEnabled(false);
+ testStateToggleButton8.setStateSelected(true);
+ add(testStateToggleButton8, "cell 6 5");
+
+ //---- testStateButton18 ----
+ testStateButton18.setEnabled(false);
+ testStateButton18.putClientProperty("JComponent.minimumWidth", 0);
+ testStateButton18.putClientProperty("JButton.buttonType", "help");
+ add(testStateButton18, "cell 9 5");
+
+ //---- label10 ----
+ label10.setText("raw");
+ add(label10, "cell 0 6");
+
+ //---- button1 ----
+ button1.setText("text");
+ button1.putClientProperty("JComponent.minimumWidth", 0);
+ add(button1, "cell 1 6");
+
+ //---- testDefaultButton1 ----
+ testDefaultButton1.setText("text");
+ testDefaultButton1.putClientProperty("JComponent.minimumWidth", 0);
+ add(testDefaultButton1, "cell 2 6");
+
+ //---- toggleButton1 ----
+ toggleButton1.setText("text");
+ add(toggleButton1, "cell 5 6");
+
+ //---- toggleButton2 ----
+ toggleButton2.setText("text");
+ toggleButton2.setSelected(true);
+ add(toggleButton2, "cell 6 6");
+
+ //---- button2 ----
+ button2.putClientProperty("JComponent.minimumWidth", 0);
+ button2.putClientProperty("JButton.buttonType", "help");
+ add(button2, "cell 9 6");
+ add(separator1, "cell 0 7 11 1");
+
+ //---- label22 ----
+ label22.setText("JCheckBox");
+ label22.setFont(label22.getFont().deriveFont(label22.getFont().getSize() + 4f));
+ add(label22, "cell 1 8 2 1");
+
+ //---- label27 ----
+ label27.setText("JRadioButton");
+ label27.setFont(label27.getFont().deriveFont(label27.getFont().getSize() + 4f));
+ add(label27, "cell 5 8 2 1");
+
+ //---- label23 ----
+ label23.setText("unsel.");
+ add(label23, "cell 1 9");
+
+ //---- label28 ----
+ label28.setText("selected");
+ add(label28, "cell 2 9");
+
+ //---- label24 ----
+ label24.setText("focused");
+ add(label24, "cell 3 9");
+
+ //---- label29 ----
+ label29.setText("selected");
+ add(label29, "cell 4 9");
+
+ //---- label25 ----
+ label25.setText("unsel.");
+ add(label25, "cell 5 9");
+
+ //---- label30 ----
+ label30.setText("selected");
+ add(label30, "cell 6 9");
+
+ //---- label26 ----
+ label26.setText("focused");
+ add(label26, "cell 7 9");
+
+ //---- label31 ----
+ label31.setText("selected");
+ add(label31, "cell 8 9");
+
+ //---- label17 ----
+ label17.setText("none");
+ add(label17, "cell 0 10");
+
+ //---- testStateCheckBox1 ----
+ testStateCheckBox1.setText("text");
+ add(testStateCheckBox1, "cell 1 10");
+
+ //---- testStateCheckBox8 ----
+ testStateCheckBox8.setText("text");
+ testStateCheckBox8.setStateSelected(true);
+ add(testStateCheckBox8, "cell 2 10");
+
+ //---- testStateCheckBox5 ----
+ testStateCheckBox5.setText("text");
+ testStateCheckBox5.setStateFocused(true);
+ add(testStateCheckBox5, "cell 3 10");
+
+ //---- testStateCheckBox12 ----
+ testStateCheckBox12.setText("text");
+ testStateCheckBox12.setStateFocused(true);
+ testStateCheckBox12.setStateSelected(true);
+ add(testStateCheckBox12, "cell 4 10");
+
+ //---- testStateRadioButton1 ----
+ testStateRadioButton1.setText("text");
+ add(testStateRadioButton1, "cell 5 10");
+
+ //---- testStateRadioButton8 ----
+ testStateRadioButton8.setText("text");
+ testStateRadioButton8.setStateSelected(true);
+ add(testStateRadioButton8, "cell 6 10");
+
+ //---- testStateRadioButton5 ----
+ testStateRadioButton5.setText("text");
+ testStateRadioButton5.setStateFocused(true);
+ add(testStateRadioButton5, "cell 7 10");
+
+ //---- testStateRadioButton9 ----
+ testStateRadioButton9.setText("text");
+ testStateRadioButton9.setStateFocused(true);
+ testStateRadioButton9.setStateSelected(true);
+ add(testStateRadioButton9, "cell 8 10");
+
+ //---- label18 ----
+ label18.setText("hover");
+ add(label18, "cell 0 11");
+
+ //---- testStateCheckBox2 ----
+ testStateCheckBox2.setText("text");
+ testStateCheckBox2.setStateHover(true);
+ add(testStateCheckBox2, "cell 1 11");
+
+ //---- testStateCheckBox9 ----
+ testStateCheckBox9.setText("text");
+ testStateCheckBox9.setStateHover(true);
+ testStateCheckBox9.setStateSelected(true);
+ add(testStateCheckBox9, "cell 2 11");
+
+ //---- testStateCheckBox6 ----
+ testStateCheckBox6.setText("text");
+ testStateCheckBox6.setStateFocused(true);
+ testStateCheckBox6.setStateHover(true);
+ add(testStateCheckBox6, "cell 3 11");
+
+ //---- testStateCheckBox13 ----
+ testStateCheckBox13.setText("text");
+ testStateCheckBox13.setStateFocused(true);
+ testStateCheckBox13.setStateHover(true);
+ testStateCheckBox13.setStateSelected(true);
+ add(testStateCheckBox13, "cell 4 11");
+
+ //---- testStateRadioButton2 ----
+ testStateRadioButton2.setText("text");
+ testStateRadioButton2.setStateHover(true);
+ add(testStateRadioButton2, "cell 5 11");
+
+ //---- testStateRadioButton10 ----
+ testStateRadioButton10.setText("text");
+ testStateRadioButton10.setStateHover(true);
+ testStateRadioButton10.setStateSelected(true);
+ add(testStateRadioButton10, "cell 6 11");
+
+ //---- testStateRadioButton6 ----
+ testStateRadioButton6.setText("text");
+ testStateRadioButton6.setStateFocused(true);
+ testStateRadioButton6.setStateHover(true);
+ add(testStateRadioButton6, "cell 7 11");
+
+ //---- testStateRadioButton11 ----
+ testStateRadioButton11.setText("text");
+ testStateRadioButton11.setStateFocused(true);
+ testStateRadioButton11.setStateHover(true);
+ testStateRadioButton11.setStateSelected(true);
+ add(testStateRadioButton11, "cell 8 11");
+
+ //---- label19 ----
+ label19.setText("pressed");
+ add(label19, "cell 0 12");
+
+ //---- testStateCheckBox3 ----
+ testStateCheckBox3.setText("text");
+ testStateCheckBox3.setStatePressed(true);
+ add(testStateCheckBox3, "cell 1 12");
+
+ //---- testStateCheckBox10 ----
+ testStateCheckBox10.setText("text");
+ testStateCheckBox10.setStatePressed(true);
+ testStateCheckBox10.setStateSelected(true);
+ add(testStateCheckBox10, "cell 2 12");
+
+ //---- testStateCheckBox7 ----
+ testStateCheckBox7.setText("text");
+ testStateCheckBox7.setStateFocused(true);
+ testStateCheckBox7.setStatePressed(true);
+ add(testStateCheckBox7, "cell 3 12");
+
+ //---- testStateCheckBox14 ----
+ testStateCheckBox14.setText("text");
+ testStateCheckBox14.setStateFocused(true);
+ testStateCheckBox14.setStatePressed(true);
+ testStateCheckBox14.setStateSelected(true);
+ add(testStateCheckBox14, "cell 4 12");
+
+ //---- testStateRadioButton3 ----
+ testStateRadioButton3.setText("text");
+ testStateRadioButton3.setStatePressed(true);
+ add(testStateRadioButton3, "cell 5 12");
+
+ //---- testStateRadioButton12 ----
+ testStateRadioButton12.setText("text");
+ testStateRadioButton12.setStatePressed(true);
+ testStateRadioButton12.setStateSelected(true);
+ add(testStateRadioButton12, "cell 6 12");
+
+ //---- testStateRadioButton7 ----
+ testStateRadioButton7.setText("text");
+ testStateRadioButton7.setStateFocused(true);
+ testStateRadioButton7.setStatePressed(true);
+ add(testStateRadioButton7, "cell 7 12");
+
+ //---- testStateRadioButton13 ----
+ testStateRadioButton13.setText("text");
+ testStateRadioButton13.setStateFocused(true);
+ testStateRadioButton13.setStatePressed(true);
+ testStateRadioButton13.setStateSelected(true);
+ add(testStateRadioButton13, "cell 8 12");
+
+ //---- label20 ----
+ label20.setText("disabled");
+ add(label20, "cell 0 13");
+
+ //---- testStateCheckBox4 ----
+ testStateCheckBox4.setText("text");
+ testStateCheckBox4.setEnabled(false);
+ add(testStateCheckBox4, "cell 1 13");
+
+ //---- testStateCheckBox11 ----
+ testStateCheckBox11.setText("text");
+ testStateCheckBox11.setEnabled(false);
+ testStateCheckBox11.setStateSelected(true);
+ add(testStateCheckBox11, "cell 2 13");
+
+ //---- testStateRadioButton4 ----
+ testStateRadioButton4.setText("text");
+ testStateRadioButton4.setEnabled(false);
+ add(testStateRadioButton4, "cell 5 13");
+
+ //---- testStateRadioButton14 ----
+ testStateRadioButton14.setText("text");
+ testStateRadioButton14.setEnabled(false);
+ testStateRadioButton14.setStateSelected(true);
+ add(testStateRadioButton14, "cell 6 13");
+
+ //---- label21 ----
+ label21.setText("raw");
+ add(label21, "cell 0 14");
+
+ //---- checkBox1 ----
+ checkBox1.setText("text");
+ add(checkBox1, "cell 1 14");
+
+ //---- checkBox2 ----
+ checkBox2.setText("text");
+ checkBox2.setSelected(true);
+ add(checkBox2, "cell 2 14");
+
+ //---- radioButton1 ----
+ radioButton1.setText("text");
+ add(radioButton1, "cell 5 14");
+
+ //---- radioButton2 ----
+ radioButton2.setText("text");
+ radioButton2.setSelected(true);
+ add(radioButton2, "cell 6 14");
+ add(separator2, "cell 0 15 11 1");
+
+ //---- label35 ----
+ label35.setText("JTextField");
+ add(label35, "cell 0 16");
+ add(textField1, "cell 1 16 2 1");
+ add(textField2, "cell 3 16 2 1");
+
+ //---- label38 ----
+ label38.setText("JComboBox");
+ add(label38, "cell 0 17");
+ add(comboBox1, "cell 1 17 2 1");
+ add(comboBox2, "cell 3 17 2 1");
+ // JFormDesigner - End of component initialization //GEN-END:initComponents
+ }
+
+ // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
+ private JLabel label11;
+ private JLabel label12;
+ private JLabel label32;
+ private JLabel label5;
+ private JLabel label7;
+ private JLabel label6;
+ private JLabel label8;
+ private JLabel label13;
+ private JLabel label14;
+ private JLabel label15;
+ private JLabel label16;
+ private JLabel label9;
+ private JLabel label33;
+ private JLabel label1;
+ private FlatComponentStateTest.TestStateButton testStateButton1;
+ private FlatComponentStateTest.TestStateButton testStateButton7;
+ private FlatComponentStateTest.TestStateButton testStateButton4;
+ private FlatComponentStateTest.TestStateButton testStateButton10;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton1;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton5;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton9;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton12;
+ private FlatComponentStateTest.TestStateButton testStateButton15;
+ private FlatComponentStateTest.TestStateButton testStateButton19;
+ private JLabel label2;
+ private FlatComponentStateTest.TestStateButton testStateButton2;
+ private FlatComponentStateTest.TestStateButton testStateButton8;
+ private FlatComponentStateTest.TestStateButton testStateButton5;
+ private FlatComponentStateTest.TestStateButton testStateButton11;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton2;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton6;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton10;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton13;
+ private FlatComponentStateTest.TestStateButton testStateButton16;
+ private FlatComponentStateTest.TestStateButton testStateButton20;
+ private JLabel label3;
+ private FlatComponentStateTest.TestStateButton testStateButton3;
+ private FlatComponentStateTest.TestStateButton testStateButton9;
+ private FlatComponentStateTest.TestStateButton testStateButton6;
+ private FlatComponentStateTest.TestStateButton testStateButton12;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton3;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton7;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton11;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton14;
+ private FlatComponentStateTest.TestStateButton testStateButton17;
+ private FlatComponentStateTest.TestStateButton testStateButton21;
+ private JLabel label4;
+ private FlatComponentStateTest.TestStateButton testStateButton13;
+ private FlatComponentStateTest.TestStateButton testStateButton14;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton4;
+ private FlatComponentStateTest.TestStateToggleButton testStateToggleButton8;
+ private FlatComponentStateTest.TestStateButton testStateButton18;
+ private JLabel label10;
+ private JButton button1;
+ private FlatComponentStateTest.TestDefaultButton testDefaultButton1;
+ private JToggleButton toggleButton1;
+ private JToggleButton toggleButton2;
+ private JButton button2;
+ private JSeparator separator1;
+ private JLabel label22;
+ private JLabel label27;
+ private JLabel label23;
+ private JLabel label28;
+ private JLabel label24;
+ private JLabel label29;
+ private JLabel label25;
+ private JLabel label30;
+ private JLabel label26;
+ private JLabel label31;
+ private JLabel label17;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox1;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox8;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox5;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox12;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton1;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton8;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton5;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton9;
+ private JLabel label18;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox2;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox9;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox6;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox13;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton2;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton10;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton6;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton11;
+ private JLabel label19;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox3;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox10;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox7;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox14;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton3;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton12;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton7;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton13;
+ private JLabel label20;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox4;
+ private FlatComponentStateTest.TestStateCheckBox testStateCheckBox11;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton4;
+ private FlatComponentStateTest.TestStateRadioButton testStateRadioButton14;
+ private JLabel label21;
+ private JCheckBox checkBox1;
+ private JCheckBox checkBox2;
+ private JRadioButton radioButton1;
+ private JRadioButton radioButton2;
+ private JSeparator separator2;
+ private JLabel label35;
+ private JTextField textField1;
+ private JTextField textField2;
+ private JLabel label38;
+ private JComboBox comboBox1;
+ private JComboBox comboBox2;
+ // JFormDesigner - End of variables declaration //GEN-END:variables
+
+ //---- class TestStateButton ----------------------------------------------
+
+ private static class TestStateButton
+ extends JButton
+ {
+ private boolean stateHover;
+ private boolean statePressed;
+ private boolean stateFocused;
+ private boolean stateDefault;
+
+ public TestStateButton() {
+ setModel( new DefaultButtonModel() {
+ @Override
+ public boolean isRollover() {
+ return isStateHover();
+ }
+ @Override
+ public boolean isPressed() {
+ return isStatePressed();
+ }
+ } );
+
+ putClientProperty( FlatClientProperties.COMPONENT_FOCUS_OWNER,
+ (Predicate) c -> {
+ return ((TestStateButton)c).isStateFocused();
+ } );
+ }
+
+ public boolean isStateHover() {
+ return stateHover;
+ }
+
+ public void setStateHover( boolean stateHover ) {
+ this.stateHover = stateHover;
+ }
+
+ public boolean isStatePressed() {
+ return statePressed;
+ }
+
+ public void setStatePressed( boolean statePressed ) {
+ this.statePressed = statePressed;
+ }
+
+ public boolean isStateFocused() {
+ return stateFocused;
+ }
+
+ public void setStateFocused( boolean stateFocused ) {
+ this.stateFocused = stateFocused;
+ }
+
+ public boolean isStateDefault() {
+ return stateDefault;
+ }
+
+ public void setStateDefault( boolean stateDefault ) {
+ this.stateDefault = stateDefault;
+ }
+
+ @Override
+ public boolean isDefaultButton() {
+ return isStateDefault();
+ }
+ }
+
+ //---- class TestStateToggleButton ----------------------------------------
+
+ private static class TestStateToggleButton
+ extends JToggleButton
+ {
+ private boolean stateHover;
+ private boolean statePressed;
+ private boolean stateFocused;
+ private boolean stateSelected;
+
+ public TestStateToggleButton() {
+ setModel( new DefaultButtonModel() {
+ @Override
+ public boolean isRollover() {
+ return isStateHover();
+ }
+ @Override
+ public boolean isPressed() {
+ return isStatePressed();
+ }
+ @Override
+ public boolean isSelected() {
+ return isStateSelected();
+ }
+ } );
+
+ putClientProperty( FlatClientProperties.COMPONENT_FOCUS_OWNER,
+ (Predicate) c -> {
+ return ((TestStateToggleButton)c).isStateFocused();
+ } );
+ }
+
+ public boolean isStateHover() {
+ return stateHover;
+ }
+
+ public void setStateHover( boolean stateHover ) {
+ this.stateHover = stateHover;
+ }
+
+ public boolean isStatePressed() {
+ return statePressed;
+ }
+
+ public void setStatePressed( boolean statePressed ) {
+ this.statePressed = statePressed;
+ }
+
+ public boolean isStateFocused() {
+ return stateFocused;
+ }
+
+ public void setStateFocused( boolean stateFocused ) {
+ this.stateFocused = stateFocused;
+ }
+
+ public boolean isStateSelected() {
+ return stateSelected;
+ }
+
+ public void setStateSelected( boolean stateSelected ) {
+ this.stateSelected = stateSelected;
+ }
+ }
+
+ //---- class TestStateCheckBox --------------------------------------------
+
+ private static class TestStateCheckBox
+ extends JCheckBox
+ {
+ private boolean stateHover;
+ private boolean statePressed;
+ private boolean stateFocused;
+ private boolean stateSelected;
+
+ public TestStateCheckBox() {
+ setModel( new DefaultButtonModel() {
+ @Override
+ public boolean isRollover() {
+ return isStateHover();
+ }
+ @Override
+ public boolean isPressed() {
+ return isStatePressed();
+ }
+ @Override
+ public boolean isSelected() {
+ return isStateSelected();
+ }
+ } );
+
+ putClientProperty( FlatClientProperties.COMPONENT_FOCUS_OWNER,
+ (Predicate) c -> {
+ return ((TestStateCheckBox)c).isStateFocused();
+ } );
+ }
+
+ public boolean isStateHover() {
+ return stateHover;
+ }
+
+ public void setStateHover( boolean stateHover ) {
+ this.stateHover = stateHover;
+ }
+
+ public boolean isStatePressed() {
+ return statePressed;
+ }
+
+ public void setStatePressed( boolean statePressed ) {
+ this.statePressed = statePressed;
+ }
+
+ public boolean isStateFocused() {
+ return stateFocused;
+ }
+
+ public void setStateFocused( boolean stateFocused ) {
+ this.stateFocused = stateFocused;
+ }
+
+ public boolean isStateSelected() {
+ return stateSelected;
+ }
+
+ public void setStateSelected( boolean stateSelected ) {
+ this.stateSelected = stateSelected;
+ }
+ }
+
+ //---- class TestStateCheckBox --------------------------------------------
+
+ private static class TestStateRadioButton
+ extends JRadioButton
+ {
+ private boolean stateHover;
+ private boolean statePressed;
+ private boolean stateFocused;
+ private boolean stateSelected;
+
+ public TestStateRadioButton() {
+ setModel( new DefaultButtonModel() {
+ @Override
+ public boolean isRollover() {
+ return isStateHover();
+ }
+ @Override
+ public boolean isPressed() {
+ return isStatePressed();
+ }
+ @Override
+ public boolean isSelected() {
+ return isStateSelected();
+ }
+ } );
+
+ putClientProperty( FlatClientProperties.COMPONENT_FOCUS_OWNER,
+ (Predicate) c -> {
+ return ((TestStateRadioButton)c).isStateFocused();
+ } );
+ }
+
+ public boolean isStateHover() {
+ return stateHover;
+ }
+
+ public void setStateHover( boolean stateHover ) {
+ this.stateHover = stateHover;
+ }
+
+ public boolean isStatePressed() {
+ return statePressed;
+ }
+
+ public void setStatePressed( boolean statePressed ) {
+ this.statePressed = statePressed;
+ }
+
+ public boolean isStateFocused() {
+ return stateFocused;
+ }
+
+ public void setStateFocused( boolean stateFocused ) {
+ this.stateFocused = stateFocused;
+ }
+
+ public boolean isStateSelected() {
+ return stateSelected;
+ }
+
+ public void setStateSelected( boolean stateSelected ) {
+ this.stateSelected = stateSelected;
+ }
+ }
+
+ //---- class TestDefaultButton --------------------------------------------
+
+ private static class TestDefaultButton
+ extends JButton
+ {
+ @Override
+ public boolean isDefaultButton() {
+ return true;
+ }
+ }
+}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentStateTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentStateTest.jfd
new file mode 100644
index 00000000..f0af5569
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentStateTest.jfd
@@ -0,0 +1,827 @@
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" 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": "insets dialog,hidemode 3"
+ "$columnConstraints": "[fill][fill][fill]para[fill][fill]para[fill][fill]para[fill][fill]para[fill][fill]"
+ "$rowConstraints": "[][][][][][]para[][][][][][][][]para[][][][]"
+ } ) {
+ name: "this"
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label11"
+ "text": "JButton"
+ "font": &SwingDerivedFont0 new com.jformdesigner.model.SwingDerivedFont( null, 0, 4, false )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 0 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label12"
+ "text": "JToggleButton"
+ "font": #SwingDerivedFont0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 0 3 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label32"
+ "text": "Help Button"
+ "font": #SwingDerivedFont0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 9 0 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label5"
+ "text": "regular"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label7"
+ "text": "default"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label6"
+ "text": "focused"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label8"
+ "text": "default"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label13"
+ "text": "unsel."
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label14"
+ "text": "selected"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label15"
+ "text": "focused"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 7 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label16"
+ "text": "selected"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 8 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label9"
+ "text": "regular"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 9 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label33"
+ "text": "focused"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 10 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label1"
+ "text": "none"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton1"
+ "text": "text"
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 2"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton7"
+ "text": "text"
+ "stateDefault": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 2"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton4"
+ "text": "text"
+ "stateFocused": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 2"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton10"
+ "text": "text"
+ "stateFocused": true
+ "stateDefault": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 2"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton1"
+ "text": "text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 2"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton5"
+ "text": "text"
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 2"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton9"
+ "text": "text"
+ "stateFocused": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 7 2"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton12"
+ "text": "text"
+ "stateSelected": true
+ "stateFocused": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 8 2"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton15"
+ "$client.JComponent.minimumWidth": 0
+ "$client.JButton.buttonType": "help"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 9 2"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton19"
+ "stateFocused": true
+ "$client.JComponent.minimumWidth": 0
+ "$client.JButton.buttonType": "help"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 10 2"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label2"
+ "text": "hover"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 3"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton2"
+ "text": "text"
+ "stateHover": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 3"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton8"
+ "text": "text"
+ "stateHover": true
+ "stateDefault": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 3"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton5"
+ "text": "text"
+ "stateHover": true
+ "stateFocused": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 3"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton11"
+ "text": "text"
+ "stateHover": true
+ "stateFocused": true
+ "stateDefault": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 3"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton2"
+ "text": "text"
+ "stateHover": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 3"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton6"
+ "text": "text"
+ "stateHover": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 3"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton10"
+ "text": "text"
+ "stateHover": true
+ "stateFocused": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 7 3"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton13"
+ "text": "text"
+ "stateHover": true
+ "stateSelected": true
+ "stateFocused": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 8 3"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton16"
+ "stateHover": true
+ "$client.JComponent.minimumWidth": 0
+ "$client.JButton.buttonType": "help"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 9 3"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton20"
+ "stateHover": true
+ "stateFocused": true
+ "$client.JComponent.minimumWidth": 0
+ "$client.JButton.buttonType": "help"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 10 3"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label3"
+ "text": "pressed"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 4"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton3"
+ "text": "text"
+ "statePressed": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 4"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton9"
+ "text": "text"
+ "statePressed": true
+ "stateDefault": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 4"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton6"
+ "text": "text"
+ "statePressed": true
+ "stateFocused": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 4"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton12"
+ "text": "text"
+ "statePressed": true
+ "stateFocused": true
+ "stateDefault": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 4"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton3"
+ "text": "text"
+ "statePressed": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 4"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton7"
+ "text": "text"
+ "statePressed": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 4"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton11"
+ "text": "text"
+ "statePressed": true
+ "stateFocused": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 7 4"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton14"
+ "text": "text"
+ "statePressed": true
+ "stateSelected": true
+ "stateFocused": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 8 4"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton17"
+ "statePressed": true
+ "$client.JComponent.minimumWidth": 0
+ "$client.JButton.buttonType": "help"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 9 4"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton21"
+ "statePressed": true
+ "stateFocused": true
+ "$client.JComponent.minimumWidth": 0
+ "$client.JButton.buttonType": "help"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 10 4"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label4"
+ "text": "disabled"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 5"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton13"
+ "text": "text"
+ "enabled": false
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 5"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton14"
+ "text": "text"
+ "enabled": false
+ "stateDefault": true
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 5"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton4"
+ "text": "text"
+ "enabled": false
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 5"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateToggleButton" ) {
+ name: "testStateToggleButton8"
+ "text": "text"
+ "enabled": false
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 5"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateButton" ) {
+ name: "testStateButton18"
+ "enabled": false
+ "$client.JComponent.minimumWidth": 0
+ "$client.JButton.buttonType": "help"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 9 5"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label10"
+ "text": "raw"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 6"
+ } )
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "button1"
+ "text": "text"
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 6"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestDefaultButton" ) {
+ name: "testDefaultButton1"
+ "text": "text"
+ "$client.JComponent.minimumWidth": 0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 6"
+ } )
+ add( new FormComponent( "javax.swing.JToggleButton" ) {
+ name: "toggleButton1"
+ "text": "text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 6"
+ } )
+ add( new FormComponent( "javax.swing.JToggleButton" ) {
+ name: "toggleButton2"
+ "text": "text"
+ "selected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 6"
+ } )
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "button2"
+ "$client.JComponent.minimumWidth": 0
+ "$client.JButton.buttonType": "help"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 9 6"
+ } )
+ add( new FormComponent( "javax.swing.JSeparator" ) {
+ name: "separator1"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 7 11 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label22"
+ "text": "JCheckBox"
+ "font": #SwingDerivedFont0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 8 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label27"
+ "text": "JRadioButton"
+ "font": #SwingDerivedFont0
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 8 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label23"
+ "text": "unsel."
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 9"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label28"
+ "text": "selected"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 9"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label24"
+ "text": "focused"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 9"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label29"
+ "text": "selected"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 9"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label25"
+ "text": "unsel."
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 9"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label30"
+ "text": "selected"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 9"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label26"
+ "text": "focused"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 7 9"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label31"
+ "text": "selected"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 8 9"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label17"
+ "text": "none"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 10"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox1"
+ "text": "text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 10"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox8"
+ "text": "text"
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 10"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox5"
+ "text": "text"
+ "stateFocused": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 10"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox12"
+ "text": "text"
+ "stateFocused": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 10"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton1"
+ "text": "text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 10"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton8"
+ "text": "text"
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 10"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton5"
+ "text": "text"
+ "stateFocused": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 7 10"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton9"
+ "text": "text"
+ "stateFocused": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 8 10"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label18"
+ "text": "hover"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 11"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox2"
+ "text": "text"
+ "stateHover": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 11"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox9"
+ "text": "text"
+ "stateHover": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 11"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox6"
+ "text": "text"
+ "stateFocused": true
+ "stateHover": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 11"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox13"
+ "text": "text"
+ "stateFocused": true
+ "stateHover": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 11"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton2"
+ "text": "text"
+ "stateHover": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 11"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton10"
+ "text": "text"
+ "stateHover": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 11"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton6"
+ "text": "text"
+ "stateFocused": true
+ "stateHover": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 7 11"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton11"
+ "text": "text"
+ "stateFocused": true
+ "stateHover": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 8 11"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label19"
+ "text": "pressed"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 12"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox3"
+ "text": "text"
+ "statePressed": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 12"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox10"
+ "text": "text"
+ "statePressed": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 12"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox7"
+ "text": "text"
+ "stateFocused": true
+ "statePressed": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 12"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox14"
+ "text": "text"
+ "stateFocused": true
+ "statePressed": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 12"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton3"
+ "text": "text"
+ "statePressed": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 12"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton12"
+ "text": "text"
+ "statePressed": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 12"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton7"
+ "text": "text"
+ "stateFocused": true
+ "statePressed": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 7 12"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton13"
+ "text": "text"
+ "stateFocused": true
+ "statePressed": true
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 8 12"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label20"
+ "text": "disabled"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 13"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox4"
+ "text": "text"
+ "enabled": false
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 13"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateCheckBox" ) {
+ name: "testStateCheckBox11"
+ "text": "text"
+ "enabled": false
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 13"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton4"
+ "text": "text"
+ "enabled": false
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 13"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentStateTest$TestStateRadioButton" ) {
+ name: "testStateRadioButton14"
+ "text": "text"
+ "enabled": false
+ "stateSelected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 13"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label21"
+ "text": "raw"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 14"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "checkBox1"
+ "text": "text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 14"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "checkBox2"
+ "text": "text"
+ "selected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 14"
+ } )
+ add( new FormComponent( "javax.swing.JRadioButton" ) {
+ name: "radioButton1"
+ "text": "text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 14"
+ } )
+ add( new FormComponent( "javax.swing.JRadioButton" ) {
+ name: "radioButton2"
+ "text": "text"
+ "selected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 14"
+ } )
+ add( new FormComponent( "javax.swing.JSeparator" ) {
+ name: "separator2"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 15 11 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label35"
+ "text": "JTextField"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 16"
+ } )
+ add( new FormComponent( "javax.swing.JTextField" ) {
+ name: "textField1"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 16 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JTextField" ) {
+ name: "textField2"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 16 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label38"
+ "text": "JComboBox"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 17"
+ } )
+ add( new FormComponent( "javax.swing.JComboBox" ) {
+ name: "comboBox1"
+ auxiliary() {
+ "JavaCodeGenerator.typeParameters": "String"
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 17 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JComboBox" ) {
+ name: "comboBox2"
+ auxiliary() {
+ "JavaCodeGenerator.typeParameters": "String"
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 17 2 1"
+ } )
+ }, new FormLayoutConstraints( null ) {
+ "location": new java.awt.Point( 0, 0 )
+ "size": new java.awt.Dimension( 785, 685 )
+ } )
+ }
+}
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 dc01cd27..af2d3def 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
@@ -17,22 +17,46 @@
package com.formdev.flatlaf.testing;
import java.awt.Color;
+import java.awt.Component;
+import java.awt.ComponentOrientation;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
+import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import javax.swing.*;
+import javax.swing.border.*;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
import javax.swing.table.*;
import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeCellRenderer;
+import com.formdev.flatlaf.FlatClientProperties;
import com.formdev.flatlaf.icons.FlatMenuArrowIcon;
+import com.formdev.flatlaf.util.UIScale;
+import com.jidesoft.swing.*;
+import com.jidesoft.swing.CheckBoxTreeCellRenderer;
+import com.jidesoft.tree.StyledTreeCellRenderer;
import net.miginfocom.swing.*;
+import org.jdesktop.swingx.*;
+import org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.JXTreeTable;
+import org.jdesktop.swingx.decorator.ColorHighlighter;
+import org.jdesktop.swingx.decorator.HighlightPredicate;
+import org.jdesktop.swingx.decorator.Highlighter;
+import org.jdesktop.swingx.decorator.HighlighterFactory;
+import org.jdesktop.swingx.decorator.PatternPredicate;
+import org.jdesktop.swingx.decorator.ShadingColorHighlighter;
+import org.jdesktop.swingx.renderer.DefaultTreeRenderer;
+import org.jdesktop.swingx.treetable.FileSystemModel;
/**
* @author Karl Tauber
@@ -43,6 +67,7 @@ public class FlatComponents2Test
public static void main( String[] args ) {
SwingUtilities.invokeLater( () -> {
FlatTestFrame frame = FlatTestFrame.create( args, "FlatComponents2Test" );
+ frame.useApplyComponentOrientation = true;
frame.showFrame( FlatComponents2Test::new );
} );
}
@@ -50,10 +75,18 @@ public class FlatComponents2Test
private final TestListModel listModel;
private final TestTreeModel treeModel;
private final TestTableModel tableModel;
+ private final JTree[] allTrees;
+ private final List allTables = new ArrayList<>();
+ private final List allTablesInclRowHeader = new ArrayList<>();
+ private JTable rowHeaderTable1;
FlatComponents2Test() {
initComponents();
+ treeWideSelectionCheckBox.setSelected( UIManager.getBoolean( "Tree.wideSelection" ) );
+ allTrees = new JTree[] { tree1, tree2, xTree1, checkBoxTree1 };
+
+
// list model
listModel = new TestListModel( (Integer) listRowCountSpinner.getValue() );
list1.setModel( listModel );
@@ -61,15 +94,41 @@ public class FlatComponents2Test
// tree model
treeModel = new TestTreeModel( (Integer) treeRowCountSpinner.getValue() );
- tree1.setModel( treeModel );
- tree2.setModel( treeModel );
+ for( JTree tree : allTrees )
+ tree.setModel( treeModel );
// table model
tableModel = new TestTableModel( (Integer) tableRowCountSpinner.getValue() );
table1.setModel( tableModel );
+ xTable1.setModel( tableModel );
// table column editors
- TableColumnModel cm = table1.getColumnModel();
+ initTableEditors( table1 );
+ initTableEditors( xTable1 );
+
+ // JXTable
+ Highlighter simpleStriping = HighlighterFactory.createSimpleStriping();
+ PatternPredicate patternPredicate = new PatternPredicate( "^J", 2 );
+ ColorHighlighter magenta = new ColorHighlighter( patternPredicate, null, Color.MAGENTA, null, Color.MAGENTA );
+ ColorHighlighter rollover = new ColorHighlighter( HighlightPredicate.ROLLOVER_ROW, Color.cyan, null );
+ Highlighter shading = new ShadingColorHighlighter( new HighlightPredicate.ColumnHighlightPredicate( 1 ) );
+ xTable1.setHighlighters( simpleStriping, magenta, rollover, shading );
+
+ // JXTreeTable
+ xTreeTable1.setTreeTableModel( new FileSystemModel( new File( "." ) ) );
+ xTreeTable1.setHighlighters( simpleStriping, magenta, rollover, shading );
+
+ allTables.add( table1 );
+ allTables.add( xTable1 );
+ allTables.add( xTreeTable1 );
+ allTablesInclRowHeader.addAll( allTables );
+
+ for( JTree tree : allTrees )
+ expandTree( tree );
+ }
+
+ private void initTableEditors( JTable table ) {
+ TableColumnModel cm = table.getColumnModel();
String[] months = new String[] {
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
@@ -78,9 +137,6 @@ public class FlatComponents2Test
JComboBox editableComboBox = new JComboBox<>( months );
editableComboBox.setEditable( true );
cm.getColumn(3).setCellEditor( new DefaultCellEditor( editableComboBox ) );
-
- expandTree( tree1 );
- expandTree( tree2 );
}
private void expandTree( JTree tree ) {
@@ -121,6 +177,22 @@ public class FlatComponents2Test
tableModel.setRowCount( (Integer) tableRowCountSpinner.getValue() );
}
+ private void autoResizeModeChanged() {
+ int autoResizeMode = JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS;
+ Object sel = autoResizeModeField.getSelectedItem();
+ if( sel instanceof String ) {
+ switch( (String) sel ) {
+ case "off": autoResizeMode = JTable.AUTO_RESIZE_OFF; break;
+ case "nextColumn": autoResizeMode = JTable.AUTO_RESIZE_NEXT_COLUMN; break;
+ case "subsequentColumns": autoResizeMode = JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS; break;
+ case "lastColumn": autoResizeMode = JTable.AUTO_RESIZE_LAST_COLUMN; break;
+ case "allColumns": autoResizeMode = JTable.AUTO_RESIZE_ALL_COLUMNS; break;
+ }
+ }
+ for( JTable table : allTables )
+ table.setAutoResizeMode( autoResizeMode );
+ }
+
private void dndChanged() {
boolean dnd = dndCheckBox.isSelected();
list1.setDragEnabled( dnd );
@@ -128,11 +200,15 @@ public class FlatComponents2Test
tree1.setDragEnabled( dnd );
tree2.setDragEnabled( dnd );
table1.setDragEnabled( dnd );
+ xTable1.setDragEnabled( dnd );
+ xTreeTable1.setDragEnabled( dnd );
DropMode dropMode = dnd ? DropMode.ON_OR_INSERT : DropMode.USE_SELECTION;
list1.setDropMode( dropMode );
tree1.setDropMode( dropMode );
table1.setDropMode( dropMode );
+ xTable1.setDropMode( dropMode );
+ xTreeTable1.setDropMode( dropMode );
String key = "FlatLaf.oldTransferHandler";
if( dnd ) {
@@ -143,48 +219,165 @@ public class FlatComponents2Test
tree1.setTransferHandler( new DummyTransferHandler() );
table1.putClientProperty( key, table1.getTransferHandler() );
+ xTable1.putClientProperty( key, xTable1.getTransferHandler() );
+ xTreeTable1.putClientProperty( key, xTreeTable1.getTransferHandler() );
table1.setTransferHandler( new DummyTransferHandler() );
+ xTable1.setTransferHandler( new DummyTransferHandler() );
+ xTreeTable1.setTransferHandler( new DummyTransferHandler() );
} else {
list1.setTransferHandler( (TransferHandler) list1.getClientProperty( key ) );
tree1.setTransferHandler( (TransferHandler) tree1.getClientProperty( key ) );
table1.setTransferHandler( (TransferHandler) table1.getClientProperty( key ) );
+ xTable1.setTransferHandler( (TransferHandler) xTable1.getClientProperty( key ) );
+ xTreeTable1.setTransferHandler( (TransferHandler) xTreeTable1.getClientProperty( key ) );
}
}
private void tableHeaderButtonChanged() {
+ tableHeaderButtonChanged( table1ScrollPane );
+ tableHeaderButtonChanged( xTable1ScrollPane );
+ tableHeaderButtonChanged( xTreeTable1ScrollPane );
+ }
+
+ private void tableHeaderButtonChanged( JScrollPane scrollPane ) {
boolean show = tableHeaderButtonCheckBox.isSelected();
JButton button = null;
if( show ) {
button = new JButton( new FlatMenuArrowIcon() );
+ button.applyComponentOrientation( getComponentOrientation() );
button.addActionListener( e -> {
JOptionPane.showMessageDialog( this, "hello" );
} );
}
- scrollPane5.setCorner( JScrollPane.UPPER_TRAILING_CORNER, button );
+ scrollPane.setCorner( JScrollPane.UPPER_TRAILING_CORNER, button );
}
private void rowSelectionChanged() {
- table1.setRowSelectionAllowed( rowSelectionCheckBox.isSelected() );
+ for( JTable table : allTables )
+ table.setRowSelectionAllowed( rowSelectionCheckBox.isSelected() );
}
private void columnSelectionChanged() {
- table1.setColumnSelectionAllowed( columnSelectionCheckBox.isSelected() );
+ for( JTable table : allTables )
+ table.setColumnSelectionAllowed( columnSelectionCheckBox.isSelected() );
}
private void showHorizontalLinesChanged() {
- table1.setShowHorizontalLines( showHorizontalLinesCheckBox.isSelected() );
+ for( JTable table : allTablesInclRowHeader )
+ table.setShowHorizontalLines( showHorizontalLinesCheckBox.isSelected() );
}
private void showVerticalLinesChanged() {
- table1.setShowVerticalLines( showVerticalLinesCheckBox.isSelected() );
+ for( JTable table : allTablesInclRowHeader )
+ table.setShowVerticalLines( showVerticalLinesCheckBox.isSelected() );
}
private void intercellSpacingChanged() {
- table1.setIntercellSpacing( intercellSpacingCheckBox.isSelected() ? new Dimension( 1, 1 ) : new Dimension() );
+ for( JTable table : allTablesInclRowHeader )
+ table.setIntercellSpacing( intercellSpacingCheckBox.isSelected() ? new Dimension( 1, 1 ) : new Dimension() );
}
private void redGridColorChanged() {
- table1.setGridColor( redGridColorCheckBox.isSelected() ? Color.red : UIManager.getColor( "Table.gridColor" ) );
+ for( JTable table : allTablesInclRowHeader )
+ table.setGridColor( redGridColorCheckBox.isSelected() ? Color.red : UIManager.getColor( "Table.gridColor" ) );
+ }
+
+ private void rowHeaderChanged() {
+ if( rowHeaderCheckBox.isSelected() ) {
+ TestTableRowHeaderModel rowHeaderModel = new TestTableRowHeaderModel( tableModel );
+ rowHeaderTable1 = new JTable( rowHeaderModel );
+ rowHeaderTable1.setPreferredScrollableViewportSize( UIScale.scale( new Dimension( 50, 50 ) ) );
+ rowHeaderTable1.setSelectionModel( table1.getSelectionModel() );
+
+ DefaultTableCellRenderer rowHeaderRenderer = new DefaultTableCellRenderer();
+ rowHeaderRenderer.setHorizontalAlignment( JLabel.CENTER );
+ rowHeaderTable1.setDefaultRenderer( Object.class, rowHeaderRenderer );
+ table1ScrollPane.setRowHeaderView( rowHeaderTable1 );
+
+ JViewport headerViewport = new JViewport();
+ headerViewport.setView( rowHeaderTable1.getTableHeader() );
+ table1ScrollPane.setCorner( ScrollPaneConstants.UPPER_LEADING_CORNER, headerViewport );
+
+ table1ScrollPane.applyComponentOrientation( getComponentOrientation() );
+
+ allTablesInclRowHeader.add( rowHeaderTable1 );
+
+ showHorizontalLinesChanged();
+ showVerticalLinesChanged();
+ intercellSpacingChanged();
+ redGridColorChanged();
+ } else {
+ table1ScrollPane.setRowHeader( null );
+ table1ScrollPane.setCorner( ScrollPaneConstants.UPPER_LEADING_CORNER, null );
+ allTablesInclRowHeader.remove( rowHeaderTable1 );
+
+ ((TestTableRowHeaderModel)rowHeaderTable1.getModel()).dispose();
+ rowHeaderTable1 = null;
+ }
+ }
+
+ private void treeRendererChanged() {
+ Object sel = treeRendererComboBox.getSelectedItem();
+ if( !(sel instanceof String) )
+ return;
+
+ JTree[] trees = new JTree[] { tree1, tree2, xTree1 };
+ switch( (String) sel ) {
+ case "default":
+ for( JTree tree : trees )
+ tree.setCellRenderer( new DefaultTreeCellRenderer() );
+ break;
+
+ case "defaultSubclass":
+ for( JTree tree : trees )
+ tree.setCellRenderer( new TestDefaultTreeCellRenderer() );
+ break;
+
+ case "label":
+ for( JTree tree : trees )
+ tree.setCellRenderer( new TestLabelTreeCellRenderer() );
+ break;
+
+ case "swingxDefault":
+ for( JTree tree : trees )
+ tree.setCellRenderer( new DefaultTreeRenderer() );
+ break;
+
+ case "jideCheckBox":
+ for( JTree tree : trees )
+ tree.setCellRenderer( new CheckBoxTreeCellRenderer( new DefaultTreeCellRenderer() ) );
+ break;
+
+ case "jideStyled":
+ for( JTree tree : trees )
+ tree.setCellRenderer( new StyledTreeCellRenderer() );
+ break;
+ }
+ }
+
+ private void treeWideSelectionChanged() {
+ boolean wideSelection = treeWideSelectionCheckBox.isSelected();
+ for( JTree tree : allTrees )
+ tree.putClientProperty( FlatClientProperties.TREE_WIDE_SELECTION, wideSelection );
+ }
+
+ private void treePaintSelectionChanged() {
+ boolean paintSelection = treePaintSelectionCheckBox.isSelected();
+ for( JTree tree : allTrees )
+ tree.putClientProperty( FlatClientProperties.TREE_PAINT_SELECTION, paintSelection );
+ }
+
+ @Override
+ public void applyComponentOrientation( ComponentOrientation o ) {
+ super.applyComponentOrientation( o );
+
+ // swap upper right and left corners (other corners are not used in this app)
+ Component leftCorner = table1ScrollPane.getCorner( ScrollPaneConstants.UPPER_LEFT_CORNER );
+ Component rightCorner = table1ScrollPane.getCorner( ScrollPaneConstants.UPPER_RIGHT_CORNER );
+ table1ScrollPane.setCorner( ScrollPaneConstants.UPPER_LEFT_CORNER, null );
+ table1ScrollPane.setCorner( ScrollPaneConstants.UPPER_RIGHT_CORNER, null );
+ table1ScrollPane.setCorner( ScrollPaneConstants.UPPER_LEFT_CORNER, rightCorner );
+ table1ScrollPane.setCorner( ScrollPaneConstants.UPPER_RIGHT_CORNER, leftCorner );
}
@Override
@@ -200,38 +393,62 @@ public class FlatComponents2Test
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
- JLabel textFieldLabel = new JLabel();
JTextField textField1 = new JTextField();
JTextField textField2 = new JTextField();
+ JTextField textField3 = new JTextField();
+ JPanel panel1 = new JPanel();
JLabel listLabel = new JLabel();
+ JLabel listRowCountLabel = new JLabel();
+ listRowCountSpinner = new JSpinner();
JScrollPane scrollPane1 = new JScrollPane();
list1 = new JList<>();
JScrollPane scrollPane2 = new JScrollPane();
list2 = new JList<>();
- JPanel listOptionsPanel = new JPanel();
- JLabel listRowCountLabel = new JLabel();
- listRowCountSpinner = new JSpinner();
+ JPanel panel3 = new JPanel();
+ JLabel tableLabel = new JLabel();
+ JLabel tableRowCountLabel = new JLabel();
+ tableRowCountSpinner = new JSpinner();
+ table1ScrollPane = new JScrollPane();
+ table1 = new JTable();
+ JPanel panel2 = new JPanel();
JLabel treeLabel = new JLabel();
+ JLabel treeRowCountLabel = new JLabel();
+ treeRowCountSpinner = new JSpinner();
JScrollPane scrollPane3 = new JScrollPane();
tree1 = new JTree();
JScrollPane scrollPane4 = new JScrollPane();
tree2 = new JTree();
- JPanel treeOptionsPanel = new JPanel();
- JLabel treeRowCountLabel = new JLabel();
- treeRowCountSpinner = new JSpinner();
- JLabel tableLabel = new JLabel();
- scrollPane5 = new JScrollPane();
- table1 = new JTable();
- JPanel tableOptionsPanel = new JPanel();
- JLabel tableRowCountLabel = new JLabel();
- tableRowCountSpinner = new JSpinner();
- showHorizontalLinesCheckBox = new JCheckBox();
- showVerticalLinesCheckBox = new JCheckBox();
- intercellSpacingCheckBox = new JCheckBox();
- redGridColorCheckBox = new JCheckBox();
- rowSelectionCheckBox = new JCheckBox();
- columnSelectionCheckBox = new JCheckBox();
+ JLabel label1 = new JLabel();
+ xTable1ScrollPane = new JScrollPane();
+ xTable1 = new JXTable();
+ JPanel panel4 = new JPanel();
+ JLabel label3 = new JLabel();
+ JLabel label4 = new JLabel();
+ JLabel label5 = new JLabel();
+ JScrollPane scrollPane5 = new JScrollPane();
+ xTree1 = new JXTree();
+ JScrollPane scrollPane6 = new JScrollPane();
+ checkBoxTree1 = new CheckBoxTree();
+ JLabel label2 = new JLabel();
+ xTreeTable1ScrollPane = new JScrollPane();
+ xTreeTable1 = new JXTreeTable();
+ JPanel panel5 = new JPanel();
dndCheckBox = new JCheckBox();
+ JPanel treeOptionsPanel = new JPanel();
+ JLabel treeRendererLabel = new JLabel();
+ treeRendererComboBox = new JComboBox<>();
+ treeWideSelectionCheckBox = new JCheckBox();
+ treePaintSelectionCheckBox = new JCheckBox();
+ JPanel tableOptionsPanel = new JPanel();
+ JLabel autoResizeModeLabel = new JLabel();
+ autoResizeModeField = new JComboBox<>();
+ showHorizontalLinesCheckBox = new JCheckBox();
+ rowSelectionCheckBox = new JCheckBox();
+ showVerticalLinesCheckBox = new JCheckBox();
+ columnSelectionCheckBox = new JCheckBox();
+ intercellSpacingCheckBox = new JCheckBox();
+ rowHeaderCheckBox = new JCheckBox();
+ redGridColorCheckBox = new JCheckBox();
tableHeaderButtonCheckBox = new JCheckBox();
//======== this ========
@@ -239,31 +456,57 @@ public class FlatComponents2Test
"ltr,insets dialog,hidemode 3",
// columns
"[]" +
- "[200,fill]" +
- "[200,fill]" +
- "[fill]",
+ "[200,grow,sizegroup 1,fill]" +
+ "[200,grow,sizegroup 1,fill]" +
+ "[fill]" +
+ "[200,grow,sizegroup 1,fill]" +
+ "[200,grow,sizegroup 1,fill]",
// rows
"[]" +
"[150,grow,sizegroup 1,fill]" +
"[150,grow,sizegroup 1,fill]" +
- "[150,grow,sizegroup 1,fill]"));
-
- //---- textFieldLabel ----
- textFieldLabel.setText("JTextField:");
- add(textFieldLabel, "cell 0 0");
+ "[150,grow,sizegroup 1,fill]" +
+ "[fill]"));
//---- textField1 ----
- textField1.setText("editable");
+ textField1.setText("item");
add(textField1, "cell 1 0,growx");
//---- textField2 ----
- textField2.setText("disabled");
+ textField2.setText("item (check vertical text alignment)");
textField2.setEnabled(false);
add(textField2, "cell 2 0,growx");
- //---- listLabel ----
- listLabel.setText("JList:");
- add(listLabel, "cell 0 1,aligny top,growy 0");
+ //---- textField3 ----
+ textField3.setText("item");
+ add(textField3, "cell 4 0 2 1,growx");
+
+ //======== panel1 ========
+ {
+ panel1.setLayout(new MigLayout(
+ "ltr,insets 0,hidemode 3",
+ // columns
+ "[fill]",
+ // rows
+ "[]" +
+ "[grow]" +
+ "[]" +
+ "[]"));
+
+ //---- listLabel ----
+ listLabel.setText("JList:");
+ panel1.add(listLabel, "cell 0 0,aligny top,growy 0");
+
+ //---- listRowCountLabel ----
+ listRowCountLabel.setText("Row count:");
+ panel1.add(listRowCountLabel, "cell 0 2");
+
+ //---- listRowCountSpinner ----
+ listRowCountSpinner.setModel(new SpinnerNumberModel(20, 0, null, 10));
+ listRowCountSpinner.addChangeListener(e -> listRowCountChanged());
+ panel1.add(listRowCountSpinner, "cell 0 3");
+ }
+ add(panel1, "cell 0 1");
//======== scrollPane1 ========
{
@@ -280,30 +523,68 @@ public class FlatComponents2Test
}
add(scrollPane2, "cell 2 1");
- //======== listOptionsPanel ========
+ //======== panel3 ========
{
- listOptionsPanel.setLayout(new MigLayout(
- "hidemode 3",
+ panel3.setLayout(new MigLayout(
+ "insets 0,hidemode 3",
// columns
- "[fill]" +
- "[90,fill]",
+ "[fill]",
// rows
+ "[]" +
+ "[grow]" +
+ "[]" +
"[]"));
- //---- listRowCountLabel ----
- listRowCountLabel.setText("Row count:");
- listOptionsPanel.add(listRowCountLabel, "cell 0 0");
+ //---- tableLabel ----
+ tableLabel.setText("JTable:");
+ panel3.add(tableLabel, "cell 0 0");
- //---- listRowCountSpinner ----
- listRowCountSpinner.setModel(new SpinnerNumberModel(20, 0, null, 10));
- listRowCountSpinner.addChangeListener(e -> listRowCountChanged());
- listOptionsPanel.add(listRowCountSpinner, "cell 1 0");
+ //---- tableRowCountLabel ----
+ tableRowCountLabel.setText("Row count:");
+ panel3.add(tableRowCountLabel, "cell 0 2");
+
+ //---- tableRowCountSpinner ----
+ tableRowCountSpinner.setModel(new SpinnerNumberModel(20, 0, null, 5));
+ tableRowCountSpinner.addChangeListener(e -> tableRowCountChanged());
+ panel3.add(tableRowCountSpinner, "cell 0 3");
}
- add(listOptionsPanel, "cell 3 1");
+ add(panel3, "cell 3 1");
- //---- treeLabel ----
- treeLabel.setText("JTree:");
- add(treeLabel, "cell 0 2,aligny top,growy 0");
+ //======== table1ScrollPane ========
+ {
+
+ //---- table1 ----
+ table1.setAutoCreateRowSorter(true);
+ table1ScrollPane.setViewportView(table1);
+ }
+ add(table1ScrollPane, "cell 4 1 2 1,width 300");
+
+ //======== panel2 ========
+ {
+ panel2.setLayout(new MigLayout(
+ "insets 0,hidemode 3",
+ // columns
+ "[fill]",
+ // rows
+ "[]" +
+ "[grow]" +
+ "[]" +
+ "[]"));
+
+ //---- treeLabel ----
+ treeLabel.setText("JTree:");
+ panel2.add(treeLabel, "cell 0 0,aligny top,growy 0");
+
+ //---- treeRowCountLabel ----
+ treeRowCountLabel.setText("Row count:");
+ panel2.add(treeRowCountLabel, "cell 0 2");
+
+ //---- treeRowCountSpinner ----
+ treeRowCountSpinner.setModel(new SpinnerNumberModel(20, 20, null, 20));
+ treeRowCountSpinner.addChangeListener(e -> treeRowCountChanged());
+ panel2.add(treeRowCountSpinner, "cell 0 3");
+ }
+ add(panel2, "cell 0 2");
//======== scrollPane3 ========
{
@@ -324,130 +605,227 @@ public class FlatComponents2Test
}
add(scrollPane4, "cell 2 2");
- //======== treeOptionsPanel ========
+ //---- label1 ----
+ label1.setText("JXTable:");
+ add(label1, "cell 3 2,aligny top,growy 0");
+
+ //======== xTable1ScrollPane ========
{
- treeOptionsPanel.setLayout(new MigLayout(
- "hidemode 3",
+ xTable1ScrollPane.setViewportView(xTable1);
+ }
+ add(xTable1ScrollPane, "cell 4 2 2 1");
+
+ //======== panel4 ========
+ {
+ panel4.setLayout(new MigLayout(
+ "insets 0,hidemode 3",
// columns
- "[fill]" +
- "[90,fill]",
+ "[fill]",
// rows
+ "[]" +
+ "[]0" +
"[]"));
- //---- treeRowCountLabel ----
- treeRowCountLabel.setText("Row count:");
- treeOptionsPanel.add(treeRowCountLabel, "cell 0 0");
+ //---- label3 ----
+ label3.setText("JXTree:");
+ panel4.add(label3, "cell 0 0");
- //---- treeRowCountSpinner ----
- treeRowCountSpinner.setModel(new SpinnerNumberModel(20, 20, null, 20));
- treeRowCountSpinner.addChangeListener(e -> treeRowCountChanged());
- treeOptionsPanel.add(treeRowCountSpinner, "cell 1 0");
+ //---- label4 ----
+ label4.setText("CheckBoxTree:");
+ panel4.add(label4, "cell 0 1");
+
+ //---- label5 ----
+ label5.setText("(JIDE)");
+ panel4.add(label5, "cell 0 2");
}
- add(treeOptionsPanel, "cell 3 2");
-
- //---- tableLabel ----
- tableLabel.setText("JTable:");
- add(tableLabel, "cell 0 3,aligny top,growy 0");
+ add(panel4, "cell 0 3");
//======== scrollPane5 ========
{
-
- //---- table1 ----
- table1.setAutoCreateRowSorter(true);
- scrollPane5.setViewportView(table1);
+ scrollPane5.setViewportView(xTree1);
}
- add(scrollPane5, "cell 1 3 2 1,width 300");
+ add(scrollPane5, "cell 1 3");
- //======== tableOptionsPanel ========
+ //======== scrollPane6 ========
{
- tableOptionsPanel.setLayout(new MigLayout(
+ scrollPane6.setViewportView(checkBoxTree1);
+ }
+ add(scrollPane6, "cell 2 3");
+
+ //---- label2 ----
+ label2.setText("JXTreeTable:");
+ add(label2, "cell 3 3,aligny top,growy 0");
+
+ //======== xTreeTable1ScrollPane ========
+ {
+ xTreeTable1ScrollPane.setViewportView(xTreeTable1);
+ }
+ add(xTreeTable1ScrollPane, "cell 4 3 2 1");
+
+ //======== panel5 ========
+ {
+ panel5.setBorder(new TitledBorder("General Control"));
+ panel5.setLayout(new MigLayout(
"hidemode 3",
// columns
- "[]" +
- "[90,fill]",
+ "[fill]" +
+ "[fill]",
// rows
- "[]" +
- "[]0" +
- "[]0" +
- "[]0" +
- "[]0" +
- "[]0" +
- "[]0" +
- "[]0" +
"[]"));
- //---- tableRowCountLabel ----
- tableRowCountLabel.setText("Row count:");
- tableOptionsPanel.add(tableRowCountLabel, "cell 0 0");
-
- //---- tableRowCountSpinner ----
- tableRowCountSpinner.setModel(new SpinnerNumberModel(20, 0, null, 10));
- tableRowCountSpinner.addChangeListener(e -> tableRowCountChanged());
- tableOptionsPanel.add(tableRowCountSpinner, "cell 1 0");
-
- //---- showHorizontalLinesCheckBox ----
- showHorizontalLinesCheckBox.setText("show horizontal lines");
- showHorizontalLinesCheckBox.addActionListener(e -> showHorizontalLinesChanged());
- tableOptionsPanel.add(showHorizontalLinesCheckBox, "cell 0 1 2 1");
-
- //---- showVerticalLinesCheckBox ----
- showVerticalLinesCheckBox.setText("show vertical lines");
- showVerticalLinesCheckBox.addActionListener(e -> showVerticalLinesChanged());
- tableOptionsPanel.add(showVerticalLinesCheckBox, "cell 0 2 2 1");
-
- //---- intercellSpacingCheckBox ----
- intercellSpacingCheckBox.setText("intercell spacing");
- intercellSpacingCheckBox.addActionListener(e -> intercellSpacingChanged());
- tableOptionsPanel.add(intercellSpacingCheckBox, "cell 0 3 2 1");
-
- //---- redGridColorCheckBox ----
- redGridColorCheckBox.setText("red grid color");
- redGridColorCheckBox.addActionListener(e -> redGridColorChanged());
- tableOptionsPanel.add(redGridColorCheckBox, "cell 0 4 2 1");
-
- //---- rowSelectionCheckBox ----
- rowSelectionCheckBox.setText("row selection");
- rowSelectionCheckBox.setSelected(true);
- rowSelectionCheckBox.addActionListener(e -> rowSelectionChanged());
- tableOptionsPanel.add(rowSelectionCheckBox, "cell 0 5 2 1");
-
- //---- columnSelectionCheckBox ----
- columnSelectionCheckBox.setText("column selection");
- columnSelectionCheckBox.addActionListener(e -> columnSelectionChanged());
- tableOptionsPanel.add(columnSelectionCheckBox, "cell 0 6 2 1");
-
//---- dndCheckBox ----
dndCheckBox.setText("enable drag and drop");
dndCheckBox.setMnemonic('D');
dndCheckBox.addActionListener(e -> dndChanged());
- tableOptionsPanel.add(dndCheckBox, "cell 0 7 2 1");
+ panel5.add(dndCheckBox, "cell 0 0");
+ }
+ add(panel5, "cell 1 4");
+
+ //======== treeOptionsPanel ========
+ {
+ treeOptionsPanel.setBorder(new TitledBorder("JTree Control"));
+ treeOptionsPanel.setLayout(new MigLayout(
+ "hidemode 3",
+ // columns
+ "[fill]",
+ // rows
+ "[]" +
+ "[]0" +
+ "[]"));
+
+ //---- treeRendererLabel ----
+ treeRendererLabel.setText("Renderer:");
+ treeOptionsPanel.add(treeRendererLabel, "cell 0 0");
+
+ //---- treeRendererComboBox ----
+ treeRendererComboBox.setModel(new DefaultComboBoxModel<>(new String[] {
+ "default",
+ "defaultSubclass",
+ "label",
+ "swingxDefault",
+ "jideCheckBox",
+ "jideStyled"
+ }));
+ treeRendererComboBox.addActionListener(e -> treeRendererChanged());
+ treeOptionsPanel.add(treeRendererComboBox, "cell 0 0");
+
+ //---- treeWideSelectionCheckBox ----
+ treeWideSelectionCheckBox.setText("wide selection");
+ treeWideSelectionCheckBox.addActionListener(e -> treeWideSelectionChanged());
+ treeOptionsPanel.add(treeWideSelectionCheckBox, "cell 0 1");
+
+ //---- treePaintSelectionCheckBox ----
+ treePaintSelectionCheckBox.setText("paint selection");
+ treePaintSelectionCheckBox.setSelected(true);
+ treePaintSelectionCheckBox.addActionListener(e -> treePaintSelectionChanged());
+ treeOptionsPanel.add(treePaintSelectionCheckBox, "cell 0 2");
+ }
+ add(treeOptionsPanel, "cell 2 4");
+
+ //======== tableOptionsPanel ========
+ {
+ tableOptionsPanel.setBorder(new TitledBorder("JTable Control"));
+ tableOptionsPanel.setLayout(new MigLayout(
+ "hidemode 3",
+ // columns
+ "[]" +
+ "[fill]",
+ // rows
+ "[]" +
+ "[]0" +
+ "[]0" +
+ "[]0" +
+ "[]0"));
+
+ //---- autoResizeModeLabel ----
+ autoResizeModeLabel.setText("Auto resize mode:");
+ tableOptionsPanel.add(autoResizeModeLabel, "cell 0 0 2 1");
+
+ //---- autoResizeModeField ----
+ autoResizeModeField.setModel(new DefaultComboBoxModel<>(new String[] {
+ "off",
+ "nextColumn",
+ "subsequentColumns",
+ "lastColumn",
+ "allColumns"
+ }));
+ autoResizeModeField.setSelectedIndex(2);
+ autoResizeModeField.addActionListener(e -> autoResizeModeChanged());
+ tableOptionsPanel.add(autoResizeModeField, "cell 0 0 2 1");
+
+ //---- showHorizontalLinesCheckBox ----
+ showHorizontalLinesCheckBox.setText("show horizontal lines");
+ showHorizontalLinesCheckBox.addActionListener(e -> showHorizontalLinesChanged());
+ tableOptionsPanel.add(showHorizontalLinesCheckBox, "cell 0 1");
+
+ //---- rowSelectionCheckBox ----
+ rowSelectionCheckBox.setText("row selection");
+ rowSelectionCheckBox.setSelected(true);
+ rowSelectionCheckBox.addActionListener(e -> rowSelectionChanged());
+ tableOptionsPanel.add(rowSelectionCheckBox, "cell 1 1");
+
+ //---- showVerticalLinesCheckBox ----
+ showVerticalLinesCheckBox.setText("show vertical lines");
+ showVerticalLinesCheckBox.addActionListener(e -> showVerticalLinesChanged());
+ tableOptionsPanel.add(showVerticalLinesCheckBox, "cell 0 2");
+
+ //---- columnSelectionCheckBox ----
+ columnSelectionCheckBox.setText("column selection");
+ columnSelectionCheckBox.addActionListener(e -> columnSelectionChanged());
+ tableOptionsPanel.add(columnSelectionCheckBox, "cell 1 2");
+
+ //---- intercellSpacingCheckBox ----
+ intercellSpacingCheckBox.setText("intercell spacing");
+ intercellSpacingCheckBox.addActionListener(e -> intercellSpacingChanged());
+ tableOptionsPanel.add(intercellSpacingCheckBox, "cell 0 3");
+
+ //---- rowHeaderCheckBox ----
+ rowHeaderCheckBox.setText("row header");
+ rowHeaderCheckBox.addActionListener(e -> rowHeaderChanged());
+ tableOptionsPanel.add(rowHeaderCheckBox, "cell 1 3");
+
+ //---- redGridColorCheckBox ----
+ redGridColorCheckBox.setText("red grid color");
+ redGridColorCheckBox.addActionListener(e -> redGridColorChanged());
+ tableOptionsPanel.add(redGridColorCheckBox, "cell 0 4");
//---- tableHeaderButtonCheckBox ----
tableHeaderButtonCheckBox.setText("show button in table header");
tableHeaderButtonCheckBox.addActionListener(e -> tableHeaderButtonChanged());
- tableOptionsPanel.add(tableHeaderButtonCheckBox, "cell 0 8 2 1");
+ tableOptionsPanel.add(tableHeaderButtonCheckBox, "cell 1 4");
}
- add(tableOptionsPanel, "cell 3 3");
+ add(tableOptionsPanel, "cell 4 4 2 1");
// JFormDesigner - End of component initialization //GEN-END:initComponents
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
+ private JSpinner listRowCountSpinner;
private JList list1;
private JList list2;
- private JSpinner listRowCountSpinner;
+ private JSpinner tableRowCountSpinner;
+ private JScrollPane table1ScrollPane;
+ private JTable table1;
+ private JSpinner treeRowCountSpinner;
private JTree tree1;
private JTree tree2;
- private JSpinner treeRowCountSpinner;
- private JScrollPane scrollPane5;
- private JTable table1;
- private JSpinner tableRowCountSpinner;
- private JCheckBox showHorizontalLinesCheckBox;
- private JCheckBox showVerticalLinesCheckBox;
- private JCheckBox intercellSpacingCheckBox;
- private JCheckBox redGridColorCheckBox;
- private JCheckBox rowSelectionCheckBox;
- private JCheckBox columnSelectionCheckBox;
+ private JScrollPane xTable1ScrollPane;
+ private JXTable xTable1;
+ private JXTree xTree1;
+ private CheckBoxTree checkBoxTree1;
+ private JScrollPane xTreeTable1ScrollPane;
+ private JXTreeTable xTreeTable1;
private JCheckBox dndCheckBox;
+ private JComboBox treeRendererComboBox;
+ private JCheckBox treeWideSelectionCheckBox;
+ private JCheckBox treePaintSelectionCheckBox;
+ private JComboBox autoResizeModeField;
+ private JCheckBox showHorizontalLinesCheckBox;
+ private JCheckBox rowSelectionCheckBox;
+ private JCheckBox showVerticalLinesCheckBox;
+ private JCheckBox columnSelectionCheckBox;
+ private JCheckBox intercellSpacingCheckBox;
+ private JCheckBox rowHeaderCheckBox;
+ private JCheckBox redGridColorCheckBox;
private JCheckBox tableHeaderButtonCheckBox;
// JFormDesigner - End of variables declaration //GEN-END:variables
@@ -735,4 +1113,83 @@ public class FlatComponents2Test
fireTableCellUpdated( rowIndex, columnIndex );
}
}
+
+ //---- TestTableRowHeaderModel --------------------------------------------
+
+ private class TestTableRowHeaderModel
+ extends AbstractTableModel
+ implements TableModelListener
+ {
+ private final TableModel model;
+
+ TestTableRowHeaderModel( TableModel model ) {
+ this.model = model;
+
+ model.addTableModelListener( this );
+ }
+
+ void dispose() {
+ model.removeTableModelListener( this );
+ }
+
+ @Override
+ public int getRowCount() {
+ return model.getRowCount();
+ }
+
+ @Override
+ public int getColumnCount() {
+ return 1;
+ }
+
+ @Override
+ public String getColumnName( int columnIndex ) {
+ return "Row #";
+ }
+
+ @Override
+ public Object getValueAt( int rowIndex, int columnIndex ) {
+ return rowIndex + 1;
+ }
+
+ @Override
+ public void tableChanged( TableModelEvent e ) {
+ switch( e.getType() ) {
+ case TableModelEvent.INSERT:
+ fireTableRowsInserted( e.getFirstRow(), e.getLastRow() );
+ break;
+
+ case TableModelEvent.DELETE:
+ fireTableRowsDeleted( e.getFirstRow(), e.getLastRow() );
+ break;
+ }
+ }
+ }
+
+ //---- class TestDefaultTreeCellRenderer ----------------------------------
+
+ private static class TestDefaultTreeCellRenderer
+ extends DefaultTreeCellRenderer
+ {
+ public TestDefaultTreeCellRenderer() {
+ setBackgroundNonSelectionColor( Color.red );
+ setBackgroundSelectionColor( Color.green );
+ setTextSelectionColor( Color.blue );
+ }
+ }
+
+ //---- class TestLabelTreeCellRenderer ------------------------------------
+
+ private static class TestLabelTreeCellRenderer
+ extends JLabel
+ implements TreeCellRenderer
+ {
+ @Override
+ public Component getTreeCellRendererComponent( JTree tree, Object value, boolean selected, boolean expanded,
+ boolean leaf, int row, boolean hasFocus )
+ {
+ setText( String.valueOf( value ) );
+ return this;
+ }
+ }
}
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 96e3a3ac..bb5d3db7 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.2.0.298" Java: "14" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -8,34 +8,63 @@ new FormModel {
}
add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "ltr,insets dialog,hidemode 3"
- "$columnConstraints": "[][200,fill][200,fill][fill]"
- "$rowConstraints": "[][150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill]"
+ "$columnConstraints": "[][200,grow,sizegroup 1,fill][200,grow,sizegroup 1,fill][fill][200,grow,sizegroup 1,fill][200,grow,sizegroup 1,fill]"
+ "$rowConstraints": "[][150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill][150,grow,sizegroup 1,fill][fill]"
} ) {
name: "this"
- add( new FormComponent( "javax.swing.JLabel" ) {
- name: "textFieldLabel"
- "text": "JTextField:"
- }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 0"
- } )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField1"
- "text": "editable"
+ "text": "item"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 0,growx"
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField2"
- "text": "disabled"
+ "text": "item (check vertical text alignment)"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 0,growx"
} )
- add( new FormComponent( "javax.swing.JLabel" ) {
- name: "listLabel"
- "text": "JList:"
+ add( new FormComponent( "javax.swing.JTextField" ) {
+ name: "textField3"
+ "text": "item"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 1,aligny top,growy 0"
+ "value": "cell 4 0 2 1,growx"
+ } )
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$columnConstraints": "[fill]"
+ "$rowConstraints": "[][grow][][]"
+ "$layoutConstraints": "ltr,insets 0,hidemode 3"
+ } ) {
+ name: "panel1"
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "listLabel"
+ "text": "JList:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0,aligny top,growy 0"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "listRowCountLabel"
+ "text": "Row count:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
+ add( new FormComponent( "javax.swing.JSpinner" ) {
+ name: "listRowCountSpinner"
+ "model": new javax.swing.SpinnerNumberModel {
+ minimum: 0
+ stepSize: 10
+ value: 20
+ }
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "listRowCountChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 3"
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 1"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane1"
@@ -63,39 +92,89 @@ new FormModel {
"value": "cell 2 1"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
- "$layoutConstraints": "hidemode 3"
- "$columnConstraints": "[fill][90,fill]"
- "$rowConstraints": "[]"
+ "$layoutConstraints": "insets 0,hidemode 3"
+ "$columnConstraints": "[fill]"
+ "$rowConstraints": "[][grow][][]"
} ) {
- name: "listOptionsPanel"
+ name: "panel3"
add( new FormComponent( "javax.swing.JLabel" ) {
- name: "listRowCountLabel"
- "text": "Row count:"
+ name: "tableLabel"
+ "text": "JTable:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
} )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "tableRowCountLabel"
+ "text": "Row count:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
add( new FormComponent( "javax.swing.JSpinner" ) {
- name: "listRowCountSpinner"
- "model": &SpinnerNumberModel0 new javax.swing.SpinnerNumberModel {
+ name: "tableRowCountSpinner"
+ "model": new javax.swing.SpinnerNumberModel {
minimum: 0
- stepSize: 10
+ stepSize: 5
value: 20
}
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
- addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "listRowCountChanged", false ) )
+ addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "tableRowCountChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 0"
+ "value": "cell 0 3"
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 1"
} )
- add( new FormComponent( "javax.swing.JLabel" ) {
- name: "treeLabel"
- "text": "JTree:"
+ add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
+ name: "table1ScrollPane"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ add( new FormComponent( "javax.swing.JTable" ) {
+ name: "table1"
+ "autoCreateRowSorter": true
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ } )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 2,aligny top,growy 0"
+ "value": "cell 4 1 2 1,width 300"
+ } )
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$layoutConstraints": "insets 0,hidemode 3"
+ "$columnConstraints": "[fill]"
+ "$rowConstraints": "[][grow][][]"
+ } ) {
+ name: "panel2"
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "treeLabel"
+ "text": "JTree:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0,aligny top,growy 0"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "treeRowCountLabel"
+ "text": "Row count:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
+ add( new FormComponent( "javax.swing.JSpinner" ) {
+ name: "treeRowCountSpinner"
+ "model": new javax.swing.SpinnerNumberModel {
+ minimum: 20
+ stepSize: 20
+ value: 20
+ }
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "treeRowCountChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 3"
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
name: "scrollPane3"
@@ -122,77 +201,202 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 2"
} )
- add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
- "$layoutConstraints": "hidemode 3"
- "$columnConstraints": "[fill][90,fill]"
- "$rowConstraints": "[]"
- } ) {
- name: "treeOptionsPanel"
- add( new FormComponent( "javax.swing.JLabel" ) {
- name: "treeRowCountLabel"
- "text": "Row count:"
- }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 0"
- } )
- add( new FormComponent( "javax.swing.JSpinner" ) {
- name: "treeRowCountSpinner"
- "model": new javax.swing.SpinnerNumberModel {
- minimum: 20
- stepSize: 20
- value: 20
- }
- auxiliary() {
- "JavaCodeGenerator.variableLocal": false
- }
- addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "treeRowCountChanged", false ) )
- }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 0"
- } )
- }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 3 2"
- } )
add( new FormComponent( "javax.swing.JLabel" ) {
- name: "tableLabel"
- "text": "JTable:"
+ name: "label1"
+ "text": "JXTable:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 3,aligny top,growy 0"
+ "value": "cell 3 2,aligny top,growy 0"
} )
add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
- name: "scrollPane5"
+ name: "xTable1ScrollPane"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
- add( new FormComponent( "javax.swing.JTable" ) {
- name: "table1"
- "autoCreateRowSorter": true
+ add( new FormComponent( "org.jdesktop.swingx.JXTable" ) {
+ name: "xTable1"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 3 2 1,width 300"
+ "value": "cell 4 2 2 1"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
- "$layoutConstraints": "hidemode 3"
- "$columnConstraints": "[][90,fill]"
- "$rowConstraints": "[][]0[]0[]0[]0[]0[]0[]0[]"
+ "$layoutConstraints": "insets 0,hidemode 3"
+ "$columnConstraints": "[fill]"
+ "$rowConstraints": "[][]0[]"
} ) {
- name: "tableOptionsPanel"
+ name: "panel4"
add( new FormComponent( "javax.swing.JLabel" ) {
- name: "tableRowCountLabel"
- "text": "Row count:"
+ name: "label3"
+ "text": "JXTree:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
} )
- add( new FormComponent( "javax.swing.JSpinner" ) {
- name: "tableRowCountSpinner"
- "model": #SpinnerNumberModel0
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label4"
+ "text": "CheckBoxTree:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label5"
+ "text": "(JIDE)"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 3"
+ } )
+ add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
+ name: "scrollPane5"
+ add( new FormComponent( "org.jdesktop.swingx.JXTree" ) {
+ name: "xTree1"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
- addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "tableRowCountChanged", false ) )
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 3"
+ } )
+ add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
+ name: "scrollPane6"
+ add( new FormComponent( "com.jidesoft.swing.CheckBoxTree" ) {
+ name: "checkBoxTree1"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 3"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label2"
+ "text": "JXTreeTable:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 3,aligny top,growy 0"
+ } )
+ add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
+ name: "xTreeTable1ScrollPane"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ add( new FormComponent( "org.jdesktop.swingx.JXTreeTable" ) {
+ name: "xTreeTable1"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 3 2 1"
+ } )
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$layoutConstraints": "hidemode 3"
+ "$columnConstraints": "[fill][fill]"
+ "$rowConstraints": "[]"
+ } ) {
+ name: "panel5"
+ "border": new javax.swing.border.TitledBorder( "General Control" )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "dndCheckBox"
+ "text": "enable drag and drop"
+ "mnemonic": 68
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "dndChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 0"
+ "value": "cell 0 0"
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 4"
+ } )
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$layoutConstraints": "hidemode 3"
+ "$columnConstraints": "[fill]"
+ "$rowConstraints": "[][]0[]"
+ } ) {
+ name: "treeOptionsPanel"
+ "border": new javax.swing.border.TitledBorder( "JTree Control" )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "treeRendererLabel"
+ "text": "Renderer:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
+ } )
+ add( new FormComponent( "javax.swing.JComboBox" ) {
+ name: "treeRendererComboBox"
+ "model": new javax.swing.DefaultComboBoxModel {
+ selectedItem: "default"
+ addElement( "default" )
+ addElement( "defaultSubclass" )
+ addElement( "label" )
+ addElement( "swingxDefault" )
+ addElement( "jideCheckBox" )
+ addElement( "jideStyled" )
+ }
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "treeRendererChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "treeWideSelectionCheckBox"
+ "text": "wide selection"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "treeWideSelectionChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 1"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "treePaintSelectionCheckBox"
+ "text": "paint selection"
+ "selected": true
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "treePaintSelectionChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 4"
+ } )
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$layoutConstraints": "hidemode 3"
+ "$columnConstraints": "[][fill]"
+ "$rowConstraints": "[][]0[]0[]0[]0"
+ } ) {
+ name: "tableOptionsPanel"
+ "border": new javax.swing.border.TitledBorder( "JTable Control" )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "autoResizeModeLabel"
+ "text": "Auto resize mode:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JComboBox" ) {
+ name: "autoResizeModeField"
+ "model": new javax.swing.DefaultComboBoxModel {
+ selectedItem: "off"
+ addElement( "off" )
+ addElement( "nextColumn" )
+ addElement( "subsequentColumns" )
+ addElement( "lastColumn" )
+ addElement( "allColumns" )
+ }
+ "selectedIndex": 2
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ "JavaCodeGenerator.typeParameters": "String"
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "autoResizeModeChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0 2 1"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "showHorizontalLinesCheckBox"
@@ -202,37 +406,7 @@ new FormModel {
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showHorizontalLinesChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 1 2 1"
- } )
- add( new FormComponent( "javax.swing.JCheckBox" ) {
- name: "showVerticalLinesCheckBox"
- "text": "show vertical lines"
- auxiliary() {
- "JavaCodeGenerator.variableLocal": false
- }
- addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showVerticalLinesChanged", false ) )
- }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 2 2 1"
- } )
- add( new FormComponent( "javax.swing.JCheckBox" ) {
- name: "intercellSpacingCheckBox"
- "text": "intercell spacing"
- auxiliary() {
- "JavaCodeGenerator.variableLocal": false
- }
- addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "intercellSpacingChanged", false ) )
- }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 3 2 1"
- } )
- add( new FormComponent( "javax.swing.JCheckBox" ) {
- name: "redGridColorCheckBox"
- "text": "red grid color"
- auxiliary() {
- "JavaCodeGenerator.variableLocal": false
- }
- addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "redGridColorChanged", false ) )
- }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 4 2 1"
+ "value": "cell 0 1"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "rowSelectionCheckBox"
@@ -243,7 +417,17 @@ new FormModel {
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "rowSelectionChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 5 2 1"
+ "value": "cell 1 1"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "showVerticalLinesCheckBox"
+ "text": "show vertical lines"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showVerticalLinesChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "columnSelectionCheckBox"
@@ -253,18 +437,37 @@ new FormModel {
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "columnSelectionChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 6 2 1"
+ "value": "cell 1 2"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
- name: "dndCheckBox"
- "text": "enable drag and drop"
- "mnemonic": 68
+ name: "intercellSpacingCheckBox"
+ "text": "intercell spacing"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
- addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "dndChanged", false ) )
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "intercellSpacingChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 7 2 1"
+ "value": "cell 0 3"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "rowHeaderCheckBox"
+ "text": "row header"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "rowHeaderChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 3"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "redGridColorCheckBox"
+ "text": "red grid color"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "redGridColorChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 4"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "tableHeaderButtonCheckBox"
@@ -274,14 +477,14 @@ new FormModel {
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tableHeaderButtonChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 8 2 1"
+ "value": "cell 1 4"
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 3 3"
+ "value": "cell 4 4 2 1"
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
- "size": new java.awt.Dimension( 790, 825 )
+ "size": new java.awt.Dimension( 950, 600 )
} )
}
}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java
index 18a184f2..94df07b0 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java
@@ -19,7 +19,10 @@ package com.formdev.flatlaf.testing;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
+import javax.swing.event.ChangeListener;
import com.formdev.flatlaf.FlatClientProperties;
+import com.formdev.flatlaf.extras.components.*;
+import com.formdev.flatlaf.extras.components.FlatButton.ButtonType;
import net.miginfocom.swing.*;
/**
@@ -35,8 +38,27 @@ public class FlatComponentsTest
} );
}
+ private final JSlider[] allSliders;
+ private final JSlider[] roundSliders;
+ private final JSlider[] directionalSliders;
+
FlatComponentsTest() {
initComponents();
+
+ buttonTypeComboBox.init( ButtonType.class, true );
+
+ allSliders = new JSlider[] { slider1, slider2, slider3, slider4, slider5, slider6 };
+ roundSliders = new JSlider[] { slider1, slider2, slider6 };
+ directionalSliders = new JSlider[] { slider3, slider4, slider5 };
+
+ ChangeListener sliderChanged = e -> {
+ JSlider slider = (JSlider) e.getSource();
+ String text = slider.getValue() + " " + slider.getValueIsAdjusting();
+ sliderValueLabel.setText( text );
+// System.out.println( text );
+ };
+ for( JSlider slider : allSliders )
+ slider.addChangeListener( sliderChanged );
}
private void changeProgress() {
@@ -55,6 +77,22 @@ public class FlatComponentsTest
progressBar4.setIndeterminate( indeterminate );
}
+ private void squareChanged() {
+ boolean square = squareCheckBox.isSelected();
+ progressBar1.setSquare( square );
+ progressBar2.setSquare( square );
+ progressBar3.setSquare( square );
+ progressBar4.setSquare( square );
+ }
+
+ private void largeHeightChanged() {
+ boolean largeHeight = largeHeightCheckBox.isSelected();
+ progressBar1.setLargeHeight( largeHeight );
+ progressBar2.setLargeHeight( largeHeight );
+ progressBar3.setLargeHeight( largeHeight );
+ progressBar4.setLargeHeight( largeHeight );
+ }
+
private void borderPaintedChanged() {
boolean borderPainted = borderPaintedCheckBox.isSelected();
@@ -99,13 +137,16 @@ public class FlatComponentsTest
}
private void buttonTypeChanged() {
- String buttonType = (String) buttonTypeComboBox.getSelectedItem();
- if( "-".equals( buttonType ) )
- buttonType = null;
+ ButtonType buttonType = buttonTypeComboBox.getSelectedValue();
+ String buttonTypeStr = (buttonType != null && buttonType != ButtonType.none) ? buttonType.toString() : null;
for( Component c : getComponents() ) {
- if( c instanceof AbstractButton )
- ((AbstractButton)c).putClientProperty( FlatClientProperties.BUTTON_TYPE, buttonType );
+ if( c instanceof FlatButton )
+ ((FlatButton)c).setButtonType( buttonType );
+ else if( c instanceof FlatToggleButton )
+ ((FlatToggleButton)c).setButtonType( buttonType );
+ else if( c instanceof AbstractButton )
+ ((AbstractButton)c).putClientProperty( FlatClientProperties.BUTTON_TYPE, buttonTypeStr );
}
}
@@ -129,6 +170,71 @@ public class FlatComponentsTest
textField1.requestFocusInWindow();
}
+ private void sliderPaintTrackChanged() {
+ boolean paintTrack = sliderPaintTrackCheckBox.isSelected();
+ for( JSlider slider : allSliders )
+ slider.setPaintTrack( paintTrack );
+ }
+
+ private void sliderPaintTicksChanged() {
+ Boolean paintTicks = sliderPaintTicksCheckBox.getChecked();
+ if( paintTicks != null ) {
+ for( JSlider slider : allSliders )
+ slider.setPaintTicks( paintTicks );
+ } else {
+ for( JSlider slider : roundSliders )
+ slider.setPaintTicks( false );
+ for( JSlider slider : directionalSliders )
+ slider.setPaintTicks( true );
+ }
+ }
+
+ private void sliderPaintLabelsChanged() {
+ Boolean paintLabels = sliderPaintLabelsCheckBox.getChecked();
+ if( paintLabels != null ) {
+ for( JSlider slider : allSliders )
+ slider.setPaintLabels( paintLabels );
+ } else {
+ for( JSlider slider : roundSliders )
+ slider.setPaintLabels( false );
+ for( JSlider slider : directionalSliders )
+ slider.setPaintLabels( true );
+ }
+ }
+
+ private void sliderInvertedChanged() {
+ boolean inverted = sliderInvertedCheckBox.isSelected();
+ for( JSlider slider : allSliders )
+ slider.setInverted( inverted );
+ }
+
+ private void sliderSnapToTicksChanged() {
+ boolean snapToTicks = sliderSnapToTicksCheckBox.isSelected();
+ for( JSlider slider : allSliders )
+ slider.setSnapToTicks( snapToTicks );
+ }
+
+ private void sliderBorderChanged() {
+ boolean border = sliderBorderCheckBox.isSelected();
+ UIManager.put( "Slider.thumbBorderColor", border ? Color.green : null );
+ for( JSlider slider : allSliders )
+ slider.updateUI();
+ }
+
+ private void majorThickSpacingChanged() {
+ int majorTickSpacing = (Integer) majorTickSpacingSpinner.getValue();
+ for( JSlider slider : directionalSliders ) {
+ slider.setLabelTable( null );
+ slider.setMajorTickSpacing( majorTickSpacing );
+ }
+ }
+
+ private void minorThickSpacingChanged() {
+ int minorTickSpacing = (Integer) minorTickSpacingSpinner.getValue();
+ for( JSlider slider : directionalSliders )
+ slider.setMinorTickSpacing( minorTickSpacing );
+ }
+
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
JLabel labelLabel = new JLabel();
@@ -137,40 +243,42 @@ public class FlatComponentsTest
FlatComponentsTest.TestMultiLineLabel testMultiLineLabel1 = new FlatComponentsTest.TestMultiLineLabel();
JLabel buttonLabel = new JLabel();
JButton button1 = new JButton();
- JButton button17 = new JButton();
- JButton button22 = new JButton();
+ FlatButton button17 = new FlatButton();
+ FlatButton button22 = new FlatButton();
JButton button2 = new JButton();
- JButton button18 = new JButton();
- JButton button23 = new JButton();
+ FlatButton button18 = new FlatButton();
+ FlatButton button23 = new FlatButton();
FlatComponentsTest.TestDefaultButton button5 = new FlatComponentsTest.TestDefaultButton();
- JButton button3 = new JButton();
- JButton button12 = new JButton();
+ FlatButton button3 = new FlatButton();
+ FlatButton button12 = new FlatButton();
JButton button13 = new JButton();
JButton button14 = new JButton();
JButton button15 = new JButton();
JButton button16 = new JButton();
+ JButton button24 = new JButton();
JButton button20 = new JButton();
JLabel toggleButtonLabel = new JLabel();
JToggleButton toggleButton1 = new JToggleButton();
- JToggleButton toggleButton9 = new JToggleButton();
- JToggleButton toggleButton19 = new JToggleButton();
+ FlatToggleButton toggleButton9 = new FlatToggleButton();
+ FlatToggleButton toggleButton19 = new FlatToggleButton();
JToggleButton toggleButton2 = new JToggleButton();
- JToggleButton toggleButton10 = new JToggleButton();
- JToggleButton toggleButton20 = new JToggleButton();
+ FlatToggleButton toggleButton10 = new FlatToggleButton();
+ FlatToggleButton toggleButton20 = new FlatToggleButton();
JToggleButton toggleButton3 = new JToggleButton();
JToggleButton toggleButton4 = new JToggleButton();
JToggleButton toggleButton11 = new JToggleButton();
JToggleButton toggleButton12 = new JToggleButton();
JToggleButton toggleButton13 = new JToggleButton();
JToggleButton toggleButton14 = new JToggleButton();
+ JToggleButton toggleButton21 = new JToggleButton();
JToggleButton toggleButton18 = new JToggleButton();
JLabel checkBoxLabel = new JLabel();
JCheckBox checkBox1 = new JCheckBox();
JCheckBox checkBox2 = new JCheckBox();
JCheckBox checkBox3 = new JCheckBox();
JCheckBox checkBox4 = new JCheckBox();
- JToggleButton toggleButton5 = new JToggleButton();
- JToggleButton toggleButton8 = new JToggleButton();
+ FlatToggleButton toggleButton5 = new FlatToggleButton();
+ FlatToggleButton toggleButton8 = new FlatToggleButton();
JLabel radioButtonLabel = new JLabel();
JRadioButton radioButton1 = new JRadioButton();
JRadioButton radioButton2 = new JRadioButton();
@@ -188,28 +296,28 @@ public class FlatComponentsTest
JSpinner spinner2 = new JSpinner();
FlatComponentsTest.ButtonlessSpinner buttonlessSpinner1 = new FlatComponentsTest.ButtonlessSpinner();
FlatComponentsTest.ButtonlessSpinner buttonlessSpinner2 = new FlatComponentsTest.ButtonlessSpinner();
- JComboBox comboBox7 = new JComboBox<>();
+ FlatComboBox comboBox7 = new FlatComboBox<>();
JSpinner spinner3 = new JSpinner();
JLabel textFieldLabel = new JLabel();
textField1 = new JTextField();
JTextField textField2 = new JTextField();
JTextField textField3 = new JTextField();
JTextField textField4 = new JTextField();
- JTextField textField6 = new JTextField();
+ FlatTextField textField6 = new FlatTextField();
JTextField textField5 = new JTextField();
JLabel formattedTextFieldLabel = new JLabel();
JFormattedTextField formattedTextField1 = new JFormattedTextField();
JFormattedTextField formattedTextField2 = new JFormattedTextField();
JFormattedTextField formattedTextField3 = new JFormattedTextField();
JFormattedTextField formattedTextField4 = new JFormattedTextField();
- JFormattedTextField formattedTextField5 = new JFormattedTextField();
+ FlatFormattedTextField formattedTextField5 = new FlatFormattedTextField();
JFormattedTextField formattedTextField6 = new JFormattedTextField();
JLabel passwordFieldLabel = new JLabel();
JPasswordField passwordField1 = new JPasswordField();
JPasswordField passwordField2 = new JPasswordField();
JPasswordField passwordField3 = new JPasswordField();
JPasswordField passwordField4 = new JPasswordField();
- JPasswordField passwordField5 = new JPasswordField();
+ FlatPasswordField passwordField5 = new FlatPasswordField();
JPasswordField passwordField6 = new JPasswordField();
JLabel textAreaLabel = new JLabel();
JScrollPane scrollPane1 = new JScrollPane();
@@ -247,15 +355,15 @@ public class FlatComponentsTest
JButton button19 = new JButton();
JScrollBar scrollBar2 = new JScrollBar();
JScrollBar scrollBar3 = new JScrollBar();
- JScrollBar scrollBar7 = new JScrollBar();
- JScrollBar scrollBar8 = new JScrollBar();
+ FlatScrollBar scrollBar7 = new FlatScrollBar();
+ FlatScrollBar scrollBar8 = new FlatScrollBar();
JSeparator separator2 = new JSeparator();
- JSlider slider2 = new JSlider();
- JSlider slider4 = new JSlider();
+ slider2 = new JSlider();
+ slider4 = new JSlider();
JScrollPane scrollPane14 = new JScrollPane();
- progressBar3 = new JProgressBar();
- progressBar4 = new JProgressBar();
- JToolBar toolBar2 = new JToolBar();
+ progressBar3 = new FlatProgressBar();
+ progressBar4 = new FlatProgressBar();
+ FlatComponentsTest.TestToolBar toolBar2 = new FlatComponentsTest.TestToolBar();
JButton button9 = new JButton();
JButton button10 = new JButton();
JButton button11 = new JButton();
@@ -264,7 +372,7 @@ public class FlatComponentsTest
JPanel panel3 = new JPanel();
JButton button21 = new JButton();
JPanel panel5 = new JPanel();
- buttonTypeComboBox = new JComboBox<>();
+ buttonTypeComboBox = new FlatTestEnumComboBox<>();
borderPaintedCheckBox = new JCheckBox();
roundRectCheckBox = new JCheckBox();
contentAreaFilledCheckBox = new JCheckBox();
@@ -278,25 +386,40 @@ public class FlatComponentsTest
JLabel scrollBarLabel = new JLabel();
JScrollBar scrollBar1 = new JScrollBar();
JScrollBar scrollBar4 = new JScrollBar();
- JScrollBar scrollBar5 = new JScrollBar();
- JScrollBar scrollBar6 = new JScrollBar();
+ FlatScrollBar scrollBar5 = new FlatScrollBar();
+ FlatScrollBar scrollBar6 = new FlatScrollBar();
JLabel separatorLabel = new JLabel();
JSeparator separator1 = new JSeparator();
JPanel panel2 = new JPanel();
JLabel sliderLabel = new JLabel();
- JSlider slider1 = new JSlider();
- JSlider slider6 = new JSlider();
- slider3 = new JSlider();
- JSlider slider5 = new JSlider();
- JLabel progressBarLabel = new JLabel();
- progressBar1 = new JProgressBar();
- progressBar2 = new JProgressBar();
+ slider1 = new JSlider();
+ slider6 = new JSlider();
+ JPanel panel8 = new JPanel();
+ JPanel panel6 = new JPanel();
+ sliderPaintTrackCheckBox = new JCheckBox();
+ sliderPaintTicksCheckBox = new FlatTriStateCheckBox();
+ sliderPaintLabelsCheckBox = new FlatTriStateCheckBox();
+ sliderInvertedCheckBox = new JCheckBox();
+ sliderSnapToTicksCheckBox = new JCheckBox();
+ majorTickSpacingSpinner = new JSpinner();
+ sliderBorderCheckBox = new JCheckBox();
+ minorTickSpacingSpinner = new JSpinner();
+ sliderValueLabel = new JLabel();
+ JPanel panel7 = new JPanel();
indeterminateCheckBox = new JCheckBox();
+ squareCheckBox = new JCheckBox();
+ largeHeightCheckBox = new JCheckBox();
+ JLabel sliderLabel2 = new JLabel();
+ slider3 = new JSlider();
+ slider5 = new JSlider();
+ JLabel progressBarLabel = new JLabel();
+ progressBar1 = new FlatProgressBar();
+ progressBar2 = new FlatProgressBar();
JLabel toolTipLabel = new JLabel();
JToolTip toolTip1 = new JToolTip();
JToolTip toolTip2 = new JToolTip();
JLabel toolBarLabel = new JLabel();
- JToolBar toolBar1 = new JToolBar();
+ FlatComponentsTest.TestToolBar toolBar1 = new FlatComponentsTest.TestToolBar();
JButton button4 = new JButton();
JButton button6 = new JButton();
JButton button7 = new JButton();
@@ -306,17 +429,17 @@ public class FlatComponentsTest
JToggleButton toggleButton16 = new JToggleButton();
JToggleButton toggleButton17 = new JToggleButton();
JLabel label3 = new JLabel();
- JToolBar toolBar3 = new JToolBar();
- JButton button26 = new JButton();
- JButton button27 = new JButton();
- JToggleButton toggleButton23 = new JToggleButton();
- JToggleButton toggleButton24 = new JToggleButton();
+ FlatComponentsTest.TestToolBar toolBar3 = new FlatComponentsTest.TestToolBar();
+ FlatButton button26 = new FlatButton();
+ FlatButton button27 = new FlatButton();
+ FlatToggleButton toggleButton23 = new FlatToggleButton();
+ FlatToggleButton toggleButton24 = new FlatToggleButton();
JLabel label4 = new JLabel();
- JToolBar toolBar4 = new JToolBar();
- JButton button28 = new JButton();
- JButton button29 = new JButton();
- JToggleButton toggleButton25 = new JToggleButton();
- JToggleButton toggleButton26 = new JToggleButton();
+ FlatComponentsTest.TestToolBar toolBar4 = new FlatComponentsTest.TestToolBar();
+ FlatButton button28 = new FlatButton();
+ FlatButton button29 = new FlatButton();
+ FlatToggleButton toggleButton25 = new FlatToggleButton();
+ FlatToggleButton toggleButton26 = new FlatToggleButton();
//======== this ========
setLayout(new MigLayout(
@@ -386,14 +509,14 @@ public class FlatComponentsTest
//---- button17 ----
button17.setText("Sq");
- button17.putClientProperty("JButton.buttonType", "square");
- button17.putClientProperty("JComponent.minimumWidth", 0);
+ button17.setButtonType(FlatButton.ButtonType.square);
+ button17.setMinimumWidth(0);
add(button17, "cell 1 1");
//---- button22 ----
button22.setText("Rd");
- button22.putClientProperty("JButton.buttonType", "roundRect");
- button22.putClientProperty("JComponent.minimumWidth", 0);
+ button22.setButtonType(FlatButton.ButtonType.roundRect);
+ button22.setMinimumWidth(0);
add(button22, "cell 1 1");
//---- button2 ----
@@ -405,16 +528,16 @@ public class FlatComponentsTest
//---- button18 ----
button18.setText("Sq");
- button18.putClientProperty("JButton.buttonType", "square");
+ button18.setButtonType(FlatButton.ButtonType.square);
button18.setEnabled(false);
- button18.putClientProperty("JComponent.minimumWidth", 0);
+ button18.setMinimumWidth(0);
add(button18, "cell 2 1");
//---- button23 ----
button23.setText("Rd");
- button23.putClientProperty("JButton.buttonType", "roundRect");
+ button23.setButtonType(FlatButton.ButtonType.roundRect);
button23.setEnabled(false);
- button23.putClientProperty("JComponent.minimumWidth", 0);
+ button23.setMinimumWidth(0);
add(button23, "cell 2 1");
//---- button5 ----
@@ -425,35 +548,39 @@ public class FlatComponentsTest
//---- button3 ----
button3.setText("Help");
- button3.putClientProperty("JButton.buttonType", "help");
+ button3.setButtonType(FlatButton.ButtonType.help);
add(button3, "cell 4 1");
//---- button12 ----
button12.setText("Help");
- button12.putClientProperty("JButton.buttonType", "help");
+ button12.setButtonType(FlatButton.ButtonType.help);
button12.setEnabled(false);
add(button12, "cell 4 1");
//---- button13 ----
button13.setIcon(UIManager.getIcon("Tree.closedIcon"));
- add(button13, "cell 5 1");
+ add(button13, "cell 5 1 2 1");
//---- button14 ----
button14.setText("...");
- add(button14, "cell 5 1");
+ add(button14, "cell 5 1 2 1");
//---- button15 ----
button15.setText("\u2026");
- add(button15, "cell 5 1");
+ add(button15, "cell 5 1 2 1");
//---- button16 ----
button16.setText("#");
- add(button16, "cell 5 1");
+ add(button16, "cell 5 1 2 1");
+
+ //---- button24 ----
+ button24.setText("A");
+ add(button24, "cell 5 1 2 1");
//---- button20 ----
button20.setText("Empty border");
button20.setBorder(BorderFactory.createEmptyBorder());
- add(button20, "cell 6 1");
+ add(button20, "cell 5 1 2 1");
//---- toggleButtonLabel ----
toggleButtonLabel.setText("JToggleButton:");
@@ -461,16 +588,17 @@ public class FlatComponentsTest
//---- toggleButton1 ----
toggleButton1.setText("Enabled");
+ toggleButton1.setToolTipText("LOOOOOOOOOOOOOONG TEXT");
add(toggleButton1, "cell 1 2");
//---- toggleButton9 ----
toggleButton9.setText("Sq");
- toggleButton9.putClientProperty("JButton.buttonType", "square");
+ toggleButton9.setButtonType(FlatButton.ButtonType.square);
add(toggleButton9, "cell 1 2");
//---- toggleButton19 ----
toggleButton19.setText("Rd");
- toggleButton19.putClientProperty("JButton.buttonType", "roundRect");
+ toggleButton19.setButtonType(FlatButton.ButtonType.roundRect);
add(toggleButton19, "cell 1 2");
//---- toggleButton2 ----
@@ -480,13 +608,13 @@ public class FlatComponentsTest
//---- toggleButton10 ----
toggleButton10.setText("Sq");
- toggleButton10.putClientProperty("JButton.buttonType", "square");
+ toggleButton10.setButtonType(FlatButton.ButtonType.square);
toggleButton10.setEnabled(false);
add(toggleButton10, "cell 2 2");
//---- toggleButton20 ----
toggleButton20.setText("Rd");
- toggleButton20.putClientProperty("JButton.buttonType", "roundRect");
+ toggleButton20.setButtonType(FlatButton.ButtonType.roundRect);
toggleButton20.setEnabled(false);
add(toggleButton20, "cell 2 2");
@@ -504,27 +632,32 @@ public class FlatComponentsTest
//---- toggleButton11 ----
toggleButton11.setIcon(UIManager.getIcon("Tree.closedIcon"));
toggleButton11.setSelected(true);
- add(toggleButton11, "cell 5 2");
+ add(toggleButton11, "cell 5 2 2 1");
//---- toggleButton12 ----
toggleButton12.setText("...");
toggleButton12.setSelected(true);
- add(toggleButton12, "cell 5 2");
+ add(toggleButton12, "cell 5 2 2 1");
//---- toggleButton13 ----
toggleButton13.setText("\u2026");
toggleButton13.setSelected(true);
- add(toggleButton13, "cell 5 2");
+ add(toggleButton13, "cell 5 2 2 1");
//---- toggleButton14 ----
toggleButton14.setText("#");
toggleButton14.setSelected(true);
- add(toggleButton14, "cell 5 2");
+ add(toggleButton14, "cell 5 2 2 1");
+
+ //---- toggleButton21 ----
+ toggleButton21.setText("A");
+ toggleButton21.setSelected(true);
+ add(toggleButton21, "cell 5 2 2 1");
//---- toggleButton18 ----
toggleButton18.setText("Empty border");
toggleButton18.setBorder(BorderFactory.createEmptyBorder());
- add(toggleButton18, "cell 6 2");
+ add(toggleButton18, "cell 5 2 2 1");
//---- checkBoxLabel ----
checkBoxLabel.setText("JCheckBox");
@@ -554,13 +687,13 @@ public class FlatComponentsTest
//---- toggleButton5 ----
toggleButton5.setText("Tab");
- toggleButton5.putClientProperty("JButton.buttonType", "tab");
+ toggleButton5.setButtonType(FlatButton.ButtonType.tab);
toggleButton5.setSelected(true);
add(toggleButton5, "cell 5 3");
//---- toggleButton8 ----
toggleButton8.setText("Tab");
- toggleButton8.putClientProperty("JButton.buttonType", "tab");
+ toggleButton8.setButtonType(FlatButton.ButtonType.tab);
toggleButton8.setEnabled(false);
toggleButton8.setSelected(true);
add(toggleButton8, "cell 5 3");
@@ -685,7 +818,7 @@ public class FlatComponentsTest
//---- comboBox7 ----
comboBox7.setEditable(true);
- comboBox7.putClientProperty("JTextField.placeholderText", "Placeholder");
+ comboBox7.setPlaceholderText("Placeholder");
add(comboBox7, "cell 5 6,growx");
//---- spinner3 ----
@@ -718,7 +851,7 @@ public class FlatComponentsTest
add(textField4, "cell 4 7,growx");
//---- textField6 ----
- textField6.putClientProperty("JTextField.placeholderText", "Placeholder");
+ textField6.setPlaceholderText("Placeholder");
add(textField6, "cell 5 7,growx");
//---- textField5 ----
@@ -751,7 +884,7 @@ public class FlatComponentsTest
add(formattedTextField4, "cell 4 8,growx");
//---- formattedTextField5 ----
- formattedTextField5.putClientProperty("JTextField.placeholderText", "Placeholder");
+ formattedTextField5.setPlaceholderText("Placeholder");
add(formattedTextField5, "cell 5 8,growx");
//---- formattedTextField6 ----
@@ -784,7 +917,7 @@ public class FlatComponentsTest
add(passwordField4, "cell 4 9,growx");
//---- passwordField5 ----
- passwordField5.putClientProperty("JTextField.placeholderText", "Placeholder");
+ passwordField5.setPlaceholderText("Placeholder");
add(passwordField5, "cell 5 9,growx");
//---- passwordField6 ----
@@ -995,12 +1128,12 @@ public class FlatComponentsTest
add(scrollBar3, "cell 2 13 1 6,growy");
//---- scrollBar7 ----
- scrollBar7.putClientProperty("JScrollBar.showButtons", true);
+ scrollBar7.setShowButtons(true);
add(scrollBar7, "cell 2 13 1 6,growy");
//---- scrollBar8 ----
scrollBar8.setEnabled(false);
- scrollBar8.putClientProperty("JScrollBar.showButtons", true);
+ scrollBar8.setShowButtons(true);
add(scrollBar8, "cell 2 13 1 6,growy");
//---- separator2 ----
@@ -1090,13 +1223,6 @@ public class FlatComponentsTest
"[]"));
//---- buttonTypeComboBox ----
- buttonTypeComboBox.setModel(new DefaultComboBoxModel<>(new String[] {
- "-",
- "square",
- "roundRect",
- "tab",
- "help"
- }));
buttonTypeComboBox.addActionListener(e -> buttonTypeChanged());
panel5.add(buttonTypeComboBox, "cell 0 0");
@@ -1172,13 +1298,13 @@ public class FlatComponentsTest
//---- scrollBar5 ----
scrollBar5.setOrientation(Adjustable.HORIZONTAL);
- scrollBar5.putClientProperty("JScrollBar.showButtons", true);
+ scrollBar5.setShowButtons(true);
add(scrollBar5, "cell 1 16,growx");
//---- scrollBar6 ----
scrollBar6.setOrientation(Adjustable.HORIZONTAL);
scrollBar6.setEnabled(false);
- scrollBar6.putClientProperty("JScrollBar.showButtons", true);
+ scrollBar6.setShowButtons(true);
add(scrollBar6, "cell 1 17,growx");
//---- separatorLabel ----
@@ -1200,12 +1326,119 @@ public class FlatComponentsTest
//---- slider1 ----
slider1.setValue(30);
- add(slider1, "cell 1 19 3 1,aligny top,grow 100 0");
+ add(slider1, "cell 1 19 3 1,growx");
//---- slider6 ----
slider6.setEnabled(false);
slider6.setValue(30);
- add(slider6, "cell 1 19 3 1,aligny top,growy 0");
+ add(slider6, "cell 1 19 3 1");
+
+ //======== panel8 ========
+ {
+ panel8.setLayout(new MigLayout(
+ "ltr,insets 0,hidemode 3",
+ // columns
+ "[]",
+ // rows
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]"));
+
+ //======== panel6 ========
+ {
+ panel6.setBorder(new TitledBorder("JSlider Control"));
+ panel6.setLayout(new MigLayout(
+ "ltr,insets 0,hidemode 3",
+ // columns
+ "[]",
+ // rows
+ "[]0" +
+ "[]0" +
+ "[]0" +
+ "[]"));
+
+ //---- sliderPaintTrackCheckBox ----
+ sliderPaintTrackCheckBox.setText("track");
+ sliderPaintTrackCheckBox.setSelected(true);
+ sliderPaintTrackCheckBox.addActionListener(e -> sliderPaintTrackChanged());
+ panel6.add(sliderPaintTrackCheckBox, "cell 0 0");
+
+ //---- sliderPaintTicksCheckBox ----
+ sliderPaintTicksCheckBox.setText("ticks");
+ sliderPaintTicksCheckBox.addActionListener(e -> sliderPaintTicksChanged());
+ panel6.add(sliderPaintTicksCheckBox, "cell 0 0");
+
+ //---- sliderPaintLabelsCheckBox ----
+ sliderPaintLabelsCheckBox.setText("labels");
+ sliderPaintLabelsCheckBox.addActionListener(e -> sliderPaintLabelsChanged());
+ panel6.add(sliderPaintLabelsCheckBox, "cell 0 0");
+
+ //---- sliderInvertedCheckBox ----
+ sliderInvertedCheckBox.setText("inverted");
+ sliderInvertedCheckBox.addActionListener(e -> sliderInvertedChanged());
+ panel6.add(sliderInvertedCheckBox, "cell 0 1");
+
+ //---- sliderSnapToTicksCheckBox ----
+ sliderSnapToTicksCheckBox.setText("snap to ticks");
+ sliderSnapToTicksCheckBox.addActionListener(e -> sliderSnapToTicksChanged());
+ panel6.add(sliderSnapToTicksCheckBox, "cell 0 1");
+
+ //---- majorTickSpacingSpinner ----
+ majorTickSpacingSpinner.setModel(new SpinnerNumberModel(50, 0, 100, 5));
+ majorTickSpacingSpinner.addChangeListener(e -> majorThickSpacingChanged());
+ panel6.add(majorTickSpacingSpinner, "cell 0 2");
+
+ //---- sliderBorderCheckBox ----
+ sliderBorderCheckBox.setText("border");
+ sliderBorderCheckBox.addActionListener(e -> sliderBorderChanged());
+ panel6.add(sliderBorderCheckBox, "cell 0 2");
+
+ //---- minorTickSpacingSpinner ----
+ minorTickSpacingSpinner.setModel(new SpinnerNumberModel(10, 0, 100, 5));
+ minorTickSpacingSpinner.addChangeListener(e -> minorThickSpacingChanged());
+ panel6.add(minorTickSpacingSpinner, "cell 0 3");
+
+ //---- sliderValueLabel ----
+ sliderValueLabel.setText("slider value");
+ panel6.add(sliderValueLabel, "cell 0 3");
+ }
+ panel8.add(panel6, "cell 0 0 1 2,grow");
+
+ //======== panel7 ========
+ {
+ panel7.setBorder(new TitledBorder("JProgressBar Control"));
+ panel7.setLayout(new MigLayout(
+ "ltr,insets 0,hidemode 3",
+ // columns
+ "[]" +
+ "[fill]",
+ // rows
+ "[]0" +
+ "[]"));
+
+ //---- indeterminateCheckBox ----
+ indeterminateCheckBox.setText("indeterminate");
+ indeterminateCheckBox.addActionListener(e -> indeterminateProgress());
+ panel7.add(indeterminateCheckBox, "cell 0 0");
+
+ //---- squareCheckBox ----
+ squareCheckBox.setText("square");
+ squareCheckBox.addActionListener(e -> squareChanged());
+ panel7.add(squareCheckBox, "cell 1 0");
+
+ //---- largeHeightCheckBox ----
+ largeHeightCheckBox.setText("large height");
+ largeHeightCheckBox.addActionListener(e -> largeHeightChanged());
+ panel7.add(largeHeightCheckBox, "cell 0 1,aligny top,growy 0");
+ }
+ panel8.add(panel7, "cell 0 2 1 2,grow");
+ }
+ add(panel8, "cell 4 19 1 4");
+
+ //---- sliderLabel2 ----
+ sliderLabel2.setText("baseline");
+ add(sliderLabel2, "cell 0 20,alignx right,growx 0");
//---- slider3 ----
slider3.setMinorTickSpacing(10);
@@ -1214,7 +1447,7 @@ public class FlatComponentsTest
slider3.setPaintLabels(true);
slider3.setValue(30);
slider3.addChangeListener(e -> changeProgress());
- add(slider3, "cell 1 20 3 1,aligny top,grow 100 0");
+ add(slider3, "cell 1 20 3 1,growx");
//---- slider5 ----
slider5.setMinorTickSpacing(10);
@@ -1223,7 +1456,7 @@ public class FlatComponentsTest
slider5.setPaintLabels(true);
slider5.setEnabled(false);
slider5.setValue(30);
- add(slider5, "cell 1 20 3 1,aligny top,growy 0");
+ add(slider5, "cell 1 20 3 1");
//---- progressBarLabel ----
progressBarLabel.setText("JProgressBar:");
@@ -1238,11 +1471,6 @@ public class FlatComponentsTest
progressBar2.setValue(60);
add(progressBar2, "cell 1 21 3 1,growx");
- //---- indeterminateCheckBox ----
- indeterminateCheckBox.setText("indeterminate");
- indeterminateCheckBox.addActionListener(e -> indeterminateProgress());
- add(indeterminateCheckBox, "cell 4 21");
-
//---- toolTipLabel ----
toolTipLabel.setText("JToolTip:");
add(toolTipLabel, "cell 0 22");
@@ -1313,24 +1541,24 @@ public class FlatComponentsTest
//---- button26 ----
button26.setIcon(UIManager.getIcon("Tree.closedIcon"));
- button26.putClientProperty("JButton.buttonType", "square");
+ button26.setButtonType(FlatButton.ButtonType.square);
toolBar3.add(button26);
//---- button27 ----
button27.setIcon(UIManager.getIcon("Tree.openIcon"));
- button27.putClientProperty("JButton.buttonType", "square");
+ button27.setButtonType(FlatButton.ButtonType.square);
toolBar3.add(button27);
//---- toggleButton23 ----
toggleButton23.setIcon(UIManager.getIcon("FileView.computerIcon"));
toggleButton23.setSelected(true);
- toggleButton23.putClientProperty("JButton.buttonType", "square");
+ toggleButton23.setButtonType(FlatButton.ButtonType.square);
toolBar3.add(toggleButton23);
//---- toggleButton24 ----
toggleButton24.setIcon(UIManager.getIcon("FileView.floppyDriveIcon"));
toggleButton24.setSelected(true);
- toggleButton24.putClientProperty("JButton.buttonType", "square");
+ toggleButton24.setButtonType(FlatButton.ButtonType.square);
toolBar3.add(toggleButton24);
}
add(toolBar3, "cell 1 23 5 1");
@@ -1344,24 +1572,24 @@ public class FlatComponentsTest
//---- button28 ----
button28.setIcon(UIManager.getIcon("Tree.closedIcon"));
- button28.putClientProperty("JButton.buttonType", "roundRect");
+ button28.setButtonType(FlatButton.ButtonType.roundRect);
toolBar4.add(button28);
//---- button29 ----
button29.setIcon(UIManager.getIcon("Tree.openIcon"));
- button29.putClientProperty("JButton.buttonType", "roundRect");
+ button29.setButtonType(FlatButton.ButtonType.roundRect);
toolBar4.add(button29);
//---- toggleButton25 ----
toggleButton25.setIcon(UIManager.getIcon("FileView.computerIcon"));
toggleButton25.setSelected(true);
- toggleButton25.putClientProperty("JButton.buttonType", "roundRect");
+ toggleButton25.setButtonType(FlatButton.ButtonType.roundRect);
toolBar4.add(toggleButton25);
//---- toggleButton26 ----
toggleButton26.setIcon(UIManager.getIcon("FileView.floppyDriveIcon"));
toggleButton26.setSelected(true);
- toggleButton26.putClientProperty("JButton.buttonType", "roundRect");
+ toggleButton26.setButtonType(FlatButton.ButtonType.roundRect);
toolBar4.add(toggleButton26);
}
add(toolBar4, "cell 1 23 5 1");
@@ -1375,6 +1603,11 @@ public class FlatComponentsTest
buttonGroup1.add(magentaCyanOutlineRadioButton);
// JFormDesigner - End of component initialization //GEN-END:initComponents
+ // Unicode surrogate character pair "script capital A"
+ // https://www.compart.com/en/unicode/U+1D49C
+ button24.setText("\uD835\uDC9C");
+ toggleButton21.setText("\uD835\uDC9C");
+
// BasicComboBoxRenderer customRenderer = new BasicComboBoxRenderer();
// customRenderer.setBorder( new LineBorder( Color.red ) );
// comboBox1.setRenderer( customRenderer );
@@ -1383,9 +1616,11 @@ public class FlatComponentsTest
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private JTextField textField1;
- private JProgressBar progressBar3;
- private JProgressBar progressBar4;
- private JComboBox buttonTypeComboBox;
+ private JSlider slider2;
+ private JSlider slider4;
+ private FlatProgressBar progressBar3;
+ private FlatProgressBar progressBar4;
+ private FlatTestEnumComboBox buttonTypeComboBox;
private JCheckBox borderPaintedCheckBox;
private JCheckBox roundRectCheckBox;
private JCheckBox contentAreaFilledCheckBox;
@@ -1395,10 +1630,24 @@ public class FlatComponentsTest
private JRadioButton magentaOutlineRadioButton;
private JRadioButton magentaCyanOutlineRadioButton;
private JCheckBox focusPaintedCheckBox;
- private JSlider slider3;
- private JProgressBar progressBar1;
- private JProgressBar progressBar2;
+ private JSlider slider1;
+ private JSlider slider6;
+ private JCheckBox sliderPaintTrackCheckBox;
+ private FlatTriStateCheckBox sliderPaintTicksCheckBox;
+ private FlatTriStateCheckBox sliderPaintLabelsCheckBox;
+ private JCheckBox sliderInvertedCheckBox;
+ private JCheckBox sliderSnapToTicksCheckBox;
+ private JSpinner majorTickSpacingSpinner;
+ private JCheckBox sliderBorderCheckBox;
+ private JSpinner minorTickSpacingSpinner;
+ private JLabel sliderValueLabel;
private JCheckBox indeterminateCheckBox;
+ private JCheckBox squareCheckBox;
+ private JCheckBox largeHeightCheckBox;
+ private JSlider slider3;
+ private JSlider slider5;
+ private FlatProgressBar progressBar1;
+ private FlatProgressBar progressBar2;
// JFormDesigner - End of variables declaration //GEN-END:variables
//---- class TestDefaultButton --------------------------------------------
@@ -1449,4 +1698,37 @@ public class FlatComponentsTest
}
}
}
+
+ //---- class TestToolBar --------------------------------------------------
+
+ private static class TestToolBar
+ extends JToolBar
+ {
+ @Override
+ protected void paintComponent( Graphics g ) {
+ super.paintComponent( g );
+
+ if( isPaintBackgroundPattern() && isOpaque() ) {
+ int width = getWidth();
+ int height = getHeight();
+
+ g.setColor( Color.blue );
+ for( int y = 0; y < height; y += 2 )
+ g.drawLine( 0, y, width - 1, y );
+ }
+ }
+
+ /**
+ * Overridden to see which components paint background with color from parent.
+ */
+ @Override
+ public Color getBackground() {
+ return isPaintBackgroundPattern() ? Color.orange : super.getBackground();
+ }
+
+ private boolean isPaintBackgroundPattern() {
+ FlatTestFrame frame = (FlatTestFrame) SwingUtilities.getAncestorOfClass( FlatTestFrame.class, this );
+ return frame != null && frame.isPaintBackgroundPattern();
+ }
+ }
}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd
index 6833b3e9..c6ec4fae 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.2.0.298" Java: "15" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -53,19 +53,19 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 1"
} )
- add( new FormComponent( "javax.swing.JButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) {
name: "button17"
"text": "Sq"
- "$client.JButton.buttonType": "square"
- "$client.JComponent.minimumWidth": 0
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType square
+ "minimumWidth": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 1"
} )
- add( new FormComponent( "javax.swing.JButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) {
name: "button22"
"text": "Rd"
- "$client.JButton.buttonType": "roundRect"
- "$client.JComponent.minimumWidth": 0
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType roundRect
+ "minimumWidth": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 1"
} )
@@ -78,21 +78,21 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 1"
} )
- add( new FormComponent( "javax.swing.JButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) {
name: "button18"
"text": "Sq"
- "$client.JButton.buttonType": "square"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType square
"enabled": false
- "$client.JComponent.minimumWidth": 0
+ "minimumWidth": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 1"
} )
- add( new FormComponent( "javax.swing.JButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) {
name: "button23"
"text": "Rd"
- "$client.JButton.buttonType": "roundRect"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType roundRect
"enabled": false
- "$client.JComponent.minimumWidth": 0
+ "minimumWidth": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 1"
} )
@@ -104,17 +104,17 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 1"
} )
- add( new FormComponent( "javax.swing.JButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) {
name: "button3"
"text": "Help"
- "$client.JButton.buttonType": "help"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType help
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 1"
} )
- add( new FormComponent( "javax.swing.JButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) {
name: "button12"
"text": "Help"
- "$client.JButton.buttonType": "help"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType help
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 1"
@@ -123,32 +123,38 @@ new FormModel {
name: "button13"
"icon": &SwingIcon0 new com.jformdesigner.model.SwingIcon( 2, "Tree.closedIcon" )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 1"
+ "value": "cell 5 1 2 1"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button14"
"text": "..."
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 1"
+ "value": "cell 5 1 2 1"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button15"
"text": "…"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 1"
+ "value": "cell 5 1 2 1"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button16"
"text": "#"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 1"
+ "value": "cell 5 1 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "button24"
+ "text": "A"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 1 2 1"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button20"
"text": "Empty border"
"border": &EmptyBorder0 new javax.swing.border.EmptyBorder( 0, 0, 0, 0 )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 6 1"
+ "value": "cell 5 1 2 1"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "toggleButtonLabel"
@@ -159,20 +165,21 @@ new FormModel {
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton1"
"text": "Enabled"
+ "toolTipText": "LOOOOOOOOOOOOOONG TEXT"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 2"
} )
- add( new FormComponent( "javax.swing.JToggleButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatToggleButton" ) {
name: "toggleButton9"
"text": "Sq"
- "$client.JButton.buttonType": "square"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType square
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 2"
} )
- add( new FormComponent( "javax.swing.JToggleButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatToggleButton" ) {
name: "toggleButton19"
"text": "Rd"
- "$client.JButton.buttonType": "roundRect"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType roundRect
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 2"
} )
@@ -183,18 +190,18 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 2"
} )
- add( new FormComponent( "javax.swing.JToggleButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatToggleButton" ) {
name: "toggleButton10"
"text": "Sq"
- "$client.JButton.buttonType": "square"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType square
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 2"
} )
- add( new FormComponent( "javax.swing.JToggleButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatToggleButton" ) {
name: "toggleButton20"
"text": "Rd"
- "$client.JButton.buttonType": "roundRect"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType roundRect
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 2"
@@ -219,35 +226,42 @@ new FormModel {
"icon": #SwingIcon0
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 2"
+ "value": "cell 5 2 2 1"
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton12"
"text": "..."
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 2"
+ "value": "cell 5 2 2 1"
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton13"
"text": "…"
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 2"
+ "value": "cell 5 2 2 1"
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton14"
"text": "#"
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 2"
+ "value": "cell 5 2 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JToggleButton" ) {
+ name: "toggleButton21"
+ "text": "A"
+ "selected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 5 2 2 1"
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton18"
"text": "Empty border"
"border": #EmptyBorder0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 6 2"
+ "value": "cell 5 2 2 1"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "checkBoxLabel"
@@ -285,18 +299,18 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 3"
} )
- add( new FormComponent( "javax.swing.JToggleButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatToggleButton" ) {
name: "toggleButton5"
"text": "Tab"
- "$client.JButton.buttonType": "tab"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType tab
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 3"
} )
- add( new FormComponent( "javax.swing.JToggleButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatToggleButton" ) {
name: "toggleButton8"
"text": "Tab"
- "$client.JButton.buttonType": "tab"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType tab
"enabled": false
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -466,10 +480,10 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 6,growx"
} )
- add( new FormComponent( "javax.swing.JComboBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatComboBox" ) {
name: "comboBox7"
"editable": true
- "$client.JTextField.placeholderText": "Placeholder"
+ "placeholderText": "Placeholder"
auxiliary() {
"JavaCodeGenerator.typeParameters": "String"
}
@@ -522,9 +536,9 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 7,growx"
} )
- add( new FormComponent( "javax.swing.JTextField" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTextField" ) {
name: "textField6"
- "$client.JTextField.placeholderText": "Placeholder"
+ "placeholderText": "Placeholder"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 7,growx"
} )
@@ -569,9 +583,9 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 8,growx"
} )
- add( new FormComponent( "javax.swing.JFormattedTextField" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatFormattedTextField" ) {
name: "formattedTextField5"
- "$client.JTextField.placeholderText": "Placeholder"
+ "placeholderText": "Placeholder"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 8,growx"
} )
@@ -616,9 +630,9 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 9,growx"
} )
- add( new FormComponent( "javax.swing.JPasswordField" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatPasswordField" ) {
name: "passwordField5"
- "$client.JTextField.placeholderText": "Placeholder"
+ "placeholderText": "Placeholder"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 9,growx"
} )
@@ -850,16 +864,16 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 13 1 6,growy"
} )
- add( new FormComponent( "javax.swing.JScrollBar" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatScrollBar" ) {
name: "scrollBar7"
- "$client.JScrollBar.showButtons": true
+ "showButtons": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 13 1 6,growy"
} )
- add( new FormComponent( "javax.swing.JScrollBar" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatScrollBar" ) {
name: "scrollBar8"
"enabled": false
- "$client.JScrollBar.showButtons": true
+ "showButtons": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 13 1 6,growy"
} )
@@ -873,6 +887,9 @@ new FormModel {
name: "slider2"
"orientation": 1
"value": 30
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 13 1 6,growy"
} )
@@ -884,6 +901,9 @@ new FormModel {
"paintLabels": true
"orientation": 1
"value": 30
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 13 1 6,growy"
} )
@@ -892,7 +912,7 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 13,grow"
} )
- add( new FormComponent( "javax.swing.JProgressBar" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatProgressBar" ) {
name: "progressBar3"
"orientation": 1
"value": 60
@@ -902,7 +922,7 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 13 1 6,growy"
} )
- add( new FormComponent( "javax.swing.JProgressBar" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatProgressBar" ) {
name: "progressBar4"
"orientation": 1
"value": 60
@@ -913,7 +933,7 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 13 1 6,growy"
} )
- add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
+ add( new FormContainer( "com.formdev.flatlaf.testing.FlatComponentsTest$TestToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
name: "toolBar2"
"orientation": 1
add( new FormComponent( "javax.swing.JButton" ) {
@@ -963,18 +983,11 @@ new FormModel {
} ) {
name: "panel5"
"border": new javax.swing.border.TitledBorder( "Control" )
- add( new FormComponent( "javax.swing.JComboBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
name: "buttonTypeComboBox"
- "model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "-"
- addElement( "-" )
- addElement( "square" )
- addElement( "roundRect" )
- addElement( "tab" )
- addElement( "help" )
- }
auxiliary() {
"JavaCodeGenerator.variableLocal": false
+ "JavaCodeGenerator.typeParameters": "ButtonType"
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "buttonTypeChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -1098,18 +1111,18 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 15,growx"
} )
- add( new FormComponent( "javax.swing.JScrollBar" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatScrollBar" ) {
name: "scrollBar5"
"orientation": 0
- "$client.JScrollBar.showButtons": true
+ "showButtons": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 16,growx"
} )
- add( new FormComponent( "javax.swing.JScrollBar" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatScrollBar" ) {
name: "scrollBar6"
"orientation": 0
"enabled": false
- "$client.JScrollBar.showButtons": true
+ "showButtons": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 17,growx"
} )
@@ -1140,15 +1153,176 @@ new FormModel {
add( new FormComponent( "javax.swing.JSlider" ) {
name: "slider1"
"value": 30
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 19 3 1,aligny top,grow 100 0"
+ "value": "cell 1 19 3 1,growx"
} )
add( new FormComponent( "javax.swing.JSlider" ) {
name: "slider6"
"enabled": false
"value": 30
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 19 3 1,aligny top,growy 0"
+ "value": "cell 1 19 3 1"
+ } )
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$columnConstraints": "[]"
+ "$rowConstraints": "[][][][]"
+ "$layoutConstraints": "ltr,insets 0,hidemode 3"
+ } ) {
+ name: "panel8"
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$columnConstraints": "[]"
+ "$rowConstraints": "[]0[]0[]0[]"
+ "$layoutConstraints": "ltr,insets 0,hidemode 3"
+ } ) {
+ name: "panel6"
+ "border": new javax.swing.border.TitledBorder( "JSlider Control" )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "sliderPaintTrackCheckBox"
+ "text": "track"
+ "selected": true
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "sliderPaintTrackChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
+ name: "sliderPaintTicksCheckBox"
+ "text": "ticks"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "sliderPaintTicksChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
+ name: "sliderPaintLabelsCheckBox"
+ "text": "labels"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "sliderPaintLabelsChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "sliderInvertedCheckBox"
+ "text": "inverted"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "sliderInvertedChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 1"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "sliderSnapToTicksCheckBox"
+ "text": "snap to ticks"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "sliderSnapToTicksChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 1"
+ } )
+ add( new FormComponent( "javax.swing.JSpinner" ) {
+ name: "majorTickSpacingSpinner"
+ "model": new javax.swing.SpinnerNumberModel( 50, 0, 100, 5 )
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "majorThickSpacingChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "sliderBorderCheckBox"
+ "text": "border"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "sliderBorderChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
+ add( new FormComponent( "javax.swing.JSpinner" ) {
+ name: "minorTickSpacingSpinner"
+ "model": new javax.swing.SpinnerNumberModel( 10, 0, 100, 5 )
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "minorThickSpacingChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 3"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "sliderValueLabel"
+ "text": "slider value"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 3"
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0 1 2,grow"
+ } )
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$columnConstraints": "[][fill]"
+ "$rowConstraints": "[]0[]"
+ "$layoutConstraints": "ltr,insets 0,hidemode 3"
+ } ) {
+ name: "panel7"
+ "border": new javax.swing.border.TitledBorder( "JProgressBar Control" )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "indeterminateCheckBox"
+ "text": "indeterminate"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "indeterminateProgress", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "squareCheckBox"
+ "text": "square"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "squareChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 0"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "largeHeightCheckBox"
+ "text": "large height"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "largeHeightChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 1,aligny top,growy 0"
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2 1 2,grow"
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 19 1 4"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "sliderLabel2"
+ "text": "baseline"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 20,alignx right,growx 0"
} )
add( new FormComponent( "javax.swing.JSlider" ) {
name: "slider3"
@@ -1162,7 +1336,7 @@ new FormModel {
}
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "changeProgress", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 20 3 1,aligny top,grow 100 0"
+ "value": "cell 1 20 3 1,growx"
} )
add( new FormComponent( "javax.swing.JSlider" ) {
name: "slider5"
@@ -1172,8 +1346,11 @@ new FormModel {
"paintLabels": true
"enabled": false
"value": 30
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 20 3 1,aligny top,growy 0"
+ "value": "cell 1 20 3 1"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "progressBarLabel"
@@ -1181,7 +1358,7 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 21"
} )
- add( new FormComponent( "javax.swing.JProgressBar" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatProgressBar" ) {
name: "progressBar1"
"value": 60
auxiliary() {
@@ -1190,7 +1367,7 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 21 3 1,growx"
} )
- add( new FormComponent( "javax.swing.JProgressBar" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatProgressBar" ) {
name: "progressBar2"
"stringPainted": true
"value": 60
@@ -1200,16 +1377,6 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 21 3 1,growx"
} )
- add( new FormComponent( "javax.swing.JCheckBox" ) {
- name: "indeterminateCheckBox"
- "text": "indeterminate"
- auxiliary() {
- "JavaCodeGenerator.variableLocal": false
- }
- addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "indeterminateProgress", false ) )
- }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 4 21"
- } )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "toolTipLabel"
"text": "JToolTip:"
@@ -1234,7 +1401,7 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 23"
} )
- add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
+ add( new FormContainer( "com.formdev.flatlaf.testing.FlatComponentsTest$TestToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
name: "toolBar1"
add( new FormComponent( "javax.swing.JButton" ) {
name: "button4"
@@ -1289,29 +1456,29 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 23 5 1"
} )
- add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
+ add( new FormContainer( "com.formdev.flatlaf.testing.FlatComponentsTest$TestToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
name: "toolBar3"
- add( new FormComponent( "javax.swing.JButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) {
name: "button26"
"icon": #SwingIcon1
- "$client.JButton.buttonType": "square"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType square
} )
- add( new FormComponent( "javax.swing.JButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) {
name: "button27"
"icon": #SwingIcon2
- "$client.JButton.buttonType": "square"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType square
} )
- add( new FormComponent( "javax.swing.JToggleButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatToggleButton" ) {
name: "toggleButton23"
"icon": #SwingIcon4
"selected": true
- "$client.JButton.buttonType": "square"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType square
} )
- add( new FormComponent( "javax.swing.JToggleButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatToggleButton" ) {
name: "toggleButton24"
"icon": #SwingIcon5
"selected": true
- "$client.JButton.buttonType": "square"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType square
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 23 5 1"
@@ -1322,29 +1489,29 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 23 5 1"
} )
- add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
+ add( new FormContainer( "com.formdev.flatlaf.testing.FlatComponentsTest$TestToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
name: "toolBar4"
- add( new FormComponent( "javax.swing.JButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) {
name: "button28"
"icon": #SwingIcon1
- "$client.JButton.buttonType": "roundRect"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType roundRect
} )
- add( new FormComponent( "javax.swing.JButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatButton" ) {
name: "button29"
"icon": #SwingIcon2
- "$client.JButton.buttonType": "roundRect"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType roundRect
} )
- add( new FormComponent( "javax.swing.JToggleButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatToggleButton" ) {
name: "toggleButton25"
"icon": #SwingIcon4
"selected": true
- "$client.JButton.buttonType": "roundRect"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType roundRect
} )
- add( new FormComponent( "javax.swing.JToggleButton" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatToggleButton" ) {
name: "toggleButton26"
"icon": #SwingIcon5
"selected": true
- "$client.JButton.buttonType": "roundRect"
+ "buttonType": enum com.formdev.flatlaf.extras.components.FlatButton$ButtonType roundRect
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 23 5 1"
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatContainerTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatContainerTest.java
index d950fedf..962659af 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatContainerTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatContainerTest.java
@@ -19,11 +19,12 @@ package com.formdev.flatlaf.testing;
import static com.formdev.flatlaf.FlatClientProperties.*;
import java.awt.*;
import java.awt.event.MouseEvent;
-import java.util.function.BiConsumer;
import javax.swing.*;
import javax.swing.border.*;
import com.formdev.flatlaf.FlatLaf;
-import com.formdev.flatlaf.extras.TriStateCheckBox;
+import com.formdev.flatlaf.extras.components.FlatTabbedPane;
+import com.formdev.flatlaf.extras.components.FlatTabbedPane.*;
+import com.formdev.flatlaf.extras.components.FlatTriStateCheckBox;
import com.formdev.flatlaf.icons.FlatInternalFrameCloseIcon;
import com.formdev.flatlaf.util.ScaledImageIcon;
import com.jgoodies.forms.layout.*;
@@ -46,11 +47,21 @@ public class FlatContainerTest
public FlatContainerTest() {
initComponents();
+ tabPlacementField.init( TabPlacement.class, true );
+ iconPlacementField.init( TabIconPlacement.class, true );
+ tabsPopupPolicyField.init( TabsPopupPolicy.class, true );
+ scrollButtonsPolicyField.init( ScrollButtonsPolicy.class, true );
+ scrollButtonsPlacementField.init( ScrollButtonsPlacement.class, true );
+ tabAreaAlignmentField.init( TabAreaAlignment.class, true );
+ tabAlignmentField.init( TabAlignment.class, true );
+ tabWidthModeField.init( TabWidthMode.class, true );
+
tabCountChanged();
tabsClosableCheckBox.setSelected( true );
tabsClosableChanged();
- putTabbedPanesClientProperty( TABBED_PANE_TAB_CLOSE_TOOLTIPTEXT, "Close" );
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setTabCloseToolTipText( "Close" );
tabScrollCheckBox.setSelected( true );
tabScrollChanged();
@@ -78,6 +89,11 @@ public class FlatContainerTest
putTabbedPanesClientProperty( TABBED_PANE_SHOW_CONTENT_SEPARATOR, showContentSeparator );
}
+ private void hideTabAreaWithOneTabChanged() {
+ Boolean hideTabAreaWithOneTab = hideTabAreaWithOneTabCheckBox.isSelected() ? true : null;
+ putTabbedPanesClientProperty( TABBED_PANE_HIDE_TAB_AREA_WITH_ONE_TAB, hideTabAreaWithOneTab );
+ }
+
private void hasFullBorderChanged() {
Boolean hasFullBorder = hasFullBorderCheckBox.isSelected() ? true : null;
putTabbedPanesClientProperty( TABBED_PANE_HAS_FULL_BORDER, hasFullBorder );
@@ -89,11 +105,11 @@ public class FlatContainerTest
}
private void tabCountChanged() {
- for( JTabbedPane tabbedPane : allTabbedPanes )
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
tabCountChanged( tabbedPane );
}
- private void tabCountChanged( JTabbedPane tabbedPane ) {
+ private void tabCountChanged( FlatTabbedPane tabbedPane ) {
int oldTabCount = tabbedPane.getTabCount();
int newTabCount = (Integer) tabCountSpinner.getValue();
@@ -110,7 +126,7 @@ public class FlatContainerTest
setTabIcons( tabbedPane );
}
- private void addTab( JTabbedPane tabbedPane ) {
+ private void addTab( FlatTabbedPane tabbedPane ) {
switch( tabbedPane.getTabCount() ) {
case 0:
tabbedPane.addTab( "Tab 1", null, new Panel1(), "First tab." );
@@ -120,12 +136,14 @@ public class FlatContainerTest
JComponent tab2 = new Panel2();
tab2.setBorder( new LineBorder( Color.magenta ) );
tabbedPane.addTab( "Second Tab", null, tab2, "This is the second tab." );
+ tabbedPane.setTabCloseToolTipText( 1, "Close Second Tab" );
break;
case 2:
tabbedPane.addTab( "Disabled", createTab( "tab content 3" ) );
tabbedPane.setEnabledAt( 2, false );
tabbedPane.setToolTipTextAt( 2, "Disabled tab." );
+ tabbedPane.setTabCloseToolTipText( 2, "Close Disabled tab" );
break;
case 3:
@@ -153,6 +171,7 @@ public class FlatContainerTest
setTabIcons( tabbedPane );
tabIconSizeSpinner.setEnabled( tabIconsCheckBox.isSelected() );
+ iconPlacementField.setEnabled( tabIconsCheckBox.isSelected() );
}
private void setTabIcons( JTabbedPane tabbedPane ) {
@@ -177,14 +196,10 @@ public class FlatContainerTest
}
private void iconPlacementChanged() {
- Object iconPlacement = null;
- switch( (String) iconPlacementField.getSelectedItem() ) {
- case "leading": iconPlacement = SwingConstants.LEADING; break;
- case "trailing": iconPlacement = SwingConstants.TRAILING; break;
- case "top": iconPlacement = SwingConstants.TOP; break;
- case "bottom": iconPlacement = SwingConstants.BOTTOM; break;
- }
- putTabbedPanesClientProperty( TABBED_PANE_TAB_ICON_PLACEMENT, iconPlacement );
+ TabIconPlacement value = iconPlacementField.getSelectedValue();
+ int iconPlacement = (value != null) ? value.value : -1;
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setTabIconPlacement( iconPlacement );
}
private void customBorderChanged() {
@@ -247,13 +262,8 @@ public class FlatContainerTest
}
private void tabPlacementChanged() {
- int tabPlacement = -1;
- switch( (String) tabPlacementField.getSelectedItem() ) {
- case "top": tabPlacement = SwingConstants.TOP; break;
- case "bottom": tabPlacement = SwingConstants.BOTTOM; break;
- case "left": tabPlacement = SwingConstants.LEFT; break;
- case "right": tabPlacement = SwingConstants.RIGHT; break;
- }
+ TabPlacement value = tabPlacementField.getSelectedValue();
+ int tabPlacement = (value != null) ? value.value : -1;
tabbedPane1.setTabPlacement( (tabPlacement >= 0) ? tabPlacement : SwingConstants.TOP );
tabbedPane2.setTabPlacement( (tabPlacement >= 0) ? tabPlacement : SwingConstants.BOTTOM );
@@ -262,49 +272,39 @@ public class FlatContainerTest
}
private void tabsPopupPolicyChanged() {
- String value = (String) tabsPopupPolicyField.getSelectedItem();
- if( "default".equals( value ) )
- value = null;
- putTabbedPanesClientProperty( TABBED_PANE_TABS_POPUP_POLICY, value );
+ TabsPopupPolicy value = tabsPopupPolicyField.getSelectedValue();
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setTabsPopupPolicy( value );
}
private void scrollButtonsPolicyChanged() {
- String value = (String) scrollButtonsPolicyField.getSelectedItem();
- if( "default".equals( value ) )
- value = null;
- putTabbedPanesClientProperty( TABBED_PANE_SCROLL_BUTTONS_POLICY, value );
+ ScrollButtonsPolicy value = scrollButtonsPolicyField.getSelectedValue();
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setScrollButtonsPolicy( value );
}
private void scrollButtonsPlacementChanged() {
- String value = (String) scrollButtonsPlacementField.getSelectedItem();
- if( "default".equals( value ) )
- value = null;
- putTabbedPanesClientProperty( TABBED_PANE_SCROLL_BUTTONS_PLACEMENT, value );
+ ScrollButtonsPlacement value = scrollButtonsPlacementField.getSelectedValue();
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setScrollButtonsPlacement( value );
}
private void tabAreaAlignmentChanged() {
- String value = (String) tabAreaAlignmentField.getSelectedItem();
- if( "default".equals( value ) )
- value = null;
- putTabbedPanesClientProperty( TABBED_PANE_TAB_AREA_ALIGNMENT, value );
+ TabAreaAlignment value = tabAreaAlignmentField.getSelectedValue();
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setTabAreaAlignment( value );
}
private void tabAlignmentChanged() {
- String value = (String) tabAlignmentField.getSelectedItem();
- Integer tabAlignment = null;
- switch( value ) {
- case "center": tabAlignment = SwingConstants.CENTER; break;
- case "leading": tabAlignment = SwingConstants.LEADING; break;
- case "trailing": tabAlignment = SwingConstants.TRAILING; break;
- }
- putTabbedPanesClientProperty( TABBED_PANE_TAB_ALIGNMENT, tabAlignment );
+ TabAlignment value = tabAlignmentField.getSelectedValue();
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setTabAlignment( value );
}
private void tabWidthModeChanged() {
- String value = (String) tabWidthModeField.getSelectedItem();
- if( "default".equals( value ) )
- value = null;
- putTabbedPanesClientProperty( TABBED_PANE_TAB_WIDTH_MODE, value );
+ TabWidthMode value = tabWidthModeField.getSelectedValue();
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setTabWidthMode( value );
}
private void tabBackForegroundChanged() {
@@ -344,65 +344,78 @@ public class FlatContainerTest
private void tabsClosableChanged() {
boolean closable = tabsClosableCheckBox.isSelected();
- putTabbedPanesClientProperty( TABBED_PANE_TAB_CLOSABLE, closable ? true : null );
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setTabsClosable( closable );
if( closable ) {
- putTabbedPanesClientProperty( TABBED_PANE_TAB_CLOSE_CALLBACK,
- (BiConsumer) (tabbedPane, tabIndex) -> {
+ for( FlatTabbedPane tabbedPane : allTabbedPanes ) {
+ tabbedPane.setTabCloseCallback( (tabbedPane2, tabIndex) -> {
+ String tabTitle = tabbedPane2.getTitleAt( tabIndex );
AWTEvent e = EventQueue.getCurrentEvent();
int modifiers = (e instanceof MouseEvent) ? ((MouseEvent)e).getModifiers() : 0;
- JOptionPane.showMessageDialog( this, "Closed tab '" + tabbedPane.getTitleAt( tabIndex ) + "'."
+
+ tabbedPane2.removeTabAt( tabIndex );
+
+ JOptionPane.showMessageDialog( this, "Closed tab '" + tabTitle + "'."
+ "\n\n(modifiers: " + MouseEvent.getMouseModifiersText( modifiers ) + ")",
"Tab Closed", JOptionPane.PLAIN_MESSAGE );
} );
+ }
}
}
private void secondTabClosableChanged() {
- Boolean value = secondTabClosableCheckBox.getValue();
+ Boolean closable = secondTabClosableCheckBox.getChecked();
- for( JTabbedPane tabbedPane : allTabbedPanes ) {
+ for( FlatTabbedPane tabbedPane : allTabbedPanes ) {
if( tabbedPane.getTabCount() > 1 ) {
- Component c = tabbedPane.getComponentAt( 1 );
- ((JComponent)c).putClientProperty( TABBED_PANE_TAB_CLOSABLE, value );
+ if( closable != null )
+ tabbedPane.setTabClosable( 1, closable );
+ else {
+ JComponent c = (JComponent) tabbedPane.getComponentAt( 1 );
+ c.putClientProperty( TABBED_PANE_TAB_CLOSABLE, null );
+ }
}
}
}
private void tabAreaInsetsChanged() {
Insets insets = tabAreaInsetsCheckBox.isSelected() ? new Insets( 5, 5, 10, 10 ) : null;
- putTabbedPanesClientProperty( TABBED_PANE_TAB_AREA_INSETS, insets );
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setTabAreaInsets( insets );
}
private void smallerTabHeightChanged() {
- Integer tabHeight = smallerTabHeightCheckBox.isSelected() ? 26 : null;
- putTabbedPanesClientProperty( TABBED_PANE_TAB_HEIGHT, tabHeight );
+ int tabHeight = smallerTabHeightCheckBox.isSelected() ? 26 : -1;
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setTabHeight( tabHeight );
}
private void smallerInsetsChanged() {
Insets insets = smallerInsetsCheckBox.isSelected() ? new Insets( 2, 2, 2, 2 ) : null;
- putTabbedPanesClientProperty( TABBED_PANE_TAB_INSETS, insets );
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setTabInsets( insets );
}
private void secondTabWiderChanged() {
Insets insets = secondTabWiderCheckBox.isSelected() ? new Insets( 4, 20, 4, 20 ) : null;
- for( JTabbedPane tabbedPane : allTabbedPanes ) {
- if( tabbedPane.getTabCount() > 1 ) {
- Component c = tabbedPane.getComponentAt( 1 );
- ((JComponent)c).putClientProperty( TABBED_PANE_TAB_INSETS, insets );
- }
+ for( FlatTabbedPane tabbedPane : allTabbedPanes ) {
+ if( tabbedPane.getTabCount() > 1 )
+ tabbedPane.setTabInsets( 1, insets );
}
}
private void minimumTabWidthChanged() {
- Integer minimumTabWidth = minimumTabWidthCheckBox.isSelected() ? 100 : null;
- putTabbedPanesClientProperty( TABBED_PANE_MINIMUM_TAB_WIDTH, minimumTabWidth );
+ int minimumTabWidth = minimumTabWidthCheckBox.isSelected() ? 100 : -1;
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setMinimumTabWidth( minimumTabWidth );
}
private void maximumTabWidthChanged() {
- Integer maximumTabWidth = maximumTabWidthCheckBox.isSelected() ? 60 : null;
- putTabbedPanesClientProperty( TABBED_PANE_MAXIMUM_TAB_WIDTH, maximumTabWidth );
+ int maximumTabWidth = maximumTabWidthCheckBox.isSelected() ? 60 : -1;
+ for( FlatTabbedPane tabbedPane : allTabbedPanes )
+ tabbedPane.setMaximumTabWidth( maximumTabWidth );
}
private void initComponents() {
@@ -419,10 +432,10 @@ public class FlatContainerTest
JPanel panel13 = new JPanel();
JLabel label4 = new JLabel();
JLabel tabbedPaneLabel = new JLabel();
- tabbedPane1 = new JTabbedPane();
- tabbedPane3 = new JTabbedPane();
- tabbedPane2 = new JTabbedPane();
- tabbedPane4 = new JTabbedPane();
+ tabbedPane1 = new FlatTabbedPane();
+ tabbedPane3 = new FlatTabbedPane();
+ tabbedPane2 = new FlatTabbedPane();
+ tabbedPane4 = new FlatTabbedPane();
FlatTestFrame.NoRightToLeftPanel tabbedPaneControlPanel = new FlatTestFrame.NoRightToLeftPanel();
tabScrollCheckBox = new JCheckBox();
JLabel tabCountLabel = new JLabel();
@@ -431,24 +444,24 @@ public class FlatContainerTest
htmlTabsCheckBox = new JCheckBox();
multiLineTabsCheckBox = new JCheckBox();
JLabel tabsPopupPolicyLabel = new JLabel();
- tabsPopupPolicyField = new JComboBox<>();
+ tabsPopupPolicyField = new FlatTestEnumComboBox<>();
tabBackForegroundCheckBox = new JCheckBox();
JLabel scrollButtonsPolicyLabel = new JLabel();
- scrollButtonsPolicyField = new JComboBox<>();
+ scrollButtonsPolicyField = new FlatTestEnumComboBox<>();
tabIconsCheckBox = new JCheckBox();
tabIconSizeSpinner = new JSpinner();
- iconPlacementField = new JComboBox<>();
+ iconPlacementField = new FlatTestEnumComboBox<>();
JLabel scrollButtonsPlacementLabel = new JLabel();
- scrollButtonsPlacementField = new JComboBox<>();
+ scrollButtonsPlacementField = new FlatTestEnumComboBox<>();
tabsClosableCheckBox = new JCheckBox();
JLabel tabPlacementLabel = new JLabel();
- tabPlacementField = new JComboBox<>();
- secondTabClosableCheckBox = new TriStateCheckBox();
+ tabPlacementField = new FlatTestEnumComboBox<>();
+ secondTabClosableCheckBox = new FlatTriStateCheckBox();
JLabel tabAreaAlignmentLabel = new JLabel();
- tabAreaAlignmentField = new JComboBox<>();
- tabAlignmentField = new JComboBox<>();
+ tabAreaAlignmentField = new FlatTestEnumComboBox<>();
+ tabAlignmentField = new FlatTestEnumComboBox<>();
JLabel tabWidthModeLabel = new JLabel();
- tabWidthModeField = new JComboBox<>();
+ tabWidthModeField = new FlatTestEnumComboBox<>();
leadingComponentCheckBox = new JCheckBox();
customBorderCheckBox = new JCheckBox();
tabAreaInsetsCheckBox = new JCheckBox();
@@ -461,6 +474,7 @@ public class FlatContainerTest
maximumTabWidthCheckBox = new JCheckBox();
showTabSeparatorsCheckBox = new JCheckBox();
secondTabWiderCheckBox = new JCheckBox();
+ hideTabAreaWithOneTabCheckBox = new JCheckBox();
CellConstraints cc = new CellConstraints();
//======== this ========
@@ -579,6 +593,7 @@ public class FlatContainerTest
"[]" +
"[]para" +
"[]" +
+ "[]" +
"[]"));
//---- tabScrollCheckBox ----
@@ -616,11 +631,6 @@ public class FlatContainerTest
tabbedPaneControlPanel.add(tabsPopupPolicyLabel, "cell 0 1");
//---- tabsPopupPolicyField ----
- tabsPopupPolicyField.setModel(new DefaultComboBoxModel<>(new String[] {
- "default",
- "asNeeded",
- "never"
- }));
tabsPopupPolicyField.addActionListener(e -> tabsPopupPolicyChanged());
tabbedPaneControlPanel.add(tabsPopupPolicyField, "cell 1 1");
@@ -634,12 +644,6 @@ public class FlatContainerTest
tabbedPaneControlPanel.add(scrollButtonsPolicyLabel, "cell 0 2");
//---- scrollButtonsPolicyField ----
- scrollButtonsPolicyField.setModel(new DefaultComboBoxModel<>(new String[] {
- "default",
- "asNeededSingle",
- "asNeeded",
- "never"
- }));
scrollButtonsPolicyField.addActionListener(e -> scrollButtonsPolicyChanged());
tabbedPaneControlPanel.add(scrollButtonsPolicyField, "cell 1 2");
@@ -655,12 +659,7 @@ public class FlatContainerTest
tabbedPaneControlPanel.add(tabIconSizeSpinner, "cell 2 2");
//---- iconPlacementField ----
- iconPlacementField.setModel(new DefaultComboBoxModel<>(new String[] {
- "leading",
- "trailing",
- "top",
- "bottom"
- }));
+ iconPlacementField.setEnabled(false);
iconPlacementField.addActionListener(e -> iconPlacementChanged());
tabbedPaneControlPanel.add(iconPlacementField, "cell 2 2");
@@ -669,11 +668,6 @@ public class FlatContainerTest
tabbedPaneControlPanel.add(scrollButtonsPlacementLabel, "cell 0 3");
//---- scrollButtonsPlacementField ----
- scrollButtonsPlacementField.setModel(new DefaultComboBoxModel<>(new String[] {
- "default",
- "both",
- "trailing"
- }));
scrollButtonsPlacementField.addActionListener(e -> scrollButtonsPlacementChanged());
tabbedPaneControlPanel.add(scrollButtonsPlacementField, "cell 1 3");
@@ -687,13 +681,6 @@ public class FlatContainerTest
tabbedPaneControlPanel.add(tabPlacementLabel, "cell 0 4");
//---- tabPlacementField ----
- tabPlacementField.setModel(new DefaultComboBoxModel<>(new String[] {
- "default",
- "top",
- "bottom",
- "left",
- "right"
- }));
tabPlacementField.addActionListener(e -> tabPlacementChanged());
tabbedPaneControlPanel.add(tabPlacementField, "cell 1 4");
@@ -707,23 +694,10 @@ public class FlatContainerTest
tabbedPaneControlPanel.add(tabAreaAlignmentLabel, "cell 0 5");
//---- tabAreaAlignmentField ----
- tabAreaAlignmentField.setModel(new DefaultComboBoxModel<>(new String[] {
- "default",
- "leading",
- "trailing",
- "center",
- "fill"
- }));
tabAreaAlignmentField.addActionListener(e -> tabAreaAlignmentChanged());
tabbedPaneControlPanel.add(tabAreaAlignmentField, "cell 1 5");
//---- tabAlignmentField ----
- tabAlignmentField.setModel(new DefaultComboBoxModel<>(new String[] {
- "default",
- "leading",
- "trailing",
- "center"
- }));
tabAlignmentField.addActionListener(e -> tabAlignmentChanged());
tabbedPaneControlPanel.add(tabAlignmentField, "cell 1 5");
@@ -732,12 +706,6 @@ public class FlatContainerTest
tabbedPaneControlPanel.add(tabWidthModeLabel, "cell 2 5");
//---- tabWidthModeField ----
- tabWidthModeField.setModel(new DefaultComboBoxModel<>(new String[] {
- "default",
- "preferred",
- "equal",
- "compact"
- }));
tabWidthModeField.addActionListener(e -> tabWidthModeChanged());
tabbedPaneControlPanel.add(tabWidthModeField, "cell 2 5");
@@ -800,38 +768,43 @@ public class FlatContainerTest
secondTabWiderCheckBox.setText("Second Tab insets wider (4,20,4,20)");
secondTabWiderCheckBox.addActionListener(e -> secondTabWiderChanged());
tabbedPaneControlPanel.add(secondTabWiderCheckBox, "cell 2 9");
+
+ //---- hideTabAreaWithOneTabCheckBox ----
+ hideTabAreaWithOneTabCheckBox.setText("Hide tab area with one tab");
+ hideTabAreaWithOneTabCheckBox.addActionListener(e -> hideTabAreaWithOneTabChanged());
+ tabbedPaneControlPanel.add(hideTabAreaWithOneTabCheckBox, "cell 1 10");
}
panel9.add(tabbedPaneControlPanel, cc.xywh(1, 11, 3, 1));
}
add(panel9, "cell 0 0");
// JFormDesigner - End of component initialization //GEN-END:initComponents
- allTabbedPanes = new JTabbedPane[] { tabbedPane1, tabbedPane2, tabbedPane3, tabbedPane4 };
+ allTabbedPanes = new FlatTabbedPane[] { tabbedPane1, tabbedPane2, tabbedPane3, tabbedPane4 };
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
- private JTabbedPane tabbedPane1;
- private JTabbedPane tabbedPane3;
- private JTabbedPane tabbedPane2;
- private JTabbedPane tabbedPane4;
+ private FlatTabbedPane tabbedPane1;
+ private FlatTabbedPane tabbedPane3;
+ private FlatTabbedPane tabbedPane2;
+ private FlatTabbedPane tabbedPane4;
private JCheckBox tabScrollCheckBox;
private JSpinner tabCountSpinner;
private JCheckBox customTabsCheckBox;
private JCheckBox htmlTabsCheckBox;
private JCheckBox multiLineTabsCheckBox;
- private JComboBox tabsPopupPolicyField;
+ private FlatTestEnumComboBox tabsPopupPolicyField;
private JCheckBox tabBackForegroundCheckBox;
- private JComboBox scrollButtonsPolicyField;
+ private FlatTestEnumComboBox scrollButtonsPolicyField;
private JCheckBox tabIconsCheckBox;
private JSpinner tabIconSizeSpinner;
- private JComboBox iconPlacementField;
- private JComboBox scrollButtonsPlacementField;
+ private FlatTestEnumComboBox iconPlacementField;
+ private FlatTestEnumComboBox scrollButtonsPlacementField;
private JCheckBox tabsClosableCheckBox;
- private JComboBox tabPlacementField;
- private TriStateCheckBox secondTabClosableCheckBox;
- private JComboBox tabAreaAlignmentField;
- private JComboBox tabAlignmentField;
- private JComboBox tabWidthModeField;
+ private FlatTestEnumComboBox tabPlacementField;
+ private FlatTriStateCheckBox secondTabClosableCheckBox;
+ private FlatTestEnumComboBox tabAreaAlignmentField;
+ private FlatTestEnumComboBox tabAlignmentField;
+ private FlatTestEnumComboBox tabWidthModeField;
private JCheckBox leadingComponentCheckBox;
private JCheckBox customBorderCheckBox;
private JCheckBox tabAreaInsetsCheckBox;
@@ -844,9 +817,40 @@ public class FlatContainerTest
private JCheckBox maximumTabWidthCheckBox;
private JCheckBox showTabSeparatorsCheckBox;
private JCheckBox secondTabWiderCheckBox;
+ private JCheckBox hideTabAreaWithOneTabCheckBox;
// JFormDesigner - End of variables declaration //GEN-END:variables
- private JTabbedPane[] allTabbedPanes;
+ private FlatTabbedPane[] allTabbedPanes;
+
+ //---- enum TabPlacement --------------------------------------------------
+
+ enum TabPlacement {
+ top( SwingConstants.TOP ),
+ bottom( SwingConstants.BOTTOM ),
+ left( SwingConstants.LEFT ),
+ right( SwingConstants.RIGHT );
+
+ public final int value;
+
+ TabPlacement( int value ) {
+ this.value = value;
+ }
+ };
+
+ //---- enum TabIconPlacement ----------------------------------------------
+
+ enum TabIconPlacement {
+ leading( SwingConstants.LEADING ),
+ trailing( SwingConstants.TRAILING ),
+ top( SwingConstants.TOP ),
+ bottom( SwingConstants.BOTTOM );
+
+ public final int value;
+
+ TabIconPlacement( int value ) {
+ this.value = value;
+ }
+ };
//---- class Tab1Panel ----------------------------------------------------
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatContainerTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatContainerTest.jfd
index 47954bc0..62d181c7 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatContainerTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatContainerTest.jfd
@@ -91,7 +91,7 @@ new FormModel {
"gridX": 1
"gridY": 5
} )
- add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
+ add( new FormContainer( "com.formdev.flatlaf.extras.components.FlatTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
name: "tabbedPane1"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
@@ -100,7 +100,7 @@ new FormModel {
"gridX": 1
"gridY": 7
} )
- add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
+ add( new FormContainer( "com.formdev.flatlaf.extras.components.FlatTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
name: "tabbedPane3"
"tabPlacement": 2
auxiliary() {
@@ -110,7 +110,7 @@ new FormModel {
"gridX": 3
"gridY": 7
} )
- add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
+ add( new FormContainer( "com.formdev.flatlaf.extras.components.FlatTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
name: "tabbedPane2"
"tabPlacement": 3
auxiliary() {
@@ -119,7 +119,7 @@ new FormModel {
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridY": 9
} )
- add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
+ add( new FormContainer( "com.formdev.flatlaf.extras.components.FlatTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
name: "tabbedPane4"
"tabPlacement": 4
auxiliary() {
@@ -132,7 +132,7 @@ new FormModel {
add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestFrame$NoRightToLeftPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets 0,hidemode 3"
"$columnConstraints": "[][fill][]"
- "$rowConstraints": "[center][][][][][]para[][]para[][]"
+ "$rowConstraints": "[center][][][][][]para[][]para[][][]"
} ) {
name: "tabbedPaneControlPanel"
"opaque": false
@@ -202,17 +202,11 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 1"
} )
- add( new FormComponent( "javax.swing.JComboBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
name: "tabsPopupPolicyField"
- "model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "default"
- addElement( "default" )
- addElement( "asNeeded" )
- addElement( "never" )
- }
auxiliary() {
"JavaCodeGenerator.variableLocal": false
- "JavaCodeGenerator.typeParameters": "String"
+ "JavaCodeGenerator.typeParameters": "TabsPopupPolicy"
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabsPopupPolicyChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -234,18 +228,11 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 2"
} )
- add( new FormComponent( "javax.swing.JComboBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
name: "scrollButtonsPolicyField"
- "model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "default"
- addElement( "default" )
- addElement( "asNeededSingle" )
- addElement( "asNeeded" )
- addElement( "never" )
- }
auxiliary() {
"JavaCodeGenerator.variableLocal": false
- "JavaCodeGenerator.typeParameters": "String"
+ "JavaCodeGenerator.typeParameters": "ScrollButtonsPolicy"
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "scrollButtonsPolicyChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -280,18 +267,12 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 2"
} )
- add( new FormComponent( "javax.swing.JComboBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
name: "iconPlacementField"
- "model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "leading"
- addElement( "leading" )
- addElement( "trailing" )
- addElement( "top" )
- addElement( "bottom" )
- }
+ "enabled": false
auxiliary() {
"JavaCodeGenerator.variableLocal": false
- "JavaCodeGenerator.typeParameters": "String"
+ "JavaCodeGenerator.typeParameters": "TabIconPlacement"
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "iconPlacementChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -303,17 +284,11 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 3"
} )
- add( new FormComponent( "javax.swing.JComboBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
name: "scrollButtonsPlacementField"
- "model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "default"
- addElement( "default" )
- addElement( "both" )
- addElement( "trailing" )
- }
auxiliary() {
"JavaCodeGenerator.variableLocal": false
- "JavaCodeGenerator.typeParameters": "String"
+ "JavaCodeGenerator.typeParameters": "ScrollButtonsPlacement"
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "scrollButtonsPlacementChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -335,25 +310,17 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 4"
} )
- add( new FormComponent( "javax.swing.JComboBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
name: "tabPlacementField"
- "model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "default"
- addElement( "default" )
- addElement( "top" )
- addElement( "bottom" )
- addElement( "left" )
- addElement( "right" )
- }
auxiliary() {
"JavaCodeGenerator.variableLocal": false
- "JavaCodeGenerator.typeParameters": "String"
+ "JavaCodeGenerator.typeParameters": "TabPlacement"
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabPlacementChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 4"
} )
- add( new FormComponent( "com.formdev.flatlaf.extras.TriStateCheckBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "secondTabClosableCheckBox"
"text": "Second Tab closable"
auxiliary() {
@@ -369,36 +336,21 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 5"
} )
- add( new FormComponent( "javax.swing.JComboBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
name: "tabAreaAlignmentField"
- "model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "default"
- addElement( "default" )
- addElement( "leading" )
- addElement( "trailing" )
- addElement( "center" )
- addElement( "fill" )
- }
auxiliary() {
"JavaCodeGenerator.variableLocal": false
- "JavaCodeGenerator.typeParameters": "String"
+ "JavaCodeGenerator.typeParameters": "TabAreaAlignment"
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabAreaAlignmentChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 5"
} )
- add( new FormComponent( "javax.swing.JComboBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
name: "tabAlignmentField"
- "model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "default"
- addElement( "default" )
- addElement( "leading" )
- addElement( "trailing" )
- addElement( "center" )
- }
auxiliary() {
"JavaCodeGenerator.variableLocal": false
- "JavaCodeGenerator.typeParameters": "String"
+ "JavaCodeGenerator.typeParameters": "TabAlignment"
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabAlignmentChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -410,18 +362,11 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 5"
} )
- add( new FormComponent( "javax.swing.JComboBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatTestEnumComboBox" ) {
name: "tabWidthModeField"
- "model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "default"
- addElement( "default" )
- addElement( "preferred" )
- addElement( "equal" )
- addElement( "compact" )
- }
auxiliary() {
"JavaCodeGenerator.variableLocal": false
- "JavaCodeGenerator.typeParameters": "String"
+ "JavaCodeGenerator.typeParameters": "TabWidthMode"
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tabWidthModeChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -547,6 +492,16 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 9"
} )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "hideTabAreaWithOneTabCheckBox"
+ "text": "Hide tab area with one tab"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "hideTabAreaWithOneTabChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 10"
+ } )
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridY": 11
"gridWidth": 3
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.java
index 72fd3b19..265eca32 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.java
@@ -21,6 +21,7 @@ import javax.swing.*;
import com.formdev.flatlaf.util.StringUtils;
import com.formdev.flatlaf.util.UIScale;
import net.miginfocom.swing.*;
+import org.jdesktop.swingx.*;
/**
* @author Karl Tauber
@@ -89,6 +90,12 @@ public class FlatHtmlTest
label14 = new JLabel();
label15 = new JLabel();
label16 = new JLabel();
+ label17 = new JLabel();
+ comboBox1 = new JComboBox<>();
+ comboBox2 = new JComboBox<>();
+ label18 = new JLabel();
+ xHyperlink1 = new JXHyperlink();
+ xHyperlink2 = new JXHyperlink();
label1 = new JLabel();
scrollPane15 = new JScrollPane();
editorPane1 = new JEditorPane();
@@ -150,6 +157,8 @@ public class FlatHtmlTest
"[]" +
"[]" +
"[]" +
+ "[]" +
+ "[]" +
"[]"));
//---- label5 ----
@@ -283,6 +292,38 @@ public class FlatHtmlTest
label16.setText("(move mouse here)");
label16.setToolTipText("Some text");
panel1.add(label16, "cell 2 9");
+
+ //---- label17 ----
+ label17.setText("JComboBox:");
+ panel1.add(label17, "cell 0 10");
+
+ //---- comboBox1 ----
+ comboBox1.setModel(new DefaultComboBoxModel<>(new String[] {
+ "Some Bold Text",
+ "abc",
+ "def"
+ }));
+ panel1.add(comboBox1, "cell 1 10");
+
+ //---- comboBox2 ----
+ comboBox2.setModel(new DefaultComboBoxModel<>(new String[] {
+ "Some Text",
+ "abc",
+ "def"
+ }));
+ panel1.add(comboBox2, "cell 2 10");
+
+ //---- label18 ----
+ label18.setText("JXHyperlink:");
+ panel1.add(label18, "cell 0 11");
+
+ //---- xHyperlink1 ----
+ xHyperlink1.setText("Some Bold Text");
+ panel1.add(xHyperlink1, "cell 1 11");
+
+ //---- xHyperlink2 ----
+ xHyperlink2.setText("Some text");
+ panel1.add(xHyperlink2, "cell 2 11");
}
add(panel1, "cell 4 0 1 3,aligny top,growy 0");
@@ -400,6 +441,12 @@ public class FlatHtmlTest
private JLabel label14;
private JLabel label15;
private JLabel label16;
+ private JLabel label17;
+ private JComboBox comboBox1;
+ private JComboBox comboBox2;
+ private JLabel label18;
+ private JXHyperlink xHyperlink1;
+ private JXHyperlink xHyperlink2;
private JLabel label1;
private JScrollPane scrollPane15;
private JEditorPane editorPane1;
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.jfd
index 785f930a..38574374 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -36,7 +36,7 @@ new FormModel {
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets 0,hidemode 3"
"$columnConstraints": "[fill][fill][fill]"
- "$rowConstraints": "[][][][][][][][][][]"
+ "$rowConstraints": "[][][][][][][][][][][][]"
} ) {
name: "panel1"
add( new FormComponent( "javax.swing.JLabel" ) {
@@ -227,6 +227,52 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 9"
} )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label17"
+ "text": "JComboBox:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 10"
+ } )
+ add( new FormComponent( "javax.swing.JComboBox" ) {
+ name: "comboBox1"
+ "model": new javax.swing.DefaultComboBoxModel {
+ selectedItem: "Some Bold Text"
+ addElement( "Some Bold Text" )
+ addElement( "abc" )
+ addElement( "def" )
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 10"
+ } )
+ add( new FormComponent( "javax.swing.JComboBox" ) {
+ name: "comboBox2"
+ "model": new javax.swing.DefaultComboBoxModel {
+ selectedItem: "Some Text"
+ addElement( "Some Text" )
+ addElement( "abc" )
+ addElement( "def" )
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 10"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label18"
+ "text": "JXHyperlink:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 11"
+ } )
+ add( new FormComponent( "org.jdesktop.swingx.JXHyperlink" ) {
+ name: "xHyperlink1"
+ "text": "Some Bold Text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 11"
+ } )
+ add( new FormComponent( "org.jdesktop.swingx.JXHyperlink" ) {
+ name: "xHyperlink2"
+ "text": "Some text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 11"
+ } )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 0 1 3,aligny top,growy 0"
} )
@@ -296,7 +342,7 @@ new FormModel {
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
- "size": new java.awt.Dimension( 695, 755 )
+ "size": new java.awt.Dimension( 820, 755 )
} )
}
}
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 ede122a5..c7cefe9d 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
@@ -19,7 +19,7 @@ package com.formdev.flatlaf.testing;
import java.awt.*;
import java.beans.PropertyVetoException;
import javax.swing.*;
-import com.formdev.flatlaf.extras.TriStateCheckBox;
+import com.formdev.flatlaf.extras.components.FlatTriStateCheckBox;
import com.formdev.flatlaf.icons.FlatFileViewFloppyDriveIcon;
import com.formdev.flatlaf.util.UIScale;
import net.miginfocom.swing.*;
@@ -63,9 +63,9 @@ public class FlatInternalFrameTest
maximizableCheckBox.isSelected(),
iconifiableCheckBox.isSelected() );
- if( iconCheckBox.getState() == TriStateCheckBox.State.SELECTED )
+ if( iconCheckBox.getState() == FlatTriStateCheckBox.State.SELECTED )
internalFrame.setFrameIcon( new FlatFileViewFloppyDriveIcon() );
- else if( iconCheckBox.getState() == TriStateCheckBox.State.UNSELECTED )
+ else if( iconCheckBox.getState() == FlatTriStateCheckBox.State.UNSELECTED )
internalFrame.setFrameIcon( null );
if( menuBarCheckBox.isSelected() ) {
@@ -115,7 +115,7 @@ public class FlatInternalFrameTest
closableCheckBox = new JCheckBox();
iconifiableCheckBox = new JCheckBox();
maximizableCheckBox = new JCheckBox();
- iconCheckBox = new TriStateCheckBox();
+ iconCheckBox = new FlatTriStateCheckBox();
menuBarCheckBox = new JCheckBox();
titleLabel = new JLabel();
titleField = new JTextField();
@@ -207,7 +207,7 @@ public class FlatInternalFrameTest
private JCheckBox closableCheckBox;
private JCheckBox iconifiableCheckBox;
private JCheckBox maximizableCheckBox;
- private TriStateCheckBox iconCheckBox;
+ private FlatTriStateCheckBox iconCheckBox;
private JCheckBox menuBarCheckBox;
private JLabel titleLabel;
private JTextField titleField;
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 d9a9a8ef..69f42896 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
@@ -50,7 +50,7 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 1,alignx left,growx 0"
} )
- add( new FormComponent( "com.formdev.flatlaf.extras.TriStateCheckBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "iconCheckBox"
"text": "Frame icon"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatMenusTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatMenusTest.java
index a61d2322..abfdb288 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatMenusTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatMenusTest.java
@@ -211,11 +211,15 @@ public class FlatMenusTest
JMenuItem menuItem3 = new JMenuItem();
JCheckBoxMenuItem checkBoxMenuItem3 = new JCheckBoxMenuItem();
JRadioButtonMenuItem radioButtonMenuItem3 = new JRadioButtonMenuItem();
+ JCheckBoxMenuItem checkBoxMenuItem9 = new JCheckBoxMenuItem();
+ JRadioButtonMenuItem radioButtonMenuItem7 = new JRadioButtonMenuItem();
JPanel panel4 = new JPanel();
JMenu menu4 = new JMenu();
JMenuItem menuItem4 = new JMenuItem();
JCheckBoxMenuItem checkBoxMenuItem4 = new JCheckBoxMenuItem();
JRadioButtonMenuItem radioButtonMenuItem4 = new JRadioButtonMenuItem();
+ JCheckBoxMenuItem checkBoxMenuItem10 = new JCheckBoxMenuItem();
+ JRadioButtonMenuItem radioButtonMenuItem11 = new JRadioButtonMenuItem();
JLabel popupMenuLabel = new JLabel();
JButton showPopupMenuButton = new JButton();
armedCheckBox = new JCheckBox();
@@ -670,6 +674,8 @@ public class FlatMenusTest
"[]" +
"[]" +
"[]" +
+ "[]" +
+ "[]" +
"[]"));
//======== menu3 ========
@@ -696,6 +702,20 @@ public class FlatMenusTest
radioButtonMenuItem3.setSelected(true);
radioButtonMenuItem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
panel3.add(radioButtonMenuItem3, "cell 0 3");
+
+ //---- checkBoxMenuItem9 ----
+ checkBoxMenuItem9.setText("selected");
+ checkBoxMenuItem9.setSelected(true);
+ checkBoxMenuItem9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
+ checkBoxMenuItem9.setIcon(new ImageIcon(getClass().getResource("/com/formdev/flatlaf/testing/disabled_icons_test/intellij-showReadAccess.png")));
+ panel3.add(checkBoxMenuItem9, "cell 0 4");
+
+ //---- radioButtonMenuItem7 ----
+ radioButtonMenuItem7.setText("selected");
+ radioButtonMenuItem7.setSelected(true);
+ radioButtonMenuItem7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
+ radioButtonMenuItem7.setIcon(new ImageIcon(getClass().getResource("/com/formdev/flatlaf/testing/disabled_icons_test/intellij-showReadAccess.png")));
+ panel3.add(radioButtonMenuItem7, "cell 0 5");
}
add(panel3, "cell 3 1");
@@ -710,6 +730,8 @@ public class FlatMenusTest
"[]" +
"[]" +
"[]" +
+ "[]" +
+ "[]" +
"[]"));
//======== menu4 ========
@@ -739,6 +761,22 @@ public class FlatMenusTest
radioButtonMenuItem4.setSelected(true);
radioButtonMenuItem4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
panel4.add(radioButtonMenuItem4, "cell 0 3");
+
+ //---- checkBoxMenuItem10 ----
+ checkBoxMenuItem10.setText("selected disabled");
+ checkBoxMenuItem10.setEnabled(false);
+ checkBoxMenuItem10.setSelected(true);
+ checkBoxMenuItem10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
+ checkBoxMenuItem10.setIcon(new ImageIcon(getClass().getResource("/com/formdev/flatlaf/testing/disabled_icons_test/intellij-showReadAccess.png")));
+ panel4.add(checkBoxMenuItem10, "cell 0 4");
+
+ //---- radioButtonMenuItem11 ----
+ radioButtonMenuItem11.setText("selected disabled");
+ radioButtonMenuItem11.setEnabled(false);
+ radioButtonMenuItem11.setSelected(true);
+ radioButtonMenuItem11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
+ radioButtonMenuItem11.setIcon(new ImageIcon(getClass().getResource("/com/formdev/flatlaf/testing/disabled_icons_test/intellij-showReadAccess.png")));
+ panel4.add(radioButtonMenuItem11, "cell 0 5");
}
add(panel4, "cell 4 1");
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatMenusTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatMenusTest.jfd
index da5bdd77..5be13f68 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatMenusTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatMenusTest.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.2.0.298" Java: "15" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -454,7 +454,7 @@ new FormModel {
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$columnConstraints": "[fill]"
- "$rowConstraints": "[][][][]"
+ "$rowConstraints": "[][][][][][]"
"$layoutConstraints": "insets 0"
} ) {
name: "panel3"
@@ -490,12 +490,30 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 3"
} )
+ add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) {
+ name: "checkBoxMenuItem9"
+ "text": "selected"
+ "selected": true
+ "accelerator": #KeyStroke1
+ "icon": &SwingIcon3 new com.jformdesigner.model.SwingIcon( 0, "/com/formdev/flatlaf/testing/disabled_icons_test/intellij-showReadAccess.png" )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 4"
+ } )
+ add( new FormComponent( "javax.swing.JRadioButtonMenuItem" ) {
+ name: "radioButtonMenuItem7"
+ "text": "selected"
+ "selected": true
+ "accelerator": #KeyStroke1
+ "icon": #SwingIcon3
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 5"
+ } )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 1"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$columnConstraints": "[fill]"
- "$rowConstraints": "[][][][]"
+ "$rowConstraints": "[][][][][][]"
"$layoutConstraints": "insets 0"
} ) {
name: "panel4"
@@ -534,6 +552,26 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 3"
} )
+ add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) {
+ name: "checkBoxMenuItem10"
+ "text": "selected disabled"
+ "enabled": false
+ "selected": true
+ "accelerator": #KeyStroke1
+ "icon": &SwingIcon4 new com.jformdesigner.model.SwingIcon( 0, "/com/formdev/flatlaf/testing/disabled_icons_test/intellij-showReadAccess.png" )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 4"
+ } )
+ add( new FormComponent( "javax.swing.JRadioButtonMenuItem" ) {
+ name: "radioButtonMenuItem11"
+ "text": "selected disabled"
+ "enabled": false
+ "selected": true
+ "accelerator": #KeyStroke1
+ "icon": #SwingIcon4
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 5"
+ } )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 1"
} )
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingStringTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingStringTest.java
index 155a65c3..d7fa7c3e 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingStringTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingStringTest.java
@@ -180,7 +180,7 @@ public class FlatPaintingStringTest
@Override
protected void paintComponent( Graphics g ) {
Graphics2D g2 = (Graphics2D) g;
- FlatUIUtils.setRenderingHints( g2 );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g2 );
// simulate component y position at a fraction
if( scaleFactor > 1 && SystemInfo.isJava_9_orLater )
@@ -241,6 +241,8 @@ public class FlatPaintingStringTest
double textY = t.getTranslateY() + (y * t.getScaleY());
setToolTipText( textY + " + " + yCorrection + " = " + (textY + yCorrection) );
}
+
+ FlatUIUtils.resetRenderingHints( g2, oldRenderingHints );
}
private int scale( int value ) {
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingTest.java
index e6d48dc6..ae9642b2 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingTest.java
@@ -50,6 +50,7 @@ public class FlatPaintingTest
FlatPaintingTest.BorderPainter borderPainter1 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter6 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter13 = new FlatPaintingTest.BorderPainter();
+ FlatPaintingTest.BorderPainter borderPainter25 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter17 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter21 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter29 = new FlatPaintingTest.BorderPainter();
@@ -57,6 +58,7 @@ public class FlatPaintingTest
FlatPaintingTest.BorderPainter borderPainter2 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter7 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter14 = new FlatPaintingTest.BorderPainter();
+ FlatPaintingTest.BorderPainter borderPainter30 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter18 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter22 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter28 = new FlatPaintingTest.BorderPainter();
@@ -64,6 +66,7 @@ public class FlatPaintingTest
FlatPaintingTest.BorderPainter borderPainter3 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter5 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter15 = new FlatPaintingTest.BorderPainter();
+ FlatPaintingTest.BorderPainter borderPainter31 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter19 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter23 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter27 = new FlatPaintingTest.BorderPainter();
@@ -71,6 +74,7 @@ public class FlatPaintingTest
FlatPaintingTest.BorderPainter borderPainter4 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter8 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter16 = new FlatPaintingTest.BorderPainter();
+ FlatPaintingTest.BorderPainter borderPainter32 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter20 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter24 = new FlatPaintingTest.BorderPainter();
FlatPaintingTest.BorderPainter borderPainter26 = new FlatPaintingTest.BorderPainter();
@@ -78,6 +82,7 @@ public class FlatPaintingTest
JLabel label2 = new JLabel();
JLabel label3 = new JLabel();
JLabel label4 = new JLabel();
+ JLabel label8 = new JLabel();
JLabel label5 = new JLabel();
JLabel label6 = new JLabel();
JLabel label7 = new JLabel();
@@ -91,8 +96,9 @@ public class FlatPaintingTest
"ltr,insets dialog,hidemode 3",
// columns
"[fill]" +
- "[left]" +
- "[left]" +
+ "[fill]" +
+ "[fill]" +
+ "[fill]" +
"[fill]" +
"[fill]" +
"[fill]" +
@@ -134,27 +140,34 @@ public class FlatPaintingTest
borderPainter13.setArc(20);
flatTestPanel1.add(borderPainter13, "cell 3 0");
+ //---- borderPainter25 ----
+ borderPainter25.setScale(8.0F);
+ borderPainter25.setPaintBorder(false);
+ borderPainter25.setPaintFocus(false);
+ borderPainter25.setArc(20);
+ flatTestPanel1.add(borderPainter25, "cell 4 0");
+
//---- borderPainter17 ----
borderPainter17.setScale(8.0F);
borderPainter17.setPaintBorder(false);
borderPainter17.setPaintFocus(false);
borderPainter17.setFocusWidth(0);
borderPainter17.setArc(0);
- flatTestPanel1.add(borderPainter17, "cell 4 0");
+ flatTestPanel1.add(borderPainter17, "cell 5 0");
//---- borderPainter21 ----
borderPainter21.setScale(8.0F);
borderPainter21.setPaintBorder(false);
borderPainter21.setPaintFocus(false);
borderPainter21.setArc(0);
- flatTestPanel1.add(borderPainter21, "cell 5 0");
+ flatTestPanel1.add(borderPainter21, "cell 6 0");
//---- borderPainter29 ----
borderPainter29.setScale(8.0F);
borderPainter29.setArc(3);
borderPainter29.setFocusWidth(1);
borderPainter29.setLineWidth(3);
- flatTestPanel1.add(borderPainter29, "cell 7 0");
+ flatTestPanel1.add(borderPainter29, "cell 8 0");
//---- borderPainter10 ----
borderPainter10.setScale(8.0F);
@@ -185,27 +198,34 @@ public class FlatPaintingTest
borderPainter14.setArc(20);
flatTestPanel1.add(borderPainter14, "cell 3 1");
+ //---- borderPainter30 ----
+ borderPainter30.setScale(8.0F);
+ borderPainter30.setPaintBackground(false);
+ borderPainter30.setPaintFocus(false);
+ borderPainter30.setArc(20);
+ flatTestPanel1.add(borderPainter30, "cell 4 1");
+
//---- borderPainter18 ----
borderPainter18.setScale(8.0F);
borderPainter18.setPaintBackground(false);
borderPainter18.setPaintFocus(false);
borderPainter18.setFocusWidth(0);
borderPainter18.setArc(0);
- flatTestPanel1.add(borderPainter18, "cell 4 1");
+ flatTestPanel1.add(borderPainter18, "cell 5 1");
//---- borderPainter22 ----
borderPainter22.setScale(8.0F);
borderPainter22.setPaintBackground(false);
borderPainter22.setPaintFocus(false);
borderPainter22.setArc(0);
- flatTestPanel1.add(borderPainter22, "cell 5 1");
+ flatTestPanel1.add(borderPainter22, "cell 6 1");
//---- borderPainter28 ----
borderPainter28.setScale(8.0F);
borderPainter28.setArc(2);
borderPainter28.setFocusWidth(1);
borderPainter28.setLineWidth(3);
- flatTestPanel1.add(borderPainter28, "cell 7 1");
+ flatTestPanel1.add(borderPainter28, "cell 8 1");
//---- borderPainter11 ----
borderPainter11.setScale(8.0F);
@@ -236,27 +256,34 @@ public class FlatPaintingTest
borderPainter15.setW(25);
flatTestPanel1.add(borderPainter15, "cell 3 2");
+ //---- borderPainter31 ----
+ borderPainter31.setScale(8.0F);
+ borderPainter31.setPaintBorder(false);
+ borderPainter31.setPaintBackground(false);
+ borderPainter31.setArc(20);
+ flatTestPanel1.add(borderPainter31, "cell 4 2");
+
//---- borderPainter19 ----
borderPainter19.setScale(8.0F);
borderPainter19.setPaintBorder(false);
borderPainter19.setPaintBackground(false);
borderPainter19.setFocusWidth(0);
borderPainter19.setArc(0);
- flatTestPanel1.add(borderPainter19, "cell 4 2");
+ flatTestPanel1.add(borderPainter19, "cell 5 2");
//---- borderPainter23 ----
borderPainter23.setScale(8.0F);
borderPainter23.setPaintBorder(false);
borderPainter23.setPaintBackground(false);
borderPainter23.setArc(0);
- flatTestPanel1.add(borderPainter23, "cell 5 2");
+ flatTestPanel1.add(borderPainter23, "cell 6 2");
//---- borderPainter27 ----
borderPainter27.setScale(8.0F);
borderPainter27.setArc(1);
borderPainter27.setFocusWidth(1);
borderPainter27.setLineWidth(3);
- flatTestPanel1.add(borderPainter27, "cell 7 2");
+ flatTestPanel1.add(borderPainter27, "cell 8 2");
//---- borderPainter12 ----
borderPainter12.setScale(8.0F);
@@ -279,23 +306,28 @@ public class FlatPaintingTest
borderPainter16.setArc(20);
flatTestPanel1.add(borderPainter16, "cell 3 3");
+ //---- borderPainter32 ----
+ borderPainter32.setScale(8.0F);
+ borderPainter32.setArc(20);
+ flatTestPanel1.add(borderPainter32, "cell 4 3");
+
//---- borderPainter20 ----
borderPainter20.setScale(8.0F);
borderPainter20.setFocusWidth(0);
borderPainter20.setArc(0);
- flatTestPanel1.add(borderPainter20, "cell 4 3");
+ flatTestPanel1.add(borderPainter20, "cell 5 3");
//---- borderPainter24 ----
borderPainter24.setScale(8.0F);
borderPainter24.setArc(0);
- flatTestPanel1.add(borderPainter24, "cell 5 3");
+ flatTestPanel1.add(borderPainter24, "cell 6 3");
//---- borderPainter26 ----
borderPainter26.setScale(8.0F);
borderPainter26.setArc(0);
borderPainter26.setFocusWidth(1);
borderPainter26.setLineWidth(3);
- flatTestPanel1.add(borderPainter26, "cell 7 3");
+ flatTestPanel1.add(borderPainter26, "cell 8 3");
//---- label1 ----
label1.setText("fw 0, lw 1, arc 6");
@@ -313,17 +345,21 @@ public class FlatPaintingTest
label4.setText("fw 2, lw 1, arc 20");
flatTestPanel1.add(label4, "cell 3 4");
+ //---- label8 ----
+ label8.setText("fw 2, lw 1, arc 20");
+ flatTestPanel1.add(label8, "cell 4 4");
+
//---- label5 ----
label5.setText("fw 0, lw 1, arc 0");
- flatTestPanel1.add(label5, "cell 4 4");
+ flatTestPanel1.add(label5, "cell 5 4");
//---- label6 ----
label6.setText("fw 2, lw 1, arc 0");
- flatTestPanel1.add(label6, "cell 5 4");
+ flatTestPanel1.add(label6, "cell 6 4");
//---- label7 ----
label7.setText("fw 1, lw 3, arc 3,2,1,0");
- flatTestPanel1.add(label7, "cell 7 4");
+ flatTestPanel1.add(label7, "cell 8 4");
}
setViewportView(flatTestPanel1);
// JFormDesigner - End of component initialization //GEN-END:initComponents
@@ -435,7 +471,7 @@ public class FlatPaintingTest
@Override
protected void paintComponent( Graphics g ) {
Graphics2D g2 = (Graphics2D) g;
- FlatUIUtils.setRenderingHints( g2 );
+ Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g2 );
g2.scale( scale, scale );
g2.translate( 1, 1 );
@@ -467,6 +503,8 @@ public class FlatPaintingTest
g2d.setColor( Color.magenta );
g2d.drawRect( x2 - gap, y2 - gap, width2 + (gap * 2) - 1, height2 + (gap * 2) - 1 );
} );
+
+ FlatUIUtils.resetRenderingHints( g2, oldRenderingHints );
}
}
}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingTest.jfd
index dd8dc38d..38abfc3f 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingTest.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.0.0.194" Java: "13.0.1" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.2.0.298" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -11,7 +11,7 @@ new FormModel {
"border": sfield com.jformdesigner.model.FormObject NULL_VALUE
add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "ltr,insets dialog,hidemode 3"
- "$columnConstraints": "[fill][left][left][fill][fill][fill][fill][fill]"
+ "$columnConstraints": "[fill][fill][fill][fill][fill][fill][fill][fill][fill]"
"$rowConstraints": "[top][top][top][top][]"
} ) {
name: "flatTestPanel1"
@@ -52,6 +52,15 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 0"
} )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
+ name: "borderPainter25"
+ "scale": 8.0f
+ "paintBorder": false
+ "paintFocus": false
+ "arc": 20
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 0"
+ } )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter17"
"scale": 8.0f
@@ -60,7 +69,7 @@ new FormModel {
"focusWidth": 0
"arc": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 4 0"
+ "value": "cell 5 0"
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter21"
@@ -69,7 +78,7 @@ new FormModel {
"paintFocus": false
"arc": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 0"
+ "value": "cell 6 0"
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter29"
@@ -78,7 +87,7 @@ new FormModel {
"focusWidth": 1
"lineWidth": 3
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 7 0"
+ "value": "cell 8 0"
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter10"
@@ -117,6 +126,15 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 1"
} )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
+ name: "borderPainter30"
+ "scale": 8.0f
+ "paintBackground": false
+ "paintFocus": false
+ "arc": 20
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 1"
+ } )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter18"
"scale": 8.0f
@@ -125,7 +143,7 @@ new FormModel {
"focusWidth": 0
"arc": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 4 1"
+ "value": "cell 5 1"
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter22"
@@ -134,7 +152,7 @@ new FormModel {
"paintFocus": false
"arc": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 1"
+ "value": "cell 6 1"
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter28"
@@ -143,7 +161,7 @@ new FormModel {
"focusWidth": 1
"lineWidth": 3
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 7 1"
+ "value": "cell 8 1"
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter11"
@@ -182,6 +200,15 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 2"
} )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
+ name: "borderPainter31"
+ "scale": 8.0f
+ "paintBorder": false
+ "paintBackground": false
+ "arc": 20
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 2"
+ } )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter19"
"scale": 8.0f
@@ -190,7 +217,7 @@ new FormModel {
"focusWidth": 0
"arc": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 4 2"
+ "value": "cell 5 2"
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter23"
@@ -199,7 +226,7 @@ new FormModel {
"paintBackground": false
"arc": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 2"
+ "value": "cell 6 2"
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter27"
@@ -208,7 +235,7 @@ new FormModel {
"focusWidth": 1
"lineWidth": 3
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 7 2"
+ "value": "cell 8 2"
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter12"
@@ -239,20 +266,27 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 3"
} )
+ add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
+ name: "borderPainter32"
+ "scale": 8.0f
+ "arc": 20
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 3"
+ } )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter20"
"scale": 8.0f
"focusWidth": 0
"arc": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 4 3"
+ "value": "cell 5 3"
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter24"
"scale": 8.0f
"arc": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 3"
+ "value": "cell 6 3"
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingTest$BorderPainter" ) {
name: "borderPainter26"
@@ -261,7 +295,7 @@ new FormModel {
"focusWidth": 1
"lineWidth": 3
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 7 3"
+ "value": "cell 8 3"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label1"
@@ -287,28 +321,34 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 4"
} )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label8"
+ "text": "fw 2, lw 1, arc 20"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 4"
+ } )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label5"
"text": "fw 0, lw 1, arc 0"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 4 4"
+ "value": "cell 5 4"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label6"
"text": "fw 2, lw 1, arc 0"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 5 4"
+ "value": "cell 6 4"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label7"
"text": "fw 1, lw 3, arc 3,2,1,0"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 7 4"
+ "value": "cell 8 4"
} )
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
- "size": new java.awt.Dimension( 1435, 880 )
+ "size": new java.awt.Dimension( 1610, 880 )
} )
}
}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestEnumComboBox.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestEnumComboBox.java
new file mode 100644
index 00000000..b92355b6
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestEnumComboBox.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.testing;
+
+import java.awt.Component;
+import java.util.Objects;
+import javax.swing.AbstractListModel;
+import javax.swing.ComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.plaf.basic.BasicComboBoxRenderer;
+
+/**
+ * @author Karl Tauber
+ */
+public class FlatTestEnumComboBox
+ extends JComboBox
+{
+ @SuppressWarnings( "unchecked" )
+ public void init( Class enumType, boolean supportDefault ) {
+ setRenderer( new EnumComboBoxRenderer() );
+ setModel( new EnumComboBoxModel<>( enumType, supportDefault ) );
+ }
+
+ @SuppressWarnings( "unchecked" )
+ public E getSelectedValue() {
+ return (E) getSelectedItem();
+ }
+
+ @Override
+ public int getSelectedIndex() {
+ if( getSelectedItem() == null && getItemCount() > 0 && getItemAt( 0 ) == null )
+ return 0;
+
+ return super.getSelectedIndex();
+ }
+
+ //---- class EnumComboBoxRenderer -----------------------------------------
+
+ public static class EnumComboBoxRenderer
+ extends BasicComboBoxRenderer
+ {
+ @SuppressWarnings( "rawtypes" )
+ @Override
+ public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus ) {
+ setEnabled( value != null || isSelected );
+ if( value == null )
+ value = "(default)";
+ return super.getListCellRendererComponent( list, value, index, isSelected, cellHasFocus );
+ }
+ }
+
+ //---- class EnumComboBoxModel --------------------------------------------
+
+ public static class EnumComboBoxModel
+ extends AbstractListModel
+ implements ComboBoxModel
+ {
+ private final boolean supportDefault;
+ private final E[] values;
+ private Object selectedItem;
+
+ public EnumComboBoxModel( Class enumType, boolean supportDefault ) {
+ this.supportDefault = supportDefault;
+ values = enumType.getEnumConstants();
+
+ if( !supportDefault )
+ selectedItem = values[0];
+ }
+
+ @Override
+ public int getSize() {
+ return values.length + (supportDefault ? 1 : 0);
+ }
+
+ @Override
+ public E getElementAt( int index ) {
+ if( supportDefault ) {
+ if( index == 0 )
+ return null;
+ index--;
+ }
+ return values[index];
+ }
+
+ @Override
+ public Object getSelectedItem() {
+ return selectedItem;
+ }
+
+ @Override
+ public void setSelectedItem( Object anItem ) {
+ if( !Objects.equals( selectedItem, anItem ) ) {
+ selectedItem = anItem;
+ fireContentsChanged( this, -1, -1 );
+ }
+ }
+ }
+}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java
index 02b99e06..9aa95229 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java
@@ -22,10 +22,12 @@ import java.awt.event.ComponentEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
+import java.util.Properties;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.function.Supplier;
import javax.swing.*;
+import javax.swing.FocusManager;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.metal.MetalLookAndFeel;
@@ -35,13 +37,15 @@ import com.formdev.flatlaf.FlatDarkLaf;
import com.formdev.flatlaf.FlatIntelliJLaf;
import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.FlatLightLaf;
+import com.formdev.flatlaf.FlatPropertiesLaf;
import com.formdev.flatlaf.FlatSystemProperties;
import com.formdev.flatlaf.IntelliJTheme;
import com.formdev.flatlaf.demo.LookAndFeelsComboBox;
import com.formdev.flatlaf.demo.DemoPrefs;
import com.formdev.flatlaf.demo.intellijthemes.*;
import com.formdev.flatlaf.extras.*;
-import com.formdev.flatlaf.extras.TriStateCheckBox.State;
+import com.formdev.flatlaf.extras.components.FlatTriStateCheckBox;
+import com.formdev.flatlaf.extras.components.FlatTriStateCheckBox.State;
import com.formdev.flatlaf.ui.FlatUIUtils;
import com.formdev.flatlaf.util.SystemInfo;
import com.formdev.flatlaf.util.UIScale;
@@ -65,6 +69,9 @@ public class FlatTestFrame
public boolean applyComponentOrientationToFrame;
public static FlatTestFrame create( String[] args, String title ) {
+ // disable text antialiasing
+// System.setProperty( "awt.useSystemAAFontSettings", "off" );
+
DemoPrefs.init( PREFS_ROOT_PATH );
// set scale factor
@@ -196,6 +203,16 @@ public class FlatTestFrame
KeyStroke.getKeyStroke( KeyEvent.VK_MINUS, menuShortcutKeyMask ),
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
+ // register Alt+UP and Alt+DOWN to switch to previous/next theme
+ ((JComponent)getContentPane()).registerKeyboardAction(
+ e -> themesPanel.selectPreviousTheme(),
+ KeyStroke.getKeyStroke( KeyEvent.VK_UP, KeyEvent.ALT_DOWN_MASK ),
+ JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
+ ((JComponent)getContentPane()).registerKeyboardAction(
+ e -> themesPanel.selectNextTheme(),
+ KeyStroke.getKeyStroke( KeyEvent.VK_DOWN, KeyEvent.ALT_DOWN_MASK ),
+ JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
+
// register ESC key to close frame
((JComponent)getContentPane()).registerKeyboardAction(
e -> {
@@ -331,10 +348,12 @@ public class FlatTestFrame
// hide popup to avoid occasional StackOverflowError when updating UI
lookAndFeelComboBox.setPopupVisible( false );
- applyLookAndFeel( lafClassName, null, false );
+ applyLookAndFeel( lafClassName, null, null, null, false );
}
- private void applyLookAndFeel( String lafClassName, IntelliJTheme theme, boolean pack ) {
+ private void applyLookAndFeel( String lafClassName, IntelliJTheme theme,
+ String nameForProperties, Properties properties, boolean pack )
+ {
EventQueue.invokeLater( () -> {
try {
// clear custom default font before switching to other LaF
@@ -349,6 +368,8 @@ public class FlatTestFrame
// change look and feel
if( theme != null )
UIManager.setLookAndFeel( IntelliJTheme.createLaf( theme ) );
+ else if( properties != null )
+ UIManager.setLookAndFeel( new FlatPropertiesLaf( nameForProperties, properties ) );
else
UIManager.setLookAndFeel( lafClassName );
@@ -425,7 +446,7 @@ public class FlatTestFrame
Color green = dark ? Color.green.darker() : Color.green;
updateComponentsRecur( content, (c, type) -> {
- if( type == "view" || type == "tab" ) {
+ if( type == "view" || type == "tab" || c instanceof JSlider ) {
c.setForeground( explicit ? magenta : restoreColor );
c.setBackground( explicit ? orange : restoreColor );
} else {
@@ -484,6 +505,29 @@ public class FlatTestFrame
inspector.setEnabled( inspectCheckBox.isSelected() );
}
+ private void uiDefaultsInspectorChanged() {
+ getContentPane().removeAll();
+
+ FocusManager focusManager = FocusManager.getCurrentManager();
+ Component focusOwner = focusManager.getFocusOwner();
+
+ if( uiDefaultsInspectorCheckBox.isSelected() ) {
+ JComponent uiDefaultsInspector = FlatUIDefaultsInspector.createInspectorPanel();
+
+ JSplitPane splitPane = new JSplitPane();
+ splitPane.setLeftComponent( dialogPane );
+ splitPane.setRightComponent( uiDefaultsInspector );
+ getContentPane().add( splitPane, BorderLayout.CENTER );
+ } else
+ getContentPane().add( dialogPane, BorderLayout.CENTER );
+
+ if( focusOwner != null && focusOwner.isDisplayable() )
+ focusOwner.requestFocusInWindow();
+
+ pack();
+ setLocationRelativeTo( null );
+ }
+
private void scaleFactorChanged() {
String scaleFactor = (String) scaleFactorComboBox.getSelectedItem();
if( "default".equals( scaleFactor ) )
@@ -507,7 +551,13 @@ public class FlatTestFrame
IntelliJTheme theme = (lookAndFeel instanceof IntelliJTheme.ThemeLaf)
? ((IntelliJTheme.ThemeLaf)lookAndFeel).getTheme()
: null;
- applyLookAndFeel( lookAndFeel.getClass().getName(), theme, true );
+ String nameForProperties = null;
+ Properties properties = null;
+ if( lookAndFeel instanceof FlatPropertiesLaf ) {
+ nameForProperties = lookAndFeel.getName();
+ properties = ((FlatPropertiesLaf)lookAndFeel).getProperties();
+ }
+ applyLookAndFeel( lookAndFeel.getClass().getName(), theme, nameForProperties, properties, true );
}
private void updateScaleFactorComboBox() {
@@ -636,9 +686,10 @@ public class FlatTestFrame
rightToLeftCheckBox = new JCheckBox();
enabledCheckBox = new JCheckBox();
inspectCheckBox = new JCheckBox();
+ uiDefaultsInspectorCheckBox = new JCheckBox();
explicitColorsCheckBox = new JCheckBox();
backgroundCheckBox = new JCheckBox();
- opaqueTriStateCheckBox = new TriStateCheckBox();
+ opaqueTriStateCheckBox = new FlatTriStateCheckBox();
sizeVariantComboBox = new JComboBox<>();
closeButton = new JButton();
themesPanel = new IJThemesPanel();
@@ -678,6 +729,7 @@ public class FlatTestFrame
"[fill]" +
"[fill]" +
"[fill]" +
+ "[fill]" +
"[grow,fill]" +
"[button,fill]",
// rows
@@ -700,7 +752,9 @@ public class FlatTestFrame
"2.5",
"3",
"3.5",
- "4"
+ "4",
+ "5",
+ "6"
}));
scaleFactorComboBox.setMaximumRowCount(20);
scaleFactorComboBox.addActionListener(e -> scaleFactorChanged());
@@ -731,23 +785,29 @@ public class FlatTestFrame
inspectCheckBox.addActionListener(e -> inspectChanged());
buttonBar.add(inspectCheckBox, "cell 5 0");
+ //---- uiDefaultsInspectorCheckBox ----
+ uiDefaultsInspectorCheckBox.setText("UI defaults");
+ uiDefaultsInspectorCheckBox.setMnemonic('U');
+ uiDefaultsInspectorCheckBox.addActionListener(e -> uiDefaultsInspectorChanged());
+ buttonBar.add(uiDefaultsInspectorCheckBox, "cell 6 0");
+
//---- explicitColorsCheckBox ----
explicitColorsCheckBox.setText("explicit colors");
explicitColorsCheckBox.setMnemonic('X');
explicitColorsCheckBox.addActionListener(e -> explicitColorsChanged());
- buttonBar.add(explicitColorsCheckBox, "cell 6 0");
+ buttonBar.add(explicitColorsCheckBox, "cell 7 0");
//---- backgroundCheckBox ----
backgroundCheckBox.setText("background");
backgroundCheckBox.setMnemonic('B');
backgroundCheckBox.addActionListener(e -> backgroundChanged());
- buttonBar.add(backgroundCheckBox, "cell 7 0");
+ buttonBar.add(backgroundCheckBox, "cell 8 0");
//---- opaqueTriStateCheckBox ----
opaqueTriStateCheckBox.setText("opaque");
opaqueTriStateCheckBox.setMnemonic('O');
opaqueTriStateCheckBox.addActionListener(e -> opaqueChanged());
- buttonBar.add(opaqueTriStateCheckBox, "cell 8 0");
+ buttonBar.add(opaqueTriStateCheckBox, "cell 9 0");
//---- sizeVariantComboBox ----
sizeVariantComboBox.setModel(new DefaultComboBoxModel<>(new String[] {
@@ -758,11 +818,11 @@ public class FlatTestFrame
}));
sizeVariantComboBox.setSelectedIndex(2);
sizeVariantComboBox.addActionListener(e -> sizeVariantChanged());
- buttonBar.add(sizeVariantComboBox, "cell 9 0");
+ buttonBar.add(sizeVariantComboBox, "cell 10 0");
//---- closeButton ----
closeButton.setText("Close");
- buttonBar.add(closeButton, "cell 11 0");
+ buttonBar.add(closeButton, "cell 12 0");
}
dialogPane.add(buttonBar, BorderLayout.SOUTH);
dialogPane.add(themesPanel, BorderLayout.EAST);
@@ -781,9 +841,10 @@ public class FlatTestFrame
private JCheckBox rightToLeftCheckBox;
private JCheckBox enabledCheckBox;
private JCheckBox inspectCheckBox;
+ private JCheckBox uiDefaultsInspectorCheckBox;
private JCheckBox explicitColorsCheckBox;
private JCheckBox backgroundCheckBox;
- private TriStateCheckBox opaqueTriStateCheckBox;
+ private FlatTriStateCheckBox opaqueTriStateCheckBox;
private JComboBox sizeVariantComboBox;
private JButton closeButton;
private IJThemesPanel themesPanel;
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.jfd
index e174c4d5..f8a9e6f6 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -21,7 +21,7 @@ new FormModel {
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets dialog"
- "$columnConstraints": "[fill][fill][fill][fill][fill][fill][fill][fill][fill][fill][grow,fill][button,fill]"
+ "$columnConstraints": "[fill][fill][fill][fill][fill][fill][fill][fill][fill][fill][fill][grow,fill][button,fill]"
"$rowSpecs": "[fill]"
} ) {
name: "buttonBar"
@@ -47,6 +47,8 @@ new FormModel {
addElement( "3" )
addElement( "3.5" )
addElement( "4" )
+ addElement( "5" )
+ addElement( "6" )
}
"maximumRowCount": 20
auxiliary() {
@@ -91,13 +93,21 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 0"
} )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "uiDefaultsInspectorCheckBox"
+ "text": "UI defaults"
+ "mnemonic": 85
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "uiDefaultsInspectorChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 6 0"
+ } )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "explicitColorsCheckBox"
"text": "explicit colors"
"mnemonic": 88
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "explicitColorsChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 6 0"
+ "value": "cell 7 0"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "backgroundCheckBox"
@@ -105,15 +115,15 @@ new FormModel {
"mnemonic": 66
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "backgroundChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 7 0"
+ "value": "cell 8 0"
} )
- add( new FormComponent( "com.formdev.flatlaf.extras.TriStateCheckBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "opaqueTriStateCheckBox"
"text": "opaque"
"mnemonic": 79
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "opaqueChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 8 0"
+ "value": "cell 9 0"
} )
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "sizeVariantComboBox"
@@ -127,13 +137,13 @@ new FormModel {
"selectedIndex": 2
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "sizeVariantChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 9 0"
+ "value": "cell 10 0"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "closeButton"
"text": "Close"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 11 0"
+ "value": "cell 12 0"
} )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "South"
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.java
index b513149d..f82312e4 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.java
@@ -186,6 +186,13 @@ public class FlatWindowDecorationsTest
}
}
+ private void fullScreenChanged() {
+ boolean fullScreen = fullScreenCheckBox.isSelected();
+
+ GraphicsDevice gd = getGraphicsConfiguration().getDevice();
+ gd.setFullScreenWindow( fullScreen ? SwingUtilities.windowForComponent( this ) : null );
+ }
+
private void menuItemActionPerformed(ActionEvent e) {
SwingUtilities.invokeLater( () -> {
JOptionPane.showMessageDialog( this, e.getActionCommand(), "Menu Item", JOptionPane.PLAIN_MESSAGE );
@@ -263,6 +270,7 @@ public class FlatWindowDecorationsTest
resizableCheckBox = new JCheckBox();
maximizedBoundsCheckBox = new JCheckBox();
undecoratedCheckBox = new JCheckBox();
+ fullScreenCheckBox = new JCheckBox();
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
JPanel panel1 = new JPanel();
@@ -372,6 +380,11 @@ public class FlatWindowDecorationsTest
undecoratedCheckBox.addActionListener(e -> undecoratedChanged());
add(undecoratedCheckBox, "cell 0 4");
+ //---- fullScreenCheckBox ----
+ fullScreenCheckBox.setText("full screen");
+ fullScreenCheckBox.addActionListener(e -> fullScreenChanged());
+ add(fullScreenCheckBox, "cell 1 4");
+
//---- label1 ----
label1.setText("Style:");
add(label1, "cell 0 5");
@@ -677,6 +690,7 @@ public class FlatWindowDecorationsTest
private JCheckBox resizableCheckBox;
private JCheckBox maximizedBoundsCheckBox;
private JCheckBox undecoratedCheckBox;
+ private JCheckBox fullScreenCheckBox;
private JRadioButton styleNoneRadioButton;
private JRadioButton styleFrameRadioButton;
private JRadioButton stylePlainRadioButton;
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.jfd
index f73e537f..d536cc39 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.jfd
@@ -106,6 +106,16 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 4"
} )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "fullScreenCheckBox"
+ "text": "full screen"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "fullScreenChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 4"
+ } )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label1"
"text": "Style:"
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/extras/FlatExtrasTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/extras/FlatExtrasTest.java
index 14da1a5d..143cf6cb 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/extras/FlatExtrasTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/extras/FlatExtrasTest.java
@@ -18,6 +18,7 @@ package com.formdev.flatlaf.testing.extras;
import javax.swing.*;
import com.formdev.flatlaf.extras.*;
+import com.formdev.flatlaf.extras.components.*;
import com.formdev.flatlaf.testing.*;
import net.miginfocom.swing.*;
@@ -37,8 +38,8 @@ public class FlatExtrasTest
public FlatExtrasTest() {
initComponents();
- triStateLabel1.setText( triStateCheckBox1.getState().toString() );
- triStateLabel2.setText( triStateCheckBox2.getState().toString() );
+ triStateCheckBox1Changed();
+ triStateCheckBox2Changed();
addSVGIcon( "actions/copy.svg" );
addSVGIcon( "actions/colors.svg" );
@@ -89,6 +90,10 @@ public class FlatExtrasTest
triStateLabel2.setText( triStateCheckBox2.getState().toString() );
}
+ private void triStateCheckBox3Changed() {
+ triStateLabel3.setText( triStateCheckBox3.getState().toString() );
+ }
+
private void disabledChanged() {
boolean enabled = !disabledCheckBox.isSelected();
@@ -117,9 +122,11 @@ public class FlatExtrasTest
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
label1 = new JLabel();
- triStateCheckBox1 = new TriStateCheckBox();
+ triStateCheckBox1 = new FlatTriStateCheckBox();
triStateLabel1 = new JLabel();
- triStateCheckBox2 = new TriStateCheckBox();
+ triStateCheckBox3 = new FlatTriStateCheckBox();
+ triStateLabel3 = new JLabel();
+ triStateCheckBox2 = new FlatTriStateCheckBox();
triStateLabel2 = new JLabel();
label2 = new JLabel();
svgIconsPanel = new JPanel();
@@ -165,20 +172,31 @@ public class FlatExtrasTest
triStateLabel1.setEnabled(false);
add(triStateLabel1, "cell 2 0,gapx 30");
+ //---- triStateCheckBox3 ----
+ triStateCheckBox3.setText("alt state cycle order");
+ triStateCheckBox3.setAltStateCycleOrder(true);
+ triStateCheckBox3.addActionListener(e -> triStateCheckBox3Changed());
+ add(triStateCheckBox3, "cell 1 1");
+
+ //---- triStateLabel3 ----
+ triStateLabel3.setText("text");
+ triStateLabel3.setEnabled(false);
+ add(triStateLabel3, "cell 2 1,gapx 30");
+
//---- triStateCheckBox2 ----
triStateCheckBox2.setText("third state disabled");
- triStateCheckBox2.setThirdStateEnabled(false);
+ triStateCheckBox2.setAllowIndeterminate(false);
triStateCheckBox2.addActionListener(e -> triStateCheckBox2Changed());
- add(triStateCheckBox2, "cell 1 1");
+ add(triStateCheckBox2, "cell 1 2");
//---- triStateLabel2 ----
triStateLabel2.setText("text");
triStateLabel2.setEnabled(false);
- add(triStateLabel2, "cell 2 1,gapx 30");
+ add(triStateLabel2, "cell 2 2,gapx 30");
//---- label2 ----
label2.setText("SVG Icons:");
- add(label2, "cell 0 2");
+ add(label2, "cell 0 3");
//======== svgIconsPanel ========
{
@@ -189,58 +207,60 @@ public class FlatExtrasTest
// rows
"[grow,center]"));
}
- add(svgIconsPanel, "cell 1 2 2 1");
+ add(svgIconsPanel, "cell 1 3 2 1");
//---- label3 ----
label3.setText("The icons may change colors when switching to another theme.");
- add(label3, "cell 1 3 2 1");
+ add(label3, "cell 1 4 2 1");
//---- label4 ----
label4.setText("Disabled SVG Icons:");
- add(label4, "cell 0 4");
+ add(label4, "cell 0 5");
//---- disabledLabel ----
disabledLabel.setText("label");
- add(disabledLabel, "cell 1 4 2 1");
+ add(disabledLabel, "cell 1 5 2 1");
//---- disabledButton ----
disabledButton.setText("button");
- add(disabledButton, "cell 1 4 2 1");
- add(disabledTabbedPane, "cell 1 4 2 1");
+ add(disabledButton, "cell 1 5 2 1");
+ add(disabledTabbedPane, "cell 1 5 2 1");
//---- label5 ----
label5.setText("only setIcon()");
label5.setEnabled(false);
- add(label5, "cell 1 4 2 1,gapx 20");
+ add(label5, "cell 1 5 2 1,gapx 20");
//---- disabledCheckBox ----
disabledCheckBox.setText("disabled");
disabledCheckBox.setSelected(true);
disabledCheckBox.setMnemonic('D');
disabledCheckBox.addActionListener(e -> disabledChanged());
- add(disabledCheckBox, "cell 0 5,alignx left,growx 0");
+ add(disabledCheckBox, "cell 0 6,alignx left,growx 0");
//---- disabledLabel2 ----
disabledLabel2.setText("label");
- add(disabledLabel2, "cell 1 5 2 1");
+ add(disabledLabel2, "cell 1 6 2 1");
//---- disabledButton2 ----
disabledButton2.setText("button");
- add(disabledButton2, "cell 1 5 2 1");
- add(disabledTabbedPane2, "cell 1 5 2 1");
+ add(disabledButton2, "cell 1 6 2 1");
+ add(disabledTabbedPane2, "cell 1 6 2 1");
//---- label6 ----
label6.setText("setIcon() and setDisabledIcon()");
label6.setEnabled(false);
- add(label6, "cell 1 5 2 1,gapx 20");
+ add(label6, "cell 1 6 2 1,gapx 20");
// JFormDesigner - End of component initialization //GEN-END:initComponents
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private JLabel label1;
- private TriStateCheckBox triStateCheckBox1;
+ private FlatTriStateCheckBox triStateCheckBox1;
private JLabel triStateLabel1;
- private TriStateCheckBox triStateCheckBox2;
+ private FlatTriStateCheckBox triStateCheckBox3;
+ private JLabel triStateLabel3;
+ private FlatTriStateCheckBox triStateCheckBox2;
private JLabel triStateLabel2;
private JLabel label2;
private JPanel svgIconsPanel;
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/extras/FlatExtrasTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/extras/FlatExtrasTest.jfd
index fc34f236..2853a30d 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/extras/FlatExtrasTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/extras/FlatExtrasTest.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.2.0.298" Java: "15" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -15,7 +15,7 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 0 0"
} )
- add( new FormComponent( "com.formdev.flatlaf.extras.TriStateCheckBox" ) {
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
name: "triStateCheckBox1"
"text": "three states"
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "triStateCheckBox1Changed", false ) )
@@ -29,26 +29,41 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 0,gapx 30"
} )
- add( new FormComponent( "com.formdev.flatlaf.extras.TriStateCheckBox" ) {
- name: "triStateCheckBox2"
- "text": "third state disabled"
- "thirdStateEnabled": false
- addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "triStateCheckBox2Changed", false ) )
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
+ name: "triStateCheckBox3"
+ "text": "alt state cycle order"
+ "altStateCycleOrder": true
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "triStateCheckBox3Changed", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 1"
} )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "triStateLabel3"
+ "text": "text"
+ "enabled": false
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 1,gapx 30"
+ } )
+ add( new FormComponent( "com.formdev.flatlaf.extras.components.FlatTriStateCheckBox" ) {
+ name: "triStateCheckBox2"
+ "text": "third state disabled"
+ "allowIndeterminate": false
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "triStateCheckBox2Changed", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 2"
+ } )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "triStateLabel2"
"text": "text"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 2 1,gapx 30"
+ "value": "cell 2 2,gapx 30"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label2"
"text": "SVG Icons:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 2"
+ "value": "cell 0 3"
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets 0,hidemode 3"
@@ -57,43 +72,43 @@ new FormModel {
} ) {
name: "svgIconsPanel"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 2 2 1"
+ "value": "cell 1 3 2 1"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label3"
"text": "The icons may change colors when switching to another theme."
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 3 2 1"
+ "value": "cell 1 4 2 1"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label4"
"text": "Disabled SVG Icons:"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 4"
+ "value": "cell 0 5"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "disabledLabel"
"text": "label"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 4 2 1"
+ "value": "cell 1 5 2 1"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "disabledButton"
"text": "button"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 4 2 1"
+ "value": "cell 1 5 2 1"
} )
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
name: "disabledTabbedPane"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 4 2 1"
+ "value": "cell 1 5 2 1"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label5"
"text": "only setIcon()"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 4 2 1,gapx 20"
+ "value": "cell 1 5 2 1,gapx 20"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "disabledCheckBox"
@@ -102,35 +117,35 @@ new FormModel {
"mnemonic": 68
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "disabledChanged", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 5,alignx left,growx 0"
+ "value": "cell 0 6,alignx left,growx 0"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "disabledLabel2"
"text": "label"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 5 2 1"
+ "value": "cell 1 6 2 1"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "disabledButton2"
"text": "button"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 5 2 1"
+ "value": "cell 1 6 2 1"
} )
add( new FormContainer( "javax.swing.JTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
name: "disabledTabbedPane2"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 5 2 1"
+ "value": "cell 1 6 2 1"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label6"
"text": "setIcon() and setDisabledIcon()"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 5 2 1,gapx 20"
+ "value": "cell 1 6 2 1,gapx 20"
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
- "size": new java.awt.Dimension( 595, 300 )
+ "size": new java.awt.Dimension( 595, 470 )
} )
}
}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssDefaultsTestAddon.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssDefaultsTestAddon.java
new file mode 100644
index 00000000..f1219583
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssDefaultsTestAddon.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.testing.jideoss;
+
+import com.formdev.flatlaf.FlatDefaultsAddon;
+
+/**
+ * JIDE Common Layer addon for FlatLaf for testing.
+ *
+ * Finds JIDE Common Layer addon .properties file for the given LaF class
+ * in the same package as this class.
+ *
+ * @author Karl Tauber
+ */
+public class FlatJideOssDefaultsTestAddon
+ extends FlatDefaultsAddon
+{
+}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssTest.java
index b51aa6ec..953f4ff4 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssTest.java
@@ -24,7 +24,6 @@ import javax.swing.border.*;
import com.formdev.flatlaf.testing.*;
import com.formdev.flatlaf.testing.FlatTestFrame;
import com.jgoodies.forms.layout.*;
-import com.jidesoft.plaf.LookAndFeelFactory;
import com.jidesoft.popup.JidePopup;
import com.jidesoft.swing.*;
import net.miginfocom.swing.*;
@@ -38,19 +37,14 @@ public class FlatJideOssTest
public static void main( String[] args ) {
SwingUtilities.invokeLater( () -> {
FlatTestFrame frame = FlatTestFrame.create( args, "FlatJideOssTest" );
- LookAndFeelFactory.installJideExtension();
frame.showFrame( FlatJideOssTest::new );
-
- UIManager.addPropertyChangeListener( e -> {
- if( "lookAndFeel".equals( e.getPropertyName() ) ) {
- LookAndFeelFactory.installJideExtension();
- }
- } );
} );
}
FlatJideOssTest() {
initComponents();
+
+ tristateCheckBox1Changed();
}
private void tabScrollChanged() {
@@ -90,18 +84,37 @@ public class FlatJideOssTest
}
}
- private void showJidePopupButtonActionPerformed( ActionEvent e ) {
+ private void showJidePopup( ActionEvent e ) {
Component invoker = (Component) e.getSource();
JPanel panel = new JPanel( new MigLayout() );
panel.add( new JLabel( "Name:") );
panel.add( new JTextField( 20 ) );
- JidePopup popupMenu = new JidePopup();
- popupMenu.add( panel );
- popupMenu.setDetached( true );
- popupMenu.setOwner( invoker );
- popupMenu.showPopup();
+ JidePopup popup = new JidePopup();
+ popup.add( panel );
+ popup.setDetached( true );
+ popup.setOwner( invoker );
+ popup.showPopup();
+ }
+
+ private void showJidePopupMenu( ActionEvent e ) {
+ Component invoker = (Component) e.getSource();
+
+ JidePopupMenu popupMenu = new JidePopupMenu();
+ for( int i = 1; i <= 100; i++ )
+ popupMenu.add( "menu item " + i );
+ popupMenu.show( invoker, 0, invoker.getHeight() );
+ }
+
+ private void tristateCheckBox1Changed() {
+ String text = null;
+ switch( tristateCheckBox1.getState() ) {
+ case TristateCheckBox.STATE_UNSELECTED: text = "UNSELECTED"; break;
+ case TristateCheckBox.STATE_SELECTED: text = "SELECTED"; break;
+ case TristateCheckBox.STATE_MIXED: text = "MIXED"; break;
+ }
+ triStateLabel1.setText( text );
}
private void initComponents() {
@@ -135,6 +148,11 @@ public class FlatJideOssTest
JPanel panel10 = new JPanel();
JLabel jidePopupLabel = new JLabel();
JButton showJidePopupButton = new JButton();
+ JLabel jidePopupMenuLabel = new JLabel();
+ JButton showJidePopupMenuButton = new JButton();
+ JLabel label9 = new JLabel();
+ tristateCheckBox1 = new TristateCheckBox();
+ triStateLabel1 = new JLabel();
CellConstraints cc = new CellConstraints();
//======== this ========
@@ -303,8 +321,11 @@ public class FlatJideOssTest
"insets 3 0 3 3,hidemode 3",
// columns
"[fill]" +
+ "[fill]" +
"[fill]",
// rows
+ "[]" +
+ "[]" +
"[]"));
//---- jidePopupLabel ----
@@ -313,8 +334,31 @@ public class FlatJideOssTest
//---- showJidePopupButton ----
showJidePopupButton.setText("show JidePopup");
- showJidePopupButton.addActionListener(e -> showJidePopupButtonActionPerformed(e));
+ showJidePopupButton.addActionListener(e -> showJidePopup(e));
panel10.add(showJidePopupButton, "cell 1 0");
+
+ //---- jidePopupMenuLabel ----
+ jidePopupMenuLabel.setText("JidePopupMenu:");
+ panel10.add(jidePopupMenuLabel, "cell 0 1");
+
+ //---- showJidePopupMenuButton ----
+ showJidePopupMenuButton.setText("show JidePopupMenu");
+ showJidePopupMenuButton.addActionListener(e -> showJidePopupMenu(e));
+ panel10.add(showJidePopupMenuButton, "cell 1 1");
+
+ //---- label9 ----
+ label9.setText("TristateCheckBox:");
+ panel10.add(label9, "cell 0 2");
+
+ //---- tristateCheckBox1 ----
+ tristateCheckBox1.setText("three states");
+ tristateCheckBox1.addActionListener(e -> tristateCheckBox1Changed());
+ panel10.add(tristateCheckBox1, "cell 1 2");
+
+ //---- triStateLabel1 ----
+ triStateLabel1.setText("text");
+ triStateLabel1.setEnabled(false);
+ panel10.add(triStateLabel1, "cell 2 2");
}
panel9.add(panel10, cc.xy(1, 9));
}
@@ -330,5 +374,7 @@ public class FlatJideOssTest
private JCheckBox moreTabsCheckBox;
private JCheckBox tabScrollCheckBox;
private JCheckBox hasFullBorderCheckBox;
+ private TristateCheckBox tristateCheckBox1;
+ private JLabel triStateLabel1;
// JFormDesigner - End of variables declaration //GEN-END:variables
}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssTest.jfd
index dd5c3d90..74282ca6 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatJideOssTest.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.0.0.194" Java: "11.0.2" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -194,8 +194,8 @@ new FormModel {
} )
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets 3 0 3 3,hidemode 3"
- "$columnConstraints": "[fill][fill]"
- "$rowConstraints": "[]"
+ "$columnConstraints": "[fill][fill][fill]"
+ "$rowConstraints": "[][][]"
} ) {
name: "panel10"
add( new FormComponent( "javax.swing.JLabel" ) {
@@ -207,10 +207,49 @@ new FormModel {
add( new FormComponent( "javax.swing.JButton" ) {
name: "showJidePopupButton"
"text": "show JidePopup"
- addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showJidePopupButtonActionPerformed", true ) )
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showJidePopup", true ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 0"
} )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "jidePopupMenuLabel"
+ "text": "JidePopupMenu:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 1"
+ } )
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "showJidePopupMenuButton"
+ "text": "show JidePopupMenu"
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showJidePopupMenu", true ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label9"
+ "text": "TristateCheckBox:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
+ add( new FormComponent( "com.jidesoft.swing.TristateCheckBox" ) {
+ name: "tristateCheckBox1"
+ "text": "three states"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "tristateCheckBox1Changed", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 2"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "triStateLabel1"
+ "text": "text"
+ "enabled": false
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 2"
+ } )
}, new FormLayoutConstraints( class com.jgoodies.forms.layout.CellConstraints ) {
"gridY": 9
} )
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatRangeSliderTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatRangeSliderTest.java
index 1b54b8ef..e2daf1d6 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatRangeSliderTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatRangeSliderTest.java
@@ -16,14 +16,15 @@
package com.formdev.flatlaf.testing.jideoss;
+import javax.swing.*;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
+import javax.swing.JSlider;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
+import javax.swing.event.ChangeListener;
import com.formdev.flatlaf.testing.FlatTestFrame;
import com.formdev.flatlaf.testing.FlatTestPanel;
-import com.jidesoft.plaf.LookAndFeelFactory;
import com.jidesoft.swing.RangeSlider;
import net.miginfocom.swing.MigLayout;
@@ -34,29 +35,83 @@ public class FlatRangeSliderTest
public static void main( String[] args ) {
SwingUtilities.invokeLater( () -> {
FlatTestFrame frame = FlatTestFrame.create( args, "FlatRangeSliderTest" );
- LookAndFeelFactory.installJideExtension();
frame.showFrame( FlatRangeSliderTest::new );
-
- UIManager.addPropertyChangeListener( e -> {
- if( "lookAndFeel".equals( e.getPropertyName() ) ) {
- LookAndFeelFactory.installJideExtension();
- }
- } );
} );
}
+ private final JSlider[] allSliders;
+ private final JSlider[] directionalSliders;
+
FlatRangeSliderTest() {
initComponents();
+
+ allSliders = new JSlider[] {
+ horizontalRangeSlider,
+ verticalRangeSlider,
+ horizontalSlider,
+ verticalSlider,
+ horizontalRangeSlider2,
+ verticalRangeSlider2,
+ horizontalSlider2,
+ verticalSlider2,
+ };
+ directionalSliders = new JSlider[] {
+ horizontalRangeSlider,
+ verticalRangeSlider,
+ horizontalSlider,
+ verticalSlider,
+ };
+
+ ChangeListener sliderChanged = e -> {
+ JSlider slider = (JSlider) e.getSource();
+ String text;
+ if( slider instanceof RangeSlider ) {
+ RangeSlider rangeSlider = (RangeSlider) slider;
+ text = rangeSlider.getLowValue() + " - " + rangeSlider.getHighValue()
+ + " " + slider.getValueIsAdjusting();
+ } else
+ text = slider.getValue() + " " + slider.getValueIsAdjusting();
+ sliderValueLabel.setText( text );
+// System.out.println( text );
+ };
+ for( JSlider slider : allSliders )
+ slider.addChangeListener( sliderChanged );
}
private void paintLabels() {
- horizontalRangeSlider.setPaintLabels( paintLabel.isSelected() );
- verticalRangeSlider.setPaintLabels( paintLabel.isSelected() );
+ boolean selected = paintLabel.isSelected();
+ horizontalRangeSlider.setPaintLabels( selected );
+ verticalRangeSlider.setPaintLabels( selected );
+ horizontalSlider.setPaintLabels( selected );
+ verticalSlider.setPaintLabels( selected );
}
private void paintTicks() {
- horizontalRangeSlider.setPaintTicks( paintTick.isSelected() );
- verticalRangeSlider.setPaintTicks( paintTick.isSelected() );
+ boolean selected = paintTick.isSelected();
+ horizontalRangeSlider.setPaintTicks( selected );
+ verticalRangeSlider.setPaintTicks( selected );
+ horizontalSlider.setPaintTicks( selected );
+ verticalSlider.setPaintTicks( selected );
+ }
+
+ private void sliderSnapToTicksChanged() {
+ boolean snapToTicks = sliderSnapToTicksCheckBox.isSelected();
+ for( JSlider slider : allSliders )
+ slider.setSnapToTicks( snapToTicks );
+ }
+
+ private void majorThickSpacingChanged() {
+ int majorTickSpacing = (Integer) majorTickSpacingSpinner.getValue();
+ for( JSlider slider : directionalSliders ) {
+ slider.setLabelTable( null );
+ slider.setMajorTickSpacing( majorTickSpacing );
+ }
+ }
+
+ private void minorThickSpacingChanged() {
+ int minorTickSpacing = (Integer) minorTickSpacingSpinner.getValue();
+ for( JSlider slider : directionalSliders )
+ slider.setMinorTickSpacing( minorTickSpacing );
}
private void initComponents() {
@@ -64,20 +119,34 @@ public class FlatRangeSliderTest
JLabel tabbedPaneLabel = new JLabel();
JLabel horizontalLabel = new JLabel();
horizontalRangeSlider = new RangeSlider();
+ horizontalSlider = new JSlider();
+ horizontalRangeSlider2 = new RangeSlider();
+ horizontalSlider2 = new JSlider();
JLabel verticalLabel = new JLabel();
verticalRangeSlider = new RangeSlider();
+ verticalSlider = new JSlider();
+ verticalRangeSlider2 = new RangeSlider();
+ verticalSlider2 = new JSlider();
paintTick = new JCheckBox();
paintLabel = new JCheckBox();
+ sliderSnapToTicksCheckBox = new JCheckBox();
+ majorTickSpacingSpinner = new JSpinner();
+ minorTickSpacingSpinner = new JSpinner();
+ sliderValueLabel = new JLabel();
//======== this ========
setLayout(new MigLayout(
"insets dialog,hidemode 3",
// columns
"[left]" +
+ "[240,left]" +
"[fill]",
// rows
"[fill]" +
"[center]" +
+ "[]" +
+ "[]" +
+ "[]" +
"[grow,fill]" +
"[]"));
@@ -88,58 +157,116 @@ public class FlatRangeSliderTest
//---- horizontalLabel ----
horizontalLabel.setText("Horizontal");
add(horizontalLabel, "cell 0 1");
- add(horizontalRangeSlider, "cell 1 1");
+
+ //---- horizontalRangeSlider ----
+ horizontalRangeSlider.setLowValue(30);
+ horizontalRangeSlider.setHighValue(80);
+ horizontalRangeSlider.setMajorTickSpacing(10);
+ horizontalRangeSlider.setMinorTickSpacing(5);
+ horizontalRangeSlider.setPaintTicks(true);
+ horizontalRangeSlider.setPaintLabels(true);
+ add(horizontalRangeSlider, "cell 1 1,growx");
+
+ //---- horizontalSlider ----
+ horizontalSlider.setMinorTickSpacing(5);
+ horizontalSlider.setPaintTicks(true);
+ horizontalSlider.setMajorTickSpacing(10);
+ horizontalSlider.setPaintLabels(true);
+ horizontalSlider.setValue(30);
+ add(horizontalSlider, "cell 1 2,growx");
+
+ //---- horizontalRangeSlider2 ----
+ horizontalRangeSlider2.setLowValue(30);
+ horizontalRangeSlider2.setHighValue(80);
+ add(horizontalRangeSlider2, "cell 1 3,growx");
+
+ //---- horizontalSlider2 ----
+ horizontalSlider2.setValue(30);
+ add(horizontalSlider2, "cell 1 4,growx");
//---- verticalLabel ----
verticalLabel.setText("Vertical");
- add(verticalLabel, "cell 0 2,aligny top,growy 0");
+ add(verticalLabel, "cell 0 5,aligny top,growy 0");
//---- verticalRangeSlider ----
verticalRangeSlider.setOrientation(SwingConstants.VERTICAL);
- add(verticalRangeSlider, "cell 1 2,alignx left,growx 0");
+ verticalRangeSlider.setLowValue(30);
+ verticalRangeSlider.setHighValue(80);
+ verticalRangeSlider.setMajorTickSpacing(10);
+ verticalRangeSlider.setMinorTickSpacing(5);
+ verticalRangeSlider.setPaintTicks(true);
+ verticalRangeSlider.setPaintLabels(true);
+ add(verticalRangeSlider, "cell 1 5,alignx left,growx 0");
+
+ //---- verticalSlider ----
+ verticalSlider.setMinorTickSpacing(5);
+ verticalSlider.setPaintTicks(true);
+ verticalSlider.setMajorTickSpacing(10);
+ verticalSlider.setPaintLabels(true);
+ verticalSlider.setOrientation(SwingConstants.VERTICAL);
+ verticalSlider.setValue(30);
+ add(verticalSlider, "cell 1 5");
+
+ //---- verticalRangeSlider2 ----
+ verticalRangeSlider2.setOrientation(SwingConstants.VERTICAL);
+ verticalRangeSlider2.setLowValue(30);
+ verticalRangeSlider2.setHighValue(80);
+ add(verticalRangeSlider2, "cell 1 5");
+
+ //---- verticalSlider2 ----
+ verticalSlider2.setOrientation(SwingConstants.VERTICAL);
+ verticalSlider2.setValue(30);
+ add(verticalSlider2, "cell 1 5");
//---- paintTick ----
paintTick.setText("PaintTicks");
paintTick.setMnemonic('T');
paintTick.setSelected(true);
paintTick.addActionListener(e -> paintTicks());
- add(paintTick, "cell 0 3 2 1");
+ add(paintTick, "cell 0 6 3 1");
//---- paintLabel ----
paintLabel.setText("PaintLabels");
paintLabel.setMnemonic('L');
paintLabel.setSelected(true);
paintLabel.addActionListener(e -> paintLabels());
- add(paintLabel, "cell 0 3 2 1");
+ add(paintLabel, "cell 0 6 3 1");
+
+ //---- sliderSnapToTicksCheckBox ----
+ sliderSnapToTicksCheckBox.setText("snap to ticks");
+ sliderSnapToTicksCheckBox.addActionListener(e -> sliderSnapToTicksChanged());
+ add(sliderSnapToTicksCheckBox, "cell 0 6 3 1");
+
+ //---- majorTickSpacingSpinner ----
+ majorTickSpacingSpinner.setModel(new SpinnerNumberModel(10, 0, 100, 5));
+ majorTickSpacingSpinner.addChangeListener(e -> majorThickSpacingChanged());
+ add(majorTickSpacingSpinner, "cell 0 6 3 1");
+
+ //---- minorTickSpacingSpinner ----
+ minorTickSpacingSpinner.setModel(new SpinnerNumberModel(5, 0, 100, 5));
+ minorTickSpacingSpinner.addChangeListener(e -> minorThickSpacingChanged());
+ add(minorTickSpacingSpinner, "cell 0 6 3 1");
+
+ //---- sliderValueLabel ----
+ sliderValueLabel.setText("slider value");
+ add(sliderValueLabel, "cell 0 6 3 1");
// JFormDesigner - End of component initialization //GEN-END:initComponents
-
- horizontalRangeSlider.setOrientation( SwingConstants.HORIZONTAL );
- horizontalRangeSlider.setMinimum( 0 );
- horizontalRangeSlider.setMaximum( 100 );
- horizontalRangeSlider.setLowValue( 10 );
- horizontalRangeSlider.setHighValue( 90 );
- horizontalRangeSlider.setLabelTable( horizontalRangeSlider.createStandardLabels( 10 ) );
- horizontalRangeSlider.setMinorTickSpacing( 5 );
- horizontalRangeSlider.setMajorTickSpacing( 10 );
- horizontalRangeSlider.setPaintTicks( true );
- horizontalRangeSlider.setPaintLabels( true );
-
- verticalRangeSlider.setOrientation( SwingConstants.VERTICAL );
- verticalRangeSlider.setMinimum( 0 );
- verticalRangeSlider.setMaximum( 100 );
- verticalRangeSlider.setLowValue( 10 );
- verticalRangeSlider.setHighValue( 90 );
- verticalRangeSlider.setLabelTable( horizontalRangeSlider.createStandardLabels( 10 ) );
- verticalRangeSlider.setMinorTickSpacing( 5 );
- verticalRangeSlider.setMajorTickSpacing( 10 );
- verticalRangeSlider.setPaintTicks( true );
- verticalRangeSlider.setPaintLabels( true );
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private RangeSlider horizontalRangeSlider;
+ private JSlider horizontalSlider;
+ private RangeSlider horizontalRangeSlider2;
+ private JSlider horizontalSlider2;
private RangeSlider verticalRangeSlider;
+ private JSlider verticalSlider;
+ private RangeSlider verticalRangeSlider2;
+ private JSlider verticalSlider2;
private JCheckBox paintTick;
private JCheckBox paintLabel;
+ private JCheckBox sliderSnapToTicksCheckBox;
+ private JSpinner majorTickSpacingSpinner;
+ private JSpinner minorTickSpacingSpinner;
+ private JLabel sliderValueLabel;
// JFormDesigner - End of variables declaration //GEN-END:variables
}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatRangeSliderTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatRangeSliderTest.jfd
index 2cef9f84..c5a93466 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatRangeSliderTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/jideoss/FlatRangeSliderTest.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.2.0.298" Java: "15" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -8,8 +8,8 @@ new FormModel {
}
add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets dialog,hidemode 3"
- "$columnConstraints": "[left][fill]"
- "$rowConstraints": "[fill][center][grow,fill][]"
+ "$columnConstraints": "[left][240,left][fill]"
+ "$rowConstraints": "[fill][center][][][][grow,fill][]"
} ) {
name: "this"
add( new FormComponent( "javax.swing.JLabel" ) {
@@ -26,26 +26,105 @@ new FormModel {
} )
add( new FormComponent( "com.jidesoft.swing.RangeSlider" ) {
name: "horizontalRangeSlider"
+ "lowValue": 30
+ "highValue": 80
+ "majorTickSpacing": 10
+ "minorTickSpacing": 5
+ "paintTicks": true
+ "paintLabels": true
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 1"
+ "value": "cell 1 1,growx"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "horizontalSlider"
+ "minorTickSpacing": 5
+ "paintTicks": true
+ "majorTickSpacing": 10
+ "paintLabels": true
+ "value": 30
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 2,growx"
+ } )
+ add( new FormComponent( "com.jidesoft.swing.RangeSlider" ) {
+ name: "horizontalRangeSlider2"
+ "lowValue": 30
+ "highValue": 80
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 3,growx"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "horizontalSlider2"
+ "value": 30
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 4,growx"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "verticalLabel"
"text": "Vertical"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 2,aligny top,growy 0"
+ "value": "cell 0 5,aligny top,growy 0"
} )
add( new FormComponent( "com.jidesoft.swing.RangeSlider" ) {
name: "verticalRangeSlider"
"orientation": 1
+ "lowValue": 30
+ "highValue": 80
+ "majorTickSpacing": 10
+ "minorTickSpacing": 5
+ "paintTicks": true
+ "paintLabels": true
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 1 2,alignx left,growx 0"
+ "value": "cell 1 5,alignx left,growx 0"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "verticalSlider"
+ "minorTickSpacing": 5
+ "paintTicks": true
+ "majorTickSpacing": 10
+ "paintLabels": true
+ "orientation": 1
+ "value": 30
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 5"
+ } )
+ add( new FormComponent( "com.jidesoft.swing.RangeSlider" ) {
+ name: "verticalRangeSlider2"
+ "orientation": 1
+ "lowValue": 30
+ "highValue": 80
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 5"
+ } )
+ add( new FormComponent( "javax.swing.JSlider" ) {
+ name: "verticalSlider2"
+ "orientation": 1
+ "value": 30
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 5"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "paintTick"
@@ -57,7 +136,7 @@ new FormModel {
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "paintTicks", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 3 2 1"
+ "value": "cell 0 6 3 1"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "paintLabel"
@@ -69,7 +148,46 @@ new FormModel {
}
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "paintLabels", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
- "value": "cell 0 3 2 1"
+ "value": "cell 0 6 3 1"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "sliderSnapToTicksCheckBox"
+ "text": "snap to ticks"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "sliderSnapToTicksChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 6 3 1"
+ } )
+ add( new FormComponent( "javax.swing.JSpinner" ) {
+ name: "majorTickSpacingSpinner"
+ "model": new javax.swing.SpinnerNumberModel( 10, 0, 100, 5 )
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "majorThickSpacingChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 6 3 1"
+ } )
+ add( new FormComponent( "javax.swing.JSpinner" ) {
+ name: "minorTickSpacingSpinner"
+ "model": new javax.swing.SpinnerNumberModel( 5, 0, 100, 5 )
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "minorThickSpacingChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 6 3 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "sliderValueLabel"
+ "text": "slider value"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 6 3 1"
} )
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
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 ac36c871..b4b30986 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
@@ -25,6 +25,7 @@ import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.InputStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringReader;
@@ -37,6 +38,7 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
+import java.util.Properties;
import java.util.TreeSet;
import java.util.function.Predicate;
import javax.swing.Icon;
@@ -63,7 +65,9 @@ import com.formdev.flatlaf.*;
import com.formdev.flatlaf.intellijthemes.FlatAllIJThemes;
import com.formdev.flatlaf.testing.FlatTestLaf;
import com.formdev.flatlaf.ui.FlatLineBorder;
+import com.formdev.flatlaf.ui.FlatUIUtils;
import com.formdev.flatlaf.util.ColorFunctions.ColorFunction;
+import com.formdev.flatlaf.util.ColorFunctions.Fade;
import com.formdev.flatlaf.util.ColorFunctions.HSLIncreaseDecrease;
import com.formdev.flatlaf.util.DerivedColor;
import com.formdev.flatlaf.util.StringUtils;
@@ -78,6 +82,8 @@ public class UIDefaultsDump
{
private final LookAndFeel lookAndFeel;
private final UIDefaults defaults;
+ private final Properties derivedColorKeys;
+ private final boolean isIntelliJTheme;
private String lastPrefix;
private JComponent dummyComponent;
@@ -279,6 +285,9 @@ public class UIDefaultsDump
private UIDefaultsDump( LookAndFeel lookAndFeel ) {
this.lookAndFeel = lookAndFeel;
this.defaults = lookAndFeel.getDefaults();
+
+ derivedColorKeys = loadDerivedColorKeys();
+ isIntelliJTheme = (lookAndFeel instanceof IntelliJTheme.ThemeLaf);
}
private void dump( PrintWriter out, Predicate keyFilter ) {
@@ -315,12 +324,12 @@ public class UIDefaultsDump
}
out.printf( "%-30s ", strKey );
- dumpValue( out, value );
+ dumpValue( out, strKey, value );
out.println();
} );
}
- private void dumpValue( PrintWriter out, Object value ) {
+ private void dumpValue( PrintWriter out, String key, Object value ) {
if( value == null ||
value instanceof String ||
value instanceof Number ||
@@ -338,7 +347,7 @@ public class UIDefaultsDump
else if( value instanceof List )
dumpList( out, (List>) value );
else if( value instanceof Color )
- dumpColor( out, (Color) value );
+ dumpColor( out, key, (Color) value );
else if( value instanceof Font )
dumpFont( out, (Font) value );
else if( value instanceof Insets )
@@ -366,7 +375,7 @@ public class UIDefaultsDump
out.printf( "length=%d %s", length, dumpClass( array ) );
for( int i = 0; i < length; i++ ) {
out.printf( "%n [%d] ", i );
- dumpValue( out, Array.get( array, i ) );
+ dumpValue( out, null, Array.get( array, i ) );
}
}
@@ -374,14 +383,25 @@ public class UIDefaultsDump
out.printf( "size=%d %s", list.size(), dumpClass( list ) );
for( int i = 0; i < list.size(); i++ ) {
out.printf( "%n [%d] ", i );
- dumpValue( out, list.get( i ) );
+ dumpValue( out, null, list.get( i ) );
}
}
- private void dumpColor( PrintWriter out, Color color ) {
- boolean hasAlpha = (color.getAlpha() != 255);
- out.printf( hasAlpha ? "#%08x %s" : "#%06x %s",
- hasAlpha ? color.getRGB() : (color.getRGB() & 0xffffff),
+ private void dumpColor( PrintWriter out, String key, Color color ) {
+ Color resolvedColor = resolveDerivedColor( key, color );
+ 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 ) );
+ }
+
+ out.printf( "%s / ",
+ dumpColorHex( resolvedColor ) );
+ }
+
+ out.printf( "%s %s",
+ dumpColorHex( color ),
dumpClass( color ) );
if( color instanceof DerivedColor ) {
@@ -394,18 +414,29 @@ public class UIDefaultsDump
}
}
+ private String dumpColorHex( Color color ) {
+ boolean hasAlpha = (color.getAlpha() != 255);
+ return String.format( hasAlpha ? "#%08x" : "#%06x",
+ hasAlpha ? color.getRGB() : (color.getRGB() & 0xffffff) );
+ }
+
private void dumpColorFunction( PrintWriter out, ColorFunction function ) {
if( function instanceof HSLIncreaseDecrease ) {
HSLIncreaseDecrease func = (HSLIncreaseDecrease) function;
String name;
switch( func.hslIndex ) {
- case 2: name = func.increase ? "lighten" : "darken"; break;
+ case 0: name = "spin"; break;
case 1: name = func.increase ? "saturate" : "desaturate"; break;
+ case 2: name = func.increase ? "lighten" : "darken"; break;
+ case 3: name = func.increase ? "fadein" : "fadeout"; break;
default: throw new IllegalArgumentException();
}
out.printf( "%s(%.0f%%%s%s)", name, func.amount,
(func.relative ? " relative" : ""),
(func.autoInverse ? " autoInverse" : "") );
+ } else if( function instanceof Fade ) {
+ Fade func = (Fade) function;
+ out.printf( "fade(%.0f%%)", func.amount );
} else
throw new IllegalArgumentException( "unknown color function: " + function );
}
@@ -451,7 +482,7 @@ public class UIDefaultsDump
if( border instanceof LineBorder ) {
LineBorder b = (LineBorder) border;
out.print( "line: " );
- dumpValue( out, b.getLineColor() );
+ dumpValue( out, null, b.getLineColor() );
out.printf( " %d %b ", b.getThickness(), b.getRoundedCorners() );
}
@@ -492,7 +523,7 @@ public class UIDefaultsDump
if( border instanceof FlatLineBorder ) {
FlatLineBorder lineBorder = (FlatLineBorder) border;
out.print( " lineColor=" );
- dumpColor( out, lineBorder.getLineColor() );
+ dumpColor( out, null, lineBorder.getLineColor() );
out.printf( " lineThickness=%f", lineBorder.getLineThickness() );
}
}
@@ -535,7 +566,7 @@ public class UIDefaultsDump
private void dumpLazyValue( PrintWriter out, LazyValue value ) {
out.print( "[lazy] " );
- dumpValue( out, value.createValue( defaults ) );
+ dumpValue( out, null, value.createValue( defaults ) );
}
private void dumpActiveValue( PrintWriter out, ActiveValue value ) {
@@ -549,7 +580,7 @@ public class UIDefaultsDump
if( realValue instanceof UIResource )
out.print( " [UI]" );
} else
- dumpValue( out, realValue );
+ dumpValue( out, null, realValue );
}
private String dumpClass( Object value ) {
@@ -559,6 +590,46 @@ public class UIDefaultsDump
return classname;
}
+ private Properties loadDerivedColorKeys() {
+ Properties properties = new Properties();
+ try( InputStream in = getClass().getResourceAsStream( "/com/formdev/flatlaf/extras/resources/DerivedColorKeys.properties" ) ) {
+ properties.load( in );
+ } catch( IOException ex ) {
+ ex.printStackTrace();
+ }
+ return properties;
+ }
+
+ private Color resolveDerivedColor( String key, Color color ) {
+ if( !(color instanceof DerivedColor) )
+ return color;
+
+ if( key == null )
+ throw new NullPointerException( "Key must not null." );
+
+ Object baseKey = derivedColorKeys.get( key );
+
+ if( baseKey == null )
+ throw new IllegalStateException( "Key '" + key + "' not found in DerivedColorKeys.properties." );
+
+ // this is for keys that may be defined as derived colors, but do not derive them at runtime
+ if( "null".equals( baseKey ) )
+ return color;
+
+ Color baseColor = defaults.getColor( baseKey );
+ if( baseColor == null )
+ throw new IllegalStateException( "Missing base color '" + baseKey + "' for key '" + key + "'." );
+
+ if( baseColor instanceof DerivedColor )
+ baseColor = resolveDerivedColor( (String) baseKey, baseColor );
+
+ Color newColor = FlatUIUtils.deriveColor( color, baseColor );
+
+ // creating a new color instance to drop Color.frgbvalue from newColor
+ // and avoid rounding issues/differences
+ return new Color( newColor.getRGB(), true );
+ }
+
//---- class MyBasicLookAndFeel -------------------------------------------
public static class MyBasicLookAndFeel
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java
index b0abaa38..93cc7147 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsKeysDump.java
@@ -16,8 +16,10 @@
package com.formdev.flatlaf.testing.uidefaults;
+import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
+import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
@@ -42,13 +44,24 @@ public class UIDefaultsKeysDump
File keysFile = new File( "../flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt" );
+ // load existing keys file
HashSet keys = new HashSet<>();
+ try( BufferedReader reader = new BufferedReader( new FileReader( keysFile ) ) ) {
+ String key;
+ while( (key = reader.readLine()) != null ) {
+ keys.add( key );
+ }
+ } catch( IOException ex ) {
+ ex.printStackTrace();
+ }
+ // collect keys used in Lafs
collectKeys( FlatLightLaf.class.getName(), keys );
collectKeys( FlatDarkLaf.class.getName(), keys );
collectKeys( FlatIntelliJLaf.class.getName(), keys );
collectKeys( FlatDarculaLaf.class.getName(), keys );
+ // write key file
try( Writer fileWriter = new BufferedWriter( new FileWriter( keysFile ) ) ) {
String[] sortedKeys = keys.toArray( new String[keys.size()] );
Arrays.sort( sortedKeys );
diff --git a/flatlaf-testing/src/main/resources/META-INF/services/com.formdev.flatlaf.FlatDefaultsAddon b/flatlaf-testing/src/main/resources/META-INF/services/com.formdev.flatlaf.FlatDefaultsAddon
index d0cccba9..b2b6b9dc 100644
--- a/flatlaf-testing/src/main/resources/META-INF/services/com.formdev.flatlaf.FlatDefaultsAddon
+++ b/flatlaf-testing/src/main/resources/META-INF/services/com.formdev.flatlaf.FlatDefaultsAddon
@@ -1 +1,2 @@
+com.formdev.flatlaf.testing.jideoss.FlatJideOssDefaultsTestAddon
com.formdev.flatlaf.testing.swingx.FlatSwingXDefaultsTestAddon
diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties
index b4e350ba..dca9ff08 100644
--- a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties
+++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties
@@ -16,343 +16,356 @@
#---- variables ----
-@background=#cfc
-@foreground=#f00
-@selectionBackground=#0a0
-@selectionForeground=#ff0
-@selectionInactiveBackground=#888
-@selectionInactiveForeground=#fff
-@disabledText=#008
-@textComponentBackground=#fff
-@menuBackground=#fff
-@menuHoverBackground=darken(@menuBackground,10%)
-@menuCheckBackground=#ccf
-@menuAcceleratorForeground=#f88
-@menuAcceleratorSelectionForeground=#fff
-@cellFocusColor=#f00
-@icon=#afafaf
+@background = #cfc
+@foreground = #f00
+@selectionBackground = #0a0
+@selectionForeground = #ff0
+@selectionInactiveBackground = #888
+@selectionInactiveForeground = #fff
+@disabledText = #008
+@textComponentBackground = #fff
+@menuBackground = #fff
+@menuHoverBackground = darken(@menuBackground,10%)
+@menuCheckBackground = #ccf
+@menuAcceleratorForeground = #f88
+@menuAcceleratorSelectionForeground = #fff
+@cellFocusColor = #f00
+@icon = #afafaf
-@dropCellBackground=#f00
-@dropCellForeground=#0f0
-@dropLineColor=#00f
-@dropLineShortColor=#ff0
+# for buttons within components (e.g. combobox or spinner)
+@buttonArrowColor = #666
+@buttonDisabledArrowColor = #ABABAB
+@buttonHoverArrowColor = #f00
+@buttonPressedArrowColor = #00f
+
+@dropCellBackground = #f00
+@dropCellForeground = #0f0
+@dropLineColor = #00f
+@dropLineShortColor = #ff0
-#---- globals ----
+#---- wildcard replacements ----
-*.caretForeground=#00f
-*.inactiveBackground=#f0f0f0
-*.inactiveForeground=#008
-*.disabledBackground=#e0e0e0
+*.caretForeground = #00f
+*.inactiveBackground = #f0f0f0
+*.inactiveForeground = #008
+*.disabledBackground = #e0e0e0
#---- system colors ----
-activeCaption=#99b4d1
-inactiveCaption=#bfcddb
-controlHighlight=#e3e3e3
-controlLtHighlight=#fff
-controlShadow=#a0a0a0
-controlDkShadow=#696969
+activeCaption = #99b4d1
+inactiveCaption = #bfcddb
+controlHighlight = #e3e3e3
+controlLtHighlight = #fff
+controlShadow = #a0a0a0
+controlDkShadow = #696969
#---- Button ----
-Button.startBackground=#fff
-Button.endBackground=#bbb
-Button.focusedBackground=#0ff
-Button.hoverBackground=#ff0
-Button.pressedBackground=#FFC800
+Button.startBackground = #fff
+Button.endBackground = #bbb
+Button.focusedBackground = #0ff
+Button.hoverBackground = #ff0
+Button.pressedBackground = #FFC800
-Button.startBorderColor=#00f
-Button.endBorderColor=#f00
-Button.disabledBorderColor=#008
-Button.focusedBorderColor=#466d94
-Button.hoverBorderColor=#f00
+Button.startBorderColor = #00f
+Button.endBorderColor = #f00
+Button.disabledBorderColor = #008
+Button.focusedBorderColor = #466d94
+Button.hoverBorderColor = #f00
-Button.default.startBackground=#ddd
-Button.default.endBackground=#888
-Button.default.foreground=#800
-Button.default.focusedBackground=#0ff
-Button.default.hoverBackground=#ff0
-Button.default.pressedBackground=#FFC800
-Button.default.startBorderColor=#f00
-Button.default.endBorderColor=#00f
-Button.default.hoverBorderColor=#f00
-Button.default.focusedBorderColor=#537699
-Button.default.focusColor=#f00
+Button.innerFocusWidth = 1
-Button.toolbar.hoverBackground=#fff
-Button.toolbar.pressedBackground=#eee
+Button.default.startBackground = #ddd
+Button.default.endBackground = #888
+Button.default.foreground = #800
+Button.default.focusedBackground = #0ff
+Button.default.hoverBackground = #ff0
+Button.default.pressedBackground = #FFC800
+Button.default.startBorderColor = #f00
+Button.default.endBorderColor = #00f
+Button.default.hoverBorderColor = #f00
+Button.default.focusedBorderColor = #537699
+Button.default.focusColor = #f00
+
+Button.toolbar.hoverBackground = #fff
+Button.toolbar.pressedBackground = #eee
#---- CheckBox ----
# enabled
-CheckBox.icon.borderColor=#878787
-CheckBox.icon.background=#fff
-CheckBox.icon.selectedBorderColor=#4982CC
-CheckBox.icon.selectedBackground=#4D89C9
-CheckBox.icon.checkmarkColor=#fff
+CheckBox.icon.borderColor = #878787
+CheckBox.icon.background = #fff
+CheckBox.icon.selectedBorderColor = #4982CC
+CheckBox.icon.selectedBackground = #4D89C9
+CheckBox.icon.checkmarkColor = #fff
# disabled
-CheckBox.icon.disabledBorderColor=#BDBDBD
-CheckBox.icon.disabledBackground=#F2F2F2
-CheckBox.icon.disabledCheckmarkColor=#ABABAB
+CheckBox.icon.disabledBorderColor = #BDBDBD
+CheckBox.icon.disabledBackground = #F2F2F2
+CheckBox.icon.disabledCheckmarkColor = #ABABAB
# focused
-CheckBox.icon.focusedBorderColor=#7B9FC7
-CheckBox.icon.focusedBackground=#0ff
-CheckBox.icon.selectedFocusedBorderColor=#ACCFF7
+CheckBox.icon.focusedBorderColor = #7B9FC7
+CheckBox.icon.focusedBackground = #0ff
+CheckBox.icon.selectedFocusedBorderColor = #ACCFF7
# hover
-CheckBox.icon.hoverBorderColor=#f00
-CheckBox.icon.hoverBackground=#ff0
+CheckBox.icon.hoverBorderColor = #f00
+CheckBox.icon.hoverBackground = #ff0
# pressed
-CheckBox.icon.pressedBackground=#FFC800
+CheckBox.icon.pressedBackground = #FFC800
#---- ComboBox ----
-ComboBox.background=#fff
-ComboBox.buttonBackground=#f0f0f0
-ComboBox.buttonEditableBackground=#ccc
-ComboBox.buttonArrowColor=#666
-ComboBox.buttonDisabledArrowColor=#ABABAB
-ComboBox.buttonHoverArrowColor=#f00
+ComboBox.background = #fff
+ComboBox.buttonBackground = #f0f0f0
+ComboBox.buttonEditableBackground = #ccc
#---- Component ----
-Component.borderColor=#f00
-Component.disabledBorderColor=#008
-Component.focusedBorderColor=#466d94
-Component.focusColor=#97c3f3
-#Component.focusWidth=5
-#Component.arc=8
-Component.grayFilter=25,25,100
+Component.borderColor = #f00
+Component.disabledBorderColor = #008
+Component.focusedBorderColor = #466d94
+Component.focusColor = #97c3f3
+#Component.focusWidth = 5
+#Component.arc = 8
+Component.grayFilter = 25,25,100
#---- Desktop ----
-Desktop.background=#afe
+Desktop.background = #afe
#---- DesktopIcon ----
-DesktopIcon.background=darken($Desktop.background,20%)
+DesktopIcon.background = darken($Desktop.background,20%)
#---- HelpButton ----
-HelpButton.questionMarkColor=#00f
+HelpButton.focusedBackground = #0ff
+HelpButton.questionMarkColor = #00f
#---- InternalFrame ----
-InternalFrame.activeTitleBackground=#800
-InternalFrame.activeTitleForeground=#faa
-InternalFrame.inactiveTitleBackground=#080
-InternalFrame.inactiveTitleForeground=#afa
+InternalFrame.activeTitleBackground = #800
+InternalFrame.activeTitleForeground = #faa
+InternalFrame.inactiveTitleBackground = #080
+InternalFrame.inactiveTitleForeground = #afa
-InternalFrame.activeBorderColor=#f00
-InternalFrame.inactiveBorderColor=#0f0
+InternalFrame.activeBorderColor = #f00
+InternalFrame.inactiveBorderColor = #0f0
-InternalFrame.buttonHoverBackground=#060
-InternalFrame.buttonPressedBackground=#0a0
-InternalFrame.closeHoverBackground=#008
-InternalFrame.closePressedBackground=#00f
-InternalFrame.closeHoverForeground=#fff
-InternalFrame.closePressedForeground=#fff
+InternalFrame.buttonHoverBackground = #060
+InternalFrame.buttonPressedBackground = #0a0
+InternalFrame.closeHoverBackground = #008
+InternalFrame.closePressedBackground = #00f
+InternalFrame.closeHoverForeground = #fff
+InternalFrame.closePressedForeground = #fff
#---- Label ----
-Label.foreground=#080
-Label.disabledForeground=#008
+Label.foreground = #080
+Label.disabledForeground = #008
#---- List ----
-List.background=#f0ffff
-List.cellNoFocusBorder=1,6,1,6
-List.focusSelectedCellHighlightBorder=1,6,1,6,#800
-List.focusCellHighlightBorder=1,6,1,6,#800
+List.background = #f0ffff
+List.cellNoFocusBorder = 1,6,1,6
+List.focusSelectedCellHighlightBorder = 1,6,1,6,#800
+List.focusCellHighlightBorder = 1,6,1,6,#800
#---- Menu ----
-Menu.icon.arrowColor=#4D89C9
-Menu.icon.disabledArrowColor=#ABABAB
+Menu.icon.arrowColor = #4D89C9
+Menu.icon.disabledArrowColor = #ABABAB
#---- MenuBar ----
-MenuBar.borderColor=#44f
-MenuBar.hoverBackground=#fdd
+MenuBar.borderColor = #44f
+MenuBar.hoverBackground = #fdd
+MenuBar.underlineSelectionBackground = #0f0
+MenuBar.underlineSelectionColor = #f00
+MenuBar.underlineSelectionHeight = 5
#---- MenuItemCheckBox ----
-MenuItemCheckBox.icon.checkmarkColor=#4D89C9
-MenuItemCheckBox.icon.disabledCheckmarkColor=#ABABAB
+MenuItemCheckBox.icon.checkmarkColor = #4D89C9
+MenuItemCheckBox.icon.disabledCheckmarkColor = #ABABAB
#---- OptionPane ----
-OptionPane.background=#fdd
-OptionPane.foreground=#f00
+OptionPane.background = #fdd
+OptionPane.foreground = #f00
-OptionPane.icon.errorColor=#f00
-OptionPane.icon.informationColor=#0f0
-OptionPane.icon.questionColor=#00f
-OptionPane.icon.warningColor=#fc0
-OptionPane.icon.foreground=#fff
+OptionPane.icon.errorColor = #f00
+OptionPane.icon.informationColor = #0f0
+OptionPane.icon.questionColor = #00f
+OptionPane.icon.warningColor = #fc0
+OptionPane.icon.foreground = #fff
#---- Popup ----
-Popup.dropShadowColor=#0f0
-Popup.dropShadowOpacity=0.5
-Popup.dropShadowInsets=-6,6,6,6
+Popup.dropShadowColor = #0f0
+Popup.dropShadowOpacity = 0.5
+Popup.dropShadowInsets = -6,6,6,6
#---- PopupMenu ----
-PopupMenu.borderColor=#00f
+PopupMenu.borderColor = #00f
#---- PopupMenuSeparator ----
-PopupMenuSeparator.height=30
-PopupMenuSeparator.stripeWidth=3
-PopupMenuSeparator.stripeIndent=1
+PopupMenuSeparator.height = 30
+PopupMenuSeparator.stripeWidth = 3
+PopupMenuSeparator.stripeIndent = 1
#---- ProgressBar ----
-ProgressBar.background=#8f8
-ProgressBar.foreground=#73737333
-ProgressBar.selectionForeground=#f00
-ProgressBar.selectionBackground=#008
-ProgressBar.cycleTime=10000
+ProgressBar.background = #8f8
+ProgressBar.foreground = #73737333
+ProgressBar.selectionForeground = #f00
+ProgressBar.selectionBackground = #008
+ProgressBar.cycleTime = 10000
#---- ScrollBar ----
-ScrollBar.track=#8f8
-ScrollBar.thumb=#73737333
-ScrollBar.hoverTrackColor=#0f0
-ScrollBar.hoverThumbColor=#f00
+ScrollBar.track = #8f8
+ScrollBar.thumb = #73737333
+ScrollBar.hoverTrackColor = #0f0
+ScrollBar.hoverThumbColor = #f00
#---- Separator ----
-Separator.foreground=#0b0
-Separator.height=20
-Separator.stripeWidth=10
-Separator.stripeIndent=5
+Separator.foreground = #0b0
+Separator.height = 20
+Separator.stripeWidth = 10
+Separator.stripeIndent = 5
#---- Slider ----
-Slider.trackColor=#0b0
-Slider.thumbColor=#800
-Slider.tickColor=#f00
-Slider.focusedColor=$Component.focusColor
-Slider.hoverColor=#00f
-Slider.disabledForeground=#008
+Slider.trackColor = #8f8
+Slider.thumbColor = #faa
+Slider.thumbBorderColor = #f00
+Slider.tickColor = #f00
+Slider.focusedColor = $Component.focusColor
+Slider.hoverThumbColor = #00f
+Slider.pressedThumbColor = #0f0
+Slider.disabledTrackColor = #ff8
+Slider.disabledThumbColor = #880
#---- SplitPane ----
-SplitPaneDivider.draggingColor=#800
-SplitPaneDivider.oneTouchArrowColor=#0f0
-SplitPaneDivider.oneTouchHoverArrowColor=#f00
+SplitPaneDivider.draggingColor = #800
+SplitPaneDivider.oneTouchArrowColor = #0f0
+SplitPaneDivider.oneTouchHoverArrowColor = #f00
+SplitPaneDivider.oneTouchPressedArrowColor = #00f
#---- TabbedPane ----
-TabbedPane.disabledForeground=#777
-TabbedPane.selectedBackground=#0f0
-TabbedPane.selectedForeground=#00f
-TabbedPane.underlineColor=#ff0
-TabbedPane.disabledUnderlineColor=#7a7a7a
-TabbedPane.hoverColor=#eee
-TabbedPane.focusColor=#ddd
-TabbedPane.tabSeparatorColor=#00f
-TabbedPane.contentAreaColor=#f00
+TabbedPane.disabledForeground = #777
+TabbedPane.selectedBackground = #0f0
+TabbedPane.selectedForeground = #00f
+TabbedPane.underlineColor = #ff0
+TabbedPane.disabledUnderlineColor = #7a7a7a
+TabbedPane.hoverColor = #eee
+TabbedPane.focusColor = #ddd
+TabbedPane.tabSeparatorColor = #00f
+TabbedPane.contentAreaColor = #f00
-TabbedPane.buttonHoverBackground=#ff0
-TabbedPane.buttonPressedBackground=#FFC800
+TabbedPane.buttonHoverBackground = #ff0
+TabbedPane.buttonPressedBackground = #FFC800
-TabbedPane.closeSize=16,16
-TabbedPane.closeArc=999
-TabbedPane.closeCrossPlainSize={float}12
-TabbedPane.closeCrossFilledSize={float}6.5
-TabbedPane.closeCrossLineWidth={float}2
-#TabbedPane.closeBackground=#faa
-TabbedPane.closeForeground=#f00
-TabbedPane.closeHoverBackground=#a00
-TabbedPane.closeHoverForeground=#fff
-TabbedPane.closePressedBackground=#0f0
-TabbedPane.closePressedForeground=#000
+TabbedPane.closeSize = 16,16
+TabbedPane.closeArc = 999
+TabbedPane.closeCrossPlainSize = {float}12
+TabbedPane.closeCrossFilledSize = {float}6.5
+TabbedPane.closeCrossLineWidth = {float}2
+#TabbedPane.closeBackground = #faa
+TabbedPane.closeForeground = #f00
+TabbedPane.closeHoverBackground = #a00
+TabbedPane.closeHoverForeground = #fff
+TabbedPane.closePressedBackground = #0f0
+TabbedPane.closePressedForeground = #000
#---- Table ----
-Table.rowHeight=25
-Table.background=#fffff0
-Table.sortIconColor=#ff0
-Table.gridColor=#0ff
+Table.rowHeight = 25
+Table.background = #fffff0
+Table.sortIconColor = #ff0
+Table.gridColor = #0ff
#---- TableHeader ----
-TableHeader.background=#44f
-TableHeader.foreground=#fff
-TableHeader.separatorColor=#0f0
-TableHeader.bottomSeparatorColor=#0f0
+TableHeader.background = #44f
+TableHeader.foreground = #fff
+TableHeader.separatorColor = #0f0
+TableHeader.bottomSeparatorColor = #0f0
#---- TitledBorder ----
-TitledBorder.titleColor=#f0f
-TitledBorder.border=1,1,1,1,#f0f
+TitledBorder.titleColor = #f0f
+TitledBorder.border = 1,1,1,1,#f0f
#---- TitlePane ----
-TitlePane.background=#0f0
-TitlePane.inactiveBackground=#080
-TitlePane.foreground=#00f
-TitlePane.inactiveForeground=#fff
+TitlePane.background = #0f0
+TitlePane.inactiveBackground = #080
+TitlePane.foreground = #00f
+TitlePane.inactiveForeground = #fff
#---- ToggleButton ----
-ToggleButton.background=#ddf
-ToggleButton.selectedBackground=#4f4
-ToggleButton.selectedForeground=#000
-ToggleButton.disabledSelectedBackground=#4d4
+ToggleButton.background = #ddf
+ToggleButton.selectedBackground = #4f4
+ToggleButton.selectedForeground = #000
+ToggleButton.disabledSelectedBackground = #4d4
-ToggleButton.focusedBackground=#0ff
-ToggleButton.hoverBackground=#ff0
-ToggleButton.pressedBackground=#FFC800
+ToggleButton.focusedBackground = #0ff
+ToggleButton.hoverBackground = #ff0
+ToggleButton.pressedBackground = #FFC800
-ToggleButton.toolbar.selectedBackground=#ddd
+ToggleButton.toolbar.selectedBackground = #ddd
#---- ToolTip ----
-ToolTip.background=#eef
+ToolTip.background = #eef
#---- Tree ----
-Tree.background=#fff0ff
-Tree.paintLines=true
-Tree.hash=#f00
-Tree.editorBorder=1,1,1,1,#f00
-Tree.editorBorderSelectionColor=#00f
+Tree.background = #fff0ff
+Tree.paintLines = true
+Tree.hash = #f00
+Tree.editorBorder = 1,1,1,1,#f00
+Tree.editorBorderSelectionColor = #00f
diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatDarkLaf.properties b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatDarkLaf.properties
index 0228f31a..0ca9cca1 100644
--- a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatDarkLaf.properties
+++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatDarkLaf.properties
@@ -1 +1 @@
-# @background=#000
+# @background = #000
diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatLaf.properties b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatLaf.properties
index cc1b0e74..082cc4a2 100644
--- a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatLaf.properties
+++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatLaf.properties
@@ -1,2 +1,2 @@
-# Component.arc=9999
-# TextComponent.arc=9999
+# Component.arc = 9999
+# TextComponent.arc = 9999
diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatLightLaf.properties b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatLightLaf.properties
index 33afe328..2a92b92b 100644
--- a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatLightLaf.properties
+++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/customdefaults/FlatLightLaf.properties
@@ -1 +1 @@
-# @background=#fff
+# @background = #fff
diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/jideoss/FlatTestLaf.properties b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/jideoss/FlatTestLaf.properties
new file mode 100644
index 00000000..2ee17af1
--- /dev/null
+++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/jideoss/FlatTestLaf.properties
@@ -0,0 +1,20 @@
+#
+# Copyright 2020 FormDev Software GmbH
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#---- RangeSlider ----
+
+Slider.hoverTrackColor = #44f
+Slider.pressedTrackColor = #8f8
diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/swingx/FlatTestLaf.properties b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/swingx/FlatTestLaf.properties
index a917c807..60161ae4 100644
--- a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/swingx/FlatTestLaf.properties
+++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/swingx/FlatTestLaf.properties
@@ -16,61 +16,61 @@
#---- BusyLabel ----
-JXBusyLabel.baseColor=#0f0
-JXBusyLabel.highlightColor=#f00
+JXBusyLabel.baseColor = #0f0
+JXBusyLabel.highlightColor = #f00
#---- Header ----
-JXHeader.background=#f88
-JXHeader.startBackground=#fcc
-JXHeader.titleForeground=#00f
-JXHeader.descriptionForeground=#f00
+JXHeader.background = #f88
+JXHeader.startBackground = #fcc
+JXHeader.titleForeground = #00f
+JXHeader.descriptionForeground = #f00
#---- Hyperlink ----
-Hyperlink.linkColor=#f00
-Hyperlink.visitedColor=#00f
-Hyperlink.disabledText=#008
+Hyperlink.linkColor = #f00
+Hyperlink.visitedColor = #00f
+Hyperlink.disabledText = #008
#---- MonthView ----
-JXMonthView.background=@textComponentBackground
-JXMonthView.monthStringBackground=#0f0
-JXMonthView.monthStringForeground=#00f
-JXMonthView.daysOfTheWeekForeground=#0f0
-JXMonthView.weekOfTheYearForeground=#00f
-JXMonthView.unselectableDayForeground=#00f
-JXMonthView.selectedBackground=#afa
-JXMonthView.flaggedDayForeground=#0ff
-JXMonthView.leadingDayForeground=#c0c0c0
-JXMonthView.trailingDayForeground=#c0c0c0
-JXMonthView.arrowColor=#00f
-JXMonthView.disabledArrowColor=#ABABAB
+JXMonthView.background = @textComponentBackground
+JXMonthView.monthStringBackground = #0f0
+JXMonthView.monthStringForeground = #00f
+JXMonthView.daysOfTheWeekForeground = #0f0
+JXMonthView.weekOfTheYearForeground = #00f
+JXMonthView.unselectableDayForeground = #00f
+JXMonthView.selectedBackground = #afa
+JXMonthView.flaggedDayForeground = #0ff
+JXMonthView.leadingDayForeground = #c0c0c0
+JXMonthView.trailingDayForeground = #c0c0c0
+JXMonthView.arrowColor = #00f
+JXMonthView.disabledArrowColor = #ABABAB
#---- TaskPaneContainer ----
-TaskPaneContainer.background=#f88
-TaskPaneContainer.border=10,10,10,10
+TaskPaneContainer.background = #f88
+TaskPaneContainer.border = 10,10,10,10
#---- TaskPane ----
-TaskPane.background=#0f0
-TaskPane.borderColor=#00f
-TaskPane.contentInsets=10,10,10,10
+TaskPane.background = #0f0
+TaskPane.borderColor = #00f
+TaskPane.contentInsets = 10,10,10,10
-TaskPane.titleBackgroundGradientStart=#ff0
-TaskPane.titleForeground=#f0f
-TaskPane.titleOver=#00a
-TaskPane.specialTitleBackground=#0ff
-TaskPane.specialTitleForeground=#444
-TaskPane.specialTitleOver=#d00
+TaskPane.titleBackgroundGradientStart = #ff0
+TaskPane.titleForeground = #f0f
+TaskPane.titleOver = #00a
+TaskPane.specialTitleBackground = #0ff
+TaskPane.specialTitleForeground = #444
+TaskPane.specialTitleOver = #d00
#---- TitledPanel ----
-JXTitledPanel.borderColor=$Button.startBorderColor
+JXTitledPanel.borderColor = $Button.startBorderColor
diff --git a/flatlaf-theme-editor/build.gradle.kts b/flatlaf-theme-editor/build.gradle.kts
index 969d0d08..31a6fc02 100644
--- a/flatlaf-theme-editor/build.gradle.kts
+++ b/flatlaf-theme-editor/build.gradle.kts
@@ -18,12 +18,21 @@ plugins {
`java-library`
}
+repositories {
+ maven {
+ // for using MigLayout snapshot
+ url = uri( "https://oss.sonatype.org/content/repositories/snapshots/" )
+ }
+}
+
dependencies {
implementation( project( ":flatlaf-core" ) )
implementation( project( ":flatlaf-extras" ) )
- implementation( "com.fifesoft:rsyntaxtextarea:3.1.1" )
- implementation( "com.fifesoft:autocomplete:3.1.0" )
+ implementation( "com.miglayout:miglayout-swing:5.3-SNAPSHOT" )
+ implementation( "com.fifesoft:rsyntaxtextarea:3.1.2" )
+ implementation( "com.fifesoft:autocomplete:3.1.1" )
+ implementation( "com.fifesoft:rstaui:3.1.1" )
}
tasks {
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 e709bc28..c26f9bde 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
@@ -336,8 +336,9 @@ class FlatCompletionProvider
"lightness", "0-100%",
"alpha", "0-100%" );
+ String colorParamDesc = "a color (e.g. #f00), a reference (e.g. $Other.key) or a color function";
String[] hslIncreaseDecreaseParams = {
- "color", "a color (e.g. #f00), a reference (e.g. $Other.key) or a color function",
+ "color", colorParamDesc,
"amount", "0-100%",
"options", "(optional) [relative] [autoInverse] [noAutoInverse] [lazy] [derived]"
};
@@ -345,6 +346,17 @@ class FlatCompletionProvider
addFunction( "darken", hslIncreaseDecreaseParams );
addFunction( "saturate", hslIncreaseDecreaseParams );
addFunction( "desaturate", hslIncreaseDecreaseParams );
+ addFunction( "fadein", hslIncreaseDecreaseParams );
+ addFunction( "fadeout", hslIncreaseDecreaseParams );
+
+ addFunction( "fade",
+ "color", colorParamDesc,
+ "amount", "0-100%",
+ "options", "(optional) [derived]" );
+ addFunction( "spin",
+ "color", colorParamDesc,
+ "angle", "number of degrees to rotate",
+ "options", "(optional) [derived]" );
}
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
new file mode 100644
index 00000000..f906c9fe
--- /dev/null
+++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatFindReplaceBar.java
@@ -0,0 +1,390 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.formdev.flatlaf.themeeditor;
+
+import java.awt.Container;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.util.function.Consumer;
+import javax.swing.*;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import org.fife.rsta.ui.CollapsibleSectionPanel;
+import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
+import org.fife.ui.rtextarea.SearchContext;
+import org.fife.ui.rtextarea.SearchEngine;
+import org.fife.ui.rtextarea.SearchResult;
+import com.formdev.flatlaf.extras.FlatSVGIcon;
+import com.formdev.flatlaf.util.StringUtils;
+import net.miginfocom.swing.*;
+
+/**
+ * @author Karl Tauber
+ */
+class FlatFindReplaceBar
+ extends JPanel
+{
+ private final RSyntaxTextArea textArea;
+
+ private SearchContext context;
+
+ FlatFindReplaceBar( RSyntaxTextArea textArea ) {
+ this.textArea = textArea;
+
+ initComponents();
+
+ findField.getDocument().addDocumentListener( new MarkAllUpdater() );
+
+ // find previous/next with UP/DOWN keys; focus editor with F12 key
+ 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" );
+ 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() ) );
+
+ findPreviousButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/themeeditor/icons/findAndShowPrevMatches.svg" ) );
+ findNextButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/themeeditor/icons/findAndShowNextMatches.svg" ) );
+ matchCaseToggleButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/themeeditor/icons/matchCase.svg" ) );
+ matchWholeWordToggleButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/themeeditor/icons/words.svg" ) );
+ regexToggleButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/themeeditor/icons/regex.svg" ) );
+ closeButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/themeeditor/icons/close.svg" ) );
+
+ SearchContext context = new SearchContext();
+ context.setSearchWrap( true );
+ setSearchContext( context );
+ }
+
+ SearchContext getSearchContext() {
+ return context;
+ }
+
+ void setSearchContext( SearchContext context ) {
+ this.context = context;
+
+ findField.setText( context.getSearchFor() );
+ replaceField.setText( context.getReplaceWith() );
+ matchCaseToggleButton.setSelected( context.getMatchCase() );
+ matchWholeWordToggleButton.setSelected( context.getWholeWord() );
+ regexToggleButton.setSelected( context.isRegularExpression() );
+ }
+
+ @Override
+ public boolean requestFocusInWindow() {
+ // invoked from CollapsibleSectionPanel
+
+ // use selected text in editor for searching
+ String selectedText = textArea.getSelectedText();
+ if( !StringUtils.isEmpty( selectedText ) && selectedText.indexOf( '\n' ) < 0 )
+ findField.setText( selectedText );
+ else
+ findField.selectAll();
+
+ // if showing bar, highlight matches in editor
+ // (not invoking this from addNotify() because this would break the slide-in animation)
+ markAll();
+
+ return findField.requestFocusInWindow();
+ }
+
+ @Override
+ public void removeNotify() {
+ super.removeNotify();
+
+ // if hiding bar, clear all highlighted matches in editor and focus it
+ SearchEngine.markAll( textArea, new SearchContext() );
+ textArea.requestFocusInWindow();
+ }
+
+ private void findNext() {
+ context.setSearchForward( true );
+ find();
+ }
+
+ private void findPrevious() {
+ context.setSearchForward( false );
+ find();
+ }
+
+ private void find() {
+ findOrMarkAll( true );
+ }
+
+ private void markAll() {
+ findOrMarkAll( false );
+ }
+
+ private void findOrMarkAll( boolean find ) {
+ // update search context
+ String searchFor = findField.getText();
+ context.setSearchFor( searchFor );
+
+ // find
+ SearchResult result = find
+ ? SearchEngine.find( textArea, context )
+ : SearchEngine.markAll( textArea, context );
+
+ // update matches info label
+ updateMatchesLabel( result, false );
+
+ // enabled/disable
+ boolean findEnabled = !StringUtils.isEmpty( searchFor );
+ findPreviousButton.setEnabled( findEnabled );
+ findNextButton.setEnabled( findEnabled );
+ }
+
+ private void matchCaseChanged() {
+ context.setMatchCase( matchCaseToggleButton.isSelected() );
+ markAll();
+ }
+
+ private void matchWholeWordChanged() {
+ context.setWholeWord( matchWholeWordToggleButton.isSelected() );
+ markAll();
+ }
+
+ private void regexChanged() {
+ context.setRegularExpression( regexToggleButton.isSelected() );
+ markAll();
+ }
+
+ private void replace() {
+ // update search context
+ context.setSearchFor( findField.getText() );
+ context.setReplaceWith( replaceField.getText() );
+
+ // replace
+ SearchResult result = SearchEngine.replace( textArea, context );
+
+ // update matches info labels
+ updateMatchesLabel( result, true );
+ }
+
+ private void replaceAll() {
+ // update search context
+ context.setSearchFor( findField.getText() );
+ context.setReplaceWith( replaceField.getText() );
+
+ // replace all
+ SearchResult result = SearchEngine.replaceAll( textArea, context );
+
+ // update matches info labels
+ updateMatchesLabel( result, true );
+ }
+
+ private void updateMatchesLabel( SearchResult result, boolean replace ) {
+ matchesLabel.setText( result.getMarkedCount() + " matches" );
+ replaceMatchesLabel.setText( replace ? result.getCount() + " matches replaced" : null );
+ }
+
+ private void close() {
+ Container parent = getParent();
+ if( parent instanceof CollapsibleSectionPanel )
+ ((CollapsibleSectionPanel)parent).hideBottomComponent();
+ else if( parent != null )
+ parent.remove( this );
+ }
+
+ private void initComponents() {
+ // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
+ findLabel = new JLabel();
+ findField = new JTextField();
+ findToolBar = new JToolBar();
+ findPreviousButton = new JButton();
+ findNextButton = new JButton();
+ matchCaseToggleButton = new JToggleButton();
+ matchWholeWordToggleButton = new JToggleButton();
+ regexToggleButton = new JToggleButton();
+ matchesLabel = new JLabel();
+ closeToolBar = new JToolBar();
+ closeButton = new JButton();
+ replaceLabel = new JLabel();
+ replaceField = new JTextField();
+ toolBar1 = new JToolBar();
+ replaceButton = new JButton();
+ replaceAllButton = new JButton();
+ replaceMatchesLabel = new JLabel();
+
+ //======== this ========
+ setFocusCycleRoot(true);
+ setLayout(new MigLayout(
+ "insets 3 6 3 3,hidemode 3",
+ // columns
+ "[fill]" +
+ "[fill]0" +
+ "[fill]" +
+ "[grow,fill]" +
+ "[fill]",
+ // rows
+ "[]3" +
+ "[]"));
+
+ //---- findLabel ----
+ findLabel.setText("Find:");
+ findLabel.setDisplayedMnemonic('F');
+ findLabel.setLabelFor(findField);
+ add(findLabel, "cell 0 0");
+
+ //---- findField ----
+ findField.setColumns(16);
+ findField.addActionListener(e -> find());
+ add(findField, "cell 1 0");
+
+ //======== findToolBar ========
+ {
+ findToolBar.setFloatable(false);
+ findToolBar.setBorder(null);
+
+ //---- findPreviousButton ----
+ findPreviousButton.setToolTipText("Previous Occurrence");
+ findPreviousButton.addActionListener(e -> findPrevious());
+ findToolBar.add(findPreviousButton);
+
+ //---- findNextButton ----
+ findNextButton.setToolTipText("Next Occurrence");
+ findNextButton.addActionListener(e -> findNext());
+ findToolBar.add(findNextButton);
+ findToolBar.addSeparator();
+
+ //---- matchCaseToggleButton ----
+ matchCaseToggleButton.setToolTipText("Match Case");
+ matchCaseToggleButton.addActionListener(e -> matchCaseChanged());
+ findToolBar.add(matchCaseToggleButton);
+
+ //---- matchWholeWordToggleButton ----
+ matchWholeWordToggleButton.setToolTipText("Match Whole Word");
+ matchWholeWordToggleButton.addActionListener(e -> matchWholeWordChanged());
+ findToolBar.add(matchWholeWordToggleButton);
+
+ //---- regexToggleButton ----
+ regexToggleButton.setToolTipText("Regex");
+ regexToggleButton.addActionListener(e -> regexChanged());
+ findToolBar.add(regexToggleButton);
+ }
+ add(findToolBar, "cell 2 0");
+
+ //---- matchesLabel ----
+ matchesLabel.setEnabled(false);
+ add(matchesLabel, "cell 3 0");
+
+ //======== closeToolBar ========
+ {
+ closeToolBar.setFloatable(false);
+ closeToolBar.setBorder(null);
+
+ //---- closeButton ----
+ closeButton.setToolTipText("Close");
+ closeButton.addActionListener(e -> close());
+ closeToolBar.add(closeButton);
+ }
+ add(closeToolBar, "cell 4 0");
+
+ //---- replaceLabel ----
+ replaceLabel.setText("Replace:");
+ replaceLabel.setDisplayedMnemonic('R');
+ replaceLabel.setLabelFor(replaceField);
+ add(replaceLabel, "cell 0 1");
+
+ //---- replaceField ----
+ replaceField.setColumns(16);
+ add(replaceField, "cell 1 1");
+
+ //======== toolBar1 ========
+ {
+ toolBar1.setFloatable(false);
+ toolBar1.setBorder(null);
+
+ //---- replaceButton ----
+ replaceButton.setText("Replace");
+ replaceButton.setMnemonic('E');
+ replaceButton.addActionListener(e -> replace());
+ toolBar1.add(replaceButton);
+
+ //---- replaceAllButton ----
+ replaceAllButton.setText("Replace All");
+ replaceAllButton.setMnemonic('A');
+ replaceAllButton.addActionListener(e -> replaceAll());
+ toolBar1.add(replaceAllButton);
+ }
+ add(toolBar1, "cell 2 1");
+
+ //---- replaceMatchesLabel ----
+ replaceMatchesLabel.setEnabled(false);
+ add(replaceMatchesLabel, "cell 3 1");
+ // JFormDesigner - End of component initialization //GEN-END:initComponents
+ }
+
+ // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
+ private JLabel findLabel;
+ private JTextField findField;
+ private JToolBar findToolBar;
+ private JButton findPreviousButton;
+ private JButton findNextButton;
+ private JToggleButton matchCaseToggleButton;
+ private JToggleButton matchWholeWordToggleButton;
+ private JToggleButton regexToggleButton;
+ private JLabel matchesLabel;
+ private JToolBar closeToolBar;
+ private JButton closeButton;
+ private JLabel replaceLabel;
+ private JTextField replaceField;
+ private JToolBar toolBar1;
+ private JButton replaceButton;
+ private JButton replaceAllButton;
+ private JLabel replaceMatchesLabel;
+ // JFormDesigner - End of variables declaration //GEN-END:variables
+
+ //---- class MarkAllUpdater -----------------------------------------------
+
+ private class MarkAllUpdater
+ implements DocumentListener
+ {
+ @Override
+ public void insertUpdate( DocumentEvent e ) {
+ markAll();
+ }
+
+ @Override
+ public void removeUpdate( DocumentEvent e ) {
+ markAll();
+ }
+
+ @Override
+ public void changedUpdate( DocumentEvent e ) {
+ markAll();
+ }
+ }
+
+ //---- class ConsumerAction -----------------------------------------------
+
+ private static class ConsumerAction
+ extends AbstractAction
+ {
+ private final Consumer consumer;
+
+ ConsumerAction( Consumer consumer ) {
+ this.consumer = consumer;
+ }
+
+ @Override
+ public void actionPerformed( ActionEvent e ) {
+ consumer.accept( e );
+ }
+ }
+}
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
new file mode 100644
index 00000000..a5ed0622
--- /dev/null
+++ b/flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatFindReplaceBar.jfd
@@ -0,0 +1,125 @@
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" 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 3 6 3 3,hidemode 3"
+ "$columnConstraints": "[fill][fill]0[fill][grow,fill][fill]"
+ "$rowConstraints": "[]3[]"
+ } ) {
+ name: "this"
+ "focusCycleRoot": true
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "findLabel"
+ "text": "Find:"
+ "displayedMnemonic": 70
+ "labelFor": new FormReference( "findField" )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
+ } )
+ add( new FormComponent( "javax.swing.JTextField" ) {
+ name: "findField"
+ "columns": 16
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "find", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 0"
+ } )
+ add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
+ name: "findToolBar"
+ "floatable": false
+ "border": sfield com.jformdesigner.model.FormObject NULL_VALUE
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "findPreviousButton"
+ "toolTipText": "Previous Occurrence"
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "findPrevious", false ) )
+ } )
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "findNextButton"
+ "toolTipText": "Next Occurrence"
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "findNext", false ) )
+ } )
+ add( new FormComponent( "javax.swing.JToolBar$Separator" ) {
+ name: "separator1"
+ } )
+ add( new FormComponent( "javax.swing.JToggleButton" ) {
+ name: "matchCaseToggleButton"
+ "toolTipText": "Match Case"
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "matchCaseChanged", false ) )
+ } )
+ add( new FormComponent( "javax.swing.JToggleButton" ) {
+ name: "matchWholeWordToggleButton"
+ "toolTipText": "Match Whole Word"
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "matchWholeWordChanged", false ) )
+ } )
+ add( new FormComponent( "javax.swing.JToggleButton" ) {
+ name: "regexToggleButton"
+ "toolTipText": "Regex"
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "regexChanged", false ) )
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 0"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "matchesLabel"
+ "enabled": false
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 0"
+ } )
+ add( new FormContainer( "javax.swing.JToolBar", new FormLayoutManager( class javax.swing.JToolBar ) ) {
+ name: "closeToolBar"
+ "floatable": false
+ "border": sfield com.jformdesigner.model.FormObject NULL_VALUE
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "closeButton"
+ "toolTipText": "Close"
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "close", false ) )
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 0"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "replaceLabel"
+ "text": "Replace:"
+ "displayedMnemonic": 82
+ "labelFor": new FormReference( "replaceField" )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 1"
+ } )
+ add( new FormComponent( "javax.swing.JTextField" ) {
+ name: "replaceField"
+ "columns": 16
+ }, 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
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "replaceButton"
+ "text": "Replace"
+ "mnemonic": 69
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "replace", false ) )
+ } )
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "replaceAllButton"
+ "text": "Replace All"
+ "mnemonic": 65
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "replaceAll", false ) )
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "replaceMatchesLabel"
+ "enabled": false
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 3 1"
+ } )
+ }, new FormLayoutConstraints( null ) {
+ "location": new java.awt.Point( 0, 0 )
+ "size": new java.awt.Dimension( 465, 125 )
+ } )
+ }
+}
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 4f629012..05f7f8b3 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
@@ -17,6 +17,8 @@
package com.formdev.flatlaf.themeeditor;
import java.awt.Color;
+import java.awt.KeyboardFocusManager;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.swing.text.BadLocationException;
@@ -38,6 +40,9 @@ class FlatSyntaxTextArea
private final Map parsedColorsMap = new HashMap<>();
FlatSyntaxTextArea() {
+ // 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() );
}
boolean isUseColorOfColorTokens() {
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 7e2afde3..d09b4c4f 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
@@ -19,18 +19,27 @@ package com.formdev.flatlaf.themeeditor;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
+import java.awt.Window;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.List;
+import javax.swing.JFrame;
import javax.swing.JLayer;
+import javax.swing.JOptionPane;
import javax.swing.JPanel;
+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.SyntaxScheme;
+import org.fife.ui.rsyntaxtextarea.TextEditorPane;
import org.fife.ui.rsyntaxtextarea.Theme;
import org.fife.ui.rsyntaxtextarea.TokenMakerFactory;
import org.fife.ui.rtextarea.RTextScrollPane;
@@ -44,10 +53,16 @@ import com.formdev.flatlaf.util.UIScale;
class FlatThemeEditorPane
extends JPanel
{
+ static final String DIRTY_PROPERTY = TextEditorPane.DIRTY_PROPERTY;
+
private static final String FLATLAF_STYLE = "text/flatlaf";
+ private final CollapsibleSectionPanel collapsiblePanel;
private final RTextScrollPane scrollPane;
private final FlatSyntaxTextArea textArea;
+ private FlatFindReplaceBar findReplaceBar;
+
+ private File file;
FlatThemeEditorPane() {
super( new BorderLayout() );
@@ -63,6 +78,10 @@ class FlatThemeEditorPane
textArea.addParser( new FlatThemeParser() );
// textArea.setUseColorOfColorTokens( true );
+ textArea.addPropertyChangeListener( TextEditorPane.DIRTY_PROPERTY, e -> {
+ firePropertyChange( DIRTY_PROPERTY, e.getOldValue(), e.getNewValue() );
+ } );
+
// theme
try( InputStream in = getClass().getResourceAsStream( "light.xml" ) ) {
Theme theme = Theme.load( in );
@@ -92,6 +111,7 @@ class FlatThemeEditorPane
// create scroll pane
scrollPane = new RTextScrollPane( overlay );
+ scrollPane.setBorder( null );
scrollPane.setLineNumbersEnabled( true );
// scale fonts
@@ -101,7 +121,14 @@ class FlatThemeEditorPane
// use same font for line numbers as in editor
scrollPane.getGutter().setLineNumberFont( textArea.getFont() );
- add( scrollPane, BorderLayout.CENTER );
+ // create error strip
+ ErrorStrip errorStrip = new ErrorStrip( textArea );
+
+ // create collapsible panel
+ collapsiblePanel = new CollapsibleSectionPanel();
+ collapsiblePanel.add( scrollPane );
+ collapsiblePanel.add( errorStrip, BorderLayout.LINE_END );
+ add( collapsiblePanel, BorderLayout.CENTER );
}
private static Font scaleFont( Font font ) {
@@ -109,19 +136,101 @@ class FlatThemeEditorPane
return font.deriveFont( (float) newFontSize );
}
+ @Override
+ public boolean requestFocusInWindow() {
+ return textArea.requestFocusInWindow();
+ }
+
void setBaseFiles( List baseFiles ) {
textArea.propertiesSupport.setBaseFiles( baseFiles );
}
- void load( FileLocation loc ) throws IOException {
- textArea.load( loc, StandardCharsets.ISO_8859_1 );
+ File getFile() {
+ return file;
}
- void save() {
+ void load( File file ) throws IOException {
+ this.file = file;
+
+ textArea.load( FileLocation.create( file ), StandardCharsets.ISO_8859_1 );
+ }
+
+ boolean reloadIfNecessary() {
+ if( !file.isFile() ) {
+ if( textArea.isDirty() ) {
+ if( JOptionPane.showOptionDialog( this,
+ "The file '" + textArea.getFileName()
+ + "' has been deleted. Replace the editor contents with these changes?",
+ getWindowTitle(), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
+ null, new Object[] { "Save", "Close" }, "Save" ) == JOptionPane.YES_OPTION )
+ {
+ saveIfDirty();
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ if( textArea.isModifiedOutsideEditor() ) {
+ if( textArea.isDirty() ) {
+ if( JOptionPane.showConfirmDialog( this,
+ "The file '" + textArea.getFileName()
+ + "' has been changed. Replace the editor contents with these changes?",
+ getWindowTitle(), JOptionPane.YES_NO_OPTION ) != JOptionPane.YES_OPTION )
+ {
+ textArea.syncLastSaveOrLoadTimeToActualFile();
+ return true;
+ }
+ }
+
+ try {
+ int selectionStart = textArea.getSelectionStart();
+ int selectionEnd = textArea.getSelectionEnd();
+
+ textArea.reload();
+
+ textArea.select( selectionStart, selectionEnd );
+ } catch( IOException ex ) {
+ JOptionPane.showMessageDialog( this,
+ "Failed to reload '" + textArea.getFileName() + "'\n\nReason: " + ex.getMessage(),
+ getWindowTitle(), JOptionPane.WARNING_MESSAGE );
+ }
+ }
+
+ return true;
+ }
+
+ boolean saveIfDirty() {
try {
- textArea.save();
+ if( textArea.isDirty() )
+ textArea.save();
+ return true;
} catch( IOException ex ) {
- ex.printStackTrace(); // TODO
+ JOptionPane.showMessageDialog( this,
+ "Failed to save '" + textArea.getFileName() + "'\n\nReason: " + ex.getMessage(),
+ getWindowTitle(), JOptionPane.WARNING_MESSAGE );
+ return false;
}
}
+
+ boolean isDirty() {
+ return textArea.isDirty();
+ }
+
+ private String getWindowTitle() {
+ Window window = SwingUtilities.windowForComponent( this );
+ return (window instanceof JFrame) ? ((JFrame)window).getTitle() : null;
+ }
+
+ 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 );
+ }
}
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 49ddd1de..50af6743 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
@@ -17,19 +17,33 @@
package com.formdev.flatlaf.themeeditor;
import java.awt.BorderLayout;
+import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
+import java.awt.GraphicsConfiguration;
+import java.awt.Insets;
+import java.awt.Rectangle;
import java.awt.Toolkit;
-import java.awt.event.KeyEvent;
+import java.awt.event.*;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashSet;
import java.util.List;
+import java.util.Objects;
+import java.util.function.Supplier;
+import java.util.prefs.Preferences;
import javax.swing.*;
-import org.fife.ui.rsyntaxtextarea.FileLocation;
+import net.miginfocom.swing.*;
import com.formdev.flatlaf.FlatLightLaf;
import com.formdev.flatlaf.extras.FlatInspector;
+import com.formdev.flatlaf.extras.FlatSVGIcon;
import com.formdev.flatlaf.extras.FlatUIDefaultsInspector;
+import com.formdev.flatlaf.extras.components.*;
+import com.formdev.flatlaf.ui.FlatUIUtils;
+import com.formdev.flatlaf.util.StringUtils;
import com.formdev.flatlaf.util.UIScale;
/**
@@ -40,69 +54,599 @@ import com.formdev.flatlaf.util.UIScale;
public class FlatThemeFileEditor
extends JFrame
{
- public static void main( String[] args ) {
- File file = new File( args.length > 0
- ? args[0]
- : "theme-editor-test.properties" ); // TODO
+ private 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";
- List baseFiles = new ArrayList<>();
- for( int i = 1; i < args.length; i++ )
- baseFiles.add( new File( args[i] ) );
+ private File dir;
+ private Preferences state;
+ private boolean inLoadDirectory;
+
+ public static void main( String[] args ) {
+ File dir = (args.length > 0)
+ ? new File( args[0] )
+ : null;
SwingUtilities.invokeLater( () -> {
FlatLightLaf.install();
FlatInspector.install( "ctrl alt shift X" );
FlatUIDefaultsInspector.install( "ctrl shift alt Y" );
- FlatThemeFileEditor frame = new FlatThemeFileEditor();
-
- frame.themeEditorArea.setBaseFiles( baseFiles );
- try {
- frame.themeEditorArea.load( FileLocation.create( file ) );
- } catch( IOException ex ) {
- ex.printStackTrace();
- }
-
- int menuShortcutKeyMask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
- ((JComponent)frame.getContentPane()).registerKeyboardAction(
- e -> frame.themeEditorArea.save(),
- KeyStroke.getKeyStroke( KeyEvent.VK_S, menuShortcutKeyMask ),
- JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
-
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- frame.setSize( Math.min( UIScale.scale( 800 ), screenSize.width ),
- screenSize.height - UIScale.scale( 100 ) );
- frame.setLocationRelativeTo( null );
+ FlatThemeFileEditor frame = new FlatThemeFileEditor( dir );
frame.setVisible( true );
} );
}
- public FlatThemeFileEditor() {
+ private FlatThemeFileEditor( File dir ) {
initComponents();
+
+ openDirectoryButton.setIcon( new FlatSVGIcon( "com/formdev/flatlaf/themeeditor/icons/menu-open.svg" ) );
+
+ restoreState();
+ restoreWindowBounds();
+
+ // load directory
+ if( dir == null ) {
+ String recentDirectory = state.get( KEY_RECENT_DIRECTORY, null );
+ if( recentDirectory != null )
+ dir = new File( recentDirectory );
+ }
+ if( dir != null && !dir.isDirectory() )
+ dir = null;
+ if( dir != null )
+ loadDirectory( dir );
+ }
+
+ private void openDirectory() {
+ // save all currently open editors before showing directory chooser
+ if( !saveAll() )
+ return;
+
+ // choose directory
+ JFileChooser chooser = new JFileChooser( dir ) {
+ @Override
+ public void approveSelection() {
+ if( !checkDirectory( this, getSelectedFile() ) )
+ return;
+
+ super.approveSelection();
+ }
+ };
+ chooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
+ if( chooser.showOpenDialog( this ) != JFileChooser.APPROVE_OPTION )
+ return;
+
+ File selectedFile = chooser.getSelectedFile();
+ if( selectedFile == null || selectedFile.equals( dir ) )
+ return;
+
+ // open new directory
+ loadDirectory( selectedFile );
+ }
+
+ private boolean checkDirectory( Component parentComponent, File dir ) {
+ if( !dir.isDirectory() ) {
+ JOptionPane.showMessageDialog( parentComponent,
+ "Directory '" + dir + "' does not exist.",
+ getTitle(), JOptionPane.INFORMATION_MESSAGE );
+ return false;
+ }
+
+ if( getPropertiesFiles( dir ).length == 0 ) {
+ JOptionPane.showMessageDialog( parentComponent,
+ "Directory '" + dir + "' does not contain properties files.",
+ getTitle(), JOptionPane.INFORMATION_MESSAGE );
+ return false;
+ }
+
+ return true;
+ }
+
+ private void directoryChanged() {
+ if( inLoadDirectory )
+ return;
+
+ Object selectedItem = directoryField.getSelectedItem();
+ if( selectedItem == null )
+ return;
+
+ File dir = new File( (String) selectedItem );
+ if( checkDirectory( this, dir ) )
+ loadDirectory( dir );
+ else {
+ // remove from directories history
+ directoryField.removeItem( selectedItem );
+ directoryField.setSelectedItem( this.dir.getAbsolutePath() );
+ saveState();
+ }
+ }
+
+ private void loadDirectory( File dir ) {
+ dir = getCanonicalFile( dir );
+ if( Objects.equals( this.dir, dir ) || !dir.isDirectory() )
+ return;
+
+ // save all currently open editors
+ if( !saveAll() )
+ return;
+
+ this.dir = dir;
+
+ inLoadDirectory = true;
+
+ // close all open editors
+ int tabCount = tabbedPane.getTabCount();
+ for( int i = tabCount - 1; i >= 0; i-- )
+ tabbedPane.removeTabAt( i );
+
+ // update directory field
+ DefaultComboBoxModel model = (DefaultComboBoxModel) directoryField.getModel();
+ String dirStr = dir.getAbsolutePath();
+ int indexOf = model.getIndexOf( dirStr );
+ if( indexOf < 0 )
+ model.addElement( dirStr );
+ directoryField.setSelectedItem( dirStr );
+
+ // 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();
+
+ saveState();
+
+ inLoadDirectory = false;
+ }
+
+ private void updateDirectory() {
+ if( dir == null )
+ return;
+
+ // update open tabs and remove tabs if file was removed
+ HashSet openFiles = new HashSet<>();
+ FlatThemeEditorPane[] themeEditorPanes = getThemeEditorPanes();
+ for( int i = themeEditorPanes.length - 1; i >= 0; i-- ) {
+ FlatThemeEditorPane themeEditorPane = themeEditorPanes[i];
+ if( themeEditorPane.reloadIfNecessary() )
+ openFiles.add( themeEditorPane.getFile() );
+ else
+ tabbedPane.removeTabAt( i );
+ }
+
+ // open newly created files
+ for( File file : getPropertiesFiles( dir ) ) {
+ if( !openFiles.contains( file ) )
+ openFile( file, false );
+ }
+ }
+
+ private File getCanonicalFile( File dir ) {
+ if( dir == null )
+ return null;
+
+ try {
+ return dir.getCanonicalFile();
+ } catch( IOException ex ) {
+ return dir.getAbsoluteFile();
+ }
+ }
+
+ private File[] getPropertiesFiles( File dir ) {
+ File[] propertiesFiles = dir.listFiles( (d, name) -> {
+ return name.endsWith( ".properties" );
+ } );
+ Arrays.sort( propertiesFiles );
+ return propertiesFiles;
+ }
+
+ private void openFile( File file, boolean select ) {
+ FlatThemeEditorPane themeEditorPane = new FlatThemeEditorPane();
+ try {
+ themeEditorPane.load( file );
+ } catch( IOException ex ) {
+ ex.printStackTrace(); // TODO
+ }
+
+ Supplier titleFun = () -> {
+ return (themeEditorPane.isDirty() ? "* " : "")
+ + StringUtils.removeTrailing( themeEditorPane.getFile().getName(), ".properties" );
+ };
+ themeEditorPane.addPropertyChangeListener( FlatThemeEditorPane.DIRTY_PROPERTY, e -> {
+ int index = tabbedPane.indexOfComponent( themeEditorPane );
+ if( index >= 0 )
+ tabbedPane.setTitleAt( index, titleFun.get() );
+ } );
+
+ tabbedPane.addTab( titleFun.get(), null, themeEditorPane, file.getAbsolutePath() );
+
+ if( select )
+ tabbedPane.setSelectedComponent( themeEditorPane );
+ }
+
+ private void selectedTabChanged() {
+ if( inLoadDirectory )
+ return;
+
+ FlatThemeEditorPane themeEditorPane = (FlatThemeEditorPane) tabbedPane.getSelectedComponent();
+ String filename = (themeEditorPane != null) ? themeEditorPane.getFile().getName() : null;
+ putPrefsString( state, KEY_RECENT_FILE, filename );
+ }
+
+ private boolean saveAll() {
+ for( FlatThemeEditorPane themeEditorPane : getThemeEditorPanes() ) {
+ if( !themeEditorPane.saveIfDirty() )
+ return false;
+ }
+ return true;
+ }
+
+ private void exit() {
+ if( !saveAll() )
+ return;
+
+ saveWindowBounds();
+ System.exit( 0 );
+ }
+
+ private void windowClosing() {
+ exit();
+ }
+
+ private void windowActivated() {
+ updateDirectory();
+ }
+
+ private void windowDeactivated() {
+ saveAll();
+ }
+
+ private FlatThemeEditorPane[] getThemeEditorPanes() {
+ FlatThemeEditorPane[] result = new FlatThemeEditorPane[tabbedPane.getTabCount()];
+ for( int i = 0; i < result.length; i++ )
+ result[i] = (FlatThemeEditorPane) tabbedPane.getComponentAt( i );
+ return result;
+ }
+
+ private void nextEditor() {
+ if( tabbedPane.getTabCount() == 0 )
+ return;
+
+ int index = tabbedPane.getSelectedIndex() + 1;
+ if( index >= tabbedPane.getTabCount() )
+ index = 0;
+ tabbedPane.setSelectedIndex( index );
+ }
+
+ private void previousEditor() {
+ if( tabbedPane.getTabCount() == 0 )
+ return;
+
+ int index = tabbedPane.getSelectedIndex() - 1;
+ if( index < 0 )
+ index = tabbedPane.getTabCount() - 1;
+ tabbedPane.setSelectedIndex( index );
+ }
+
+ private void find() {
+ FlatThemeEditorPane themeEditorPane = (FlatThemeEditorPane) tabbedPane.getSelectedComponent();
+ if( themeEditorPane != null )
+ themeEditorPane.showFindReplaceBar();
+ }
+
+ private void restoreState() {
+ state = Preferences.userRoot().node( PREFS_ROOT_PATH );
+
+ // restore directories history
+ String[] directories = getPrefsStrings( state, KEY_DIRECTORIES );
+ SortedComboBoxModel model = new SortedComboBoxModel<>( directories );
+ directoryField.setModel( model );
+ }
+
+ private void saveState() {
+ // save directories history
+ ComboBoxModel model = directoryField.getModel();
+ String[] directories = new String[model.getSize()];
+ for( int i = 0; i < directories.length; i++ )
+ directories[i] = model.getElementAt( i );
+ putPrefsStrings( state, KEY_DIRECTORIES, directories );
+
+ // save recent directory
+ putPrefsString( state, KEY_RECENT_DIRECTORY, dir.getAbsolutePath() );
+ }
+
+ private void restoreWindowBounds() {
+ String windowBoundsStr = state.get( KEY_WINDOW_BOUNDS, null );
+ if( windowBoundsStr != null ) {
+ 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 ) );
+
+ // limit to screen size
+ GraphicsConfiguration gc = getGraphicsConfiguration();
+ if( gc != null ) {
+ Rectangle screenBounds = gc.getBounds();
+ Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets( gc );
+ Rectangle r = FlatUIUtils.subtractInsets( screenBounds, screenInsets );
+
+ w = Math.min( w, r.width );
+ h = Math.min( h, r.height );
+ x = Math.max( Math.min( x, r.width - w ), r.x );
+ y = Math.max( Math.min( y, r.height - h ), r.y );
+ }
+
+ setBounds( x, y, w, h );
+ return;
+ } catch( NumberFormatException ex ) {
+ // ignore
+ }
+ }
+ }
+
+ // default window size
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ setSize( Math.min( UIScale.scale( 800 ), screenSize.width ),
+ screenSize.height - UIScale.scale( 100 ) );
+ setLocationRelativeTo( null );
+ }
+
+ private void saveWindowBounds() {
+ Rectangle r = getBounds();
+ state.put( KEY_WINDOW_BOUNDS, r.x + "," + r.y + ',' + r.width + ',' + r.height );
+ }
+
+ private static void putPrefsString( Preferences prefs, String key, String value ) {
+ if( !StringUtils.isEmpty( value ) )
+ prefs.put( key, value );
+ else
+ prefs.remove( key );
+ }
+
+ private static String[] getPrefsStrings( Preferences prefs, String key ) {
+ ArrayList arr = new ArrayList<>();
+ for( int i = 0; i < 10000; i++ ) {
+ String s = prefs.get( key+(i+1), null );
+ if( s == null )
+ break;
+ arr.add( s );
+ }
+ return arr.toArray( new String[arr.size()] );
+ }
+
+ private static void putPrefsStrings( Preferences prefs, String key, String[] strings ) {
+ for( int i = 0; i < strings.length; i++ )
+ prefs.put( key+(i+1), strings[i] );
+
+ for( int i = strings.length; prefs.get( key+(i+1), null ) != null; i++ )
+ prefs.remove( key+(i+1) );
}
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
- dialogPane = new JPanel();
- themeEditorArea = new FlatThemeEditorPane();
+ menuBar = new JMenuBar();
+ fileMenu = new JMenu();
+ openDirectoryMenuItem = new JMenuItem();
+ saveAllMenuItem = new JMenuItem();
+ exitMenuItem = new JMenuItem();
+ editMenu = new JMenu();
+ findMenuItem = new JMenuItem();
+ windowMenu = new JMenu();
+ nextEditorMenuItem = new JMenuItem();
+ previousEditorMenuItem = new JMenuItem();
+ controlPanel = new JPanel();
+ directoryLabel = new JLabel();
+ directoryField = new JComboBox<>();
+ openDirectoryButton = new JButton();
+ tabbedPane = new FlatTabbedPane();
//======== this ========
- setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+ setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
setTitle("FlatLaf Theme Editor");
+ addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowActivated(WindowEvent e) {
+ FlatThemeFileEditor.this.windowActivated();
+ }
+ @Override
+ public void windowClosing(WindowEvent e) {
+ FlatThemeFileEditor.this.windowClosing();
+ }
+ @Override
+ public void windowDeactivated(WindowEvent e) {
+ FlatThemeFileEditor.this.windowDeactivated();
+ }
+ });
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
- //======== dialogPane ========
+ //======== menuBar ========
{
- dialogPane.setLayout(new BorderLayout());
- dialogPane.add(themeEditorArea, BorderLayout.CENTER);
+
+ //======== fileMenu ========
+ {
+ fileMenu.setText("File");
+
+ //---- openDirectoryMenuItem ----
+ openDirectoryMenuItem.setText("Open Directory...");
+ openDirectoryMenuItem.setMnemonic('O');
+ openDirectoryMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ openDirectoryMenuItem.addActionListener(e -> openDirectory());
+ fileMenu.add(openDirectoryMenuItem);
+
+ //---- saveAllMenuItem ----
+ saveAllMenuItem.setText("Save All");
+ saveAllMenuItem.setMnemonic('S');
+ saveAllMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ saveAllMenuItem.addActionListener(e -> saveAll());
+ fileMenu.add(saveAllMenuItem);
+ fileMenu.addSeparator();
+
+ //---- exitMenuItem ----
+ exitMenuItem.setText("Exit");
+ exitMenuItem.setMnemonic('X');
+ exitMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ exitMenuItem.addActionListener(e -> exit());
+ fileMenu.add(exitMenuItem);
+ }
+ menuBar.add(fileMenu);
+
+ //======== editMenu ========
+ {
+ editMenu.setText("Edit");
+ editMenu.setMnemonic('E');
+
+ //---- findMenuItem ----
+ findMenuItem.setText("Find/Replace...");
+ findMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ findMenuItem.setMnemonic('F');
+ findMenuItem.addActionListener(e -> find());
+ editMenu.add(findMenuItem);
+ }
+ menuBar.add(editMenu);
+
+ //======== windowMenu ========
+ {
+ windowMenu.setText("Window");
+ windowMenu.setMnemonic('W');
+
+ //---- nextEditorMenuItem ----
+ nextEditorMenuItem.setText("Next Editor");
+ nextEditorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ nextEditorMenuItem.setMnemonic('N');
+ nextEditorMenuItem.addActionListener(e -> nextEditor());
+ windowMenu.add(nextEditorMenuItem);
+
+ //---- previousEditorMenuItem ----
+ previousEditorMenuItem.setText("Previous Editor");
+ previousEditorMenuItem.setMnemonic('P');
+ previousEditorMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()|KeyEvent.SHIFT_MASK));
+ previousEditorMenuItem.addActionListener(e -> previousEditor());
+ windowMenu.add(previousEditorMenuItem);
+ }
+ menuBar.add(windowMenu);
}
- contentPane.add(dialogPane, BorderLayout.CENTER);
+ setJMenuBar(menuBar);
+
+ //======== controlPanel ========
+ {
+ controlPanel.setLayout(new MigLayout(
+ "hidemode 3",
+ // columns
+ "[fill]" +
+ "[grow,fill]" +
+ "[fill]",
+ // rows
+ "[]"));
+
+ //---- directoryLabel ----
+ directoryLabel.setText("Directory:");
+ controlPanel.add(directoryLabel, "cell 0 0");
+
+ //---- directoryField ----
+ directoryField.setEditable(false);
+ directoryField.setFocusable(false);
+ directoryField.addActionListener(e -> directoryChanged());
+ controlPanel.add(directoryField, "cell 1 0");
+
+ //---- openDirectoryButton ----
+ openDirectoryButton.setFocusable(false);
+ openDirectoryButton.addActionListener(e -> openDirectory());
+ controlPanel.add(openDirectoryButton, "cell 2 0");
+ }
+ contentPane.add(controlPanel, BorderLayout.NORTH);
+
+ //======== tabbedPane ========
+ {
+ tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
+ tabbedPane.setFocusable(false);
+ tabbedPane.addChangeListener(e -> selectedTabChanged());
+ }
+ contentPane.add(tabbedPane, BorderLayout.CENTER);
// JFormDesigner - End of component initialization //GEN-END:initComponents
}
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
- private JPanel dialogPane;
- private FlatThemeEditorPane themeEditorArea;
+ private JMenuBar menuBar;
+ private JMenu fileMenu;
+ private JMenuItem openDirectoryMenuItem;
+ private JMenuItem saveAllMenuItem;
+ private JMenuItem exitMenuItem;
+ private JMenu editMenu;
+ private JMenuItem findMenuItem;
+ private JMenu windowMenu;
+ private JMenuItem nextEditorMenuItem;
+ private JMenuItem previousEditorMenuItem;
+ private JPanel controlPanel;
+ private JLabel directoryLabel;
+ private JComboBox directoryField;
+ private JButton openDirectoryButton;
+ private FlatTabbedPane tabbedPane;
// JFormDesigner - End of variables declaration //GEN-END:variables
+
+ //---- class SortedComboBoxModel ------------------------------------------
+
+ private static class SortedComboBoxModel
+ extends DefaultComboBoxModel
+ {
+ private Comparator comparator;
+
+ public SortedComboBoxModel( E[] items ) {
+ this( items, null );
+ }
+
+ public SortedComboBoxModel( E[] items, Comparator c ) {
+ super( sort( items, c ) );
+ this.comparator = c;
+ }
+
+ @Override
+ public void addElement( E obj ) {
+ if( getSize() == 0 ) {
+ super.addElement( obj );
+ } else {
+ int index = binarySearch( this, obj, comparator );
+ insertElementAt( obj, (index < 0) ? ((-index)-1) : index );
+ }
+ }
+
+ static E[] sort( E[] items, Comparator c ) {
+ // clone array
+ items = items.clone();
+
+ Arrays.sort( items, c );
+ return items;
+ }
+
+ @SuppressWarnings("unchecked")
+ static int binarySearch( ListModel model, E key, Comparator c ) {
+ int low = 0;
+ int high = model.getSize() - 1;
+
+ while( low <= high ) {
+ int mid = (low + high) / 2;
+ E midVal = model.getElementAt( mid );
+ int cmp;
+ if( c != null )
+ cmp = c.compare( midVal, key );
+ else
+ cmp = ((Comparable)midVal).compareTo( key );
+
+ if( cmp < 0 )
+ low = mid + 1;
+ else if( cmp > 0 )
+ high = mid - 1;
+ else
+ return mid; // key found
+ }
+ return -(low + 1); // key not found.
+ }
+ }
}
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 7b56ce1d..b8d961e0 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.2.0.298" Java: "14" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -7,18 +7,114 @@ new FormModel {
name: "this"
"$locationPolicy": 2
"$sizePolicy": 2
- "defaultCloseOperation": 3
+ "defaultCloseOperation": 0
"title": "FlatLaf Theme Editor"
- add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) {
- name: "dialogPane"
- add( new FormComponent( "com.formdev.flatlaf.themeeditor.FlatThemeEditorPane" ) {
- name: "themeEditorArea"
- }, new FormLayoutConstraints( class java.lang.String ) {
- "value": "Center"
+ addEvent( new FormEvent( "java.awt.event.WindowListener", "windowClosing", "windowClosing", false ) )
+ addEvent( new FormEvent( "java.awt.event.WindowListener", "windowDeactivated", "windowDeactivated", false ) )
+ addEvent( new FormEvent( "java.awt.event.WindowListener", "windowActivated", "windowActivated", false ) )
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$layoutConstraints": "hidemode 3"
+ "$columnConstraints": "[fill][grow,fill][fill]"
+ "$rowConstraints": "[]"
+ } ) {
+ name: "controlPanel"
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "directoryLabel"
+ "text": "Directory:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
} )
+ add( new FormComponent( "javax.swing.JComboBox" ) {
+ name: "directoryField"
+ "editable": false
+ "focusable": false
+ auxiliary() {
+ "JavaCodeGenerator.typeParameters": "String"
+ }
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "directoryChanged", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 0"
+ } )
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "openDirectoryButton"
+ "focusable": false
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "openDirectory", false ) )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 0"
+ } )
+ }, new FormLayoutConstraints( class java.lang.String ) {
+ "value": "North"
+ } )
+ add( new FormContainer( "com.formdev.flatlaf.extras.components.FlatTabbedPane", new FormLayoutManager( class javax.swing.JTabbedPane ) ) {
+ name: "tabbedPane"
+ "tabLayoutPolicy": 1
+ "focusable": false
+ addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "selectedTabChanged", false ) )
}, new FormLayoutConstraints( class java.lang.String ) {
"value": "Center"
} )
+ menuBar: new FormContainer( "javax.swing.JMenuBar", new FormLayoutManager( class javax.swing.JMenuBar ) ) {
+ name: "menuBar"
+ add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
+ name: "fileMenu"
+ "text": "File"
+ add( new FormComponent( "javax.swing.JMenuItem" ) {
+ name: "openDirectoryMenuItem"
+ "text": "Open Directory..."
+ "mnemonic": 79
+ "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: "saveAllMenuItem"
+ "text": "Save All"
+ "mnemonic": 83
+ "accelerator": static javax.swing.KeyStroke getKeyStroke( 83, 4226, false )
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "saveAll", false ) )
+ } )
+ add( new FormComponent( "javax.swing.JPopupMenu$Separator" ) {
+ name: "separator1"
+ } )
+ add( new FormComponent( "javax.swing.JMenuItem" ) {
+ name: "exitMenuItem"
+ "text": "Exit"
+ "mnemonic": 88
+ "accelerator": static javax.swing.KeyStroke getKeyStroke( 81, 4226, false )
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "exit", false ) )
+ } )
+ } )
+ add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
+ name: "editMenu"
+ "text": "Edit"
+ "mnemonic": 69
+ add( new FormComponent( "javax.swing.JMenuItem" ) {
+ name: "findMenuItem"
+ "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 FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
+ name: "windowMenu"
+ "text": "Window"
+ "mnemonic": 87
+ add( new FormComponent( "javax.swing.JMenuItem" ) {
+ name: "nextEditorMenuItem"
+ "text": "Next Editor"
+ "accelerator": static javax.swing.KeyStroke getKeyStroke( 9, 4226, false )
+ "mnemonic": 78
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "nextEditor", false ) )
+ } )
+ add( new FormComponent( "javax.swing.JMenuItem" ) {
+ name: "previousEditorMenuItem"
+ "text": "Previous Editor"
+ "mnemonic": 80
+ "accelerator": static javax.swing.KeyStroke getKeyStroke( 9, 4291, false )
+ addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "previousEditor", false ) )
+ } )
+ } )
+ }
}, new FormLayoutConstraints( null ) {
"location": new java.awt.Point( 0, 0 )
"size": new java.awt.Dimension( 535, 300 )
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 7df9a413..87cf05c8 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
@@ -39,6 +39,7 @@ Button.highlight
Button.hoverBackground
Button.hoverBorderColor
Button.iconTextGap
+Button.innerFocusWidth
Button.light
Button.margin
Button.minimumWidth
@@ -70,6 +71,8 @@ CheckBox.icon.checkmarkColor
CheckBox.icon.disabledBackground
CheckBox.icon.disabledBorderColor
CheckBox.icon.disabledCheckmarkColor
+CheckBox.icon.focusColor
+CheckBox.icon.focusWidth
CheckBox.icon.focusedBackground
CheckBox.icon.focusedBorderColor
CheckBox.icon.hoverBackground
@@ -77,10 +80,24 @@ CheckBox.icon.hoverBorderColor
CheckBox.icon.pressedBackground
CheckBox.icon.selectedBackground
CheckBox.icon.selectedBorderColor
+CheckBox.icon.selectedFocusedBackground
CheckBox.icon.selectedFocusedBorderColor
+CheckBox.icon.selectedFocusedCheckmarkColor
+CheckBox.icon.selectedHoverBackground
+CheckBox.icon.selectedPressedBackground
CheckBox.icon.style
CheckBox.iconTextGap
+CheckBox.icon[filled].background
+CheckBox.icon[filled].borderColor
CheckBox.icon[filled].checkmarkColor
+CheckBox.icon[filled].disabledBackground
+CheckBox.icon[filled].disabledBorderColor
+CheckBox.icon[filled].disabledCheckmarkColor
+CheckBox.icon[filled].focusedBackground
+CheckBox.icon[filled].focusedBorderColor
+CheckBox.icon[filled].hoverBackground
+CheckBox.icon[filled].hoverBorderColor
+CheckBox.icon[filled].pressedBackground
CheckBox.icon[filled].selectedBackground
CheckBox.icon[filled].selectedBorderColor
CheckBox.icon[filled].selectedFocusedBackground
@@ -126,6 +143,7 @@ ComboBox.buttonDisabledArrowColor
ComboBox.buttonEditableBackground
ComboBox.buttonHighlight
ComboBox.buttonHoverArrowColor
+ComboBox.buttonPressedArrowColor
ComboBox.buttonShadow
ComboBox.buttonStyle
ComboBox.disabledBackground
@@ -219,6 +237,7 @@ FormattedTextFieldUI
HeaderUI
HelpButton.background
HelpButton.borderColor
+HelpButton.borderWidth
HelpButton.disabledBackground
HelpButton.disabledBorderColor
HelpButton.disabledQuestionMarkColor
@@ -227,6 +246,7 @@ HelpButton.focusedBorderColor
HelpButton.hoverBackground
HelpButton.hoverBorderColor
HelpButton.icon
+HelpButton.innerFocusWidth
HelpButton.pressedBackground
HelpButton.questionMarkColor
Hyperlink.disabledText
@@ -293,6 +313,7 @@ JXTitledPanel.borderColor
JXTitledPanel.captionInsets
JXTitledPanel.titleBackground
JXTitledPanel.titleForeground
+JidePopupMenuUI
JideTabbedPane.background
JideTabbedPane.contentBorderInsets
JideTabbedPane.foreground
@@ -364,6 +385,9 @@ MenuBar.highlight
MenuBar.hoverBackground
MenuBar.itemMargins
MenuBar.shadow
+MenuBar.underlineSelectionBackground
+MenuBar.underlineSelectionColor
+MenuBar.underlineSelectionHeight
MenuBar.windowBindings
MenuBarUI
MenuItem.acceleratorArrowGap
@@ -521,6 +545,7 @@ RadioButtonMenuItem.selectionBackground
RadioButtonMenuItem.selectionForeground
RadioButtonMenuItemUI
RadioButtonUI
+RangeSliderUI
Resizable.resizeBorder
RootPane.activeBorderColor
RootPane.ancestorInputMap
@@ -548,6 +573,7 @@ ScrollBar.minimumThumbSize
ScrollBar.pressedButtonBackground
ScrollBar.pressedThumbColor
ScrollBar.pressedThumbWithTrack
+ScrollBar.pressedTrackColor
ScrollBar.showButtons
ScrollBar.squareButtons
ScrollBar.thumb
@@ -580,24 +606,29 @@ Separator.stripeIndent
Separator.stripeWidth
SeparatorUI
Slider.background
-Slider.disabledForeground
+Slider.disabledThumbColor
+Slider.disabledTrackColor
Slider.focus
Slider.focusInputMap
Slider.focusInputMap.RightToLeft
Slider.focusInsets
+Slider.focusWidth
+Slider.focusedColor
Slider.font
Slider.foreground
Slider.highlight
Slider.horizontalSize
-Slider.hoverColor
+Slider.hoverThumbColor
Slider.minimumHorizontalSize
Slider.minimumVerticalSize
Slider.onlyLeftMouseButtonDrag
+Slider.pressedThumbColor
Slider.shadow
Slider.thumbColor
-Slider.thumbWidth
+Slider.thumbSize
Slider.tickColor
Slider.trackColor
+Slider.trackValueColor
Slider.trackWidth
Slider.verticalSize
SliderUI
@@ -609,6 +640,7 @@ Spinner.buttonArrowColor
Spinner.buttonBackground
Spinner.buttonDisabledArrowColor
Spinner.buttonHoverArrowColor
+Spinner.buttonPressedArrowColor
Spinner.buttonStyle
Spinner.disabledBackground
Spinner.disabledForeground
@@ -635,6 +667,7 @@ SplitPaneDivider.gripDotSize
SplitPaneDivider.gripGap
SplitPaneDivider.oneTouchArrowColor
SplitPaneDivider.oneTouchHoverArrowColor
+SplitPaneDivider.oneTouchPressedArrowColor
SplitPaneDivider.style
SplitPaneUI
TabbedPane.ancestorInputMap
@@ -674,6 +707,8 @@ TabbedPane.labelShift
TabbedPane.light
TabbedPane.scrollButtonsPlacement
TabbedPane.scrollButtonsPolicy
+TabbedPane.selectedBackground
+TabbedPane.selectedForeground
TabbedPane.selectedLabelShift
TabbedPane.selectedTabPadInsets
TabbedPane.selectionFollowsFocus
@@ -922,6 +957,9 @@ Tree.textForeground
Tree.timeFactor
Tree.wideSelection
TreeUI
+TristateCheckBox.clearMixed.clientProperty
+TristateCheckBox.setMixed.clientProperty
+UIColorHighlighter.stripingBackground
Viewport.background
Viewport.font
Viewport.foreground
diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/LICENSE.txt b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/LICENSE.txt
new file mode 100644
index 00000000..186cd751
--- /dev/null
+++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/LICENSE.txt
@@ -0,0 +1,3 @@
+The icons in this folder are from IntelliJ IDEA Community Edition,
+which is licensed under the Apache 2.0 license. Copyright 2000-2019 JetBrains s.r.o.
+See: https://github.com/JetBrains/intellij-community/
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
new file mode 100644
index 00000000..7f63bd7f
--- /dev/null
+++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/close.svg
@@ -0,0 +1,3 @@
+
+
+
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
new file mode 100644
index 00000000..62f0f972
--- /dev/null
+++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/findAndShowNextMatches.svg
@@ -0,0 +1,3 @@
+
+
+
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
new file mode 100644
index 00000000..88d78e89
--- /dev/null
+++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/findAndShowPrevMatches.svg
@@ -0,0 +1,3 @@
+
+
+
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
new file mode 100644
index 00000000..874ee768
--- /dev/null
+++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/matchCase.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
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
new file mode 100644
index 00000000..51e7f354
--- /dev/null
+++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/menu-open.svg
@@ -0,0 +1,3 @@
+
+
+
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
new file mode 100644
index 00000000..68316ab9
--- /dev/null
+++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/regex.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
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
new file mode 100644
index 00000000..353e3bb4
--- /dev/null
+++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/icons/words.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
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
index 22d780ec..1c548fda 100644
--- 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
@@ -62,7 +62,7 @@
-
+
diff --git a/flatlaf-theme-editor/theme-editor-test.properties b/flatlaf-theme-editor/theme-editor-test.properties
index 889569e1..d9c49e32 100644
--- a/flatlaf-theme-editor/theme-editor-test.properties
+++ b/flatlaf-theme-editor/theme-editor-test.properties
@@ -2,41 +2,50 @@
# some comment
#
-ButtonUI=com.formdev.flatlaf.ui.FlatButtonUI
- CheckBoxUI = com.formdev.flatlaf.ui.FlatCheckBoxUI
+ButtonUI = com.formdev.flatlaf.ui.FlatButtonUI
+ CheckBoxUI = com.formdev.flatlaf.ui.FlatCheckBoxUI
-Prop.string=some string
-Prop.string2="some string 123 #f80"
-Prop.char1=x
-Prop.char2=\u2022
-Prop.integer=123
-Prop.float=456.123
-Prop.color1=#f80
-Prop.color2=#ff8800
-Prop.color3=#f804
-Prop.color4=#ff880044
-Prop.color5=#12
-Prop.color6=#12345
-Prop.border=1,2,3,4
+Prop.string = some string
+Prop.string2 = "some string 123 #f80"
+Prop.char1 = x
+Prop.char2 = \u2022
+Prop.integer = 123
+Prop.float = 456.123
+Prop.color1 = #f80
+Prop.color2 = #ff8800
+Prop.color3 = #f804
+Prop.color4 = #ff880044
+Prop.color5 = #12
+Prop.color6 = #12345
+Prop.border = 1,2,3,4
-Prop.scaledInteger={scaledInteger}123
+Prop.scaledInteger = {scaledInteger}123
-Prop.null=null
-Prop.false=false
-Prop.true=true
+Prop.null = null
+Prop.false = false
+Prop.true = true
-@var1=123
-Prop.var=@var1
-Prop.ref=$Prop.string
+@var1 = 123
+Prop.var = @var1
+Prop.ref = $Prop.string
-Prop.lazy=lazy(Prop.string)
+Prop.lazy = lazy(Prop.string)
-Prop.colorFunc1=rgb(12,34,56)
-Prop.colorFunc2=rgba(12,34,56,78)
-Prop.colorFunc3=hsl(12,34%,56%)
-Prop.colorFunc4=hsla(12,34%,56%,78%)
+Prop.colorFunc1 = rgb(12,34,56)
+Prop.colorFunc2 = rgba(12,34,56,78)
+Prop.colorFunc3 = hsl(12,34%,56%)
+Prop.colorFunc4 = hsla(12,34%,56%,78%)
-Prop.colorFunc5=lighten(#fe1289,20%)
-Prop.colorFunc6=darken(#fe1289,20%)
-Prop.colorFunc7=lighten($Prop.colorFunc4,20%,relative autoInverse)
-Prop.colorFunc8=lighten(Prop.colorFunc4,20%,lazy)
+Prop.colorFunc5 = lighten(#fe1289,20%)
+Prop.colorFunc6 = darken(#fe1289,20%)
+Prop.colorFunc7 = lighten($Prop.colorFunc4,20%,relative autoInverse)
+Prop.colorFunc8 = lighten(Prop.colorFunc4,20%,lazy)
+Prop.colorFunc9 = fadein(#ff000000,30%)
+Prop.colorFunc10 = fadeout(#ff0000,40%)
+Prop.colorFunc11 = fade(#ff0000,50%)
+
+Prop.colorFunc12 = #f00
+Prop.colorFunc13 = spin($Prop.colorFunc12,40)
+Prop.colorFunc14 = spin($Prop.colorFunc12,-40)
+Prop.colorFunc15 = spin($Prop.colorFunc12,400)
+Prop.colorFunc16 = spin($Prop.colorFunc12,-400)
diff --git a/images/arc_orange.png b/images/arc_orange.png
index 1f915104..6ef8c1e3 100644
Binary files a/images/arc_orange.png and b/images/arc_orange.png differ
diff --git a/images/carbon.png b/images/carbon.png
index cd3e052b..cb24574e 100644
Binary files a/images/carbon.png and b/images/carbon.png differ
diff --git a/images/cyan_light.png b/images/cyan_light.png
index 1971ed94..23fded79 100644
Binary files a/images/cyan_light.png and b/images/cyan_light.png differ
diff --git a/images/dark_purple.png b/images/dark_purple.png
index 5a67dc4b..93faa285 100644
Binary files a/images/dark_purple.png and b/images/dark_purple.png differ
diff --git a/images/flat_dark.png b/images/flat_dark.png
index 4df6134f..9a5271d0 100644
Binary files a/images/flat_dark.png and b/images/flat_dark.png differ
diff --git a/images/flat_light.png b/images/flat_light.png
index 4ba7b84f..2c38baaa 100644
Binary files a/images/flat_light.png and b/images/flat_light.png differ
diff --git a/images/intellij_platform_themes.png b/images/intellij_platform_themes.png
index 6ed63282..449cb883 100644
Binary files a/images/intellij_platform_themes.png and b/images/intellij_platform_themes.png differ
diff --git a/images/one_dark.png b/images/one_dark.png
index 277c74c4..c7d81953 100644
Binary files a/images/one_dark.png and b/images/one_dark.png differ
diff --git a/images/solarized_light.png b/images/solarized_light.png
index a570be04..d31d6ec5 100644
Binary files a/images/solarized_light.png and b/images/solarized_light.png differ