diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a5a639b7..16bf5712 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -28,13 +28,13 @@ jobs:
- 17 # LTS
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- uses: gradle/wrapper-validation-action@v1
if: matrix.java == '8'
- name: Setup Java ${{ matrix.java }}
- uses: actions/setup-java@v2
+ uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java }}
distribution: adopt # Java 8 and 11 are pre-installed on ubuntu-latest
@@ -44,7 +44,7 @@ jobs:
run: ./gradlew build
- name: Upload artifacts
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
if: matrix.java == '11'
with:
name: FlatLaf-build-artifacts
@@ -63,10 +63,10 @@ jobs:
github.repository == 'JFormDesigner/FlatLaf'
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Setup Java 11
- uses: actions/setup-java@v2
+ uses: actions/setup-java@v3
with:
java-version: 11
distribution: adopt # pre-installed on ubuntu-latest
@@ -99,10 +99,10 @@ jobs:
github.repository == 'JFormDesigner/FlatLaf'
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Setup Java 11
- uses: actions/setup-java@v2
+ uses: actions/setup-java@v3
with:
java-version: 11
distribution: adopt # pre-installed on ubuntu-latest
diff --git a/.github/workflows/natives.yml b/.github/workflows/natives.yml
index 8b06d494..8d4c91b8 100644
--- a/.github/workflows/natives.yml
+++ b/.github/workflows/natives.yml
@@ -25,12 +25,12 @@ jobs:
runs-on: windows-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- uses: gradle/wrapper-validation-action@v1
- name: Setup Java 11
- uses: actions/setup-java@v2
+ uses: actions/setup-java@v3
with:
java-version: 11
distribution: adopt
@@ -39,11 +39,12 @@ jobs:
- name: Build with Gradle
# --no-daemon is necessary on Windows otherwise caching Gradle would fail with:
# tar.exe: Couldn't open ~/.gradle/caches/modules-2/modules-2.lock: Permission denied
- run: ./gradlew :flatlaf-natives-windows:build --no-daemon
+ run: ./gradlew :flatlaf-natives-windows:build-natives --no-daemon
- name: Upload artifacts
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: FlatLaf-natives-windows-build-artifacts
path: |
+ flatlaf-core/src/main/resources/com/formdev/flatlaf/natives
flatlaf-natives/flatlaf-natives-windows/build
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 71f1ae31..2a7e957d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,18 @@
FlatLaf Change Log
==================
-## 2.2-SNAPSHOT
+## 2.2
+
+#### New features and improvements
+
+- SplitPane: Allow limiting one-touch expanding to a single side (set client
+ property `JSplitPane.expandableSide` to `"left"` or `"right"`). (issue #355)
+- TabbedPane: Selected tab underline color now changes depending on whether the
+ focus is within the tab content. (issue #398)
+- IntelliJ Themes:
+ - Added "Monokai Pro" and "Xcode-Dark" themes.
+ - TabbedPane now use different background color for selected tabs in all "Arc"
+ themes, in "Hiberbee Dark" and in all "Material UI Lite" themes.
#### Fixed bugs
@@ -13,6 +24,8 @@ FlatLaf Change Log
coloring. (issue #512)
- SplitPane: Fixed `StackOverflowError` caused by layout loop that may occur
under special circumstances. (issue #513)
+- Table: Slightly changed grid colors to make grid better recognizable. (issue
+ #514)
- ToolBar: Fixed endless loop in focus navigation that may occur under special
circumstances. (issue #505)
- IntelliJ Themes: `Component.accentColor` UI property now has useful theme
diff --git a/build.gradle.kts b/build.gradle.kts
index f95007f3..4ea65571 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -14,8 +14,8 @@
* limitations under the License.
*/
-val releaseVersion = "2.1"
-val developmentVersion = "2.2-SNAPSHOT"
+val releaseVersion = "2.2"
+val developmentVersion = "2.3-SNAPSHOT"
version = if( java.lang.Boolean.getBoolean( "release" ) ) releaseVersion else developmentVersion
diff --git a/flatlaf-core/build.gradle.kts b/flatlaf-core/build.gradle.kts
index 43e9e670..b9630ac0 100644
--- a/flatlaf-core/build.gradle.kts
+++ b/flatlaf-core/build.gradle.kts
@@ -43,12 +43,6 @@ tasks {
options.headerOutputDirectory.set( buildDir.resolve( "generated/jni-headers" ) )
}
- processResources {
- // build native libraries
- if( org.gradle.internal.os.OperatingSystem.current().isWindows )
- dependsOn( ":flatlaf-natives-windows:assemble" )
- }
-
jar {
archiveBaseName.set( "flatlaf" )
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 0fb5e513..4b274f1c 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java
@@ -391,6 +391,40 @@ public interface FlatClientProperties
*/
String SCROLL_PANE_SMOOTH_SCROLLING = "JScrollPane.smoothScrolling";
+ //---- JSplitPane ---------------------------------------------------------
+
+ /**
+ * Specifies what side of the spilt pane is allowed to expand
+ * via one-touch expanding arrow buttons.
+ * Requires that one-touch expanding is enabled with
+ * {@link javax.swing.JSplitPane#setOneTouchExpandable(boolean)}.
+ *
+ * Component {@link javax.swing.JSplitPane}
+ * Value type {@link java.lang.String}
+ * Allowed Values
+ * {@link #SPLIT_PANE_EXPANDABLE_SIDE_LEFT} or
+ * {@link #SPLIT_PANE_EXPANDABLE_SIDE_RIGHT}
+ *
+ * @since 2.2
+ */
+ String SPLIT_PANE_EXPANDABLE_SIDE = "JSplitPane.expandableSide";
+
+ /**
+ * Allow expanding only left/top side of the split pane.
+ *
+ * @see #SPLIT_PANE_EXPANDABLE_SIDE
+ * @since 2.2
+ */
+ String SPLIT_PANE_EXPANDABLE_SIDE_LEFT = "left";
+
+ /**
+ * Allow expanding only right/bottom side of the split pane.
+ *
+ * @see #SPLIT_PANE_EXPANDABLE_SIDE
+ * @since 2.2
+ */
+ String SPLIT_PANE_EXPANDABLE_SIDE_RIGHT = "right";
+
//---- JTabbedPane --------------------------------------------------------
/**
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 8e2c4876..de245e6a 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java
@@ -37,6 +37,7 @@ import com.formdev.flatlaf.json.ParseException;
import com.formdev.flatlaf.util.ColorFunctions;
import com.formdev.flatlaf.util.LoggingFacade;
import com.formdev.flatlaf.util.StringUtils;
+import com.formdev.flatlaf.util.SystemInfo;
/**
* This class supports loading IntelliJ .theme.json files and using them as a Laf.
@@ -162,8 +163,11 @@ public class IntelliJTheme
applyCheckBoxColors( defaults );
// copy values
- for( Map.Entry e : uiKeyCopying.entrySet() )
- defaults.put( e.getKey(), defaults.get( e.getValue() ) );
+ for( Map.Entry e : uiKeyCopying.entrySet() ) {
+ Object value = defaults.get( e.getValue() );
+ if( value != null )
+ defaults.put( e.getKey(), value );
+ }
// IDEA does not paint button background if disabled, but FlatLaf does
Object panelBackground = defaults.get( "Panel.background" );
@@ -311,8 +315,19 @@ public class IntelliJTheme
@SuppressWarnings( "unchecked" )
private void apply( String key, Object value, UIDefaults defaults, ArrayList