Browse Source

fix:defaultProgramRunner is deprecated

littleheuer 4 years ago
parent
commit
355346064e

+ 4 - 3
build.gradle.kts

@@ -19,12 +19,13 @@ version = properties("pluginVersion")
 repositories {
     mavenCentral()
     maven("https://oss.sonatype.org/content/repositories/snapshots/")
+    maven("https://cache-redirector.jetbrains.com/intellij-dependencies")
 }
 
 dependencies {
-    implementation("org.jetbrains.kotlin:kotlin-stdlib")
-    testImplementation("org.junit.jupiter:junit-jupiter-api:5.7.0")
-    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.7.0")
+    implementation("org.jetbrains.kotlin:kotlin-stdlib:1.5.21")
+    testImplementation("org.junit.jupiter:junit-jupiter-api:5.7.2")
+    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.7.2")
 }
 
 // See https://github.com/JetBrains/gradle-intellij-plugin/

+ 0 - 1
src/main/kotlin/io/xmake/project/XMakeModuleBuilder.kt

@@ -1,6 +1,5 @@
 package io.xmake.project
 
-import XMakeSdkSettingsStep
 import com.intellij.ide.util.projectWizard.*
 import com.intellij.openapi.Disposable
 import com.intellij.openapi.diagnostic.Logger

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

@@ -1,3 +1,5 @@
+package io.xmake.project
+
 import com.intellij.ide.util.projectWizard.ModuleBuilder
 import com.intellij.ide.util.projectWizard.ModuleWizardStep
 import com.intellij.ide.util.projectWizard.WizardContext
@@ -6,8 +8,6 @@ import com.intellij.openapi.roots.ModifiableRootModel
 import com.intellij.ui.layout.panel
 import javax.swing.JComponent
 import com.intellij.openapi.util.Disposer
