mirror of
https://github.com/TermoraDev/termora.git
synced 2026-01-16 02:12:58 +08:00
fix: keyword background color
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package app.termora.highlight
|
package app.termora.highlight
|
||||||
|
|
||||||
import app.termora.DialogWrapper
|
import app.termora.DialogWrapper
|
||||||
|
import app.termora.Disposable
|
||||||
|
import app.termora.Disposer
|
||||||
import app.termora.TerminalFactory
|
import app.termora.TerminalFactory
|
||||||
import com.formdev.flatlaf.util.SystemInfo
|
import com.formdev.flatlaf.util.SystemInfo
|
||||||
import java.awt.*
|
import java.awt.*
|
||||||
@@ -15,8 +17,9 @@ class ChooseColorTemplateDialog(owner: Window, title: String) : DialogWrapper(ow
|
|||||||
var colorIndex = -1
|
var colorIndex = -1
|
||||||
var defaultColor: Color = Color.white
|
var defaultColor: Color = Color.white
|
||||||
|
|
||||||
|
var ok = false
|
||||||
|
|
||||||
init {
|
init {
|
||||||
size = Dimension(UIManager.getInt("Dialog.width"), UIManager.getInt("Dialog.height"))
|
|
||||||
isModal = true
|
isModal = true
|
||||||
super.setTitle(title)
|
super.setTitle(title)
|
||||||
controlsVisible = false
|
controlsVisible = false
|
||||||
@@ -30,11 +33,12 @@ class ChooseColorTemplateDialog(owner: Window, title: String) : DialogWrapper(ow
|
|||||||
|
|
||||||
override fun createCenterPanel(): JComponent {
|
override fun createCenterPanel(): JComponent {
|
||||||
val panel = JPanel(GridLayout(2, 8, 4, 4))
|
val panel = JPanel(GridLayout(2, 8, 4, 4))
|
||||||
val colorPalette = TerminalFactory.getInstance()
|
val terminal = TerminalFactory.getInstance().createTerminal()
|
||||||
.createTerminal().getTerminalModel().getColorPalette()
|
val colorPalette = terminal.getTerminalModel().getColorPalette()
|
||||||
for (i in 1..16) {
|
for (i in 1..16) {
|
||||||
val c = JPanel()
|
val c = JPanel()
|
||||||
c.preferredSize = Dimension(24, 24)
|
c.preferredSize = Dimension(24, 24)
|
||||||
|
c.minimumSize = c.preferredSize
|
||||||
c.background = Color(colorPalette.getXTerm256Color(i))
|
c.background = Color(colorPalette.getXTerm256Color(i))
|
||||||
c.addMouseListener(object : MouseAdapter() {
|
c.addMouseListener(object : MouseAdapter() {
|
||||||
override fun mouseClicked(e: MouseEvent) {
|
override fun mouseClicked(e: MouseEvent) {
|
||||||
@@ -67,6 +71,12 @@ class ChooseColorTemplateDialog(owner: Window, title: String) : DialogWrapper(ow
|
|||||||
cPanel.add(panel, BorderLayout.CENTER)
|
cPanel.add(panel, BorderLayout.CENTER)
|
||||||
cPanel.add(customBtn, BorderLayout.SOUTH)
|
cPanel.add(customBtn, BorderLayout.SOUTH)
|
||||||
cPanel.border = BorderFactory.createEmptyBorder(if (SystemInfo.isLinux) 6 else 0, 12, 12, 12)
|
cPanel.border = BorderFactory.createEmptyBorder(if (SystemInfo.isLinux) 6 else 0, 12, 12, 12)
|
||||||
|
|
||||||
|
Disposer.register(disposable, object : Disposable {
|
||||||
|
override fun dispose() {
|
||||||
|
terminal.close()
|
||||||
|
}
|
||||||
|
})
|
||||||
return cPanel
|
return cPanel
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,4 +84,9 @@ class ChooseColorTemplateDialog(owner: Window, title: String) : DialogWrapper(ow
|
|||||||
override fun createSouthPanel(): JComponent? {
|
override fun createSouthPanel(): JComponent? {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun doOKAction() {
|
||||||
|
ok = true
|
||||||
|
super.doOKAction()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -3,8 +3,8 @@ package app.termora.highlight
|
|||||||
import java.awt.Color
|
import java.awt.Color
|
||||||
import javax.swing.JPanel
|
import javax.swing.JPanel
|
||||||
|
|
||||||
class ColorPanel : JPanel {
|
class ColorPanel : JPanel() {
|
||||||
var color: Color = Color.WHITE
|
var color: Color? = null
|
||||||
set(value) {
|
set(value) {
|
||||||
background = value
|
background = value
|
||||||
val old = field
|
val old = field
|
||||||
@@ -13,7 +13,4 @@ class ColorPanel : JPanel {
|
|||||||
}
|
}
|
||||||
var colorIndex = -1
|
var colorIndex = -1
|
||||||
|
|
||||||
constructor(color: Color) : super() {
|
|
||||||
this.color = color
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -285,29 +285,27 @@ class KeywordHighlightPanel(private val accountOwner: AccountOwner) : JPanel(Bor
|
|||||||
dialog.keywordTextField.text = keywordHighlight.keyword
|
dialog.keywordTextField.text = keywordHighlight.keyword
|
||||||
dialog.descriptionTextField.text = keywordHighlight.description
|
dialog.descriptionTextField.text = keywordHighlight.description
|
||||||
|
|
||||||
if (keywordHighlight.textColor <= 16) {
|
if (keywordHighlight.textColor in 0..16) {
|
||||||
if (keywordHighlight.textColor == 0) {
|
if (keywordHighlight.textColor == 0) {
|
||||||
dialog.textColor.color = Color(colorPalette.getColor(TerminalColor.Basic.FOREGROUND))
|
dialog.textColor.background = Color(colorPalette.getColor(TerminalColor.Basic.FOREGROUND))
|
||||||
|
dialog.textColor.colorIndex = -1
|
||||||
} else {
|
} else {
|
||||||
dialog.textColor.color = Color(colorPalette.getXTerm256Color(keywordHighlight.textColor))
|
dialog.textColor.color = Color(colorPalette.getXTerm256Color(keywordHighlight.textColor))
|
||||||
}
|
|
||||||
dialog.textColor.colorIndex = keywordHighlight.textColor
|
dialog.textColor.colorIndex = keywordHighlight.textColor
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
dialog.textColor.color = Color(keywordHighlight.textColor)
|
dialog.textColor.color = Color(keywordHighlight.textColor)
|
||||||
dialog.textColor.colorIndex = -1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keywordHighlight.backgroundColor <= 16) {
|
if (keywordHighlight.backgroundColor in 0..16) {
|
||||||
if (keywordHighlight.backgroundColor == 0) {
|
if (keywordHighlight.backgroundColor == 0) {
|
||||||
dialog.backgroundColor.color = Color(colorPalette.getColor(TerminalColor.Basic.BACKGROUND))
|
dialog.backgroundColor.background = Color(colorPalette.getColor(TerminalColor.Basic.BACKGROUND))
|
||||||
|
dialog.backgroundColor.colorIndex = -1
|
||||||
} else {
|
} else {
|
||||||
dialog.backgroundColor.color =
|
dialog.backgroundColor.color =
|
||||||
Color(colorPalette.getXTerm256Color(keywordHighlight.backgroundColor))
|
Color(colorPalette.getXTerm256Color(keywordHighlight.backgroundColor))
|
||||||
}
|
|
||||||
dialog.backgroundColor.colorIndex = keywordHighlight.backgroundColor
|
dialog.backgroundColor.colorIndex = keywordHighlight.backgroundColor
|
||||||
} else {
|
}
|
||||||
dialog.backgroundColor.color = Color(keywordHighlight.backgroundColor)
|
|
||||||
dialog.backgroundColor.colorIndex = -1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog.boldCheckBox.isSelected = keywordHighlight.bold
|
dialog.boldCheckBox.isSelected = keywordHighlight.bold
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import java.awt.event.MouseEvent
|
|||||||
import java.awt.event.WindowAdapter
|
import java.awt.event.WindowAdapter
|
||||||
import java.awt.event.WindowEvent
|
import java.awt.event.WindowEvent
|
||||||
import javax.swing.*
|
import javax.swing.*
|
||||||
|
import kotlin.math.max
|
||||||
|
|
||||||
class NewKeywordHighlightDialog(
|
class NewKeywordHighlightDialog(
|
||||||
owner: Window,
|
owner: Window,
|
||||||
@@ -95,7 +96,7 @@ class NewKeywordHighlightDialog(
|
|||||||
|
|
||||||
init()
|
init()
|
||||||
pack()
|
pack()
|
||||||
size = Dimension(UIManager.getInt("Dialog.width") - 200, height)
|
size = Dimension(UIManager.getInt("Dialog.width") - 200, max(height, preferredSize.height))
|
||||||
setLocationRelativeTo(null)
|
setLocationRelativeTo(null)
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -121,13 +122,15 @@ class NewKeywordHighlightDialog(
|
|||||||
lineThroughCheckBox.addActionListener { repaintKeywordHighlightView() }
|
lineThroughCheckBox.addActionListener { repaintKeywordHighlightView() }
|
||||||
|
|
||||||
textColorRevert.addActionListener {
|
textColorRevert.addActionListener {
|
||||||
textColor.color = Color(colorPalette.getColor(TerminalColor.Basic.FOREGROUND))
|
textColor.color = null
|
||||||
textColor.colorIndex = 0
|
textColor.background = Color(colorPalette.getColor(TerminalColor.Basic.FOREGROUND))
|
||||||
|
textColor.colorIndex = -1
|
||||||
repaintKeywordHighlightView()
|
repaintKeywordHighlightView()
|
||||||
}
|
}
|
||||||
backgroundColorRevert.addActionListener {
|
backgroundColorRevert.addActionListener {
|
||||||
backgroundColor.color = Color(colorPalette.getColor(TerminalColor.Basic.BACKGROUND))
|
backgroundColor.color = null
|
||||||
backgroundColor.colorIndex = 0
|
backgroundColor.background = Color(colorPalette.getColor(TerminalColor.Basic.BACKGROUND))
|
||||||
|
backgroundColor.colorIndex = -1
|
||||||
repaintKeywordHighlightView()
|
repaintKeywordHighlightView()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,8 +148,22 @@ class NewKeywordHighlightDialog(
|
|||||||
keywordHighlightView.italic = italicCheckBox.isSelected
|
keywordHighlightView.italic = italicCheckBox.isSelected
|
||||||
keywordHighlightView.underline = underlineCheckBox.isSelected
|
keywordHighlightView.underline = underlineCheckBox.isSelected
|
||||||
keywordHighlightView.lineThrough = lineThroughCheckBox.isSelected
|
keywordHighlightView.lineThrough = lineThroughCheckBox.isSelected
|
||||||
|
|
||||||
|
if (textColor.color == null && textColor.colorIndex == -1) {
|
||||||
|
keywordHighlightView.textColor = Color(colorPalette.getColor(TerminalColor.Basic.FOREGROUND))
|
||||||
|
} else if (textColor.color != null) {
|
||||||
keywordHighlightView.textColor = textColor.color
|
keywordHighlightView.textColor = textColor.color
|
||||||
|
} else {
|
||||||
|
keywordHighlightView.textColor = Color(colorPalette.getXTerm256Color(textColor.colorIndex))
|
||||||
|
}
|
||||||
|
|
||||||
|
if (backgroundColor.color == null && backgroundColor.colorIndex == -1) {
|
||||||
|
keywordHighlightView.backgroundColor = Color(colorPalette.getColor(TerminalColor.Basic.BACKGROUND))
|
||||||
|
} else if (backgroundColor.color != null) {
|
||||||
keywordHighlightView.backgroundColor = backgroundColor.color
|
keywordHighlightView.backgroundColor = backgroundColor.color
|
||||||
|
} else {
|
||||||
|
keywordHighlightView.backgroundColor = Color(colorPalette.getXTerm256Color(backgroundColor.colorIndex))
|
||||||
|
}
|
||||||
keywordHighlightView.repaint()
|
keywordHighlightView.repaint()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,7 +209,8 @@ class NewKeywordHighlightDialog(
|
|||||||
val owner = this
|
val owner = this
|
||||||
val arc = UIManager.getInt("Component.arc")
|
val arc = UIManager.getInt("Component.arc")
|
||||||
val lineBorder = FlatLineBorder(Insets(1, 1, 1, 1), DynamicColor.BorderColor, 1f, arc)
|
val lineBorder = FlatLineBorder(Insets(1, 1, 1, 1), DynamicColor.BorderColor, 1f, arc)
|
||||||
val colorPanel = ColorPanel(color)
|
val colorPanel = ColorPanel()
|
||||||
|
colorPanel.background = color
|
||||||
colorPanel.preferredSize = keywordTextField.preferredSize
|
colorPanel.preferredSize = keywordTextField.preferredSize
|
||||||
colorPanel.border = lineBorder
|
colorPanel.border = lineBorder
|
||||||
colorPanel.addMouseListener(object : MouseAdapter() {
|
colorPanel.addMouseListener(object : MouseAdapter() {
|
||||||
@@ -200,10 +218,19 @@ class NewKeywordHighlightDialog(
|
|||||||
if (SwingUtilities.isLeftMouseButton(e)) {
|
if (SwingUtilities.isLeftMouseButton(e)) {
|
||||||
val dialog = ChooseColorTemplateDialog(owner, title)
|
val dialog = ChooseColorTemplateDialog(owner, title)
|
||||||
dialog.setLocationRelativeTo(owner)
|
dialog.setLocationRelativeTo(owner)
|
||||||
dialog.defaultColor = colorPanel.color
|
dialog.defaultColor = colorPanel.color ?: Color.orange
|
||||||
dialog.isVisible = true
|
dialog.isVisible = true
|
||||||
colorPanel.color = dialog.color ?: return
|
if (dialog.ok.not()) return
|
||||||
|
|
||||||
|
colorPanel.colorIndex = -1
|
||||||
|
colorPanel.color = null
|
||||||
|
if (dialog.colorIndex in 1..16) {
|
||||||
colorPanel.colorIndex = dialog.colorIndex
|
colorPanel.colorIndex = dialog.colorIndex
|
||||||
|
colorPanel.background = Color(colorPalette.getXTerm256Color(dialog.colorIndex))
|
||||||
|
} else {
|
||||||
|
colorPanel.color = dialog.color
|
||||||
|
}
|
||||||
|
repaintKeywordHighlightView()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -218,13 +245,22 @@ class NewKeywordHighlightDialog(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
val newTextColor = if (textColor.color != null) textColor.color?.toRGB() ?: 0
|
||||||
|
else if (textColor.colorIndex == -1) 0
|
||||||
|
else textColor.colorIndex
|
||||||
|
|
||||||
|
|
||||||
|
val newBackgroundColor = if (backgroundColor.color != null) backgroundColor.color?.toRGB() ?: 0
|
||||||
|
else if (backgroundColor.colorIndex == -1) 0
|
||||||
|
else backgroundColor.colorIndex
|
||||||
|
|
||||||
keywordHighlight = KeywordHighlight(
|
keywordHighlight = KeywordHighlight(
|
||||||
keyword = keywordTextField.text,
|
keyword = keywordTextField.text,
|
||||||
description = descriptionTextField.text,
|
description = descriptionTextField.text,
|
||||||
matchCase = matchCaseBtn.isSelected,
|
matchCase = matchCaseBtn.isSelected,
|
||||||
regex = regexBtn.isSelected,
|
regex = regexBtn.isSelected,
|
||||||
textColor = if (textColor.colorIndex != -1) textColor.colorIndex else textColor.color.toRGB(),
|
textColor = newTextColor,
|
||||||
backgroundColor = if (backgroundColor.colorIndex != -1) backgroundColor.colorIndex else backgroundColor.color.toRGB(),
|
backgroundColor = newBackgroundColor,
|
||||||
bold = boldCheckBox.isSelected,
|
bold = boldCheckBox.isSelected,
|
||||||
italic = italicCheckBox.isSelected,
|
italic = italicCheckBox.isSelected,
|
||||||
lineThrough = lineThroughCheckBox.isSelected,
|
lineThrough = lineThroughCheckBox.isSelected,
|
||||||
|
|||||||
Reference in New Issue
Block a user