Skip to content

Commit 7586a9b

Browse files
committed
open as maven project, workaround for closing ide in background
1 parent f44aa9d commit 7586a9b

File tree

4 files changed

+47
-14
lines changed

4 files changed

+47
-14
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.vaadin.plugin.module
22

3+
import com.intellij.ide.impl.ProjectUtil
34
import com.intellij.ide.util.projectWizard.ModuleBuilder
45
import com.intellij.ide.util.projectWizard.ModuleWizardStep
56
import com.intellij.ide.util.projectWizard.WizardContext
@@ -8,10 +9,10 @@ import com.intellij.openapi.module.ModifiableModuleModel
89
import com.intellij.openapi.module.Module
910
import com.intellij.openapi.module.ModuleType
1011
import com.intellij.openapi.project.ProjectType
11-
import com.intellij.openapi.roots.ui.configuration.ModulesProvider
12+
import com.intellij.openapi.roots.ModifiableRootModel
13+
import com.intellij.openapi.startup.StartupManager
1214
import com.vaadin.plugin.starter.StarterModel
13-
import com.vaadin.plugin.utils.ProjectUtil
14-
15+
import com.vaadin.plugin.utils.VaadinProjectUtil
1516

1617
class VaadinModuleBuilder : ModuleBuilder() {
1718

@@ -25,13 +26,6 @@ class VaadinModuleBuilder : ModuleBuilder() {
2526
return VaadinModuleType("VaadinModule")
2627
}
2728

28-
override fun createWizardSteps(
29-
wizardContext: WizardContext,
30-
modulesProvider: ModulesProvider
31-
): Array<ModuleWizardStep> {
32-
return emptyArray()
33-
}
34-
3529
override fun getCustomOptionsStep(context: WizardContext?, parentDisposable: Disposable?): ModuleWizardStep {
3630
return VaadinCustomOptionsStep(this)
3731
}
@@ -40,13 +34,21 @@ class VaadinModuleBuilder : ModuleBuilder() {
4034
this.model = model
4135
}
4236

37+
override fun setupRootModel(modifiableRootModel: ModifiableRootModel) {
38+
val project = modifiableRootModel.project
39+
// TODO: Load Maven/Gradle project properly without opening new window
40+
StartupManager.getInstance(project).runAfterOpened {
41+
ProjectUtil.openOrImport(project.basePath!!, project, true)
42+
}
43+
}
44+
4345
override fun createModule(moduleModel: ModifiableModuleModel): Module {
44-
ProjectUtil.downloadAndExtract(moduleModel.project, this.model!!.downloadLink())
46+
VaadinProjectUtil.downloadAndExtract(moduleModel.project, this.model!!.downloadLink())
4547
return super.createModule(moduleModel)
4648
}
4749

4850
override fun getProjectType(): ProjectType? {
49-
return ProjectType.create(model?.language)
51+
return ProjectType.create(this.model!!.buildTool)
5052
}
5153

5254
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.vaadin.plugin.module
2+
3+
import com.intellij.ide.impl.ProjectUtil
4+
import com.intellij.openapi.application.ApplicationManager
5+
import com.intellij.openapi.progress.runBlockingModal
6+
import com.intellij.openapi.project.Project
7+
import com.intellij.openapi.project.ex.ProjectManagerEx
8+
import com.intellij.openapi.startup.ProjectActivity
9+
10+
// TODO: Remove this after fixing Maven/Gradle module loading
11+
class VaadinPostStartupProjectClose : ProjectActivity {
12+
13+
override suspend fun execute(project: Project) {
14+
ProjectUtil.getOpenProjects().filter { it != project && it.name == project.name }.forEach {
15+
it.closeProjectAsync(false)
16+
}
17+
}
18+
19+
// copy com.intellij.testFramework.closeProjectAsync
20+
private suspend fun Project.closeProjectAsync(save: Boolean = false) {
21+
if (ApplicationManager.getApplication().isDispatchThread) {
22+
runBlockingModal(this, "") {
23+
ProjectManagerEx.getInstanceEx().forceCloseProjectAsync(this@closeProjectAsync, save = save)
24+
}
25+
} else {
26+
ProjectManagerEx.getInstanceEx().forceCloseProjectAsync(this, save = save)
27+
}
28+
}
29+
30+
}

src/main/kotlin/com/vaadin/plugin/utils/ProjectUtil.kt renamed to src/main/kotlin/com/vaadin/plugin/utils/VaadinProjectUtil.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import java.io.File
1010
import java.nio.file.Path
1111
import kotlin.io.path.name
1212

13-
class ProjectUtil {
13+
class VaadinProjectUtil {
1414

1515
companion object {
1616

17-
private val LOG: Logger = Logger.getInstance(ProjectUtil::class.java)
17+
private val LOG: Logger = Logger.getInstance(VaadinProjectUtil::class.java)
1818

1919
fun downloadAndExtract(project: Project, url: String) {
2020
val filename = Path.of(url).name

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

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<projectService serviceImplementation="com.vaadin.plugin.copilot.service.CopilotServerServiceImpl"
4040
serviceInterface="com.vaadin.plugin.copilot.service.CopilotServerService"/>
4141
<postStartupActivity implementation="com.vaadin.plugin.copilot.activity.CopilotPostStartupProjectActivity"/>
42+
<postStartupActivity implementation="com.vaadin.plugin.module.VaadinPostStartupProjectClose" />
4243
<errorHandler implementation="com.vaadin.plugin.copilot.CopilotErrorHandler"/>
4344
<statusBarWidgetFactory implementation="com.vaadin.plugin.copilot.CopilotStatusBarWidgetFactory"
4445
id="CopilotStatusBarWidgetFactory" order="last"/>

0 commit comments

Comments
 (0)