From 754d97d9f451abe82b3b548351721cf01b6ce1d2 Mon Sep 17 00:00:00 2001 From: zehuanncc <37552269+zehuanncc@users.noreply.github.com> Date: Tue, 13 Apr 2021 14:39:23 -0400 Subject: [PATCH] Fix color issue in dark theme --- BappManifest.bmf | 2 +- ...SendToDecoderImprovedContextMenuFactory.java | 4 ++-- .../components/DecoderSegment.java | 1 - .../decoderimproved/components/DecoderTab.java | 17 +++++++++++++++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/BappManifest.bmf b/BappManifest.bmf index 43af6e5..2a8b14b 100644 --- a/BappManifest.bmf +++ b/BappManifest.bmf @@ -2,7 +2,7 @@ Uuid: 0a05afd37da44adca514acef1cdde3b9 ExtensionType: 1 Name: Decoder Improved RepoName: decoder-improved -ScreenVersion: 1.2.5.1 +ScreenVersion: 1.2.6 SerialVersion: 8 MinPlatformVersion: 0 ProOnly: False diff --git a/src/main/trust/nccgroup/decoderimproved/SendToDecoderImprovedContextMenuFactory.java b/src/main/trust/nccgroup/decoderimproved/SendToDecoderImprovedContextMenuFactory.java index cc32a10..5a050e2 100644 --- a/src/main/trust/nccgroup/decoderimproved/SendToDecoderImprovedContextMenuFactory.java +++ b/src/main/trust/nccgroup/decoderimproved/SendToDecoderImprovedContextMenuFactory.java @@ -15,7 +15,6 @@ */ class SendToDecoderImprovedContextMenuFactory implements IContextMenuFactory { private final Color HIGHLIGHT_COLOR = new Color(0xE58900); - private final Color DEFAULT_COLOR = Color.BLACK; private MainTab mainTab; @@ -114,9 +113,10 @@ private void highlightParentTab() { if (tabComponent != null) { JTabbedPane parentTabbedPane = (JTabbedPane) tabComponent.getParent(); int index = parentTabbedPane.indexOfComponent(tabComponent); + Color originalColor = parentTabbedPane.getForegroundAt(index); parentTabbedPane.setBackgroundAt(index, HIGHLIGHT_COLOR); Timer timer = new Timer(3000, e -> { - parentTabbedPane.setBackgroundAt(index, DEFAULT_COLOR); + parentTabbedPane.setBackgroundAt(index, originalColor); }); timer.setRepeats(false); timer.start(); diff --git a/src/main/trust/nccgroup/decoderimproved/components/DecoderSegment.java b/src/main/trust/nccgroup/decoderimproved/components/DecoderSegment.java index 74d6ba9..f021f3a 100644 --- a/src/main/trust/nccgroup/decoderimproved/components/DecoderSegment.java +++ b/src/main/trust/nccgroup/decoderimproved/components/DecoderSegment.java @@ -88,7 +88,6 @@ JTextArea getTextEditor() { void updateEditors(DecoderSegmentState dsState) { lockDocumentEvents = true; textEditor.setText(dsState.getDisplayString()); - textEditor.setForeground(Color.BLACK); textEditor.setEditable(true); hexEditor.setData(new ByteArrayEditableData(dsState.getByteArray())); lockDocumentEvents = false; diff --git a/src/main/trust/nccgroup/decoderimproved/components/DecoderTab.java b/src/main/trust/nccgroup/decoderimproved/components/DecoderTab.java index e1944e1..027f006 100644 --- a/src/main/trust/nccgroup/decoderimproved/components/DecoderTab.java +++ b/src/main/trust/nccgroup/decoderimproved/components/DecoderTab.java @@ -1,13 +1,17 @@ package trust.nccgroup.decoderimproved.components; +import trust.nccgroup.decoderimproved.Logger; import trust.nccgroup.decoderimproved.ModificationException; import javax.swing.*; +import javax.swing.border.Border; import java.awt.*; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.nio.ByteBuffer; import java.nio.charset.CharsetDecoder; import java.nio.charset.CodingErrorAction; @@ -158,9 +162,18 @@ private DecoderTabHandle(String title, MainTab mainTab, DecoderTab decoderTab) { tabNameField = new JTextField(title); tabNameField.setOpaque(false); tabNameField.setBorder(null); - tabNameField.setBackground(new Color(0, 0, 0, 0)); tabNameField.setEditable(false); - tabNameField.setCaretColor(Color.BLACK); + // This is to overwrite the change of the border of each tabNameField, which is triggered when the theme is changed in Burp + tabNameField.addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals("border")) { + tabNameField.removePropertyChangeListener(this); + tabNameField.setBorder(null); + tabNameField.addPropertyChangeListener(this); + } + } + }); this.add(tabNameField); closeButton = new JButton("✕");