From ab9275b53f42d1ba1b4b9c877cf94403886a2bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Sat, 20 Apr 2013 15:02:47 +0200 Subject: [PATCH] Issue #53 Displaying trait names with indices, method indices --- .../flash/abc/gui/DecompiledEditorPane.java | 18 +++++++++------- .../decompiler/flash/abc/gui/DetailPanel.java | 21 +++++++++++++++++-- .../flash/abc/gui/MethodInfoPanel.java | 9 ++++++++ 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/gui/DecompiledEditorPane.java b/trunk/src/com/jpexs/decompiler/flash/abc/gui/DecompiledEditorPane.java index ec73220f0..1f0bc2118 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/gui/DecompiledEditorPane.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/gui/DecompiledEditorPane.java @@ -45,7 +45,7 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL private ABCPanel abcPanel; public void setNoTrait() { - abcPanel.detailPanel.showCard(DetailPanel.UNSUPPORTED_TRAIT_CARD); + abcPanel.detailPanel.showCard(DetailPanel.UNSUPPORTED_TRAIT_CARD, null); } public void hilightOffset(long offset) { @@ -72,7 +72,7 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL this.classIndex = classIndex; } - private boolean displayMethod(int pos, int methodIndex, String name) { + private boolean displayMethod(int pos, int methodIndex, String name, Trait trait) { if (abc == null) { return false; } @@ -80,7 +80,7 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL if (bi == -1) { return false; } - abcPanel.detailPanel.showCard(DetailPanel.METHOD_TRAIT_CARD); + abcPanel.detailPanel.showCard(DetailPanel.METHOD_TRAIT_CARD, trait); if (reset || (abcPanel.detailPanel.methodTraitPanel.methodCodePanel.getBodyIndex() != bi)) { abcPanel.detailPanel.methodTraitPanel.methodCodePanel.setBodyIndex(bi, abc, name); abcPanel.detailPanel.methodTraitPanel.methodBodyParamsPanel.loadFromBody(abc.bodies[bi]); @@ -139,11 +139,12 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL if (abc != null) { name = abc.instance_info[classIndex].getName(abc.constants).getNameWithNamespace(abc.constants); } + Trait t = null; for (Highlighting th : traitHighlights) { if ((pos >= th.startPos) && (pos < th.startPos + th.len)) { lastTraitIndex = (int) th.offset; if (abc != null) { - Trait t = abc.findTraitByTraitId(classIndex, lastTraitIndex); + t = abc.findTraitByTraitId(classIndex, lastTraitIndex); if (t != null) { name += ":" + t.getName(abc).getName(abc.constants, new ArrayList()); } @@ -151,7 +152,7 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL } } - displayMethod(pos, (int) tm.offset, name); + displayMethod(pos, (int) tm.offset, name, t); currentMethodHighlight = tm; @@ -170,22 +171,23 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL if (tr != null) { if (tr instanceof TraitSlotConst) { abcPanel.detailPanel.slotConstTraitPanel.load((TraitSlotConst) tr, abc); - abcPanel.detailPanel.showCard(DetailPanel.SLOT_CONST_TRAIT_CARD); + abcPanel.detailPanel.showCard(DetailPanel.SLOT_CONST_TRAIT_CARD, tr); abcPanel.detailPanel.setEditMode(false); return; } } currentMethodHighlight = th; String name = ""; + Trait t = null; if (abc != null) { name = abc.instance_info[classIndex].getName(abc.constants).getNameWithNamespace(abc.constants); - Trait t = abc.findTraitByTraitId(classIndex, lastTraitIndex); + t = abc.findTraitByTraitId(classIndex, lastTraitIndex); if (t != null) { name += ":" + t.getName(abc).getName(abc.constants, new ArrayList()); } } - displayMethod(pos, abc.findMethodIdByTraitId(classIndex, (int) th.offset), name); + displayMethod(pos, abc.findMethodIdByTraitId(classIndex, (int) th.offset), name, t); return; } } diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/gui/DetailPanel.java b/trunk/src/com/jpexs/decompiler/flash/abc/gui/DetailPanel.java index 8c09cba8a..c82dbcc00 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/gui/DetailPanel.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/gui/DetailPanel.java @@ -16,13 +16,16 @@ */ package com.jpexs.decompiler.flash.abc.gui; +import com.jpexs.decompiler.flash.abc.types.traits.Trait; import com.jpexs.decompiler.flash.gui.View; +import com.jpexs.decompiler.flash.helpers.Helper; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.FlowLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; import java.util.HashMap; import javax.swing.*; import javax.swing.border.BevelBorder; @@ -49,6 +52,7 @@ public class DetailPanel extends JPanel implements ActionListener { private boolean editMode = false; private JPanel buttonsPanel; private ABCPanel abcPanel; + private JLabel traitNameLabel; public DetailPanel(ABCPanel abcPanel) { this.abcPanel = abcPanel; @@ -98,7 +102,15 @@ public class DetailPanel extends JPanel implements ActionListener { selectedLabel.setText(selectedCard); selectedLabel.setBorder(new BevelBorder(BevelBorder.RAISED)); selectedLabel.setHorizontalAlignment(SwingConstants.CENTER); - add(selectedLabel, BorderLayout.NORTH); + JPanel topPanel = new JPanel(new BorderLayout()); + topPanel.add(selectedLabel, BorderLayout.NORTH); + traitNameLabel = new JLabel(""); + JPanel traitInfoPanel = new JPanel(); + traitInfoPanel.setLayout(new BoxLayout(traitInfoPanel, BoxLayout.LINE_AXIS)); + traitInfoPanel.add(new JLabel(" Name:")); + traitInfoPanel.add(traitNameLabel); + topPanel.add(traitInfoPanel, BorderLayout.CENTER); + add(topPanel, BorderLayout.NORTH); } public void setEditMode(boolean val) { @@ -110,13 +122,18 @@ public class DetailPanel extends JPanel implements ActionListener { editMode = val; } - public void showCard(String name) { + public void showCard(String name, Trait trait) { CardLayout layout = (CardLayout) innerPanel.getLayout(); layout.show(innerPanel, name); boolean b = cardMap.get(name) instanceof TraitDetail; buttonsPanel.setVisible(b); selectedCard = name; selectedLabel.setText(selectedCard); + if (trait == null) { + traitNameLabel.setText("-"); + } else { + traitNameLabel.setText(" m[" + trait.name_index + "]\"" + Helper.escapeString(trait.getName(abcPanel.abc).toString(abcPanel.abc.constants, new ArrayList())) + "\""); + } } @Override diff --git a/trunk/src/com/jpexs/decompiler/flash/abc/gui/MethodInfoPanel.java b/trunk/src/com/jpexs/decompiler/flash/abc/gui/MethodInfoPanel.java index f31870098..afebd3f3e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/abc/gui/MethodInfoPanel.java +++ b/trunk/src/com/jpexs/decompiler/flash/abc/gui/MethodInfoPanel.java @@ -38,11 +38,18 @@ public class MethodInfoPanel extends JPanel { public JEditorPane returnTypeEditor; private MethodInfo methodInfo; private ABC abc; + private JLabel methodIndexLabel; public MethodInfoPanel() { returnTypeEditor = new JEditorPane(); paramEditor = new LineMarkedEditorPane(); setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); + JPanel miPanel = new JPanel(); + miPanel.setLayout(new BoxLayout(miPanel, BoxLayout.LINE_AXIS)); + miPanel.add(new JLabel("Method Index:")); + methodIndexLabel = new JLabel(" "); + miPanel.add(methodIndexLabel); + add(miPanel); add(new JLabel("Parameters:")); add(new JScrollPane(paramEditor)); add(new JLabel("Return value type:")); @@ -63,6 +70,8 @@ public class MethodInfoPanel extends JPanel { if (methodInfoIndex <= 0) { paramEditor.setText(""); } + + methodIndexLabel.setText("" + methodInfoIndex); this.methodInfo = abc.method_info[methodInfoIndex]; int p = 0; String ret = "";