Show filename template configuration as table

This commit is contained in:
Matthias Gugel 2020-12-13 09:47:07 +01:00
parent f0a683a6dc
commit 26e7adbfae
6 changed files with 74 additions and 44 deletions

View File

@ -25,8 +25,12 @@ class InitializeFilenameTemplateActivity : StartupActivity {
}
val anchorId = "NewFile"
val action = CreateFileWithFilenameTemplateAction(settings.text, settings.description, settings.template)
val actionId = "FilenameTemplate.${settings.text}"
val action = CreateFileWithFilenameTemplateAction(
settings.filenameTemplate.text,
settings.filenameTemplate.description,
settings.filenameTemplate.template
)
val actionId = "FilenameTemplate.${settings.filenameTemplate.text}"
actionManager.registerAction(actionId, action)
newGroup.addAction(action, Constraints(Anchor.AFTER, anchorId))
}

View File

@ -21,25 +21,25 @@ class FilenameTemplateConfigurable : Configurable {
override fun isModified(): Boolean {
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
return component.text != settings.text ||
component.description != settings.description ||
component.template != settings.template
return component.filenameTemplateTable.getValueAt(0, 0) != settings.filenameTemplate.text ||
component.filenameTemplateTable.getValueAt(0, 1) != settings.filenameTemplate.description ||
component.filenameTemplateTable.getValueAt(0, 2) != settings.filenameTemplate.template
}
@Throws(ConfigurationException::class)
override fun apply() {
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
settings.text = component.text
settings.description = component.description
settings.template = component.template
settings.filenameTemplate.text = component.filenameTemplateTable.getValueAt(0, 0) as String
settings.filenameTemplate.description = component.filenameTemplateTable.getValueAt(0, 1) as String
settings.filenameTemplate.template = component.filenameTemplateTable.getValueAt(0, 2) as String
InitializeFilenameTemplateActivity().initializeActions()
}
override fun reset() {
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
component.text = settings.text
component.description = settings.description
component.template = settings.template
component.filenameTemplateTable.setValueAt(settings.filenameTemplate.text, 0, 0)
component.filenameTemplateTable.setValueAt(settings.filenameTemplate.description, 0, 1)
component.filenameTemplateTable.setValueAt(settings.filenameTemplate.template, 0, 2)
}
}

View File

@ -0,0 +1,7 @@
package de.idetools.filename_template.settings
data class FilenameTemplateModel(
var text: String,
var description: String,
var template: String
)

View File

@ -1,40 +1,26 @@
package de.idetools.filename_template.settings
import com.intellij.ui.components.JBLabel
import com.intellij.ui.components.JBTextField
import com.intellij.util.ui.FormBuilder
import com.intellij.ui.components.JBScrollPane
import com.intellij.ui.layout.panel
import com.intellij.ui.table.JBTable
import javax.swing.JPanel
class FilenameTemplateSettingsComponent {
val panel: JPanel
private val textField: JBTextField = JBTextField()
private val descriptionField: JBTextField = JBTextField()
private val templateField: JBTextField = JBTextField()
var text: String
get() = textField.text
set(value) {
textField.text = value
}
var description: String
get() = descriptionField.text
set(value) {
descriptionField.text = value
}
var template: String
get() = templateField.text
set(value) {
templateField.text = value
}
val filenameTemplateTable: JBTable
init {
panel = FormBuilder.createFormBuilder()
.addLabeledComponent(JBLabel("Text"), textField, 1, false)
.addLabeledComponent(JBLabel("Description"), descriptionField, 1, false)
.addLabeledComponent(JBLabel("Template"), templateField, 1, false)
.addComponentFillVertically(JPanel(), 0)
.panel
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
val filenameTemplateTableModel = FilenameTemplateTableModel(settings.filenameTemplate.copy())
filenameTemplateTable = JBTable(filenameTemplateTableModel)
filenameTemplateTable.isStriped = true
filenameTemplateTable.autoCreateRowSorter = false
val filenameTemplateTableScrollPane = JBScrollPane(filenameTemplateTable)
panel = panel {
row {
filenameTemplateTableScrollPane()
}
}
}
}

View File

@ -11,9 +11,7 @@ import com.intellij.util.xmlb.XmlSerializerUtil
storages = [Storage("FilenameTemplateSettings.xml")]
)
class FilenameTemplateSettingsState : PersistentStateComponent<FilenameTemplateSettingsState> {
var text = ""
var description = ""
var template = ""
var filenameTemplate: FilenameTemplateModel = FilenameTemplateModel("", "", "")
override fun getState(): FilenameTemplateSettingsState {
return this

View File

@ -0,0 +1,35 @@
package de.idetools.filename_template.settings
import javax.swing.table.AbstractTableModel
class FilenameTemplateTableModel(private val data: FilenameTemplateModel) : AbstractTableModel() {
private val header: List<String> = listOf("Text", "Description", "Template")
override fun getRowCount(): Int = 1
override fun getColumnCount(): Int = header.size
override fun getValueAt(row: Int, column: Int): Any {
return when (column) {
0 -> data.text
1 -> data.description
2 -> data.template
else -> throw ArrayIndexOutOfBoundsException()
}
}
override fun setValueAt(value: Any?, row: Int, column: Int) {
when (column) {
0 -> data.text = value as String
1 -> data.description = value as String
2 -> data.template = value as String
else -> throw ArrayIndexOutOfBoundsException()
}
}
override fun getColumnName(column: Int): String = header[column]
override fun getColumnClass(column: Int): Class<*> = getValueAt(0, column)::class.java
override fun isCellEditable(row: Int, column: Int): Boolean = true
}