Provide toolbar to add and remove filename templates
This commit is contained in:
parent
91090a14fd
commit
a7724857fb
|
|
@ -1,24 +1,47 @@
|
||||||
package de.idetools.filename_template.settings
|
package de.idetools.filename_template.settings
|
||||||
|
|
||||||
import com.intellij.ui.components.JBScrollPane
|
import com.intellij.icons.AllIcons
|
||||||
import com.intellij.ui.layout.panel
|
import com.intellij.openapi.actionSystem.ActionManager
|
||||||
|
import com.intellij.openapi.actionSystem.AnAction
|
||||||
|
import com.intellij.openapi.actionSystem.AnActionEvent
|
||||||
|
import com.intellij.openapi.actionSystem.DefaultActionGroup
|
||||||
import com.intellij.ui.table.JBTable
|
import com.intellij.ui.table.JBTable
|
||||||
|
import java.awt.BorderLayout
|
||||||
|
import java.awt.FlowLayout
|
||||||
import javax.swing.JPanel
|
import javax.swing.JPanel
|
||||||
|
|
||||||
class FilenameTemplateSettingsComponent(val filenameTemplates: ArrayList<FilenameTemplateModel>) {
|
class FilenameTemplateSettingsComponent(val filenameTemplates: ArrayList<FilenameTemplateModel>) {
|
||||||
val panel: JPanel
|
private var filenameTemplateTableModel: FilenameTemplateTableModel = FilenameTemplateTableModel(filenameTemplates)
|
||||||
|
val panel: JPanel = JPanel()
|
||||||
val filenameTemplateTable: JBTable
|
val filenameTemplateTable: JBTable
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val filenameTemplateTableModel = FilenameTemplateTableModel(filenameTemplates)
|
panel.layout = BorderLayout()
|
||||||
|
|
||||||
filenameTemplateTable = JBTable(filenameTemplateTableModel)
|
filenameTemplateTable = JBTable(filenameTemplateTableModel)
|
||||||
filenameTemplateTable.isStriped = true
|
filenameTemplateTable.isStriped = true
|
||||||
filenameTemplateTable.autoCreateRowSorter = false
|
filenameTemplateTable.autoCreateRowSorter = false
|
||||||
val filenameTemplateTableScrollPane = JBScrollPane(filenameTemplateTable)
|
|
||||||
panel = panel {
|
panel.add(filenameTemplateTable, BorderLayout.CENTER)
|
||||||
row {
|
panel.add(createToolbar(filenameTemplateTable), BorderLayout.EAST)
|
||||||
filenameTemplateTableScrollPane()
|
}
|
||||||
}
|
|
||||||
}
|
private fun createToolbar(table: JBTable): JPanel {
|
||||||
|
val panel = JPanel()
|
||||||
|
panel.layout = FlowLayout(FlowLayout.LEFT)
|
||||||
|
val actionGroup = DefaultActionGroup()
|
||||||
|
actionGroup.add(object : AnAction("Add", "Add new filename template", AllIcons.General.Add) {
|
||||||
|
override fun actionPerformed(e: AnActionEvent) {
|
||||||
|
filenameTemplateTableModel.addRow()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
actionGroup.add(object : AnAction("Remove", "Remove selected filename templates", AllIcons.General.Remove) {
|
||||||
|
override fun actionPerformed(e: AnActionEvent) {
|
||||||
|
filenameTemplateTableModel.removeRows(table.selectedRows)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
val toolbar = ActionManager.getInstance().createActionToolbar("MyToolbar", actionGroup, false)
|
||||||
|
panel.add(toolbar.component)
|
||||||
|
return panel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
package de.idetools.filename_template.settings
|
package de.idetools.filename_template.settings
|
||||||
|
|
||||||
|
import java.util.*
|
||||||
import javax.swing.table.AbstractTableModel
|
import javax.swing.table.AbstractTableModel
|
||||||
|
|
||||||
class FilenameTemplateTableModel(val filenameTemplates: List<FilenameTemplateModel>) : AbstractTableModel() {
|
class FilenameTemplateTableModel(private val filenameTemplates: ArrayList<FilenameTemplateModel>) :
|
||||||
|
AbstractTableModel() {
|
||||||
private val header: List<String> = listOf("Text", "Description", "Template")
|
private val header: List<String> = listOf("Text", "Description", "Template")
|
||||||
|
|
||||||
override fun getRowCount(): Int = filenameTemplates.size
|
override fun getRowCount(): Int = filenameTemplates.size
|
||||||
|
|
@ -32,4 +34,17 @@ class FilenameTemplateTableModel(val filenameTemplates: List<FilenameTemplateMod
|
||||||
override fun getColumnClass(column: Int): Class<*> = getValueAt(0, column)::class.java
|
override fun getColumnClass(column: Int): Class<*> = getValueAt(0, column)::class.java
|
||||||
|
|
||||||
override fun isCellEditable(row: Int, column: Int): Boolean = true
|
override fun isCellEditable(row: Int, column: Int): Boolean = true
|
||||||
|
|
||||||
|
fun addRow() {
|
||||||
|
filenameTemplates.add(FilenameTemplateModel())
|
||||||
|
fireTableDataChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun removeRows(selectedRows: IntArray) {
|
||||||
|
Arrays.sort(selectedRows)
|
||||||
|
for (i in selectedRows.indices.reversed()) {
|
||||||
|
filenameTemplates.removeAt(selectedRows[i])
|
||||||
|
}
|
||||||
|
fireTableDataChanged()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user