Merge remote-tracking branch 'origin/GP-1745-dragonmacher-open-program-dialog'

This commit is contained in:
Ryan Kurtz 2022-02-18 00:14:40 -05:00
commit 3e245c6f80
4 changed files with 29 additions and 24 deletions

View file

@ -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.

View file

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

View file

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

View file

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