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
|
||||
|
||||
import com.intellij.ui.components.JBScrollPane
|
||||
import com.intellij.ui.layout.panel
|
||||
import com.intellij.icons.AllIcons
|
||||
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 java.awt.BorderLayout
|
||||
import java.awt.FlowLayout
|
||||
import javax.swing.JPanel
|
||||
|
||||
class FilenameTemplateSettingsComponent(val filenameTemplates: ArrayList<FilenameTemplateModel>) {
|
||||
val panel: JPanel
|
||||
private var filenameTemplateTableModel: FilenameTemplateTableModel = FilenameTemplateTableModel(filenameTemplates)
|
||||
val panel: JPanel = JPanel()
|
||||
val filenameTemplateTable: JBTable
|
||||
|
||||
init {
|
||||
val filenameTemplateTableModel = FilenameTemplateTableModel(filenameTemplates)
|
||||
panel.layout = BorderLayout()
|
||||
|
||||
filenameTemplateTable = JBTable(filenameTemplateTableModel)
|
||||
filenameTemplateTable.isStriped = true
|
||||
filenameTemplateTable.autoCreateRowSorter = false
|
||||
val filenameTemplateTableScrollPane = JBScrollPane(filenameTemplateTable)
|
||||
panel = panel {
|
||||
row {
|
||||
filenameTemplateTableScrollPane()
|
||||
|
||||
panel.add(filenameTemplateTable, BorderLayout.CENTER)
|
||||
panel.add(createToolbar(filenameTemplateTable), BorderLayout.EAST)
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
import java.util.*
|
||||
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")
|
||||
|
||||
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 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