Skip to content

Commit e77f4b9

Browse files
committed
fix: version detection strategy didn't work for with custom branding
ApplicationInfo doesn't provide the MPS version if a custom RCP with a modified branding is used.
1 parent 671e955 commit e77f4b9

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

lib/api/lib.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public final class org/modelix/mps/api/ModelixMpsApi : org/modelix/mps/api/IMode
1616
public fun getVirtualFolder (Lorg/jetbrains/mps/openapi/module/SModule;)Ljava/lang/String;
1717
public fun getVirtualFolder (Lorg/jetbrains/mps/openapi/project/Project;Lorg/jetbrains/mps/openapi/module/SModule;)Ljava/lang/String;
1818
public fun getVirtualFolders (Lorg/jetbrains/mps/openapi/module/SModule;)Ljava/util/List;
19+
public fun loadIcon (Ljava/lang/String;Ljava/lang/Class;)Ljavax/swing/Icon;
1920
public fun runWithProject (Lcom/intellij/openapi/project/Project;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
2021
public fun runWithProject (Lorg/jetbrains/mps/openapi/project/Project;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
2122
public fun runWithRepository (Lorg/jetbrains/mps/openapi/module/SRepository;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;

lib/src/main/kotlin/org/modelix/mps/api/ModelixMpsApi.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
package org.modelix.mps.api
22

3+
import com.intellij.ide.plugins.PluginManagerCore
34
import com.intellij.openapi.application.ApplicationInfo
5+
import com.intellij.openapi.extensions.PluginId
46

57
private fun detectMpsVersion(): Int {
8+
PluginManagerCore.getPlugin(PluginId.getId("jetbrains.mps.core"))
9+
?.version
10+
?.substringBefore(".")
11+
?.toInt()
12+
?.let { return it }
13+
614
val info = ApplicationInfo.getInstance()
715
return (info.majorVersion.toInt() - 2000) * 10 + info.minorVersionMainPart.toInt()
816
}
917

1018
private fun resolveInstance(): IModelixMpsApi {
1119
val mpsVersion = detectMpsVersion()
12-
when (mpsVersion) {
20+
return when (mpsVersion) {
1321
203 -> ModelixMpsApiImpl203()
1422
211 -> ModelixMpsApiImpl211()
1523
212 -> ModelixMpsApiImpl212()
@@ -22,8 +30,6 @@ private fun resolveInstance(): IModelixMpsApi {
2230
243 -> ModelixMpsApiImpl243()
2331
else -> throw UnsupportedOperationException("Unsupported MPS version: $mpsVersion")
2432
}
25-
return Class.forName("org.modelix.mps.api.ModelixMpsApiImpl${detectMpsVersion()}")
26-
.constructors.single().newInstance() as IModelixMpsApi
2733
}
2834

2935
object ModelixMpsApi : IModelixMpsApi by resolveInstance()

0 commit comments

Comments
 (0)