mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-06 03:50:02 +02:00
Merge remote-tracking branch 'origin/GP-1745-dragonmacher-open-program-dialog'
This commit is contained in:
commit
3e245c6f80
4 changed files with 29 additions and 24 deletions
|
@ -1229,6 +1229,8 @@ public class DebuggerModulesProvider extends ComponentProviderAdapter {
|
|||
return programChooserDialog;
|
||||
}
|
||||
DomainFileFilter filter = df -> Program.class.isAssignableFrom(df.getDomainObjectClass());
|
||||
|
||||
// TODO regarding the hack note below, I believe this issue ahs been fixed, but not sure how to test
|
||||
return programChooserDialog =
|
||||
new DataTreeDialog(null, "Map Module to Program", DataTreeDialog.OPEN, filter) {
|
||||
{ // TODO/HACK: I get an NPE setting the default selection if I don't fake this.
|
||||
|
|
|
@ -60,25 +60,16 @@ import ghidra.util.datastruct.CollectionChangeListener;
|
|||
import ghidra.util.exception.*;
|
||||
import ghidra.util.task.*;
|
||||
|
||||
@PluginInfo(
|
||||
shortDescription = "Debugger Trace View Management Plugin",
|
||||
description = "Manages UI Components, Wrappers, Focus, etc.",
|
||||
category = PluginCategoryNames.DEBUGGER,
|
||||
packageName = DebuggerPluginPackage.NAME,
|
||||
status = PluginStatus.RELEASED,
|
||||
eventsProduced = {
|
||||
TraceActivatedPluginEvent.class,
|
||||
},
|
||||
eventsConsumed = {
|
||||
TraceActivatedPluginEvent.class,
|
||||
TraceClosedPluginEvent.class,
|
||||
ModelObjectFocusedPluginEvent.class,
|
||||
TraceRecorderAdvancedPluginEvent.class,
|
||||
},
|
||||
servicesRequired = {},
|
||||
servicesProvided = {
|
||||
DebuggerTraceManagerService.class,
|
||||
})
|
||||
@PluginInfo(shortDescription = "Debugger Trace View Management Plugin", description = "Manages UI Components, Wrappers, Focus, etc.", category = PluginCategoryNames.DEBUGGER, packageName = DebuggerPluginPackage.NAME, status = PluginStatus.RELEASED, eventsProduced = {
|
||||
TraceActivatedPluginEvent.class,
|
||||
}, eventsConsumed = {
|
||||
TraceActivatedPluginEvent.class,
|
||||
TraceClosedPluginEvent.class,
|
||||
ModelObjectFocusedPluginEvent.class,
|
||||
TraceRecorderAdvancedPluginEvent.class,
|
||||
}, servicesRequired = {}, servicesProvided = {
|
||||
DebuggerTraceManagerService.class,
|
||||
})
|
||||
public class DebuggerTraceManagerServicePlugin extends Plugin
|
||||
implements DebuggerTraceManagerService {
|
||||
private static final AutoConfigState.ClassHandler<DebuggerTraceManagerServicePlugin> CONFIG_STATE_HANDLER =
|
||||
|
@ -312,6 +303,8 @@ public class DebuggerTraceManagerServicePlugin extends Plugin
|
|||
return traceChooserDialog;
|
||||
}
|
||||
DomainFileFilter filter = df -> Trace.class.isAssignableFrom(df.getDomainObjectClass());
|
||||
|
||||
// TODO regarding the hack note below, I believe this issue ahs been fixed, but not sure how to test
|
||||
return traceChooserDialog =
|
||||
new DataTreeDialog(null, OpenTraceAction.NAME, DataTreeDialog.OPEN, filter) {
|
||||
{ // TODO/HACK: Why the NPE if I don't do this?
|
||||
|
@ -520,9 +513,9 @@ public class DebuggerTraceManagerServicePlugin extends Plugin
|
|||
|
||||
protected void contextChanged() {
|
||||
Trace trace = current.getTrace();
|
||||
String name = trace == null ? "..." : trace.getName();
|
||||
actionCloseTrace.getMenuBarData().setMenuItemName(CloseTraceAction.NAME_PREFIX + name);
|
||||
actionSaveTrace.getMenuBarData().setMenuItemName(SaveTraceAction.NAME_PREFIX + name);
|
||||
String itemName = trace == null ? "..." : trace.getName();
|
||||
actionCloseTrace.getMenuBarData().setMenuItemName(CloseTraceAction.NAME_PREFIX + itemName);
|
||||
actionSaveTrace.getMenuBarData().setMenuItemName(SaveTraceAction.NAME_PREFIX + itemName);
|
||||
tool.contextChanged(null);
|
||||
}
|
||||
|
||||
|
|
|
@ -144,8 +144,7 @@ public class DataTreeDialog extends DialogComponentProvider
|
|||
okButton.setText("Save");
|
||||
okButton.setMnemonic('S');
|
||||
}
|
||||
|
||||
if (newType == CREATE) {
|
||||
else if (newType == CREATE) {
|
||||
okButton.setText("Create");
|
||||
okButton.setMnemonic('C');
|
||||
}
|
||||
|
@ -222,11 +221,15 @@ public class DataTreeDialog extends DialogComponentProvider
|
|||
pendingNameText = null;
|
||||
initializeSelectedFolder();
|
||||
|
||||
setFocusComponent(nameField);
|
||||
if (type == OPEN) {
|
||||
domainFolder = null;
|
||||
nameField.setText(nameFieldText);
|
||||
nameField.selectAll();
|
||||
populateProjectModel();
|
||||
|
||||
// the name field is disabled; use the filter field
|
||||
setFocusComponent(treePanel.getFilterField());
|
||||
}
|
||||
else if (type == SAVE) {
|
||||
nameField.setText(nameFieldText);
|
||||
|
@ -238,6 +241,9 @@ public class DataTreeDialog extends DialogComponentProvider
|
|||
nameField.selectAll();
|
||||
initializeSelectedFolder();
|
||||
}
|
||||
else { // CHOOSE_FOLDER
|
||||
setFocusComponent(treePanel.getFilterField());
|
||||
}
|
||||
|
||||
setOkEnabled(!nameFieldText.isEmpty());
|
||||
|
||||
|
|
|
@ -362,6 +362,10 @@ public class ProjectDataTreePanel extends JPanel {
|
|||
tree.setFilterVisible(enabled);
|
||||
}
|
||||
|
||||
public Component getFilterField() {
|
||||
return tree.getFilterField();
|
||||
}
|
||||
|
||||
public String[] getExpandedPathsByNodeName() {
|
||||
List<TreePath> expandedPaths = tree.getExpandedPaths(root);
|
||||
if (expandedPaths == null || expandedPaths.size() == 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue