Skip to content

Commit

Permalink
feat: init basic configure editor
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Apr 15, 2023
1 parent 9d12a5f commit 2ee854c
Show file tree
Hide file tree
Showing 9 changed files with 124 additions and 23 deletions.
20 changes: 0 additions & 20 deletions src/main/kotlin/cc/unitmesh/devti/command/DtSettingsEditor.kt

This file was deleted.

@@ -1,4 +1,4 @@
package cc.unitmesh.devti.command
package cc.unitmesh.devti.runconfig

class DtAiConfigure(
val githubToken: String,
Expand Down
@@ -1,5 +1,6 @@
package cc.unitmesh.devti.command
package cc.unitmesh.devti.runconfig

import cc.unitmesh.devti.runconfig.ui.DtSettingsEditor
import com.intellij.execution.Executor
import com.intellij.execution.configurations.ConfigurationFactory
import com.intellij.execution.configurations.LocatableConfigurationBase
Expand Down
@@ -0,0 +1,34 @@
package cc.unitmesh.devti.runconfig

import cc.unitmesh.devti.DevtiIcons
import com.intellij.execution.configurations.ConfigurationFactory
import com.intellij.execution.configurations.ConfigurationTypeBase
import com.intellij.execution.configurations.ConfigurationTypeUtil
import com.intellij.execution.configurations.RunConfiguration
import com.intellij.openapi.project.Project

class DtCommandConfigurationType :
ConfigurationTypeBase("DtCommandConfigurationType", "DevTi", "DevTi generator", DevtiIcons.STORY) {
val factory: ConfigurationFactory get() = configurationFactories.single()

init {
addFactory(DtConfigurationFactory(this))
}

companion object {
fun getInstance(): DtCommandConfigurationType =

Check warning on line 19 in src/main/kotlin/cc/unitmesh/devti/runconfig/DtCommandConfigurationType.kt

View workflow job for this annotation

GitHub Actions / Build

Unused symbol

Function "getInstance" is never used
ConfigurationTypeUtil.findConfigurationType(DtCommandConfigurationType::class.java)
}
}

class DtConfigurationFactory(type: DtCommandConfigurationType) : ConfigurationFactory(type) {
override fun getId(): String = ID

override fun createTemplateConfiguration(project: Project): RunConfiguration {
return DtCommandConfiguration(project, "DevTi", this)
}

companion object {
const val ID: String = "DevTi Gen"
}
}
@@ -1,4 +1,4 @@
package cc.unitmesh.devti.command
package cc.unitmesh.devti.runconfig

import com.intellij.execution.ExecutionResult
import com.intellij.execution.Executor
Expand Down
@@ -0,0 +1,22 @@
package cc.unitmesh.devti.runconfig.ui

import com.intellij.codeInsight.completion.CompletionResultSet
import com.intellij.codeInsight.completion.InsertionContext
import com.intellij.util.TextFieldCompletionProvider
import com.intellij.codeInsight.lookup.LookupElementBuilder
import com.intellij.openapi.editor.EditorModificationUtil

class DtCommandCompletionProvider : TextFieldCompletionProvider() {
override fun addCompletionVariants(text: String, offset: Int, prefix: String, result: CompletionResultSet) {
val element = LookupElementBuilder.create("devti auto").withInsertHandler { ctx, _ ->
ctx.addSuffix(" ")
}

result.addElement(element)
}
}

fun InsertionContext.addSuffix(suffix: String) {
document.insertString(selectionEndOffset, suffix)
EditorModificationUtil.moveCaretRelatively(editor, suffix.length)
}
@@ -0,0 +1,32 @@
package cc.unitmesh.devti.runconfig.ui

import com.intellij.openapi.project.Project
import com.intellij.ui.TextAccessor
import com.intellij.util.TextFieldCompletionProvider
import com.intellij.util.textCompletion.TextFieldWithCompletion
import java.awt.BorderLayout
import javax.swing.JPanel
class DtCommandLineEditor(private val project: Project, private val completionProvider: TextFieldCompletionProvider) :
JPanel(BorderLayout()), TextAccessor {
private val textField = createTextField("")

init {
add(textField, BorderLayout.CENTER)
}

override fun setText(text: String?) {
textField.setText(text)
}

override fun getText(): String = textField.text

private fun createTextField(value: String): TextFieldWithCompletion =
TextFieldWithCompletion(
project,
completionProvider,
value,
true,
false,
false
)
}
29 changes: 29 additions & 0 deletions src/main/kotlin/cc/unitmesh/devti/runconfig/ui/DtSettingsEditor.kt
@@ -0,0 +1,29 @@
package cc.unitmesh.devti.runconfig.ui

import cc.unitmesh.devti.runconfig.DtCommandConfiguration
import com.intellij.openapi.options.SettingsEditor
import com.intellij.openapi.project.Project
import com.intellij.ui.dsl.builder.panel
import com.intellij.ui.dsl.gridLayout.HorizontalAlign
import javax.swing.JComponent

class DtSettingsEditor(project: Project) : SettingsEditor<DtCommandConfiguration>() {
private val command: DtCommandLineEditor = DtCommandLineEditor(project, DtCommandCompletionProvider());

override fun resetEditorFrom(configuration: DtCommandConfiguration) {
// command.text = configuration
}

override fun applyEditorTo(configuration: DtCommandConfiguration) {
// configuration.command = command.text
}

@Suppress("UnstableApiUsage")
override fun createEditor(): JComponent = panel {
row("DevTi:") {
cell(command)
.horizontalAlign(HorizontalAlign.FILL)
.resizableColumn()
}
}
}
3 changes: 3 additions & 0 deletions src/main/resources/META-INF/plugin.xml
Expand Up @@ -14,6 +14,9 @@

<runLineMarkerContributor language="JAVA"
implementationClass="cc.unitmesh.devti.language.DisplayStoryLineMarkerContributor"/>


<configurationType implementation="cc.unitmesh.devti.runconfig.DtCommandConfigurationType"/>
</extensions>

<applicationListeners>
Expand Down

0 comments on commit 2ee854c

Please sign in to comment.