Skip to content

Commit 9017574

Browse files
committed
refactor(AutoDevInputSection): reorganize file workspace components
- Rename SelectorsManager to ModelSelectorsManager for clarity - Move FileWorkspaceManager to dedicated file package - Restructure file workspace functionality into separate module
1 parent 41be96c commit 9017574

File tree

3 files changed

+33
-35
lines changed

3 files changed

+33
-35
lines changed

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

Lines changed: 8 additions & 7 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.agent.custom.model.CustomAgentConfig
44
import cc.unitmesh.devti.gui.AutoDevCoolBorder
5+
import cc.unitmesh.devti.gui.chat.ui.file.FileWorkspaceManager
56
import com.intellij.ide.IdeTooltip
67
import com.intellij.ide.IdeTooltipManager
78
import com.intellij.openapi.Disposable
@@ -34,7 +35,7 @@ class AutoDevInputSection(
3435

3536
// Manager components
3637
private val inputControlsManager = InputControlsManager(project, disposable, editorListeners)
37-
private val selectorsManager = SelectorsManager(project, showAgent)
38+
private val modelSelectorsManager = ModelSelectorsManager(project, showAgent)
3839
private val fileWorkspaceManager = FileWorkspaceManager(project, disposable)
3940

4041
// UI panels
@@ -60,7 +61,7 @@ class AutoDevInputSection(
6061
init {
6162
// Initialize all managers
6263
inputControlsManager.initialize(this)
63-
val leftPanel = selectorsManager.initialize()
64+
val leftPanel = modelSelectorsManager.initialize()
6465
val headerPanel = fileWorkspaceManager.initialize(inputControlsManager.input)
6566

6667
// Setup layout
@@ -90,7 +91,7 @@ class AutoDevInputSection(
9091
inputControlsManager.input.minimumSize = Dimension(inputControlsManager.input.minimumSize.width, 64)
9192
layoutPanel.addToLeft(leftPanel)
9293
} else {
93-
layoutPanel.addToLeft(selectorsManager.modelSelector)
94+
layoutPanel.addToLeft(modelSelectorsManager.modelSelector)
9495
}
9596

9697
layoutPanel.addToCenter(horizontalGlue)
@@ -134,14 +135,14 @@ class AutoDevInputSection(
134135
}
135136

136137
// Agent management methods
137-
fun hasSelectedAgent(): Boolean = selectorsManager.hasSelectedAgent()
138+
fun hasSelectedAgent(): Boolean = modelSelectorsManager.hasSelectedAgent()
138139

139-
fun getSelectedAgent(): CustomAgentConfig = selectorsManager.getSelectedAgent()
140+
fun getSelectedAgent(): CustomAgentConfig = modelSelectorsManager.getSelectedAgent()
140141

141-
fun selectAgent(config: CustomAgentConfig) = selectorsManager.selectAgent(config)
142+
fun selectAgent(config: CustomAgentConfig) = modelSelectorsManager.selectAgent(config)
142143

143144
fun resetAgent() {
144-
selectorsManager.resetAgent()
145+
modelSelectorsManager.resetAgent()
145146
inputControlsManager.clearText()
146147
fileWorkspaceManager.clearWorkspace()
147148
}

core/src/main/kotlin/cc/unitmesh/devti/gui/chat/ui/SelectorsManager.kt renamed to core/src/main/kotlin/cc/unitmesh/devti/gui/chat/ui/ModelSelectorsManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import javax.swing.JPanel
2020
/**
2121
* Manages model selector and agent selector components
2222
*/
23-
class SelectorsManager(
23+
class ModelSelectorsManager(
2424
private val project: Project,
2525
private val showAgent: Boolean = true
2626
) {

core/src/main/kotlin/cc/unitmesh/devti/gui/chat/ui/FileWorkspaceManager.kt renamed to core/src/main/kotlin/cc/unitmesh/devti/gui/chat/ui/file/FileWorkspaceManager.kt

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
package cc.unitmesh.devti.gui.chat.ui
1+
package cc.unitmesh.devti.gui.chat.ui.file
22

33
import cc.unitmesh.devti.completion.AutoDevInputLookupManagerListener
4-
import cc.unitmesh.devti.gui.chat.ui.file.RelatedFileListCellRenderer
5-
import cc.unitmesh.devti.gui.chat.ui.file.RelatedFileListViewModel
6-
import cc.unitmesh.devti.gui.chat.ui.file.WorkspaceFilePanel
7-
import cc.unitmesh.devti.gui.chat.ui.file.WorkspaceFileToolbar
4+
import cc.unitmesh.devti.gui.chat.ui.AutoDevInput
85
import cc.unitmesh.devti.provider.RelatedClassesProvider
96
import com.intellij.codeInsight.lookup.LookupManagerListener
107
import com.intellij.openapi.Disposable
@@ -43,30 +40,30 @@ class FileWorkspaceManager(
4340
setupElementsList()
4441
setupEditorListener()
4542
setupRelatedListener()
46-
43+
4744
// Initialize with current file
4845
val currentFile = FileEditorManager.getInstance(project).selectedFiles.firstOrNull()
4946
currentFile?.let {
5047
relatedFileListViewModel.addFileIfAbsent(currentFile, first = true)
5148
}
52-
49+
5350
return createHeaderPanel(input)
5451
}
55-
52+
5653
private fun setupElementsList() {
5754
elementsList.selectionMode = ListSelectionModel.SINGLE_SELECTION
5855
elementsList.layoutOrientation = JList.HORIZONTAL_WRAP
5956
elementsList.visibleRowCount = 2
6057
elementsList.cellRenderer = RelatedFileListCellRenderer(project)
6158
elementsList.setEmptyText("")
62-
59+
6360
elementsList.addMouseListener(object : MouseAdapter() {
6461
override fun mouseClicked(e: MouseEvent) {
6562
calculateRelativeFile(e)
6663
}
6764
})
6865
}
69-
66+
7067
private fun setupEditorListener() {
7168
project.messageBus.connect(disposable!!).subscribe(
7269
FileEditorManagerListener.FILE_EDITOR_MANAGER,
@@ -80,74 +77,74 @@ class FileWorkspaceManager(
8077
}
8178
)
8279
}
83-
80+
8481
private fun setupRelatedListener() {
8582
project.messageBus.connect(disposable!!)
8683
.subscribe(LookupManagerListener.TOPIC, AutoDevInputLookupManagerListener(project) {
8784
ApplicationManager.getApplication().invokeLater {
88-
val relatedElements = RelatedClassesProvider.provide(it.language)?.lookupIO(it)
85+
val relatedElements = RelatedClassesProvider.Companion.provide(it.language)?.lookupIO(it)
8986
updateElements(relatedElements)
9087
}
9188
})
9289
}
93-
90+
9491
private fun calculateRelativeFile(e: MouseEvent) {
9592
val list = e.source as JBList<*>
9693
val index = list.locationToIndex(e.point)
9794
if (index == -1) return
98-
95+
9996
val wrapper = relatedFileListViewModel.getListModel().getElementAt(index)
10097
val cellBounds = list.getCellBounds(index, index)
101-
98+
10299
val actionType = relatedFileListViewModel.determineFileAction(wrapper, e.point, cellBounds)
103100
val actionPerformed = relatedFileListViewModel.handleFileAction(wrapper, actionType) { vfile, relativePath ->
104101
if (relativePath != null) {
105102
getWorkspacePanel().addFileToWorkspace(vfile)
106103
ApplicationManager.getApplication().invokeLater {
107104
if (!vfile.isValid) return@invokeLater
108105
val psiFile = PsiManager.getInstance(project).findFile(vfile) ?: return@invokeLater
109-
val relatedElements = RelatedClassesProvider.provide(psiFile.language)?.lookupIO(psiFile)
106+
val relatedElements = RelatedClassesProvider.Companion.provide(psiFile.language)?.lookupIO(psiFile)
110107
updateElements(relatedElements)
111108
}
112109
}
113110
}
114-
111+
115112
if (!actionPerformed) {
116113
list.clearSelection()
117114
}
118115
}
119-
116+
120117
private fun updateElements(elements: List<PsiElement>?) {
121118
elements?.forEach { relatedFileListViewModel.addFileIfAbsent(it.containingFile.virtualFile) }
122119
}
123-
120+
124121
private fun createHeaderPanel(input: AutoDevInput): JPanel {
125122
val scrollPane = JBScrollPane(elementsList)
126123
scrollPane.verticalScrollBarPolicy = JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED
127124
scrollPane.horizontalScrollBarPolicy = JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED
128-
125+
129126
val toolbar = WorkspaceFileToolbar.createToolbar(project, relatedFileListViewModel, input)
130-
127+
131128
val headerPanel = JPanel(BorderLayout())
132129
headerPanel.add(toolbar, BorderLayout.NORTH)
133130
headerPanel.add(scrollPane, BorderLayout.CENTER)
134-
131+
135132
return headerPanel
136133
}
137-
134+
138135
// Public API methods
139136
fun renderText(): String {
140137
relatedFileListViewModel.clearAllFiles()
141138
val files = workspaceFilePanel.getAllFilesFormat()
142139
workspaceFilePanel.clear()
143140
return files
144141
}
145-
142+
146143
fun clearWorkspace() {
147144
workspaceFilePanel.clear()
148145
}
149-
146+
150147
fun getWorkspacePanel(): WorkspaceFilePanel = workspaceFilePanel
151-
148+
152149
fun getRelatedFileListViewModel(): RelatedFileListViewModel = relatedFileListViewModel
153-
}
150+
}

0 commit comments

Comments
 (0)