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 86073aa15..10fec4cbd 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java @@ -516,17 +516,15 @@ public abstract class CommonSearchDialog extends JDialog { } } - protected void loadStartCommon() { + private void loadStartCommon() { setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); progressPane.setIndeterminate(true); progressPane.setVisible(true); - resultsTable.setEnabled(false); warnLabel.setVisible(false); } private void loadFinishedCommon() { setCursor(null); - resultsTable.setEnabled(true); progressPane.setVisible(false); TextSearchIndex textIndex = cache.getTextIndex(); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java index 5f3dd600d..b6a5e0eba 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java @@ -1,7 +1,6 @@ package jadx.gui.ui; import java.awt.*; -import java.awt.event.KeyEvent; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -42,7 +41,7 @@ import jadx.gui.ui.codearea.CodeArea; import jadx.gui.ui.codearea.CodePanel; import jadx.gui.utils.*; -public class RenameDialog extends JDialog { +public class RenameDialog extends CommonSearchDialog { private static final long serialVersionUID = -3269715644416902410L; private static final Logger LOG = LoggerFactory.getLogger(RenameDialog.class); @@ -55,6 +54,8 @@ public class RenameDialog extends JDialog { private CodeArea codeArea; + private JButton renameBtn; + public RenameDialog(CodeArea codeArea, JNode node) { super(codeArea.getMainWindow()); mainWindow = codeArea.getMainWindow(); @@ -62,6 +63,7 @@ public class RenameDialog extends JDialog { this.node = node; if (isDeobfuscationSettingsValid()) { initUI(); + registerInitOnOpen(); loadWindowPos(); } else { LOG.error("Deobfuscation settings are invalid - please enable deobfuscation and disable force rewrite deobfuscation map"); @@ -95,14 +97,19 @@ public class RenameDialog extends JDialog { JOptionPane.ERROR_MESSAGE); } - private void loadWindowPos() { - mainWindow.getSettings().loadWindowPos(this); + @Override + protected void openInit() { + prepare(); } @Override - public void dispose() { - mainWindow.getSettings().saveWindowPos(this); - super.dispose(); + protected void loadStart() { + renameBtn.setEnabled(false); + } + + @Override + protected void loadFinished() { + renameBtn.setEnabled(true); } private Path getDeobfMapPath(RootNode root) { @@ -239,7 +246,7 @@ public class RenameDialog extends JDialog { RenameVisitor renameVisitor = new RenameVisitor(); renameVisitor.init(rootNode); - mainWindow.getCacheObject().getNodeCache().refresh(node); + cache.getNodeCache().refresh(node); Set updatedClasses = getUpdatedClasses(); @@ -277,7 +284,7 @@ public class RenameDialog extends JDialog { private Set getUpdatedClasses() { Set usageClasses = new HashSet<>(); - CodeUsageInfo usageInfo = mainWindow.getCacheObject().getUsageInfo(); + CodeUsageInfo usageInfo = cache.getUsageInfo(); if (usageInfo != null) { usageInfo.getUsageList(node).forEach((node) -> { JavaClass rootClass = node.getRootClass().getCls(); @@ -290,7 +297,6 @@ public class RenameDialog extends JDialog { } private void setRefreshTask(Set refreshClasses) { - CacheObject cache = mainWindow.getCacheObject(); UnloadJob unloadJob = new UnloadJob(mainWindow.getWrapper(), mainWindow.getSettings().getThreadsCount(), refreshClasses); RefreshJob refreshJob = new RefreshJob(mainWindow.getWrapper(), mainWindow.getSettings().getThreadsCount(), refreshClasses); LOG.info("Waiting for old unloadJob and refreshJob"); @@ -304,26 +310,24 @@ public class RenameDialog extends JDialog { LOG.info("Old unloadJob and refreshJob finished"); cache.setUnloadJob(unloadJob); cache.setRefreshJob(refreshJob); - cache.setIndexJob(new IndexJob(mainWindow.getWrapper(), mainWindow.getCacheObject(), mainWindow.getSettings().getThreadsCount())); + cache.setIndexJob(new IndexJob(mainWindow.getWrapper(), cache, mainWindow.getSettings().getThreadsCount())); mainWindow.runBackgroundUnloadRefreshAndIndexJobs(); } - private void initCommon() { - KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); - getRootPane().registerKeyboardAction(e -> dispose(), stroke, JComponent.WHEN_IN_FOCUSED_WINDOW); - } - @NotNull - private JPanel initButtonsPanel() { + protected JPanel initButtonsPanel() { JButton cancelButton = new JButton(NLS.str("search_dialog.cancel")); cancelButton.addActionListener(event -> dispose()); - JButton renameBtn = new JButton(NLS.str("popup.rename")); + renameBtn = new JButton(NLS.str("popup.rename")); renameBtn.addActionListener(event -> rename()); getRootPane().setDefaultButton(renameBtn); + progressPane = new ProgressPanel(mainWindow, false); + JPanel buttonPane = new JPanel(); buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.LINE_AXIS)); buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10)); + buttonPane.add(progressPane); buttonPane.add(Box.createRigidArea(new Dimension(5, 0))); buttonPane.add(Box.createHorizontalGlue()); buttonPane.add(renameBtn); @@ -349,8 +353,14 @@ public class RenameDialog extends JDialog { renamePane.add(nodeLabel); renamePane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + warnLabel = new JLabel(); + warnLabel.setForeground(Color.RED); + warnLabel.setVisible(false); + JPanel textPane = new JPanel(); - textPane.setLayout(new FlowLayout(FlowLayout.LEFT)); + textPane.setLayout(new BoxLayout(textPane, BoxLayout.PAGE_AXIS)); + textPane.add(warnLabel); + textPane.add(Box.createRigidArea(new Dimension(0, 5))); textPane.add(renameField); textPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 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 39fd2624f..50cdc1f25 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java @@ -282,11 +282,13 @@ public class SearchDialog extends CommonSearchDialog { @Override protected void loadFinished() { + resultsTable.setEnabled(true); searchField.setEnabled(true); } @Override protected void loadStart() { + resultsTable.setEnabled(false); searchField.setEnabled(false); } } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java index cbc0a6860..650d2f226 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java @@ -30,12 +30,13 @@ public class UsageDialog extends CommonSearchDialog { @Override protected void loadFinished() { + resultsTable.setEnabled(true); performSearch(); } @Override protected void loadStart() { - // no op + resultsTable.setEnabled(false); } @Override