mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
save modules before saving project
Also, remove not required anymore beforeSave — beforeSaveComponents is enough
This commit is contained in:
@@ -134,7 +134,7 @@ abstract class ComponentStoreImpl : IComponentStore {
|
||||
final override fun save(readonlyFiles: MutableList<SaveSessionAndFile>, isForce: Boolean) {
|
||||
val errors: MutableList<Throwable> = SmartList<Throwable>()
|
||||
|
||||
beforeSaveComponents(errors)
|
||||
beforeSaveComponents(errors, readonlyFiles)
|
||||
|
||||
val saveSessionProducerManager = if (components.isEmpty()) null else SaveSessionProducerManager()
|
||||
if (saveSessionProducerManager != null) {
|
||||
@@ -155,7 +155,7 @@ abstract class ComponentStoreImpl : IComponentStore {
|
||||
CompoundRuntimeException.throwIfNotEmpty(errors)
|
||||
}
|
||||
|
||||
protected open fun beforeSaveComponents(errors: MutableList<Throwable>) {
|
||||
protected open fun beforeSaveComponents(errors: MutableList<Throwable>, readonlyFiles: MutableList<SaveSessionAndFile>) {
|
||||
}
|
||||
|
||||
protected open fun afterSaveComponents(errors: MutableList<Throwable>, isForce: Boolean) {
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.intellij.configurationStore
|
||||
|
||||
import com.intellij.configurationStore.schemeManager.SchemeManagerFactoryBase
|
||||
import com.intellij.openapi.components.SettingsSavingComponent
|
||||
import com.intellij.openapi.components.impl.stores.SaveSessionAndFile
|
||||
import com.intellij.openapi.progress.ProcessCanceledException
|
||||
import com.intellij.project.isDirectoryBased
|
||||
|
||||
@@ -17,7 +18,7 @@ abstract class ComponentStoreWithExtraComponents : ComponentStoreImpl() {
|
||||
super.initComponent(component, isService)
|
||||
}
|
||||
|
||||
override fun beforeSaveComponents(errors: MutableList<Throwable>) {
|
||||
override fun beforeSaveComponents(errors: MutableList<Throwable>, readonlyFiles: MutableList<SaveSessionAndFile>) {
|
||||
// component state uses scheme manager in an ipr project, so, we must save it before
|
||||
val isIprProject = project?.let { !it.isDirectoryBased } ?: false
|
||||
if (isIprProject) {
|
||||
|
||||
@@ -322,7 +322,7 @@ private open class ProjectStoreImpl(project: Project, private val pathMacroManag
|
||||
}
|
||||
}
|
||||
|
||||
final override fun beforeSaveComponents(errors: MutableList<Throwable>) {
|
||||
override fun beforeSaveComponents(errors: MutableList<Throwable>, readonlyFiles: MutableList<SaveSessionAndFile>) {
|
||||
try {
|
||||
saveProjectName()
|
||||
}
|
||||
@@ -330,12 +330,10 @@ private open class ProjectStoreImpl(project: Project, private val pathMacroManag
|
||||
LOG.error("Unable to store project name", e)
|
||||
}
|
||||
|
||||
super.beforeSaveComponents(errors)
|
||||
super.beforeSaveComponents(errors, readonlyFiles)
|
||||
}
|
||||
|
||||
override fun doSave(saveSession: SaveExecutor, readonlyFiles: MutableList<SaveSessionAndFile>, errors: MutableList<Throwable>) {
|
||||
beforeSave(readonlyFiles)
|
||||
|
||||
super.doSave(saveSession, readonlyFiles, errors)
|
||||
|
||||
val notifications = NotificationsManager.getNotificationsManager().getNotificationsOfType(UnableToSaveProjectNotification::class.java, project)
|
||||
@@ -369,9 +367,6 @@ private open class ProjectStoreImpl(project: Project, private val pathMacroManag
|
||||
throw IComponentStore.SaveCancelledException()
|
||||
}
|
||||
}
|
||||
|
||||
protected open fun beforeSave(readonlyFiles: MutableList<SaveSessionAndFile>) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun dropUnableToSaveProjectNotification(project: Project, readOnlyFiles: List<VirtualFile>) {
|
||||
@@ -387,8 +382,8 @@ private fun dropUnableToSaveProjectNotification(project: Project, readOnlyFiles:
|
||||
private fun getFilesList(readonlyFiles: List<SaveSessionAndFile>) = readonlyFiles.mapSmart { it.file }
|
||||
|
||||
private class ProjectWithModulesStoreImpl(project: Project, pathMacroManager: PathMacroManager) : ProjectStoreImpl(project, pathMacroManager) {
|
||||
override fun beforeSave(readonlyFiles: MutableList<SaveSessionAndFile>) {
|
||||
super.beforeSave(readonlyFiles)
|
||||
override fun beforeSaveComponents(errors: MutableList<Throwable>, readonlyFiles: MutableList<SaveSessionAndFile>) {
|
||||
super.beforeSaveComponents(errors, readonlyFiles)
|
||||
|
||||
for (module in (ModuleManager.getInstance(project)?.modules ?: Module.EMPTY_ARRAY)) {
|
||||
module.stateStore.save(readonlyFiles)
|
||||
|
||||
Reference in New Issue
Block a user