GP-6922 - Fixed Enter and Escape in the Create Typedef dialog

This commit is contained in:
dragonmacher
2026-06-08 17:31:00 -04:00
parent 9f48c3d54c
commit 178b81bfff

View File

@@ -15,9 +15,6 @@
*/
package ghidra.app.plugin.core.datamgr.actions;
import java.util.Arrays;
import java.util.List;
import javax.swing.*;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
@@ -26,8 +23,6 @@ import javax.swing.tree.TreePath;
import docking.DialogComponentProvider;
import docking.widgets.label.GLabel;
import ghidra.app.plugin.core.datamgr.DataTypeManagerPlugin;
import ghidra.app.plugin.core.datamgr.tree.ArchiveNode;
import ghidra.app.plugin.core.datamgr.tree.DataTypeTreeNode;
import ghidra.app.util.datatype.DataTypeSelectionEditor;
import ghidra.program.model.data.*;
import ghidra.util.MessageType;
@@ -57,10 +52,6 @@ public class CreateTypeDefDialog extends DialogComponentProvider {
}
private JComponent createWorkPanel() {
List<DataTypeManager> managers = Arrays.stream(plugin.getDataTypeManagers())
.filter(dtm -> !(dtm instanceof BuiltInDataTypeManager))
.toList();
DataTypeManager defaultDTM = getDefaultDataTypeManager(managers);
JPanel panel = new JPanel(new PairLayout());
@@ -74,9 +65,10 @@ public class CreateTypeDefDialog extends DialogComponentProvider {
panel.add(nameTextField);
// data type info
dataTypeEditor = new DataTypeSelectionEditor(
null, /* TODO: can't set default dtm for the data type selection field because the dialog allows switching between destination DTMs */
plugin.getTool(), AllowedDataTypes.ALL);
// Note: can't set default DTM for the data type selection field because the dialog allows
// switching between destination DTMs
DataTypeManager dtm = null;
dataTypeEditor = new DataTypeSelectionEditor(dtm, plugin.getTool(), AllowedDataTypes.ALL);
panel.add(new GLabel("Data type:"));
panel.add(dataTypeEditor.getEditorComponent());
@@ -84,11 +76,13 @@ public class CreateTypeDefDialog extends DialogComponentProvider {
@Override
public void editingStopped(ChangeEvent e) {
setStatusText("");
okCallback();
}
@Override
public void editingCanceled(ChangeEvent e) {
setStatusText("");
cancelCallback();
}
});
@@ -109,19 +103,6 @@ public class CreateTypeDefDialog extends DialogComponentProvider {
return panel;
}
private DataTypeManager getDefaultDataTypeManager(List<DataTypeManager> mgrs) {
// select the manager from where the dialog was created
Object lastPathComponent = selectedTreePath.getLastPathComponent();
if (lastPathComponent instanceof DataTypeTreeNode dataTypeTreeNode) {
ArchiveNode archiveNode = dataTypeTreeNode.getArchiveNode();
DataTypeManager manager = archiveNode.getArchive().getDataTypeManager();
if (mgrs.contains(manager)) {
return manager;
}
}
return null;
}
@Override
protected void okCallback() {
// are we valid?