Merge branch 'JFormDesigner:main' into master

This commit is contained in:
Roger Bjärevall
2022-04-26 16:07:52 +02:00
committed by GitHub
63 changed files with 14962 additions and 2924 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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" )

View File

@@ -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)}.
* <p>
* <strong>Component</strong> {@link javax.swing.JSplitPane}<br>
* <strong>Value type</strong> {@link java.lang.String}<br>
* <strong>Allowed Values</strong>
* {@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 --------------------------------------------------------
/**

View File

@@ -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<String, String> e : uiKeyCopying.entrySet() )
defaults.put( e.getKey(), defaults.get( e.getValue() ) );
for( Map.Entry<String, String> 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<Object> defaultsKeysCache, Set<String> uiKeys ) {
if( value instanceof Map ) {
for( Map.Entry<String, Object> e : ((Map<String, Object>)value).entrySet() )
apply( key + '.' + e.getKey(), e.getValue(), defaults, defaultsKeysCache, uiKeys );
Map<String, Object> map = (Map<String, Object>)value;
if( map.containsKey( "os.default" ) || map.containsKey( "os.windows" ) || map.containsKey( "os.mac" ) || map.containsKey( "os.linux" ) ) {
String osKey = SystemInfo.isWindows ? "os.windows"
: SystemInfo.isMacOS ? "os.mac"
: SystemInfo.isLinux ? "os.linux" : null;
if( osKey != null && map.containsKey( osKey ) )
apply( key, map.get( osKey ), defaults, defaultsKeysCache, uiKeys );
else if( map.containsKey( "os.default" ) )
apply( key, map.get( "os.default" ), defaults, defaultsKeysCache, uiKeys );
} else {
for( Map.Entry<String, Object> e : map.entrySet() )
apply( key + '.' + e.getKey(), e.getValue(), defaults, defaultsKeysCache, uiKeys );
}
} else {
if( "".equals( value ) )
return; // ignore empty value
@@ -612,6 +627,11 @@ public class IntelliJTheme
uiKeyCopying.put( "Spinner.buttonSeparatorColor", "Component.borderColor" );
uiKeyCopying.put( "Spinner.buttonDisabledSeparatorColor", "Component.disabledBorderColor" );
// TabbedPane
uiKeyCopying.put( "TabbedPane.selectedBackground", "DefaultTabs.underlinedTabBackground" );
uiKeyCopying.put( "TabbedPane.selectedForeground", "DefaultTabs.underlinedTabForeground" );
uiKeyCopying.put( "TabbedPane.inactiveUnderlineColor", "DefaultTabs.inactiveUnderlineColor" );
// TitlePane
uiKeyCopying.put( "TitlePane.inactiveBackground", "TitlePane.background" );
uiKeyMapping.put( "TitlePane.infoForeground", "TitlePane.foreground" );

View File

@@ -86,6 +86,11 @@ import com.formdev.flatlaf.util.SystemInfo;
* @uiDefault ComboBox.padding Insets
* @uiDefault ComboBox.squareButton boolean default is true
*
* <!-- BasicComboPopup -->
*
* @uiDefault ComboBox.selectionBackground Color
* @uiDefault ComboBox.selectionForeground Color
*
* <!-- FlatComboBoxUI -->
*
* @uiDefault ComboBox.minimumWidth int

View File

@@ -34,6 +34,7 @@ import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicSplitPaneDivider;
import javax.swing.plaf.basic.BasicSplitPaneUI;
import com.formdev.flatlaf.FlatClientProperties;
import com.formdev.flatlaf.ui.FlatStylingSupport.Styleable;
import com.formdev.flatlaf.ui.FlatStylingSupport.StyleableUI;
import com.formdev.flatlaf.ui.FlatStylingSupport.UnknownStyleException;
@@ -52,6 +53,13 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault SplitPaneDivider.border Border
* @uiDefault SplitPaneDivider.draggingColor Color only used if continuousLayout is false
*
* <!-- BasicSplitPaneDivider -->
*
* @uiDefault SplitPane.oneTouchButtonSize int
* @uiDefault SplitPane.oneTouchButtonOffset int
* @uiDefault SplitPane.centerOneTouchButtons boolean
* @uiDefault SplitPane.supportsOneTouchButtons boolean optional; default is true
*
* <!-- JSplitPane -->
*
* @uiDefault SplitPane.continuousLayout boolean
@@ -345,7 +353,7 @@ public class FlatSplitPaneUI
if( leftButton == null || rightButton == null || !splitPane.isOneTouchExpandable() )
return;
// increase side of buttons, which makes them easier to hit by the user
// increase size of buttons, which makes them easier to hit by the user
// and avoids cut arrows at small divider sizes
int extraSize = UIScale.scale( 4 );
if( orientation == JSplitPane.VERTICAL_SPLIT ) {
@@ -360,10 +368,19 @@ public class FlatSplitPaneUI
// hide buttons if not applicable
boolean leftCollapsed = isLeftCollapsed();
if( leftCollapsed )
boolean rightCollapsed = isRightCollapsed();
if( leftCollapsed || rightCollapsed ) {
leftButton.setVisible( !leftCollapsed );
rightButton.setVisible( !rightCollapsed );
} else {
Object expandableSide = splitPane.getClientProperty( FlatClientProperties.SPLIT_PANE_EXPANDABLE_SIDE );
leftButton.setVisible( expandableSide == null || !FlatClientProperties.SPLIT_PANE_EXPANDABLE_SIDE_LEFT.equals( expandableSide ) );
rightButton.setVisible( expandableSide == null || !FlatClientProperties.SPLIT_PANE_EXPANDABLE_SIDE_RIGHT.equals( expandableSide ) );
}
// move right button if left button is hidden
if( !leftButton.isVisible() )
rightButton.setLocation( leftButton.getLocation() );
leftButton.setVisible( !leftCollapsed );
rightButton.setVisible( !isRightCollapsed() );
}
}
}

View File

@@ -59,6 +59,7 @@ import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.IntConsumer;
import java.util.function.Predicate;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.swing.Action;
@@ -82,10 +83,12 @@ import javax.swing.event.ChangeListener;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.TabbedPaneUI;
import javax.swing.plaf.UIResource;
import javax.swing.plaf.basic.BasicTabbedPaneUI;
import javax.swing.text.JTextComponent;
import javax.swing.text.View;
import com.formdev.flatlaf.FlatClientProperties;
import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.icons.FlatTabbedPaneCloseIcon;
import com.formdev.flatlaf.ui.FlatStylingSupport.Styleable;
@@ -127,6 +130,7 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault TabbedPane.selectedBackground Color optional
* @uiDefault TabbedPane.selectedForeground Color
* @uiDefault TabbedPane.underlineColor Color
* @uiDefault TabbedPane.inactiveUnderlineColor Color
* @uiDefault TabbedPane.disabledUnderlineColor Color
* @uiDefault TabbedPane.hoverColor Color
* @uiDefault TabbedPane.focusColor Color
@@ -198,6 +202,7 @@ public class FlatTabbedPaneUI
@Styleable protected Color selectedBackground;
@Styleable protected Color selectedForeground;
@Styleable protected Color underlineColor;
/** @since 2.2 */ @Styleable protected Color inactiveUnderlineColor;
@Styleable protected Color disabledUnderlineColor;
@Styleable protected Color hoverColor;
@Styleable protected Color focusColor;
@@ -288,6 +293,7 @@ public class FlatTabbedPaneUI
super.installUI( c );
FlatSelectedTabRepainter.install();
installStyle();
}
@@ -318,6 +324,7 @@ public class FlatTabbedPaneUI
selectedBackground = UIManager.getColor( "TabbedPane.selectedBackground" );
selectedForeground = UIManager.getColor( "TabbedPane.selectedForeground" );
underlineColor = UIManager.getColor( "TabbedPane.underlineColor" );
inactiveUnderlineColor = FlatUIUtils.getUIColor( "TabbedPane.inactiveUnderlineColor", underlineColor );
disabledUnderlineColor = UIManager.getColor( "TabbedPane.disabledUnderlineColor" );
hoverColor = UIManager.getColor( "TabbedPane.hoverColor" );
focusColor = UIManager.getColor( "TabbedPane.focusColor" );
@@ -385,6 +392,7 @@ public class FlatTabbedPaneUI
selectedBackground = null;
selectedForeground = null;
underlineColor = null;
inactiveUnderlineColor = null;
disabledUnderlineColor = null;
hoverColor = null;
focusColor = null;
@@ -733,7 +741,6 @@ public class FlatTabbedPaneUI
// increase size of repaint region to include part of content border
if( contentSeparatorHeight > 0 &&
getTabType() == TAB_TYPE_CARD &&
clientPropertyBoolean( tabPane, TABBED_PANE_SHOW_CONTENT_SEPARATOR, true ) )
{
int sh = scale( contentSeparatorHeight );
@@ -1205,7 +1212,9 @@ public class FlatTabbedPaneUI
}
protected void paintTabSelection( Graphics g, int tabPlacement, int x, int y, int w, int h ) {
g.setColor( tabPane.isEnabled() ? underlineColor : disabledUnderlineColor );
g.setColor( tabPane.isEnabled()
? (isTabbedPaneOrChildFocused() ? underlineColor : inactiveUnderlineColor)
: disabledUnderlineColor );
// paint underline selection
boolean atBottom = (getTabType() != TAB_TYPE_CARD);
@@ -1236,6 +1245,23 @@ public class FlatTabbedPaneUI
}
}
/** @since 2.2 */
@SuppressWarnings( "unchecked" )
protected boolean isTabbedPaneOrChildFocused() {
KeyboardFocusManager keyboardFocusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
Object value = tabPane.getClientProperty( FlatClientProperties.COMPONENT_FOCUS_OWNER );
if( value instanceof Predicate ) {
return ((Predicate<JComponent>)value).test( tabPane ) &&
FlatUIUtils.isInActiveWindow( tabPane, keyboardFocusManager.getActiveWindow() );
}
Component focusOwner = keyboardFocusManager.getPermanentFocusOwner();
return focusOwner != null &&
SwingUtilities.isDescendingFrom( focusOwner, tabPane ) &&
FlatUIUtils.isInActiveWindow( focusOwner, keyboardFocusManager.getActiveWindow() );
}
/**
* Actually does nearly the same as super.paintContentBorder() but
* - not using UIManager.getColor("TabbedPane.contentAreaColor") to be GUI builder friendly
@@ -3341,4 +3367,77 @@ public class FlatTabbedPaneUI
delegate.actionPerformed( e );
}
}
//---- class FlatSelectedTabRepainter -------------------------------------
private static class FlatSelectedTabRepainter
implements PropertyChangeListener//, Runnable
{
private static FlatSelectedTabRepainter instance;
private KeyboardFocusManager keyboardFocusManager;
static void install() {
synchronized( FlatSelectedTabRepainter.class ) {
if( instance != null )
return;
instance = new FlatSelectedTabRepainter();
}
}
FlatSelectedTabRepainter() {
keyboardFocusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
keyboardFocusManager.addPropertyChangeListener( this );
}
private void uninstall() {
synchronized( FlatSelectedTabRepainter.class ) {
if( instance == null )
return;
keyboardFocusManager.removePropertyChangeListener( this );
keyboardFocusManager = null;
instance = null;
}
}
@Override
public void propertyChange( PropertyChangeEvent e ) {
// uninstall if no longer using FlatLaf
if( !(UIManager.getLookAndFeel() instanceof FlatLaf) ) {
uninstall();
return;
}
switch( e.getPropertyName() ) {
case "permanentFocusOwner":
Object oldValue = e.getOldValue();
Object newValue = e.getNewValue();
if( oldValue instanceof Component )
repaintSelectedTabs( (Component) oldValue );
if( newValue instanceof Component )
repaintSelectedTabs( (Component) newValue );
break;
case "activeWindow":
repaintSelectedTabs( keyboardFocusManager.getPermanentFocusOwner() );
break;
}
}
private void repaintSelectedTabs( Component c ) {
if( c instanceof JTabbedPane )
repaintSelectedTab( (JTabbedPane) c );
while( (c = SwingUtilities.getAncestorOfClass( JTabbedPane.class, c )) != null )
repaintSelectedTab( (JTabbedPane) c );
}
private void repaintSelectedTab( JTabbedPane tabbedPane ) {
TabbedPaneUI ui = tabbedPane.getUI();
if( ui instanceof FlatTabbedPaneUI )
((FlatTabbedPaneUI) ui).repaintTab( tabbedPane.getSelectedIndex() );
}
}
}

View File

@@ -245,7 +245,7 @@ public class FlatUIUtils
isInActiveWindow( c, keyboardFocusManager.getActiveWindow() );
}
private static boolean isInActiveWindow( Component c, Window activeWindow ) {
static boolean isInActiveWindow( Component c, Window activeWindow ) {
Window window = SwingUtilities.windowForComponent( c );
return window == activeWindow ||
(window != null && window.getType() == Window.Type.POPUP && window.getOwner() == activeWindow);

View File

@@ -306,6 +306,7 @@ SplitPaneDivider.draggingColor = $Component.borderColor
#---- TabbedPane ----
TabbedPane.underlineColor = @accentUnderlineColor
TabbedPane.inactiveUnderlineColor = mix(@accentUnderlineColor,$TabbedPane.background,60%)
TabbedPane.disabledUnderlineColor = lighten(@background,23%)
TabbedPane.hoverColor = darken($TabbedPane.background,5%,derived noAutoInverse)
TabbedPane.focusColor = mix(@selectionBackground,$TabbedPane.background,25%)
@@ -324,7 +325,7 @@ TabbedPane.closePressedForeground = $TabbedPane.closeHoverForeground
#---- Table ----
Table.gridColor = lighten($Table.background,5%)
Table.gridColor = lighten($Table.background,8%)
#---- TableHeader ----

View File

@@ -313,6 +313,7 @@ SplitPaneDivider.draggingColor = $Component.borderColor
#---- TabbedPane ----
TabbedPane.underlineColor = @accentUnderlineColor
TabbedPane.inactiveUnderlineColor = mix(@accentUnderlineColor,$TabbedPane.background,50%)
TabbedPane.disabledUnderlineColor = darken(@background,28%)
TabbedPane.hoverColor = darken($TabbedPane.background,7%,derived)
TabbedPane.focusColor = mix(@selectionBackground,$TabbedPane.background,10%)
@@ -331,7 +332,7 @@ TabbedPane.closePressedForeground = $TabbedPane.closeHoverForeground
#---- Table ----
Table.gridColor = darken($Table.background,5%)
Table.gridColor = darken($Table.background,8%)
#---- TableHeader ----

View File

@@ -82,6 +82,13 @@ HelpButton.hoverBorderColor = null
Slider.focusedColor = fade($Component.focusColor,40%,derived)
#---- TabbedPane ----
# colors from JBUI.CurrentTheme.DefaultTabs.inactiveUnderlineColor()
[light]TabbedPane.inactiveUnderlineColor = #9ca7b8
[dark]TabbedPane.inactiveUnderlineColor = #747a80
#---- ToggleButton ----
ToggleButton.startBackground = $ToggleButton.background
@@ -162,6 +169,8 @@ ToggleButton.endBackground = $ToggleButton.background
[Gruvbox_Dark_Soft]ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground
[Hiberbee_Dark]TabbedPane.focusColor = #5A5A5A
[Hiberbee_Dark]TabbedPane.selectedBackground = #434241
[Hiberbee_Dark]TabbedPane.selectedForeground = #70D7FF
[Hiberbee_Dark]ToggleButton.selectedBackground = $ToggleButton.selectedBackground
[Hiberbee_Dark]ToggleButton.toolbar.selectedBackground = $ToggleButton.toolbar.selectedBackground

View File

@@ -693,6 +693,7 @@ public class TestFlatStyleableInfo
"selectedBackground", Color.class,
"selectedForeground", Color.class,
"underlineColor", Color.class,
"inactiveUnderlineColor", Color.class,
"disabledUnderlineColor", Color.class,
"hoverColor", Color.class,
"focusColor", Color.class,

View File

@@ -862,6 +862,7 @@ public class TestFlatStyling
ui.applyStyle( "selectedBackground: #fff" );
ui.applyStyle( "selectedForeground: #fff" );
ui.applyStyle( "underlineColor: #fff" );
ui.applyStyle( "inactiveUnderlineColor: #fff" );
ui.applyStyle( "disabledUnderlineColor: #fff" );
ui.applyStyle( "hoverColor: #fff" );
ui.applyStyle( "focusColor: #fff" );

View File

@@ -43,7 +43,7 @@ public class IJThemesClassGenerator
markdownTable.append( "-----|------\n" );
for( IJThemeInfo ti : themesManager.bundledThemes ) {
if( ti.sourceCodeUrl == null || ti.sourceCodePath == null )
if( ti.sourceCodeUrl == null )
continue;
generateClass( ti, toPath, allInfos, markdownTable );
@@ -77,7 +77,7 @@ public class IJThemesClassGenerator
themeName += " (Material)";
StringBuilder buf = new StringBuilder();
for( String n : name.split( " " ) ) {
for( String n : name.split( "[ \\-]" ) ) {
if( n.length() == 0 || n.equals( "-" ) )
continue;

View File

@@ -178,6 +178,13 @@
"sourceCodeUrl": "https://github.com/bmikaili/intellij-monocai-theme",
"sourceCodePath": "blob/master/resources/Monocai.theme.json"
},
"Monokai_Pro.default.theme.json": {
"name": "Monokai Pro",
"dark": true,
"license": "MIT",
"licenseFile": "Monokai_Pro.LICENSE.txt",
"sourceCodeUrl": "https://github.com/subtheme-dev/monokai-pro"
},
"nord.theme.json": {
"name": "Nord",
"dark": true,
@@ -225,6 +232,14 @@
"sourceCodeUrl": "https://github.com/vuesion/intellij-theme",
"sourceCodePath": "blob/master/resources/META-INF/vuesion_theme.theme.json"
},
"Xcode-Dark.theme.json": {
"name": "Xcode-Dark",
"dark": true,
"license": "MIT",
"licenseFile": "Xcode-Dark.LICENSE.txt",
"sourceCodeUrl": "https://github.com/antelle/intellij-xcode-dark-theme",
"sourceCodePath": "blob/master/resources/Xcode-Dark.theme.json"
},
"material-theme-ui-lite/Arc Dark.theme.json": {
"name": "Material Theme UI Lite / Arc Dark",

View File

@@ -65,12 +65,14 @@ Name | Class
[Light Flat](https://github.com/nerzhulart/LightFlatTheme) | `com.formdev.flatlaf.intellijthemes.FlatLightFlatIJTheme`
[Material Design Dark](https://github.com/xinkunZ/NotReallyMDTheme) | `com.formdev.flatlaf.intellijthemes.FlatMaterialDesignDarkIJTheme`
[Monocai](https://github.com/bmikaili/intellij-monocai-theme) | `com.formdev.flatlaf.intellijthemes.FlatMonocaiIJTheme`
[Monokai Pro](https://github.com/subtheme-dev/monokai-pro) | `com.formdev.flatlaf.intellijthemes.FlatMonokaiProIJTheme`
[Nord](https://github.com/arcticicestudio/nord-jetbrains) | `com.formdev.flatlaf.intellijthemes.FlatNordIJTheme`
[One Dark](https://github.com/one-dark/jetbrains-one-dark-theme) | `com.formdev.flatlaf.intellijthemes.FlatOneDarkIJTheme`
[Solarized Dark](https://github.com/4lex4/intellij-platform-solarized) | `com.formdev.flatlaf.intellijthemes.FlatSolarizedDarkIJTheme`
[Solarized Light](https://github.com/4lex4/intellij-platform-solarized) | `com.formdev.flatlaf.intellijthemes.FlatSolarizedLightIJTheme`
[Spacegray](https://github.com/mturlo/intellij-spacegray) | `com.formdev.flatlaf.intellijthemes.FlatSpacegrayIJTheme`
[Vuesion](https://github.com/vuesion/intellij-theme) | `com.formdev.flatlaf.intellijthemes.FlatVuesionIJTheme`
[Xcode-Dark](https://github.com/antelle/intellij-xcode-dark-theme) | `com.formdev.flatlaf.intellijthemes.FlatXcodeDarkIJTheme`
Material Theme UI Lite:

View File

@@ -52,12 +52,14 @@ public class FlatAllIJThemes
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( "Monokai Pro", "com.formdev.flatlaf.intellijthemes.FlatMonokaiProIJTheme", 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( "Xcode-Dark", "com.formdev.flatlaf.intellijthemes.FlatXcodeDarkIJTheme", 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 ),

View File

@@ -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 FlatMonokaiProIJTheme
extends IntelliJTheme.ThemeLaf
{
public static final String NAME = "Monokai Pro";
public static boolean setup() {
try {
return setup( new FlatMonokaiProIJTheme() );
} catch( RuntimeException ex ) {
return false;
}
}
public static void installLafInfo() {
installLafInfo( NAME, FlatMonokaiProIJTheme.class );
}
public FlatMonokaiProIJTheme() {
super( Utils.loadTheme( "Monokai_Pro.default.theme.json" ) );
}
@Override
public String getName() {
return NAME;
}
}

View File

@@ -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 FlatXcodeDarkIJTheme
extends IntelliJTheme.ThemeLaf
{
public static final String NAME = "Xcode-Dark";
public static boolean setup() {
try {
return setup( new FlatXcodeDarkIJTheme() );
} catch( RuntimeException ex ) {
return false;
}
}
public static void installLafInfo() {
installLafInfo( NAME, FlatXcodeDarkIJTheme.class );
}
public FlatXcodeDarkIJTheme() {
super( Utils.loadTheme( "Xcode-Dark.theme.json" ) );
}
@Override
public String getName() {
return NAME;
}
}

View File

@@ -127,7 +127,11 @@
"secondaryForeground": "#7ac2cc"
},
"List.background": "#eef0f4",
"List": {
"background": "#eef0f4",
"hoverBackground": "#dae6eb",
"hoverInactiveBackground": "#dae6eb"
},
"Notification": {
"MoreButton.innerBorderColor": "#bec5cd",
@@ -143,6 +147,12 @@
}
},
"NotificationsToolwindow": {
"newNotification.background": "#dae6ebB3",
"newNotification.hoverBackground": "#dae6eb",
"Notification.hoverBackground": "#dae6eb"
},
"PasswordField.background": "#FFFFFF",
"Plugins": {
@@ -151,7 +161,8 @@
"SectionHeader.foreground": "#808080",
"SectionHeader.background": "#edeef2",
"Tab.selectedBackground": "#cacccf",
"Tab.hoverBackground": "#cacccf"
"Tab.hoverBackground": "#cacccf",
"hoverBackground": "#e6eef2"
},
"Popup": {
@@ -249,7 +260,12 @@
}
},
"Tree.background": "#eef0f4",
"Tree": {
"background": "#eef0f4",
"hoverBackground": "#dae6eb",
"hoverInactiveBackground": "#dae6eb",
"hash": "#d0d5db"
},
"WelcomeScreen": {
"Details.background": "#eef0f4",

View File

@@ -120,7 +120,8 @@
"DefaultTabs": {
"underlineColor": "#9649cc",
"inactiveUnderlineColor": "#877399",
"hoverBackground": "#dfb3ff1a"
"hoverBackground": "#dfb3ff1a",
"borderColor": "#1a1721"
},
"DragAndDrop": {
@@ -168,6 +169,11 @@
"visitedForeground": "#7094FF"
},
"List": {
"hoverBackground": "#00000033",
"hoverInactiveBackground": "#00000033"
},
"MenuBar.borderColor": "#1a1721",
"NavBar.borderColor": "#1a1721",
@@ -197,6 +203,12 @@
}
},
"NotificationsToolwindow": {
"newNotification.background": "#3D3952B3",
"newNotification.hoverBackground": "#3D3952",
"Notification.hoverBackground": "#3D3952"
},
"MemoryIndicator": {
"allocatedBackground": "#352140",
"usedBackground": "#533473"
@@ -211,6 +223,8 @@
},
"Plugins": {
"hoverBackground": "#00000022",
"Tab": {
"selectedForeground": "#D0D0D9",
"selectedBackground": "#593f73",
@@ -284,6 +298,13 @@
"SearchOption.selectedBackground": "#424885",
"SegmentedButton": {
"selectedButtonColor": "#45405C",
"focusedSelectedButtonColor": "#693687",
"selectedStartBorderColor": "#4E4C63",
"selectedEndBorderColor": "#4E4C63"
},
"SpeedSearch": {
"foreground": "#D0D0D9",
"borderColor": "#69418c",
@@ -310,7 +331,8 @@
"Table": {
"stripeColor": "#323242",
"hoverBackground": "#00000028"
"hoverBackground": "#00000028",
"gridColor": "#1a1721"
},
"TextArea": {
@@ -360,7 +382,12 @@
}
},
"Tree.rowHeight": 20,
"Tree": {
"rowHeight": 20,
"hash": "#4E4C63",
"hoverBackground": "#00000033",
"hoverInactiveBackground": "#00000033"
},
"ValidationTooltip": {
"errorBackground": "#802d43",

View File

@@ -38,6 +38,26 @@
"pressedBackground": "hoverBackground",
"pressedBorderColor": "hoverBackground"
},
"Bookmark": {
"iconBackground": "accentColor",
"Mnemonic": {
"iconForeground": "primaryForeground",
"iconBackground": "#8d6b81",
"iconBorderColor": "accentColor"
}
},
"BookmarkMnemonicAssigned": {
"foreground": "primaryForeground",
"background": "#786299",
"borderColor": "secondaryAccentColor"
},
"BookmarkMnemonicAvailable": {
},
"BookmarkMnemonicCurrent": {
"foreground": "primaryForeground",
"background": "#8d6b81",
"borderColor": "accentColor"
},
"Button": {
"foreground": "primaryForeground",
"startBorderColor": "selectionBackground",
@@ -90,7 +110,7 @@
"inactiveWarningFocusColor": "#f1fa8c"
},
"DragAndDrop": {
"areaBorderColor": "selectionBackground"
"borderColor": "selectionBackground"
},
"Editor": {
"background": "secondaryBackground",

View File

@@ -111,6 +111,11 @@
"secondaryForeground": "#77a8d9"
},
"List": {
"hoverBackground": "#00000010",
"hoverInactiveBackground": "#00000010"
},
"Notification": {
"background": "#f7f8fa",
"borderColor": "#D4D6D9",
@@ -131,6 +136,12 @@
}
},
"NotificationsToolwindow": {
"newNotification.background": "#dae9f7B3",
"newNotification.hoverBackground": "#00000009",
"Notification.hoverBackground": "#00000009"
},
"PasswordField.background": "#FFFFFF",
"Plugins": {
@@ -140,7 +151,7 @@
"Tab.selectedBackground": "#D5D6D7",
"Tab.hoverBackground": "#D5D6D7",
"lightSelectionBackground": "#E9EFF7",
"hoverBackground": "#f7faff"
"hoverBackground": "#F8F8F8"
},
"Popup": {
@@ -225,7 +236,11 @@
}
},
"Tree.rowHeight": 22,
"Tree": {
"rowHeight": 22,
"hoverBackground": "#00000010",
"hoverInactiveBackground": "#00000010"
},
"VersionControl": {
"Log.Commit.currentBranchBackground": "#e6f0f2",

View File

@@ -0,0 +1,19 @@
The MIT License (MIT)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,684 @@
{
"name": "Monokai Pro",
"dark": true,
"author": "Subtheme",
"editorScheme": "/schemes/default.xml",
"ui": {
"*": {
"acceleratorSelectionForeground": "#ffd866",
"background": "#2d2a2e",
"borderColor": "#363337",
"disabledBackground": "#221f22",
"disabledForeground": "#5b595c",
"disabledText": "#5b595c",
"focusColor": "#5b595c",
"focusedBorderColor": "#ffd866",
"foreground": "#fcfcfa",
"inactiveBackground": "#221f22",
"inactiveForeground": "#939293",
"infoForeground": "#939293",
"selectionBackground": "#403e41",
"selectionBackgroundInactive": "#403e41",
"selectionForeground": "#ffd866",
"selectionInactiveBackground": "#403e41",
"selectionInactiveForeground": "#ffd866",
"separatorColor": "#2d2a2e"
},
"ActionButton": {
"hoverBackground": "#363337",
"hoverBorderColor": "#363337",
"pressedBackground": "#363337",
"pressedBorderColor": "#363337"
},
"Borders": {
"ContrastBorderColor": "#363337",
"color": "#363337"
},
"Button": {
"arc": 0,
"background": "#403e41",
"default": {
"endBackground": "#403e41",
"endBorderColor": "#403e41",
"foreground": "#ffd866",
"focusColor": "#ffd866",
"focusedBorderColor": "#403e41",
"shadowColor": "#403e41",
"startBackground": "#403e41",
"startBorderColor": "#403e41"
},
"disabledBorderColor": "#403e41",
"disabledText": "#5b595c",
"endBackground": "#403e41",
"endBorderColor": "#403e41",
"focusedBorderColor": "#403e41",
"foreground": "#fcfcfa",
"shadowColor": "#403e41",
"shadowWidth": 0,
"startBackground": "#403e41",
"startBorderColor": "#403e41"
},
"CheckBox": {
"background": "#2d2a2e",
"disabledText": "#5b595c",
"foreground": "#fcfcfa",
"select": "#ffd866"
},
"CheckBoxMenuItem": {
"acceleratorForeground": "#939293",
"acceleratorSelectionForeground": "#939293",
"background": "#2d2a2e",
"disabledBackground": "#2d2a2e",
"disabledForeground": "#5b595c",
"foreground": "#fcfcfa",
"selectionBackground": "#403e41",
"selectionForeground": "#ffd866"
},
"ColorChooser": {
"background": "#2d2a2e",
"foreground": "#fcfcfa",
"swatchesDefaultRecentColor": "#fcfcfa"
},
"ComboBoxButton": {
"background": "#363337"
},
"ComboBox": {
"ArrowButton": {
"background": "#403e41",
"disabledIconColor": "#5b595c",
"iconColor": "#fcfcfa",
"nonEditableBackground": "#2d2a2e"
},
"background": "#363337",
"disabledBackground": "#221f22",
"disabledForeground": "#5b595c",
"foreground": "#fcfcfa",
"modifiedItemForeground": "#ffd866",
"nonEditableBackground": "#363337",
"selectionBackground": "#2d2a2e",
"selectionForeground": "#ffd866"
},
"ComboPopup": {
"border": "#2d2a2e"
},
"CompletionPopup": {
"foreground": "#fcfcfa",
"matchForeground": "#ffd866",
"selectionInactiveBackground": "#2d2a2e",
"selectionBackground": "#2d2a2e"
},
"Component": {
"arc": 4,
"borderColor": "#363337",
"disabledBorderColor": "#363337",
"focusColor": "#ffd866",
"focusedBorderColor": "#ffd866",
"hoverIconColor": "#ffd866",
"infoForeground": "#939293",
"iconColor": "#fcfcfa"
},
"Counter": {
"background": "#ffd866",
"foreground": "#19181a"
},
"Debugger": {
"Variables": {
"collectingDataForeground": "#939293",
"changedValueForeground": "#ffd866",
"errorMessageForeground": "#ff6188",
"evaluatingExpressionForeground": "#939293",
"exceptionForeground": "#78dce8",
"modifyingValueForeground": "#ffd866",
"valueForeground": "#ffd866"
}
},
"DebuggerTabs": {
"underlinedTabBackground": "#5b595c"
},
"DebuggerPopup": {
"borderColor": "#5b595c"
},
"DefaultTabs": {
"background": "#2d2a2e",
"borderColor": "#2d2a2e",
"hoverBackground": "#363337",
"inactiveUnderlineColor": "#ffd866",
"underlineColor": "#ffd866",
"underlinedTabBackground": "#2d2a2e",
"underlineHeight": 2
},
"DragAndDrop": {
"areaBackground": "#2d2a2e",
"areaBorderColor": "#2d2a2e",
"areaForeground": "#fcfcfa"
},
"Editor": {
"background": "#221f22",
"foreground": "#fcfcfa",
"shortcutForeground": "#939293"
},
"EditorPane": {
"background": "#221f22",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
"inactiveBackground": "#2d2a2e",
"inactiveForeground": "#5b595c",
"selectionBackground": "#403e41",
"selectionForeground": "#ffd866"
},
"EditorTabs": {
"borderColor": "#363337",
"inactiveUnderlineColor": "#ffd866",
"underlineColor": "#ffd866",
"underlinedTabBackground": "#363337",
"underlinedTabForeground": "#c1c0c0"
},
"FileColor": {
"Yellow": "00000000"
},
"FormattedTextField": {
"background": "#363337",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
"inactiveBackground": "#403e41",
"inactiveForeground": "#5b595c",
"selectionForeground": "#ffd866",
"selectionBackground": "#403e41"
},
"Group": {
"disabledSeparatorColor": "#2d2a2e",
"separatorColor": "#2d2a2e"
},
"GutterTooltip": {
"infoForeground": "#fcfcfa",
"lineSeparatorColor": "#2d2a2e"
},
"HelpTooltip": {
"borderColor": "#2d2a2e",
"infoForeground": "#939293"
},
"InformationHint": {
"borderColor": "#2d2a2e"
},
"InplaceRefactoringPopup": {
"borderColor": "#2d2a2e"
},
"Label": {
"background": "#2d2a2e",
"disabledForeground": "#5b595c",
"disabledText": "#5b595c",
"foreground": "#939293",
"infoForeground": "#939293",
"selectedForeground": "#ffd866"
},
"Link": {
"activeForeground": "#ffd866",
"hoverForeground": "#ffd866",
"pressedForeground": "#ffd866",
"secondaryForeground": "#939293",
"visitedForeground": "#ffd866"
},
"List": {
"background": "#221f22",
"foreground": "#fcfcfa",
"selectionBackground": "#363337",
"selectionForeground": "#ffd866",
"selectionInactiveBackground": "#363337",
"selectionInactiveForeground": "#ffd866"
},
"MemoryIndicator": {
"allocatedBackground": "#403e41",
"usedBackground": "#5b595c"
},
"Menu": {
"acceleratorForeground": "#939293",
"acceleratorSelectionForeground": "#fcfcfa",
"background": "#2d2a2e",
"borderColor": "#363337",
"disabledBackground": "#403e41",
"disabledForeground": "#5b595c",
"foreground": "#fcfcfa",
"separatorColor": "#2d2a2e",
"selectionForeground": "#ffd866"
},
"MenuBar": {
"borderColor": "#363337",
"disabledBackground": "#2d2a2e",
"disabledForeground": "#5b595c",
"foreground": "#fcfcfa",
"highlight": "#2d2a2e",
"selectionBackground": "#403e41",
"selectionForeground": "#ffd866",
"shadow": "#221f22"
},
"MenuItem": {
"acceleratorForeground": "#939293",
"background": "#2d2a2e",
"disabledBackground": "#2d2a2e",
"disabledForeground": "#5b595c",
"foreground": "#fcfcfa",
"selectionBackground": "#403e41",
"selectionForeground": "#ffd866"
},
"NavBar": {
"borderColor": "#363337"
},
"Notification": {
"background": "#363337",
"borderColor": "#221f22",
"errorBackground": "#221f22",
"errorBorderColor": "#221f22",
"foreground": "#fcfcfa",
"MoreButton": {
"background": "#403e41",
"foreground": "#fcfcfa",
"innerBorderColor": "#363337"
},
"ToolWindow": {
"errorBackground": "#363337",
"errorBorderColor": "#363337",
"informativeBackground": "#363337",
"informativeBorderColor": "#363337",
"warningBackground": "#363337",
"warningBorderColor": "#363337"
}
},
"OptionPane": {
"background": "#2d2a2e",
"foreground": "#fcfcfa",
"messageForeground": "#fcfcfa"
},
"Panel": {
"background": "#2d2a2e",
"foreground": "#939293"
},
"ParameterInfo": {
"background": "#403e41",
"borderColor": "#363337",
"currentOverloadBackground": "#403e41",
"currentParameterForeground": "#ffd866",
"disabledForeground": "#5b595c",
"foreground": "#fcfcfa",
"infoForeground": "#939293",
"lineSeparatorColor": "#363337"
},
"PasswordField": {
"background": "#403e41",
"capsLockIconColor": "#ffd866",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
"inactiveForeground": "#5b595c",
"selectionBackground": "#5b595c",
"selectionForeground": "#ffd866"
},
"Plugins": {
"background": "#2d2a2e",
"disabledForeground": "#939293",
"eapTagBackground": "#5b595c",
"lightSelectionBackground": "#363337",
"hoverBackground": "#363337",
"tagForeground": "#ffd866",
"tagBackground": "#5b595c",
"Button": {
"installBackground": "#221f22",
"installBorderColor": "#221f22",
"installForeground": "#fcfcfa",
"installFocusedBackground": "#221f22",
"installFillForeground": "#939293",
"installFillBackground": "#221f22",
"updateBackground": "#221f22",
"updateBorderColor": "#221f22",
"updateForeground": "#fcfcfa"
},
"SearchField": {
"background": "#363337",
"borderColor": "#363337"
},
"SectionHeader": {
"background": "#2d2a2e",
"foreground": "#939293"
},
"Tab": {
"hoverBackground": "#363337",
"selectedForeground": "#fcfcfa",
"selectedBackground": "#363337"
}
},
"Popup": {
"Advertiser": {
"background": "#2d2a2e",
"borderColor": "#2d2a2e",
"foreground": "#ffd866"
},
"borderColor": "#221f22",
"inactiveBorderColor": "#2d2a2e",
"innerBorderColor": "#2d2a2e",
"Header": {
"activeBackground": "#2d2a2e",
"inactiveBackground": "#221f22"
},
"paintBorder": true,
"separatorForeground": "#fcfcfa",
"separatorColor": "#2d2a2e",
"Toolbar": {
"background": "#221f22",
"borderColor": "#363337"
}
},
"PopupMenu": {
"background": "#2d2a2e",
"foreground": "#fcfcfa",
"translucentBackground": "#2d2a2e",
"selectionBackground": "#403e41"
},
"PopupMenuSeparator": {
"height": 10,
"stripeIndent": 5
},
"ProgressBar": {
"background": "#2d2a2e",
"foreground": "#ffd866",
"indeterminateEndColor": "#ffd866",
"indeterminateStartColor": "#ffd866",
"progressColor": "#ffd866",
"selectionBackground": "#5b595c",
"trackColor": "#5b595c"
},
"RadioButton": {
"background": "#2d2a2e",
"disabledText": "#5b595c",
"foreground": "#fcfcfa"
},
"RadioButtonMenuItem": {
"acceleratorForeground": "#939293",
"acceleratorSelectionForeground": "#939293",
"background": "#2d2a2e",
"disabledBackground": "#2d2a2e",
"disabledForeground": "#5b595c",
"foreground": "#fcfcfa",
"selectionBackground": "#403e41",
"selectionForeground": "#ffd866"
},
"SearchEverywhere": {
"Advertiser": {
"background": "#221f22",
"foreground": "#939293"
},
"Header": {
"background": "#2d2a2e"
},
"List": {
"separatorColor": "#2d2a2e",
"separatorForeground": "#939293"
},
"SearchField": {
"background": "#2d2a2e",
"borderColor": "#221f22",
"infoForeground": "#939293"
},
"Tab": {
"selectedForeground": "#ffd866",
"selectedBackground": "#5b595c"
}
},
"SearchMatch": {
"endBackground": "#ffd866",
"startBackground": "#ffd866"
},
"Separator": {
"separatorColor": "#363337"
},
"SidePanel": {
"background": "#221f22"
},
"Slider": {
"background": "#2d2a2e",
"buttonBorderColor": "#ffd866",
"buttonColor": "#ffd866",
"foreground": "#fcfcfa",
"tickColor": "#403e41",
"trackColor": "#403e41"
},
"SpeedSearch": {
"background": "#5b595c",
"borderColor": "#2d2a2e",
"errorForeground": "#fcfcfa",
"foreground": "#fcfcfa"
},
"Spinner": {
"background": "#2d2a2e"
},
"SplitPane": {
"background": "#2d2a2e",
"highlight": "#221f22"
},
"SplitPaneDivider": {
"draggingColor": "#403e41"
},
"StatusBar": {
"borderColor": "#363337",
"hoverBackground": "#363337"
},
"TabbedPane": {
"background": "#2d2a2e",
"contentAreaColor": "#5b595c",
"disabledForeground": "#5b595c",
"disabledUnderlineColor": "#5b595c",
"focus": "#403e41",
"focusColor": "#403e41",
"foreground": "#fcfcfa",
"hoverColor": "#363337",
"tabSelectionHeight": 2,
"underlineColor": "#ffd866"
},
"Table": {
"background": "#221f22",
"dropLineColor": "#ffd866",
"dropLineShortColor": "#ffd866",
"focusCellBackground": "#221f22",
"focusCellForeground": "#ffd866",
"foreground": "#fcfcfa",
"gridColor": "#221f22",
"lightSelectionForeground": "#ffd866",
"lightSelectionInactiveForeground": "#fcfcfa",
"lightSelectionInactiveBackground": "#363337",
"selectionBackground": "#363337",
"selectionForeground": "#ffd866",
"selectionInactiveBackground": "#363337",
"selectionInactiveForeground": "#fcfcfa",
"sortIconColor": "#fcfcfa",
"stripeColor": "#221f22"
},
"TableHeader": {
"background": "#2d2a2e",
"bottomSeparatorColor": "#363337",
"cellBorder": "4,0,4,0",
"foreground": "#fcfcfa",
"focusCellBackground": "#403e41",
"separatorColor": "#363337"
},
"textText": "#939293",
"TextArea": {
"background": "#363337",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
"inactiveForeground": "#5b595c",
"selectionBackground": "#5b595c",
"selectionForeground": "#ffd866"
},
"TextField": {
"background": "#363337",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
"inactiveForeground": "#5b595c",
"selectionBackground": "#5b595c",
"selectionForeground": "#ffd866"
},
"TextPane": {
"background": "#363337",
"caretForeground": "#ffd866",
"foreground": "#fcfcfa",
"inactiveForeground": "#5b595c",
"selectionBackground": "#5b595c",
"selectionForeground": "#ffd866"
},
"TitlePane": {
"background": "#221f22",
"Button.hoverBackground": "#5b595c",
"inactiveBackground": "#2d2a2e",
"infoForeground": "#939293",
"inactiveInfoForeground": "#939293"
},
"TitledBorder": {
"titleColor": "#2d2a2e"
},
"ToggleButton": {
"borderColor": "#403e41",
"buttonColor": "#fcfcfa",
"disabledText": "#5b595c",
"foreground": "#939293",
"offForeground": "#2d2a2e",
"offBackground": "#2d2a2e",
"onBackground": "#ffd866",
"onForeground": "#ffd866"
},
"ToolBar": {
"background": "#221f22",
"borderHandleColor": "#939293",
"floatingForeground": "#939293",
"foreground": "#fcfcfa"
},
"ToolTip": {
"Actions": {
"background": "#2d2a2e",
"infoForeground": "#939293"
},
"background": "#2d2a2e",
"borderColor": "#5b595c",
"foreground": "#fcfcfa",
"infoForeground": "#939293",
"shortcutForeground": "#939293"
},
"ToolWindow": {
"Button": {
"hoverBackground": "#363337",
"selectedForeground": "#ffd866",
"selectedBackground": "#363337"
},
"Header": {
"background": "#2d2a2e",
"borderColor": "#363337",
"inactiveBackground": "#2d2a2e"
},
"HeaderCloseButton": {
"background": "#2d2a2e"
},
"HeaderTab": {
"hoverBackground": "#363337",
"hoverInactiveBackground": "#363337",
"inactiveUnderlineColor": "#ffd866",
"selectedInactiveBackground": "#2d2a2e",
"underlineColor": "#ffd866",
"underlinedTabBackground": "#363337",
"underlinedTabInactiveBackground": "#363337"
}
},
"Tree": {
"background": "#221f22",
"foreground": "#939293",
"hash": "#2d2a2e",
"modifiedItemForeground": "#ffd866",
"rowHeight": 22,
"selectionBackground": "#2d2a2e",
"selectionForeground": "#ffd866",
"selectionInactiveBackground": "#2d2a2e"
},
"UiDesigner": {
"Panel": {
"background": "#2d2a2e"
},
"Preview": {
"background": "#2d2a2e"
}
},
"ValidationTooltip": {
"errorBackground": "#363337",
"errorBorderColor": "#363337",
"warningBackground": "#363337",
"warningBorderColor": "#363337"
},
"VersionControl": {
"FileHistory": {
"Commit": {
"selectedBranchBackground": "#2d2a2e"
}
},
"GitLog": {
"localBranchIconColor": "#ffd866",
"otherIconColor": "#939293",
"remoteBranchIconColor": "#fcfcfa",
"tagIconColor": "#939293"
},
"HgLog": {
"branchIconColor": "#ffd866",
"bookmarkIconColor": "#ffd866",
"closedBranchIconColor": "#5b595c",
"localTagIconColor": "#939293",
"mqTagIconColor": "#939293",
"tagIconColor": "#939293",
"tipIconColor": "#939293"
},
"Log": {
"Commit": {
"unmatchedForeground": "#939293",
"currentBranchBackground": "#363337"
}
},
"RefLabel": {
"foreground": "#ffd866",
"backgroundBase": "#5b595c"
}
},
"Viewport": {
"background": "#221f22",
"foreground": "#fcfcfa"
},
"WelcomeScreen": {
"background": "#2d2a2e",
"borderColor": "#363337",
"captionBackground": "#221f22",
"captionForeground": "#fcfcfa",
"footerBackground": "#221f22",
"footerForeground": "#fcfcfa",
"headerBackground": "#2d2a2e",
"headerForeground": "#fcfcfa",
"Projects": {
"background": "#221f22",
"selectionBackground": "#2d2a2e",
"selectionInactiveBackground": "#2d2a2e"
},
"separatorColor": "#363337"
},
"window": "#2d2a2e",
"Window": {
"border": "0,0,0,0,#363337"
},
"windowBorder": "#363337",
"windowText": "#939293"
},
"icons": {
"ColorPalette": {
"Checkbox.Background.Default.Dark": "##403e41",
"Checkbox.Background.Disabled.Dark": "##221f22",
"Checkbox.Background.Selected.Dark": "##403e41",
"Checkbox.Border.Default.Dark": "##403e41",
"Checkbox.Border.Disabled.Dark": "##221f22",
"Checkbox.Border.Selected.Dark": "##403e41",
"Checkbox.Focus.Thin.Default.Dark": "##403e41",
"Checkbox.Focus.Thin.Selected.Dark": "##221f22",
"Checkbox.Focus.Wide.Dark": "##403e41",
"Checkbox.Foreground.Disabled.Dark": "##939293",
"Checkbox.Foreground.Selected.Dark": "##fcfcfa"
}
}
}

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Antelle
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,232 @@
{
"name": "Xcode-Dark",
"dark": true,
"author": "Antelle",
"editorScheme": "/Xcode-Dark.xml",
"ui": {
"*": {
"background": "#323333",
"foreground": "#DFDFE0",
"infoForeground": "#A9A9AA",
"selectionBackground": "#1D7BED",
"selectionForeground": "#F9FCFF",
"selectionInactiveBackground": "#555657",
"selectionBackgroundInactive": "#555657",
"lightSelectionBackground": "#2B4059",
"lightSelectionForeground": "#FFFFFF",
"lightSelectionInactiveBackground": "#555657",
"lightSelectionInactiveForeground": "#DFDFE0",
"disabledBackground": "#323333",
"inactiveBackground": "#313233",
"disabledForeground": "#737374",
"disabledText": "#737374",
"inactiveForeground": "#737374",
"acceleratorForeground": "#D0D0D9",
"acceleratorSelectionForeground": "#D0D0D9",
"errorForeground": "#843937",
"borderColor": "#414141",
"disabledBorderColor": "#414141",
"focusColor": "#24648D",
"focusedBorderColor": "#4C8CB5",
"separatorForeground": "#5A5B5C",
"separatorColor": "#5A5B5C",
"lineSeparatorColor": "#5A5B5C",
"modifiedItemForeground": "#1E4D86"
},
"ActionButton": {
"hoverBackground": "#5A5B5C",
"hoverBorderColor": "#5A5B5C",
"pressedBackground": "#414141",
"pressedBorderColor": "#414141"
},
"Button": {
"startBackground": "#424242",
"endBackground": "#424242",
"startBorderColor": "#525252",
"endBorderColor": "#525252",
"shadowColor": "#363636",
"default": {
"foreground": "#DDE9FA",
"startBackground": "#206DE3",
"endBackground": "#1C61CA",
"startBorderColor": "#6099EC",
"endBorderColor": "#1C61CA",
"focusedBorderColor": "#45A1F4",
"focusColor": "#245F84",
"shadowColor": "#363636"
}
},
"Borders": {
"color": "#393A3B",
"ContrastBorderColor": "#4b4c4d"
},
"ComboBox": {
"nonEditableBackground": "#4f5051",
"background": "#414141",
"ArrowButton": {
"iconColor": "#DBDBDB",
"background": "#1E67D7",
"disabledIconColor": "#6B6B6C",
"nonEditableBackground": "#4f5051"
}
},
"ComboPopup.border": "1,1,1,1,3F3F3F",
"Component": {
"errorFocusColor": "#843937",
"inactiveErrorFocusColor": "#433239",
"warningFocusColor": "#8F7B2E",
"inactiveWarningFocusColor": "#434136",
"iconColor": "#DFDFE0",
"hoverIconColor": "#FFFFFF"
},
"Counter": {
"background": "#909090",
"foreground": "#000000"
},
"DebuggerPopup.borderColor": "#414141",
"DefaultTabs": {
"borderColor": "#484949",
"background": "#2A2B2B",
"inactiveUnderlineColor": "#24648D",
"hoverBackground": "#262727",
"underlineColor": "#1D7BED",
"underlineHeight": 2,
"underlinedTabBackground": "#3D3E3F"
},
"DragAndDrop": {
"areaForeground": "#DFDFE0",
"areaBackground": "#363737",
"areaBorderColor": "#414141"
},
"EditorTabs": {
"inactiveColoredFileBackground": "#2d281d"
},
"FileColor": {
"Yellow": "#3D3B37",
"Green": "#383C38",
"Blue": "#343A3E",
"Violet": "#3C3A3D",
"Orange": "#3D3A36",
"Rose": "#3D383B"
},
"Link": {
"activeForeground": "#428EE1",
"hoverForeground": "#7094FF",
"pressedForeground": "#FC4741",
"visitedForeground": "#7094FF"
},
"Notification": {
"errorForeground": "#DFDFE0",
"errorBackground": "#843937",
"errorBorderColor": "#982B31",
"MoreButton.innerBorderColor": "#4b4c4d",
"ToolWindow": {
"informativeForeground": "#DFDFE0",
"informativeBackground": "#225DA1",
"informativeBorderColor": "#1C61CA",
"warningForeground": "#DFDFE0",
"warningBackground": "#A98938",
"warningBorderColor": "#FEC42E",
"errorForeground": "#DFDFE0",
"errorBackground": "#843937",
"errorBorderColor": "#982B31"
}
},
"ProgressBar": {
"trackColor": "#252525",
"progressColor": "#CDCCCC",
"indeterminateStartColor": "#CDCCCC",
"indeterminateEndColor": "#B4B3B3",
"failedColor": "#DF1A21",
"failedEndColor": "#982B31",
"passedColor": "#3AA87B",
"passedEndColor": "#368E68"
},
"SearchMatch": {
"startBackground": "#f5bc2d",
"endBackground": "#e9b32b"
},
"SpeedSearch": {
"errorForeground": "#DF1A21"
},
"ToggleButton": {
"onBackground": "#1D7BED"
},
"CompletionPopup": {
"matchForeground": "#FDA14F",
"selectionBackground": "#1D7BED"
},
"Popup": {
"Header": {
"activeBackground": "#4A4E52",
"inactiveBackground": "#4A4E52"
}
},
"SearchEverywhere": {
"Tab": {
"selectedForeground": "#F9FCFF",
"selectedBackground": "#555A5E"
}
},
"icons": {
"ColorPalette": {
"Actions.Grey": "#969798",
"Actions.Red": "#FC545B",
"Actions.Yellow": "#e0c24c",
"Actions.Green": "#71bf47",
"Actions.Blue": "#3062d1",
"Actions.GreyInline.Dark": "#6F6F70",
"Objects.Grey": "#6F6F70",
"Objects.RedStatus": "#FC4741",
"Objects.Red": "#FC545B",
"Objects.Pink": "#F5539E",
"Objects.Yellow": "#e0c24c",
"Objects.Green": "#71bf47",
"Objects.Blue": "#3062d1",
"Objects.Purple": "#A453A5",
"Objects.BlackText": "#000000",
"Objects.YellowDark": "#89744D",
"Objects.GreenAndroid": "#5D7554"
}
}
}
}

View File

@@ -164,6 +164,10 @@
"background": "#323846",
"selectionInactiveForeground": "#e5e9f0"
},
"MemoryIndicator": {
"allocatedBackground": "#81a1c1",
"usedBackground": "#5e81ac"
},
"Menu": {
"background": "#323846",
"borderColor": "#3b4252",
@@ -231,6 +235,9 @@
"activeBackground": "#434c5e"
}
},
"PopupMenu": {
"background": "#323846"
},
"ProgressBar": {
"background": "#88c0d0",
"failedColor": "#bf616a",

View File

@@ -8,7 +8,10 @@
"backgroundColor": "#21252b",
"borderColor": "#333841",
"infoForeground": "#7e8491",
"foregroundColor": "#abb2bf"
"foregroundColor": "#abb2bf",
"notificationBackground": "#3d424b",
"selectionBackground": "#323844",
"selectionForeground": "#d7dae0"
},
"ui": {
"*": {
@@ -17,10 +20,18 @@
"infoForeground": "#5c6370",
"selectionBackground": "#323844",
"selectionBackground": {
"os.default": "selectionBackground",
"os.windows": "selectionBackground",
"os.mac": "selectionBackground"
},
"selectionForeground": {
"os.default": "selectionForeground",
"os.windows": "selectionForeground",
"os.mac": "selectionForeground"
},
"selectionInactiveBackground": "#2c313a",
"selectionBackgroundInactive": "#2c313a",
"selectionForeground": "#d7dae0",
"disabledBackground": "backgroundColor",
"inactiveBackground": "backgroundColor",
@@ -142,6 +153,9 @@
"Editor": {
"background": "#282c34",
"foreground": "#abb2bf",
"SearchField": {
"background": "#282c34"
},
"shortcutForeground": "accentColor"
},
@@ -192,7 +206,7 @@
},
"Notification": {
"background": "#3d424b",
"background": "notificationBackground",
"borderColor": "#53565f",
"errorForeground": "#abb2bf",
@@ -219,6 +233,10 @@
}
},
"NotificationsToolwindow.newNotification.background" : "notificationBackground",
"NotificationsToolwindow.newNotification.hoverBackground" : "#3d424b",
"NotificationsToolwindow.Notification.hoverBackground" : "#3d424b",
"Panel.background": "backgroundColor",
"ParameterInfo": {
@@ -314,6 +332,8 @@
"Settings.Spotlight.borderColor": "accentColor",
"StatusBar.background": "baseBackground",
"TabbedPane": {
"underlineColor": "accentColor",
"contentAreaColor": "#323844",
@@ -362,6 +382,7 @@
},
"ToolWindow": {
"background": "backgroundColor",
"Button": {
"hoverBackground": "#323844",
"selectedBackground": "#3d424b",

View File

@@ -15,84 +15,101 @@
*/
plugins {
id( "dev.nokee.jni-library" ) version "0.4.0"
id( "dev.nokee.cpp-language" ) version "0.4.0"
`cpp-library`
}
library {
targetMachines.set( listOf( machines.windows.x86, machines.windows.x86_64 ) )
variants.configureEach {
sharedLibrary {
compileTasks.configureEach {
onlyIf { isBuildable }
// disable debuggable for release builds to make shared libraries smaller
binaries.configureEach( CppSharedLibrary::class ) {
with( compileTask.get() ) {
if( name.contains( "Release" ) )
isDebuggable = false
}
with( linkTask.get() ) {
if( name.contains( "Release" ) )
debuggable.set( false )
}
}
}
// depend on :flatlaf-core:compileJava because it generates the JNI headers
dependsOn( ":flatlaf-core:compileJava" )
var javaHome = System.getProperty( "java.home" )
if( javaHome.endsWith( "jre" ) )
javaHome += "/.."
doFirst {
println( "Used Tool Chain:" )
println( " - ${toolChain.get()}" )
println( "Available Tool Chains:" )
toolChains.forEach {
println( " - $it" )
}
tasks {
register( "build-natives" ) {
group = "build"
description = "Builds natives"
// copy needed JNI headers
copy {
from( project( ":flatlaf-core" ).buildDir.resolve( "generated/jni-headers" ) )
into( "src/main/headers" )
include(
"com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder.h",
"com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_WndProc.h"
)
filter<org.apache.tools.ant.filters.FixCrLfFilter>(
"eol" to org.apache.tools.ant.filters.FixCrLfFilter.CrLf.newInstance( "lf" )
)
}
}
dependsOn( "linkReleaseX86", "linkReleaseX86-64" )
}
compilerArgs.addAll( toolChain.map {
when( it ) {
is Gcc, is Clang -> listOf( "-O2", "-DUNICODE" )
is VisualCpp -> listOf( "/O2", "/Zl", "/GS-", "/DUNICODE" )
else -> emptyList()
}
} )
withType<CppCompile>().configureEach {
onlyIf { name.contains( "Release" ) }
// depend on :flatlaf-core:compileJava because it generates the JNI headers
dependsOn( ":flatlaf-core:compileJava" )
doFirst {
println( "Used Tool Chain:" )
println( " - ${toolChain.get()}" )
println( "Available Tool Chains:" )
toolChains.forEach {
println( " - $it" )
}
linkTask.configure {
onlyIf { isBuildable }
val nativesDir = project( ":flatlaf-core" ).projectDir.resolve( "src/main/resources/com/formdev/flatlaf/natives" )
val is64Bit = targetMachine.architecture.is64Bit
val libraryName = if( is64Bit ) "flatlaf-windows-x86_64.dll" else "flatlaf-windows-x86.dll"
val jawt = if( is64Bit ) "lib/jawt-x86_64" else "lib/jawt-x86"
outputs.file( "$nativesDir/$libraryName" )
linkerArgs.addAll( toolChain.map {
when( it ) {
is Gcc, is Clang -> listOf( "-l${jawt}", "-lUser32", "-lGdi32", "-lshell32", "-lAdvAPI32", "-lKernel32" )
is VisualCpp -> listOf( "${jawt}.lib", "User32.lib", "Gdi32.lib", "shell32.lib", "AdvAPI32.lib", "Kernel32.lib", "/NODEFAULTLIB" )
else -> emptyList()
}
} )
doLast {
// copy shared library to flatlaf-core resources
copy {
from( linkedFile )
into( nativesDir )
rename( "flatlaf-natives-windows.dll", libraryName )
}
}
// copy needed JNI headers
copy {
from( project( ":flatlaf-core" ).buildDir.resolve( "generated/jni-headers" ) )
into( "src/main/headers" )
include(
"com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder.h",
"com_formdev_flatlaf_ui_FlatWindowsNativeWindowBorder_WndProc.h"
)
filter<org.apache.tools.ant.filters.FixCrLfFilter>(
"eol" to org.apache.tools.ant.filters.FixCrLfFilter.CrLf.newInstance( "lf" )
)
}
}
for( taskName in listOf( "jarX86", "jarX86-64" ) ) {
tasks.named( taskName ) {
onlyIf { false }
}
includes.from(
"${javaHome}/include",
"${javaHome}/include/win32"
)
compilerArgs.addAll( toolChain.map {
when( it ) {
is Gcc, is Clang -> listOf( "-O2", "-DUNICODE" )
is VisualCpp -> listOf( "/O2", "/Zl", "/GS-", "/DUNICODE" )
else -> emptyList()
}
} )
}
withType<LinkSharedLibrary>().configureEach {
onlyIf { name.contains( "Release" ) }
val nativesDir = project( ":flatlaf-core" ).projectDir.resolve( "src/main/resources/com/formdev/flatlaf/natives" )
val is64Bit = name.contains( "64" )
val libraryName = if( is64Bit ) "flatlaf-windows-x86_64.dll" else "flatlaf-windows-x86.dll"
val jawt = if( is64Bit ) "lib/jawt-x86_64" else "lib/jawt-x86"
linkerArgs.addAll( toolChain.map {
when( it ) {
is Gcc, is Clang -> listOf( "-l${jawt}", "-lUser32", "-lGdi32", "-lshell32", "-lAdvAPI32", "-lKernel32" )
is VisualCpp -> listOf( "${jawt}.lib", "User32.lib", "Gdi32.lib", "shell32.lib", "AdvAPI32.lib", "Kernel32.lib", "/NODEFAULTLIB" )
else -> emptyList()
}
} )
doLast {
// copy shared library to flatlaf-core resources
copy {
from( linkedFile )
into( nativesDir )
rename( "flatlaf-natives-windows.dll", libraryName )
}
}
}

View File

@@ -1045,6 +1045,7 @@ TabbedPane.hasFullBorder false
TabbedPane.hiddenTabsNavigation moreTabsButton
TabbedPane.highlight #232324 HSL 240 1 14 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.hoverColor #303234 HSL 210 4 20 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%)
TabbedPane.inactiveUnderlineColor #466a92 HSL 212 35 42 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.labelShift 1
TabbedPane.light #2f3031 HSL 210 2 19 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.scrollButtonsPlacement both
@@ -1091,7 +1092,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 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000
Table.font [active] $defaultFont [UI]
Table.foreground #bbbbbb HSL 0 0 73 javax.swing.plaf.ColorUIResource [UI]
Table.gridColor #525658 HSL 200 4 33 javax.swing.plaf.ColorUIResource [UI]
Table.gridColor #5a5e60 HSL 200 3 36 javax.swing.plaf.ColorUIResource [UI]
Table.intercellSpacing 0,0 javax.swing.plaf.DimensionUIResource [UI]
Table.rowHeight 20
Table.scrollPaneBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI]

View File

@@ -1050,6 +1050,7 @@ TabbedPane.hasFullBorder false
TabbedPane.hiddenTabsNavigation moreTabsButton
TabbedPane.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.hoverColor #e0e0e0 HSL 0 0 88 com.formdev.flatlaf.util.DerivedColor [UI] darken(7% autoInverse)
TabbedPane.inactiveUnderlineColor #97bbdc HSL 209 50 73 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.labelShift 1
TabbedPane.light #e1e1e1 HSL 0 0 88 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.scrollButtonsPlacement both
@@ -1096,7 +1097,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 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI] lineThickness=1.000000
Table.font [active] $defaultFont [UI]
Table.foreground #000000 HSL 0 0 0 javax.swing.plaf.ColorUIResource [UI]
Table.gridColor #f2f2f2 HSL 0 0 95 javax.swing.plaf.ColorUIResource [UI]
Table.gridColor #ebebeb HSL 0 0 92 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]

View File

@@ -1060,6 +1060,7 @@ TabbedPane.hasFullBorder false
TabbedPane.hiddenTabsNavigation moreTabsButton
TabbedPane.highlight #ffffff HSL 0 0 100 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.hoverColor #eeeeee HSL 0 0 93 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.inactiveUnderlineColor #ff00ff HSL 300 100 50 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.labelShift 1
TabbedPane.light #e3e3e3 HSL 0 0 89 javax.swing.plaf.ColorUIResource [UI]
TabbedPane.scrollButtonsPlacement both

View File

@@ -347,6 +347,7 @@ TabbedPane.disabledForeground = #777
TabbedPane.selectedBackground = #0f0
TabbedPane.selectedForeground = #00f
TabbedPane.underlineColor = #ff0
TabbedPane.inactiveUnderlineColor = #f0f
TabbedPane.disabledUnderlineColor = #7a7a7a
TabbedPane.hoverColor = #eee
TabbedPane.focusColor = #ddd

View File

@@ -821,6 +821,7 @@ TabbedPane.hasFullBorder
TabbedPane.hiddenTabsNavigation
TabbedPane.highlight
TabbedPane.hoverColor
TabbedPane.inactiveUnderlineColor
TabbedPane.labelShift
TabbedPane.light
TabbedPane.scrollButtonsPlacement

View File

@@ -25,8 +25,7 @@ include( "flatlaf-demo" )
include( "flatlaf-testing" )
include( "flatlaf-theme-editor" )
if( org.gradle.internal.os.OperatingSystem.current().isWindows )
includeProject( "flatlaf-natives-windows", "flatlaf-natives/flatlaf-natives-windows" )
includeProject( "flatlaf-natives-windows", "flatlaf-natives/flatlaf-natives-windows" )
includeProject( "flatlaf-natives-jna", "flatlaf-natives/flatlaf-natives-jna" )
includeProject( "flatlaf-testing-modular-app", "flatlaf-testing/flatlaf-testing-modular-app" )