Skip to content

Commit 3127131

Browse files
committed
Fix doing slow operation on EDT issues.
Version 1.24.9.
1 parent 6cabf0a commit 3127131

File tree

10 files changed

+51
-39
lines changed

10 files changed

+51
-39
lines changed

CHANGES.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
### 1.24.9
2+
* Fix doing slow operation on EDT issues.
3+
14
### 1.24.8
25
* Fix [#38](https://github.com/BlueBoxWare/LibGDXPlugin/issues/38): IndexNotReadyException when loading non-libgdx project.
36

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ plugins {
44
id("java")
55
id("maven-publish")
66
id("org.jetbrains.kotlin.jvm") version "1.8.10"
7-
id("org.jetbrains.intellij") version "1.13.0"
8-
id("com.github.blueboxware.tocme") version "1.7"
7+
id("org.jetbrains.intellij") version "1.16.1"
8+
id("com.github.blueboxware.tocme") version "1.8"
99
}
1010

1111
group = properties("pluginGroup")

gradle.properties

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
pluginGroup = com.gmail.blueboxware
22
pluginName = LibGDX Plugin
3-
pluginVersion = 1.24.8
3+
pluginVersion = 1.24.9
44

5-
pluginSinceBuild = 232.6095.10
5+
pluginSinceBuild = 233.11799.300
66
pluginUntilBuild =
77

88
# https://www.jetbrains.com/intellij-repository/snapshots/
99
# https://www.jetbrains.com/intellij-repository/releases/
1010
# gradle printProductsReleases
11-
pluginVerifierIdeVersions = 232.9921.47
11+
pluginVerifierIdeVersions = 233.11799.300
1212

1313
platformType = IC
14-
platformVersion = 232.9921.47
14+
platformVersion = 233.11799.300
1515
platformDownloadSources = true
1616

1717
platformPlugins = java, Kotlin, Groovy, properties

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip

src/main/kotlin/com/gmail/blueboxware/libgdxplugin/settings/LibGDXProjectFileSubstitutions.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.intellij.openapi.components.State
88
import com.intellij.openapi.fileTypes.FileType
99
import com.intellij.openapi.fileTypes.impl.FileTypeOverrider
1010
import com.intellij.openapi.project.ProjectLocator
11+
import com.intellij.openapi.vfs.VfsUtilCore
1112
import com.intellij.openapi.vfs.VirtualFile
1213

1314
/*
@@ -52,13 +53,15 @@ internal class LibGDXFileTypeOverrider : FileTypeOverrider {
5253
} catch (e: UnsupportedOperationException) {
5354
null
5455
} ?: return null
56+
57+
val url = VfsUtilCore.pathToUrl(file.path)
5558
project.getService(LibGDXProjectSkinFiles::class.java)?.let {
56-
if (it.contains(file)) {
59+
if (it.contains(url)) {
5760
return LibGDXSkinFileType
5861
}
5962
}
6063
project.getService(LibGDXProjectGdxJsonFiles::class.java)?.let {
61-
if (it.contains(file)) {
64+
if (it.contains(url)) {
6265
return LibGDXJsonFileType
6366
}
6467
}

src/main/kotlin/com/gmail/blueboxware/libgdxplugin/utils/LanguageSubstitutionUtils.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.intellij.openapi.project.Project
1313
import com.intellij.openapi.project.ProjectManager
1414
import com.intellij.openapi.ui.Messages
1515
import com.intellij.openapi.vfs.VirtualFile
16+
import com.intellij.openapi.vfs.VirtualFileManager
1617
import com.intellij.psi.LanguageSubstitutors
1718
import com.intellij.ui.EditorNotifications
1819
import com.intellij.util.FileContentUtilCore
@@ -155,7 +156,7 @@ private fun resetAssociations(
155156

156157
if (result == Messages.OK) {
157158

158-
val filesChanged = mutableSetOf<VirtualFile>()
159+
val filesChanged = mutableSetOf<String>()
159160

160161
@Suppress("RetrievingService")
161162
project.getService(set1.java)?.let {
@@ -173,8 +174,11 @@ private fun resetAssociations(
173174
it.removeAll()
174175
}
175176

176-
filesChanged.forEach {
177-
project.reset(it)
177+
val vfManager = VirtualFileManager.getInstance()
178+
filesChanged.forEach { url ->
179+
vfManager.findFileByUrl(url)?.let { file ->
180+
project.reset(file)
181+
}
178182
}
179183

180184
}

src/main/kotlin/com/gmail/blueboxware/libgdxplugin/utils/PersistentFileSetManager.kt

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@ package com.gmail.blueboxware.libgdxplugin.utils
33
import com.intellij.openapi.components.PersistentStateComponent
44
import com.intellij.openapi.vfs.VfsUtilCore
55
import com.intellij.openapi.vfs.VirtualFile
6-
import com.intellij.openapi.vfs.VirtualFileManager
76
import com.intellij.openapi.vfs.VirtualFileWithId
87
import org.jdom.Attribute
98
import org.jdom.Element
10-
import java.util.*
119

1210
/**
1311
*
@@ -16,47 +14,36 @@ import java.util.*
1614
*/
1715
open class PersistentFileSetManager : PersistentStateComponent<Element> {
1816

19-
val files = HashSet<VirtualFile>()
17+
val files = HashSet<String>()
2018

2119
fun add(file: VirtualFile): Boolean {
2220
if (file !is VirtualFileWithId || file.isDirectory) {
2321
return false
2422
}
25-
files.add(file)
23+
files.add(VfsUtilCore.pathToUrl(file.path))
2624
return true
2725
}
2826

2927
fun remove(file: VirtualFile): Boolean {
30-
if (!files.contains(file)) {
28+
val url = VfsUtilCore.pathToUrl(file.path)
29+
if (!files.contains(url)) {
3130
return false
3231
}
33-
files.remove(file)
32+
files.remove(url)
3433
return true
3534
}
3635

3736
fun removeAll() = files.clear()
3837

39-
fun contains(file: VirtualFile) = files.contains(file)
38+
fun contains(file: VirtualFile) = files.contains(VfsUtilCore.pathToUrl(file.path))
4039

41-
private fun getSortedFiles(): Collection<VirtualFile> {
42-
val sortedFiles = mutableListOf<VirtualFile>()
43-
sortedFiles.addAll(files)
44-
sortedFiles.sortWith { o1, o2 ->
45-
o1.path.lowercase(Locale.getDefault()).compareTo(o2.path.lowercase(Locale.getDefault()))
46-
}
47-
return sortedFiles
48-
}
40+
fun contains(url: String) = files.contains(url)
4941

5042
override fun loadState(state: Element) {
51-
val vfManager = VirtualFileManager.getInstance()
5243
for (child in state.getChildren("file") ?: listOf()) {
5344
if (child is Element) {
5445
child.getAttribute("url")?.let { filePathAttr ->
55-
val filePath = filePathAttr.value
56-
val virtualFile = vfManager.findFileByUrl(filePath)
57-
if (virtualFile != null) {
58-
files.add(virtualFile)
59-
}
46+
filePathAttr.value?.let { files.add(it) }
6047
}
6148
}
6249
}
@@ -65,9 +52,9 @@ open class PersistentFileSetManager : PersistentStateComponent<Element> {
6552
override fun getState(): Element {
6653
val root = Element("root")
6754

68-
for (virtualFile in getSortedFiles()) {
55+
for (file in files.sorted()) {
6956
val element = Element("file")
70-
val filePathAttr = Attribute("url", VfsUtilCore.pathToUrl(virtualFile.path))
57+
val filePathAttr = Attribute("url", file)
7158
element.setAttribute(filePathAttr)
7259
root.addContent(element)
7360
}

src/main/kotlin/com/gmail/blueboxware/libgdxplugin/utils/SkinUtils.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.gmail.blueboxware.libgdxplugin.filetypes.skin.LibGDXSkinFileType
66
import com.gmail.blueboxware.libgdxplugin.settings.LibGDXProjectSkinFiles
77
import com.intellij.openapi.project.Project
88
import com.intellij.openapi.vfs.VirtualFile
9+
import com.intellij.openapi.vfs.VirtualFileManager
910
import com.intellij.psi.search.FileTypeIndex
1011
import org.jetbrains.kotlin.idea.base.util.allScope
1112

@@ -35,8 +36,16 @@ val SKIN_SIGNATURE = Regex("""(?:com\.badlogic\.gdx\.$FQ_CLASS_NAME|\b$COMMON_CL
3536
fun getSkinFiles(project: Project): List<VirtualFile> {
3637
val result = mutableListOf<VirtualFile>()
3738
result.addAll(FileTypeIndex.getFiles(LibGDXSkinFileType, project.allScope()))
38-
project.getService(LibGDXProjectSkinFiles::class.java)?.let { result.addAll(it.files) }
39-
return result.filter { it.isValid }.toList()
39+
val vfManager = VirtualFileManager.getInstance()
40+
project.getService(LibGDXProjectSkinFiles::class.java)?.let {
41+
for (url in it.files) {
42+
val file = vfManager.findFileByUrl(url)
43+
if (file != null && file.isValid) {
44+
result.add(file)
45+
}
46+
}
47+
}
48+
return result
4049
}
4150

4251

src/main/kotlin/com/gmail/blueboxware/libgdxplugin/versions/VersionService.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.gmail.blueboxware.libgdxplugin.utils.findClasses
55
import com.gmail.blueboxware.libgdxplugin.utils.getLibraryInfoFromIdeaLibrary
66
import com.intellij.openapi.Disposable
77
import com.intellij.openapi.application.ApplicationManager
8+
import com.intellij.openapi.application.ReadAction
89
import com.intellij.openapi.components.Service
910
import com.intellij.openapi.diagnostic.Logger
1011
import com.intellij.openapi.project.DumbService
@@ -14,7 +15,9 @@ import com.intellij.openapi.roots.libraries.LibraryTable
1415
import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar
1516
import com.intellij.psi.PsiLiteralExpression
1617
import com.intellij.util.Alarm
18+
import com.intellij.util.concurrency.AppExecutorUtil
1719
import com.intellij.util.text.DateFormatUtil
20+
import com.jetbrains.rd.util.Callable
1821
import org.jetbrains.kotlin.config.MavenComparableVersion
1922

2023
/*
@@ -112,7 +115,10 @@ class VersionService(val project: Project) : Disposable {
112115
if (ApplicationManager.getApplication().isUnitTestMode) {
113116
DumbService.getInstance(project).runReadActionInSmartMode(runnable)
114117
} else {
115-
DumbService.getInstance(project).smartInvokeLater(runnable)
118+
DumbService.getInstance(project).smartInvokeLater {
119+
ReadAction.nonBlocking(Callable(runnable)).inSmartMode(project)
120+
.submit(AppExecutorUtil.getAppExecutorService())
121+
}
116122
}
117123
}
118124

src/main/resources/META-INF/plugin.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
<change-notes><![CDATA[
3333
<ul>
34-
<li>Fix 38: IndexNotReadyException</li>
34+
<li>Fix doing slow operation on EDT issues.</li>
3535
</ul>
3636
]]>
3737
</change-notes>

0 commit comments

Comments
 (0)