Show filename template configuration as table
This commit is contained in:
parent
f0a683a6dc
commit
26e7adbfae
|
|
@ -25,8 +25,12 @@ class InitializeFilenameTemplateActivity : StartupActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
val anchorId = "NewFile"
|
val anchorId = "NewFile"
|
||||||
val action = CreateFileWithFilenameTemplateAction(settings.text, settings.description, settings.template)
|
val action = CreateFileWithFilenameTemplateAction(
|
||||||
val actionId = "FilenameTemplate.${settings.text}"
|
settings.filenameTemplate.text,
|
||||||
|
settings.filenameTemplate.description,
|
||||||
|
settings.filenameTemplate.template
|
||||||
|
)
|
||||||
|
val actionId = "FilenameTemplate.${settings.filenameTemplate.text}"
|
||||||
actionManager.registerAction(actionId, action)
|
actionManager.registerAction(actionId, action)
|
||||||
newGroup.addAction(action, Constraints(Anchor.AFTER, anchorId))
|
newGroup.addAction(action, Constraints(Anchor.AFTER, anchorId))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,25 +21,25 @@ class FilenameTemplateConfigurable : Configurable {
|
||||||
|
|
||||||
override fun isModified(): Boolean {
|
override fun isModified(): Boolean {
|
||||||
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
||||||
return component.text != settings.text ||
|
return component.filenameTemplateTable.getValueAt(0, 0) != settings.filenameTemplate.text ||
|
||||||
component.description != settings.description ||
|
component.filenameTemplateTable.getValueAt(0, 1) != settings.filenameTemplate.description ||
|
||||||
component.template != settings.template
|
component.filenameTemplateTable.getValueAt(0, 2) != settings.filenameTemplate.template
|
||||||
}
|
}
|
||||||
|
|
||||||
@Throws(ConfigurationException::class)
|
@Throws(ConfigurationException::class)
|
||||||
override fun apply() {
|
override fun apply() {
|
||||||
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
||||||
settings.text = component.text
|
settings.filenameTemplate.text = component.filenameTemplateTable.getValueAt(0, 0) as String
|
||||||
settings.description = component.description
|
settings.filenameTemplate.description = component.filenameTemplateTable.getValueAt(0, 1) as String
|
||||||
settings.template = component.template
|
settings.filenameTemplate.template = component.filenameTemplateTable.getValueAt(0, 2) as String
|
||||||
|
|
||||||
InitializeFilenameTemplateActivity().initializeActions()
|
InitializeFilenameTemplateActivity().initializeActions()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun reset() {
|
override fun reset() {
|
||||||
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
||||||
component.text = settings.text
|
component.filenameTemplateTable.setValueAt(settings.filenameTemplate.text, 0, 0)
|
||||||
component.description = settings.description
|
component.filenameTemplateTable.setValueAt(settings.filenameTemplate.description, 0, 1)
|
||||||
component.template = settings.template
|
component.filenameTemplateTable.setValueAt(settings.filenameTemplate.template, 0, 2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package de.idetools.filename_template.settings
|
||||||
|
|
||||||
|
data class FilenameTemplateModel(
|
||||||
|
var text: String,
|
||||||
|
var description: String,
|
||||||
|
var template: String
|
||||||
|
)
|
||||||
|
|
@ -1,40 +1,26 @@
|
||||||
package de.idetools.filename_template.settings
|
package de.idetools.filename_template.settings
|
||||||
|
|
||||||
import com.intellij.ui.components.JBLabel
|
import com.intellij.ui.components.JBScrollPane
|
||||||
import com.intellij.ui.components.JBTextField
|
import com.intellij.ui.layout.panel
|
||||||
import com.intellij.util.ui.FormBuilder
|
import com.intellij.ui.table.JBTable
|
||||||
import javax.swing.JPanel
|
import javax.swing.JPanel
|
||||||
|
|
||||||
class FilenameTemplateSettingsComponent {
|
class FilenameTemplateSettingsComponent {
|
||||||
val panel: JPanel
|
val panel: JPanel
|
||||||
private val textField: JBTextField = JBTextField()
|
val filenameTemplateTable: JBTable
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
panel = FormBuilder.createFormBuilder()
|
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
||||||
.addLabeledComponent(JBLabel("Text"), textField, 1, false)
|
|
||||||
.addLabeledComponent(JBLabel("Description"), descriptionField, 1, false)
|
val filenameTemplateTableModel = FilenameTemplateTableModel(settings.filenameTemplate.copy())
|
||||||
.addLabeledComponent(JBLabel("Template"), templateField, 1, false)
|
filenameTemplateTable = JBTable(filenameTemplateTableModel)
|
||||||
.addComponentFillVertically(JPanel(), 0)
|
filenameTemplateTable.isStriped = true
|
||||||
.panel
|
filenameTemplateTable.autoCreateRowSorter = false
|
||||||
|
val filenameTemplateTableScrollPane = JBScrollPane(filenameTemplateTable)
|
||||||
|
panel = panel {
|
||||||
|
row {
|
||||||
|
filenameTemplateTableScrollPane()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,7 @@ import com.intellij.util.xmlb.XmlSerializerUtil
|
||||||
storages = [Storage("FilenameTemplateSettings.xml")]
|
storages = [Storage("FilenameTemplateSettings.xml")]
|
||||||
)
|
)
|
||||||
class FilenameTemplateSettingsState : PersistentStateComponent<FilenameTemplateSettingsState> {
|
class FilenameTemplateSettingsState : PersistentStateComponent<FilenameTemplateSettingsState> {
|
||||||
var text = ""
|
var filenameTemplate: FilenameTemplateModel = FilenameTemplateModel("", "", "")
|
||||||
var description = ""
|
|
||||||
var template = ""
|
|
||||||
|
|
||||||
override fun getState(): FilenameTemplateSettingsState {
|
override fun getState(): FilenameTemplateSettingsState {
|
||||||
return this
|
return this
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user