Procházet zdrojové kódy

Merge pull request #55 from windchargerj/bugFix

Bug fix for compatibility issues
ruki před 1 rokem
rodič
revize
308d4ab85a

+ 1 - 1
gradle.properties

@@ -1,5 +1,5 @@
 pluginVersion=1.3.9
-pluginSinceBuild=223.7571.182
+pluginSinceBuild=233.11799.238
 pluginUntilBuild=242.*
 
 # Opt-out flag for bundling Kotlin standard library.

+ 5 - 2
src/main/kotlin/io/xmake/project/XMakeProjectToolkitConfigurable.kt

@@ -15,8 +15,11 @@ import javax.swing.JComponent
 import javax.swing.JList
 
 class XMakeProjectToolkitConfigurable : Configurable, Configurable.NoScroll {
+
+    private val toolkitManager = ToolkitManager.getInstance()
+
     override fun createComponent(): JComponent {
-        val registeredToolkit = ToolkitManager.getInstance().getRegisteredToolkits()
+        val registeredToolkit = toolkitManager.getRegisteredToolkits()
         val listModel = DefaultListModel<ToolkitListItem>().apply { registeredToolkit.forEach {
             addElement(ToolkitListItem.ToolkitItem(it).asRegistered()) }
         }
@@ -55,7 +58,7 @@ class XMakeProjectToolkitConfigurable : Configurable, Configurable.NoScroll {
                     Messages.getQuestionIcon()
                 ) == Messages.YES
             ) {
-                ToolkitManager.getInstance().unregisterToolkit(toolkit)
+                toolkitManager.unregisterToolkit(toolkit)
                 listModel.removeElement(toolkitList.selectedValue)
             }
         }

+ 0 - 61
src/main/kotlin/io/xmake/project/XMakeSdkType.kt

@@ -1,61 +0,0 @@
-package io.xmake.project
-
-import com.intellij.openapi.diagnostic.Logger
-import com.intellij.openapi.projectRoots.*
-import io.xmake.icons.XMakeIcons
-import io.xmake.utils.SystemUtils
-import org.jdom.Element
-import javax.swing.Icon
-
-@Deprecated("Please refer to the relevant content in folder io/xmake/project/toolkit.")
-class XMakeSdkType : SdkType("XMake SDK") {
-
-    override fun suggestHomePath(): String? {
-        val program = SystemUtils.xmakeProgram
-        if (program == "") {
-            return null
-        }
-        return program
-    }
-
-    override fun isValidSdkHome(s: String): Boolean {
-        return true
-    }
-
-    override fun suggestSdkName(currentSdkName: String?, sdkHome: String): String {
-        return "XMake"
-    }
-
-    override fun getVersionString(sdk: Sdk): String {
-        return SystemUtils.xmakeVersion
-    }
-
-    override fun createAdditionalDataConfigurable(sdkModel: SdkModel, sdkModificator: SdkModificator): AdditionalDataConfigurable? {
-        return null
-    }
-
-    override fun getPresentableName(): String {
-        return "XMake SDK"
-    }
-
-    override fun saveAdditionalData(sdkAdditionalData: SdkAdditionalData, element: Element) {
-    }
-
-    override fun getIcon(): Icon {
-        return XMakeIcons.FILE
-    }
-
-    override fun getIconForAddAction(): Icon {
-        return XMakeIcons.FILE
-    }
-
-    companion object {
-
-        // the log
-        private val Log = Logger.getInstance(XMakeSdkType::class.java.getName())
-
-        // the instance
-        val instance: XMakeSdkType
-            get() = findInstance(XMakeSdkType::class.java)
-    }
-}

+ 0 - 4
src/main/kotlin/io/xmake/project/XMakeToolWindowOutputPanel.kt

@@ -46,10 +46,6 @@ class XMakeToolWindowOutputPanel(// the project
         contentManager?.setSelectedContent(contentManager.getContent(0)!!)
     }
 
-    override fun getData(dataId: String): Any? {
-        return super.getData(dataId)
-    }
-
     companion object {
         private val Log = Logger.getInstance(XMakeToolWindowOutputPanel::class.java.getName())
     }

+ 5 - 9
src/main/kotlin/io/xmake/project/XMakeToolWindowProblemPanel.kt