-import io.xmake.project.XMakeModuleBuilder
-import io.xmake.project.XMakeNewProjectPanel
 
 
 class XMakeSdkSettingsStep(

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

@@ -11,6 +11,7 @@ import com.intellij.ui.ColoredListCellRenderer
 import com.intellij.ui.JBColor
 import com.intellij.ui.SimpleTextAttributes
 import com.intellij.ui.components.JBList
+import com.intellij.ui.components.JBScrollPane
 import com.intellij.ui.layout.CCFlags
 import com.intellij.ui.layout.panel
 import io.xmake.icons.XMakeIcons
@@ -18,7 +19,6 @@ import io.xmake.shared.XMakeProblem
 import java.awt.Font
 import java.awt.event.MouseEvent
 import java.awt.event.MouseAdapter
-import javax.swing.JScrollPane
 import javax.swing.JList
 import java.io.File
 import javax.swing.ListSelectionModel
@@ -80,7 +80,7 @@ class XMakeToolWindowProblemPanel(project: Project) : SimpleToolWindowPanel(fals
     }
 
     // the problem pane
-    val problemPane = JScrollPane(problemList).apply {
+    val problemPane = JBScrollPane(problemList).apply {
         border = null
     }
 

+ 28 - 0
src/main/kotlin/io/xmake/run/XMakeDefaultRunner.kt

@@ -0,0 +1,28 @@
+package io.xmake.run
+
+import com.intellij.execution.ExecutionManager
+import com.intellij.execution.configurations.RunProfile
+import com.intellij.execution.configurations.RunProfileState
+import com.intellij.execution.configurations.RunnerSettings
+import com.intellij.execution.executors.DefaultRunExecutor
+import com.intellij.execution.runners.*
+import com.intellij.execution.ui.RunContentDescriptor
+import com.intellij.openapi.diagnostic.Logger
+import org.jetbrains.concurrency.resolvedPromise
+import java.util.concurrent.ExecutionException
+import kotlin.jvm.Throws
+
+abstract class XMakeDefaultRunner : ProgramRunner<RunnerSettings> {
+
+    @Throws(ExecutionException::class)
+    override fun execute(environment: ExecutionEnvironment) {
+        val state = environment.state ?: return
+        @Suppress("UnstableApiUsage")
+        ExecutionManager.getInstance(environment.project).startRunProfile(environment) {
+            resolvedPromise(doExecute(state, environment))
+        }
+    }
+    protected open fun doExecute(state: RunProfileState, environment: ExecutionEnvironment) : RunContentDescriptor? {
+        return executeState(state, environment, this)
+    }
+}

+ 6 - 2
src/main/kotlin/io/xmake/run/XMakeRunConfigurationProducer.kt

@@ -1,12 +1,16 @@
 package io.xmake.run
 
 import com.intellij.execution.actions.ConfigurationContext
-import com.intellij.execution.actions.RunConfigurationProducer
+import com.intellij.execution.actions.LazyRunConfigurationProducer
+import com.intellij.execution.configurations.ConfigurationFactory
 import com.intellij.openapi.diagnostic.Logger
 import com.intellij.openapi.util.Ref
 import com.intellij.psi.PsiElement
 
-class XMakeRunConfigurationProducer : RunConfigurationProducer<XMakeRunConfiguration>(XMakeRunConfigurationType()) {
+class XMakeRunConfigurationProducer : LazyRunConfigurationProducer<XMakeRunConfiguration>() {
+    override fun getConfigurationFactory(): ConfigurationFactory {
+        return XMakeRunConfigurationType.getInstance().factory
+    }
 
     override fun isConfigurationFromContext(
             configuration: XMakeRunConfiguration,

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

@@ -3,6 +3,7 @@ package io.xmake.run
 import com.intellij.execution.BeforeRunTask
 import com.intellij.execution.configurations.ConfigurationFactory
 import com.intellij.execution.configurations.ConfigurationTypeBase
+import com.intellij.execution.configurations.ConfigurationTypeUtil
 import com.intellij.execution.configurations.RunConfiguration
 import com.intellij.openapi.diagnostic.Logger
 import com.intellij.openapi.project.Project
@@ -39,6 +40,8 @@ class XMakeRunConfigurationType : ConfigurationTypeBase(
     val factory: ConfigurationFactory get() = configurationFactories.single()
 
     companion object {
+        fun getInstance(): XMakeRunConfigurationType =
+            ConfigurationTypeUtil.findConfigurationType(XMakeRunConfigurationType::class.java)
 
         // get log
         private val Log = Logger.getInstance(XMakeRunConfigurationType::class.java.getName())

+ 14 - 5
src/main/kotlin/io/xmake/run/XMakeRunner.kt

@@ -1,11 +1,13 @@
 package io.xmake.run
 
 import com.intellij.execution.configurations.RunProfile
+import com.intellij.execution.configurations.RunProfileState
 import com.intellij.execution.executors.DefaultRunExecutor
-import com.intellij.execution.runners.DefaultProgramRunner
+import com.intellij.execution.runners.ExecutionEnvironment
+import com.intellij.execution.ui.RunContentDescriptor
 import com.intellij.openapi.diagnostic.Logger
 
-class XMakeRunner : DefaultProgramRunner() {
+open class XMakeRunner : XMakeDefaultRunner() {
 
     override fun canRun(executorId: String, profile: RunProfile): Boolean {
         return executorId == DefaultRunExecutor.EXECUTOR_ID && profile is XMakeRunConfiguration
@@ -13,9 +15,16 @@ class XMakeRunner : DefaultProgramRunner() {
 
     override fun getRunnerId(): String = "XMakeRunner"
 
+    override fun doExecute(state: RunProfileState, environment: ExecutionEnvironment): RunContentDescriptor? {
+        val configuration = environment.runProfile
+        return if (configuration is XMakeRunConfiguration) {
+            super.doExecute(state, environment)
+        } else {
+            null
+        }
+    }
     companion object {
-
         // get log
-        private val Log = Logger.getInstance(XMakeRunner::class.java.getName())
+        private val Log = Logger.getInstance(XMakeRunner::class.java.name)
     }
-}
+}

+ 5 - 5
src/main/kotlin/io/xmake/shared/XMakeConfiguration.kt

@@ -45,7 +45,7 @@ class XMakeConfiguration(// the project
         get() {
 
             // make parameters
-            val parameters = mutableListOf<String>("-r")
+            val parameters = mutableListOf("-r")
             if (data.verboseOutput) {
                 parameters.add("-v")
             } else {
@@ -61,7 +61,7 @@ class XMakeConfiguration(// the project
         get() {
 
             // make parameters
-            val parameters = mutableListOf<String>("c")
+            val parameters = mutableListOf("c")
             if (data.verboseOutput) {
                 parameters.add("-v")
             }
@@ -75,7 +75,7 @@ class XMakeConfiguration(// the project
         get() {
 
             // make parameters
-            val parameters = mutableListOf<String>("f", "-c")
+            val parameters = mutableListOf("f", "-c")
             if (data.verboseOutput) {
                 parameters.add("-v")
             }
@@ -93,7 +93,7 @@ class XMakeConfiguration(// the project
         get() {
 
             // make parameters
-            val parameters = mutableListOf<String>("f", "-p", data.currentPlatform, "-a", data.currentArchitecture, "-m", data.currentMode)
+            val parameters = mutableListOf("f", "-p", data.currentPlatform, "-a", data.currentArchitecture, "-m", data.currentMode)
             if (data.currentPlatform == "android" && data.androidNDKDirectory != "") {
                 parameters.add("--ndk=\"${data.androidNDKDirectory}\"")
             }
@@ -114,7 +114,7 @@ class XMakeConfiguration(// the project
         get() {
 
             // make parameters
-            val parameters = mutableListOf<String>("f", "-y")
+            val parameters = mutableListOf("f", "-y")
             if (data.verboseOutput) {
                 parameters.add("-v")
             }

+ 2 - 3
src/main/resources/META-INF/plugin.xml

@@ -2,9 +2,8 @@
 <idea-plugin>
     <id>io.xmake</id>
     <name>XMake</name>
-    <version>1.0.7</version>
+    <version>1.0.8</version>
     <vendor email="[email protected]" url="https://xmake.io">xmake.io</vendor>
-
     <description><![CDATA[
     A XMake integration plugin in Intellij Platform<br>
     <p><a href="https://github.com/xmake-io/xmake-idea">Source Code</a> | <a href="https://discord.gg/xmake">Discord</a> | <a href="https://xmake.io/#/about/sponsor">Donate</a> | <a href="http://xmake.io">XMake Homepage</a></p>
@@ -85,7 +84,7 @@
     </change-notes>
 
     <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
-    <idea-version since-build="201.0"/>
+    <idea-version since-build="201.0" until-build="212.*"/>
 
     <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
          on how to target different products -->