From 57b53fc267aa606ee4d1bde5512632c82cbab9c5 Mon Sep 17 00:00:00 2001 From: jeff Date: Sat, 20 Sep 2014 21:44:50 -0400 Subject: added token highlighting for things outside of the jar --- src/cuchaz/enigma/analysis/SourceIndex.java | 3 ++- src/cuchaz/enigma/gui/BoxHighlightPainter.java | 7 +++++-- src/cuchaz/enigma/gui/Gui.java | 9 +++++++-- src/cuchaz/enigma/gui/GuiController.java | 7 ++++++- src/cuchaz/enigma/gui/OtherHighlightPainter.java | 22 ++++++++++++++++++++++ 5 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 src/cuchaz/enigma/gui/OtherHighlightPainter.java (limited to 'src') diff --git a/src/cuchaz/enigma/analysis/SourceIndex.java b/src/cuchaz/enigma/analysis/SourceIndex.java index b777f9f..fb5cc65 100644 --- a/src/cuchaz/enigma/analysis/SourceIndex.java +++ b/src/cuchaz/enigma/analysis/SourceIndex.java @@ -77,7 +77,7 @@ public class SourceIndex token.end -= pos + 1; } - // HACKHACK: sometimes node regions are off by one + /* HACKHACK: sometimes node regions are off by one // I think this is a bug in Procyon, but it's easy to work around if( !Character.isJavaIdentifierStart( m_source.charAt( token.start ) ) ) { @@ -88,6 +88,7 @@ public class SourceIndex throw new IllegalArgumentException( "Region " + region + " does not describe valid token: '" + m_source.substring( token.start, token.end ) + "'" ); } } + */ return token; } diff --git a/src/cuchaz/enigma/gui/BoxHighlightPainter.java b/src/cuchaz/enigma/gui/BoxHighlightPainter.java index 30b2b02..df63f5a 100644 --- a/src/cuchaz/enigma/gui/BoxHighlightPainter.java +++ b/src/cuchaz/enigma/gui/BoxHighlightPainter.java @@ -36,8 +36,11 @@ public abstract class BoxHighlightPainter implements Highlighter.HighlightPainte Rectangle bounds = getBounds( text, start, end ); // fill the area - g.setColor( m_fillColor ); - g.fillRoundRect( bounds.x, bounds.y, bounds.width, bounds.height, 4, 4 ); + if( m_fillColor != null ) + { + g.setColor( m_fillColor ); + g.fillRoundRect( bounds.x, bounds.y, bounds.width, bounds.height, 4, 4 ); + } // draw a box around the area g.setColor( m_borderColor ); diff --git a/src/cuchaz/enigma/gui/Gui.java b/src/cuchaz/enigma/gui/Gui.java index 1995cb8..5eed728 100644 --- a/src/cuchaz/enigma/gui/Gui.java +++ b/src/cuchaz/enigma/gui/Gui.java @@ -102,6 +102,7 @@ public class Gui private JPanel m_infoPanel; private ObfuscatedHighlightPainter m_obfuscatedHighlightPainter; private DeobfuscatedHighlightPainter m_deobfuscatedHighlightPainter; + private OtherHighlightPainter m_otherHighlightPainter; private SelectionHighlightPainter m_selectionHighlightPainter; private JTree m_inheritanceTree; private JTree m_implementationsTree; @@ -205,6 +206,7 @@ public class Gui DefaultSyntaxKit.initKit(); m_obfuscatedHighlightPainter = new ObfuscatedHighlightPainter(); m_deobfuscatedHighlightPainter = new DeobfuscatedHighlightPainter(); + m_otherHighlightPainter = new OtherHighlightPainter(); m_selectionHighlightPainter = new SelectionHighlightPainter(); m_editor = new JEditorPane(); m_editor.setEditable( false ); @@ -870,12 +872,11 @@ public class Gui showToken( sortedTokens.get( 0 ) ); } - public void setHighlightedTokens( Iterable obfuscatedTokens, Iterable deobfuscatedTokens ) + public void setHighlightedTokens( Iterable obfuscatedTokens, Iterable deobfuscatedTokens, Iterable otherTokens ) { // remove any old highlighters m_editor.getHighlighter().removeAllHighlights(); - // color things based on the index if( obfuscatedTokens != null ) { @@ -885,6 +886,10 @@ public class Gui { setHighlightedTokens( deobfuscatedTokens, m_deobfuscatedHighlightPainter ); } + if( otherTokens != null ) + { + setHighlightedTokens( otherTokens, m_otherHighlightPainter ); + } redraw(); } diff --git a/src/cuchaz/enigma/gui/GuiController.java b/src/cuchaz/enigma/gui/GuiController.java index 3f54ecd..bbefe60 100644 --- a/src/cuchaz/enigma/gui/GuiController.java +++ b/src/cuchaz/enigma/gui/GuiController.java @@ -367,6 +367,7 @@ public class GuiController // set the highlighted tokens List obfuscatedTokens = Lists.newArrayList(); List deobfuscatedTokens = Lists.newArrayList(); + List otherTokens = Lists.newArrayList(); for( Token token : m_index.referenceTokens() ) { EntryReference reference = m_index.getDeobfReference( token ); @@ -378,8 +379,12 @@ public class GuiController { obfuscatedTokens.add( token ); } + else + { + otherTokens.add( token ); + } } - m_gui.setHighlightedTokens( obfuscatedTokens, deobfuscatedTokens ); + m_gui.setHighlightedTokens( obfuscatedTokens, deobfuscatedTokens, otherTokens ); } }.start(); } diff --git a/src/cuchaz/enigma/gui/OtherHighlightPainter.java b/src/cuchaz/enigma/gui/OtherHighlightPainter.java new file mode 100644 index 0000000..78de732 --- /dev/null +++ b/src/cuchaz/enigma/gui/OtherHighlightPainter.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright (c) 2014 Jeff Martin. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + * + * Contributors: + * Jeff Martin - initial API and implementation + ******************************************************************************/ +package cuchaz.enigma.gui; + +import java.awt.Color; + +public class OtherHighlightPainter extends BoxHighlightPainter +{ + public OtherHighlightPainter( ) + { + // grey + super( null, new Color( 180, 180, 180 ) ); + } +} -- cgit v1.2.3