Skip to content

Commit e111d5a

Browse files
committed
Minor cleanup
1 parent 2845456 commit e111d5a

File tree

5 files changed

+104
-107
lines changed

5 files changed

+104
-107
lines changed

src/main/kotlin/com/demonwav/mcdev/buildsystem/gradle/GradleBuildSystem.kt

Lines changed: 39 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import com.demonwav.mcdev.platform.liteloader.LiteLoaderTemplate
2323
import com.demonwav.mcdev.platform.sponge.SpongeTemplate
2424
import com.demonwav.mcdev.util.invokeLater
2525
import com.demonwav.mcdev.util.localFile
26+
import com.demonwav.mcdev.util.runWriteAction
2627
import com.demonwav.mcdev.util.runWriteTask
2728
import com.demonwav.mcdev.util.runWriteTaskLater
2829
import com.intellij.codeInsight.actions.ReformatCodeProcessor
@@ -31,7 +32,6 @@ import com.intellij.execution.impl.RunManagerImpl
3132
import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl
3233
import com.intellij.ide.actions.ImportModuleAction
3334
import com.intellij.ide.util.newProjectWizard.AddModuleWizard
34-
import com.intellij.openapi.command.WriteCommandAction
3535
import com.intellij.openapi.components.ServiceManager
3636
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemJdkUtil
3737
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemRunConfiguration
@@ -200,65 +200,57 @@ class GradleBuildSystem : BuildSystem() {
200200
block.addBefore(fakeFile, last)
201201
}
202202

203-
private fun getClosableBlockByName(element: PsiElement, name: String): GrClosableBlock? {
204-
val blocks = getClosableBlocksByName(element, name)
205-
return blocks.firstOrNull()
206-
}
207-
208-
private fun getClosableBlocksByName(element: PsiElement, name: String): List<GrClosableBlock> {
209-
return element.children.asSequence()
203+
private fun getClosableBlockByName(element: PsiElement, name: String) =
204+
element.children.asSequence()
210205
.filter {
211206
// We want to find the child which has a GrReferenceExpression with the right name
212207
it.children.any { it is GrReferenceExpression && it.text == name }
213208
}.map {
214209
// We want to find the grandchild which is a GrClosable block, this is the
215210
// basis for the method block
216-
it.children.mapNotNull{ it as? GrClosableBlock }.firstOrNull()
211+
it.children.mapNotNull { it as? GrClosableBlock }.firstOrNull()
217212
}.filterNotNull()
218-
.toList()
219-
}
213+
.firstOrNull()
220214

