From 6e0b35c06bf8f22d91b65ab881afcf99b2534682 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Wed, 7 Apr 2021 22:23:29 +0200 Subject: [PATCH] #1485 Improved skins support, night mode --- CHANGELOG.md | 5 +- lib/jsyntaxpane-0.9.5.jar | Bin 605398 -> 606928 bytes .../jsyntaxpane/DarkModeAwareSyntaxKit.java | 59 ++++++++++++++++++ .../components/LineNumbersRuler.java | 15 +++-- .../syntaxkits/ActionScript3SyntaxKit.java | 4 +- .../syntaxkits/ActionScriptSyntaxKit.java | 4 +- .../syntaxkits/Flasm3MethodInfoSyntaxKit.java | 4 +- .../syntaxkits/Flasm3SyntaxKit.java | 4 +- .../syntaxkits/FlasmSyntaxKit.java | 4 +- .../syntaxkits/SWFTextSyntaxKit.java | 4 +- .../decompiler/flash/gui/HeaderLabel.java | 2 + .../jpexs/decompiler/flash/gui/HtmlLabel.java | 11 ++++ src/com/jpexs/decompiler/flash/gui/Main.java | 4 ++ .../decompiler/flash/gui/TagInfoPanel.java | 3 +- .../gui/editor/DebuggableEditorPane.java | 35 ++++++++--- .../gui/editor/LineMarkedEditorPane.java | 37 ++++++++++- .../flash/gui/editor/UndoFixedEditorPane.java | 4 ++ 17 files changed, 170 insertions(+), 29 deletions(-) create mode 100644 libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/DarkModeAwareSyntaxKit.java diff --git a/CHANGELOG.md b/CHANGELOG.md index bbd75c6e1..541949db0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ All notable changes to this project will be documented in this file. ## [Unreleased] ### Added - SoundStreamHead has associated sprite id in its name in the tagtree +- [#1485] Improved skins support, night mode ## [14.4.0] - 2021-04-05 ### Added @@ -2074,7 +2075,8 @@ All notable changes to this project will be documented in this file. ### Added - Initial public release -[Unreleased]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.3.1...dev +[Unreleased]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.4.0...dev +[14.4.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.3.1...version14.4.0 [14.3.1]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.3.0...version14.3.1 [14.3.0]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.2.1...version14.3.0 [14.2.1]: https://github.com/jindrapetrik/jpexs-decompiler/compare/version14.2.0...version14.2.1 @@ -2187,6 +2189,7 @@ All notable changes to this project will be documented in this file. [alpha 9]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha8...alpha9 [alpha 8]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha7...alpha8 [alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7 +[#1485]: https://www.free-decompiler.com/flash/issues/1485 [#1015]: https://www.free-decompiler.com/flash/issues/1015 [#1466]: https://www.free-decompiler.com/flash/issues/1466 [#1513]: https://www.free-decompiler.com/flash/issues/1513 diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar index c36c619ecdcdd6b9edcd940a475a24f729ec2d15..22bf52a48c34f9f4dac3d030f065e1b414283fcd 100644 GIT binary patch delta 52297 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

