mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-07-12 15:08:37 +00:00
Added Deobfuscation and its options as icons on script panel toolbar
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [Unreleased]
|
||||
### Added
|
||||
- Deobfuscation and its options as icons on script panel toolbar
|
||||
|
||||
## [18.0.0] - 2022-12-18
|
||||
### Added
|
||||
|
||||
@@ -863,6 +863,10 @@ public final class Configuration {
|
||||
@ConfigurationCategory("ui")
|
||||
public static ConfigurationItem<Boolean> doubleClickNodeToEdit = null;
|
||||
|
||||
@ConfigurationDefaultBoolean(true)
|
||||
@ConfigurationCategory("script")
|
||||
public static ConfigurationItem<Boolean> warningDeobfuscation = null;
|
||||
|
||||
private enum OSId {
|
||||
WINDOWS, OSX, UNIX
|
||||
}
|
||||
|
||||
@@ -881,7 +881,7 @@ public abstract class MainFrameMenu implements MenuBuilder {
|
||||
AbstractButton button = (AbstractButton) evt.getSource();
|
||||
boolean selected = button.isSelected();
|
||||
|
||||
if (ViewMessages.showConfirmDialog(Main.getDefaultMessagesComponent(), translate("message.confirm.autodeobfuscate") + "\r\n" + (selected ? translate("message.confirm.on") : translate("message.confirm.off")), translate("message.confirm"), JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION) {
|
||||
if (ViewMessages.showConfirmDialog(Main.getDefaultMessagesComponent(), translate("message.confirm.autodeobfuscate") + "\r\n" + (selected ? translate("message.confirm.on") : translate("message.confirm.off")), translate("message.confirm"), JOptionPane.OK_CANCEL_OPTION, Configuration.warningDeobfuscation, JOptionPane.OK_OPTION) == JOptionPane.OK_OPTION) {
|
||||
Configuration.autoDeobfuscate.set(selected);
|
||||
mainFrame.getPanel().autoDeobfuscateChanged();
|
||||
} else {
|
||||
|
||||
@@ -1587,6 +1587,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
|
||||
}
|
||||
|
||||
public void updateClassesList() {
|
||||
String selectionPath = getCurrentTree().getSelectionPathString();
|
||||
List<TreeItem> nodes = getASTreeNodes(tagTree);
|
||||
boolean updateNeeded = false;
|
||||
for (TreeItem n : nodes) {
|
||||
@@ -1601,6 +1602,11 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
|
||||
if (updateNeeded) {
|
||||
tagTree.updateUI();
|
||||
}
|
||||
TreePath tp = getCurrentTree().getTreePathFromString(selectionPath);
|
||||
if (tp != null)
|
||||
{
|
||||
getCurrentTree().setSelectionPath(tp);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isFilterEmpty(String filter) {
|
||||
|
||||
@@ -96,6 +96,7 @@ import de.hameister.treetable.MyTreeTableModel;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.Insets;
|
||||
import java.awt.event.ActionEvent;
|
||||
@@ -121,10 +122,13 @@ import javax.swing.AbstractAction;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBoxMenuItem;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JPopupMenu;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JSplitPane;
|
||||
import javax.swing.JTabbedPane;
|
||||
@@ -957,7 +961,23 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
|
||||
removeTraitButton.addActionListener(this::removeTraitButtonActionPerformed);
|
||||
removeTraitButton.setToolTipText(AppStrings.translate("button.removetrait"));
|
||||
iconsPanel.add(removeTraitButton);
|
||||
|
||||
|
||||
JToggleButton deobfuscateButton = new JToggleButton(View.getIcon("deobfuscate16"));
|
||||
deobfuscateButton.setMargin(new Insets(5, 5, 5, 5));
|
||||
deobfuscateButton.addActionListener(this::deobfuscateButtonActionPerformed);
|
||||
deobfuscateButton.setToolTipText(AppStrings.translate("button.deobfuscate"));
|
||||
deobfuscateButton.setSelected(Configuration.autoDeobfuscate.get());
|
||||
|
||||
|
||||
JButton deobfuscateOptionsButton = new JButton(View.getIcon("deobfuscateoptions16"));
|
||||
deobfuscateOptionsButton.addActionListener(this::deobfuscateOptionsButtonActionPerformed);
|
||||
deobfuscateOptionsButton.setToolTipText(AppStrings.translate("button.deobfuscate_options"));
|
||||
deobfuscateOptionsButton.setMargin(new Insets(0,0,0,0));
|
||||
deobfuscateOptionsButton.setPreferredSize(new Dimension(30, deobfuscateButton.getPreferredSize().height));
|
||||
|
||||
iconsPanel.add(deobfuscateButton);
|
||||
iconsPanel.add(deobfuscateOptionsButton);
|
||||
|
||||
scriptNameLabel = new JLabel("-");
|
||||
|
||||
JPanel topPanel = new JPanel(new BorderLayout());
|
||||
@@ -1651,6 +1671,47 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<Scr
|
||||
}
|
||||
}
|
||||
|
||||
private void deobfuscateButtonActionPerformed(ActionEvent evt) {
|
||||
JToggleButton toggleButton = (JToggleButton)evt.getSource();
|
||||
boolean selected = toggleButton.isSelected();
|
||||
|
||||
if (ViewMessages.showConfirmDialog(Main.getDefaultMessagesComponent(), AppStrings.translate("message.confirm.autodeobfuscate") + "\r\n" + (selected ? AppStrings.translate("message.confirm.on") : AppStrings.translate("message.confirm.off")), AppStrings.translate("message.confirm"), JOptionPane.OK_CANCEL_OPTION, Configuration.warningDeobfuscation, JOptionPane.OK_OPTION) == JOptionPane.OK_OPTION) {
|
||||
Configuration.autoDeobfuscate.set(selected);
|
||||
mainPanel.autoDeobfuscateChanged();
|
||||
} else {
|
||||
toggleButton.setSelected(Configuration.autoDeobfuscate.get());
|
||||
}
|
||||
}
|
||||
|
||||
private void deobfuscateOptionsButtonActionPerformed(ActionEvent evt) {
|
||||
JPopupMenu popupMenu = new JPopupMenu();
|
||||
JCheckBoxMenuItem simplifyExpressionsMenuItem = new JCheckBoxMenuItem(AppStrings.translate("deobfuscate_options.simplify_expressions"));
|
||||
simplifyExpressionsMenuItem.setSelected(Configuration.simplifyExpressions.get());
|
||||
simplifyExpressionsMenuItem.addActionListener(this::simplifyExpressionsMenuItemActionPerformed);
|
||||
/*JCheckBoxMenuItem removeObfuscatedDeclarationsMenuItem = new JCheckBoxMenuItem(AppStrings.translate("deobfuscate_options.remove_obfuscated_declarations"));
|
||||
removeObfuscatedDeclarationsMenuItem.setSelected(Configuration.deobfuscateAs12RemoveInvalidNamesAssignments.get());
|
||||
removeObfuscatedDeclarationsMenuItem.addActionListener(this::removeObfuscatedDeclarationsMenuItemActionPerformed);
|
||||
*/
|
||||
popupMenu.add(simplifyExpressionsMenuItem);
|
||||
//popupMenu.add(removeObfuscatedDeclarationsMenuItem);
|
||||
|
||||
JButton sourceButton = (JButton) evt.getSource();
|
||||
popupMenu.show(sourceButton, 0, sourceButton.getHeight());
|
||||
}
|
||||
|
||||
private void simplifyExpressionsMenuItemActionPerformed(ActionEvent evt) {
|
||||
JCheckBoxMenuItem menuItem = (JCheckBoxMenuItem) evt.getSource();
|
||||
Configuration.simplifyExpressions.set(menuItem.isSelected());
|
||||
mainPanel.autoDeobfuscateChanged();
|
||||
}
|
||||
|
||||
/*private void removeObfuscatedDeclarationsMenuItemActionPerformed(ActionEvent evt) {
|
||||
JCheckBoxMenuItem menuItem = (JCheckBoxMenuItem) evt.getSource();
|
||||
Configuration.deobfuscateAs12RemoveInvalidNamesAssignments.set(menuItem.isSelected());
|
||||
mainPanel.autoDeobfuscateChanged();
|
||||
}*/
|
||||
|
||||
|
||||
private void removeTraitButtonActionPerformed(ActionEvent evt) {
|
||||
int classIndex = decompiledTextArea.getClassIndex();
|
||||
//int scriptIndex = decompiledTextArea.getScriptLeaf().scriptIndex;
|
||||
|
||||
@@ -85,9 +85,11 @@ import javax.swing.BorderFactory;
|
||||
import javax.swing.Box;
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBoxMenuItem;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JPopupMenu;
|
||||
import javax.swing.JSplitPane;
|
||||
import javax.swing.JToggleButton;
|
||||
import javax.swing.SwingConstants;
|
||||
@@ -802,8 +804,32 @@ public class ActionPanel extends JPanel implements SearchListener<ScriptSearchRe
|
||||
panelWithHint.add(new FasterScrollPane(decompiledEditor), BorderLayout.CENTER);
|
||||
|
||||
brokenHintPanel.setVisible(false);
|
||||
|
||||
JPanel iconsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
|
||||
JToggleButton deobfuscateButton = new JToggleButton(View.getIcon("deobfuscate16"));
|
||||
deobfuscateButton.setMargin(new Insets(5, 5, 5, 5));
|
||||
deobfuscateButton.addActionListener(this::deobfuscateButtonActionPerformed);
|
||||
deobfuscateButton.setToolTipText(AppStrings.translate("button.deobfuscate"));
|
||||
deobfuscateButton.setSelected(Configuration.autoDeobfuscate.get());
|
||||
|
||||
|
||||
JButton deobfuscateOptionsButton = new JButton(View.getIcon("deobfuscateoptions16"));
|
||||
deobfuscateOptionsButton.addActionListener(this::deobfuscateOptionsButtonActionPerformed);
|
||||
deobfuscateOptionsButton.setToolTipText(AppStrings.translate("button.deobfuscate_options"));
|
||||
deobfuscateOptionsButton.setMargin(new Insets(0,0,0,0));
|
||||
deobfuscateOptionsButton.setPreferredSize(new Dimension(30, deobfuscateButton.getPreferredSize().height));
|
||||
iconsPanel.add(deobfuscateButton);
|
||||
iconsPanel.add(deobfuscateOptionsButton);
|
||||
|
||||
iconsPanel.add(deobfuscateButton);
|
||||
iconsPanel.add(deobfuscateOptionsButton);
|
||||
|
||||
JPanel panelWithToolbar = new JPanel(new BorderLayout());
|
||||
panelWithToolbar.add(iconsPanel, BorderLayout.NORTH);
|
||||
panelWithToolbar.add(panelWithHint, BorderLayout.CENTER);
|
||||
|
||||
|
||||
panA.add(new JPersistentSplitPane(JSplitPane.VERTICAL_SPLIT, panelWithHint, debugPanel, Configuration.guiActionVarsSplitPaneDividerLocationPercent), BorderLayout.CENTER);
|
||||
panA.add(new JPersistentSplitPane(JSplitPane.VERTICAL_SPLIT, panelWithToolbar, debugPanel, Configuration.guiActionVarsSplitPaneDividerLocationPercent), BorderLayout.CENTER);
|
||||
panA.add(decButtonsPan, BorderLayout.SOUTH);
|
||||
|
||||
//decPanel.add(searchPanel, BorderLayout.NORTH);
|
||||
@@ -898,7 +924,47 @@ public class ActionPanel extends JPanel implements SearchListener<ScriptSearchRe
|
||||
editor.addTextChangedListener(this::editorTextChanged);
|
||||
decompiledEditor.addTextChangedListener(this::decompiledEditorTextChanged);
|
||||
}
|
||||
|
||||
private void deobfuscateButtonActionPerformed(ActionEvent evt) {
|
||||
JToggleButton toggleButton = (JToggleButton)evt.getSource();
|
||||
boolean selected = toggleButton.isSelected();
|
||||
|
||||
if (ViewMessages.showConfirmDialog(Main.getDefaultMessagesComponent(), AppStrings.translate("message.confirm.autodeobfuscate") + "\r\n" + (selected ? AppStrings.translate("message.confirm.on") : AppStrings.translate("message.confirm.off")), AppStrings.translate("message.confirm"), JOptionPane.OK_CANCEL_OPTION, Configuration.warningDeobfuscation, JOptionPane.OK_OPTION) == JOptionPane.OK_OPTION) {
|
||||
Configuration.autoDeobfuscate.set(selected);
|
||||
mainPanel.autoDeobfuscateChanged();
|
||||
} else {
|
||||
toggleButton.setSelected(Configuration.autoDeobfuscate.get());
|
||||
}
|
||||
}
|
||||
|
||||
private void deobfuscateOptionsButtonActionPerformed(ActionEvent evt) {
|
||||
JPopupMenu popupMenu = new JPopupMenu();
|
||||
JCheckBoxMenuItem simplifyExpressionsMenuItem = new JCheckBoxMenuItem(AppStrings.translate("deobfuscate_options.simplify_expressions"));
|
||||
simplifyExpressionsMenuItem.setSelected(Configuration.simplifyExpressions.get());
|
||||
simplifyExpressionsMenuItem.addActionListener(this::simplifyExpressionsMenuItemActionPerformed);
|
||||
JCheckBoxMenuItem removeObfuscatedDeclarationsMenuItem = new JCheckBoxMenuItem(AppStrings.translate("deobfuscate_options.remove_obfuscated_declarations"));
|
||||
removeObfuscatedDeclarationsMenuItem.setSelected(Configuration.deobfuscateAs12RemoveInvalidNamesAssignments.get());
|
||||
removeObfuscatedDeclarationsMenuItem.addActionListener(this::removeObfuscatedDeclarationsMenuItemActionPerformed);
|
||||
|
||||
popupMenu.add(simplifyExpressionsMenuItem);
|
||||
popupMenu.add(removeObfuscatedDeclarationsMenuItem);
|
||||
|
||||
JButton sourceButton = (JButton) evt.getSource();
|
||||
popupMenu.show(sourceButton, 0, sourceButton.getHeight());
|
||||
}
|
||||
|
||||
private void simplifyExpressionsMenuItemActionPerformed(ActionEvent evt) {
|
||||
JCheckBoxMenuItem menuItem = (JCheckBoxMenuItem) evt.getSource();
|
||||
Configuration.simplifyExpressions.set(menuItem.isSelected());
|
||||
mainPanel.autoDeobfuscateChanged();
|
||||
}
|
||||
|
||||
private void removeObfuscatedDeclarationsMenuItemActionPerformed(ActionEvent evt) {
|
||||
JCheckBoxMenuItem menuItem = (JCheckBoxMenuItem) evt.getSource();
|
||||
Configuration.deobfuscateAs12RemoveInvalidNamesAssignments.set(menuItem.isSelected());
|
||||
mainPanel.autoDeobfuscateChanged();
|
||||
}
|
||||
|
||||
private void editorTextChanged() {
|
||||
setModified(true);
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.5 KiB |
@@ -652,4 +652,7 @@ config.name.gui.transform.lastExpandedCards = (Internal) Last expanded transform
|
||||
config.description.gui.transform.lastExpandedCards =
|
||||
|
||||
config.name.doubleClickNodeToEdit = Double click to start editing
|
||||
config.description.doubleClickNodeToEdit = Double clicking tree node starts its editation.
|
||||
config.description.doubleClickNodeToEdit = Double clicking tree node starts its editation.
|
||||
|
||||
config.name.warningDeobfuscation = Warn on switching deobfuscation
|
||||
config.description.warningDeobfuscation = Show warning on switching deobfuscation on/off
|
||||
@@ -642,4 +642,7 @@ config.name.gui.transform.lastExpandedCards = (Intern\u00ed) Posledn\u00ed rozba
|
||||
config.description.gui.transform.lastExpandedCards =
|
||||
|
||||
config.name.doubleClickNodeToEdit = Dvojit\u00fd klik za\u010dne editaci
|
||||
config.description.doubleClickNodeToEdit = Dvojit\u00e9 kliknut\u00ed na polo\u017eku ve stromu za\u010dne jej\u00ed editaci.
|
||||
config.description.doubleClickNodeToEdit = Dvojit\u00e9 kliknut\u00ed na polo\u017eku ve stromu za\u010dne jej\u00ed editaci.
|
||||
|
||||
config.name.warningDeobfuscation = Varovat p\u0159i p\u0159ep\u00edn\u00e1n\u00ed deobfuskace
|
||||
config.description.warningDeobfuscation = Zobrazovst varov\u00e1n\u00ed b\u011bhem zap\u00edn\u00e1n\u00ed/vyp\u00edn\u00e1n\u00ed deobfuskace.
|
||||
@@ -1045,3 +1045,10 @@ transform.apply = Apply
|
||||
transform.clear = Clear
|
||||
|
||||
status.editing = You are in the EDIT mode. Make changes, then press Save button. Or discard changes with Cancel button. You cannot switch to other item during editation.
|
||||
|
||||
#after 18.0.0
|
||||
button.deobfuscate = Deobfuscate
|
||||
button.deobfuscate_options = Deobfuscation options
|
||||
|
||||
deobfuscate_options.simplify_expressions = Simplify expressions
|
||||
deobfuscate_options.remove_obfuscated_declarations = Remove single assigned obfuscated declarations
|
||||
Reference in New Issue
Block a user