From 6d963b378c74b08daca8df91ea113fd1a1a96239 Mon Sep 17 00:00:00 2001 From: Skylot Date: Wed, 23 Sep 2015 21:57:32 +0300 Subject: [PATCH] gui: fix results render issues is search dialog --- .../java/jadx/gui/ui/CommonSearchDialog.java | 16 ++++++++++++++-- .../src/main/java/jadx/gui/ui/SearchDialog.java | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java index 7a8e40244..2d540ec90 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java @@ -157,7 +157,8 @@ public abstract class CommonSearchDialog extends JDialog { } protected JPanel initResultsTable() { - resultsModel = new ResultsModel(); + ResultsTableCellRenderer renderer = new ResultsTableCellRenderer(); + resultsModel = new ResultsModel(renderer); resultsTable = new ResultsTable(resultsModel); resultsTable.setShowHorizontalLines(false); resultsTable.setDragEnabled(false); @@ -167,7 +168,6 @@ public abstract class CommonSearchDialog extends JDialog { resultsTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); resultsTable.setAutoscrolls(false); - ResultsTableCellRenderer renderer = new ResultsTableCellRenderer(); Enumeration columns = resultsTable.getColumnModel().getColumns(); while (columns.hasMoreElements()) { TableColumn column = columns.nextElement(); @@ -257,8 +257,13 @@ public abstract class CommonSearchDialog extends JDialog { private static final String[] COLUMN_NAMES = {"Node", "Code"}; private final List rows = new ArrayList(); + private final ResultsTableCellRenderer renderer; private boolean addDescColumn; + public ResultsModel(ResultsTableCellRenderer renderer) { + this.renderer = renderer; + } + protected void addAll(Iterable nodes) { for (JNode node : nodes) { int size = getRowCount(); @@ -282,6 +287,7 @@ public abstract class CommonSearchDialog extends JDialog { public void clear() { addDescColumn = false; rows.clear(); + renderer.clear(); } public boolean isAddDescColumn() { @@ -312,11 +318,13 @@ public abstract class CommonSearchDialog extends JDialog { protected class ResultsTableCellRenderer implements TableCellRenderer { private final Color selectedBackground; private final Color selectedForeground; + private final Color foreground; private Map componentCache = new HashMap(); public ResultsTableCellRenderer() { UIDefaults defaults = UIManager.getDefaults(); + foreground = defaults.getColor("List.foreground"); selectedBackground = defaults.getColor("List.selectionBackground"); selectedForeground = defaults.getColor("List.selectionForeground"); } @@ -342,6 +350,7 @@ public abstract class CommonSearchDialog extends JDialog { comp.setForeground(selectedForeground); } else { comp.setBackground(ContentArea.BACKGROUND); + comp.setForeground(foreground); } } @@ -372,6 +381,9 @@ public abstract class CommonSearchDialog extends JDialog { return null; } + public void clear() { + componentCache.clear(); + } } private class LoadTask extends SwingWorker { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java index 00ddba472..1f25e9f58 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java @@ -81,11 +81,13 @@ public class SearchDialog extends CommonSearchDialog { resultsModel.clear(); String text = searchField.getText(); if (text == null || text.isEmpty() || options.isEmpty()) { + resultsTable.updateTable(); return; } cache.setLastSearch(text); TextSearchIndex index = cache.getTextIndex(); if (index == null) { + resultsTable.updateTable(); return; } if (options.contains(SearchOptions.CLASS)) {