GP-2986 - ComponentProvder and dialog cleanup on dispose

This commit is contained in:
dragonmacher 2023-02-02 17:51:15 -05:00
parent e5a8f26347
commit c252e3b905
174 changed files with 1418 additions and 1529 deletions

View file

@ -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();
}
}

View file

@ -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;
}

View file

@ -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);