Allow multiple filename templates
This commit is contained in:
parent
a9f1d0d0a1
commit
91090a14fd
|
|
@ -24,14 +24,17 @@ class InitializeFilenameTemplateActivity : StartupActivity {
|
||||||
actionManager.unregisterAction(it)
|
actionManager.unregisterAction(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
val anchorId = "NewFile"
|
var anchorId = "NewFile"
|
||||||
|
settings.filenameTemplates.forEach {
|
||||||
val action = CreateFileWithFilenameTemplateAction(
|
val action = CreateFileWithFilenameTemplateAction(
|
||||||
settings.filenameTemplate.text,
|
it.text,
|
||||||
settings.filenameTemplate.description,
|
it.description,
|
||||||
settings.filenameTemplate.template
|
it.template
|
||||||
)
|
)
|
||||||
val actionId = "FilenameTemplate.${settings.filenameTemplate.text}"
|
val actionId = "FilenameTemplate.${it.text}"
|
||||||
actionManager.registerAction(actionId, action)
|
actionManager.registerAction(actionId, action)
|
||||||
newGroup.addAction(action, Constraints(Anchor.AFTER, anchorId))
|
newGroup.addAction(action, Constraints(Anchor.AFTER, anchorId))
|
||||||
|
anchorId = actionId
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,14 @@ import javax.swing.JComponent
|
||||||
|
|
||||||
|
|
||||||
class FilenameTemplateConfigurable : Configurable {
|
class FilenameTemplateConfigurable : Configurable {
|
||||||
private var component: FilenameTemplateSettingsComponent = FilenameTemplateSettingsComponent()
|
private var component: FilenameTemplateSettingsComponent
|
||||||
|
|
||||||
|
init {
|
||||||
|
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
||||||
|
component = FilenameTemplateSettingsComponent(ArrayList(settings.filenameTemplates.map {
|
||||||
|
FilenameTemplateModel(it.text, it.description, it.template)
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
@Nls(capitalization = Nls.Capitalization.Title)
|
@Nls(capitalization = Nls.Capitalization.Title)
|
||||||
override fun getDisplayName(): String {
|
override fun getDisplayName(): String {
|
||||||
|
|
@ -21,25 +28,37 @@ class FilenameTemplateConfigurable : Configurable {
|
||||||
|
|
||||||
override fun isModified(): Boolean {
|
override fun isModified(): Boolean {
|
||||||
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
||||||
return component.filenameTemplateTable.getValueAt(0, 0) != settings.filenameTemplate.text ||
|
|
||||||
component.filenameTemplateTable.getValueAt(0, 1) != settings.filenameTemplate.description ||
|
return settings.filenameTemplates.withIndex().any {
|
||||||
component.filenameTemplateTable.getValueAt(0, 2) != settings.filenameTemplate.template
|
component.filenameTemplateTable.getValueAt(it.index, 0) != it.value.text
|
||||||
|
|| component.filenameTemplateTable.getValueAt(it.index, 1) != it.value.description
|
||||||
|
|| component.filenameTemplateTable.getValueAt(it.index, 2) != it.value.template
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Throws(ConfigurationException::class)
|
@Throws(ConfigurationException::class)
|
||||||
override fun apply() {
|
override fun apply() {
|
||||||
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
||||||
settings.filenameTemplate.text = component.filenameTemplateTable.getValueAt(0, 0) as String
|
settings.filenameTemplates.clear()
|
||||||
settings.filenameTemplate.description = component.filenameTemplateTable.getValueAt(0, 1) as String
|
settings.filenameTemplates.addAll(component.filenameTemplates.map {
|
||||||
settings.filenameTemplate.template = component.filenameTemplateTable.getValueAt(0, 2) as String
|
FilenameTemplateModel(
|
||||||
|
it.text,
|
||||||
|
it.description,
|
||||||
|
it.template
|
||||||
|
)
|
||||||
|
})
|
||||||
InitializeFilenameTemplateActivity().initializeActions()
|
InitializeFilenameTemplateActivity().initializeActions()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun reset() {
|
override fun reset() {
|
||||||
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
||||||
component.filenameTemplateTable.setValueAt(settings.filenameTemplate.text, 0, 0)
|
component.filenameTemplates.clear()
|
||||||
component.filenameTemplateTable.setValueAt(settings.filenameTemplate.description, 0, 1)
|
component.filenameTemplates.addAll(settings.filenameTemplates.map {
|
||||||
component.filenameTemplateTable.setValueAt(settings.filenameTemplate.template, 0, 2)
|
FilenameTemplateModel(
|
||||||
|
it.text,
|
||||||
|
it.description,
|
||||||
|
it.template
|
||||||
|
)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,12 @@ import com.intellij.ui.layout.panel
|
||||||
import com.intellij.ui.table.JBTable
|
import com.intellij.ui.table.JBTable
|
||||||
import javax.swing.JPanel
|
import javax.swing.JPanel
|
||||||
|
|
||||||
class FilenameTemplateSettingsComponent {
|
class FilenameTemplateSettingsComponent(val filenameTemplates: ArrayList<FilenameTemplateModel>) {
|
||||||
val panel: JPanel
|
val panel: JPanel
|
||||||
val filenameTemplateTable: JBTable
|
val filenameTemplateTable: JBTable
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val settings: FilenameTemplateSettingsState = FilenameTemplateSettingsState.instance
|
val filenameTemplateTableModel = FilenameTemplateTableModel(filenameTemplates)
|
||||||
|
|
||||||
val filenameTemplateTableModel = FilenameTemplateTableModel(settings.filenameTemplate.copy())
|
|
||||||
filenameTemplateTable = JBTable(filenameTemplateTableModel)
|
filenameTemplateTable = JBTable(filenameTemplateTableModel)
|
||||||
filenameTemplateTable.isStriped = true
|
filenameTemplateTable.isStriped = true
|
||||||
filenameTemplateTable.autoCreateRowSorter = false
|
filenameTemplateTable.autoCreateRowSorter = false
|
||||||
|
|
|
||||||
|
|
@ -11,7 +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 filenameTemplate: FilenameTemplateModel = FilenameTemplateModel("", "", "")
|
var filenameTemplates: ArrayList<FilenameTemplateModel> = ArrayList()
|
||||||
|
|
||||||
override fun getState(): FilenameTemplateSettingsState {
|
override fun getState(): FilenameTemplateSettingsState {
|
||||||
return this
|
return this
|
||||||
|
|
|
||||||
|
|
@ -2,27 +2,27 @@ package de.idetools.filename_template.settings
|
||||||
|
|
||||||
import javax.swing.table.AbstractTableModel
|
import javax.swing.table.AbstractTableModel
|
||||||
|
|
||||||
class FilenameTemplateTableModel(private val data: FilenameTemplateModel) : AbstractTableModel() {
|
class FilenameTemplateTableModel(val filenameTemplates: List<FilenameTemplateModel>) : AbstractTableModel() {
|
||||||
private val header: List<String> = listOf("Text", "Description", "Template")
|
private val header: List<String> = listOf("Text", "Description", "Template")
|
||||||
|
|
||||||
override fun getRowCount(): Int = 1
|
override fun getRowCount(): Int = filenameTemplates.size
|
||||||
|
|
||||||
override fun getColumnCount(): Int = header.size
|
override fun getColumnCount(): Int = header.size
|
||||||
|
|
||||||
override fun getValueAt(row: Int, column: Int): Any {
|
override fun getValueAt(row: Int, column: Int): Any {
|
||||||
return when (column) {
|
return when (column) {
|
||||||
0 -> data.text
|
0 -> filenameTemplates[row].text
|
||||||
1 -> data.description
|
1 -> filenameTemplates[row].description
|
||||||
2 -> data.template
|
2 -> filenameTemplates[row].template
|
||||||
else -> throw ArrayIndexOutOfBoundsException()
|
else -> throw ArrayIndexOutOfBoundsException()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setValueAt(value: Any?, row: Int, column: Int) {
|
override fun setValueAt(value: Any?, row: Int, column: Int) {
|
||||||
when (column) {
|
when (column) {
|
||||||
0 -> data.text = value as String
|
0 -> filenameTemplates[row].text = value as String
|
||||||
1 -> data.description = value as String
|
1 -> filenameTemplates[row].description = value as String
|
||||||
2 -> data.template = value as String
|
2 -> filenameTemplates[row].template = value as String
|
||||||
else -> throw ArrayIndexOutOfBoundsException()
|
else -> throw ArrayIndexOutOfBoundsException()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user