diff --git a/.changeset/jetbrains-todo-padding.md b/.changeset/jetbrains-todo-padding.md new file mode 100644 index 0000000000..1a3672774d --- /dev/null +++ b/.changeset/jetbrains-todo-padding.md @@ -0,0 +1,5 @@ +--- +"@kilocode/kilo-jetbrains": patch +--- + +Increase JetBrains todo checklist inner padding. diff --git a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/todo/TodoListPanel.kt b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/todo/TodoListPanel.kt index 62da49a8d9..7005a6eda0 100644 --- a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/todo/TodoListPanel.kt +++ b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/todo/TodoListPanel.kt @@ -4,26 +4,25 @@ import ai.kilocode.client.plugin.KiloBundle import ai.kilocode.client.session.ui.style.SessionEditorStyle import ai.kilocode.client.session.ui.style.SessionUiStyle import ai.kilocode.client.ui.UiStyle +import ai.kilocode.client.ui.layout.Stack +import ai.kilocode.client.ui.layout.StackAxis import ai.kilocode.rpc.dto.TodoDto import com.intellij.ui.components.JBLabel import com.intellij.util.ui.JBUI import com.intellij.xml.util.XmlStringUtil import java.awt.BasicStroke -import java.awt.BorderLayout import java.awt.Color import java.awt.Component import java.awt.Graphics import java.awt.Graphics2D import java.awt.RenderingHints import javax.swing.Icon -import javax.swing.BoxLayout -import javax.swing.JPanel class TodoListPanel( todos: List = emptyList(), private var before: Int = 0, private var after: Int = 0, -) : JPanel() { +) : Stack(StackAxis.VERTICAL) { private var items = todos private var style = SessionEditorStyle.current() @@ -32,11 +31,7 @@ class TodoListPanel( private val later = JBLabel() init { - layout = BoxLayout(this, BoxLayout.Y_AXIS) - isOpaque = false - border = JBUI.Borders.empty(UiStyle.Gap.sm(), UiStyle.Gap.md()) - add(prior) - add(later) + border = JBUI.Borders.empty(UiStyle.Gap.lg(), UiStyle.Gap.pad()) applyStyle(style) sync() } @@ -86,13 +81,13 @@ class TodoListPanel( private fun sync() { removeAll() rows.clear() - add(prior) + next(prior) items.forEach { todo -> val row = Row(todo, style) rows.add(row) - add(row.panel) + next(row.panel) } - add(later) + next(later) syncHidden() } @@ -122,11 +117,10 @@ class TodoListPanel( icon = this@Row.icon } val text = JBLabel() - val panel = JPanel(BorderLayout(UiStyle.Gap.sm(), 0)).apply { - isOpaque = false + val panel = Stack.horizontal(UiStyle.Gap.sm()).apply { border = JBUI.Borders.empty(UiStyle.Gap.xs(), 0) - add(check, BorderLayout.WEST) - add(text, BorderLayout.CENTER) + next(check) + next(text) } init { diff --git a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/todo/TodoWriteView.kt b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/todo/TodoWriteView.kt index 131bbc560a..ef7483eeef 100644 --- a/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/todo/TodoWriteView.kt +++ b/packages/kilo-jetbrains/frontend/src/main/kotlin/ai/kilocode/client/session/views/todo/TodoWriteView.kt @@ -35,7 +35,7 @@ class TodoWriteView(tool: Tool, private val parts: TodoParts = todoParts()) : 0, 0, ), - JBUI.Borders.empty(UiStyle.Gap.sm(), UiStyle.Gap.md()), + JBUI.Borders.empty(UiStyle.Gap.lg(), UiStyle.Gap.pad()), ) applyStyle(style) sync() diff --git a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/views/todo/TodoWriteViewTest.kt b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/views/todo/TodoWriteViewTest.kt index c4b56fe207..b4af0eba89 100644 --- a/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/views/todo/TodoWriteViewTest.kt +++ b/packages/kilo-jetbrains/frontend/src/test/kotlin/ai/kilocode/client/session/views/todo/TodoWriteViewTest.kt @@ -86,6 +86,19 @@ class TodoWriteViewTest : BasePlatformTestCase() { assertEquals(UiStyle.Gap.md(), centerGap(view)) } + fun `test todo body uses next standard inner padding`() { + val view = TodoWriteView(tool("todowrite", ToolExecState.COMPLETED).also { + it.todos = listOf(TodoDto("Next", "pending", "medium")) + }) + val body = view.components.filterIsInstance().single() + val ins = body.border.getBorderInsets(body) + + assertEquals(UiStyle.Gap.lg() + SessionUiStyle.View.Outline.width(), ins.top) + assertEquals(UiStyle.Gap.pad(), ins.left) + assertEquals(UiStyle.Gap.lg(), ins.bottom) + assertEquals(UiStyle.Gap.pad(), ins.right) + } + fun `test compact view renders hidden labels and visible rows`() { val view = TodoWriteView(tool("todowrite", ToolExecState.COMPLETED).also { it.todos = listOf(