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) -- ![New](images/new.svg) [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 +- ![New](images/new.svg) [DbVisualizer](https://www.dbvis.com/) 12.0 + (**commercial**) - the universal database tool for developers, analysts and + DBAs +- ![New](images/new.svg) [MagicPlot](https://magicplot.com/) 3.0 + (**commercial**) - Software for nonlinear fitting, plotting and data analysis +- ![New](images/new.svg) + [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 +- ![New](images/new.svg) + [Burp Suite Professional and Community Edition](https://portswigger.net/burp/pro) + 2020.11.2 (**commercial**) - the leading software for web security testing +- ![New](images/new.svg) + [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**) +- ![New](images/new.svg) [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 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 +-------- + +[![Download Demo](https://download.formdev.com/flatlaf/images/download-demo.svg)](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).\ ![FlatSVGIcon.png](../images/extras-FlatSVGIcon.png) -- [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.\ ![TriStateCheckBox.png](../images/extras-TriStateCheckBox.png) +- 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: [![Download](https://api.bintray.com/packages/jformdesigner/flatlaf/flatlaf-extras/images/download.svg)](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: -[![Download](https://api.bintray.com/packages/jformdesigner/flatlaf/flatlaf/images/download.svg)](https://bintray.com/jformdesigner/flatlaf/flatlaf/_latestVersion) [![Download](https://api.bintray.com/packages/jformdesigner/svgSalamander/svgSalamander/images/download.svg)](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: [![Download](https://api.bintray.com/packages/jformdesigner/flatlaf/flatlaf-intellij-themes/images/download.svg)](https://bintray.com/jformdesigner/flatlaf/flatlaf-intellij-themes/_latestVersion) -You also need `flatlaf-.jar`, which you can download here: - -[![Download](https://api.bintray.com/packages/jformdesigner/flatlaf/flatlaf/images/download.svg)](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: [![Download](https://api.bintray.com/packages/jformdesigner/flatlaf/flatlaf-jide-oss/images/download.svg)](https://bintray.com/jformdesigner/flatlaf/flatlaf-jide-oss/_latestVersion) - -You also need `flatlaf-.jar`, which you can download here: - -[![Download](https://api.bintray.com/packages/jformdesigner/flatlaf/flatlaf/images/download.svg)](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: [![Download](https://api.bintray.com/packages/jformdesigner/flatlaf/flatlaf-swingx/images/download.svg)](https://bintray.com/jformdesigner/flatlaf/flatlaf-swingx/_latestVersion) - -You also need `flatlaf-.jar`, which you can download here: - -[![Download](https://api.bintray.com/packages/jformdesigner/flatlaf/flatlaf/images/download.svg)](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 @@