Skip to content

Commit 231fbbe

Browse files
committed
refactor: extract effectiveEngine logic into reusable method and fix minor typos in UI labels and logging statements
1 parent d8343cd commit 231fbbe

4 files changed

Lines changed: 18 additions & 20 deletions

File tree

src/main/kotlin/com/ashotn/opencode/companion/settings/OpenCodeSettingsConfigurable.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class OpenCodeSettingsConfigurable(private val project: Project) :
6060
}
6161
buttonsGroup("Terminal engine:") {
6262
row {
63-
radioButton("Classic (Recomended)", TerminalEngine.CLASSIC)
63+
radioButton("Classic (Recommended)", TerminalEngine.CLASSIC)
6464
.comment("Legacy JediTerm widget. Works on all supported IDE versions.")
6565
}
6666
row {

src/main/kotlin/com/ashotn/opencode/companion/terminal/ClassicTuiPanel.kt

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class ClassicTuiPanel(
9696
}
9797

9898
override fun focusTerminal() {
99-
terminalWidget?.requestFocus()
99+
terminalWidget?.component?.requestFocusInWindow()
100100
}
101101

102102
override val isStarted: Boolean get() = terminalWidget != null
@@ -115,14 +115,7 @@ class ClassicTuiPanel(
115115
Disposer.dispose(widget)
116116
}
117117

118-
override fun dispose() {
119-
val widget = terminalWidget ?: return
120-
terminalWidget = null
121-
remove(widget.component)
122-
revalidate()
123-
repaint()
124-
Disposer.dispose(widget)
125-
}
118+
override fun dispose() = tearDown()
126119

127120
companion object {
128121
private val logger = Logger.getInstance(ClassicTuiPanel::class.java)

src/main/kotlin/com/ashotn/opencode/companion/terminal/ReworkedTuiPanel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ class ReworkedTuiPanel(
117117
logger.warn("Reworked terminal classes unavailable", e)
118118
// Panel stays empty.
119119
} catch (e: Exception) {
120-
logger.warn("Failed to start classic terminal", e)
120+
logger.warn("Failed to start reworked terminal", e)
121121
// Panel stays empty.
122122
}
123123
}

src/main/kotlin/com/ashotn/opencode/companion/toolwindow/OpenCodeToolWindowPanel.kt

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class OpenCodeToolWindowPanel(private val project: Project) : JPanel(BorderLayou
5757
private val outerCardPanel = JPanel(outerCardLayout)
5858
private val pendingFilesPanel = PendingFilesPanel(project, this)
5959
private var tuiPanel: TuiPanel = createTuiPanel()
60-
private var activeTuiEngine: TerminalEngine = OpenCodeSettings.getInstance(project).terminalEngine
60+
private var activeTuiEngine: TerminalEngine = effectiveEngine(OpenCodeSettings.getInstance(project).terminalEngine)
6161
private val syncScheduled = AtomicBoolean(false)
6262
private val plugin = OpenCodePlugin.getInstance(project)
6363
private val serverStateListener = ServerStateListener { requestSyncCard() }
@@ -177,12 +177,7 @@ class OpenCodeToolWindowPanel(private val project: Project) : JPanel(BorderLayou
177177
* it into the split pane — all without requiring an IDE restart.
178178
*/
179179
private fun swapTuiPanelIfEngineChanged() {
180-
val requestedEngine = OpenCodeSettings.getInstance(project).terminalEngine
181-
val effectiveEngine = if (requestedEngine == TerminalEngine.REWORKED && !BuildUtils.isEmbeddedTerminalSupported) {
182-
TerminalEngine.CLASSIC
183-
} else {
184-
requestedEngine
185-
}
180+
val effectiveEngine = effectiveEngine(OpenCodeSettings.getInstance(project).terminalEngine)
186181
if (effectiveEngine == activeTuiEngine) return
187182

188183
// Stop and dispose the old panel.
@@ -224,14 +219,24 @@ class OpenCodeToolWindowPanel(private val project: Project) : JPanel(BorderLayou
224219
*/
225220
private fun createTuiPanel(): TuiPanel {
226221
val settings = OpenCodeSettings.getInstance(project)
227-
val engine = settings.terminalEngine
228-
return if (engine == TerminalEngine.REWORKED && BuildUtils.isEmbeddedTerminalSupported) {
222+
return if (effectiveEngine(settings.terminalEngine) == TerminalEngine.REWORKED) {
229223
ReworkedTuiPanel(project, this, onTerminated = { requestSyncCard() })
230224
} else {
231225
ClassicTuiPanel(project, this, onTerminated = { requestSyncCard() })
232226
}
233227
}
234228

229+
/**
230+
* Resolves the effective [TerminalEngine] to use, falling back to [TerminalEngine.CLASSIC]
231+
* when [TerminalEngine.REWORKED] is requested but the IDE version does not support it.
232+
*/
233+
private fun effectiveEngine(requested: TerminalEngine): TerminalEngine =
234+
if (requested == TerminalEngine.REWORKED && !BuildUtils.isEmbeddedTerminalSupported) {
235+
TerminalEngine.CLASSIC
236+
} else {
237+
requested
238+
}
239+
235240
private var disposed = false
236241

237242
override fun dispose() {

0 commit comments

Comments
 (0)