From f471845c295fd4955377c57454d624f09b3aab10 Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Fri, 25 Nov 2022 19:05:14 +0300 Subject: [PATCH 1/2] Add hint for disabled fuzzing control #1411 --- .../src/main/kotlin/org/utbot/framework/UtSettings.kt | 8 ++++++-- .../org/utbot/intellij/plugin/settings/SettingsWindow.kt | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt b/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt index 2ac46750e2..8b05bccd9c 100644 --- a/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt +++ b/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt @@ -1,6 +1,7 @@ package org.utbot.framework import com.jetbrains.rd.util.LogLevel +import java.io.File import mu.KotlinLogging import org.utbot.common.AbstractSettings import java.lang.reflect.Executable @@ -9,12 +10,12 @@ private val logger = KotlinLogging.logger {} /** * Path to the utbot home folder. */ -internal val utbotHomePath = "${System.getProperty("user.home")}/.utbot" +internal val utbotHomePath = "${System.getProperty("user.home")}${File.separatorChar}.utbot" /** * Default path for properties file */ -private val defaultSettingsPath = "$utbotHomePath/settings.properties" +private val defaultSettingsPath = "$utbotHomePath${File.separatorChar}settings.properties" private const val defaultKeyForSettingsPath = "utbot.settings.path" /** @@ -26,6 +27,9 @@ object UtSettings : AbstractSettings( logger, defaultKeyForSettingsPath, defaultSettingsPath ) { + @JvmStatic + fun getPath(): String = System.getProperty(defaultKeyForSettingsPath)?: defaultSettingsPath + /** * Setting to disable coroutines debug explicitly. * diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt index f49ee6c12e..590d773e4c 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt @@ -209,6 +209,11 @@ class SettingsWindow(val project: Project) { addToRight(symLabel) }().constraints(CCFlags.growX) } + if (!UtSettings.useFuzzing) { + row("") { + comment("Fuzzing is disabled in ${UtSettings.getPath()}, see the key 'useFuzzing'" ) + } + } } fun isModified(): Boolean { From d18fc6aed3ea9852ac3ce93c1098296e4fe3544b Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Mon, 28 Nov 2022 21:30:45 +0300 Subject: [PATCH 2/2] Add hint for disabled fuzzing control #1411 After-review improvement: replace potentially long file path with link, implement editing for settings.properties --- .../plugin/settings/SettingsWindow.kt | 14 +++++++-- .../intellij/plugin/util/UtSettingsHelper.kt | 31 +++++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/util/UtSettingsHelper.kt diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt index 590d773e4c..8ad2cfeba3 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt @@ -5,6 +5,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.ui.ComboBox import com.intellij.openapi.ui.DialogPanel import com.intellij.ui.ContextHelpLabel +import com.intellij.ui.components.ActionLink import com.intellij.ui.components.JBLabel import com.intellij.ui.layout.CCFlags import com.intellij.ui.layout.LayoutBuilder @@ -20,6 +21,7 @@ import com.intellij.util.ui.components.BorderLayoutPanel import javax.swing.DefaultComboBoxModel import javax.swing.JCheckBox import javax.swing.JPanel +import javax.swing.JSlider import kotlin.reflect.KClass import org.utbot.framework.UtSettings import org.utbot.framework.codegen.domain.ForceStaticMocking @@ -29,9 +31,9 @@ import org.utbot.framework.plugin.api.CodeGenerationSettingItem import org.utbot.framework.plugin.api.CodegenLanguage import org.utbot.framework.plugin.api.JavaDocCommentStyle import org.utbot.framework.plugin.api.TreatOverflowAsError -import org.utbot.intellij.plugin.ui.components.CodeGenerationSettingItemRenderer -import javax.swing.JSlider import org.utbot.framework.plugin.api.isSummarizationCompatible +import org.utbot.intellij.plugin.ui.components.CodeGenerationSettingItemRenderer +import org.utbot.intellij.plugin.util.showSettingsEditor class SettingsWindow(val project: Project) { private val settings = project.service() @@ -211,7 +213,13 @@ class SettingsWindow(val project: Project) { } if (!UtSettings.useFuzzing) { row("") { - comment("Fuzzing is disabled in ${UtSettings.getPath()}, see the key 'useFuzzing'" ) + cell { + component(comment("Fuzzing is disabled in configuration file.").component) + component(ActionLink("Edit configuration") { + UIUtil.getWindow(fuzzLabel)?.dispose() + showSettingsEditor(project, "useFuzzing") + }) + } } } } diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/util/UtSettingsHelper.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/util/UtSettingsHelper.kt new file mode 100644 index 0000000000..3f6a400a5c --- /dev/null +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/util/UtSettingsHelper.kt @@ -0,0 +1,31 @@ +package org.utbot.intellij.plugin.util + +import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.fileEditor.FileEditorManager +import com.intellij.openapi.fileEditor.OpenFileDescriptor +import com.intellij.openapi.project.Project +import com.intellij.openapi.vfs.VfsUtil +import java.io.File +import java.nio.charset.Charset +import org.utbot.framework.UtSettings + +fun showSettingsEditor(project: Project, key: String? = null) { + val ioFile = File(UtSettings.getPath()) + ApplicationManager.getApplication().executeOnPooledThread { + var logicalLine: Int = -1 + key?.let { + logicalLine = ioFile.readLines(Charset.defaultCharset()) + .indexOfFirst { s -> s.startsWith("$key=") or s.startsWith("#$key=") } + } + VfsUtil.findFileByIoFile(ioFile, true)?.let { + val descriptor = if (logicalLine != -1) { + OpenFileDescriptor(project, it, logicalLine, 0) + } else { + OpenFileDescriptor(project, it) + } + ApplicationManager.getApplication().invokeLater { + FileEditorManager.getInstance(project).openTextEditor(descriptor, true) + } + } + } +}