Merge remote-tracking branch 'origin/GT-2864_dev747368_datatypechooserdialog'

This commit is contained in:
Ryan Kurtz
2019-05-15 09:53:09 -04:00

View File

@@ -26,13 +26,12 @@ import javax.swing.tree.TreePath;
import docking.DialogComponentProvider; import docking.DialogComponentProvider;
import docking.widgets.filter.FilterOptions; import docking.widgets.filter.FilterOptions;
import docking.widgets.filter.TextFilterStrategy; import docking.widgets.filter.TextFilterStrategy;
import docking.widgets.label.GDLabel; import docking.widgets.label.GLabel;
import docking.widgets.tree.*; import docking.widgets.tree.*;
import ghidra.app.plugin.core.datamgr.DataTypeManagerPlugin; import ghidra.app.plugin.core.datamgr.DataTypeManagerPlugin;
import ghidra.app.plugin.core.datamgr.tree.DataTypeArchiveGTree; import ghidra.app.plugin.core.datamgr.tree.DataTypeArchiveGTree;
import ghidra.app.plugin.core.datamgr.tree.DataTypeNode; import ghidra.app.plugin.core.datamgr.tree.DataTypeNode;
import ghidra.program.model.data.DataType; import ghidra.program.model.data.DataType;
import ghidra.util.HTMLUtilities;
/** /**
* A dialog that allows the user to choose from a tree of similarly named data types. * A dialog that allows the user to choose from a tree of similarly named data types.
@@ -40,10 +39,7 @@ import ghidra.util.HTMLUtilities;
public class DataTypeChooserDialog extends DialogComponentProvider { public class DataTypeChooserDialog extends DialogComponentProvider {
private DataTypeArchiveGTree tree; private DataTypeArchiveGTree tree;
private DataType selectedDataType; private DataType selectedDataType;
private JLabel messageLabel; private GLabel messageLabel;
/** when false, the user is required to pick from a restricted set */
private boolean isEditable;
public DataTypeChooserDialog(DataTypeManagerPlugin plugin) { public DataTypeChooserDialog(DataTypeManagerPlugin plugin) {
super("Data Type Chooser", true, true, true, false); super("Data Type Chooser", true, true, true, false);
@@ -99,7 +95,7 @@ public class DataTypeChooserDialog extends DialogComponentProvider {
private JComponent createWorkPanel() { private JComponent createWorkPanel() {
JPanel panel = new JPanel(new BorderLayout()); JPanel panel = new JPanel(new BorderLayout());
messageLabel = new GDLabel("Choose the data type you wish to use."); messageLabel = new GLabel("Choose the data type you wish to use.");
messageLabel.setBorder(BorderFactory.createEmptyBorder(2, 4, 2, 2)); messageLabel.setBorder(BorderFactory.createEmptyBorder(2, 4, 2, 2));
panel.add(messageLabel, BorderLayout.NORTH); panel.add(messageLabel, BorderLayout.NORTH);
panel.add(this.tree, BorderLayout.CENTER); panel.add(this.tree, BorderLayout.CENTER);
@@ -121,26 +117,12 @@ public class DataTypeChooserDialog extends DialogComponentProvider {
tree.setFilterText(filterText); tree.setFilterText(filterText);
} }
setEditable(editable); setEditable(editable);
setMessageLabel();
} }
public void setSelectedPath(TreePath selectedPath) { public void setSelectedPath(TreePath selectedPath) {
tree.setSelectedNodeByPathName(selectedPath); tree.setSelectedNodeByPathName(selectedPath);
} }
private void setMessageLabel() {
String message = "Choose the data type you wish to use.";
// TODO this message doesn't make sense in all use cases. If we want this or other messages,
// then we need to be able to set them.
// if (!isEditable) {
// message =
// "Multiple data types exist named \"" +
// ((FilterTextField) tree.getFilterField()).getText() + "\".\n" + message;
// }
messageLabel.setText(HTMLUtilities.wrapAsHTML(message));
}
@Override @Override
public Component getFocusComponent() { public Component getFocusComponent() {
return tree.getFilterField(); return tree.getFilterField();