Skip to content

Commit 413a2ce

Browse files
committed
Update plugin compatibility and enhance code configurations
Updated plugin build compatibility to support newer IntelliJ versions. Improved UI logic in `MoodlePluginGenerator` and refined handling of dynamic updates. Adjusted predefined code style usage and resolved minor inconsistencies in relevant classes.
1 parent c0e0bc6 commit 413a2ce

5 files changed

Lines changed: 51 additions & 16 deletions

File tree

gradle.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ pluginVersion = 1.3.1
88

99
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
1010
pluginSinceBuild = 243
11-
pluginUntilBuild = 243.*
11+
pluginUntilBuild = 251.*
1212

1313
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
1414
platformType = PS
15-
platformVersion = 2024.3
15+
platformVersion = 251.14649.45
1616

1717
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
1818
# Example: platformPlugins = com.jetbrains.php:203.4449.22, org.intellij.scala:2023.3.27@EAP
19-
platformPlugins = com.dmarcotte.handlebars:243.21565.122
19+
platformPlugins = com.dmarcotte.handlebars:251.14649.49
2020
# Example: platformBundledPlugins = com.intellij.java
2121
platformBundledPlugins = com.jetbrains.php, JavaScript, org.jetbrains.plugins.less, org.jetbrains.plugins.sass
2222
# Gradle Releases -> https://github.com/gradle/gradle/releases

src/main/kotlin/il/co/sysbind/intellij/moodledev/MoodlePluginGenerator.kt

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,22 @@ import com.intellij.openapi.application.ApplicationManager
66
import com.intellij.openapi.module.Module
77
import com.intellij.openapi.project.Project
88
import com.intellij.openapi.ui.ComboBox
9+
import com.intellij.openapi.ui.TextFieldWithBrowseButton
910
import com.intellij.openapi.ui.ValidationInfo
1011
import com.intellij.openapi.vfs.VirtualFile
1112
import com.intellij.platform.ProjectGeneratorPeer
1213
import com.intellij.psi.PsiManager
1314
import com.intellij.ui.TextAccessor
1415
import com.intellij.ui.dsl.builder.Cell
1516
import com.intellij.ui.dsl.builder.panel
16-
import com.intellij.ui.dsl.builder.whenTextChangedFromUi
1717
import il.co.sysbind.intellij.moodledev.moodle.Component
1818
import il.co.sysbind.intellij.moodledev.project.MoodleProjectSettings
19+
import java.awt.event.ActionListener
1920
import javax.swing.Icon
2021
import javax.swing.JComponent
22+
import javax.swing.JTextField
23+
import javax.swing.event.DocumentEvent
24+
import javax.swing.event.DocumentListener
2125

