From 4ff25fcf705ec900494153e6ca6812b978e2415f Mon Sep 17 00:00:00 2001 From: Roman Sedaikin Date: Fri, 22 Jan 2021 16:40:31 +0300 Subject: [PATCH 1/2] TextFields exceptions reproducer --- .../src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt index 198e5fe8bb..764ce9bca9 100755 --- a/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt +++ b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt @@ -51,6 +51,7 @@ class ComposeDemoAction : DumbAwareAction() { ) { Buttons() Loaders() + TextInputs() Toggles() } Box( From cc30d963d86551570fc24b17f52e41f273db87ba Mon Sep 17 00:00:00 2001 From: Roman Sedaikin Date: Fri, 22 Jan 2021 17:55:31 +0300 Subject: [PATCH 2/2] Applied theme to widgets. --- .../jetbrains/compose/ComposeDemoAction.kt | 33 ++++++++----- .../com/jetbrains/compose/theme/Color.kt | 9 ++++ .../com/jetbrains/compose/theme/Shape.kt | 11 +++++ .../com/jetbrains/compose/theme/Theme.kt | 47 +++++++++++++++++++ .../com/jetbrains/compose/theme/Type.kt | 43 +++++++++++++++++ .../compose/widgets/LazyScrollable.kt | 21 +++++---- .../jetbrains/compose/widgets/TextInputs.kt | 6 ++- 7 files changed, 147 insertions(+), 23 deletions(-) create mode 100644 examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Color.kt create mode 100644 examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Shape.kt create mode 100644 examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Theme.kt create mode 100644 examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Type.kt diff --git a/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt index 764ce9bca9..540b3ce8ad 100755 --- a/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt +++ b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/ComposeDemoAction.kt @@ -5,6 +5,8 @@ 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.unit.IntSize import com.intellij.openapi.actionSystem.AnActionEvent @@ -12,6 +14,7 @@ import com.intellij.openapi.project.DumbAwareAction import com.intellij.openapi.project.Project import com.intellij.openapi.ui.DialogWrapper import com.intellij.ui.layout.panel +import com.jetbrains.compose.theme.WidgetTheme import com.jetbrains.compose.widgets.Buttons import com.jetbrains.compose.widgets.LazyScrollable import com.jetbrains.compose.widgets.Loaders @@ -45,19 +48,23 @@ class ComposeDemoAction : DumbAwareAction() { panel = this, preferredSize = IntSize(800, 600) ) { - Row { - Column( - modifier = Modifier.fillMaxHeight().weight(1f) - ) { - Buttons() - Loaders() - TextInputs() - Toggles() - } - Box( - modifier = Modifier.fillMaxHeight().weight(1f) - ) { - LazyScrollable() + 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/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Color.kt b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Color.kt new file mode 100644 index 0000000000..9ed4581b85 --- /dev/null +++ b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Color.kt @@ -0,0 +1,9 @@ +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/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Shape.kt b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Shape.kt new file mode 100644 index 0000000000..3ac8795fc7 --- /dev/null +++ b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Shape.kt @@ -0,0 +1,11 @@ +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/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Theme.kt b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Theme.kt new file mode 100644 index 0000000000..150352193a --- /dev/null +++ b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Theme.kt @@ -0,0 +1,47 @@ +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 + +private val DarkGreenColorPalette = darkColors( + primary = green200, + primaryVariant = green700, + secondary = teal200, + background = Color.Black, + surface = Color(74, 74, 74), + onPrimary = Color.Black, + onSecondary = Color.White, + onBackground = Color.White, + onSurface = Color.White, + error = Color.Red, +) + +private val LightGreenColorPalette = lightColors( + primary = green500, + primaryVariant = green700, + secondary = teal200, + background = Color.White, + surface = Color.White, + onPrimary = Color.White, + onSecondary = Color.Black, + onBackground = Color.Black, + onSurface = Color.Black +) + +@Composable +fun WidgetTheme( + darkTheme: Boolean = false, + content: @Composable() () -> Unit, +) { + val colors = if (darkTheme) DarkGreenColorPalette else LightGreenColorPalette + + MaterialTheme( + colors = colors, + typography = typography, + shapes = shapes, + content = content + ) +} \ No newline at end of file diff --git a/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Type.kt b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Type.kt new file mode 100644 index 0000000000..4bc429afa8 --- /dev/null +++ b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/theme/Type.kt @@ -0,0 +1,43 @@ +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/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/widgets/LazyScrollable.kt b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/widgets/LazyScrollable.kt index 6e50b519fc..320b86ef49 100755 --- a/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/widgets/LazyScrollable.kt +++ b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/widgets/LazyScrollable.kt @@ -13,9 +13,11 @@ 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 @@ -29,7 +31,6 @@ fun LazyScrollable() { DesktopTheme { Box( modifier = Modifier.fillMaxSize() - .background(color = Color(180, 180, 180)) .padding(10.dp) ) { @@ -57,13 +58,17 @@ fun LazyScrollable() { @Composable private fun TextBox(text: String = "Item") { - Box( - modifier = Modifier.height(32.dp) - .fillMaxWidth() - .background(color = Color(0, 0, 0, 20)) - .padding(start = 10.dp), - contentAlignment = Alignment.CenterStart + Surface( + color = Color(135, 135, 135, 40), + shape = RoundedCornerShape(4.dp) ) { - Text(text = text) + 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/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/widgets/TextInputs.kt b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/widgets/TextInputs.kt index 3d2397a08a..5ca7a9aad6 100755 --- a/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/widgets/TextInputs.kt +++ b/examples/intelliJPlugin/src/main/kotlin/com/jetbrains/compose/widgets/TextInputs.kt @@ -16,6 +16,8 @@ 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 @@ -26,21 +28,21 @@ fun TextInputs() { var name by remember { mutableStateOf(TextFieldValue("")) } var password by remember { mutableStateOf(TextFieldValue("")) } - // TextInputs() // TODO: causes exceptions on Windows OS 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") } ) - // TextInputs() // TODO: causes exceptions on Windows OS 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