GT-2856 Corrected restore project NPE observed when using large

repository.
This commit is contained in:
ghidra1 2019-05-09 11:43:11 -04:00
parent 85d11cc6ba
commit 1444b0c27b

View file

@ -36,6 +36,7 @@ import ghidra.framework.main.FrontEndPlugin;
import ghidra.framework.model.*; import ghidra.framework.model.*;
import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.PluginTool;
import ghidra.util.HelpLocation; import ghidra.util.HelpLocation;
import ghidra.util.SystemUtilities;
import ghidra.util.bean.GGlassPane; import ghidra.util.bean.GGlassPane;
import ghidra.util.bean.GGlassPanePainter; import ghidra.util.bean.GGlassPanePainter;
@ -79,12 +80,12 @@ public class ProjectDataTablePanel extends JPanel {
private void buildContent() { private void buildContent() {
model = new ProjectDataTableModel(tool); model = new ProjectDataTableModel(tool);
model.addThreadedTableModelListener(new SelectPendingFilesListener()); model.addThreadedTableModelListener(new SelectPendingFilesListener());
table = new GFilterTable<DomainFileInfo>(model) { table = new GFilterTable<>(model) {
@Override @Override
protected GThreadedTablePanel<DomainFileInfo> createThreadedTablePanel( protected GThreadedTablePanel<DomainFileInfo> createThreadedTablePanel(
ThreadedTableModel<DomainFileInfo, ?> threadedModel) { ThreadedTableModel<DomainFileInfo, ?> threadedModel) {
return new GThreadedTablePanel<DomainFileInfo>(threadedModel) { return new GThreadedTablePanel<>(threadedModel) {
@Override @Override
protected GTable createTable(ThreadedTableModel<DomainFileInfo, ?> m) { protected GTable createTable(ThreadedTableModel<DomainFileInfo, ?> m) {
// the table's default actions aren't that useful in the Front End // the table's default actions aren't that useful in the Front End
@ -267,10 +268,11 @@ public class ProjectDataTablePanel extends JPanel {
capacityExceeded = true; capacityExceeded = true;
this.projectData.removeDomainFolderChangeListener(changeListener); this.projectData.removeDomainFolderChangeListener(changeListener);
model.setProjectData(null); model.setProjectData(null);
SystemUtilities.runSwingLater(() -> {
GGlassPane glassPane = (GGlassPane) gTable.getRootPane().getGlassPane(); GGlassPane glassPane = (GGlassPane) gTable.getRootPane().getGlassPane();
glassPane.removePainter(painter); glassPane.removePainter(painter);
glassPane.addPainter(painter); glassPane.addPainter(painter);
});
} }
} }