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;
|
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.
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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());
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue