Add an ability to switch between old and new J2K via settings window

Before that it was possible to do only via registry

#KT-33371 fixed
This commit is contained in:
Ilya Kirillov
2019-08-15 19:29:12 +03:00
parent 3b8da0afe4
commit 4befca95d6
12 changed files with 62 additions and 43 deletions
@@ -13,6 +13,7 @@ import com.intellij.psi.PsiDocumentManager
import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.conversion.copy.AbstractJavaToKotlinCopyPasteConversionTest import org.jetbrains.kotlin.idea.conversion.copy.AbstractJavaToKotlinCopyPasteConversionTest
import org.jetbrains.kotlin.idea.conversion.copy.ConvertJavaCopyPasteProcessor import org.jetbrains.kotlin.idea.conversion.copy.ConvertJavaCopyPasteProcessor
import org.jetbrains.kotlin.j2k.J2kConverterExtension
import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.InTextDirectivesUtils
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import java.io.File import java.io.File
@@ -35,7 +36,7 @@ abstract class AbstractPerformanceJavaToKotlinCopyPasteConversionTest(private va
override fun setUp() { override fun setUp() {
super.setUp() super.setUp()
Registry.get("kotlin.use.new.j2k").setValue(newJ2K) J2kConverterExtension.isNewJ2k = newJ2K
val index = j2kIndex() val index = j2kIndex()
if (!warmedUp[index]) { if (!warmedUp[index]) {
@@ -92,10 +92,6 @@
</extensions> </extensions>
<extensions defaultExtensionNs="com.intellij"> <extensions defaultExtensionNs="com.intellij">
<registryKey key="kotlin.use.new.j2k"
description="Use new Java to Kotlin Converter (experimental)"
defaultValue="true"
restartRequired="false"/>
<registryKey key="kotlin.mpp.editTargetPlatformEnabled" <registryKey key="kotlin.mpp.editTargetPlatformEnabled"
description="Enable manual editing of MPP target platforms" description="Enable manual editing of MPP target platforms"
defaultValue="false" defaultValue="false"
@@ -100,10 +100,6 @@
</extensions> </extensions>
<extensions defaultExtensionNs="com.intellij"> <extensions defaultExtensionNs="com.intellij">
<registryKey key="kotlin.use.new.j2k"
description="Use new Java to Kotlin Converter (experimental)"
defaultValue="true"
restartRequired="false"/>
<registryKey key="kotlin.android.import.mpp.all.transitive" <registryKey key="kotlin.android.import.mpp.all.transitive"
description="Add all transitive dependencies on MPP modules when Android project is imported" description="Add all transitive dependencies on MPP modules when Android project is imported"
defaultValue="true" defaultValue="true"
@@ -92,10 +92,6 @@
</extensions> </extensions>
<extensions defaultExtensionNs="com.intellij"> <extensions defaultExtensionNs="com.intellij">
<registryKey key="kotlin.use.new.j2k"
description="Use new Java to Kotlin Converter (experimental)"
defaultValue="true"
restartRequired="false"/>
<registryKey key="kotlin.android.import.mpp.all.transitive" <registryKey key="kotlin.android.import.mpp.all.transitive"
description="Add all transitive dependencies on MPP modules when Android project is imported" description="Add all transitive dependencies on MPP modules when Android project is imported"
defaultValue="true" defaultValue="true"
@@ -91,10 +91,6 @@
<j2kConverterExtension implementation="org.jetbrains.kotlin.nj2k.NewJ2kConverterExtension"/> <j2kConverterExtension implementation="org.jetbrains.kotlin.nj2k.NewJ2kConverterExtension"/>
</extensions> </extensions>
<extensions defaultExtensionNs="com.intellij"> <extensions defaultExtensionNs="com.intellij">
<registryKey key="kotlin.use.new.j2k"
description="Use new Java to Kotlin Converter (experimental)"
defaultValue="true"
restartRequired="false"/>
<registryKey key="kotlin.android.import.mpp.all.transitive" <registryKey key="kotlin.android.import.mpp.all.transitive"
description="Add all transitive dependencies on MPP modules when Android project is imported" description="Add all transitive dependencies on MPP modules when Android project is imported"
defaultValue="true" defaultValue="true"
+1 -1
View File
@@ -487,7 +487,7 @@
parentId="project.propCompiler"/> parentId="project.propCompiler"/>
<applicationConfigurable groupId="language" displayName="Kotlin" id="preferences.language.Kotlin" <applicationConfigurable groupId="language" displayName="Kotlin" id="preferences.language.Kotlin"
instance="org.jetbrains.kotlin.idea.configuration.KotlinUpdatesSettingsConfigurable"/> instance="org.jetbrains.kotlin.idea.configuration.KotlinLanguageConfiguration"/>
<projectConfigurable groupId="language" displayName="Kotlin Scripting" id="preferences.language.Kotlin.scripting" <projectConfigurable groupId="language" displayName="Kotlin Scripting" id="preferences.language.Kotlin.scripting"
instance="org.jetbrains.kotlin.idea.script.configuration.KotlinScriptingSettingsConfigurable" instance="org.jetbrains.kotlin.idea.script.configuration.KotlinScriptingSettingsConfigurable"
@@ -20,12 +20,12 @@ import com.intellij.ide.actions.ShowSettingsUtilImpl
import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.project.DumbAwareAction import com.intellij.openapi.project.DumbAwareAction
import org.jetbrains.kotlin.idea.configuration.KotlinUpdatesSettingsConfigurable import org.jetbrains.kotlin.idea.configuration.KotlinLanguageConfiguration
class ConfigurePluginUpdatesAction : DumbAwareAction() { class ConfigurePluginUpdatesAction : DumbAwareAction() {
override fun actionPerformed(e: AnActionEvent) { override fun actionPerformed(e: AnActionEvent) {
val project = e.getData(CommonDataKeys.PROJECT) val project = e.getData(CommonDataKeys.PROJECT)
ShowSettingsUtilImpl.showSettingsDialog(project, KotlinUpdatesSettingsConfigurable.ID, "") ShowSettingsUtilImpl.showSettingsDialog(project, KotlinLanguageConfiguration.ID, "")
} }
companion object { companion object {
@@ -12,10 +12,11 @@ import com.intellij.openapi.updateSettings.impl.UpdateSettings
import org.jetbrains.kotlin.idea.KotlinPluginUpdater import org.jetbrains.kotlin.idea.KotlinPluginUpdater
import org.jetbrains.kotlin.idea.KotlinPluginUtil import org.jetbrains.kotlin.idea.KotlinPluginUtil
import org.jetbrains.kotlin.idea.PluginUpdateStatus import org.jetbrains.kotlin.idea.PluginUpdateStatus
import org.jetbrains.kotlin.idea.configuration.ui.ConfigurePluginUpdatesForm import org.jetbrains.kotlin.idea.configuration.ui.KotlinLanguageConfigurationForm
import org.jetbrains.kotlin.j2k.J2kConverterExtension
import javax.swing.JComponent import javax.swing.JComponent
class KotlinUpdatesSettingsConfigurable : SearchableConfigurable, Configurable.NoScroll { class KotlinLanguageConfiguration : SearchableConfigurable, Configurable.NoScroll {
companion object { companion object {
const val ID = "preferences.language.Kotlin" const val ID = "preferences.language.Kotlin"
@@ -48,7 +49,7 @@ class KotlinUpdatesSettingsConfigurable : SearchableConfigurable, Configurable.N
} }
} }
private val form = ConfigurePluginUpdatesForm() private val form = KotlinLanguageConfigurationForm()
private var update: PluginUpdateStatus.Update? = null private var update: PluginUpdateStatus.Update? = null
private var savedChannel = -1 private var savedChannel = -1
@@ -62,10 +63,13 @@ class KotlinUpdatesSettingsConfigurable : SearchableConfigurable, Configurable.N
override fun getDisplayName(): String = "Kotlin" override fun getDisplayName(): String = "Kotlin"
override fun isModified() = false override fun isModified() =
form.useNewJ2kCheckBox.isSelected != J2kConverterExtension.isNewJ2k
override fun apply() { override fun apply() {
// Selected channel is now saved automatically // Selected channel is now saved automatically
J2kConverterExtension.isNewJ2k = form.useNewJ2kCheckBox.isSelected
} }
private fun setInstalledVersion(installedVersion: String?, installingStatus: String?) { private fun setInstalledVersion(installedVersion: String?, installingStatus: String?) {
@@ -74,6 +78,7 @@ class KotlinUpdatesSettingsConfigurable : SearchableConfigurable, Configurable.N
} }
override fun createComponent(): JComponent? { override fun createComponent(): JComponent? {
form.useNewJ2kCheckBox.isSelected = J2kConverterExtension.isNewJ2k
form.updateCheckProgressIcon.suspend() form.updateCheckProgressIcon.suspend()
form.updateCheckProgressIcon.setPaintPassiveIcon(false) form.updateCheckProgressIcon.setPaintPassiveIcon(false)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.kotlin.idea.configuration.ui.ConfigurePluginUpdatesForm"> <form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.kotlin.idea.configuration.ui.KotlinLanguageConfigurationForm">
<grid id="27dc6" binding="mainPanel" layout-manager="GridLayoutManager" row-count="7" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="5"> <grid id="27dc6" binding="mainPanel" layout-manager="GridLayoutManager" row-count="8" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="5">
<margin top="0" left="0" bottom="0" right="0"/> <margin top="0" left="0" bottom="0" right="0"/>
<constraints> <constraints>
<xy x="20" y="20" width="500" height="400"/> <xy x="20" y="20" width="500" height="400"/>
@@ -8,14 +8,9 @@
<properties/> <properties/>
<border type="none"/> <border type="none"/>
<children> <children>
<vspacer id="42b13">
<constraints>
<grid row="6" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
<grid id="2505b" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0"> <grid id="2505b" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0">
<constraints> <constraints>
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/> <grid row="3" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
<properties/> <properties/>
<border type="none"/> <border type="none"/>
@@ -30,7 +25,7 @@
</grid> </grid>
<grid id="b171" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0"> <grid id="b171" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0">
<constraints> <constraints>
<grid row="4" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"> <grid row="4" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false">
<preferred-size width="97" height="21"/> <preferred-size width="97" height="21"/>
</grid> </grid>
</constraints> </constraints>
@@ -63,7 +58,7 @@
</grid> </grid>
<grid id="6a5b2" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0"> <grid id="6a5b2" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0">
<constraints> <constraints>
<grid row="5" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/> <grid row="5" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
<properties/> <properties/>
<border type="none"/> <border type="none"/>
@@ -79,7 +74,7 @@
</grid> </grid>
<grid id="cf404" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0"> <grid id="cf404" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0">
<constraints> <constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/> <grid row="0" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
<properties/> <properties/>
<border type="none"/> <border type="none"/>
@@ -109,7 +104,7 @@
</grid> </grid>
<grid id="e3af8" binding="pluginVersionPanel" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0"> <grid id="e3af8" binding="pluginVersionPanel" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0">
<constraints> <constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"> <grid row="1" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false">
<preferred-size width="335" height="24"/> <preferred-size width="335" height="24"/>
</grid> </grid>
</constraints> </constraints>
@@ -133,7 +128,7 @@
</grid> </grid>
<grid id="4a454" binding="bundledCompilerVersionPanel" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0"> <grid id="4a454" binding="bundledCompilerVersionPanel" layout-manager="FlowLayout" hgap="5" vgap="0" flow-align="0">
<constraints> <constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"> <grid row="2" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false">
<preferred-size width="335" height="24"/> <preferred-size width="335" height="24"/>
</grid> </grid>
</constraints> </constraints>
@@ -155,6 +150,32 @@
</component> </component>
</children> </children>
</grid> </grid>
<grid id="15a75" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="6" column="0" row-span="1" col-span="2" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<clientProperties>
<BorderFactoryClass class="java.lang.String" value="com.intellij.ui.IdeBorderFactory$PlainSmallWithoutIndent"/>
</clientProperties>
<border type="etched" title="Experimental Features"/>
<children>
<component id="d2573" class="javax.swing.JCheckBox" binding="useNewJ2kCheckBox" default-binding="true">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="1" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Use New J2K"/>
</properties>
</component>
</children>
</grid>
<vspacer id="73440">
<constraints>
<grid row="7" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
</children> </children>
</grid> </grid>
</form> </form>
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.idea.util.VersioningKt;
import javax.swing.*; import javax.swing.*;
import java.util.List; import java.util.List;
public class ConfigurePluginUpdatesForm { public class KotlinLanguageConfigurationForm {
public JComboBox<String> channelCombo; public JComboBox<String> channelCombo;
public JButton reCheckButton; public JButton reCheckButton;
public JPanel mainPanel; public JPanel mainPanel;
@@ -27,8 +27,9 @@ public class ConfigurePluginUpdatesForm {
private JTextPane currentVersion; private JTextPane currentVersion;
private JPanel bundledCompilerVersionPanel; private JPanel bundledCompilerVersionPanel;
private JTextPane compilerVersion; private JTextPane compilerVersion;
public JCheckBox useNewJ2kCheckBox;
public ConfigurePluginUpdatesForm() { public KotlinLanguageConfigurationForm() {
showVerifierDisabledStatus(); showVerifierDisabledStatus();
String pluginVersion = KotlinPluginUtil.getPluginVersion(); String pluginVersion = KotlinPluginUtil.getPluginVersion();
@@ -7,12 +7,13 @@ package org.jetbrains.kotlin.idea.conversion.copy
import com.intellij.openapi.util.registry.Registry import com.intellij.openapi.util.registry.Registry
import org.jetbrains.kotlin.idea.AbstractCopyPasteTest import org.jetbrains.kotlin.idea.AbstractCopyPasteTest
import org.jetbrains.kotlin.j2k.J2kConverterExtension
abstract class AbstractJ2kCopyPasteTest : AbstractCopyPasteTest() { abstract class AbstractJ2kCopyPasteTest : AbstractCopyPasteTest() {
protected open fun isNewJ2K(): Boolean = false protected open fun isNewJ2K(): Boolean = false
override fun setUp() { override fun setUp() {
super.setUp() super.setUp()
Registry.get("kotlin.use.new.j2k").setValue(isNewJ2K()) J2kConverterExtension.isNewJ2k = isNewJ2K()
} }
} }
@@ -1,11 +1,11 @@
package org.jetbrains.kotlin.j2k package org.jetbrains.kotlin.j2k
import com.intellij.ide.util.PropertiesComponent
import com.intellij.openapi.extensions.AbstractExtensionPointBean import com.intellij.openapi.extensions.AbstractExtensionPointBean
import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.openapi.module.Module import com.intellij.openapi.module.Module
import com.intellij.openapi.progress.ProgressIndicator import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.util.registry.Registry
import com.intellij.psi.PsiJavaFile import com.intellij.psi.PsiJavaFile
abstract class J2kConverterExtension : AbstractExtensionPointBean() { abstract class J2kConverterExtension : AbstractExtensionPointBean() {
@@ -30,8 +30,14 @@ abstract class J2kConverterExtension : AbstractExtensionPointBean() {
): WithProgressProcessor ): WithProgressProcessor
companion object { companion object {
val isNewJ2k private const val newJ2kByDefault = true
get() = Registry.`is`("kotlin.use.new.j2k", true) private const val optionName = "kotlin.use.new.j2k"
var isNewJ2k
get() = PropertiesComponent.getInstance().getBoolean(optionName, newJ2kByDefault)
set(value) {
PropertiesComponent.getInstance().setValue(optionName, value, newJ2kByDefault)
}
val EP_NAME = ExtensionPointName.create<J2kConverterExtension>("org.jetbrains.kotlin.j2kConverterExtension") val EP_NAME = ExtensionPointName.create<J2kConverterExtension>("org.jetbrains.kotlin.j2kConverterExtension")