kUO;3>?)ots%(!$&7&Yz^uYM;R!ZSym?x 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 delta 50269 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

%Z)W#4h_xS`<9@VG>{~ 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 RCW59OoSZHegYyyG{{bBnp3eXP diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/DarkModeAwareSyntaxKit.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/DarkModeAwareSyntaxKit.java new file mode 100644 index 000000000..be1b0d5da --- /dev/null +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/DarkModeAwareSyntaxKit.java @@ -0,0 +1,59 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import java.awt.Color; +import javax.swing.UIManager; +import jsyntaxpane.util.Configuration; + +public class DarkModeAwareSyntaxKit extends DefaultSyntaxKit { + + public DarkModeAwareSyntaxKit(Lexer lexer) { + super(lexer); + } + + private int cut(double val) { + int ival = (int) Math.round(val); + if (ival < 0) { + return 0; + } + if (ival > 255) { + ival = 255; + } + return ival; + } + @Override + public Configuration getConfig() { + Configuration cnf = super.getConfig(); + Color editorBackground = UIManager.getColor("EditorPane.background"); + int light = (editorBackground.getRed() + editorBackground.getGreen() + editorBackground.getBlue()) / 3; + if (light < 128) { + cnf.put("Style.DEFAULT", "0xffffff, 0"); + cnf.put("Style.IDENTIFIER", "0xffffff, 0"); + cnf.put("Style.TYPE", "0xffffff, 2"); + cnf.put("Style.TYPE2", "0xffffff, 1"); + cnf.put("Style.TYPE3", "0xffffff, 3"); + cnf.put("Style.OPERATOR", "0xffffff, 0"); + cnf.put("Style.DELIMITER", "0xffffff, 1"); + cnf.put("Style.KEYWORD", "0x8888ff, 0"); + cnf.put("Style.KEYWORD2", "0x448888, 3"); + cnf.put("Style.COMMENT", "0x88ff88, 3"); + cnf.put("Style.COMMENT2", "0x88ff88, 3"); + + cnf.put("CaretColor", "0xffffff"); + } + return cnf; + } + +} diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java index 5c57438b3..9b7d98e0c 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java @@ -32,6 +32,7 @@ import javax.swing.JEditorPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; +import javax.swing.UIManager; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; import javax.swing.event.DocumentEvent; @@ -87,7 +88,8 @@ public class LineNumbersRuler extends JPanel // The formatting to use for displaying numbers. Use in String.format(numbersFormat, line) private String numbersFormat = "%3d"; - private Color currentLineColor; + protected Color currentLineColor; + protected Color currentLineForegroundColor; /** * Get the JscrollPane that contains this EditorPane, or null if no @@ -112,11 +114,13 @@ public class LineNumbersRuler extends JPanel int right = config.getInteger(PROPERTY_RIGHT_MARGIN, DEFAULT_R_MARGIN); int left = config.getInteger(PROPERTY_LEFT_MARGIN, DEFAULT_L_MARGIN); Color foreground = config.getColor(PROPERTY_FOREGROUND, Color.BLACK); - setForeground(foreground); + setForeground(UIManager.getColor("Panel.foreground")); Color back = config.getColor(PROPERTY_BACKGROUND, Color.WHITE); - setBackground(back); + setBackground(UIManager.getColor("Panel.background")); setBorder(BorderFactory.createEmptyBorder(0, left, 0, right)); - currentLineColor = config.getColor(PROPERTY_CURRENT_BACK, back); + //currentLineColor = config.getColor(PROPERTY_CURRENT_BACK, back); + currentLineColor = UIManager.getColor("List.selectionBackground"); + currentLineForegroundColor = UIManager.getColor("List.selectionForeground"); } @Override @@ -237,9 +241,10 @@ public class LineNumbersRuler extends JPanel if (line == currentLine) { g.setColor(currentLineColor); g.fillRect(0, y - lh + fontMetrics.getDescent() - 1, getWidth(), lh); - g.setColor(getForeground()); + g.setColor(currentLineForegroundColor); g.drawString(lineNumber, insets.left, y); } else { + g.setColor(getForeground()); g.drawString(lineNumber, insets.left, y); } } diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScript3SyntaxKit.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScript3SyntaxKit.java index c89039dc2..981532ed1 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScript3SyntaxKit.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScript3SyntaxKit.java @@ -13,7 +13,7 @@ */ package jsyntaxpane.syntaxkits; -import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.DarkModeAwareSyntaxKit; import jsyntaxpane.Lexer; import jsyntaxpane.lexers.ActionScript3Lexer; @@ -21,7 +21,7 @@ import jsyntaxpane.lexers.ActionScript3Lexer; * * @author JPEXS */ -public class ActionScript3SyntaxKit extends DefaultSyntaxKit { +public class ActionScript3SyntaxKit extends DarkModeAwareSyntaxKit { public ActionScript3SyntaxKit() { super(new ActionScript3Lexer()); diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScriptSyntaxKit.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScriptSyntaxKit.java index bb94d9778..3988b6b0c 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScriptSyntaxKit.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScriptSyntaxKit.java @@ -13,7 +13,7 @@ */ package jsyntaxpane.syntaxkits; -import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.DarkModeAwareSyntaxKit; import jsyntaxpane.Lexer; import jsyntaxpane.lexers.ActionScriptLexer; @@ -21,7 +21,7 @@ import jsyntaxpane.lexers.ActionScriptLexer; * * @author JPEXS */ -public class ActionScriptSyntaxKit extends DefaultSyntaxKit { +public class ActionScriptSyntaxKit extends DarkModeAwareSyntaxKit { public ActionScriptSyntaxKit() { super(new ActionScriptLexer()); diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3MethodInfoSyntaxKit.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3MethodInfoSyntaxKit.java index d4c534ad3..587bbb6ea 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3MethodInfoSyntaxKit.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3MethodInfoSyntaxKit.java @@ -13,14 +13,14 @@ */ package jsyntaxpane.syntaxkits; -import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.DarkModeAwareSyntaxKit; import jsyntaxpane.Lexer; import jsyntaxpane.lexers.Flasm3MethodInfoLexer; /** * @author JPEXS */ -public class Flasm3MethodInfoSyntaxKit extends DefaultSyntaxKit { +public class Flasm3MethodInfoSyntaxKit extends DarkModeAwareSyntaxKit { public Flasm3MethodInfoSyntaxKit() { super(new Flasm3MethodInfoLexer()); diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3SyntaxKit.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3SyntaxKit.java index 19fe5a092..040740a8f 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3SyntaxKit.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3SyntaxKit.java @@ -13,14 +13,14 @@ */ package jsyntaxpane.syntaxkits; -import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.DarkModeAwareSyntaxKit; import jsyntaxpane.Lexer; import jsyntaxpane.lexers.Flasm3Lexer; /** * @author JPEXS */ -public class Flasm3SyntaxKit extends DefaultSyntaxKit { +public class Flasm3SyntaxKit extends DarkModeAwareSyntaxKit { public Flasm3SyntaxKit() { super(new Flasm3Lexer()); diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/FlasmSyntaxKit.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/FlasmSyntaxKit.java index b27e06df9..9ef1bec48 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/FlasmSyntaxKit.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/FlasmSyntaxKit.java @@ -13,14 +13,14 @@ */ package jsyntaxpane.syntaxkits; -import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.DarkModeAwareSyntaxKit; import jsyntaxpane.Lexer; import jsyntaxpane.lexers.FlasmLexer; /** * @author JPEXS */ -public class FlasmSyntaxKit extends DefaultSyntaxKit { +public class FlasmSyntaxKit extends DarkModeAwareSyntaxKit { public FlasmSyntaxKit() { super(new FlasmLexer()); diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/SWFTextSyntaxKit.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/SWFTextSyntaxKit.java index b043ea558..d72c4043c 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/SWFTextSyntaxKit.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/SWFTextSyntaxKit.java @@ -13,14 +13,14 @@ */ package jsyntaxpane.syntaxkits; -import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.DarkModeAwareSyntaxKit; import jsyntaxpane.Lexer; import jsyntaxpane.lexers.SWFTextLexer; /** * @author JPEXS */ -public class SWFTextSyntaxKit extends DefaultSyntaxKit { +public class SWFTextSyntaxKit extends DarkModeAwareSyntaxKit { public SWFTextSyntaxKit() { super(new SWFTextLexer()); diff --git a/src/com/jpexs/decompiler/flash/gui/HeaderLabel.java b/src/com/jpexs/decompiler/flash/gui/HeaderLabel.java index 6eb103fa3..d2337dc2a 100644 --- a/src/com/jpexs/decompiler/flash/gui/HeaderLabel.java +++ b/src/com/jpexs/decompiler/flash/gui/HeaderLabel.java @@ -17,12 +17,14 @@ package com.jpexs.decompiler.flash.gui; import com.jpexs.decompiler.flash.configuration.Configuration; +import java.awt.Color; import java.awt.Graphics; import java.awt.SystemColor; import java.awt.geom.GeneralPath; import java.util.EnumSet; import java.util.Set; import javax.swing.JLabel; +import javax.swing.UIManager; import org.pushingpixels.substance.api.ColorSchemeAssociationKind; import org.pushingpixels.substance.api.ComponentState; import org.pushingpixels.substance.api.DecorationAreaType; diff --git a/src/com/jpexs/decompiler/flash/gui/HtmlLabel.java b/src/com/jpexs/decompiler/flash/gui/HtmlLabel.java index 62b94e515..a5ffeefc1 100644 --- a/src/com/jpexs/decompiler/flash/gui/HtmlLabel.java +++ b/src/com/jpexs/decompiler/flash/gui/HtmlLabel.java @@ -19,7 +19,9 @@ package com.jpexs.decompiler.flash.gui; import java.awt.Color; import javax.swing.JEditorPane; import javax.swing.JLabel; +import javax.swing.UIManager; import javax.swing.event.HyperlinkEvent; +import javax.swing.text.html.HTMLDocument; public class HtmlLabel extends JEditorPane { @@ -53,6 +55,10 @@ public class HtmlLabel extends JEditorPane { } this.rawText = t; super.setText(modText); + + String aRule = "a {color: " + getUIColorToHex("List.selectionBackground") + "}"; + + ((HTMLDocument) getDocument()).getStyleSheet().addRule(aRule); } @Override @@ -60,4 +66,9 @@ public class HtmlLabel extends JEditorPane { return rawText; } + private static String getUIColorToHex(String name) { + Color c = UIManager.getColor(name); + return String.format("#%02x%02x%02x", c.getRed(), c.getGreen(), c.getBlue()); + } + } diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index c0d2100b5..ba4877ffd 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -63,6 +63,7 @@ import com.sun.jna.platform.win32.Advapi32Util; import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.WinReg; import java.awt.AWTException; +import java.awt.Color; import java.awt.Component; import java.awt.Frame; import java.awt.GraphicsEnvironment; @@ -125,6 +126,9 @@ import javax.swing.SwingWorker; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.filechooser.FileFilter; +import jsyntaxpane.SyntaxStyle; +import jsyntaxpane.SyntaxStyles; +import jsyntaxpane.TokenType; import org.pushingpixels.substance.api.SubstanceLookAndFeel; /** diff --git a/src/com/jpexs/decompiler/flash/gui/TagInfoPanel.java b/src/com/jpexs/decompiler/flash/gui/TagInfoPanel.java index c54b98959..c0e86fdc1 100644 --- a/src/com/jpexs/decompiler/flash/gui/TagInfoPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/TagInfoPanel.java @@ -177,7 +177,8 @@ public class TagInfoPanel extends JPanel { + "padding:1px;" + "}" + "td { border: 1px solid " + getUIColorToHex("Table.gridColor") + "; }" - + "html { border: 1px solid " + getUIColorToHex("Table.gridColor") + "; }";; + + "html { border: 1px solid " + getUIColorToHex("Table.gridColor") + "; }" + + "a {color: " + getUIColorToHex("List.selectionBackground") + "}"; } ((HTMLDocument) editorPane.getDocument()).getStyleSheet().addRule(bodyRule); diff --git a/src/com/jpexs/decompiler/flash/gui/editor/DebuggableEditorPane.java b/src/com/jpexs/decompiler/flash/gui/editor/DebuggableEditorPane.java index 35e545222..b4bd04f63 100644 --- a/src/com/jpexs/decompiler/flash/gui/editor/DebuggableEditorPane.java +++ b/src/com/jpexs/decompiler/flash/gui/editor/DebuggableEditorPane.java @@ -24,6 +24,7 @@ import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.util.Set; +import javax.swing.UIManager; import jsyntaxpane.components.BreakPointListener; import jsyntaxpane.components.LineMarkerPainter; import jsyntaxpane.components.LineNumbersBreakpointsRuler; @@ -38,7 +39,7 @@ public class DebuggableEditorPane extends LineMarkedEditorPane implements BreakP private static final Color BG_RULER_COLOR = new Color(0xe9, 0xe8, 0xe2); - private static final Color BG_BREAKPOINT_COLOR = new Color(0xfc, 0x9d, 0x9f); + private static Color BG_BREAKPOINT_COLOR = new Color(0xfc, 0x9d, 0x9f); private static final Color FG_BREAKPOINT_COLOR = null; @@ -56,7 +57,7 @@ public class DebuggableEditorPane extends LineMarkedEditorPane implements BreakP private static final int PRIORITY_INVALID_BREAKPOINT = 10; - public static final LineMarker BREAKPOINT_MARKER = new LineMarker(FG_BREAKPOINT_COLOR, BG_BREAKPOINT_COLOR, PRIORITY_BREAKPOINT); + public static LineMarker BREAKPOINT_MARKER = new LineMarker(FG_BREAKPOINT_COLOR, BG_BREAKPOINT_COLOR, PRIORITY_BREAKPOINT); public static final LineMarker IP_MARKER = new LineMarker(FG_IP_COLOR, BG_IP_COLOR, PRIORITY_IP); @@ -66,6 +67,16 @@ public class DebuggableEditorPane extends LineMarkedEditorPane implements BreakP private LineNumbersBreakpointsRuler ruler; + public DebuggableEditorPane() { + + Color editorBackground = UIManager.getColor("EditorPane.background"); + int light = (editorBackground.getRed() + editorBackground.getGreen() + editorBackground.getBlue()) / 3; + if (light < 128) { + BG_BREAKPOINT_COLOR = new Color(0x88, 0x00, 0x00); + BREAKPOINT_MARKER = new LineMarker(FG_BREAKPOINT_COLOR, BG_BREAKPOINT_COLOR, PRIORITY_BREAKPOINT); + } + } + public synchronized void setScriptName(String scriptName) { this.scriptName = scriptName; } @@ -128,19 +139,25 @@ public class DebuggableEditorPane extends LineMarkedEditorPane implements BreakP public void paintLineMarker(Graphics g, int line, int x, int lineY, int textY, int lineHeight, boolean currentLine, int maxLines) { if (currentLine) { - g.setColor(BG_CURRENT_COLOR); + g.setColor(UIManager.getColor("List.selectionBackground")); } else { - g.setColor(View.getDefaultBackgroundColor()); + g.setColor(UIManager.getColor("Panel.background")); } int h = lineHeight; if (line == 1) { h += lineY; } - if (line == maxLines) { + /*if (line == maxLines) { h = getHeight() - lineY; - } + }*/ g.fillRect(0, line == 1 ? 0 : lineY, getWidth(), h); + if (line == maxLines) { + g.setColor(UIManager.getColor("Panel.background")); + g.fillRect(0, line == 1 ? 0 : lineY + h, getWidth(), getHeight() - lineY - lineHeight); + } + + ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); ((Graphics2D) g).setStroke(new BasicStroke(0.5f)); @@ -168,7 +185,11 @@ public class DebuggableEditorPane extends LineMarkedEditorPane implements BreakP drawText = false; } if (drawText) { - g.setColor(getForeground()); + if (currentLine) { + g.setColor(UIManager.getColor("List.selectionForeground")); + } else { + g.setColor(UIManager.getColor("Panel.foreground")); + } g.drawString("" + line, x, textY); } diff --git a/src/com/jpexs/decompiler/flash/gui/editor/LineMarkedEditorPane.java b/src/com/jpexs/decompiler/flash/gui/editor/LineMarkedEditorPane.java index 13d94cc39..e3bdbfd3b 100644 --- a/src/com/jpexs/decompiler/flash/gui/editor/LineMarkedEditorPane.java +++ b/src/com/jpexs/decompiler/flash/gui/editor/LineMarkedEditorPane.java @@ -39,6 +39,7 @@ import java.util.Map; import java.util.Objects; import java.util.SortedSet; import java.util.TreeSet; +import javax.swing.UIManager; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; import javax.swing.plaf.TextUI; @@ -642,19 +643,49 @@ public class LineMarkedEditorPane extends UndoFixedEditorPane implements LinkHan } } + private int cut(double val) { + int ival = (int) Math.round(val); + if (ival < 0) { + return 0; + } + if (ival > 255) { + ival = 255; + } + return ival; + } + @Override public void paint(Graphics g) { - g.setColor(Color.white); //FIXME + Color c; + Color selColor; + if (com.jpexs.decompiler.flash.gui.View.isOceanic()) { + c = Color.white; + g.setColor(c); + selColor = BG_SELECTED_LINE; + } else { + c = UIManager.getColor("EditorPane.background"); + g.setColor(c); + int light = (c.getRed() + c.getGreen() + c.getBlue()) / 3; + + if (light > 128) { + selColor = new Color(cut(c.getRed() * 0.9), cut(c.getGreen() * 0.9), cut(c.getBlue() * 0.9)); + } else { + selColor = new Color(cut(c.getRed() * 1.1), cut(c.getGreen() * 1.1), cut(c.getBlue() * 1.1)); + } + } + + + g.fillRect(0, 0, getWidth(), getHeight()); FontMetrics fontMetrics = g.getFontMetrics(); int lh = fontMetrics.getHeight(); int d = fontMetrics.getDescent(); - if (lastLine > 0) { + if (lastLine > -1) { if (error) { g.setColor(BG_ERROR_LINE); } else { - g.setColor(BG_SELECTED_LINE); + g.setColor(selColor); } g.fillRect(0, d + lh * lastLine - 1, getWidth(), lh); } diff --git a/src/com/jpexs/decompiler/flash/gui/editor/UndoFixedEditorPane.java b/src/com/jpexs/decompiler/flash/gui/editor/UndoFixedEditorPane.java index db8b3e641..b37103dbe 100644 --- a/src/com/jpexs/decompiler/flash/gui/editor/UndoFixedEditorPane.java +++ b/src/com/jpexs/decompiler/flash/gui/editor/UndoFixedEditorPane.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.gui.editor; import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.gui.View; import com.jpexs.helpers.Stopwatch; +import java.awt.Color; import java.awt.Font; import java.awt.event.KeyEvent; import java.io.IOException; @@ -37,6 +38,9 @@ import javax.swing.text.Document; import javax.swing.text.EditorKit; import javax.swing.text.JTextComponent; import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.SyntaxStyle; +import jsyntaxpane.SyntaxStyles; +import jsyntaxpane.TokenType; /** *