mirror of
https://github.com/jlengrand/compose-multiplatform.git
synced 2026-03-10 08:11:20 +00:00
Fix deprecated Intellij API usages (#2554)
* Update Intellij Gradle plugin * Drop support for Intellij < 2021.3 The latest stable Android Studio (Dolphin) is based on 2021.3, so we can drop support for older versions. * Remove usages of deprecated Intellij APIs * Remove upper Intellij version limit
This commit is contained in:
@@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile
|
||||
plugins {
|
||||
id("java")
|
||||
id("org.jetbrains.kotlin.jvm") version "1.5.10"
|
||||
id("org.jetbrains.intellij") version "1.6.0"
|
||||
id("org.jetbrains.intellij") version "1.10.1"
|
||||
id("org.jetbrains.changelog") version "1.3.1"
|
||||
}
|
||||
|
||||
@@ -57,7 +57,6 @@ tasks {
|
||||
|
||||
patchPluginXml {
|
||||
sinceBuild.set(projectProperties.pluginSinceBuild)
|
||||
untilBuild.set(projectProperties.pluginUntilBuild)
|
||||
}
|
||||
|
||||
runPluginVerifier {
|
||||
@@ -72,7 +71,6 @@ class ProjectProperties(private val project: Project) {
|
||||
val platformDownloadSources get() = stringProperty("platform.download.sources").toBoolean()
|
||||
val pluginChannels get() = listProperty("plugin.channels")
|
||||
val pluginSinceBuild get() = stringProperty("plugin.since.build")
|
||||
val pluginUntilBuild get() = stringProperty("plugin.until.build")
|
||||
val pluginVerifierIdeVersions get() = listProperty("plugin.verifier.ide.versions")
|
||||
|
||||
private fun stringProperty(key: String): String =
|
||||
|
||||
@@ -5,11 +5,10 @@ kotlin.stdlib.default.dependency=false
|
||||
deploy.version=0.1-SNAPSHOT
|
||||
|
||||
plugin.channels=snapshots
|
||||
plugin.since.build=203
|
||||
plugin.until.build=233.*
|
||||
plugin.since.build=213
|
||||
## See https://jb.gg/intellij-platform-builds-list for available build versions.
|
||||
plugin.verifier.ide.versions=2021.1, 2022.1, 2022.2
|
||||
plugin.verifier.ide.versions=2021.3, 2022.1, 2022.2
|
||||
|
||||
platform.type=IC
|
||||
platform.version=2021.1
|
||||
platform.version=2021.3
|
||||
platform.download.sources=true
|
||||
|
||||
@@ -8,33 +8,18 @@ package org.jetbrains.compose.desktop.ide.preview
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys
|
||||
import com.intellij.openapi.actionSystem.DataContext
|
||||
import com.intellij.openapi.application.ReadAction
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.editor.event.CaretEvent
|
||||
import com.intellij.openapi.editor.event.CaretListener
|
||||
import com.intellij.openapi.editor.toolbar.floating.AbstractFloatingToolbarProvider
|
||||
import com.intellij.openapi.editor.toolbar.floating.FloatingToolbarComponent
|
||||
import com.intellij.openapi.editor.toolbar.floating.FloatingToolbarComponentImpl
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.util.concurrency.AppExecutorUtil
|
||||
|
||||
class PreviewFloatingToolbarProvider : AbstractFloatingToolbarProvider(PREVIEW_EDITOR_TOOLBAR_GROUP_ID) {
|
||||
override val autoHideable = false
|
||||
override val priority: Int = 100
|
||||
|
||||
// todo: disable if not in Compose JVM module
|
||||
override fun register(toolbar: FloatingToolbarComponent, parentDisposable: Disposable) {
|
||||
try {
|
||||
// todo: use provided data context once 2020.3 is no longer supported
|
||||
val toolbarClass = FloatingToolbarComponentImpl::class.java
|
||||
val getDataMethod = toolbarClass.getMethod("getData", String::class.java)
|
||||
val editor = getDataMethod.invoke(toolbar, CommonDataKeys.EDITOR.name) as? Editor ?: return
|
||||
registerComponent(toolbar, editor, parentDisposable)
|
||||
} catch (e: Exception) {
|
||||
LOG.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
override fun register(dataContext: DataContext, component: FloatingToolbarComponent, parentDisposable: Disposable) {
|
||||
val editor = dataContext.getData(CommonDataKeys.EDITOR) ?: return
|
||||
registerComponent(component, editor, parentDisposable)
|
||||
@@ -59,7 +44,7 @@ internal class PreviewEditorToolbarVisibilityUpdater(
|
||||
private val editor: Editor
|
||||
) : CaretListener {
|
||||
override fun caretPositionChanged(event: CaretEvent) {
|
||||
ReadAction.nonBlocking { updateVisibility() }
|
||||
runNonBlocking { updateVisibility() }
|
||||
.inSmartMode(project)
|
||||
.submit(AppExecutorUtil.getAppExecutorService())
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.testFramework.LightVirtualFile
|
||||
import com.intellij.util.concurrency.annotations.RequiresReadLock
|
||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
|
||||
@@ -6,10 +6,13 @@
|
||||
package org.jetbrains.compose.desktop.ide.preview
|
||||
|
||||
import com.intellij.ide.lightEdit.LightEdit
|
||||
import com.intellij.openapi.application.NonBlockingReadAction
|
||||
import com.intellij.openapi.application.ReadAction
|
||||
import com.intellij.openapi.externalSystem.model.Key
|
||||
import com.intellij.openapi.externalSystem.model.project.AbstractNamedData
|
||||
import com.intellij.openapi.project.Project
|
||||
import java.lang.reflect.Modifier
|
||||
import java.util.concurrent.Callable
|
||||
|
||||
// todo: filter only Compose projects
|
||||
internal fun isPreviewCompatible(project: Project): Boolean =
|
||||
@@ -33,4 +36,10 @@ internal val kotlinTargetDataKey: Key<out AbstractNamedData> = run {
|
||||
?: error("Cannot find '${kotlinTargetDataClass.canonicalName}.Companion.getKEY'")
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
getKeyMethod.invoke(companionInstance) as Key<out AbstractNamedData>
|
||||
}
|
||||
}
|
||||
|
||||
internal inline fun runNonBlocking(crossinline fn: () -> Unit): NonBlockingReadAction<Void?> =
|
||||
ReadAction.nonBlocking(Callable<Void?> {
|
||||
fn()
|
||||
null
|
||||
})
|
||||
Reference in New Issue
Block a user