@@ -102,7 +102,7 @@ class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(fals
 
         // init toolbar
         setToolbar(toolbar.component)
-        toolbar.setTargetComponent(this)
+        toolbar.targetComponent = this
 
         // init content
         setContent(content)
@@ -110,7 +110,7 @@ class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(fals
         // init double click listener
         problemList.addMouseListener(object: MouseAdapter() {
             override fun mouseClicked(e: MouseEvent) {
-                if (e.getClickCount() == 1 || e.getClickCount() == 2) {
+                if (e.clickCount == 1 || e.clickCount == 2) {
 
                     // get the clicked problem
                     val index   = problemList.locationToIndex(e.getPoint())
@@ -120,12 +120,12 @@ class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(fals
                         val problem     = problems[index]
                         var filename    = problem.file
                         if (File(filename).exists()) {
-                            filename = File(filename).getAbsolutePath()
+                            filename = File(filename).absolutePath
                         } else {
                             filename = File(
                                 // Todo: Check if correct
                                 (RunManager.getInstance(project).selectedConfiguration?.configuration as XMakeRunConfiguration).runWorkingDir
-                                , filename).getAbsolutePath()
+                                , filename).absolutePath
                         }
 
                         // open this file
@@ -140,7 +140,7 @@ class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(fals
                             val editor = FileEditorManager.getInstance(project).selectedTextEditor
                             if (editor !== null) {
 
-                                if (e.getClickCount() == 2 && editor.markupModel.allHighlighters.size > 0) {
+                                if (e.clickCount == 2 && editor.markupModel.allHighlighters.size > 0) {
                                     editor.markupModel.removeAllHighlighters()
                                     return
                                 }
@@ -167,10 +167,6 @@ class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(fals
         })
     }
 
-    override fun getData(dataId: String): Any? {
-        return super.getData(dataId)
-    }
-
     companion object {
         private val Log = Logger.getInstance(XMakeToolWindowProblemPanel::class.java.getName())
     }

+ 2 - 2
src/main/kotlin/io/xmake/project/target/TargetManager.kt

@@ -1,7 +1,7 @@
 package io.xmake.project.target
 
 import com.intellij.openapi.components.Service
-import com.intellij.openapi.components.service
+import com.intellij.openapi.components.serviceOrNull
 import com.intellij.openapi.diagnostic.logger
 import com.intellij.openapi.project.Project
 import io.xmake.project.toolkit.Toolkit
@@ -32,7 +32,7 @@ class TargetManager(
     }
 
     companion object {
-        fun getInstance(project: Project): TargetManager = project.service()
+        fun getInstance(project: Project): TargetManager = project.serviceOrNull() ?: throw IllegalStateException()
         private val Log = logger<TargetManager>()
     }
 }

+ 3 - 3
src/main/kotlin/io/xmake/project/toolkit/ToolkitManager.kt

@@ -84,7 +84,7 @@ class ToolkitManager(private val scope: CoroutineScope) : PersistentStateCompone
                 .split(Regex("\\r\\n|\\n|\\r"))
                 .filterNot { it.isBlank() || it.contains("not found") }
                 .distinct()
-            paths.forEach { emit(it); println("emit path on ${host.type}: $it") }
+            paths.forEach { emit(it); Log.info("emit path on ${host.type}: $it") }
         }
     }
 
@@ -113,7 +113,7 @@ class ToolkitManager(private val scope: CoroutineScope) : PersistentStateCompone
                 }.flowOn(Dispatchers.IO).buffer()
                     .distinctUntilChanged()
                     .filterNot { it.isBlank() }
-                    .onEach { println("output path: $it") }
+                    .onEach { Log.info("output path: $it") }
                     .map { path -> host to path }
             }.flowOn(Dispatchers.Default).buffer()
 
@@ -238,7 +238,7 @@ class ToolkitManager(private val scope: CoroutineScope) : PersistentStateCompone
     }
 
     companion object {
-        fun  getInstance(): ToolkitManager = service()
+        fun getInstance(): ToolkitManager = serviceOrNull() ?: throw IllegalStateException()
         private val Log = logger<ToolkitManager>()
     }
 }

+ 3 - 0
src/main/kotlin/io/xmake/project/wizard/XMakeNewProjectWizardData.kt

@@ -27,6 +27,9 @@ interface XMakeNewProjectWizardData : NewProjectWizardBaseData {
 
     var kind: String
 
+    override val contentEntryPath: String
+        get() = "$path/$name"
+
     companion object {
 
         val KEY: Key<XMakeNewProjectWizardData> = Key.create(XMakeNewProjectWizardData::class.java.name)

+ 6 - 6
src/main/kotlin/io/xmake/project/wizard/XMakeProjectWizardStep.kt

@@ -4,11 +4,9 @@ import com.intellij.execution.RunManager
 import com.intellij.execution.configurations.GeneralCommandLine
 import com.intellij.execution.process.ProcessNotCreatedException
 import com.intellij.execution.wsl.WSLDistribution
-import com.intellij.ide.projectWizard.NewProjectWizardCollector.Base.logLocationChanged
 import com.intellij.ide.util.projectWizard.ModuleBuilder
 import com.intellij.ide.util.projectWizard.WizardContext
 import com.intellij.ide.wizard.AbstractNewProjectWizardStep
-import com.intellij.ide.wizard.NewProjectWizardBaseData
 import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.baseData
 import com.intellij.ide.wizard.NewProjectWizardBaseStep
 import com.intellij.openapi.application.runWriteAction
@@ -51,12 +49,12 @@ import kotlin.io.path.Path
 
 class XMakeProjectWizardStep(parent: NewProjectWizardBaseStep) :
     AbstractNewProjectWizardStep(parent),
-    NewProjectWizardBaseData by parent.baseData!!,
     XMakeNewProjectWizardData {
-
     private val toolkitManager = ToolkitManager.getInstance()
     private val scope = CoroutineScope(Dispatchers.IO)
 
+    override val nameProperty: GraphProperty<String> = baseData!!.nameProperty
+    override val pathProperty: GraphProperty<String> = baseData!!.pathProperty
     override val remotePathProperty: GraphProperty<String> = propertyGraph.lazyProperty { "" }
     override val languagesProperty: GraphProperty<String> =
         propertyGraph.lazyProperty { languagesModel.selectedItem.toString() }
@@ -68,6 +66,8 @@ class XMakeProjectWizardStep(parent: NewProjectWizardBaseStep) :
     private val isOnRemoteProperty: GraphProperty<Boolean> =
         propertyGraph.lazyProperty { toolkit?.isOnRemote == true }
 
+    override var name: String = baseData!!.name
+    override var path: String = baseData!!.path
     override var remotePath: String by remotePathProperty
     override var language: String by languagesProperty
     override var kind: String by kindsProperty
@@ -114,7 +114,6 @@ class XMakeProjectWizardStep(parent: NewProjectWizardBaseStep) :
                     .bindText(remotePathProperty.toUiPathProperty())
                     .align(AlignX.FILL)
                     .trimmedTextValidation(*validationsIf(CHECK_NON_EMPTY, CHECK_DIRECTORY) { !isOnRemote })
-                    .whenTextChangedFromUi { logLocationChanged() }
                     .remoteLocationComment(context, locationProperty)
             }.enabledIf(isOnRemoteProperty).visibleIf(isOnRemoteProperty).bottomGap(BottomGap.SMALL)
 
@@ -130,7 +129,8 @@ class XMakeProjectWizardStep(parent: NewProjectWizardBaseStep) :
                     activatedToolkit?.let { browser.addBrowserListenerByToolkit(it) }
                 }
                     .validationRequestor(WHEN_PROPERTY_CHANGED(toolkitProperty))
-                    .validation(CHECK_NON_EMPTY_TOOLKIT.forToolkitComboBox())
+                    .validationOnInput(CHECK_NON_EMPTY_TOOLKIT.forToolkitComboBox())
+                    .validationOnApply(CHECK_NON_EMPTY_TOOLKIT.forToolkitComboBox())
                     .align(AlignX.FILL)
 
             }.bottomGap(BottomGap.SMALL)

+ 0 - 2
src/main/kotlin/io/xmake/run/XMakeRunConfigurationType.kt

@@ -37,8 +37,6 @@ class XMakeRunConfigurationType : ConfigurationTypeBase(
             // the value needs to be kept the same even if the display name changes in the future
             // in order to maintain compatibility with older configs.
             override fun getId() = "Start and Debug"
-
-            override fun isConfigurationSingletonByDefault(): Boolean = true
         })
     }