Skip to content

Commit 655b14b

Browse files
committed
feat(gui): add recently opened files to input reference
- Update FileListViewModel to return added files from addRecentlyOpenedFiles - Modify AutoDevInputSection to pass input to InputFileToolbar- Enhance InputFileToolbar to append added files as references in the input
1 parent 8502347 commit 655b14b

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

core/src/main/kotlin/cc/unitmesh/devti/gui/chat/ui/AutoDevInputSection.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import cc.unitmesh.devti.provider.RelatedClassesProvider
1111
import cc.unitmesh.devti.settings.AutoDevSettingsState
1212
import cc.unitmesh.devti.settings.customize.customizeSetting
1313
import com.intellij.codeInsight.lookup.LookupManagerListener
14-
import com.intellij.icons.AllIcons
1514
import com.intellij.ide.IdeTooltip
1615
import com.intellij.ide.IdeTooltipManager
1716
import com.intellij.openapi.Disposable
@@ -32,7 +31,6 @@ import com.intellij.openapi.ui.ComboBox
3231
import com.intellij.openapi.ui.ComponentValidator
3332
import com.intellij.openapi.ui.ValidationInfo
3433
import com.intellij.openapi.ui.popup.Balloon.Position
35-
import com.intellij.openapi.vfs.VirtualFile
3634
import com.intellij.openapi.wm.IdeFocusManager
3735
import com.intellij.openapi.wm.impl.InternalDecorator
3836
import com.intellij.psi.PsiElement
@@ -171,7 +169,7 @@ class AutoDevInputSection(private val project: Project, val disposable: Disposab
171169
scrollPane.verticalScrollBarPolicy = JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED
172170
scrollPane.horizontalScrollBarPolicy = JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED
173171

174-
val toolbar = InputFileToolbar.createToolbar(project, fileListViewModel)
172+
val toolbar = InputFileToolbar.createToolbar(project, fileListViewModel, input)
175173

176174
val headerPanel = JPanel(BorderLayout())
177175
headerPanel.add(toolbar, BorderLayout.NORTH)

core/src/main/kotlin/cc/unitmesh/devti/gui/chat/ui/InputFileToolbar.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cc.unitmesh.devti.gui.chat.ui
22

33
import cc.unitmesh.devti.AutoDevBundle
44
import cc.unitmesh.devti.gui.chat.ui.viewmodel.FileListViewModel
5+
import com.intellij.openapi.fileEditor.FileEditorManager
56
import com.intellij.openapi.project.Project
67
import com.intellij.ui.components.JBLabel
78
import com.intellij.ui.components.labels.LinkLabel
@@ -11,7 +12,7 @@ import javax.swing.Box
1112
import javax.swing.JToolBar
1213

1314
object InputFileToolbar {
14-
fun createToolbar(project: Project, viewModel: FileListViewModel): JToolBar {
15+
fun createToolbar(project: Project, viewModel: FileListViewModel, input: AutoDevInput): JToolBar {
1516
val toolbar = JToolBar()
1617
toolbar.isFloatable = false
1718

@@ -23,7 +24,15 @@ object InputFileToolbar {
2324
toolbar.add(Box.createHorizontalGlue())
2425

2526
val recentFiles = LinkLabel(AutoDevBundle.message("chat.panel.add.openFiles"), null) { _: LinkLabel<Unit>, _: Unit? ->
26-
viewModel.addRecentlyOpenedFiles()
27+
val addedFiles = viewModel.addRecentlyOpenedFiles()
28+
val fileReferences = StringBuilder()
29+
addedFiles.forEach { vfile ->
30+
fileReferences.append("\n/file:${vfile.presentablePath}")
31+
}
32+
33+
if (fileReferences.isNotEmpty()) {
34+
input.appendText(fileReferences.toString())
35+
}
2736
}
2837

2938
recentFiles.mediumFontFunction()

core/src/main/kotlin/cc/unitmesh/devti/gui/chat/ui/viewmodel/FileListViewModel.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,16 @@ class FileListViewModel(private val project: Project) : Disposable {
8888
.toMutableList()
8989
}
9090

91-
fun addRecentlyOpenedFiles() {
91+
fun addRecentlyOpenedFiles(): List<FilePresentation> {
9292
val files = getRecentlyOpenedFiles()
9393
files.forEach { file ->
9494
if (listModel.elements().asSequence().none { it.virtualFile == file.virtualFile }) {
9595
listModel.addElement(file)
9696
listeners.forEach { it.onFileAdded(file) }
9797
}
9898
}
99+
100+
return files
99101
}
100102

101103
/**

0 commit comments

Comments
 (0)