2226
class MoodlePluginGenerator : WebProjectTemplate<MoodlePluginGeneratorSettings>() {
2327
override fun getName(): String {
@@ -65,23 +69,48 @@ class MoodlePluginGenerator : WebProjectTemplate<MoodlePluginGeneratorSettings>(
6569
private inner class MoodlePluginGeneratorPeer : ProjectGeneratorPeer<MoodlePluginGeneratorSettings> {
6670
private var myContentRoot: TextAccessor? = null
6771
private lateinit var myPluginType : Cell<ComboBox<String>>
68-
override fun getComponent(): JComponent {
72+
override fun getComponent(
73+
myLocationField: TextFieldWithBrowseButton,
74+
checkValid: Runnable
75+
): JComponent {
6976
val moodleTree = Component()
77+
7078
val myPanel = panel {
71-
row("Plugin Type:"){
72-
myPluginType = comboBox(moodleTree.getPluginTypes().toList())
79+
row("Plugin Type:") {
80+
val pluginTypeComboBox = comboBox(moodleTree.getPluginTypes().toList())
81+
pluginTypeComboBox.component.addActionListener(ActionListener {
82+
// Call checkValid whenever plugin type changes
83+
checkValid.run()
84+
})
7385
}
7486
row("Plugin Name:") {
75-
textField().whenTextChangedFromUi {
76-
myContentRoot!!.text = myContentRoot!!.text.substringBeforeLast('/') +
77-
"/" + moodleTree.getPluginPath(myPluginType.component.item) + "/" + it
78-
}
87+
val pluginNameTextField = JTextField()
88+
pluginNameTextField.document.addDocumentListener(object : DocumentListener {
89+
override fun insertUpdate(e: DocumentEvent?) = updateLocationField(pluginNameTextField, moodleTree)
90+
override fun removeUpdate(e: DocumentEvent?) = updateLocationField(pluginNameTextField, moodleTree)
91+
override fun changedUpdate(e: DocumentEvent?) = updateLocationField(pluginNameTextField, moodleTree)
92+
})
7993
}
8094
}
8195

96+
myLocationField.textField.document.addDocumentListener(object : DocumentListener {
97+
override fun insertUpdate(e: DocumentEvent?) = checkValid.run()
98+
override fun removeUpdate(e: DocumentEvent?) = checkValid.run()
99+
override fun changedUpdate(e: DocumentEvent?) = checkValid.run()
100+
})
101+
82102
return myPanel
83103
}
84104

105+
private fun updateLocationField(textField: JTextField, moodleTree: Component) {
106+
if (myContentRoot != null && myPluginType.component.selectedItem != null) {
107+
val pluginType = myPluginType.component.selectedItem.toString()
108+
val updatedPath = myContentRoot!!.text.substringBeforeLast('/') +
109+
"/" + moodleTree.getPluginPath(pluginType) + "/" + textField.text
110+
myContentRoot!!.text = updatedPath
111+
}
112+
}
113+
85114
override fun buildUI(settingsStep: SettingsStep) {
86115
val field = settingsStep.moduleNameLocationSettings
87116
if (field != null) {

src/main/kotlin/il/co/sysbind/intellij/moodledev/actions/generation/MoodleJavaScriptFileAction.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import il.co.sysbind.intellij.moodledev.project.MoodleProjectSettings
1616
import il.co.sysbind.intellij.moodledev.util.MoodleCorePathUtil
1717

1818

19-
class MoodleJavaScriptFileAction: CreateFileFromTemplateAction(CAPTION, "", JavaScriptFileType.INSTANCE.icon)
19+
class MoodleJavaScriptFileAction: CreateFileFromTemplateAction(CAPTION, "", JavaScriptFileType.icon)
2020
, DumbAware {
2121

2222
private companion object {
@@ -33,7 +33,7 @@ class MoodleJavaScriptFileAction: CreateFileFromTemplateAction(CAPTION, "", Java
3333

3434
override fun buildDialog(project: Project, directory: PsiDirectory, builder: CreateFileFromTemplateDialog.Builder) {
3535
builder.setTitle(PhpCreateFileAction.CAPTION)
36-
.addKind("Empty file", JavaScriptFileType.INSTANCE.icon, "Moodle JavaScript File")
36+
.addKind("Empty file", JavaScriptFileType.icon, "Moodle JavaScript File")
3737
}
3838

3939
override fun getActionName(directory: PsiDirectory?, newName: String, templateName: String?): String = CAPTION

src/main/kotlin/il/co/sysbind/intellij/moodledev/codeStyle/MoodleJavascriptPredefinedCodeStyle.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import com.intellij.lang.javascript.formatter.JSCodeStyleSettings
66
import com.intellij.psi.codeStyle.CodeStyleSettings
77
import com.intellij.psi.codeStyle.PredefinedCodeStyle
88

9-
class MoodleJavascriptPredefinedCodeStyle : PredefinedCodeStyle("Moodle", JavascriptLanguage.INSTANCE) {
9+
class MoodleJavascriptPredefinedCodeStyle : PredefinedCodeStyle("Moodle", JavascriptLanguage) {
1010
override fun apply(settings: CodeStyleSettings, language: Language) {
1111
val commonSettings = settings.getCommonSettings(language)
1212
180.also { commonSettings.RIGHT_MARGIN = it }

src/main/kotlin/il/co/sysbind/intellij/moodledev/project/MoodleSettingsForm.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,21 @@ class MoodleSettingsForm(val project: Project) : PhpFrameworkConfigurable {
7575
if (isBeingUsed) {
7676
val codeStyleSettings = CodeStyle.getSettings(project)
7777
MoodlePhpPredefinedCodeStyle().apply(codeStyleSettings, PhpLanguage.INSTANCE)
78-
MoodleJavascriptPredefinedCodeStyle().apply(codeStyleSettings, JavascriptLanguage.INSTANCE)
78+
MoodleJavascriptPredefinedCodeStyle().apply(codeStyleSettings, JavascriptLanguage)
7979
MoodleLessPredefinedCodeStyle().apply(codeStyleSettings, LESSLanguage.INSTANCE)
8080
MoodleScssPredefinedCodeStyle().apply(codeStyleSettings, SCSSLanguage.INSTANCE)
8181
if (settings.moodlePath.isNotBlank()) {
8282
// Get the PhpIncludePathManager for the current project
8383
val includePathManager = PhpIncludePathManager.getInstance(project)
84+
8485
// Add the Moodle path to the PHP include paths
8586
val includePathList = includePathManager.includePath
86-
if (!includePathList.contains(moodlePathStr)) {
87+
88+
// Compare the input Moodle path with the project root directory
89+
val projectRootPath = project.basePath ?: ""
90+
91+
// Check if the path exists in the list or matches the project root location
92+
if (moodlePathStr != projectRootPath && !includePathList.contains(moodlePathStr)) {
8793
includePathList.add(moodlePathStr)
8894
includePathManager.includePath = includePathList
8995
}

0 commit comments

Comments
 (0)