From 5ac7b2651a5b3180e81c1dc5b24c3dc1899f96b7 Mon Sep 17 00:00:00 2001 From: GraxCode Date: Mon, 21 Mar 2022 17:28:54 +0100 Subject: [PATCH] Bug fixes and UI fixes. --- .../bytecode/InstructionPrinter.java | 6 ++--- .../bytecode/MethodNodeDecompiler.java | 6 +++-- .../gui/resourcelist/ResourceListPane.java | 4 ++-- .../gui/resourcelist/SearchKeyAdapter.java | 14 +++++------ .../gui/resourcesearch/SearchBoxPane.java | 15 ++++-------- .../searching/impl/LDCSearch.java | 8 +++---- .../impl/MemberWithAnnotationSearch.java | 6 ++--- .../searching/impl/MethodCallSearch.java | 23 ++++++++++++------- .../searching/impl/RegexSearch.java | 8 +++---- 9 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/InstructionPrinter.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/InstructionPrinter.java index 04c16c3c..a4a82c7b 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/InstructionPrinter.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/InstructionPrinter.java @@ -130,10 +130,10 @@ public class InstructionPrinter implements Opcodes { List tcbs = mNode.tryCatchBlocks; String starting = tcbs.stream().filter(tcb -> tcb.start == label).map(tcb -> "start TCB" + tcbs.indexOf(tcb)).collect(Collectors.joining(", ")); String ending = tcbs.stream().filter(tcb -> tcb.end == label).map(tcb -> "end TCB" + tcbs.indexOf(tcb)).collect(Collectors.joining(", ")); - String handlers = tcbs.stream().filter(tcb -> tcb.handler == label).map(tcb -> "handler TCB" + tcbs.indexOf(tcb)).collect(Collectors.joining(", ")); + String handlers = tcbs.stream().filter(tcb -> tcb.handler == label).map(tcb -> "handle TCB" + tcbs.indexOf(tcb)).collect(Collectors.joining(", ")); if (!ending.isEmpty()) info.add("// " + ending); if (!starting.isEmpty()) info.add("// " + starting); - if (!handlers.isEmpty()) info.add("// " + starting); + if (!handlers.isEmpty()) info.add("// " + handlers); } line = printLabelNode((LabelNode) ain); @@ -344,7 +344,7 @@ public class InstructionPrinter implements Opcodes { return "unknown"; } } - if (obj instanceof String) return "reference [" + obj + "]"; + if (obj instanceof String) return obj.toString(); return "unknown [" + obj.toString() + "]"; } diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/MethodNodeDecompiler.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/MethodNodeDecompiler.java index 92e0ec4c..b783cc1d 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/MethodNodeDecompiler.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/MethodNodeDecompiler.java @@ -144,9 +144,11 @@ public class MethodNodeDecompiler { addAttrList(m.visibleTypeAnnotations, "visTypeAnno", sb, insnPrinter); - for (TryCatchBlockNode o : m.tryCatchBlocks) { + List tryCatchBlocks = m.tryCatchBlocks; + for (int i = 0; i < tryCatchBlocks.size(); i++) { + TryCatchBlockNode o = tryCatchBlocks.get(i); sb.append(" "); - sb.append("TryCatch: L"); + sb.append("TCB").append(i).append(": L"); sb.append(insnPrinter.resolveLabel(o.start)); sb.append(" to L"); sb.append(insnPrinter.resolveLabel(o.end)); diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcelist/ResourceListPane.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcelist/ResourceListPane.java index 682ca3f7..3dfd995d 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcelist/ResourceListPane.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcelist/ResourceListPane.java @@ -117,7 +117,7 @@ public class ResourceListPane extends TranslatedVisibleComponent implements File JPanel buttonPanel = new JPanel(new BorderLayout()); quickSearchPanel.setLayout(new BorderLayout()); - quickSearchPanel.add(quickSearch, BorderLayout.NORTH); + quickSearchPanel.add(quickSearch, BorderLayout.CENTER); JPanel btns = new JPanel(new FlowLayout()); btns.add(exact); @@ -126,7 +126,7 @@ public class ResourceListPane extends TranslatedVisibleComponent implements File buttonPanel.add(open, BorderLayout.EAST); buttonPanel.add(close, BorderLayout.WEST); - exactPanel.add(buttonPanel, BorderLayout.EAST); + quickSearchPanel.add(buttonPanel, BorderLayout.EAST); quickSearchPanel.add(exactPanel, BorderLayout.SOUTH); getContentPane().add(quickSearchPanel, BorderLayout.SOUTH); diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcelist/SearchKeyAdapter.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcelist/SearchKeyAdapter.java index 4f464dee..acc0f623 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcelist/SearchKeyAdapter.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcelist/SearchKeyAdapter.java @@ -5,6 +5,7 @@ import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.util.Arrays; import java.util.Enumeration; /*************************************************************************** @@ -42,17 +43,15 @@ public class SearchKeyAdapter extends KeyAdapter { if (ke.getKeyCode() != KeyEvent.VK_ENTER) return; - final String qt = resourceListPane.quickSearch.getText(); + String qt = resourceListPane.quickSearch.getText(); if (qt.trim().isEmpty()) //NOPE return; String[] path; - if (qt.contains(".")) { - path = qt.split("\\."); - } else { - path = new String[]{qt}; - } + + path = qt.split("[\\./]+"); // split at dot or slash + qt = qt.replace('/', '.'); ResourceTreeNode curNode = resourceListPane.treeRoot; boolean caseSensitive = resourceListPane.caseSensitive.isSelected(); @@ -67,7 +66,7 @@ public class SearchKeyAdapter extends KeyAdapter { for (int c = 0; c < curNode.getChildCount(); c++) { final ResourceTreeNode child = (ResourceTreeNode) curNode.getChildAt(c); Object userObject = child.getUserObject(); - if (caseSensitive ? userObject.equals(pathName) : userObject.toString().equalsIgnoreCase(pathName)) { + if (caseSensitive ? userObject.toString().equals(pathName) : userObject.toString().equalsIgnoreCase(pathName)) { curNode = child; if (isLast) { final TreePath pathn = new TreePath(curNode.getPath()); @@ -81,7 +80,6 @@ public class SearchKeyAdapter extends KeyAdapter { continue pathLoop; } } - System.out.println("Could not find " + pathName); break; } diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcesearch/SearchBoxPane.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcesearch/SearchBoxPane.java index 54964a6c..c8df46b8 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcesearch/SearchBoxPane.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/resourcesearch/SearchBoxPane.java @@ -6,14 +6,7 @@ import java.awt.event.ItemListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Objects; -import javax.swing.DefaultComboBoxModel; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JScrollPane; -import javax.swing.JTree; +import javax.swing.*; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import the.bytecode.club.bytecodeviewer.BytecodeViewer; @@ -95,12 +88,12 @@ public class SearchBoxPane extends TranslatedVisibleComponent typeModel.addElement(st); typeBox = new JComboBox<>(typeModel); - final JPanel searchOptPanel = new JPanel(); - + final JPanel searchOptPanel = new JPanel(new BorderLayout()); + searchOptPanel.setBorder(BorderFactory.createEmptyBorder(4,4,4,4)); final ItemListener il = arg0 -> { searchOptPanel.removeAll(); searchType = (SearchType) typeBox.getSelectedItem(); - searchOptPanel.add(Objects.requireNonNull(searchType).panel.getPanel()); + searchOptPanel.add(Objects.requireNonNull(searchType).panel.getPanel(), BorderLayout.CENTER); searchOptPanel.revalidate(); searchOptPanel.repaint(); diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/LDCSearch.java b/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/LDCSearch.java index 42e7b62e..494d9450 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/LDCSearch.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/LDCSearch.java @@ -1,6 +1,6 @@ package the.bytecode.club.bytecodeviewer.searching.impl; -import java.awt.GridLayout; +import java.awt.*; import java.util.Iterator; import javax.swing.JPanel; import javax.swing.JTextField; @@ -60,9 +60,9 @@ public class LDCSearch implements SearchPanel { if (myPanel == null) { - myPanel = new JPanel(new GridLayout(1, 2)); - myPanel.add(new TranslatedJLabel("Search String: ", TranslatedComponents.SEARCH_STRING)); - myPanel.add(searchText); + myPanel = new JPanel(new BorderLayout(16, 16)); + myPanel.add(new TranslatedJLabel("Search String: ", TranslatedComponents.SEARCH_STRING), BorderLayout.WEST); + myPanel.add(searchText, BorderLayout.CENTER); } return myPanel; diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/MemberWithAnnotationSearch.java b/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/MemberWithAnnotationSearch.java index 2b1b19c7..0887afff 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/MemberWithAnnotationSearch.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/MemberWithAnnotationSearch.java @@ -51,9 +51,9 @@ public class MemberWithAnnotationSearch implements SearchPanel { @Override public JPanel getPanel() { if (myPanel == null) { - myPanel = new JPanel(new GridLayout(1, 2)); - myPanel.add(new TranslatedJLabel("Annotation name: ", TranslatedComponents.ANNOTATION_NAME)); - myPanel.add(annotation); + myPanel = new JPanel(new BorderLayout(16, 16)); + myPanel.add(new TranslatedJLabel("Annotation name: ", TranslatedComponents.ANNOTATION_NAME), BorderLayout.WEST); + myPanel.add(annotation, BorderLayout.CENTER); } return myPanel; diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/MethodCallSearch.java b/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/MethodCallSearch.java index 81286178..3a1ec508 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/MethodCallSearch.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/MethodCallSearch.java @@ -1,7 +1,8 @@ package the.bytecode.club.bytecodeviewer.searching.impl; import eu.bibl.banalysis.asm.desc.OpcodeInfo; -import java.awt.GridLayout; + +import java.awt.*; import java.util.Iterator; import javax.swing.JPanel; import javax.swing.JTextField; @@ -65,13 +66,19 @@ public class MethodCallSearch implements SearchPanel { if (myPanel == null) { - myPanel = new JPanel(new GridLayout(3, 2)); - myPanel.add(new TranslatedJLabel("Owner: ", TranslatedComponents.OWNER)); - myPanel.add(mOwner); - myPanel.add(new TranslatedJLabel("Name: ", TranslatedComponents.NAME)); - myPanel.add(mName); - myPanel.add(new TranslatedJLabel("Desc: ", TranslatedComponents.DESC)); - myPanel.add(mDesc); + myPanel = new JPanel(new BorderLayout(16, 16)); + + JPanel left = new JPanel(new GridLayout(3,1)); + JPanel right = new JPanel(new GridLayout(3,1)); + + left.add(new TranslatedJLabel("Owner: ", TranslatedComponents.OWNER)); + right.add(mOwner); + left.add(new TranslatedJLabel("Name: ", TranslatedComponents.NAME)); + right.add(mName); + left.add(new TranslatedJLabel("Desc: ", TranslatedComponents.DESC)); + right.add(mDesc); + myPanel.add(left, BorderLayout.WEST); + myPanel.add(right, BorderLayout.CENTER); } return myPanel; diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/RegexSearch.java b/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/RegexSearch.java index 389ef5d7..e732fede 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/RegexSearch.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/RegexSearch.java @@ -1,6 +1,6 @@ package the.bytecode.club.bytecodeviewer.searching.impl; -import java.awt.GridLayout; +import java.awt.*; import java.util.Iterator; import java.util.regex.Pattern; import javax.swing.JPanel; @@ -61,9 +61,9 @@ public class RegexSearch implements SearchPanel { if (myPanel == null) { - myPanel = new JPanel(new GridLayout(1, 2)); - myPanel.add(new TranslatedJLabel("Search Regex: ", TranslatedComponents.SEARCH_REGEX)); - myPanel.add(searchText); + myPanel = new JPanel(new BorderLayout(16, 16)); + myPanel.add(new TranslatedJLabel("Search Regex: ", TranslatedComponents.SEARCH_REGEX), BorderLayout.WEST); + myPanel.add(searchText, BorderLayout.CENTER); } return myPanel;