Class BytecodeDecompilerView
- java.lang.Object
-
- org.jrd.frontend.frame.main.decompilerview.BytecodeDecompilerView
-
public class BytecodeDecompilerView extends java.lang.Object
Class that creates GUI for attached VM.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
BytecodeDecompilerView.InitAddClassJar
private class
BytecodeDecompilerView.OverwriteActionListener
-
Field Summary
Fields Modifier and Type Field Description private java.awt.event.ActionListener
addActionListener
private HexWithControls
additionalBinary
private TextWithControls
additionalBytecodeBuffer
private TextWithControls
additionalSrcBuffer
private java.awt.event.ActionListener
addJar
private static java.lang.String
ATTACH_BUTTON_TEXT
private HexWithControls
binary
private javax.swing.JTabbedPane
buffers
private javax.swing.JPanel
buffersPanel
private javax.swing.JPanel
buffersToolBar
private TextWithControls
bytecodeBuffer
private javax.swing.JButton
bytecodeButton
private javax.swing.JPanel
bytecodeDecompilerPanel
private java.awt.event.ActionListener
bytesActionListener
private static java.util.Set<java.lang.Integer>
CLASS_LIST_REGISTERED_KEY_CODES
private javax.swing.JTextField
classCount
private javax.swing.JPanel
classes
private java.awt.event.ActionListener
classesActionListener
private javax.swing.JPanel
classesPanel
private javax.swing.JScrollPane
classesScrollPane
private javax.swing.JTextField
classesSortField
private java.awt.Color
classesSortFieldColor
private javax.swing.JPanel
classesToolBar
private QuickCompiler
compileAction
private javax.swing.JButton
compileAndUploadButton
private javax.swing.JButton
compileButton
private ClassesAndMethodsProvider
completionHelper
private DependenciesReader
dependenciesReader
private static java.lang.String
DETACH_BUTTON_TEXT
private javax.swing.JButton
detachButton
private javax.swing.JFrame
detachedBytecodeFrame
private javax.swing.JButton
diffButton
private javax.swing.JList<ClassInfo>
filteredClassesJList
private ClassListRenderer
filteredClassesRenderer
private java.awt.event.ActionListener
initActionListener
private javax.swing.JButton
initClassButton
private javax.swing.JButton
insertButton
private java.io.File
lastAddedFile
private java.lang.String
lastAddedFqn
private java.lang.String
lastDecompiledClass
private java.lang.String
lastFqn
private java.lang.String
lastSearch
private ClassInfo[]
loadedClasses
private javax.swing.JFrame
mainFrame
private javax.swing.JCheckBox
metadata
private BytecodeDecompilerView.OverwriteActionListener
overwriteActionListener
private javax.swing.JButton
overwriteButton
private static java.awt.Insets
PANEL_INSETS
private javax.swing.JComboBox<DecompilerWrapper>
pluginComboBox
private javax.swing.JButton
redoButton
private javax.swing.JButton
reloadClassesButton
private java.awt.event.ActionListener
searchClassesActionListener
private javax.swing.JButton
searchInClassesButton
private boolean
shouldAttach
private javax.swing.JCheckBox
showInfoCheckBox
private javax.swing.JSplitPane
splitPane
private boolean
splitPaneFirstResize
private javax.swing.JButton
undoButton
-
Constructor Summary
Constructors Constructor Description BytecodeDecompilerView(javax.swing.JFrame mainFrameReference)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addClassesGui(boolean boot, java.lang.String[] fqnFilePairs)
private void
addClassGui(java.lang.String fqn, java.lang.String file)
private void
addJar(boolean boot, java.lang.String file, java.lang.String name)
static java.awt.Dimension
buttonSizeBasedOnTextField(javax.swing.JButton originalButton, javax.swing.JTextField referenceTextField)
private void
bytesWorker(java.lang.String name)
private void
classWorker()
boolean
doSearchInClassInfo()
boolean
doShowClassInfo()
javax.swing.JPanel
getBytecodeDecompilerPanel()
Constructor creates the graphics and adds the action listeners.ClassesAndMethodsProvider
getCompletionHelper()
DependenciesReader
getDependenciesReader()
DecompilerWrapper
getSelectedDecompiler()
private void
handleBuffersDetaching()
private void
handleClassInfoSwitching(boolean reload)
private void
initGui(java.lang.String fqn)
private boolean
isAdditionalBinaryBufferVisible()
private boolean
isAdditionalDecompiledBytecodeBufferVisible()
private boolean
isAdditionalSrcBufferVisible()
private boolean
isBinaryBufferVisible()
private boolean
isDecompiledBytecodeBufferVisible()
private boolean
matchesAny(java.util.List<ClassInfo> filtered, java.util.regex.Pattern p, ClassInfo clazz)
void
refreshComboBox(java.util.List<DecompilerWrapper> wrappers)
void
reloadClassList(ClassInfo[] classesToReload)
Sets the unfiltered class list array and invokes an update.void
reloadTextField(java.lang.String name, java.lang.String decompiledClass, byte[] source, java.lang.String additionalDecompiledClass, byte[] additionalSource, java.lang.String additionalSrcClass)
Sets the decompiled code into JTextAreavoid
setAddActionListener(java.awt.event.ActionListener listener)
void
setBytesActionListener(java.awt.event.ActionListener listener)
void
setClassesActionListener(java.awt.event.ActionListener listener)
void
setCompileListener(QuickCompiler listener)
void
setCompletionHelper(DecompilationController dec)
private void
setDecompiledClass(java.lang.String name, java.lang.String data, byte[] source, java.lang.String additionalData, byte[] additionalSource, java.lang.String additionalSrcData)
void
setDepsProvider(DependenciesReader depsReader)
void
setInitActionListener(java.awt.event.ActionListener listener)
void
setJarActionListener(java.awt.event.ActionListener listener)
void
setOverwriteActionListener(DecompilationController.ClassOverwriter worker)
void
setPopup(DecompilationController.AgentApiGenerator ap)
void
setSearchInActionListener(java.awt.event.ActionListener o)
static java.lang.String
styleTooltip()
private void
updateClassList()
-
-
-
Field Detail
-
bytecodeDecompilerPanel
private javax.swing.JPanel bytecodeDecompilerPanel
-
splitPane
private javax.swing.JSplitPane splitPane
-
classes
private javax.swing.JPanel classes
-
classesToolBar
private javax.swing.JPanel classesToolBar
-
reloadClassesButton
private javax.swing.JButton reloadClassesButton
-
searchInClassesButton
private javax.swing.JButton searchInClassesButton
-
showInfoCheckBox
private javax.swing.JCheckBox showInfoCheckBox
-
classCount
private javax.swing.JTextField classCount
-
classesSortField
private javax.swing.JTextField classesSortField
-
metadata
private javax.swing.JCheckBox metadata
-
classesSortFieldColor
private final java.awt.Color classesSortFieldColor
-
classesPanel
private javax.swing.JPanel classesPanel
-
classesScrollPane
private javax.swing.JScrollPane classesScrollPane
-
filteredClassesJList
private javax.swing.JList<ClassInfo> filteredClassesJList
-
filteredClassesRenderer
private ClassListRenderer filteredClassesRenderer
-
buffersPanel
private javax.swing.JPanel buffersPanel
-
buffersToolBar
private javax.swing.JPanel buffersToolBar
-
diffButton
private javax.swing.JButton diffButton
-
undoButton
private javax.swing.JButton undoButton
-
redoButton
private javax.swing.JButton redoButton
-
insertButton
private javax.swing.JButton insertButton
-
bytecodeButton
private javax.swing.JButton bytecodeButton
-
detachButton
private javax.swing.JButton detachButton
-
initClassButton
private javax.swing.JButton initClassButton
-
overwriteButton
private javax.swing.JButton overwriteButton
-
compileButton
private javax.swing.JButton compileButton
-
compileAndUploadButton
private javax.swing.JButton compileAndUploadButton
-
pluginComboBox
private javax.swing.JComboBox<DecompilerWrapper> pluginComboBox
-
buffers
private final javax.swing.JTabbedPane buffers
-
bytecodeBuffer
private TextWithControls bytecodeBuffer
-
binary
private HexWithControls binary
-
additionalSrcBuffer
private TextWithControls additionalSrcBuffer
-
additionalBytecodeBuffer
private TextWithControls additionalBytecodeBuffer
-
additionalBinary
private HexWithControls additionalBinary
-
bytesActionListener
private java.awt.event.ActionListener bytesActionListener
-
classesActionListener
private java.awt.event.ActionListener classesActionListener
-
searchClassesActionListener
private java.awt.event.ActionListener searchClassesActionListener
-
initActionListener
private java.awt.event.ActionListener initActionListener
-
addActionListener
private java.awt.event.ActionListener addActionListener
-
addJar
private java.awt.event.ActionListener addJar
-
compileAction
private QuickCompiler compileAction
-
completionHelper
private ClassesAndMethodsProvider completionHelper
-
overwriteActionListener
private BytecodeDecompilerView.OverwriteActionListener overwriteActionListener
-
dependenciesReader
private DependenciesReader dependenciesReader
-
loadedClasses
private ClassInfo[] loadedClasses
-
lastDecompiledClass
private java.lang.String lastDecompiledClass
-
lastFqn
private java.lang.String lastFqn
-
lastAddedFqn
private java.lang.String lastAddedFqn
-
lastAddedFile
private java.io.File lastAddedFile
-
lastSearch
private java.lang.String lastSearch
-
splitPaneFirstResize
private boolean splitPaneFirstResize
-
shouldAttach
private boolean shouldAttach
-
mainFrame
private final javax.swing.JFrame mainFrame
-
detachedBytecodeFrame
private javax.swing.JFrame detachedBytecodeFrame
-
CLASS_LIST_REGISTERED_KEY_CODES
private static final java.util.Set<java.lang.Integer> CLASS_LIST_REGISTERED_KEY_CODES
-
PANEL_INSETS
private static final java.awt.Insets PANEL_INSETS
-
DETACH_BUTTON_TEXT
private static final java.lang.String DETACH_BUTTON_TEXT
- See Also:
- Constant Field Values
-
ATTACH_BUTTON_TEXT
private static final java.lang.String ATTACH_BUTTON_TEXT
- See Also:
- Constant Field Values
-
-
Method Detail
-
getBytecodeDecompilerPanel
public javax.swing.JPanel getBytecodeDecompilerPanel()
Constructor creates the graphics and adds the action listeners.- Returns:
- BytecodeDecompilerPanel
-
handleClassInfoSwitching
private void handleClassInfoSwitching(boolean reload)
-
getDependenciesReader
public DependenciesReader getDependenciesReader()
-
setDepsProvider
public void setDepsProvider(DependenciesReader depsReader)
-
isDecompiledBytecodeBufferVisible
private boolean isDecompiledBytecodeBufferVisible()
-
isBinaryBufferVisible
private boolean isBinaryBufferVisible()
-
isAdditionalBinaryBufferVisible
private boolean isAdditionalBinaryBufferVisible()
-
isAdditionalDecompiledBytecodeBufferVisible
private boolean isAdditionalDecompiledBytecodeBufferVisible()
-
isAdditionalSrcBufferVisible
private boolean isAdditionalSrcBufferVisible()
-
handleBuffersDetaching
private void handleBuffersDetaching()
-
styleTooltip
public static java.lang.String styleTooltip()
-
updateClassList
private void updateClassList()
-
matchesAny
private boolean matchesAny(java.util.List<ClassInfo> filtered, java.util.regex.Pattern p, ClassInfo clazz)
-
reloadClassList
public void reloadClassList(ClassInfo[] classesToReload)
Sets the unfiltered class list array and invokes an update.- Parameters:
classesToReload
- String[] classesToReload.
-
reloadTextField
public void reloadTextField(java.lang.String name, java.lang.String decompiledClass, byte[] source, java.lang.String additionalDecompiledClass, byte[] additionalSource, java.lang.String additionalSrcClass)
Sets the decompiled code into JTextArea- Parameters:
decompiledClass
- String of source code of decompiler class
-
setDecompiledClass
private void setDecompiledClass(java.lang.String name, java.lang.String data, byte[] source, java.lang.String additionalData, byte[] additionalSource, java.lang.String additionalSrcData)
-
setSearchInActionListener
public void setSearchInActionListener(java.awt.event.ActionListener o)
-
setClassesActionListener
public void setClassesActionListener(java.awt.event.ActionListener listener)
-
setInitActionListener
public void setInitActionListener(java.awt.event.ActionListener listener)
-
setAddActionListener
public void setAddActionListener(java.awt.event.ActionListener listener)
-
setJarActionListener
public void setJarActionListener(java.awt.event.ActionListener listener)
-
setCompileListener
public void setCompileListener(QuickCompiler listener)
-
setCompletionHelper
public void setCompletionHelper(DecompilationController dec)
-
getCompletionHelper
public ClassesAndMethodsProvider getCompletionHelper()
-
setBytesActionListener
public void setBytesActionListener(java.awt.event.ActionListener listener)
-
setPopup
public void setPopup(DecompilationController.AgentApiGenerator ap)
-
setOverwriteActionListener
public void setOverwriteActionListener(DecompilationController.ClassOverwriter worker)
-
refreshComboBox
public void refreshComboBox(java.util.List<DecompilerWrapper> wrappers)
-
getSelectedDecompiler
public DecompilerWrapper getSelectedDecompiler()
-
buttonSizeBasedOnTextField
public static java.awt.Dimension buttonSizeBasedOnTextField(javax.swing.JButton originalButton, javax.swing.JTextField referenceTextField)
-
classWorker
private void classWorker()
-
bytesWorker
private void bytesWorker(java.lang.String name)
-
doShowClassInfo
public boolean doShowClassInfo()
-
doSearchInClassInfo
public boolean doSearchInClassInfo()
-
addJar
private void addJar(boolean boot, java.lang.String file, java.lang.String name)
-
addClassGui
private void addClassGui(java.lang.String fqn, java.lang.String file)
-
initGui
private void initGui(java.lang.String fqn)
-
addClassesGui
private void addClassesGui(boolean boot, java.lang.String[] fqnFilePairs) throws java.io.IOException
- Throws:
java.io.IOException
-
-