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; return programChooserDialog;
} }
DomainFileFilter filter = df -> Program.class.isAssignableFrom(df.getDomainObjectClass()); 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 = return programChooserDialog =
new DataTreeDialog(null, "Map Module to Program", DataTreeDialog.OPEN, filter) { 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. { // 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.exception.*;
import ghidra.util.task.*; import ghidra.util.task.*;
@PluginInfo( @PluginInfo(shortDescription = "Debugger Trace View Management Plugin", description = "Manages UI Components, Wrappers, Focus, etc.", category = PluginCategoryNames.DEBUGGER, packageName = DebuggerPluginPackage.NAME, status = PluginStatus.RELEASED, eventsProduced = {
shortDescription = "Debugger Trace View Management Plugin", TraceActivatedPluginEvent.class,
description = "Manages UI Components, Wrappers, Focus, etc.", }, eventsConsumed = {
category = PluginCategoryNames.DEBUGGER, TraceActivatedPluginEvent.class,
packageName = DebuggerPluginPackage.NAME, TraceClosedPluginEvent.class,
status = PluginStatus.RELEASED, ModelObjectFocusedPluginEvent.class,
eventsProduced = { TraceRecorderAdvancedPluginEvent.class,
TraceActivatedPluginEvent.class, }, servicesRequired = {}, servicesProvided = {
}, DebuggerTraceManagerService.class,
eventsConsumed = { })
TraceActivatedPluginEvent.class,
TraceClosedPluginEvent.class,
ModelObjectFocusedPluginEvent.class,
TraceRecorderAdvancedPluginEvent.class,
},
servicesRequired = {},
servicesProvided = {
DebuggerTraceManagerService.class,
})
public class DebuggerTraceManagerServicePlugin extends Plugin public class DebuggerTraceManagerServicePlugin extends Plugin
implements DebuggerTraceManagerService { implements DebuggerTraceManagerService {
private static final AutoConfigState.ClassHandler<DebuggerTraceManagerServicePlugin> CONFIG_STATE_HANDLER = private static final AutoConfigState.ClassHandler<DebuggerTraceManagerServicePlugin> CONFIG_STATE_HANDLER =
@ -312,6 +303,8 @@ public class DebuggerTraceManagerServicePlugin extends Plugin
return traceChooserDialog; return traceChooserDialog;
} }
DomainFileFilter filter = df -> Trace.class.isAssignableFrom(df.getDomainObjectClass()); 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 = return traceChooserDialog =
new DataTreeDialog(null, OpenTraceAction.NAME, DataTreeDialog.OPEN, filter) { new DataTreeDialog(null, OpenTraceAction.NAME, DataTreeDialog.OPEN, filter) {
{ // TODO/HACK: Why the NPE if I don't do this? { // TODO/HACK: Why the NPE if I don't do this?
@ -520,9 +513,9 @@ public class DebuggerTraceManagerServicePlugin extends Plugin
protected void contextChanged() { protected void contextChanged() {
Trace trace = current.getTrace(); Trace trace = current.getTrace();
String name = trace == null ? "..." : trace.getName(); String itemName = trace == null ? "..." : trace.getName();
actionCloseTrace.getMenuBarData().setMenuItemName(CloseTraceAction.NAME_PREFIX + name); actionCloseTrace.getMenuBarData().setMenuItemName(CloseTraceAction.NAME_PREFIX + itemName);
actionSaveTrace.getMenuBarData().setMenuItemName(SaveTraceAction.NAME_PREFIX + name); actionSaveTrace.getMenuBarData().setMenuItemName(SaveTraceAction.NAME_PREFIX + itemName);
tool.contextChanged(null); tool.contextChanged(null);
} }

View file

@ -144,8 +144,7 @@ public class DataTreeDialog extends DialogComponentProvider
okButton.setText("Save"); okButton.setText("Save");
okButton.setMnemonic('S'); okButton.setMnemonic('S');
} }
else if (newType == CREATE) {
if (newType == CREATE) {
okButton.setText("Create"); okButton.setText("Create");
okButton.setMnemonic('C'); okButton.setMnemonic('C');
} }
@ -222,11 +221,15 @@ public class DataTreeDialog extends DialogComponentProvider
pendingNameText = null; pendingNameText = null;
initializeSelectedFolder(); initializeSelectedFolder();
setFocusComponent(nameField);
if (type == OPEN) { if (type == OPEN) {
domainFolder = null; domainFolder = null;
nameField.setText(nameFieldText); nameField.setText(nameFieldText);
nameField.selectAll(); nameField.selectAll();
populateProjectModel(); populateProjectModel();
// the name field is disabled; use the filter field
setFocusComponent(treePanel.getFilterField());
} }
else if (type == SAVE) { else if (type == SAVE) {
nameField.setText(nameFieldText); nameField.setText(nameFieldText);
@ -238,6 +241,9 @@ public class DataTreeDialog extends DialogComponentProvider
nameField.selectAll(); nameField.selectAll();
initializeSelectedFolder(); initializeSelectedFolder();
} }
else { // CHOOSE_FOLDER
setFocusComponent(treePanel.getFilterField());
}
setOkEnabled(!nameFieldText.isEmpty()); setOkEnabled(!nameFieldText.isEmpty());

View file

@ -362,6 +362,10 @@ public class ProjectDataTreePanel extends JPanel {
tree.setFilterVisible(enabled); tree.setFilterVisible(enabled);
} }
public Component getFilterField() {
return tree.getFilterField();
}
public String[] getExpandedPathsByNodeName() { public String[] getExpandedPathsByNodeName() {
List<TreePath> expandedPaths = tree.getExpandedPaths(root); List<TreePath> expandedPaths = tree.getExpandedPaths(root);
if (expandedPaths == null || expandedPaths.size() == 0) { if (expandedPaths == null || expandedPaths.size() == 0) {