mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-238567 added auto-reload settings option
added default auto-reload option GitOrigin-RevId: 625f1e3b715f45381746547396f7a54da760b352
This commit is contained in:
committed by
intellij-monorepo-bot
parent
468f93071b
commit
c3a85da245
@@ -11,6 +11,15 @@ orphan.modules.text=The IDE modules below were removed by the {0} project reload
|
||||
local.history.remove.orphan.modules=Remove orphan modules after project reload
|
||||
|
||||
# Settings.
|
||||
settings.build.tools.display.name=Build Tools
|
||||
settings.build.tools.auto.reload.radio.button.group.title=Auto-reload project after:
|
||||
settings.build.tools.auto.reload.radio.button.all.label=Any changes
|
||||
settings.build.tools.auto.reload.radio.button.all.comment=Reloads a project after any changes made to build script files.
|
||||
settings.build.tools.auto.reload.radio.button.selective.label=External changes
|
||||
settings.build.tools.auto.reload.radio.button.selective.comment=Reloads a project after VCS updates and changes made to build script files outside the IDE.
|
||||
settings.build.tools.auto.reload.radio.button.none.label=Internal events
|
||||
settings.build.tools.auto.reload.radio.button.none.comment=Reloads a project only if caches in a project are corrupted, invalidated, or don\u2019t exist.
|
||||
|
||||
setting.type.location.deduced={0} location is deduced
|
||||
setting.type.location.unknown={0} location is unknown
|
||||
setting.type.location.explicit.correct={0} location is defined
|
||||
|
||||
@@ -22,15 +22,21 @@
|
||||
implementation="com.intellij.openapi.externalSystem.service.project.ExternalSystemWorkingDirectoryProvider"/>
|
||||
<applicationService serviceInterface="com.intellij.openapi.externalSystem.util.environment.Environment"
|
||||
serviceImplementation="com.intellij.openapi.externalSystem.util.environment.SystemEnvironment"/>
|
||||
<!--Project structure management services-->
|
||||
<applicationService serviceInterface="com.intellij.openapi.externalSystem.service.project.ProjectDataManager"
|
||||
serviceImplementation="com.intellij.openapi.externalSystem.service.project.manage.ProjectDataManagerImpl"/>
|
||||
|
||||
<!--Auto-reload-->
|
||||
<projectService serviceInterface="com.intellij.openapi.externalSystem.autoimport.ExternalSystemProjectTracker"
|
||||
serviceImplementation="com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTracker"/>
|
||||
<projectService serviceInterface="com.intellij.openapi.externalSystem.autoimport.ExternalSystemProjectTrackerSettings"
|
||||
serviceImplementation="com.intellij.openapi.externalSystem.autoimport.AutoImportProjectTrackerSettings"/>
|
||||
<projectService serviceImplementation="com.intellij.openapi.externalSystem.autoimport.ProjectNotificationAware"/>
|
||||
<editorFloatingToolbarProvider implementation="com.intellij.openapi.externalSystem.autoimport.ProjectRefreshFloatingProvider"/>
|
||||
<projectConfigurable groupId="build" id="build.tools" groupWeight="1000"
|
||||
instance="com.intellij.openapi.externalSystem.service.settings.ExternalSystemGroupConfigurable"/>
|
||||
|
||||
<!--Project structure management services-->
|
||||
<applicationService serviceInterface="com.intellij.openapi.externalSystem.service.project.ProjectDataManager"
|
||||
serviceImplementation="com.intellij.openapi.externalSystem.service.project.manage.ProjectDataManagerImpl"/>
|
||||
|
||||
<projectService serviceInterface="com.intellij.openapi.externalSystem.service.project.manage.ExternalProjectsManager"
|
||||
serviceImplementation="com.intellij.openapi.externalSystem.service.project.manage.ExternalProjectsManagerImpl"/>
|
||||
<externalSystemSettingsListener implementation="com.intellij.openapi.externalSystem.service.project.autoimport.ExternalProjectsSettingsWatcher"/>
|
||||
|
||||
+15
-4
@@ -8,22 +8,25 @@ import com.intellij.openapi.components.StoragePathMacros.WORKSPACE_FILE
|
||||
import com.intellij.openapi.externalSystem.autoimport.ExternalSystemProjectTrackerSettings.AutoReloadType
|
||||
import com.intellij.openapi.observable.properties.AtomicLazyProperty
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.ProjectManager
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
@State(name = "AutoImportSettings", storages = [Storage(WORKSPACE_FILE)])
|
||||
class AutoImportProjectTrackerSettings : ExternalSystemProjectTrackerSettings, PersistentStateComponent<AutoImportProjectTrackerSettings.State> {
|
||||
class AutoImportProjectTrackerSettings(
|
||||
private val project: Project
|
||||
) : ExternalSystemProjectTrackerSettings, PersistentStateComponent<AutoImportProjectTrackerSettings.State> {
|
||||
|
||||
internal val autoReloadTypeProperty = AtomicLazyProperty { AutoReloadType.SELECTIVE }
|
||||
internal val autoReloadTypeProperty = AtomicLazyProperty { getDefaultAutoReloadType(project) }
|
||||
|
||||
override var autoReloadType by autoReloadTypeProperty
|
||||
|
||||
override fun getState() = State(autoReloadType)
|
||||
|
||||
override fun loadState(state: State) {
|
||||
autoReloadType = state.autoReloadType
|
||||
autoReloadType = state.autoReloadType ?: getDefaultAutoReloadType(project)
|
||||
}
|
||||
|
||||
data class State(var autoReloadType: AutoReloadType = AutoReloadType.SELECTIVE)
|
||||
data class State(var autoReloadType: AutoReloadType? = null)
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
@@ -31,5 +34,13 @@ class AutoImportProjectTrackerSettings : ExternalSystemProjectTrackerSettings, P
|
||||
fun getInstance(project: Project): AutoImportProjectTrackerSettings {
|
||||
return ExternalSystemProjectTrackerSettings.getInstance(project) as AutoImportProjectTrackerSettings
|
||||
}
|
||||
|
||||
private fun getDefaultAutoReloadType(project: Project): AutoReloadType {
|
||||
if (project.isDefault) return AutoReloadType.SELECTIVE
|
||||
val projectManager = ProjectManager.getInstance()
|
||||
val defaultProject = projectManager.defaultProject
|
||||
val settings = ExternalSystemProjectTrackerSettings.getInstance(defaultProject)
|
||||
return settings.autoReloadType
|
||||
}
|
||||
}
|
||||
}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.openapi.externalSystem.service.settings
|
||||
|
||||
import com.intellij.openapi.externalSystem.autoimport.ExternalSystemProjectTrackerSettings
|
||||
import com.intellij.openapi.externalSystem.autoimport.ExternalSystemProjectTrackerSettings.AutoReloadType.*
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemBundle.message
|
||||
import com.intellij.openapi.options.BoundConfigurable
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.ui.layout.*
|
||||
import org.jetbrains.annotations.Nls
|
||||
import kotlin.reflect.KMutableProperty0
|
||||
|
||||
class ExternalSystemGroupConfigurable(project: Project) : BoundConfigurable(message("settings.build.tools.display.name")) {
|
||||
|
||||
private val settings = ExternalSystemProjectTrackerSettings.getInstance(
|
||||
project)
|
||||
|
||||
override fun createPanel() = panel {
|
||||
row {
|
||||
radioButtonGroup(
|
||||
property = settings::autoReloadType,
|
||||
title = message("settings.build.tools.auto.reload.radio.button.group.title")
|
||||
) {
|
||||
row {
|
||||
radioButton(
|
||||
value = ALL,
|
||||
text = message("settings.build.tools.auto.reload.radio.button.all.label"),
|
||||
comment = message("settings.build.tools.auto.reload.radio.button.all.comment")
|
||||
)
|
||||
}
|
||||
row {
|
||||
radioButton(
|
||||
value = SELECTIVE,
|
||||
text = message("settings.build.tools.auto.reload.radio.button.selective.label"),
|
||||
comment = message("settings.build.tools.auto.reload.radio.button.selective.comment")
|
||||
)
|
||||
}
|
||||
row {
|
||||
radioButton(
|
||||
value = NONE,
|
||||
text = message("settings.build.tools.auto.reload.radio.button.none.label"),
|
||||
comment = message("settings.build.tools.auto.reload.radio.button.none.comment")
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun <T> BaseBuilder.radioButtonGroup(
|
||||
property: KMutableProperty0<T>,
|
||||
title: String? = null,
|
||||
init: RadioButtonGroupBuilder<T>.() -> Unit
|
||||
) {
|
||||
buttonGroup(title) {
|
||||
RadioButtonGroupBuilder(
|
||||
property).init()
|
||||
}
|
||||
}
|
||||
|
||||
class RadioButtonGroupBuilder<T>(private val property: KMutableProperty0<T>) {
|
||||
fun Cell.radioButton(value: T, @Nls text: String, @Nls comment: String? = null) {
|
||||
radioButton(text, { property.get() == value }, { if (it) property.set(value) }, comment)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -278,7 +278,7 @@ abstract class AutoImportTestCase : ExternalSystemTestCase() {
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
testDisposable = Disposer.newDisposable()
|
||||
myProject.replaceService(ExternalSystemProjectTrackerSettings::class.java, AutoImportProjectTrackerSettings(), testDisposable)
|
||||
myProject.replaceService(ExternalSystemProjectTrackerSettings::class.java, AutoImportProjectTrackerSettings(myProject), testDisposable)
|
||||
myProject.replaceService(ExternalSystemProjectTracker::class.java, AutoImportProjectTracker(myProject), testDisposable)
|
||||
}
|
||||
|
||||
@@ -309,7 +309,7 @@ abstract class AutoImportTestCase : ExternalSystemTestCase() {
|
||||
AutoImportProjectTracker.State() to AutoImportProjectTrackerSettings.State(),
|
||||
test: SimpleTestBench.(VirtualFile) -> Unit
|
||||
): Pair<AutoImportProjectTracker.State, AutoImportProjectTrackerSettings.State> {
|
||||
return myProject.replaceService(ExternalSystemProjectTrackerSettings::class.java, AutoImportProjectTrackerSettings()) {
|
||||
return myProject.replaceService(ExternalSystemProjectTrackerSettings::class.java, AutoImportProjectTrackerSettings(myProject)) {
|
||||
myProject.replaceService(ExternalSystemProjectTracker::class.java, AutoImportProjectTracker(myProject)) {
|
||||
val systemId = ProjectSystemId("External System")
|
||||
val projectId = ExternalSystemProjectId(systemId, projectPath)
|
||||
|
||||
@@ -217,9 +217,6 @@ configurable.group.project.settings.description=<html><body>\
|
||||
configurable.group.build.settings.display.name=Build, Execution, Deployment
|
||||
configurable.group.build.settings.description=<html><body>\
|
||||
Configure the project Execution settings, set up Deployment options and customize the Debugger behavior.
|
||||
configurable.group.build.tools.settings.display.name=Build Tools
|
||||
configurable.group.build.tools.settings.description=<html><body>\
|
||||
Configure your project integration with different build tools.
|
||||
configurable.group.language.settings.display.name=Languages \\& Frameworks
|
||||
configurable.group.language.settings.description=<html><body>\
|
||||
Configure the settings related to specific frameworks and technologies used in your project.
|
||||
|
||||
@@ -35,9 +35,6 @@
|
||||
helpTopic="configurable.group.build.help.topic"
|
||||
displayNameKey="configurable.group.build.settings.display.name"
|
||||
descriptionKey="configurable.group.build.settings.description"/>
|
||||
<groupConfigurable id="build.tools" parentId="build" weight="1000"
|
||||
displayNameKey="configurable.group.build.tools.settings.display.name"
|
||||
descriptionKey="configurable.group.build.tools.settings.description"/>
|
||||
<groupConfigurable id="profiler" parentId="build"
|
||||
displayNameKey="configurable.group.profiler.settings.display.name"
|
||||
descriptionKey="configurable.group.profiler.settings.description"/>
|
||||
|
||||
-5
@@ -367,8 +367,6 @@ public class ConfigurableExtensionPointUtilTest extends LightPlatformTestCase {
|
||||
wrapConfigurable("editor.3", "parentId:editor", "groupWeight:-1"),
|
||||
wrapConfigurable("editor.2", "parentId:editor"),
|
||||
wrapConfigurable("editor.1", "parentId:editor"),
|
||||
wrapConfigurable("build.tools.raven", "parentId:build.tools"),
|
||||
wrapConfigurable("build.tools.maven", "parentId:build.tools"),
|
||||
wrapConfigurable("build.center", "parentId:build"),
|
||||
wrapConfigurable("build.upper", "parentId:build", "groupWeight:1000000"),
|
||||
wrapConfigurable("build.lower", "parentId:build", "groupWeight:-1000000"),
|
||||
@@ -395,9 +393,6 @@ public class ConfigurableExtensionPointUtilTest extends LightPlatformTestCase {
|
||||
node("editor.4")),
|
||||
node("configurable.group.build",
|
||||
node("build.upper"),
|
||||
node("configurable.group.build.tools",
|
||||
node("build.tools.maven"),
|
||||
node("build.tools.raven")),
|
||||
node("build.center"),
|
||||
node("build.lower")),
|
||||
node("configurable.group.tools",
|
||||
|
||||
Reference in New Issue
Block a user