diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/.gitignore b/experimental/examples/intellij-plugin-with-experimental-shared-base/.gitignore deleted file mode 100644 index 65ca50d416b..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -build/ -.gradle/ -.idea/ \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/.run/runIde.run.xml b/experimental/examples/intellij-plugin-with-experimental-shared-base/.run/runIde.run.xml deleted file mode 100644 index 52aca017c27..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/.run/runIde.run.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - true - true - false - - - \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/README.md b/experimental/examples/intellij-plugin-with-experimental-shared-base/README.md deleted file mode 100644 index 8af73b48ec0..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/README.md +++ /dev/null @@ -1,20 +0,0 @@ -## Example Compose Multiplatform based plugin for IntelliJ Idea. - -A plugin, demonstrating an Intellij plugin, showing a dialog window written with Compose. - -The only difference from [examples/intellij-plugin](../intellij-plugin) is that -this version does not bundle Compose runtime, which makes the plugin smaller -and allows sharing Compose runtime between multiple plugins -(Compose class files and native libraries are not loaded by each plugin). - -### Usage - -1. Start test IDE: - * Run the following command in terminal: `./gradlew runIde` - * Or choose **runIde** configuration in IDE and run it. - ![ide-run-configuration.png](screenshots/ide-run-configuration.png) -2. Create a new project or open any existing; -3. Select `Show Compose Demo...` from the `Tools` menu. - -![screen1](../intellij-plugin/screenshots/toolsshow.png) -![screen2](../intellij-plugin/screenshots/screenshot.png) diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/build.gradle.kts b/experimental/examples/intellij-plugin-with-experimental-shared-base/build.gradle.kts deleted file mode 100644 index 5cc4674c24e..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/build.gradle.kts +++ /dev/null @@ -1,38 +0,0 @@ -import org.jetbrains.compose.compose - -plugins { - id("org.jetbrains.intellij") version "1.6.0" - java - kotlin("jvm") - id("org.jetbrains.compose") - id("idea") -} - -group = "org.jetbrains.compose.intellij.platform" -version = "1.0-SNAPSHOT" - -repositories { - mavenCentral() - google() - maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") } -} - -dependencies { -// compileOnly(compose.desktop.currentOs) runtime dependency is provided by org.jetbrains.compose.intellij.platform - testImplementation(kotlin("test")) -} - -// See https://github.com/JetBrains/gradle-intellij-plugin/ -intellij { - version.set("2021.3") - plugins.set( - listOf( - "org.jetbrains.compose.intellij.platform:0.1.0", - "org.jetbrains.kotlin" - ) - ) -} - -tasks.withType { - kotlinOptions.jvmTarget = "11" -} diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/gradle.properties b/experimental/examples/intellij-plugin-with-experimental-shared-base/gradle.properties deleted file mode 100644 index 121b219d4e4..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/gradle.properties +++ /dev/null @@ -1,5 +0,0 @@ -kotlin.stdlib.default.dependency=false -kotlin.code.style=official -kotlin.version=1.8.0 -compose.version=1.3.0 - diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/gradle/wrapper/gradle-wrapper.jar b/experimental/examples/intellij-plugin-with-experimental-shared-base/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 62d4c053550..00000000000 Binary files a/experimental/examples/intellij-plugin-with-experimental-shared-base/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/gradle/wrapper/gradle-wrapper.properties b/experimental/examples/intellij-plugin-with-experimental-shared-base/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index ae04661ee73..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/gradlew b/experimental/examples/intellij-plugin-with-experimental-shared-base/gradlew deleted file mode 100755 index 4f906e0c811..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/gradlew +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# 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. -# - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -exec "$JAVACMD" "$@" diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/gradlew.bat b/experimental/examples/intellij-plugin-with-experimental-shared-base/gradlew.bat deleted file mode 100644 index 107acd32c4e..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/screenshots/ide-run-configuration.png b/experimental/examples/intellij-plugin-with-experimental-shared-base/screenshots/ide-run-configuration.png deleted file mode 100644 index 9dc9453a387..00000000000 Binary files a/experimental/examples/intellij-plugin-with-experimental-shared-base/screenshots/ide-run-configuration.png and /dev/null differ diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/settings.gradle.kts b/experimental/examples/intellij-plugin-with-experimental-shared-base/settings.gradle.kts deleted file mode 100644 index dd1ac3675a4..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/settings.gradle.kts +++ /dev/null @@ -1,8 +0,0 @@ -rootProject.name = "ComposeDemoPlugin" - -pluginManagement { - plugins { - kotlin("jvm").version(extra["kotlin.version"] as String) - id("org.jetbrains.compose").version(extra["compose.version"] as String) - } -} diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt deleted file mode 100644 index 581c8cbe914..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt +++ /dev/null @@ -1,70 +0,0 @@ -package com.jetbrains.compose - -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material.Surface -import androidx.compose.ui.Modifier -import androidx.compose.ui.awt.ComposePanel -import androidx.compose.ui.layout.Layout -import androidx.compose.ui.layout.MeasurePolicy -import androidx.compose.ui.layout.onGloballyPositioned -import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.project.DumbAwareAction -import com.intellij.openapi.project.Project -import com.intellij.openapi.ui.DialogWrapper -import com.jetbrains.compose.theme.WidgetTheme -import com.jetbrains.compose.widgets.Buttons -import com.jetbrains.compose.widgets.LazyScrollable -import com.jetbrains.compose.widgets.Loaders -import com.jetbrains.compose.widgets.TextInputs -import com.jetbrains.compose.widgets.Toggles -import java.awt.Dimension -import javax.swing.JComponent -import javax.swing.SwingUtilities - - -/** - * @author Konstantin Bulenkov - */ -class ComposeDemoAction : DumbAwareAction() { - override fun actionPerformed(e: AnActionEvent) { - DemoDialog(e.project).show() - } - - class DemoDialog(project: Project?) : DialogWrapper(project) { - init { - title = "Demo" - init() - } - - override fun createCenterPanel(): JComponent { - return ComposePanel().apply { - setBounds(0, 0, 800, 600) - setContent { - WidgetTheme(darkTheme = true) { - Surface(modifier = Modifier.fillMaxSize()) { - Row { - Column( - modifier = Modifier.fillMaxHeight().weight(1f) - ) { - Buttons() - Loaders() - TextInputs() - Toggles() - } - Box( - modifier = Modifier.fillMaxHeight().weight(1f) - ) { - LazyScrollable() - } - } - } - } - } - } - } - } -} diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/IntellijTheme.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/IntellijTheme.kt deleted file mode 100644 index 8969581b721..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/IntellijTheme.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers. - * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. - */ - -package com.jetbrains.compose - -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material.Surface -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import com.intellij.openapi.project.Project -import com.jetbrains.compose.theme.WidgetTheme -import org.intellij.datavis.r.inlays.components.GraphicsManager - -@Composable -fun IntellijTheme(project: Project, content: @Composable () -> Unit) { - val isDarkMode = try { - GraphicsManager.getInstance(project)?.isDarkModeEnabled ?: false - } catch (t: Throwable) { - false - } - WidgetTheme(darkTheme = isDarkMode) { - Surface(modifier = Modifier.fillMaxSize()) { - content() - } - } -} diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/color/ColorLineMarkerProvider.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/color/ColorLineMarkerProvider.kt deleted file mode 100644 index 1ab8977c621..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/color/ColorLineMarkerProvider.kt +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers. - * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. - */ - -package com.jetbrains.compose.color - -import androidx.compose.runtime.mutableStateOf -import androidx.compose.ui.awt.ComposePanel -import androidx.compose.ui.graphics.Color -import com.intellij.codeInsight.daemon.LineMarkerInfo -import com.intellij.codeInsight.daemon.LineMarkerProvider -import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.editor.markup.GutterIconRenderer -import com.intellij.openapi.ui.DialogWrapper -import com.intellij.psi.PsiElement -import com.jetbrains.compose.IntellijTheme -import org.jetbrains.kotlin.psi.KtPsiFactory -import org.jetbrains.uast.* -import java.awt.Component -import java.awt.Graphics -import javax.swing.Icon -import javax.swing.JComponent - -class ColorLineMarkerProvider : LineMarkerProvider { - - override fun getLineMarkerInfo(element: PsiElement): LineMarkerInfo<*>? { - val project = element.project - val ktPsiFactory = KtPsiFactory(project) - val uElement: UElement = element.toUElement() ?: return null - if (uElement is UCallExpression) { - if (uElement.kind == UastCallKind.METHOD_CALL && uElement.methodIdentifier?.name == "Color") { - val colorLongValue = (uElement.valueArguments.firstOrNull() as? ULiteralExpression)?.getLongValue() - val previousColor = try { - Color(colorLongValue!!) - } catch (t: Throwable) { - Color(0xffffffff) - } - - val iconSize = 20 - return LineMarkerInfo( - element, - element.textRange, - object : Icon { - override fun paintIcon(c: Component?, g: Graphics?, x: Int, y: Int) { - g?.color = java.awt.Color( - previousColor.red, - previousColor.green, - previousColor.blue, - previousColor.alpha - ) - g?.fillRect(0, 0, iconSize, iconSize) - } - - override fun getIconWidth(): Int = iconSize - override fun getIconHeight(): Int = iconSize - }, - null, - { _, psiElement: PsiElement -> - - - class ChooseColorDialog() : DialogWrapper(project) { - val colorState = mutableStateOf(previousColor) - - init { - title = "Choose color" - init() - } - - override fun createCenterPanel(): JComponent = - ComposePanel().apply { - setBounds(0, 0, 400, 400) - setContent { - IntellijTheme(project) { - ColorPicker(colorState) - } - } - } - } - - val chooseColorDialog = ChooseColorDialog() - val result = chooseColorDialog.showAndGet() - if (result) { - val color = chooseColorDialog.colorState.value - ApplicationManager.getApplication().runWriteAction { - psiElement.replace( - ktPsiFactory.createExpression( - "Color(${color.toHexString()})" - ) - ) - } - } - }, - GutterIconRenderer.Alignment.RIGHT, - { "change color literal" } - ) - } - } - return null - } - - override fun collectSlowLineMarkers( - elements: MutableList, - result: MutableCollection> - ) { - - } -} diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/color/ColorPicker.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/color/ColorPicker.kt deleted file mode 100644 index 9ef49add6ed..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/color/ColorPicker.kt +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers. - * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. - */ - -package com.jetbrains.compose.color - -import androidx.compose.foundation.Canvas -import androidx.compose.foundation.background -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* -import androidx.compose.material.Divider -import androidx.compose.material.Text -import androidx.compose.material.TextField -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.geometry.Offset -import androidx.compose.ui.geometry.Size -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.drawscope.Stroke -import androidx.compose.ui.graphics.toArgb -import androidx.compose.ui.input.pointer.isPrimaryPressed -import androidx.compose.ui.input.pointer.pointerInput -import androidx.compose.ui.unit.dp - -private const val VALUE_BAND_RATIO = 0.07f -private val DEFAULT_COLORS = - listOf(Color.Red, Color.Green, Color.Blue, Color.Black, Color.Gray, Color.Yellow, Color.Cyan, Color.Magenta) - -@Composable -fun ColorPicker(colorState: MutableState) { - var currentColor: Color by remember { colorState } - Column { - Row { - DEFAULT_COLORS.forEach { - Box(Modifier.size(30.dp).background(color = it).clickable { - currentColor = it - }) - } - } - Divider(Modifier.size(2.dp)) - Row(Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) { - Text("Result color:") - Divider(Modifier.size(2.dp)) - TextField(modifier = Modifier.width(120f.dp), value = currentColor.toHexString(), onValueChange = {}) - Divider(Modifier.size(2.dp)) - val size = 60f - Box(Modifier.size(size.dp).background(color = currentColor)) - } - Divider(Modifier.size(2.dp)) - var width by remember { mutableStateOf(300) } - var height by remember { mutableStateOf(256) } - val rainbowWidth by derivedStateOf { (width * (1 - VALUE_BAND_RATIO)).toInt() } - val bandWidth by derivedStateOf { width * VALUE_BAND_RATIO } - fun calcHue(x: Float) = limit0to1(x / rainbowWidth) * HSV.HUE_MAX_VALUE - fun calcSaturation(y: Float) = 1 - limit0to1(y / height) - fun calcValue(y: Float) = 1 - limit0to1(y / height) - Row(Modifier.fillMaxSize()) { - Canvas(Modifier.fillMaxSize().pointerInput(Unit) { - width = size.width - height = size.height - awaitPointerEventScope { - while (true) { - val event = awaitPointerEvent() - if (event.buttons.isPrimaryPressed) { - val position = event.changes.first().position - if (position.x < rainbowWidth) { - currentColor = try { - currentColor.toHsv().copy( - hue = calcHue(position.x), - saturation = calcSaturation(position.y) - ).toRgb() - } catch (t: Throwable) { - t.printStackTrace() - println("exception $t") - currentColor - } - } else { - currentColor = - currentColor.toHsv().copy( - value = calcValue(position.y) - ).toRgb() - } - } - } - } - }) { - for (x in 0..rainbowWidth) { - for (y in 0..height) { - drawRect( - color = currentColor.toHsv().copy( - hue = calcHue(x.toFloat()), - saturation = calcSaturation(y.toFloat()) - ).toRgb(), - topLeft = Offset(x.toFloat(), y.toFloat()), - size = Size(1f, 1f) - ) - } - } - val valueBandX = rainbowWidth + 1 - for (y in 0..height) { - drawRect( - color = currentColor.toHsv().copy(value = calcValue(y.toFloat())).toRgb(), - topLeft = Offset(valueBandX.toFloat(), y.toFloat()), - size = Size(bandWidth, 1f) - ) - } - val circleX = (currentColor.toHsv().hue / 360) * rainbowWidth - val circleY = (1 - currentColor.toHsv().saturation) * height - drawCircle( - center = Offset(circleX, circleY), - color = Color.Black, - radius = 5f, - style = Stroke(width = 3f) - ) - } - } - } -} - -fun Color.toHexString() = "0x" + toArgb().toUInt().toString(16) -fun limit(value: Float, min: Float, max: Float) = minOf( - maxOf(value, min), - max -) - -fun limit0to1(value: Float) = limit(value = value, 0f, 1f) diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/color/HSV.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/color/HSV.kt deleted file mode 100644 index 86fef306c41..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/color/HSV.kt +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers. - * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. - */ - -package com.jetbrains.compose.color - -import androidx.compose.ui.graphics.Color -import kotlin.math.abs - -data class HSV( - /** - * 0.0 .. 360.0 - */ - val hue: Float, - /** - * 0.0 .. 1.0 - */ - val saturation: Float, - /** - * 0.0 . 1.0¬ - */ - val value: Float -) { - companion object { - const val HUE_MAX_VALUE = 360f - } -} - -/** - * Convert to HSV color space - * https://www.rapidtables.com/convert/color/rgb-to-hsv.html - */ -fun Color.toHsv(): HSV { - val max = maxOf(red, green, blue) - val min = minOf(red, green, blue) - val delta = max - min - val h = when { - delta == 0f -> 0f - max == red -> 60 * ((green - blue) / delta).mod(6f) - max == green -> 60 * ((blue - red) / delta + 2) - max == blue -> 60 * ((red - green) / delta + 4) - else -> 0f - } - val s = when { - max == 0f -> 0f - else -> delta / max - } - val v = max - return HSV( - hue = h, - saturation = s, - value = v - ) -} - -/** - * Convert to RGB color space - * https://www.rapidtables.com/convert/color/hsv-to-rgb.html - */ -fun HSV.toRgb(): Color { - val c = value * saturation - val x = minOf(c * (1 - abs((hue / 60).mod(2f) - 1)), 1f) - val m = value - c - val tempColor = when { - hue >= 0 && hue < 60 -> Color(c, x, 0f) - hue >= 60 && hue < 120 -> Color(x, c, 0f) - hue >= 120 && hue < 180 -> Color(0f, c, x) - hue >= 180 && hue < 240 -> Color(0f, x, c) - hue >= 240 && hue < 300 -> Color(x, 0f, c) - else -> Color(c, 0f, x) - } - return Color(minOf(m + tempColor.red, 1f), minOf(m + tempColor.green, 1f), minOf(m + tempColor.blue, 1f)) -} - diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/panel/ComposeToolWindow.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/panel/ComposeToolWindow.kt deleted file mode 100644 index c7e66f37c9b..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/panel/ComposeToolWindow.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers. - * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. - */ - -package com.jetbrains.compose.panel - -import androidx.compose.runtime.mutableStateOf -import androidx.compose.ui.awt.ComposePanel -import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.project.DumbAware -import com.intellij.openapi.project.Project -import com.intellij.openapi.wm.ToolWindow -import com.intellij.openapi.wm.ToolWindowFactory -import com.intellij.ui.content.ContentFactory -import com.jetbrains.compose.IntellijTheme -import java.awt.Dimension - -class ComposeToolWindow : ToolWindowFactory, DumbAware { - - override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) { - ApplicationManager.getApplication().invokeLater { - toolWindow.contentManager.addContent( - ContentFactory.SERVICE.getInstance().createContent( - ComposePanel().apply { - size = Dimension(300, 300) - setContent { - IntellijTheme(project) { - CounterPanel(stateWithIdeLifecycle) - } - } - }, - "Compose tool window", - false - ) - ) - } - } - - companion object { - val stateWithIdeLifecycle = mutableStateOf(CounterState()) - } - -} diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/panel/CounterPanel.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/panel/CounterPanel.kt deleted file mode 100644 index 24be64a9f97..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/panel/CounterPanel.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers. - * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. - */ - -package com.jetbrains.compose.panel - -import androidx.compose.foundation.layout.Column -import androidx.compose.material.Button -import androidx.compose.material.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.MutableState -import androidx.compose.runtime.* - -@Composable -fun CounterPanel(stateWithIdeLifecycle: MutableState) { - var stateInline by remember { mutableStateOf(CounterState()) } - Column { - Text("Counter with IDE lifecycle: ${stateWithIdeLifecycle.value.counter}") - Button(onClick = { - stateWithIdeLifecycle.value = stateWithIdeLifecycle.value.copy( - counter = stateWithIdeLifecycle.value.counter + 1 - ) - }) { - Text("Increment state with IDE lifecycle") - } - Text("Counter with @Composable lifecycle: ${stateInline.counter}") - Button(onClick = { - stateInline = stateInline.copy( - counter = stateInline.counter + 1 - ) - }) { - Text("Increment state with @Composable lifecycle") - } - } -} diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/panel/CounterState.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/panel/CounterState.kt deleted file mode 100644 index 5466e579f90..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/panel/CounterState.kt +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers. - * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. - */ - -package com.jetbrains.compose.panel - -data class CounterState( - val counter: Int = 0 -) diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Color.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Color.kt deleted file mode 100644 index 9ed4581b850..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Color.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.jetbrains.compose.theme - -import androidx.compose.ui.graphics.Color - -val green200 = Color(0xffa5d6a7) -val green500 = Color(0xff4caf50) -val green700 = Color(0xff388e3c) - -val teal200 = Color(0xff80deea) diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Shape.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Shape.kt deleted file mode 100644 index 3ac8795fc70..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Shape.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.jetbrains.compose.theme - -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Shapes -import androidx.compose.ui.unit.dp - -val shapes = Shapes( - small = RoundedCornerShape(4.dp), - medium = RoundedCornerShape(4.dp), - large = RoundedCornerShape(0.dp) -) \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Theme.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Theme.kt deleted file mode 100644 index 78a3ec5181f..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Theme.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.jetbrains.compose.theme - -import androidx.compose.material.MaterialTheme -import androidx.compose.material.darkColors -import androidx.compose.material.lightColors -import androidx.compose.runtime.Composable -import androidx.compose.ui.graphics.Color -import com.jetbrains.compose.theme.intellij.SwingColor - -private val DarkGreenColorPalette = darkColors( - primary = green200, - primaryVariant = green700, - secondary = teal200, - onPrimary = Color.Black, - onSecondary = Color.White, - error = Color.Red, -) - -private val LightGreenColorPalette = lightColors( - primary = green500, - primaryVariant = green700, - secondary = teal200, - onPrimary = Color.White, - onSurface = Color.Black -) - -@Composable -fun WidgetTheme( - darkTheme: Boolean = false, - content: @Composable() () -> Unit, -) { - val colors = if (darkTheme) DarkGreenColorPalette else LightGreenColorPalette - val swingColor = SwingColor() - - MaterialTheme( - colors = colors.copy( - background = swingColor.background, - onBackground = swingColor.onBackground, - surface = swingColor.background, - onSurface = swingColor.onBackground, - ), - typography = typography, - shapes = shapes, - content = content - ) -} \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Type.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Type.kt deleted file mode 100644 index 4bc429afa8f..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/Type.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.jetbrains.compose.theme - -import androidx.compose.material.Typography -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.sp - -val typography = Typography( - body1 = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 16.sp - ), - body2 = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 14.sp - ), - button = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.W500, - fontSize = 14.sp - ), - caption = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 12.sp, - ), - subtitle1 = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 16.sp, - color = Color.Gray - ), - subtitle2 = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 14.sp, - color = Color.Gray - ), -) \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/intellij/SwingColor.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/intellij/SwingColor.kt deleted file mode 100644 index 0aac1aaf505..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/intellij/SwingColor.kt +++ /dev/null @@ -1,61 +0,0 @@ -package com.jetbrains.compose.theme.intellij - -import androidx.compose.runtime.* -import androidx.compose.ui.graphics.Color -import com.intellij.ide.ui.LafManagerListener -import com.intellij.openapi.application.ApplicationManager -import javax.swing.UIManager -import java.awt.Color as AWTColor - -interface SwingColor { - val background: Color - val onBackground: Color -} - -@Composable -fun SwingColor(): SwingColor { - val swingColor = remember { SwingColorImpl() } - - val messageBus = remember { - ApplicationManager.getApplication().messageBus.connect() - } - - remember(messageBus) { - messageBus.subscribe( - LafManagerListener.TOPIC, - ThemeChangeListener(swingColor::updateCurrentColors) - ) - } - - DisposableEffect(messageBus) { - onDispose { - messageBus.disconnect() - } - } - - return swingColor -} - -private class SwingColorImpl : SwingColor { - private val _backgroundState: MutableState = mutableStateOf(getBackgroundColor) - private val _onBackgroundState: MutableState = mutableStateOf(getOnBackgroundColor) - - override val background: Color get() = _backgroundState.value - override val onBackground: Color get() = _onBackgroundState.value - - private val getBackgroundColor get() = getColor(BACKGROUND_KEY) - private val getOnBackgroundColor get() = getColor(ON_BACKGROUND_KEY) - - fun updateCurrentColors() { - _backgroundState.value = getBackgroundColor - _onBackgroundState.value = getOnBackgroundColor - } - - private val AWTColor.asComposeColor: Color get() = Color(red, green, blue, alpha) - private fun getColor(key: String): Color = UIManager.getColor(key).asComposeColor - - companion object { - private const val BACKGROUND_KEY = "Panel.background" - private const val ON_BACKGROUND_KEY = "Panel.foreground" - } -} \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/intellij/ThemeChangeListener.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/intellij/ThemeChangeListener.kt deleted file mode 100644 index 95a83241141..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/theme/intellij/ThemeChangeListener.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.jetbrains.compose.theme.intellij - -import com.intellij.ide.ui.LafManager -import com.intellij.ide.ui.LafManagerListener - -internal class ThemeChangeListener( - val updateColors: () -> Unit -) : LafManagerListener { - override fun lookAndFeelChanged(source: LafManager) { - updateColors() - } -} - diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/Buttons.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/Buttons.kt deleted file mode 100644 index 89fc8c2c112..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/Buttons.kt +++ /dev/null @@ -1,57 +0,0 @@ -package com.jetbrains.compose.widgets - -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.padding -import androidx.compose.material.Button -import androidx.compose.material.TextButton -import androidx.compose.material.OutlinedButton -import androidx.compose.material.Text -import androidx.compose.material.Icon -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.FavoriteBorder -import androidx.compose.material.icons.filled.Refresh -import androidx.compose.runtime.Composable -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp - -@Composable -fun Buttons() { - Row { - val btnEnabled = remember { mutableStateOf(true) } - Button( - onClick = { btnEnabled.value = !btnEnabled.value}, - modifier = Modifier.padding(8.dp), - enabled = btnEnabled.value - ) { - Icon( - imageVector = Icons.Default.FavoriteBorder, - contentDescription = "FavoriteBorder", - modifier = Modifier.padding(end = 4.dp) - ) - Text(text = "Button") - } - val btnTextEnabled = remember { mutableStateOf(true) } - TextButton( - onClick = { btnTextEnabled.value = !btnTextEnabled.value }, - modifier = Modifier.padding(8.dp), - enabled = btnTextEnabled.value - ) { - Text(text = "Text Button") - } - OutlinedButton( - onClick = { - btnEnabled.value = true - btnTextEnabled.value = true - }, - modifier = Modifier.padding(8.dp) - ) { - Icon( - imageVector = Icons.Default.Refresh, - contentDescription = "Refresh", - modifier = Modifier.padding(0.dp) - ) - } - } -} \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/LazyScrollable.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/LazyScrollable.kt deleted file mode 100644 index e5bba421a05..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/LazyScrollable.kt +++ /dev/null @@ -1,71 +0,0 @@ -package com.jetbrains.compose.widgets - -import androidx.compose.desktop.DesktopTheme -import androidx.compose.foundation.background -import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.rememberScrollbarAdapter -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.VerticalScrollbar -import androidx.compose.material.Text -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp - -@Composable -fun LazyScrollable() { - MaterialTheme { - DesktopTheme { - Box( - modifier = Modifier.fillMaxSize() - .padding(10.dp) - ) { - - val state = rememberLazyListState() - val itemCount = 100 - - LazyColumn(Modifier.fillMaxSize().padding(end = 12.dp), state) { - items(itemCount) { x -> - TextBox("Item in ScrollableColumn #$x") - Spacer(modifier = Modifier.height(5.dp)) - } - } - VerticalScrollbar( - modifier = Modifier.align(Alignment.CenterEnd).fillMaxHeight(), - adapter = rememberScrollbarAdapter( - scrollState = state - ) - ) - } - } - } -} - -@Composable -private fun TextBox(text: String = "Item") { - Surface( - color = Color(135, 135, 135, 40), - shape = RoundedCornerShape(4.dp) - ) { - Box( - modifier = Modifier.height(32.dp) - .fillMaxWidth() - .padding(start = 10.dp), - contentAlignment = Alignment.CenterStart - ) { - Text(text = text) - } - } -} \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/Loaders.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/Loaders.kt deleted file mode 100644 index a18252459b2..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/Loaders.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.jetbrains.compose.widgets - -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.size -import androidx.compose.material.CircularProgressIndicator -import androidx.compose.material.LinearProgressIndicator -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp - -@Composable -fun Loaders() { - Row( - modifier = Modifier.fillMaxWidth().padding(16.dp) - ) { - Box( - modifier = Modifier.height(30.dp), - contentAlignment = Alignment.Center - ) { - CircularProgressIndicator( - modifier = Modifier.size(20.dp, 20.dp), - strokeWidth = 4.dp - ) - } - Box( - modifier = Modifier - .height(30.dp) - .padding(start = 8.dp), - contentAlignment = Alignment.Center - ) { - LinearProgressIndicator(modifier = Modifier.fillMaxWidth()) - } - } -} \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/TextInputs.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/TextInputs.kt deleted file mode 100644 index 5ca7a9aad67..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/TextInputs.kt +++ /dev/null @@ -1,53 +0,0 @@ -package com.jetbrains.compose.widgets - -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.Text -import androidx.compose.material.TextField -import androidx.compose.material.OutlinedTextField -import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.text.input.PasswordVisualTransformation -import androidx.compose.ui.text.input.TextFieldValue -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.unit.dp - -@Composable -fun TextInputs() { - Column( - modifier = Modifier.fillMaxWidth().padding(16.dp) - ) { - var name by remember { mutableStateOf(TextFieldValue("")) } - var password by remember { mutableStateOf(TextFieldValue("")) } - - TextField( - value = name, - onValueChange = { newValue -> name = newValue }, - modifier = Modifier.padding(8.dp).fillMaxWidth(), - textStyle = TextStyle(fontFamily = FontFamily.SansSerif), - label = { Text("Account:") }, - placeholder = { Text("account name") } - ) - - OutlinedTextField( - value = password, - modifier = Modifier.padding(8.dp).fillMaxWidth(), - label = { Text(text = "Password:") }, - placeholder = { Text(text = "your password") }, - textStyle = TextStyle(fontFamily = FontFamily.SansSerif), - visualTransformation = PasswordVisualTransformation(), - onValueChange = { - password = it - }, - keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password) - ) - } -} \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/Toggles.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/Toggles.kt deleted file mode 100644 index b4a7febac20..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/kotlin/com/jetbrains/compose/widgets/Toggles.kt +++ /dev/null @@ -1,90 +0,0 @@ -package com.jetbrains.compose.widgets - -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.Checkbox -import androidx.compose.material.MaterialTheme -import androidx.compose.material.RadioButton -import androidx.compose.material.Slider -import androidx.compose.material.Switch -import androidx.compose.material.SwitchDefaults -import androidx.compose.material.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp - -@Composable -fun Toggles() { - Column { - Row { - Column( - modifier = Modifier.padding(16.dp) - ) { - var checked by remember { mutableStateOf(true) } - Checkbox( - checked = checked, - modifier = Modifier.padding(8.dp), - onCheckedChange = { checked = !checked } - ) - var switched by remember { mutableStateOf(true) } - Switch( - checked = switched, - colors = SwitchDefaults.colors(checkedThumbColor = MaterialTheme.colors.primary), - modifier = Modifier.padding(8.dp), - onCheckedChange = { switched = it } - ) - } - Column( - modifier = Modifier.padding(16.dp) - ) { - var selected by remember { mutableStateOf("Kotlin") } - Row(verticalAlignment = Alignment.CenterVertically) { - RadioButton(selected = selected == "Kotlin", onClick = { selected = "Kotlin" }) - Text( - text = "Kotlin", - modifier = Modifier.clickable(onClick = { selected = "Kotlin" }).padding(start = 4.dp) - ) - } - Row(verticalAlignment = Alignment.CenterVertically) { - RadioButton(selected = selected == "Java", onClick = { selected = "Java" }) - Text( - text = "Java", - modifier = Modifier.clickable(onClick = { selected = "Java" }).padding(start = 4.dp) - ) - } - Row(verticalAlignment = Alignment.CenterVertically) { - RadioButton(selected = selected == "Swift", onClick = { selected = "Swift" }) - Text( - text = "Swift", - modifier = Modifier.clickable(onClick = { selected = "Swift" }).padding(start = 4.dp) - ) - } - } - } - - var sliderState by remember { mutableStateOf(0f) } - Slider(value = sliderState, modifier = Modifier.fillMaxWidth().padding(8.dp), - onValueChange = { newValue -> - sliderState = newValue - } - ) - - var sliderState2 by remember { mutableStateOf(20f) } - Slider(value = sliderState2, modifier = Modifier.fillMaxWidth().padding(8.dp), - valueRange = 0f..100f, - steps = 5, - onValueChange = { newValue -> - sliderState2 = newValue - } - ) - } -} \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/resources/META-INF/plugin.xml b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/resources/META-INF/plugin.xml deleted file mode 100644 index 5932048466d..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/resources/META-INF/plugin.xml +++ /dev/null @@ -1,29 +0,0 @@ - - com.jetbrains.ComposeDemoPlugin - Jetpack Compose for Desktop Demo - JetBrains - - - - - com.intellij.modules.platform - org.jetbrains.compose.intellij.platform - org.jetbrains.kotlin - - - - - - - - - - - - - \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/resources/icons/compose.svg b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/resources/icons/compose.svg deleted file mode 100644 index 2154d497bd6..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/main/resources/icons/compose.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/test/kotlin/com/jetbrains/compose/color/ColorPickerUITest.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/test/kotlin/com/jetbrains/compose/color/ColorPickerUITest.kt deleted file mode 100644 index 68ca6d2387a..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/test/kotlin/com/jetbrains/compose/color/ColorPickerUITest.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers. - * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. - */ - -package com.jetbrains.compose.color - -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.dp -import androidx.compose.ui.window.Window -import androidx.compose.ui.window.WindowState -import androidx.compose.ui.window.application - -fun main() = application { - val windowState = remember { WindowState(width = 400.dp, height = 400.dp) } - Window( - onCloseRequest = ::exitApplication, - title = "ColorPicker", - state = windowState - ) { - ColorPicker(mutableStateOf(Color(0xffaabbcc))) - } -} diff --git a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/test/kotlin/com/jetbrains/compose/color/HSVTest.kt b/experimental/examples/intellij-plugin-with-experimental-shared-base/src/test/kotlin/com/jetbrains/compose/color/HSVTest.kt deleted file mode 100644 index b1c491b1fe8..00000000000 --- a/experimental/examples/intellij-plugin-with-experimental-shared-base/src/test/kotlin/com/jetbrains/compose/color/HSVTest.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers. - * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. - */ - -package com.jetbrains.compose.color - -import androidx.compose.ui.graphics.Color -import org.junit.Test -import kotlin.test.assertEquals - -class HSVTest { - - @Test - fun testGreenToHsv() { - val greenRgb = Color(0xff00ff00) - val result = greenRgb.toHsv() - assertEquals(HSV(120f, 1f, 1f), result) - assertEquals(greenRgb, result.toRgb()) - } - -}