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