diff --git a/.idea/modules.xml b/.idea/modules.xml index b8b2f1273f36..80335fd6fc9d 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -405,6 +405,7 @@ + diff --git a/build/bazel-generated-file-list.txt b/build/bazel-generated-file-list.txt index 432c4e2154d0..7ea0f6480309 100644 --- a/build/bazel-generated-file-list.txt +++ b/build/bazel-generated-file-list.txt @@ -919,6 +919,7 @@ plugins/devkit/intellij.devkit.scaffolding plugins/devkit/intellij.devkit.smartupdate plugins/devkit/intellij.devkit.stacktrace plugins/devkit/intellij.devkit.themes +plugins/devkit/intellij.devkit.threading plugins/devkit/intellij.devkit.uiDesigner plugins/devkit/intellij.devkit.workspaceModel plugins/devkit/intellij.devkit.workspaceModel/k1 diff --git a/plugins/devkit/intellij.devkit.compose/gen/com/intellij/devkit/compose/icons/DevkitComposeIcons.java b/plugins/devkit/intellij.devkit.compose/gen/com/intellij/devkit/compose/icons/DevkitComposeIcons.java index d8f5d4543949..3f0602dce29c 100644 --- a/plugins/devkit/intellij.devkit.compose/gen/com/intellij/devkit/compose/icons/DevkitComposeIcons.java +++ b/plugins/devkit/intellij.devkit.compose/gen/com/intellij/devkit/compose/icons/DevkitComposeIcons.java @@ -18,5 +18,4 @@ public final class DevkitComposeIcons { /** 16x16 */ public static final @NotNull Icon ComposeToolWindow = load("icons/composeToolWindow.svg", 542147654, 2); /** 16x16 */ public static final @NotNull Icon Github = load("icons/github.svg", 2052536327, 2); /** 16x16 */ public static final @NotNull Icon JewelToolWindow = load("icons/jewelToolWindow.svg", -219486260, 2); - /** 16x16 */ public static final @NotNull Icon LockReqs = load("icons/lock-reqs.svg", 1816243125, 2); } diff --git a/plugins/devkit/intellij.devkit.compose/resources/intellij.devkit.compose.xml b/plugins/devkit/intellij.devkit.compose/resources/intellij.devkit.compose.xml index 04bfe603263c..61fb51e5e4b6 100644 --- a/plugins/devkit/intellij.devkit.compose/resources/intellij.devkit.compose.xml +++ b/plugins/devkit/intellij.devkit.compose/resources/intellij.devkit.compose.xml @@ -68,8 +68,6 @@ - - + + + + + + + + + + + + + + + $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compose-compiler-plugin/2.3.0/kotlin-compose-compiler-plugin-2.3.0.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/devkit/intellij.devkit.compose/resources/icons/lock-reqs.svg b/plugins/devkit/intellij.devkit.threading/resources/icons/lockRequirements.svg similarity index 100% rename from plugins/devkit/intellij.devkit.compose/resources/icons/lock-reqs.svg rename to plugins/devkit/intellij.devkit.threading/resources/icons/lockRequirements.svg diff --git a/plugins/devkit/intellij.devkit.compose/resources/icons/lock-reqs_dark.svg b/plugins/devkit/intellij.devkit.threading/resources/icons/lockRequirements_dark.svg similarity index 100% rename from plugins/devkit/intellij.devkit.compose/resources/icons/lock-reqs_dark.svg rename to plugins/devkit/intellij.devkit.threading/resources/icons/lockRequirements_dark.svg diff --git a/plugins/devkit/intellij.devkit.threading/resources/intellij.devkit.threading.xml b/plugins/devkit/intellij.devkit.threading/resources/intellij.devkit.threading.xml new file mode 100644 index 000000000000..59f5efb7facb --- /dev/null +++ b/plugins/devkit/intellij.devkit.threading/resources/intellij.devkit.threading.xml @@ -0,0 +1,14 @@ + + + + + + + messages.DevkitThreadingBundle + + + + + diff --git a/plugins/devkit/intellij.devkit.threading/resources/messages/DevkitThreadingBundle.properties b/plugins/devkit/intellij.devkit.threading/resources/messages/DevkitThreadingBundle.properties new file mode 100644 index 000000000000..468cdc1bfb7c --- /dev/null +++ b/plugins/devkit/intellij.devkit.threading/resources/messages/DevkitThreadingBundle.properties @@ -0,0 +1,3 @@ +action.LockReqAnalysis.text=Analyze Lock Requirements +progress.title.analyzing.lock.requirements=Analyzing lock requirements +tab.title.locking.requirements=Locking Requirements \ No newline at end of file diff --git a/plugins/devkit/intellij.devkit.threading/src/DevkitThreadingBundle.kt b/plugins/devkit/intellij.devkit.threading/src/DevkitThreadingBundle.kt new file mode 100644 index 000000000000..06978ec38f35 --- /dev/null +++ b/plugins/devkit/intellij.devkit.threading/src/DevkitThreadingBundle.kt @@ -0,0 +1,23 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.devkit.threading + +import com.intellij.DynamicBundle +import org.jetbrains.annotations.Nls +import org.jetbrains.annotations.PropertyKey +import java.util.function.Supplier + +private const val BUNDLE = "messages.DevkitThreadingBundle" + +internal object DevkitThreadingBundle { + private val instance = DynamicBundle(DevkitThreadingBundle::class.java, BUNDLE) + + @JvmStatic + fun message(key: @PropertyKey(resourceBundle = BUNDLE) String, vararg params: Any?): @Nls String { + return instance.getMessage(key, *params) + } + + @JvmStatic + fun messagePointer(@PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any?): Supplier<@Nls String> { + return instance.getLazyMessage(key, *params) + } +} \ No newline at end of file diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/LockReqAction.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/LockReqAction.kt similarity index 72% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/LockReqAction.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/LockReqAction.kt index 985d2bf21182..52a319626455 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/LockReqAction.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/LockReqAction.kt @@ -1,8 +1,12 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper +package com.intellij.devkit.threading.threadingModelHelper -import com.intellij.devkit.compose.DevkitComposeBundle -import com.intellij.openapi.actionSystem.* +import com.intellij.devkit.threading.DevkitThreadingBundle +import com.intellij.devkit.threading.icons.DevkitThreadingIcons +import com.intellij.openapi.actionSystem.ActionUpdateThread +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.application.EDT import com.intellij.openapi.application.readAction import com.intellij.openapi.components.service @@ -17,11 +21,11 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.jetbrains.idea.devkit.threadingModelHelper.LockReqPsiOps -class LockReqAction : AnAction() { +private const val TOOLWINDOW_ID: String = "LockReqs" - companion object { - private const val TOOLWINDOW_ID: String = "LockReqs" - } +internal class LockReqAction : AnAction() { + + override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.BGT override fun actionPerformed(e: AnActionEvent) { e.coroutineScope.launch(Dispatchers.Default) { @@ -39,19 +43,16 @@ class LockReqAction : AnAction() { toolWindow.activate { } } } + val target = readAction { - val psiFile = e.getData(CommonDataKeys.PSI_FILE) ?: return@readAction null + val element = LockReqPsiOps.forLanguage(psiFile.language).extractTargetElement(psiFile, editor.caretModel.offset) + ?: return@readAction null - val smartPointerManager = SmartPointerManager.getInstance(project) - - val element = LockReqPsiOps.forLanguage(psiFile.language).extractTargetElement(psiFile, editor.caretModel.offset) ?: return@readAction null - - smartPointerManager.createSmartPsiElementPointer(element) + SmartPointerManager.getInstance(project).createSmartPsiElementPointer(element) } ?: return@launch - val service = project.service() - service.analyzeMethod(target) + project.service().analyzeMethod(target) } } @@ -61,9 +62,9 @@ class LockReqAction : AnAction() { id = TOOLWINDOW_ID, anchor = ToolWindowAnchor.BOTTOM, component = null, - icon = LockReqIcons.LockReqIcon, + icon = DevkitThreadingIcons.LockRequirements, contentFactory = LockReqsToolWindowFactory(), - stripeTitle = DevkitComposeBundle.messagePointer("tab.title.locking.requirements"), + stripeTitle = DevkitThreadingBundle.messagePointer("tab.title.locking.requirements"), ) ) return toolWindow @@ -71,7 +72,6 @@ class LockReqAction : AnAction() { override fun update(e: AnActionEvent) { e.presentation.isEnabledAndVisible = shouldBeEnabled(e) - e.presentation.icon = LockReqIcons.LockReqIcon } private fun shouldBeEnabled(e: AnActionEvent): Boolean { @@ -79,6 +79,4 @@ class LockReqAction : AnAction() { val caretOffset = e.getData(CommonDataKeys.EDITOR)?.caretModel?.offset ?: return false return LockReqPsiOps.forLanguageOrNull(psiFile.language)?.extractTargetElement(psiFile, caretOffset) != null } - - override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.BGT } \ No newline at end of file diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/LockReqService.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/LockReqService.kt similarity index 83% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/LockReqService.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/LockReqService.kt index c6855558adec..a5fd5e2a4168 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/LockReqService.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/LockReqService.kt @@ -1,5 +1,5 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper +package com.intellij.devkit.threading.threadingModelHelper import com.intellij.openapi.components.Service import com.intellij.openapi.project.Project @@ -9,7 +9,7 @@ import com.intellij.psi.SmartPsiElementPointer import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue -import com.intellij.devkit.compose.DevkitComposeBundle +import com.intellij.devkit.threading.DevkitThreadingBundle import com.intellij.openapi.application.ApplicationManager import org.jetbrains.idea.devkit.threadingModelHelper.AnalysisConfig import org.jetbrains.idea.devkit.threadingModelHelper.AnalysisResult @@ -17,9 +17,8 @@ import org.jetbrains.idea.devkit.threadingModelHelper.DefaultLockReqConsumer import org.jetbrains.idea.devkit.threadingModelHelper.LOCK_REQUIREMENTS import org.jetbrains.idea.devkit.threadingModelHelper.LockReqAnalyzerParallelBFS - @Service(Service.Level.PROJECT) -class LockReqsService(private val project: Project) { +internal class LockReqsService(private val project: Project) { private var _currentResults by mutableStateOf>(emptyList()) val currentResults: List @@ -28,7 +27,7 @@ class LockReqsService(private val project: Project) { suspend fun analyzeMethod(methodPtr: SmartPsiElementPointer) { val analyzer = LockReqAnalyzerParallelBFS() val config = AnalysisConfig.forProject(project, LOCK_REQUIREMENTS) - withBackgroundProgress(project, DevkitComposeBundle.message("progress.title.analyzing.lock.requirements"), true) { + withBackgroundProgress(project, DevkitThreadingBundle.message("progress.title.analyzing.lock.requirements"), true) { val consumer = DefaultLockReqConsumer(methodPtr) { snapshot -> ApplicationManager.getApplication().invokeLater { _currentResults = listOf(snapshot) diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/LockReqsToolWindowFactory.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/LockReqsToolWindowFactory.kt similarity index 64% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/LockReqsToolWindowFactory.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/LockReqsToolWindowFactory.kt index 1f48ac0b2588..7710e13a578f 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/LockReqsToolWindowFactory.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/LockReqsToolWindowFactory.kt @@ -1,17 +1,17 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper +package com.intellij.devkit.threading.threadingModelHelper -import com.intellij.devkit.compose.threadingModelHelper.ui.LockReqsToolWindow +import com.intellij.devkit.threading.threadingModelHelper.ui.LockReqsToolWindow import com.intellij.openapi.project.Project import com.intellij.openapi.wm.ToolWindow import com.intellij.openapi.wm.ToolWindowFactory import com.intellij.ui.content.ContentFactory -import org.jetbrains.jewel.bridge.JewelComposePanel +import org.jetbrains.jewel.bridge.compose -class LockReqsToolWindowFactory : ToolWindowFactory { +internal class LockReqsToolWindowFactory : ToolWindowFactory { override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) { val contentFactory = ContentFactory.getInstance() - val panel = JewelComposePanel { LockReqsToolWindow(project) } + val panel = compose { LockReqsToolWindow(project) } val content = contentFactory.createContent(panel, null, false) toolWindow.contentManager.addContent(content) } diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/EmptyStateView.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/EmptyStateView.kt similarity index 87% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/EmptyStateView.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/EmptyStateView.kt index ae69bfeb8400..c9ed462f6cfe 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/EmptyStateView.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/EmptyStateView.kt @@ -1,22 +1,18 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper.ui +package com.intellij.devkit.threading.threadingModelHelper.ui -import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.dp import org.jetbrains.jewel.foundation.theme.JewelTheme import org.jetbrains.jewel.ui.component.Icon import org.jetbrains.jewel.ui.component.Text import org.jetbrains.jewel.ui.icons.AllIconsKeys - @Composable internal fun EmptyStateView() { Box( diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/FilterChips.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/FilterChips.kt similarity index 96% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/FilterChips.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/FilterChips.kt index 55fd0309b467..350764a7af1c 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/FilterChips.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/FilterChips.kt @@ -1,5 +1,5 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper.ui +package com.intellij.devkit.threading.threadingModelHelper.ui import androidx.compose.foundation.background import androidx.compose.foundation.border diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/LockReqsState.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/LockReqsState.kt similarity index 94% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/LockReqsState.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/LockReqsState.kt index acba981cb2ff..9ebc6c109243 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/LockReqsState.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/LockReqsState.kt @@ -1,9 +1,9 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper.ui +package com.intellij.devkit.threading.threadingModelHelper.ui import androidx.compose.runtime.Immutable -import org.jetbrains.idea.devkit.threadingModelHelper.ExecutionPath import org.jetbrains.idea.devkit.threadingModelHelper.ConstraintType +import org.jetbrains.idea.devkit.threadingModelHelper.ExecutionPath @Immutable internal data class LockReqsViewState( diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/LockReqsToolWindow.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/LockReqsToolWindow.kt similarity index 79% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/LockReqsToolWindow.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/LockReqsToolWindow.kt index b3b4128ea5af..3c35c3989470 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/LockReqsToolWindow.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/LockReqsToolWindow.kt @@ -1,20 +1,12 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper.ui +package com.intellij.devkit.threading.threadingModelHelper.ui -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue +import androidx.compose.foundation.layout.* +import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.unit.dp -import com.intellij.devkit.compose.threadingModelHelper.LockReqsService +import com.intellij.devkit.threading.threadingModelHelper.LockReqsService import com.intellij.openapi.components.service import com.intellij.openapi.project.Project import org.jetbrains.idea.devkit.threadingModelHelper.AnalysisResult diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/LockRequirementChip.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/LockRequirementChip.kt similarity index 98% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/LockRequirementChip.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/LockRequirementChip.kt index e961b8523fdb..1ede67ff8d07 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/LockRequirementChip.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/LockRequirementChip.kt @@ -1,5 +1,5 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper.ui +package com.intellij.devkit.threading.threadingModelHelper.ui import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -12,8 +12,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import org.jetbrains.idea.devkit.threadingModelHelper.LockRequirement import org.jetbrains.idea.devkit.threadingModelHelper.ConstraintType +import org.jetbrains.idea.devkit.threadingModelHelper.LockRequirement import org.jetbrains.idea.devkit.threadingModelHelper.RequirementReason import org.jetbrains.jewel.foundation.theme.JewelTheme import org.jetbrains.jewel.ui.component.Icon diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/NoPathsFoundView.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/NoPathsFoundView.kt similarity index 80% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/NoPathsFoundView.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/NoPathsFoundView.kt index 443bd45ff33a..b2970c7a26cb 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/NoPathsFoundView.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/NoPathsFoundView.kt @@ -1,17 +1,12 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper.ui +package com.intellij.devkit.threading.threadingModelHelper.ui -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp -import com.intellij.psi.PsiMethod import org.jetbrains.jewel.foundation.theme.JewelTheme import org.jetbrains.jewel.ui.component.Icon import org.jetbrains.jewel.ui.component.Text diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/PathDetailsView.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/PathDetailsView.kt similarity index 89% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/PathDetailsView.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/PathDetailsView.kt index 289846b78387..a8cade23d312 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/PathDetailsView.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/PathDetailsView.kt @@ -1,18 +1,9 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper.ui +package com.intellij.devkit.threading.threadingModelHelper.ui import androidx.compose.foundation.background import androidx.compose.foundation.border -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.runtime.Composable @@ -25,16 +16,12 @@ import com.intellij.openapi.fileEditor.OpenFileDescriptor import com.intellij.openapi.ide.CopyPasteManager import com.intellij.openapi.project.Project import com.intellij.util.ui.JBUI -import org.jetbrains.idea.devkit.threadingModelHelper.ExecutionPath import org.jetbrains.idea.devkit.threadingModelHelper.ConstraintType +import org.jetbrains.idea.devkit.threadingModelHelper.ExecutionPath import org.jetbrains.jewel.bridge.toComposeColor import org.jetbrains.jewel.foundation.theme.JewelTheme import org.jetbrains.jewel.ui.Orientation -import org.jetbrains.jewel.ui.component.DefaultButton -import org.jetbrains.jewel.ui.component.Divider -import org.jetbrains.jewel.ui.component.Icon -import org.jetbrains.jewel.ui.component.OutlinedButton -import org.jetbrains.jewel.ui.component.Text +import org.jetbrains.jewel.ui.component.* import org.jetbrains.jewel.ui.icons.AllIconsKeys import java.awt.datatransfer.StringSelection diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/PathListItem.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/PathListItem.kt similarity index 85% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/PathListItem.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/PathListItem.kt index 85c90e4f763f..1e2a9ccf4457 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/PathListItem.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/PathListItem.kt @@ -1,13 +1,8 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper.ui +package com.intellij.devkit.threading.threadingModelHelper.ui import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.FlowRow -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.* import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/PathListView.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/PathListView.kt similarity index 97% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/PathListView.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/PathListView.kt index 1dafab68c1ee..8c7729f83337 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/PathListView.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/PathListView.kt @@ -1,5 +1,5 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper.ui +package com.intellij.devkit.threading.threadingModelHelper.ui import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth diff --git a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/ToolWindowHeader.kt b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/ToolWindowHeader.kt similarity index 86% rename from plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/ToolWindowHeader.kt rename to plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/ToolWindowHeader.kt index 71e0bf60bcf6..e399c49df3b6 100644 --- a/plugins/devkit/intellij.devkit.compose/src/threadingModelHelper/ui/ToolWindowHeader.kt +++ b/plugins/devkit/intellij.devkit.threading/src/threadingModelHelper/ui/ToolWindowHeader.kt @@ -1,12 +1,7 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.devkit.compose.threadingModelHelper.ui +package com.intellij.devkit.threading.threadingModelHelper.ui -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.* import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier diff --git a/plugins/devkit/plugin-content.yaml b/plugins/devkit/plugin-content.yaml index 2baeaa1be75b..54c3ff28f21b 100644 --- a/plugins/devkit/plugin-content.yaml +++ b/plugins/devkit/plugin-content.yaml @@ -38,6 +38,9 @@ - name: lib/modules/intellij.devkit.scaffolding.jar contentModules: - name: intellij.devkit.scaffolding +- name: lib/modules/intellij.devkit.threading.jar + contentModules: + - name: intellij.devkit.threading - name: lib/modules/intellij.platform.jewel.samples.showcase.jar contentModules: - name: intellij.platform.jewel.samples.showcase diff --git a/plugins/devkit/resources/META-INF/plugin.xml b/plugins/devkit/resources/META-INF/plugin.xml index 6b3346ef85de..c14b65ba5d27 100644 --- a/plugins/devkit/resources/META-INF/plugin.xml +++ b/plugins/devkit/resources/META-INF/plugin.xml @@ -47,6 +47,7 @@ +