From 932b1ae7f3b2b4a54837c858e32b690d29827f11 Mon Sep 17 00:00:00 2001 From: Sebastiano Poggi Date: Sun, 22 Oct 2023 13:41:00 +0100 Subject: [PATCH] Update README for 0.8.0 Added code samples, updated project structure, added sections on custom window decoration and icon runtime patching. --- README.md | 138 ++++++++++++++++++++++++++++++------- art/docs/custom-chrome.png | Bin 0 -> 46405 bytes 2 files changed, 114 insertions(+), 24 deletions(-) create mode 100644 art/docs/custom-chrome.png diff --git a/README.md b/README.md index 64cb06248..cc8e12184 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ [![JetBrains incubator](https://img.shields.io/badge/JetBrains-incubator-yellow)](https://github.com/JetBrains#jetbrains-on-github) [![CI checks](https://img.shields.io/github/actions/workflow/status/JetBrains/jewel/build.yml?logo=github)](https://github.com/JetBrains/jewel/actions/workflows/build.yml) [![Licensed under Apache 2.0](https://img.shields.io/github/license/JetBrains/jewel)](https://github.com/JetBrains/jewel/blob/main/LICENSE) [![Latest release](https://img.shields.io/github/v/release/JetBrains/jewel?include_prereleases&label=Latest%20Release&logo=github)](https://github.com/JetBrains/jewel/releases/latest) - # Jewel: a Compose for Desktop theme Jewel logo @@ -10,11 +9,14 @@ desktop-optimized theme and set of components. > [!WARNING] > -> This project is in active development, and caution is advised when considering it for production uses. You _can_, -> but you should expect APIs to change often, things to move around and/or break, and all that jazz. Binary -> compatibility is not currently guaranteed across releases, but it is an eventual aim for 1.0, if it is possible. +> This project is in active development, and caution is advised when considering it for production uses. You _can_ use +> it, but you should expect APIs to change often, things to move around and/or break, and all that jazz. Binary +> compatibility is not guaranteed across releases, and APIs are still in flux and subject to change. +> +> Writing 3rd party IntelliJ Plugins in Compose for Desktop is currently **not officially supported** by the IntelliJ +> Platform. It should work, but your mileage may vary, and if things break you're on your own. > -> Use at your own risk! (but have fun if you do!) +> Use at your own risk! Jewel provides stand-alone implementations of the IntelliJ Platform themes that can be used in any Compose for Desktop application, and a Swing LaF Bridge that only works in the IntelliJ Platform (i.e., used to create IDE plugins), but @@ -26,15 +28,27 @@ The project is split in modules: 1. `buildSrc` contains the build logic, including: * The `jewel` and `jewel-publish` configuration plugins + * The `jewel-check-public-api` and `jewel-linting` configuration plugins * The Theme Palette generator plugin -2. `core` contains the foundational Jewel functionality, including the components and their styling primitives -3. `int-ui` implements the standalone version of the IntelliJ New UI, which implements the - ["Int UI" design system](https://www.figma.com/community/file/1227732692272811382/int-ui-kit), and can be used - anywhere -4. `ide-laf-bridge` contains the Swing LaF bridge to use in IntelliJ Platform plugins (see more below) -5. `samples` contains the example apps, which showcase the available components: - 1. `standalone` is a regular CfD app, using the predefined "base" theme definitions - 2. `ide-plugin` is an IntelliJ plugin, adding some UI to the IDE, and showcasing the use of the Swing Bridge + * The Studio Releases generator plugin +2. `foundation` contains the foundational Jewel functionality: + * Basic components without strong styling (e.g., `SelectableLazyColumn`, `BasicLazyTree`) + * The `JewelTheme` interface with a few basic composition locals + * The state management primitives + * The Jewel annotations + * A few other primitives +3. `ui` contains all the styled components and custom painters logic +4. `decorated-window` contains basic, unstyled functionality to have custom window decoration on the JetBrains Runtime +5. `int-ui` contains two modules: + * `int-ui-standalone` has a standalone version of the Int UI styling values that can be used in any Compose for + Desktop app + * `int-ui-decorated-window` has a standalone version of the Int UI styling values for the custom window decoration + that can be used in any Compose for Desktop app +5. `ide-laf-bridge` contains the Swing LaF bridge to use in IntelliJ Platform plugins (see more below) + * The `ide-laf-bridge-*` sub-modules contain code that is specific to a certain IntelliJ Platform version +6. `samples` contains the example apps, which showcase the available components: + * `standalone` is a regular CfD app, using the standalone theme definitions and custom window decoration + * `ide-plugin` is an IntelliJ plugin that showcases the use of the Swing Bridge ### Int UI Standalone theme @@ -46,31 +60,107 @@ to your heart's content. By default, it matches the official Int UI specs. > as it has extra features and patches for UI functionalities that aren't available in other JDKs. > We **do not support** running Jewel on any other JDK. +To use Jewel components in a non-IntelliJ Platform environment, you need to wrap your UI hierarchy in a `IntUiTheme` +composable: + +```kotlin +IntUiTheme(isDark = false) { + // ... +} +``` + +If you want more control over the theming, you can use other `IntUiTheme` overloads, like the standalone sample does. + +#### Custom window decoration +The JetBrains Runtime allows windows to have a custom decoration instead of the regular title bar. + +![A screenshot of the custom window decoration in the standalone sample](art/docs/custom-chrome.png) + +The standalone sample app shows how to easily get something that looks like a JetBrains IDE; if you want to go _very_ +custom, you only need to depend on the `decorated-window` module, which contains all the required primitives, but not +the Int UI styling. + +To get an IntelliJ-like custom title bar, you need to pass the window decoration styling to your theme call, and add the +`DecoratedWindow` composable at the top level of the theme: + +```kotlin +IntUiTheme( + themeDefinition, + componentStyling = { + themeDefinition.decoratedWindowComponentStyling( + titleBarStyle = TitleBarStyle.light() + ) + }, +) { + DecoratedWindow( + onCloseRequest = { exitApplication() }, + ) { + // ... + } +} +``` + ### The Swing Bridge -Jewel includes a crucial element for proper integration with the IDE: a bridge between the Swing components, theme -and LaF, and the Compose world. +Jewel includes a crucial element for proper integration with the IDE: a bridge between the Swing components — theme +and LaF — and the Compose world. This bridge ensures that we pick up the colours, typography, metrics, and images as defined in the current IntelliJ -theme, and apply them to the Compose components as well — at least for themes that use the -standard [IntelliJ theming](https://plugins.jetbrains.com/docs/intellij/themes-getting-started.html) mechanisms. +theme, and apply them to the Compose components as well. This means Jewel will automatically adapt to IntelliJ Platform +themes that use the [standard theming](https://plugins.jetbrains.com/docs/intellij/themes-getting-started.html) mechanisms. > [!NOTE] > IntelliJ themes that use non-standard mechanisms (such as providing custom UI implementations for Swing components) -> are not, and will never, be supported. +> are not, and can never, be supported. -If you're writing an IntelliJ Platform plugin, you should use the `SwingBridgeTheme` instead of a standalone theme. +If you're writing an IntelliJ Platform plugin, you should use the `SwingBridgeTheme` instead of the standalone theme: + +```kotlin +SwingBridgeTheme { + // ... +} +``` #### Accessing icons -When you want to draw an icon from the resources, you should use a `PainterProvider`. Reading an icon from the IDE is -as easy as using the `retrieveStatefulIcon()` and `retrieveStatelessIcon()`: +When you want to draw an icon from the resources, you can either use the `Icon` composable and pass it the resource path +and the corresponding class to look up the classpath from, or go one lever deeper and use the lower level, +`Painter`-based API. + +The `Icon` approach looks like this: ```kotlin -val svgLoader = service().svgLoader -val painterProvider = retrieveStatelessIcon("icons/bot-toolwindow.svg", svgLoader, iconData) +// Load the "close" icon from the IDE's AllIcons class +Icon( + "actions/close.svg", + iconClass = AllIcons::class.java, + contentDescription = "Close", +) ``` +To obtain a `Painter`, instead, you'd use: + +```kotlin +val painterProvider = rememberResourcePainterProvider( + path = "actions/close.svg", + iconClass = AllIcons::class.java +) +val painter by painterProvider.getPainter() +``` + +#### Icon runtime patching +Jewel emulates the under-the-hood machinations that happen in the IntelliJ Platform when loading icons. Specifically, +the resource will be subject to some transformations before being loaded. + +For example, in the IDE, if New UI is active, the icon path may be replaced with a different one. Some key colors in SVG +icons will also be replaced based on the current theme. See +[the docs](https://plugins.jetbrains.com/docs/intellij/work-with-icons-and-images.html#new-ui-icons). + +Beyond that, even in standalone, Jewel will pick up icons with the appropriate dark/light variant for the current theme, +and for bitmap icons it will try to pick the 2x variants based on the `LocalDensity`. + +If you want to learn more about this system, the entry point is the `PainterHint` class. + ### Swing interoperability As this is Compose for Desktop, you get a good degree of interoperability with Swing. To avoid glitches and z-order @@ -79,7 +169,7 @@ issues, you should enable the before you initialize Compose content. The `ToolWindow.addComposeTab()` extension function provided by the `ide-laf-bridge` module will take care of that for -you, but if you want to also enable it in other scenarios and in standalone applications, you can call the +you. However, if you want to also enable it in other scenarios and in standalone applications, you can call the `enableNewSwingCompositing()` function in your Compose entry points (that is, right before creating a `ComposePanel`). > [!NOTE] diff --git a/art/docs/custom-chrome.png b/art/docs/custom-chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a331a18fe9e8cf42fbb73fa19ec25fde6be44d GIT binary patch literal 46405 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