User: rednesto
Date: 04 Jul 24 14:08
Revision: a3c6f09053af93bf3149fbdda7d91cb2df14c814
Summary:
Convert event generation UI to Kotlin DSL
TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=9344&personal=false
Index: src/main/kotlin/insight/generation/ui/EventListenerWizard.form
===================================================================
--- src/main/kotlin/insight/generation/ui/EventListenerWizard.form (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
+++ src/main/kotlin/insight/generation/ui/EventListenerWizard.form (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
@@ -1,64 +0,0 @@
-
-
Index: src/main/kotlin/insight/generation/ui/EventListenerWizard.kt
===================================================================
--- src/main/kotlin/insight/generation/ui/EventListenerWizard.kt (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
+++ src/main/kotlin/insight/generation/ui/EventListenerWizard.kt (revision a3c6f09053af93bf3149fbdda7d91cb2df14c814)
@@ -22,60 +22,62 @@
import com.intellij.ide.highlighter.JavaHighlightingColors
import com.intellij.openapi.editor.ex.util.EditorUtil
-import com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy
-import com.intellij.uiDesigner.core.GridConstraints
+import com.intellij.openapi.observable.properties.PropertyGraph
+import com.intellij.ui.dsl.builder.AlignX
+import com.intellij.ui.dsl.builder.COLUMNS_LARGE
+import com.intellij.ui.dsl.builder.bindText
+import com.intellij.ui.dsl.builder.columns
+import com.intellij.ui.dsl.builder.panel
+import com.intellij.ui.dsl.builder.text
import com.intellij.util.ui.UIUtil
-import javax.swing.JLabel
import javax.swing.JPanel
-import javax.swing.JSeparator
-import javax.swing.JTextField
class EventListenerWizard(panel: JPanel?, className: String, defaultListenerName: String) {
- lateinit var panel: JPanel
- private lateinit var classNameTextField: JTextField
- private lateinit var listenerNameTextField: JTextField
- private lateinit var publicVoidLabel: JLabel
- private lateinit var contentPanel: JPanel
- private lateinit var separator: JSeparator
- init {
- classNameTextField.font = EditorUtil.getEditorFont()
- listenerNameTextField.font = EditorUtil.getEditorFont()
- publicVoidLabel.font = EditorUtil.getEditorFont()
+ private val graph = PropertyGraph("EventListenerWizard graph")
+
+ private val listenerNameProperty = graph.property(defaultListenerName)
+ val chosenClassName: String by listenerNameProperty
+
+ val panel: JPanel by lazy {
+ panel {
+ row {
+ textField()
+ .text(className)
+ .align(AlignX.FILL)
+ .apply {
+ component.font = EditorUtil.getEditorFont()
+ component.isEditable = false
+ }
+ }
+
+ row {
+ label("public void").apply {
+ component.font = EditorUtil.getEditorFont()
- if (UIUtil.isUnderDarcula()) {
+ if (UIUtil.isUnderDarcula()) {
- publicVoidLabel.foreground = JavaHighlightingColors.KEYWORD.defaultAttributes.foregroundColor
+ component.foreground = JavaHighlightingColors.KEYWORD.defaultAttributes.foregroundColor
- } else {
+ } else {
- publicVoidLabel.foreground =
+ component.foreground =
- JavaHighlightingColors.KEYWORD.fallbackAttributeKey!!.defaultAttributes.foregroundColor
- }
+ JavaHighlightingColors.KEYWORD.fallbackAttributeKey!!.defaultAttributes.foregroundColor
+ }
-
- if (panel != null) {
- separator.isVisible = true
- contentPanel.add(panel, innerContentPanelConstraints)
- }
+ }
- classNameTextField.text = className
- listenerNameTextField.text = defaultListenerName
-
- IdeFocusTraversalPolicy.getPreferredFocusedComponent(listenerNameTextField).requestFocus()
- listenerNameTextField.requestFocus()
+ textField()
+ .bindText(listenerNameProperty)
+ .columns(COLUMNS_LARGE)
+ .focused()
+ .apply {
+ component.font = EditorUtil.getEditorFont()
- }
+ }
+ }
- val chosenClassName: String
- get() = listenerNameTextField.text
+ if (panel != null) {
+ separator()
- companion object {
- private val innerContentPanelConstraints = GridConstraints()
-
- init {
- innerContentPanelConstraints.row = 0
- innerContentPanelConstraints.column = 0
- innerContentPanelConstraints.rowSpan = 1
- innerContentPanelConstraints.colSpan = 1
- innerContentPanelConstraints.anchor = GridConstraints.ANCHOR_CENTER
- innerContentPanelConstraints.fill = GridConstraints.FILL_BOTH
- innerContentPanelConstraints.hSizePolicy = GridConstraints.SIZEPOLICY_FIXED
- innerContentPanelConstraints.vSizePolicy = GridConstraints.SIZEPOLICY_FIXED
+ row {
+ cell(panel)
- }
- }
-}
+ }
+ }
+ }
+ }
+}
Index: src/main/kotlin/platform/bukkit/generation/BukkitEventGenerationPanel.form
===================================================================
--- src/main/kotlin/platform/bukkit/generation/BukkitEventGenerationPanel.form (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
+++ src/main/kotlin/platform/bukkit/generation/BukkitEventGenerationPanel.form (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
@@ -1,48 +0,0 @@
-
-
Index: src/main/kotlin/platform/bukkit/generation/BukkitEventGenerationPanel.kt
===================================================================
--- src/main/kotlin/platform/bukkit/generation/BukkitEventGenerationPanel.kt (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
+++ src/main/kotlin/platform/bukkit/generation/BukkitEventGenerationPanel.kt (revision a3c6f09053af93bf3149fbdda7d91cb2df14c814)
@@ -20,40 +20,41 @@
package com.demonwav.mcdev.platform.bukkit.generation
+import com.demonwav.mcdev.asset.MCDevBundle
import com.demonwav.mcdev.insight.generation.GenerationData
import com.demonwav.mcdev.insight.generation.ui.EventGenerationPanel
+import com.intellij.openapi.observable.properties.PropertyGraph
import com.intellij.psi.PsiClass
-import javax.swing.JCheckBox
-import javax.swing.JComboBox
+import com.intellij.ui.dsl.builder.bindItem
+import com.intellij.ui.dsl.builder.bindSelected
+import com.intellij.ui.dsl.builder.panel
import javax.swing.JPanel
class BukkitEventGenerationPanel(chosenClass: PsiClass) : EventGenerationPanel(chosenClass) {
- private lateinit var ignoreCanceledCheckBox: JCheckBox
- private lateinit var parentPanel: JPanel
- private lateinit var eventPriorityComboBox: JComboBox
+ private val graph = PropertyGraph("BukkitEventGenerationPanel graph")
- override val panel: JPanel
- get() {
- ignoreCanceledCheckBox.isSelected = true
+ private val ignoreCanceledProperty = graph.property(true)
+ private val eventPriorityProperty = graph.property("NORMAL")
- // Not static because the form builder is not reliable
- eventPriorityComboBox.addItem("MONITOR")
- eventPriorityComboBox.addItem("HIGHEST")
- eventPriorityComboBox.addItem("HIGH")
- eventPriorityComboBox.addItem("NORMAL")
- eventPriorityComboBox.addItem("LOW")
- eventPriorityComboBox.addItem("LOWEST")
+ override val panel: JPanel by lazy {
+ panel {
+ row {
+ checkBox(MCDevBundle("generate.event_listener.ignore_if_canceled"))
+ .bindSelected(ignoreCanceledProperty)
+ }
- eventPriorityComboBox.selectedIndex = 3
-
- return parentPanel
+ row(MCDevBundle("generate.event_listener.event_priority")) {
+ comboBox(listOf("MONITOR", "HIGHEST", "HIGH", "NORMAL", "LOW", "LOWEST"))
+ .bindItem(eventPriorityProperty)
- }
+ }
+ }
+ }
override fun gatherData(): GenerationData {
return BukkitGenerationData(
- ignoreCanceledCheckBox.isSelected,
- eventPriorityComboBox.selectedItem?.toString() ?: error("No selected item")
+ ignoreCanceledProperty.get(),
+ eventPriorityProperty.get()
)
}
}
Index: src/main/kotlin/platform/bungeecord/generation/BungeeCordEventGenerationPanel.form
===================================================================
--- src/main/kotlin/platform/bungeecord/generation/BungeeCordEventGenerationPanel.form (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
+++ src/main/kotlin/platform/bungeecord/generation/BungeeCordEventGenerationPanel.form (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
@@ -1,40 +0,0 @@
-
-
Index: src/main/kotlin/platform/bungeecord/generation/BungeeCordEventGenerationPanel.kt
===================================================================
--- src/main/kotlin/platform/bungeecord/generation/BungeeCordEventGenerationPanel.kt (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
+++ src/main/kotlin/platform/bungeecord/generation/BungeeCordEventGenerationPanel.kt (revision a3c6f09053af93bf3149fbdda7d91cb2df14c814)
@@ -20,29 +20,28 @@
package com.demonwav.mcdev.platform.bungeecord.generation
+import com.demonwav.mcdev.asset.MCDevBundle
import com.demonwav.mcdev.insight.generation.ui.EventGenerationPanel
+import com.intellij.openapi.observable.properties.PropertyGraph
import com.intellij.psi.PsiClass
-import javax.swing.JComboBox
+import com.intellij.ui.dsl.builder.bindItem
+import com.intellij.ui.dsl.builder.panel
import javax.swing.JPanel
class BungeeCordEventGenerationPanel(chosenClass: PsiClass) : EventGenerationPanel(chosenClass) {
- private lateinit var eventPriorityComboBox: JComboBox
- private lateinit var parentPanel: JPanel
+ private val graph = PropertyGraph("BungeeCordEventGenerationPanel graph")
- override val panel: JPanel
- get() {
- // Not static because the form builder is not reliable
- eventPriorityComboBox.addItem("HIGHEST")
- eventPriorityComboBox.addItem("HIGH")
- eventPriorityComboBox.addItem("NORMAL")
- eventPriorityComboBox.addItem("LOW")
- eventPriorityComboBox.addItem("LOWEST")
+ private val eventPriorityProperty = graph.property("NORMAL")
- eventPriorityComboBox.selectedIndex = 2
-
- return parentPanel
+ override val panel: JPanel by lazy {
+ panel {
+ row(MCDevBundle("generate.event_listener.event_priority")) {
+ comboBox(listOf("HIGHEST", "HIGH", "NORMAL", "LOW", "LOWEST"))
+ .bindItem(eventPriorityProperty)
- }
+ }
+ }
+ }
- override fun gatherData() = BungeeCordGenerationData(eventPriorityComboBox.selectedItem.toString())
+ override fun gatherData() = BungeeCordGenerationData(eventPriorityProperty.get())
}
Index: src/main/kotlin/platform/sponge/generation/SpongeEventGenerationPanel.form
===================================================================
--- src/main/kotlin/platform/sponge/generation/SpongeEventGenerationPanel.form (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
+++ src/main/kotlin/platform/sponge/generation/SpongeEventGenerationPanel.form (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
@@ -1,48 +0,0 @@
-
-
Index: src/main/kotlin/platform/sponge/generation/SpongeEventGenerationPanel.kt
===================================================================
--- src/main/kotlin/platform/sponge/generation/SpongeEventGenerationPanel.kt (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
+++ src/main/kotlin/platform/sponge/generation/SpongeEventGenerationPanel.kt (revision a3c6f09053af93bf3149fbdda7d91cb2df14c814)
@@ -20,40 +20,38 @@
package com.demonwav.mcdev.platform.sponge.generation
+import com.demonwav.mcdev.asset.MCDevBundle
import com.demonwav.mcdev.insight.generation.GenerationData
import com.demonwav.mcdev.insight.generation.ui.EventGenerationPanel
+import com.intellij.openapi.observable.properties.PropertyGraph
import com.intellij.psi.PsiClass
-import javax.swing.JCheckBox
-import javax.swing.JComboBox
+import com.intellij.ui.dsl.builder.bindItem
+import com.intellij.ui.dsl.builder.bindSelected
+import com.intellij.ui.dsl.builder.panel
import javax.swing.JPanel
class SpongeEventGenerationPanel(chosenClass: PsiClass) : EventGenerationPanel(chosenClass) {
- private lateinit var parentPanel: JPanel
- private lateinit var eventOrderComboBox: JComboBox
- private lateinit var ignoreCanceledCheckBox: JCheckBox
+ private val graph = PropertyGraph("SpongeEventGenerationPanel graph")
- override val panel: JPanel
- get() {
- ignoreCanceledCheckBox.isSelected = true
+ private val ignoreCanceledProperty = graph.property(true)
+ private val eventOrderProperty = graph.property("DEFAULT")
- // Not static because the form builder is not reliable
- eventOrderComboBox.addItem("PRE")
- eventOrderComboBox.addItem("AFTER_PRE")
- eventOrderComboBox.addItem("FIRST")
- eventOrderComboBox.addItem("EARLY")
- eventOrderComboBox.addItem("DEFAULT")
- eventOrderComboBox.addItem("LATE")
- eventOrderComboBox.addItem("LAST")
- eventOrderComboBox.addItem("BEFORE_POST")
- eventOrderComboBox.addItem("POST")
+ override val panel: JPanel by lazy {
+ panel {
+ row {
+ checkBox(MCDevBundle("generate.event_listener.ignore_if_canceled"))
+ .bindSelected(ignoreCanceledProperty)
+ }
- eventOrderComboBox.selectedIndex = 4
-
- return parentPanel
+ row(MCDevBundle("generate.event_listener.event_order")) {
+ comboBox(listOf("PRE", "AFTER_PRE", "FIRST", "EARLY", "DEFAULT", "LATE", "LAST", "BEFORE_POST", "POST"))
+ .bindItem(eventOrderProperty)
- }
+ }
+ }
+ }
override fun gatherData(): GenerationData {
- return SpongeGenerationData(ignoreCanceledCheckBox.isSelected, eventOrderComboBox.selectedItem as String)
+ return SpongeGenerationData(ignoreCanceledProperty.get(), eventOrderProperty.get())
}
}
Index: src/main/kotlin/platform/velocity/generation/VelocityEventGenerationPanel.form
===================================================================
--- src/main/kotlin/platform/velocity/generation/VelocityEventGenerationPanel.form (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
+++ src/main/kotlin/platform/velocity/generation/VelocityEventGenerationPanel.form (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
@@ -1,40 +0,0 @@
-
-
Index: src/main/kotlin/platform/velocity/generation/VelocityEventGenerationPanel.kt
===================================================================
--- src/main/kotlin/platform/velocity/generation/VelocityEventGenerationPanel.kt (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
+++ src/main/kotlin/platform/velocity/generation/VelocityEventGenerationPanel.kt (revision a3c6f09053af93bf3149fbdda7d91cb2df14c814)
@@ -20,32 +20,31 @@
package com.demonwav.mcdev.platform.velocity.generation
+import com.demonwav.mcdev.asset.MCDevBundle
import com.demonwav.mcdev.insight.generation.GenerationData
import com.demonwav.mcdev.insight.generation.ui.EventGenerationPanel
+import com.intellij.openapi.observable.properties.PropertyGraph
import com.intellij.psi.PsiClass
-import javax.swing.JComboBox
+import com.intellij.ui.dsl.builder.bindItem
+import com.intellij.ui.dsl.builder.panel
import javax.swing.JPanel
class VelocityEventGenerationPanel(chosenClass: PsiClass) : EventGenerationPanel(chosenClass) {
- private lateinit var parentPanel: JPanel
- private lateinit var eventOrderComboBox: JComboBox
+ private val graph = PropertyGraph("VelocityEventGenerationPanel graph")
- override val panel: JPanel
- get() {
- // Not static because the form builder is not reliable
- eventOrderComboBox.addItem("FIRST")
- eventOrderComboBox.addItem("EARLY")
- eventOrderComboBox.addItem("NORMAL")
- eventOrderComboBox.addItem("LATE")
- eventOrderComboBox.addItem("LAST")
+ private val eventOrderProperty = graph.property("NORMAL")
- eventOrderComboBox.selectedIndex = 2
-
- return parentPanel
+ override val panel: JPanel by lazy {
+ panel {
+ row(MCDevBundle("generate.event_listener.event_order")) {
+ comboBox(listOf("FIRST", "EARLY", "NORMAL", "LATE", "LAST"))
+ .bindItem(eventOrderProperty)
- }
+ }
+ }
+ }
override fun gatherData(): GenerationData {
- return VelocityGenerationData(eventOrderComboBox.selectedItem as String)
+ return VelocityGenerationData(eventOrderProperty.get())
}
}
Index: src/main/resources/messages/MinecraftDevelopment.properties
===================================================================
--- src/main/resources/messages/MinecraftDevelopment.properties (revision d20f5e7f61d2f846778c86634cecdb282c8a8b9a)
+++ src/main/resources/messages/MinecraftDevelopment.properties (revision a3c6f09053af93bf3149fbdda7d91cb2df14c814)
@@ -98,6 +98,9 @@
generate.event_listener.title=Generate Event Listener
generate.event_listener.settings=Event Listener Settings
+generate.event_listener.event_priority=Event Priority
+generate.event_listener.event_order=Event Order
+generate.event_listener.ignore_if_canceled=Ignore if event is canceled
generate.class.caption=Minecraft Class
generate.class.description=Class generation for modders