221215
private fun addBuildGradleDependencies(project: Project, file: PsiFile, addToDirectory: Boolean) {
222216
// Write the repository and dependency data to the psi file
223-
object : WriteCommandAction.Simple<Any>(project, file) {
224-
override fun run() {
225-
val newBuildGradle = rootDirectory.findOrCreateChildData(this, "build.gradle")
226-
227-
file.name = "build.gradle"
228-
229-
val groovyFile = file as GroovyFile
230-
231-
createRepositoriesOrDependencies(
232-
project,
233-
groovyFile,
234-
"repositories",
235-
repositories.map { "maven {name = '${it.id}'\nurl = '${it.url}'\n}" }
236-
)
237-
238-
createRepositoriesOrDependencies(
239-
project,
240-
groovyFile,
241-
"dependencies",
242-
dependencies.map { "compile '${it.groupId}:${it.artifactId}:${it.version}'" }
243-
)
244-
245-
ReformatCodeProcessor(file, false).run()
246-
if (addToDirectory) {
247-
val rootDirectoryPsi = PsiManager.getInstance(project).findDirectory(rootDirectory)
248-
if (rootDirectoryPsi != null) {
249-
newBuildGradle.delete(this)
250-
251-
rootDirectoryPsi.add(file)
252-
}
253-
}
217+
file.runWriteAction {
218+
val newBuildGradle = rootDirectory.findOrCreateChildData(this, "build.gradle")
219+
220+
file.name = "build.gradle"
221+
222+
val groovyFile = file as GroovyFile
223+
224+
createRepositoriesOrDependencies(
225+
project,
226+
groovyFile,
227+
"repositories",
228+
repositories.map { "maven {name = '${it.id}'\nurl = '${it.url}'\n}" }
229+
)
230+
231+
createRepositoriesOrDependencies(
232+
project,
233+
groovyFile,
234+
"dependencies",
235+
dependencies.map { "compile '${it.groupId}:${it.artifactId}:${it.version}'" }
236+
)
254237

255-
buildGradle = rootDirectory.findChild("build.gradle") ?: return
238+
ReformatCodeProcessor(file, false).run()
239+
if (addToDirectory) {
240+
val rootDirectoryPsi = PsiManager.getInstance(project).findDirectory(rootDirectory)
241+
if (rootDirectoryPsi != null) {
242+
newBuildGradle.delete(this)
256243

257-
// Reformat code to match their code style
258-
val newBuildGradlePsi = PsiManager.getInstance(project).findFile(buildGradle!!) ?: return
259-
ReformatCodeProcessor(newBuildGradlePsi, false).run()
244+
rootDirectoryPsi.add(file)
245+
}
260246
}
261-
}.execute()
247+
248+
buildGradle = rootDirectory.findChild("build.gradle") ?: return@runWriteAction
249+
250+
// Reformat code to match their code style
251+
val newBuildGradlePsi = PsiManager.getInstance(project).findFile(buildGradle!!) ?: return@runWriteAction
252+
ReformatCodeProcessor(newBuildGradlePsi, false).run()
253+
}
262254
}
263255

264256
private fun addBuildGradleDependencies(project: Project, text: String) {

src/main/kotlin/com/demonwav/mcdev/buildsystem/maven/MavenBuildSystem.kt

Lines changed: 45 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ import com.demonwav.mcdev.platform.bukkit.BukkitTemplate
1717
import com.demonwav.mcdev.platform.bungeecord.BungeeCordTemplate
1818
import com.demonwav.mcdev.platform.canary.CanaryTemplate
1919
import com.demonwav.mcdev.platform.sponge.SpongeTemplate
20+
import com.demonwav.mcdev.util.runWriteAction
2021
import com.demonwav.mcdev.util.runWriteTask
2122
import com.intellij.codeInsight.actions.ReformatCodeProcessor
2223
import com.intellij.execution.RunManager
2324
import com.intellij.lang.xml.XMLLanguage
24-
import com.intellij.openapi.command.WriteCommandAction
2525
import com.intellij.openapi.module.Module
2626
import com.intellij.openapi.progress.ProgressIndicator
2727
import com.intellij.openapi.project.Project
@@ -60,54 +60,51 @@ class MavenBuildSystem : BuildSystem() {
6060
pomPsi.name = "pom.xml"
6161

6262
val pomXmlPsi = pomPsi as XmlFile
63-
object : WriteCommandAction.Simple<Any>(project, pomPsi) {
64-
override fun run() {
65-
66-
val manager = DomManager.getDomManager(project)
67-
val mavenProjectXml = manager.getFileElement(pomXmlPsi, MavenDomProjectModel::class.java)!!.rootElement
68-
69-
mavenProjectXml.groupId.value = groupId
70-
mavenProjectXml.artifactId.value = artifactId
71-
mavenProjectXml.version.value = version
72-
mavenProjectXml.name.value = pluginName
73-
74-
val root = pomXmlPsi.rootTag ?: return
75-
76-
val properties = root.findFirstSubTag("properties") ?: return
77-
78-
if (!configuration.website.isNullOrEmpty()) {
79-
val url = root.createChildTag("url", null, configuration.website, false)
80-
root.addAfter(url, properties)
81-
}
82-
83-
if (configuration.description.isNotEmpty()) {
84-
val description = root.createChildTag("description", null, configuration.description, false)
85-
root.addBefore(description, properties)
86-
}
87-
88-
for ((id, url) in repositories) {
89-
val repository = mavenProjectXml.repositories.addRepository()
90-
repository.id.value = id
91-
repository.url.value = url
92-
}
93-
94-
for ((depArtifactId, depGroupId, depVersion, scope) in dependencies) {
95-
val dependency = mavenProjectXml.dependencies.addDependency()
96-
dependency.groupId.value = depGroupId
97-
dependency.artifactId.value = depArtifactId
98-
dependency.version.value = depVersion
99-
dependency.scope.value = scope
100-
}
101-
102-
PsiManager.getInstance(project).findDirectory(rootDirectory)?.add(pomPsi)
103-
104-
pomFile = rootDirectory.findChild("pom.xml")
105-
// Reformat the code to match their code style
106-
PsiManager.getInstance(project).findFile(pomFile!!)?.let {
107-
ReformatCodeProcessor(it, false).run()
108-
}
63+
pomPsi.runWriteAction {
64+
val manager = DomManager.getDomManager(project)
65+
val mavenProjectXml = manager.getFileElement(pomXmlPsi, MavenDomProjectModel::class.java)!!.rootElement
66+
67+
mavenProjectXml.groupId.value = groupId
68+
mavenProjectXml.artifactId.value = artifactId
69+
mavenProjectXml.version.value = version
70+
mavenProjectXml.name.value = pluginName
71+
72+
val root = pomXmlPsi.rootTag ?: return@runWriteAction
73+
74+
val properties = root.findFirstSubTag("properties") ?: return@runWriteAction
75+
76+
if (!configuration.website.isNullOrEmpty()) {
77+
val url = root.createChildTag("url", null, configuration.website, false)
78+
root.addAfter(url, properties)
79+
}
80+
81+
if (configuration.description.isNotEmpty()) {
82+
val description = root.createChildTag("description", null, configuration.description, false)
83+
root.addBefore(description, properties)
84+
}
85+
86+
for ((id, url) in repositories) {
87+
val repository = mavenProjectXml.repositories.addRepository()
88+
repository.id.value = id
89+
repository.url.value = url
90+
}
91+
92+
for ((depArtifactId, depGroupId, depVersion, scope) in dependencies) {
93+
val dependency = mavenProjectXml.dependencies.addDependency()
94+
dependency.groupId.value = depGroupId
95+
dependency.artifactId.value = depArtifactId
96+
dependency.version.value = depVersion
97+
dependency.scope.value = scope
10998
}
110-
}.execute()
99+
100+
PsiManager.getInstance(project).findDirectory(rootDirectory)?.add(pomPsi)
101+
102+
pomFile = rootDirectory.findChild("pom.xml")
103+
// Reformat the code to match their code style
104+
PsiManager.getInstance(project).findFile(pomFile!!)?.let {
105+
ReformatCodeProcessor(it, false).run()
106+
}
107+
}
111108
}
112109
}
113110

src/main/kotlin/com/demonwav/mcdev/insight/ColorUtil.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
package com.demonwav.mcdev.insight
1212

1313
import com.demonwav.mcdev.facet.MinecraftFacet
14-
import com.intellij.openapi.command.WriteCommandAction
14+
import com.demonwav.mcdev.util.runWriteAction
1515
import com.intellij.openapi.module.ModuleUtilCore
1616
import com.intellij.psi.JavaPsiFacade
1717
import com.intellij.psi.JavaTokenType
@@ -49,12 +49,12 @@ fun <T> PsiElement.findColor(function: (Map<String, Color>, Map.Entry<String, Co
4949
}
5050

5151
fun PsiElement.setColor(color: String) {
52-
WriteCommandAction.runWriteCommandAction(this.project) {
52+
this.containingFile.runWriteAction {
5353
val split = color.split(".").dropLastWhile(String::isEmpty).toTypedArray()
5454
val newColorBase = split.last()
5555

5656
val node = this.node
57-
val child = node.findChildByType(JavaTokenType.IDENTIFIER) ?: return@runWriteCommandAction
57+
val child = node.findChildByType(JavaTokenType.IDENTIFIER) ?: return@runWriteAction
5858

5959
val identifier = JavaPsiFacade.getElementFactory(this.project).createIdentifier(newColorBase)
6060

@@ -63,7 +63,7 @@ fun PsiElement.setColor(color: String) {
6363
}
6464

6565
fun PsiLiteralExpression.setColor(value: Int) {
66-
WriteCommandAction.runWriteCommandAction(this.project) {
66+
this.containingFile.runWriteAction {
6767
val node = this.node
6868

6969
val literalExpression = JavaPsiFacade.getElementFactory(this.project)
@@ -74,7 +74,7 @@ fun PsiLiteralExpression.setColor(value: Int) {
7474
}
7575

7676
fun PsiExpressionList.setColor(red: Int, green: Int, blue: Int) {
77-
WriteCommandAction.runWriteCommandAction(this.project) {
77+
this.containingFile.runWriteAction {
7878
val expressionOne = this.expressions[0]
7979
val expressionTwo = this.expressions[1]
8080
val expressionThree = this.expressions[2]

src/main/kotlin/com/demonwav/mcdev/platform/sponge/SpongeProjectConfiguration.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import com.demonwav.mcdev.buildsystem.BuildSystem
1414
import com.demonwav.mcdev.buildsystem.gradle.GradleBuildSystem
1515
import com.demonwav.mcdev.platform.PlatformType
1616
import com.demonwav.mcdev.platform.ProjectConfiguration
17+
import com.demonwav.mcdev.util.runWriteAction
1718
import com.demonwav.mcdev.util.runWriteTask
1819
import com.intellij.ide.util.EditorHelper
19-
import com.intellij.openapi.command.WriteCommandAction
2020
import com.intellij.openapi.progress.ProgressIndicator
2121
import com.intellij.openapi.project.Project
2222
import com.intellij.psi.JavaPsiFacade
@@ -116,12 +116,10 @@ fun writeMainSpongeClass(
116116
val factory = JavaPsiFacade.getElementFactory(project)
117117
val annotation = factory.createAnnotationFromText(annotationString.toString(), null)
118118

119-
object : WriteCommandAction.Simple<Any>(project, mainClassPsi) {
120-
override fun run() {
121-
psiClass.modifierList?.addBefore(annotation, psiClass.modifierList!!.firstChild)
122-
CodeStyleManager.getInstance(project).reformat(psiClass)
123-
}
124-
}.execute()
119+
mainClassPsi.runWriteAction {
120+
psiClass.modifierList?.addBefore(annotation, psiClass.modifierList!!.firstChild)
121+
CodeStyleManager.getInstance(project).reformat(psiClass)
122+
}
125123
}
126124

127125
private fun escape(text: String): String {

src/main/kotlin/com/demonwav/mcdev/util/Util.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@ import com.google.gson.Gson
1414
import com.google.gson.reflect.TypeToken
1515
import com.intellij.openapi.application.ApplicationManager
1616
import com.intellij.openapi.application.ModalityState
17+
import com.intellij.openapi.application.Result
18+
import com.intellij.openapi.command.WriteCommandAction
1719
import com.intellij.openapi.module.Module
1820
import com.intellij.openapi.module.ModuleManager
21+
import com.intellij.psi.PsiFile
1922
import org.jetbrains.annotations.Contract
2023

2124
inline fun <T> runInlineReadAction(func: () -> T): T {
@@ -70,6 +73,13 @@ inline fun invokeLaterAny(crossinline func: () -> Unit) {
7073
}
7174
}
7275

76+
inline fun <T : Any?> PsiFile.runWriteAction(crossinline func: () -> T) =
77+
object : WriteCommandAction<T>(project) {
78+
override fun run(result: Result<T>) {
79+
result.setResult(func())
80+
}
81+
}.execute().resultObject
82+
7383
/**
7484
* Returns an untyped array for the specified [Collection].
7585
*/

0 commit comments

Comments
 (0)