mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-285489 Segmented buttons become vertical after installing language plugin
GitOrigin-RevId: fe6fa51870d5d39af5e85cacee74fde399075f3e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
fde0defbdd
commit
ffe9ad7a2e
+20
-2
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user