mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-19 16:40:38 -09:00
GP-2986 - ComponentProvder and dialog cleanup on dispose
This commit is contained in:
@@ -24,6 +24,7 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import docking.widgets.filechooser.GhidraFileChooser;
|
||||
import docking.widgets.filechooser.GhidraFileChooserMode;
|
||||
import ghidra.bitpatterns.info.ContextRegisterFilter;
|
||||
import ghidra.bitpatterns.info.PatternType;
|
||||
import ghidra.framework.preferences.Preferences;
|
||||
@@ -88,7 +89,7 @@ public class ExportPatternFileActionListener implements ActionListener {
|
||||
return;
|
||||
}
|
||||
GhidraFileChooser gFileChooser = new GhidraFileChooser(component);
|
||||
gFileChooser.setFileSelectionMode(GhidraFileChooser.FILES_ONLY);
|
||||
gFileChooser.setFileSelectionMode(GhidraFileChooserMode.FILES_ONLY);
|
||||
ExtensionFileFilter xmlFilter = new ExtensionFileFilter("xml", "XML Files");
|
||||
gFileChooser.setFileFilter(xmlFilter);
|
||||
String baseDir = Preferences.getProperty(XML_EXPORT_DIR_PROPERTY);
|
||||
@@ -97,11 +98,13 @@ public class ExportPatternFileActionListener implements ActionListener {
|
||||
}
|
||||
gFileChooser.setTitle("Select Export File");
|
||||
File outFile = gFileChooser.getSelectedFile();
|
||||
String lastDirPath = gFileChooser.getCurrentDirectory().getAbsolutePath();
|
||||
gFileChooser.dispose();
|
||||
if (gFileChooser.wasCancelled() || outFile == null) {
|
||||
return;
|
||||
}
|
||||
Preferences.setProperty(XML_EXPORT_DIR_PROPERTY,
|
||||
gFileChooser.getCurrentDirectory().getAbsolutePath());
|
||||
|
||||
Preferences.setProperty(XML_EXPORT_DIR_PROPERTY, lastDirPath);
|
||||
Preferences.store();
|
||||
BitsInputDialogComponentProvider bitsProvider =
|
||||
new BitsInputDialogComponentProvider(BITS_PROVIDER_MESSAGE);
|
||||
@@ -115,7 +118,6 @@ public class ExportPatternFileActionListener implements ActionListener {
|
||||
}
|
||||
catch (IOException e1) {
|
||||
Msg.showError(this, component, "IO Error", "IO error exporting pattern xml file", e1);
|
||||
e1.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import docking.action.DockingAction;
|
||||
import docking.action.MenuData;
|
||||
import docking.tool.ToolConstants;
|
||||
import docking.widgets.filechooser.GhidraFileChooser;
|
||||
import docking.widgets.filechooser.GhidraFileChooserMode;
|
||||
import docking.widgets.label.GLabel;
|
||||
import ghidra.bitpatterns.info.*;
|
||||
import ghidra.framework.options.OptionsChangeListener;
|
||||
@@ -227,13 +228,14 @@ public class FunctionBitPatternsMainProvider extends ComponentProviderAdapter
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
GhidraFileChooser fileChooser = new GhidraFileChooser(component);
|
||||
fileChooser.setFileSelectionMode(GhidraFileChooser.DIRECTORIES_ONLY);
|
||||
fileChooser.setFileSelectionMode(GhidraFileChooserMode.DIRECTORIES_ONLY);
|
||||
fileChooser.setTitle("Select Directory Containing XML Files");
|
||||
String baseDir = Preferences.getProperty(PATTERN_INFO_DIR);
|
||||
if (baseDir != null) {
|
||||
fileChooser.setCurrentDirectory(new File(baseDir));
|
||||
}
|
||||
File xmlDir = fileChooser.getSelectedFile();
|
||||
fileChooser.dispose();
|
||||
if (xmlDir == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import java.math.BigInteger;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import docking.widgets.filechooser.GhidraFileChooser;
|
||||
import docking.widgets.filechooser.GhidraFileChooserMode;
|
||||
import generic.jar.ResourceFile;
|
||||
import ghidra.app.analyzers.FunctionStartAnalyzer.ContextAction;
|
||||
import ghidra.bitpatterns.info.ContextRegisterFilter;
|
||||
@@ -59,7 +60,7 @@ public class ImportPatternFileActionListener implements ActionListener {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
GhidraFileChooser fileChooser = new GhidraFileChooser(component);
|
||||
|
||||
fileChooser.setFileSelectionMode(GhidraFileChooser.FILES_ONLY);
|
||||
fileChooser.setFileSelectionMode(GhidraFileChooserMode.FILES_ONLY);
|
||||
fileChooser.setTitle("Select Pattern File");
|
||||
String baseDir = Preferences.getProperty(XML_IMPORT_DIR_PROPERTY);
|
||||
if (baseDir != null) {
|
||||
@@ -68,11 +69,13 @@ public class ImportPatternFileActionListener implements ActionListener {
|
||||
ExtensionFileFilter xmlFilter = new ExtensionFileFilter("xml", "XML Files");
|
||||
fileChooser.setFileFilter(xmlFilter);
|
||||
File patternFile = fileChooser.getSelectedFile();
|
||||
String lastDirPath = fileChooser.getCurrentDirectory().getAbsolutePath();
|
||||
fileChooser.dispose();
|
||||
if (fileChooser.wasCancelled() || patternFile == null) {
|
||||
return;
|
||||
}
|
||||
Preferences.setProperty(XML_IMPORT_DIR_PROPERTY,
|
||||
fileChooser.getCurrentDirectory().getAbsolutePath());
|
||||
|
||||
Preferences.setProperty(XML_IMPORT_DIR_PROPERTY, lastDirPath);
|
||||
Preferences.store();
|
||||
//only clear the patterns if new patterns are loaded from a file
|
||||
ResourceFile resource = new ResourceFile(patternFile);
|
||||
|
||||
Reference in New Issue
Block a user