From 0b59688043406bfacca171c693de9f27e5223ac4 Mon Sep 17 00:00:00 2001 From: Maksim Kurnikov Date: Fri, 28 Jul 2023 17:13:37 +0300 Subject: [PATCH] add 232 support --- .github/workflows/check.yml | 2 +- gradle-222.properties | 2 - gradle-223.properties | 2 - gradle-231.properties | 2 - gradle-232.properties | 13 ++++ gradle.properties | 4 +- .../org/move/cli/MoveProjectOpenProcessor.kt | 66 +++++++++++++++++++ .../org/move/ide/inspections/imports/ui.kt | 4 +- src/main/kotlin/org/move/utils/ui/compat.kt | 16 +++++ 9 files changed, 101 insertions(+), 10 deletions(-) create mode 100644 gradle-232.properties create mode 100644 src/232/main/kotlin/org/move/cli/MoveProjectOpenProcessor.kt diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 5001b70c2..4b3400e60 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -11,7 +11,7 @@ jobs: strategy: matrix: os: [ ubuntu-latest ] - gradle-properties-version: [ 222, 223, 231 ] + gradle-properties-version: [ 222, 223, 231, 232 ] runs-on: ${{ matrix.os }} env: diff --git a/gradle-222.properties b/gradle-222.properties index 41ccdafbe..b2323b465 100644 --- a/gradle-222.properties +++ b/gradle-222.properties @@ -11,5 +11,3 @@ platformVersion = 2022.2 # Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 platformPlugins = org.toml.lang verifierIdeVersions = IC-2022.2 - -jbrVersion=17.0.4.1b617.2 diff --git a/gradle-223.properties b/gradle-223.properties index 1597cfcc1..d85a07927 100644 --- a/gradle-223.properties +++ b/gradle-223.properties @@ -11,5 +11,3 @@ platformVersion = 2022.3 # Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 platformPlugins = org.toml.lang verifierIdeVersions = IC-2022.3 - -jbrVersion=17.0.4.1b617.2 diff --git a/gradle-231.properties b/gradle-231.properties index 8ade4c95c..0125ca1a7 100644 --- a/gradle-231.properties +++ b/gradle-231.properties @@ -11,5 +11,3 @@ platformVersion = 2023.1 # Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 platformPlugins = org.toml.lang verifierIdeVersions = IC-2023.1 - -jbrVersion=17.0.4.1b617.2 diff --git a/gradle-232.properties b/gradle-232.properties new file mode 100644 index 000000000..95bb99fc5 --- /dev/null +++ b/gradle-232.properties @@ -0,0 +1,13 @@ +# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html +# for insight into build numbers and IntelliJ Platform versions. +pluginSinceBuild = 232 +pluginUntilBuild = 232.* + +# IntelliJ Platform Properties -> https://github.com/JetBrains/gradle-intellij-plugin#intellij-platform-properties +platformType = PC +platformVersion = 2023.2 + +# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html +# Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 +platformPlugins = org.toml.lang +verifierIdeVersions = IC-2023.2 diff --git a/gradle.properties b/gradle.properties index 76b8c13e3..fd3ecb1ed 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,9 +13,11 @@ org.gradle.caching = true kotlin.daemon.jvmargs=-Xmx4096m org.gradle.jvmargs=-Xms512m -Xmx4096m "-XX:MaxMetaspaceSize=512m" +jbrVersion=17.0.7+7-b1000.6 propertiesPluginEnvironmentNameProperty=shortPlatformVersion # properties files # supported versions are 221, 222, 223, 231, default is 221 # pass ORG_GRADLE_PROJECT_shortPlatformVersion environment variable to overwrite -shortPlatformVersion=222 +shortPlatformVersion=232 + diff --git a/src/232/main/kotlin/org/move/cli/MoveProjectOpenProcessor.kt b/src/232/main/kotlin/org/move/cli/MoveProjectOpenProcessor.kt new file mode 100644 index 000000000..7f5ece3c5 --- /dev/null +++ b/src/232/main/kotlin/org/move/cli/MoveProjectOpenProcessor.kt @@ -0,0 +1,66 @@ +package org.move.cli + +import com.intellij.openapi.project.Project +import com.intellij.openapi.startup.StartupManager +import com.intellij.openapi.util.io.FileUtil +import com.intellij.openapi.vfs.VirtualFile +import com.intellij.platform.PlatformProjectOpenProcessor +import com.intellij.projectImport.ProjectOpenProcessor +import org.move.cli.runConfigurations.addDefaultBuildRunConfiguration +import org.move.cli.runConfigurations.aptos.Aptos +import org.move.cli.settings.aptosPath +import org.move.cli.settings.moveSettings +import org.move.ide.MoveIcons +import org.move.ide.newProject.openFile +import org.move.ide.notifications.updateAllNotifications +import org.move.openapiext.aptosBuildRunConfigurations +import org.move.openapiext.aptosRunConfigurations +import org.move.openapiext.contentRoots +import javax.swing.Icon + +class MoveProjectOpenProcessor : ProjectOpenProcessor() { + override val name: String get() = "Move" + override val icon: Icon get() = MoveIcons.MOVE + + override fun canOpenProject(file: VirtualFile): Boolean = + FileUtil.namesEqual(file.name, Consts.MANIFEST_FILE) + || (file.isDirectory && file.findChild(Consts.MANIFEST_FILE) != null) + + override fun doOpenProject( + virtualFile: VirtualFile, + projectToClose: Project?, + forceOpenInNewFrame: Boolean, + ): Project? { + val platformOpenProcessor = PlatformProjectOpenProcessor.getInstance() + return platformOpenProcessor.doOpenProject( + virtualFile, + projectToClose, + forceOpenInNewFrame + )?.also { + StartupManager.getInstance(it).runAfterOpened { + // create default build configuration if it doesn't exist + if (it.aptosBuildRunConfigurations().isEmpty()) { + val isEmpty = it.aptosRunConfigurations().isEmpty() + it.addDefaultBuildRunConfiguration(isSelected = isEmpty) + } + + val packageRoot = it.contentRoots.firstOrNull() + if (packageRoot != null) { + val manifest = packageRoot.findChild(Consts.MANIFEST_FILE) + if (manifest != null) { + it.openFile(manifest) + } + updateAllNotifications(it) + } + + val aptosPath = Aptos.suggestPath() + if (aptosPath != null && it.aptosPath?.toString().isNullOrBlank()) { + it.moveSettings.modify { + it.aptosPath = aptosPath + } + } + it.moveProjects.refreshAllProjects() + } + } + } +} diff --git a/src/main/kotlin/org/move/ide/inspections/imports/ui.kt b/src/main/kotlin/org/move/ide/inspections/imports/ui.kt index fc2632d87..2c5821057 100644 --- a/src/main/kotlin/org/move/ide/inspections/imports/ui.kt +++ b/src/main/kotlin/org/move/ide/inspections/imports/ui.kt @@ -5,7 +5,6 @@ package org.move.ide.inspections.imports -import com.intellij.codeInsight.navigation.NavigationUtil import com.intellij.ide.util.DefaultPsiElementCellRenderer import com.intellij.openapi.actionSystem.DataContext import com.intellij.openapi.project.Project @@ -18,6 +17,7 @@ import com.intellij.ui.popup.list.PopupListElementRenderer import org.jetbrains.annotations.TestOnly import org.move.ide.utils.imports.ImportCandidate import org.move.openapiext.common.isUnitTestMode +import org.move.utils.ui.NavigationUtilCompat import java.awt.BorderLayout import javax.swing.Icon import javax.swing.JPanel @@ -108,7 +108,7 @@ private class PopupImportItemUi(private val project: Project, private val dataCo } } } - NavigationUtil.hidePopupIfDumbModeStarts(popup, project) + NavigationUtilCompat.hidePopupIfDumbModeStarts(popup, project) popup.showInBestPositionFor(dataContext) } } diff --git a/src/main/kotlin/org/move/utils/ui/compat.kt b/src/main/kotlin/org/move/utils/ui/compat.kt index 3988ccb81..7e60bbd80 100644 --- a/src/main/kotlin/org/move/utils/ui/compat.kt +++ b/src/main/kotlin/org/move/utils/ui/compat.kt @@ -3,6 +3,9 @@ package org.move.utils.ui import com.intellij.openapi.Disposable import com.intellij.openapi.application.ModalityState import com.intellij.openapi.application.invokeLater +import com.intellij.openapi.project.DumbService +import com.intellij.openapi.project.Project +import com.intellij.openapi.ui.popup.JBPopup import com.intellij.openapi.util.Disposer import com.intellij.ui.PopupMenuListenerAdapter import com.intellij.ui.dsl.builder.Cell @@ -82,3 +85,16 @@ fun JComboBox<*>.addPopupMenuListener(parentDisposable: Disposable? = null, list private fun Disposable.whenDisposed(listener: () -> Unit) { Disposer.register(this) { listener() } } + +object NavigationUtilCompat { + fun hidePopupIfDumbModeStarts(popup: JBPopup, project: Project) { + if (!DumbService.isDumb(project)) { + project.messageBus.connect(popup) + .subscribe(DumbService.DUMB_MODE, object: DumbService.DumbModeListener { + override fun enteredDumbMode() { + popup.cancel() + } + }) + } + } +}