From c24be9f4f3bf135ab308c8cc1b0aeb09e1de26bf Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 13 Apr 2017 16:53:19 +0200 Subject: [PATCH] =?UTF-8?q?recentlyUsedTemporaries=20=E2=80=94=20keep=20Ru?= =?UTF-8?q?nnerAndConfigurationSettings=20directly=20instead=20of=20Config?= =?UTF-8?q?uration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/intellij/execution/RunManager.kt | 7 --- .../com/intellij/execution/RunManagerEx.java | 5 +- .../intellij/execution/impl/RunManagerImpl.kt | 52 ++++++------------- 3 files changed, 20 insertions(+), 44 deletions(-) diff --git a/platform/lang-api/src/com/intellij/execution/RunManager.kt b/platform/lang-api/src/com/intellij/execution/RunManager.kt index 1fba62428fa0..9ceec45d788b 100644 --- a/platform/lang-api/src/com/intellij/execution/RunManager.kt +++ b/platform/lang-api/src/com/intellij/execution/RunManager.kt @@ -114,13 +114,6 @@ abstract class RunManager { */ abstract val tempConfigurationsList: List - /** - * Saves the specified temporary run configuration and makes it a permanent one. - * @param configuration the temporary run configuration to save. - */ - @Deprecated("") - abstract fun makeStable(configuration: RunConfiguration) - /** * Saves the specified temporary run settings and makes it a permanent one. * @param settings the temporary settings to save. diff --git a/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java b/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java index 5dc5984c74c6..26f6ae17400f 100644 --- a/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java +++ b/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java @@ -99,8 +99,9 @@ public abstract class RunManagerEx extends RunManager { public abstract void removeConfiguration(@Nullable RunnerAndConfigurationSettings settings); - public abstract void addRunManagerListener(RunManagerListener listener); - public abstract void removeRunManagerListener(RunManagerListener listener); + public abstract void addRunManagerListener(@NotNull RunManagerListener listener); + + public abstract void removeRunManagerListener(@NotNull RunManagerListener listener); @NotNull public abstract Map> getStructure(@NotNull ConfigurationType type); diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt index c621d82f9c2f..8d5639db24a5 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt @@ -127,7 +127,7 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent } private val customOrder = ObjectIntHashMap() - private val recentlyUsedTemporaries = ArrayList() + private val recentlyUsedTemporaries = ArrayList() private val myDispatcher = EventDispatcher.create(RunManagerListener::class.java)!! @@ -341,9 +341,8 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent private fun refreshUsagesList(settings: RunnerAndConfigurationSettings) { if (settings.isTemporary) { lock.write { - val configuration = settings.configuration - recentlyUsedTemporaries.remove(configuration) - recentlyUsedTemporaries.add(0, configuration) + recentlyUsedTemporaries.remove(settings) + recentlyUsedTemporaries.add(0, settings) trimUsagesListToLimit() } } @@ -365,7 +364,7 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent val it = idToSettings.values.iterator() while (it.hasNext()) { val settings = it.next() - if (settings.isTemporary && !recentlyUsedTemporaries.contains(settings.configuration)) { + if (settings.isTemporary && !recentlyUsedTemporaries.contains(settings)) { if (removed == null) { immutableSortedSettingsList = null removed = SmartList() @@ -377,7 +376,7 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent } } } - removed?.let { fireRunConfigurationsRemoved(it) } + removed?.forEach { myDispatcher.multicaster.runConfigurationRemoved(it) } } // comparator is null if want just to save current order (e.g. if want to keep order even after reload) @@ -544,7 +543,7 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent } if (order == null) { - order = ArrayList() + order = ArrayList(idToSettings.size) } order.add(settings.uniqueID) } @@ -555,11 +554,10 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent } val recentList = SmartList() - for (configuration in recentlyUsedTemporaries) { - if (configuration.type is UnknownConfigurationType) { + for (settings in recentlyUsedTemporaries) { + if (settings.type is UnknownConfigurationType) { continue } - val settings = getSettings(configuration) ?: continue recentList.add(settings.uniqueID) } if (!recentList.isEmpty()) { @@ -665,7 +663,7 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent @Suppress("DEPRECATION") com.intellij.openapi.util.JDOMExternalizableStringList.readList(list, recentNode) for (id in list) { - idToSettings.get(id)?.configuration?.let { + idToSettings.get(id)?.let { recentlyUsedTemporaries.add(it) } } @@ -714,7 +712,7 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent } private fun clear(allConfigurations: Boolean) { - val configurations = lock.write { + val removedConfigurations = lock.write { immutableSortedSettingsList = null val configurations = if (allConfigurations) { @@ -751,7 +749,7 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent } iconCache.clear() - fireRunConfigurationsRemoved(configurations) + removedConfigurations.forEach { myDispatcher.multicaster.runConfigurationRemoved(it) } } fun loadConfiguration(element: Element, isShared: Boolean): RunnerAndConfigurationSettings { @@ -860,7 +858,7 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent private fun doMakeStable(settings: RunnerAndConfigurationSettings) { lock.write { - recentlyUsedTemporaries.remove(settings.configuration) + recentlyUsedTemporaries.remove(settings) immutableSortedSettingsList = null if (!customOrder.isEmpty) { isCustomOrderApplied = false @@ -868,13 +866,6 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent } } - @Suppress("OverridingDeprecatedMember") - override fun makeStable(configuration: RunConfiguration) { - getSettings(configuration)?.let { - makeStable(it) - } - } - override fun > getBeforeRunTasks(taskProviderId: Key): List { val tasks = SmartList() val checkedTemplates = SmartList() @@ -1089,21 +1080,19 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent fun removeNotExistingSharedConfigurations(existing: Set) { var removed: MutableList? = null lock.write { - val it = idToSettings.entries.iterator() - while (it.hasNext()) { - val entry = it.next() - val settings = entry.value + val iterator = idToSettings.values.iterator() + for (settings in iterator) { if (!settings.isTemplate && settings.isShared && !existing.contains(settings.uniqueID)) { if (removed == null) { immutableSortedSettingsList = null removed = SmartList() } removed!!.add(settings) - it.remove() + iterator.remove() } } } - fireRunConfigurationsRemoved(removed) + removed?.forEach { myDispatcher.multicaster.runConfigurationRemoved(it) } } fun fireBeginUpdate() { @@ -1118,13 +1107,6 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent myDispatcher.multicaster.runConfigurationChanged(settings, null) } - private fun fireRunConfigurationsRemoved(removed: List?) { - if (removed != null && !removed.isEmpty()) { - recentlyUsedTemporaries.removeAll(removed.map { it.configuration }) - removed.forEach { myDispatcher.multicaster.runConfigurationRemoved(it) } - } - } - private fun fireRunConfigurationSelected() { myDispatcher.multicaster.runConfigurationSelected() } @@ -1168,7 +1150,7 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent if (!settings.isShared) { schemeManager.removeScheme(settings as RunnerAndConfigurationSettingsImpl) } - recentlyUsedTemporaries.remove(settings.configuration) + recentlyUsedTemporaries.remove(settings) removed.add(settings) } else {