IDEA-285489 Segmented buttons become vertical after installing language plugin

GitOrigin-RevId: fe6fa51870d5d39af5e85cacee74fde399075f3e
This commit is contained in:
Pavel Porvatov
2022-01-12 17:17:47 +00:00
committed by intellij-monorepo-bot
parent fde0defbdd
commit ffe9ad7a2e
2 changed files with 21 additions and 3 deletions
@@ -29,6 +29,7 @@ import java.awt.Graphics2D
import java.awt.RenderingHints
import java.awt.event.FocusEvent
import java.awt.event.FocusListener
import java.util.*
import javax.swing.JPanel
private const val PLACE = "SegmentedButton"
@@ -36,7 +37,14 @@ private const val PLACE = "SegmentedButton"
@ApiStatus.Internal
internal class SegmentedButtonComponent<T>(items: Collection<T>, private val renderer: (T) -> String) : JPanel(GridLayout()) {
var changeListener: (() -> Unit)? = null
companion object {
@ApiStatus.Internal
internal fun interface SelectedItemListener: EventListener {
fun onChanged()
}
}
var spacing = SpacingConfiguration.EMPTY
set(value) {
field = value
@@ -50,7 +58,9 @@ internal class SegmentedButtonComponent<T>(items: Collection<T>, private val ren
setSelectedState(field, false)
setSelectedState(value, true)
field = value
changeListener?.invoke()
for (listener in listenerList.getListeners(SelectedItemListener::class.java)) {
listener.onChanged()
}
repaint()
}
@@ -84,6 +94,14 @@ internal class SegmentedButtonComponent<T>(items: Collection<T>, private val ren
actionRight.registerCustomShortcutSet(ActionUtil.getShortcutSet("SegmentedButton-right"), this)
}
fun addSelectedItemListener(l: SelectedItemListener) {
listenerList.add(SelectedItemListener::class.java, l)
}
fun removeSelectedItemListener(l: SelectedItemListener) {
listenerList.remove(SelectedItemListener::class.java, l)
}
override fun setEnabled(enabled: Boolean) {
super.setEnabled(enabled)
@@ -145,7 +145,7 @@ internal class SegmentedButtonImpl<T>(parent: RowImpl, private val renderer: (T)
segmentedButtonComponent.selectedItem = it
}
}
segmentedButtonComponent.changeListener = {
segmentedButtonComponent.addSelectedItemListener {
segmentedButtonComponent.selectedItem?.let {
mutex.lockOrSkip {
property.set(it)