Provide UI for changing the order of script definitions applicability
^KT-24465 In Progress
This commit is contained in:
+15
-4
@@ -62,7 +62,7 @@ import kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||
|
||||
class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinitionProvider() {
|
||||
private var definitionsByContributor = mutableMapOf<ScriptDefinitionContributor, List<KotlinScriptDefinition>>()
|
||||
private var definitions: Sequence<KotlinScriptDefinition>? = null
|
||||
private var definitions: List<KotlinScriptDefinition>? = null
|
||||
|
||||
private val scriptDefinitionsCacheLock = ReentrantReadWriteLock()
|
||||
private val scriptDefinitionsCache = SLRUMap<String, KotlinScriptDefinition>(10, 10)
|
||||
@@ -102,10 +102,10 @@ class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinit
|
||||
|
||||
override val currentDefinitions: Sequence<KotlinScriptDefinition>
|
||||
get() =
|
||||
definitions ?: kotlin.run {
|
||||
(definitions ?: kotlin.run {
|
||||
reloadScriptDefinitions()
|
||||
definitions!!
|
||||
}
|
||||
}).asSequence()
|
||||
|
||||
private fun getContributors(): List<ScriptDefinitionContributor> {
|
||||
@Suppress("DEPRECATION")
|
||||
@@ -124,6 +124,14 @@ class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinit
|
||||
updateDefinitions()
|
||||
}
|
||||
|
||||
fun saveNewDefinitions(newDefinitions: List<KotlinScriptDefinition>) = lock.write {
|
||||
definitions = newDefinitions
|
||||
|
||||
clearCache()
|
||||
ServiceManager.getService(project, ScriptDependenciesCache::class.java).clear()
|
||||
EditorNotifications.getInstance(project).updateAllNotifications()
|
||||
}
|
||||
|
||||
fun getAllDefinitions() = currentDefinitions.toList()
|
||||
|
||||
override fun getDefaultScriptDefinition(): KotlinScriptDefinition {
|
||||
@@ -132,7 +140,10 @@ class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinit
|
||||
|
||||
private fun updateDefinitions() {
|
||||
assert(lock.isWriteLocked) { "updateDefinitions should only be called under the write lock" }
|
||||
definitions = definitionsByContributor.values.flattenTo(mutableListOf()).asSequence()
|
||||
|
||||
definitions = definitionsByContributor.values.flattenTo(mutableListOf()).sortedBy {
|
||||
definitions?.indexOf(it) ?: 1000
|
||||
}
|
||||
|
||||
val fileTypeManager = FileTypeManager.getInstance()
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.script.KotlinScriptDefinition
|
||||
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
|
||||
import org.jetbrains.kotlin.scripting.compiler.plugin.KotlinScriptDefinitionAdapterFromNewAPIBase
|
||||
|
||||
class KotlinScriptDefinitionsModel(definitions: ArrayList<KotlinScriptDefinition>) :
|
||||
class KotlinScriptDefinitionsModel(definitions: MutableList<KotlinScriptDefinition>) :
|
||||
ListTableModel<KotlinScriptDefinition>(
|
||||
arrayOf(
|
||||
ScriptDefinitionName(),
|
||||
|
||||
+3
-2
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.Collections;
|
||||
|
||||
public class KotlinScriptingSettingsConfigurable implements SearchableConfigurable, Configurable.NoScroll {
|
||||
private JPanel root;
|
||||
@@ -61,14 +62,14 @@ public class KotlinScriptingSettingsConfigurable implements SearchableConfigurab
|
||||
settings.setAutoReloadEnabled(scriptDependenciesAutoReload.isSelected());
|
||||
|
||||
|
||||
// todo
|
||||
manager.saveNewDefinitions(Collections.unmodifiableList(model.getItems()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
scriptDependenciesAutoReload.setSelected(settings.isAutoReloadEnabled());
|
||||
|
||||
// todo
|
||||
model.setItems(Lists.newArrayList(manager.getAllDefinitions()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user