mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 02:59:33 +07:00
[Kotlin UI DSL] Moving API into common platform place
GitOrigin-RevId: d1140b983c8944f3f768e1ab9ade93e31bb5dfa7
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f146f208e7
commit
edbf3b5222
@@ -25,10 +25,7 @@ import com.intellij.ui.EditorTextField
|
|||||||
import com.intellij.ui.JBColor
|
import com.intellij.ui.JBColor
|
||||||
import com.intellij.ui.OnePixelSplitter
|
import com.intellij.ui.OnePixelSplitter
|
||||||
import com.intellij.ui.SimpleListCellRenderer
|
import com.intellij.ui.SimpleListCellRenderer
|
||||||
import com.intellij.ui.dsl.builder.IntelliJSpacingConfiguration
|
import com.intellij.ui.dsl.builder.*
|
||||||
import com.intellij.ui.dsl.builder.RightGap
|
|
||||||
import com.intellij.ui.dsl.builder.Row
|
|
||||||
import com.intellij.ui.dsl.builder.panel
|
|
||||||
import com.intellij.ui.dsl.gridLayout.HorizontalAlign
|
import com.intellij.ui.dsl.gridLayout.HorizontalAlign
|
||||||
import com.intellij.ui.dsl.gridLayout.UnscaledGaps
|
import com.intellij.ui.dsl.gridLayout.UnscaledGaps
|
||||||
import com.intellij.ui.dsl.gridLayout.VerticalAlign
|
import com.intellij.ui.dsl.gridLayout.VerticalAlign
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.intellij.ui.components.DropDownLink
|
|||||||
import com.intellij.ui.components.panels.VerticalLayout
|
import com.intellij.ui.components.panels.VerticalLayout
|
||||||
import com.intellij.ui.dsl.builder.AlignX
|
import com.intellij.ui.dsl.builder.AlignX
|
||||||
import com.intellij.ui.dsl.builder.RightGap
|
import com.intellij.ui.dsl.builder.RightGap
|
||||||
|
import com.intellij.ui.dsl.builder.actionsButton
|
||||||
import com.intellij.ui.dsl.builder.panel
|
import com.intellij.ui.dsl.builder.panel
|
||||||
import com.intellij.util.ui.UIUtil
|
import com.intellij.util.ui.UIUtil
|
||||||
import com.intellij.util.ui.components.BorderLayoutPanel
|
import com.intellij.util.ui.components.BorderLayoutPanel
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.intellij.ui.ExperimentalUI
|
|||||||
import com.intellij.ui.StateRestoringCheckBox
|
import com.intellij.ui.StateRestoringCheckBox
|
||||||
import com.intellij.ui.dsl.builder.IntelliJSpacingConfiguration
|
import com.intellij.ui.dsl.builder.IntelliJSpacingConfiguration
|
||||||
import com.intellij.ui.dsl.builder.RightGap
|
import com.intellij.ui.dsl.builder.RightGap
|
||||||
|
import com.intellij.ui.dsl.builder.actionButton
|
||||||
import com.intellij.ui.dsl.builder.panel
|
import com.intellij.ui.dsl.builder.panel
|
||||||
import com.intellij.ui.dsl.gridLayout.UnscaledGaps
|
import com.intellij.ui.dsl.gridLayout.UnscaledGaps
|
||||||
import com.intellij.ui.dsl.gridLayout.toUnscaledGaps
|
import com.intellij.ui.dsl.gridLayout.toUnscaledGaps
|
||||||
|
|||||||
@@ -216,14 +216,27 @@ interface Row {
|
|||||||
|
|
||||||
fun button(@NlsContexts.Button text: String, action: AnAction, @NonNls actionPlace: String = ActionPlaces.UNKNOWN): Cell<JButton>
|
fun button(@NlsContexts.Button text: String, action: AnAction, @NonNls actionPlace: String = ActionPlaces.UNKNOWN): Cell<JButton>
|
||||||
|
|
||||||
fun actionButton(action: AnAction, @NonNls actionPlace: String = ActionPlaces.UNKNOWN): Cell<ActionButton>
|
/**
|
||||||
|
* This method is moved into extension because Kotlin UI DSL is going to be moved into public API, but [ActionButton] is a part of impl API
|
||||||
|
* To fix compilation issue add `import com.intellij.ui.dsl.builder.actionButton`
|
||||||
|
*/
|
||||||
|
@Deprecated("Use extension function com.intellij.ui.dsl.builder.ExtensionsKt.actionButton instead", level = DeprecationLevel.HIDDEN)
|
||||||
|
@ApiStatus.ScheduledForRemoval
|
||||||
|
fun actionButton(action: AnAction, @NonNls actionPlace: String = ActionPlaces.UNKNOWN): Cell<ActionButton> {
|
||||||
|
return actionButton(action, actionPlace)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an [ActionButton] with [icon] and menu with provided [actions]
|
* This method is moved into extension because Kotlin UI DSL is going to be moved into public API, but [ActionButton] is a part of impl API.
|
||||||
|
* To fix compilation issue add `import com.intellij.ui.dsl.builder.actionsButton`
|
||||||
*/
|
*/
|
||||||
|
@Deprecated("Use extension function com.intellij.ui.dsl.builder.ExtensionsKt.actionButton instead", level = DeprecationLevel.HIDDEN)
|
||||||
|
@ApiStatus.ScheduledForRemoval
|
||||||
fun actionsButton(vararg actions: AnAction,
|
fun actionsButton(vararg actions: AnAction,
|
||||||
@NonNls actionPlace: String = ActionPlaces.UNKNOWN,
|
@NonNls actionPlace: String = ActionPlaces.UNKNOWN,
|
||||||
icon: Icon = AllIcons.General.GearPlain): Cell<ActionButton>
|
icon: Icon = AllIcons.General.GearPlain): Cell<ActionButton> {
|
||||||
|
return actionsButton(*actions, actionPlace = actionPlace, icon = icon)
|
||||||
|
}
|
||||||
|
|
||||||
@Deprecated("Use overloaded method", level = DeprecationLevel.HIDDEN)
|
@Deprecated("Use overloaded method", level = DeprecationLevel.HIDDEN)
|
||||||
@ApiStatus.ScheduledForRemoval
|
@ApiStatus.ScheduledForRemoval
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||||
|
package com.intellij.ui.dsl.builder
|
||||||
|
|
||||||
|
import com.intellij.icons.AllIcons
|
||||||
|
import com.intellij.openapi.actionSystem.*
|
||||||
|
import com.intellij.openapi.actionSystem.impl.ActionButton
|
||||||
|
import com.intellij.openapi.project.DumbAware
|
||||||
|
import com.intellij.openapi.ui.popup.JBPopupFactory
|
||||||
|
import com.intellij.openapi.ui.popup.util.PopupUtil
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import javax.swing.Icon
|
||||||
|
|
||||||
|
// This file contains extension functions that relates to platform-impl package only.
|
||||||
|
// Common platform related functionality should be put in correspondent module
|
||||||
|
|
||||||
|
|
||||||
|
fun Row.actionButton(action: AnAction, @NonNls actionPlace: String = ActionPlaces.UNKNOWN): Cell<ActionButton> {
|
||||||
|
val component = ActionButton(action, action.templatePresentation.clone(), actionPlace, ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE)
|
||||||
|
return cell(component)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an [ActionButton] with [icon] and menu with provided [actions]
|
||||||
|
*/
|
||||||
|
fun Row.actionsButton(vararg actions: AnAction,
|
||||||
|
@NonNls actionPlace: String = ActionPlaces.UNKNOWN,
|
||||||
|
icon: Icon = AllIcons.General.GearPlain): Cell<ActionButton> {
|
||||||
|
val actionGroup = PopupActionGroup(arrayOf(*actions))
|
||||||
|
actionGroup.templatePresentation.icon = icon
|
||||||
|
return cell(ActionButton(actionGroup, actionGroup.templatePresentation.clone(), actionPlace, ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE))
|
||||||
|
}
|
||||||
|
|
||||||
|
private class PopupActionGroup(private val actions: Array<AnAction>) : ActionGroup(), DumbAware {
|
||||||
|
init {
|
||||||
|
isPopup = true
|
||||||
|
templatePresentation.isPerformGroup = actions.isNotEmpty()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getChildren(e: AnActionEvent?): Array<AnAction> = actions
|
||||||
|
|
||||||
|
override fun actionPerformed(e: AnActionEvent) {
|
||||||
|
val popup = JBPopupFactory.getInstance().createActionGroupPopup(null, this, e.dataContext,
|
||||||
|
JBPopupFactory.ActionSelectionAid.MNEMONICS, true)
|
||||||
|
PopupUtil.showForActionButtonEvent(popup, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,19 +2,16 @@
|
|||||||
package com.intellij.ui.dsl.builder.impl
|
package com.intellij.ui.dsl.builder.impl
|
||||||
|
|
||||||
import com.intellij.BundleBase
|
import com.intellij.BundleBase
|
||||||
import com.intellij.openapi.actionSystem.*
|
import com.intellij.openapi.actionSystem.AnAction
|
||||||
|
import com.intellij.openapi.actionSystem.DefaultActionGroup
|
||||||
import com.intellij.openapi.actionSystem.ex.ActionUtil
|
import com.intellij.openapi.actionSystem.ex.ActionUtil
|
||||||
import com.intellij.openapi.actionSystem.impl.ActionButton
|
|
||||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor
|
import com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||||
import com.intellij.openapi.observable.properties.GraphProperty
|
import com.intellij.openapi.observable.properties.GraphProperty
|
||||||
import com.intellij.openapi.observable.properties.ObservableProperty
|
import com.intellij.openapi.observable.properties.ObservableProperty
|
||||||
import com.intellij.openapi.observable.properties.whenPropertyChanged
|
import com.intellij.openapi.observable.properties.whenPropertyChanged
|
||||||
import com.intellij.openapi.project.DumbAware
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.ui.ComboBox
|
import com.intellij.openapi.ui.ComboBox
|
||||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton
|
import com.intellij.openapi.ui.TextFieldWithBrowseButton
|
||||||
import com.intellij.openapi.ui.popup.JBPopupFactory
|
|
||||||
import com.intellij.openapi.ui.popup.util.PopupUtil
|
|
||||||
import com.intellij.openapi.util.NlsContexts
|
import com.intellij.openapi.util.NlsContexts
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.ui.ContextHelpLabel
|
import com.intellij.ui.ContextHelpLabel
|
||||||
@@ -222,17 +219,6 @@ internal open class RowImpl(private val dialogPanelConfig: DialogPanelConfig,
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun actionButton(action: AnAction, actionPlace: String): Cell<ActionButton> {
|
|
||||||
val component = ActionButton(action, action.templatePresentation.clone(), actionPlace, ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE)
|
|
||||||
return cell(component)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun actionsButton(vararg actions: AnAction, actionPlace: String, icon: Icon): Cell<ActionButton> {
|
|
||||||
val actionGroup = PopupActionGroup(arrayOf(*actions))
|
|
||||||
actionGroup.templatePresentation.icon = icon
|
|
||||||
return cell(ActionButton(actionGroup, actionGroup.templatePresentation.clone(), actionPlace, ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE))
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun <T> segmentedButton(options: Collection<T>, property: GraphProperty<T>, renderer: (T) -> @Nls String): Cell<SegmentedButtonToolbar> {
|
override fun <T> segmentedButton(options: Collection<T>, property: GraphProperty<T>, renderer: (T) -> @Nls String): Cell<SegmentedButtonToolbar> {
|
||||||
val actionGroup = DefaultActionGroup(options.map { DeprecatedSegmentedButtonAction(it, property, renderer(it)) })
|
val actionGroup = DefaultActionGroup(options.map { DeprecatedSegmentedButtonAction(it, property, renderer(it)) })
|
||||||
val toolbar = SegmentedButtonToolbar(actionGroup, parent.spacingConfiguration)
|
val toolbar = SegmentedButtonToolbar(actionGroup, parent.spacingConfiguration)
|
||||||
@@ -475,18 +461,3 @@ internal open class RowImpl(private val dialogPanelConfig: DialogPanelConfig,
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class PopupActionGroup(private val actions: Array<AnAction>): ActionGroup(), DumbAware {
|
|
||||||
init {
|
|
||||||
isPopup = true
|
|
||||||
templatePresentation.isPerformGroup = actions.isNotEmpty()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getChildren(e: AnActionEvent?): Array<AnAction> = actions
|
|
||||||
|
|
||||||
override fun actionPerformed(e: AnActionEvent) {
|
|
||||||
val popup = JBPopupFactory.getInstance().createActionGroupPopup(null, this, e.dataContext,
|
|
||||||
JBPopupFactory.ActionSelectionAid.MNEMONICS, true)
|
|
||||||
PopupUtil.showForActionButtonEvent(popup, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -23,10 +23,7 @@ import com.intellij.settingsSync.auth.SettingsSyncAuthService
|
|||||||
import com.intellij.ui.JBAccountInfoService
|
import com.intellij.ui.JBAccountInfoService
|
||||||
import com.intellij.ui.components.JBLabel
|
import com.intellij.ui.components.JBLabel
|
||||||
import com.intellij.ui.components.JBScrollPane
|
import com.intellij.ui.components.JBScrollPane
|
||||||
import com.intellij.ui.dsl.builder.Panel
|
import com.intellij.ui.dsl.builder.*
|
||||||
import com.intellij.ui.dsl.builder.Row
|
|
||||||
import com.intellij.ui.dsl.builder.RowLayout
|
|
||||||
import com.intellij.ui.dsl.builder.panel
|
|
||||||
import com.intellij.util.io.Compressor
|
import com.intellij.util.io.Compressor
|
||||||
import com.intellij.util.ui.JBUI
|
import com.intellij.util.ui.JBUI
|
||||||
import com.intellij.util.ui.UIUtil
|
import com.intellij.util.ui.UIUtil
|
||||||
|
|||||||
Reference in New Issue
Block a user