diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/trusted/ExternalSystemTrustedProjectDialog.kt b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/trusted/ExternalSystemTrustedProjectDialog.kt index 10b0d4bcb2d4..9fe3637d41a0 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/trusted/ExternalSystemTrustedProjectDialog.kt +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/trusted/ExternalSystemTrustedProjectDialog.kt @@ -18,7 +18,7 @@ object ExternalSystemTrustedProjectDialog { return TrustedProjectsDialog.confirmOpeningOrLinkingUntrustedProject( projectRoot, project, - title = IdeBundle.message("untrusted.project.link.dialog.title", systemId.readableName, projectRoot.fileName), + title = IdeBundle.message("untrusted.project.link.dialog.title", systemId.readableName, projectRoot.fileName ?: projectRoot.toString()), cancelButtonText = IdeBundle.message("untrusted.project.link.dialog.cancel.button")) } diff --git a/platform/platform-impl/src/com/intellij/ide/trustedProjects/TrustedProjectStartupDialog.kt b/platform/platform-impl/src/com/intellij/ide/trustedProjects/TrustedProjectStartupDialog.kt index 98f8dde6de42..dffae7c5c7c1 100644 --- a/platform/platform-impl/src/com/intellij/ide/trustedProjects/TrustedProjectStartupDialog.kt +++ b/platform/platform-impl/src/com/intellij/ide/trustedProjects/TrustedProjectStartupDialog.kt @@ -135,33 +135,38 @@ internal class TrustedProjectStartupDialog( row { text(message) } - row { - val trimmedFolderName = StringUtil.shortenTextWithEllipsis(projectPath.parent.name, 40, 0, true) - checkBox(IdeBundle.message("untrusted.project.warning.trust.location.checkbox", trimmedFolderName)) - .bindSelected(trustAll) - .apply { - component.toolTipText = null - component.addMouseMotionListener(TooltipMouseAdapter { listOf(getParentFolder().pathString) }) - } - .onChanged { - if (it.isSelected) { - windowsDefender.set(false) + if (getParentFolder() != null) { + row { + val trimmedFolderName = StringUtil.shortenTextWithEllipsis(getParentFolder()!!.name, 40, 0, true) + checkBox(IdeBundle.message("untrusted.project.warning.trust.location.checkbox", trimmedFolderName)) + .bindSelected(trustAll) + .apply { + component.toolTipText = null + component.addMouseMotionListener(TooltipMouseAdapter { listOf(getParentFolder()!!.pathString) }) } + .onChanged { + if (it.isSelected) { + windowsDefender.set(false) + } - if (trustAction != null) { - val trustButton = getButton(trustAction!!) - val text = if (it.isSelected) { - val truncatedParentFolderName = StringUtil.shortenTextWithEllipsis(getTrustFolder(it.isSelected).name, 18, 0, true) - IdeBundle.message("untrusted.project.dialog.trust.folder.button", truncatedParentFolderName) - } else trustButtonText - trustButton?.text = text + if (trustAction != null) { + val trustButton = getButton(trustAction!!) + val text = if (it.isSelected) { + val truncatedParentFolderName = StringUtil.shortenTextWithEllipsis(getTrustFolder(it.isSelected).name, 18, 0, true) + IdeBundle.message("untrusted.project.dialog.trust.folder.button", truncatedParentFolderName) + } + else trustButtonText + trustButton?.text = text + } + val trimmedFolderName = StringUtil.shortenTextWithEllipsis(getTrustFolder(it.isSelected).name, 18, 0, true) + windowsDefenderCheckBox?.component?.text = IdeBundle.message("untrusted.project.windows.defender.trust.location.checkbox", trimmedFolderName) } - val trimmedFolderName = StringUtil.shortenTextWithEllipsis(getTrustFolder(it.isSelected).name, 18, 0, true) - windowsDefenderCheckBox?.component?.text = IdeBundle.message("untrusted.project.windows.defender.trust.location.checkbox", trimmedFolderName) - } + } } row { - val trimmedFolderName = StringUtil.shortenTextWithEllipsis(projectPath.name, 18, 0, true) + val trimmedFolderName = StringUtil.shortenTextWithEllipsis(projectPath.name.ifEmpty { projectPath.toString() } + + , 18, 0, true) val idePaths = pathsToExclude.asSequence().filter { it != projectPath }.joinToString(separator = "
") windowsDefenderCheckBox = checkBox(IdeBundle.message("untrusted.project.windows.defender.trust.location.checkbox", trimmedFolderName)) .bindSelected(windowsDefender) @@ -212,9 +217,9 @@ internal class TrustedProjectStartupDialog( } } - private fun getTrustFolder(isTrustAll: Boolean): Path = if (isTrustAll) getParentFolder() else projectPath + private fun getTrustFolder(isTrustAll: Boolean): Path = if (isTrustAll) getParentFolder() ?: projectPath else projectPath - private fun getParentFolder(): Path = projectPath.parent + private fun getParentFolder(): Path? = projectPath.parent override fun createActions(): Array { val actions: MutableList = mutableListOf() diff --git a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.kt b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.kt index f35d05f4fa34..8355c5f4655b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.kt +++ b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.kt @@ -1487,7 +1487,7 @@ private suspend fun checkTrustedState(projectStoreBaseDir: Path): Boolean { return confirmOpeningOrLinkingUntrustedProject( projectRoot = projectStoreBaseDir, project = null, - title = IdeBundle.message("untrusted.project.open.dialog.title", projectStoreBaseDir.fileName) + title = IdeBundle.message("untrusted.project.open.dialog.title", projectStoreBaseDir.fileName ?: projectStoreBaseDir.toString()) ) }