Skip to content

Commit 90a638d

Browse files
committed
refactor(devplanner): optimize UI layout and code structure #352
- Adjust UI components' borders and spacing for better visual consistency - Refactor some code for improved readability and maintainability - Update Chinese translation for a more natural reading experience
1 parent 3b5cd17 commit 90a638d

File tree

3 files changed

+34
-36
lines changed

3 files changed

+34
-36
lines changed

core/src/main/kotlin/cc/unitmesh/devti/gui/planner/AutoDevPlannerToolWindow.kt

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class AutoDevPlannerToolWindow(val project: Project) : SimpleToolWindowPanel(tru
3131

3232
private var markdownEditor: MarkdownLanguageField? = null
3333
private val contentPanel = JBUI.Panels.simplePanel()
34-
34+
3535
private var currentView: PlannerView? = null
3636
private var currentCallback: ((String) -> Unit)? = null
3737
private val plannerResultSummary = PlannerResultSummary(project, mutableListOf())
@@ -43,10 +43,10 @@ class AutoDevPlannerToolWindow(val project: Project) : SimpleToolWindowPanel(tru
4343
ActionUtil.getAction("AutoDevPlanner.ToolWindow.TitleActions") as ActionGroup,
4444
true
4545
)
46-
46+
4747
val toolbarPanel = JPanel(FlowLayout(FlowLayout.RIGHT))
4848
toolbarPanel.add(toolbar.component)
49-
49+
5050
add(toolbarPanel, BorderLayout.NORTH)
5151
add(contentPanel, BorderLayout.CENTER)
5252

@@ -58,14 +58,14 @@ class AutoDevPlannerToolWindow(val project: Project) : SimpleToolWindowPanel(tru
5858

5959
connection.subscribe(PlanUpdateListener.Companion.TOPIC, object : PlanUpdateListener {
6060
override fun onPlanUpdate(items: MutableList<AgentTaskEntry>) {
61-
if (currentView is PlanSketchView) {
62-
runInEdt {
63-
planLangSketch.updatePlan(items)
64-
contentPanel.components.find { it is LoadingPanel }?.let {
65-
contentPanel.remove(it)
66-
contentPanel.revalidate()
67-
contentPanel.repaint()
68-
}
61+
switchToPlanView()
62+
63+
runInEdt {
64+
planLangSketch.updatePlan(items)
65+
contentPanel.components.find { it is LoadingPanel }?.let {
66+
contentPanel.remove(it)
67+
contentPanel.revalidate()
68+
contentPanel.repaint()
6969
}
7070
}
7171
}
@@ -92,7 +92,7 @@ class AutoDevPlannerToolWindow(val project: Project) : SimpleToolWindowPanel(tru
9292

9393
currentView = view
9494
view.initialize(this)
95-
95+
9696
contentPanel.revalidate()
9797
contentPanel.repaint()
9898
}
@@ -118,16 +118,16 @@ class AutoDevPlannerToolWindow(val project: Project) : SimpleToolWindowPanel(tru
118118
override fun dispose() {
119119
markdownEditor = null
120120
}
121-
121+
122122
interface PlannerView {
123123
val viewType: PlannerViewType
124124
fun initialize(window: AutoDevPlannerToolWindow)
125125
}
126-
126+
127127
enum class PlannerViewType {
128128
PLAN, EDITOR, ISSUE_INPUT, LOADING
129129
}
130-
130+
131131
inner class PlanSketchView : PlannerView {
132132
override val viewType = PlannerViewType.PLAN
133133
override fun initialize(window: AutoDevPlannerToolWindow) {
@@ -138,12 +138,12 @@ class AutoDevPlannerToolWindow(val project: Project) : SimpleToolWindowPanel(tru
138138
.resizableColumn()
139139
}
140140
}
141-
141+
142142
contentPanel.add(planPanel, BorderLayout.CENTER)
143143
contentPanel.add(plannerResultSummary, BorderLayout.SOUTH)
144144
}
145145
}
146-
146+
147147
inner class EditPlanView : PlannerView {
148148
override val viewType = PlannerViewType.EDITOR
149149
override fun initialize(window: AutoDevPlannerToolWindow) {
@@ -165,11 +165,11 @@ class AutoDevPlannerToolWindow(val project: Project) : SimpleToolWindowPanel(tru
165165
contentPanel.add(editPlanViewPanel, BorderLayout.CENTER)
166166
}
167167
}
168-
168+
169169
inner class IssueInputView : PlannerView {
170170
override val viewType = PlannerViewType.ISSUE_INPUT
171171
private lateinit var viewPanel: IssueInputViewPanel
172-
172+
173173
override fun initialize(window: AutoDevPlannerToolWindow) {
174174
viewPanel = IssueInputViewPanel(
175175
project,
@@ -182,13 +182,13 @@ class AutoDevPlannerToolWindow(val project: Project) : SimpleToolWindowPanel(tru
182182
switchToPlanView()
183183
}
184184
)
185-
185+
186186
contentPanel.add(viewPanel, BorderLayout.CENTER)
187187
viewPanel.setText("")
188188
viewPanel.requestTextAreaFocus()
189189
}
190190
}
191-
191+
192192
inner class LoadingView : PlannerView {
193193
override val viewType = PlannerViewType.LOADING
194194
override fun initialize(window: AutoDevPlannerToolWindow) {
@@ -199,7 +199,7 @@ class AutoDevPlannerToolWindow(val project: Project) : SimpleToolWindowPanel(tru
199199
.resizableColumn()
200200
}
201201
}
202-
202+
203203
contentPanel.add(planPanel, BorderLayout.CENTER)
204204
contentPanel.add(LoadingPanel(project), BorderLayout.NORTH)
205205
}

core/src/main/kotlin/cc/unitmesh/devti/gui/planner/PlannerResultSummary.kt

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -70,25 +70,23 @@ class PlannerResultSummary(
7070
}
7171

7272
init {
73-
background = JBUI.CurrentTheme.ToolWindow.background()
74-
border = JBUI.Borders.empty(10)
73+
border = JBUI.Borders.customLine(UIUtil.getBoundsColor(), 1, 0, 0, 0)
7574

7675
val titlePanel = JPanel(BorderLayout()).apply {
77-
isOpaque = false
78-
border = JBUI.Borders.emptyBottom(10)
76+
border = JBUI.Borders.compound(
77+
JBUI.Borders.customLine(UIUtil.getBoundsColor(), 0, 0, 1, 0),
78+
JBUI.Borders.empty(4)
79+
)
7980

8081
val titleLabelPanel = JPanel(BorderLayout()).apply {
81-
isOpaque = false
8282
add(JBLabel(AutoDevBundle.message("planner.change.list.title")).apply {
8383
foreground = UIUtil.getLabelForeground()
8484
font = JBUI.Fonts.label().asBold()
8585
}, BorderLayout.WEST)
8686
add(statsLabel, BorderLayout.EAST)
8787
}
8888

89-
val actionsPanel = JPanel(FlowLayout(FlowLayout.RIGHT, 5, 0)).apply {
90-
isOpaque = false
91-
89+
val actionsPanel = JPanel(FlowLayout(FlowLayout.RIGHT, 4, 0)).apply {
9290
val discardAllButton = HyperlinkLabel(AutoDevBundle.message("planner.action.discard.all")).apply {
9391
icon = AllIcons.Actions.Cancel
9492
addHyperlinkListener(object : HyperlinkListener {
@@ -139,13 +137,13 @@ class PlannerResultSummary(
139137
changesPanel.removeAll()
140138

141139
if (changes.isEmpty()) {
142-
statsLabel.text = AutoDevBundle.message("planner.stats.no.changes")
140+
statsLabel.text = " - " + AutoDevBundle.message("planner.stats.no.changes")
143141
changesPanel.add(JBLabel(AutoDevBundle.message("planner.no.code.changes")).apply {
144142
foreground = UIUtil.getLabelDisabledForeground()
145-
border = JBUI.Borders.empty(10)
143+
border = JBUI.Borders.empty(8)
146144
})
147145
} else {
148-
statsLabel.text = AutoDevBundle.message("planner.stats.changes.count", changes.size)
146+
statsLabel.text = " - " + AutoDevBundle.message("planner.stats.changes.count", changes.size)
149147
changes.forEach { change ->
150148
val filePath = change.virtualFile?.relativePath(project) ?: "Unknown"
151149
val fileName = filePath.substringAfterLast('/')
@@ -167,7 +165,7 @@ class PlannerResultSummary(
167165
return JPanel().apply {
168166
isOpaque = true
169167
background = UIUtil.getListBackground()
170-
border = JBUI.Borders.empty(5, 8)
168+
border = JBUI.Borders.empty(4, 8)
171169
layout = BoxLayout(this, BoxLayout.X_AXIS)
172170

173171
val changeIcon = when (change.type) {
@@ -190,7 +188,7 @@ class PlannerResultSummary(
190188
}
191189

192190
add(fileLabel)
193-
add(Box.createHorizontalStrut(5))
191+
add(Box.createHorizontalStrut(4))
194192

195193
val pathLabel = JBLabel(filePath).apply {
196194
foreground = UIUtil.getLabelDisabledForeground()

core/src/main/resources/messages/AutoDevBundle_zh.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ planner.stats.changes.empty=没有变更
187187
planner.change.list.title=变更列表
188188
planner.action.discard.all=丢弃全部
189189
planner.action.accept.all=接受全部
190-
planner.stats.no.changes= 没有变更
190+
planner.stats.no.changes=没有变更
191191
planner.no.code.changes=没有代码变更
192192
planner.stats.changes.count= (共 {0} 个文件变更)
193193
planner.action.view.changes=查看变更

0 commit comments

Comments
 (0)