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