From c23dd65a2db950b6610eab64a2a0122af47b23cc Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 2 Jul 2018 14:18:12 +0200 Subject: [PATCH] disable Export/Import actions if Settings Repository plugin active --- .../src/ExportSettingsAction.kt | 10 ++++++++++ .../src/ImportSettingsAction.kt | 4 ++++ .../src/StateStorageManagerImpl.kt | 3 +++ 3 files changed, 17 insertions(+) diff --git a/platform/configuration-store-impl/src/ExportSettingsAction.kt b/platform/configuration-store-impl/src/ExportSettingsAction.kt index 4d461cf3312e..5f97df448be3 100644 --- a/platform/configuration-store-impl/src/ExportSettingsAction.kt +++ b/platform/configuration-store-impl/src/ExportSettingsAction.kt @@ -39,6 +39,12 @@ import java.util.* import java.util.zip.ZipEntry import java.util.zip.ZipOutputStream +internal fun isImportExportActionApplicable(): Boolean { + val app = ApplicationManager.getApplication() + val storageManager = app.stateStore.storageManager as? StateStorageManagerImpl ?: return true + return !storageManager.isStreamProviderEnabled +} + // for Rider purpose open class ExportSettingsAction : AnAction(), DumbAware { protected open fun getExportableComponents(): Map> = getExportableComponentsMap(true, true) @@ -48,6 +54,10 @@ open class ExportSettingsAction : AnAction(), DumbAware { exportSettings(exportFiles, saveFile.outputStream(), FileUtilRt.toSystemIndependentName(PathManager.getConfigPath())) } + override fun update(e: AnActionEvent) { + e.presentation.isEnabledAndVisible = isImportExportActionApplicable() + } + override fun actionPerformed(e: AnActionEvent) { ApplicationManager.getApplication().saveSettings() diff --git a/platform/configuration-store-impl/src/ImportSettingsAction.kt b/platform/configuration-store-impl/src/ImportSettingsAction.kt index 76a73f256150..21d4a2d78191 100644 --- a/platform/configuration-store-impl/src/ImportSettingsAction.kt +++ b/platform/configuration-store-impl/src/ImportSettingsAction.kt @@ -29,6 +29,10 @@ import java.util.zip.ZipInputStream // for Rider purpose open class ImportSettingsAction : AnAction(), DumbAware { + override fun update(e: AnActionEvent) { + e.presentation.isEnabledAndVisible = isImportExportActionApplicable() + } + override fun actionPerformed(e: AnActionEvent) { val dataContext = e.dataContext val component = PlatformDataKeys.CONTEXT_COMPONENT.getData(dataContext) diff --git a/platform/configuration-store-impl/src/StateStorageManagerImpl.kt b/platform/configuration-store-impl/src/StateStorageManagerImpl.kt index 8bc01b1daf9e..4d208ba73da4 100644 --- a/platform/configuration-store-impl/src/StateStorageManagerImpl.kt +++ b/platform/configuration-store-impl/src/StateStorageManagerImpl.kt @@ -45,6 +45,9 @@ open class StateStorageManagerImpl(private val rootTagName: String, val compoundStreamProvider: CompoundStreamProvider = CompoundStreamProvider() + val isStreamProviderEnabled: Boolean + get() = compoundStreamProvider.enabled + override fun addStreamProvider(provider: StreamProvider, first: Boolean) { if (first) { compoundStreamProvider.providers.add(0, provider)