Merge remote-tracking branch 'origin/GP-4511_ghidragon_improved_accessibility_for_memory_map_dialogs--SQUASHED'

This commit is contained in:
Ryan Kurtz
2024-04-12 08:25:23 -04:00
8 changed files with 47 additions and 2 deletions

View File

@@ -201,6 +201,7 @@ class AddBlockDialog extends DialogComponentProvider implements ChangeListener {
MemoryBlockType.BIT_MAPPED, MemoryBlockType.BYTE_MAPPED };
comboBox = new GhidraComboBox<>(items);
comboBox.getAccessibleContext().setAccessibleName("Block Type");
comboBox.addItemListener(e -> blockTypeSelected());
panel.add(comboBox);
return panel;
@@ -265,6 +266,9 @@ class AddBlockDialog extends DialogComponentProvider implements ChangeListener {
initialValueLabel = new GDLabel("Initial Value");
initialValueField = new RegisterField(8, null, false);
initialValueField.setName("Initial Value");
initialValueField.getAccessibleContext().setAccessibleName("Initialized Block Value");
initialValueField.getAccessibleContext()
.setAccessibleDescription("Enter the initial value for every byte in this block");
initialValueField.setChangeListener(e -> initialValueChanged());
@@ -299,6 +303,7 @@ class AddBlockDialog extends DialogComponentProvider implements ChangeListener {
return preferredSize;
}
};
fileBytesComboBox.getAccessibleContext().setAccessibleName("Byte Source");
fileBytesComboBox.addItemListener(e -> fileBytesChanged());
if (!allFileBytes.isEmpty()) {
model.setFileBytes(allFileBytes.get(0));
@@ -477,6 +482,7 @@ class AddBlockDialog extends DialogComponentProvider implements ChangeListener {
baseAddrField.setAddressFactory(addrFactory);
baseAddrField.setName("Source Addr");
baseAddrField.addChangeListener(ev -> baseAddressChanged());
baseAddrField.setAccessibleName("Source Address");
JPanel schemePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
@@ -485,12 +491,14 @@ class AddBlockDialog extends DialogComponentProvider implements ChangeListener {
schemeDestByteCountField.setAllowsHexPrefix(false);
schemeDestByteCountField.setDecimalMode();
schemeDestByteCountField.addChangeListener(ev -> schemeDestByteCountChanged());
schemeDestByteCountField.setAccessibleName("Mapping Ratio: Destination Size");
schemeSrcByteCountField = new IntegerTextField(4, 1);
schemeSrcByteCountField.setAllowNegativeValues(false);
schemeSrcByteCountField.setAllowsHexPrefix(false);
schemeSrcByteCountField.setDecimalMode();
schemeSrcByteCountField.addChangeListener(ev -> schemeSrcByteCountChanged());
schemeSrcByteCountField.setAccessibleName("Mapping Ratio: Source Size");
schemePanel.add(schemeDestByteCountField.getComponent());
schemePanel.add(new GLabel(" : "));
@@ -516,6 +524,7 @@ class AddBlockDialog extends DialogComponentProvider implements ChangeListener {
private Component buildCommentField() {
commentField = new JTextField();
commentField.setName("Comment");
commentField.getAccessibleContext().setAccessibleName("Memory Block Comment");
commentField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
@@ -538,6 +547,7 @@ class AddBlockDialog extends DialogComponentProvider implements ChangeListener {
private Component buildLengthField() {
lengthField = new RegisterField(36, null, false);
lengthField.setName("Length");
lengthField.getAccessibleContext().setAccessibleName("Memory Block Length");
lengthField.setChangeListener(e -> lengthChanged());
return lengthField;
}
@@ -545,6 +555,7 @@ class AddBlockDialog extends DialogComponentProvider implements ChangeListener {
private Component buildFileOffsetField() {
fileOffsetField = new RegisterField(60, null, false);
fileOffsetField.setName("File Offset");
fileOffsetField.getAccessibleContext().setAccessibleName("File Offset");
fileOffsetField.setChangeListener(e -> fileOffsetChanged());
return fileOffsetField;
}
@@ -552,6 +563,7 @@ class AddBlockDialog extends DialogComponentProvider implements ChangeListener {
private Component buildAddressField() {
addrField = new AddressInput();
addrField.setName("Start Addr");
addrField.setAccessibleName("Memory Block Start Address");
addrFactory = model.getProgram().getAddressFactory();
addrField.setAddressFactory(addrFactory, AddressInput.INCLUDE_ALL_MEMORY_SPACES);
addrField.addChangeListener(ev -> addrChanged());
@@ -561,6 +573,7 @@ class AddBlockDialog extends DialogComponentProvider implements ChangeListener {
private Component buildNameField() {
nameField = new JTextField();
nameField.setName("Block Name");
nameField.getAccessibleContext().setAccessibleName("Memory Block Name");
nameField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {

View File

@@ -114,9 +114,13 @@ class ExpandBlockDialog extends DialogComponentProvider implements ChangeListene
startAddressInput = new AddressInput();
startAddressInput.setName("NewStartAddress");
startAddressInput.setAddressFactory(addrFactory);
startAddressInput.setAccessibleName("New Start Address");
endAddressInput = new AddressInput();
endAddressInput.setName("EndAddress");
endAddressInput.setAddressFactory(addrFactory);
endAddressInput.setAccessibleName("New End Address");
Address start = block.getStart();
Address end = block.getEnd();
@@ -139,6 +143,7 @@ class ExpandBlockDialog extends DialogComponentProvider implements ChangeListene
lengthField = new RegisterField(32, null, false);
lengthField.setName("BlockLength");
lengthField.getAccessibleContext().setAccessibleName("Block Length");
lengthField.setValue(Long.valueOf(model.getLength()));
panel.add(

View File

@@ -67,6 +67,8 @@ class ImageBaseDialog extends DialogComponentProvider {
JPanel panel = new JPanel(new MiddleLayout());
textField = new JTextField(20);
textField.setText(currentAddr.toString());
textField.getAccessibleContext().setAccessibleName("Image Base Address");
textField.selectAll();
textField.addActionListener(e -> {
if (addr != null) {

View File

@@ -94,14 +94,18 @@ class SplitBlockDialog extends DialogComponentProvider {
panelOne.setBorder(BorderFactory.createTitledBorder("Block to Split"));
blockOneNameField = new JTextField(10);
blockOneNameField.setName("BlockOneName");
blockOneNameField.getAccessibleContext().setAccessibleName("Name of Block To Split");
blockOneStartField = new JTextField(10);
blockOneStartField.setName("BlockOneStart");
blockOneStartField.getAccessibleContext().setAccessibleName("Address of Block To Split");
blockOneEnd = new AddressInput();
blockOneEnd.setName("BlockOneEnd");
blockOneEnd.setAccessibleName("New Block End Adddress");
blockOneLengthField = new RegisterField(32, null, false);
blockOneLengthField.setName("BlockOneLength");
blockOneLengthField.getAccessibleContext().setAccessibleName("New Block Length");
panelOne.add(new GLabel("Block Name:", SwingConstants.RIGHT));
panelOne.add(blockOneNameField);
@@ -116,13 +120,16 @@ class SplitBlockDialog extends DialogComponentProvider {
panelTwo.setBorder(BorderFactory.createTitledBorder("New Block"));
blockTwoNameField = new JTextField(10);
blockTwoNameField.setName("BlockTwoName");
blockTwoNameField.getAccessibleContext().setAccessibleName("Name of New Block");
blockTwoStart = new AddressInput();
blockTwoStart.setName("BlockTwoStart");
blockTwoStart.setAccessibleName("New Block Start Address");
blockTwoEndField = new JTextField(10);
blockTwoEndField.setName("BlockTwoEnd");
blockTwoLengthField = new RegisterField(32, null, false);
blockTwoLengthField.setName("BlockTwoLength");
blockTwoLengthField.getAccessibleContext().setAccessibleName("New Block Size");
panelTwo.add(new GLabel("Block Name:", SwingConstants.RIGHT));
panelTwo.add(blockTwoNameField);

View File

@@ -56,7 +56,6 @@ class TipOfTheDayDialog extends ReusableDialogComponentProvider {
Icon tipIcon = new GIcon("icon.plugin.totd.provider");
tipArea = new JTextArea(4, 30);
tipArea.setEditable(false);
tipArea.setFont(Gui.getFont(FONT_ID));
tipArea.setWrapStyleWord(true);
tipArea.setLineWrap(true);
@@ -139,6 +138,8 @@ class TipOfTheDayDialog extends ReusableDialogComponentProvider {
}
String tip = tips.get(tipIndex);
tipArea.setText(tip);
tipArea.getAccessibleContext().setAccessibleName("Ghidra Tip of The Day");
tipArea.getAccessibleContext().setAccessibleDescription(tip);
}
int getTipIndex() {

View File

@@ -77,6 +77,7 @@ public class AddressInput extends JPanel implements FocusableEditor {
textField.setName("JTextField");//for JUnits...
combo = new GComboBox<>();
combo.setName("JComboBox");//for JUnits...
combo.getAccessibleContext().setAccessibleName("Address Space");
add(textField, BorderLayout.CENTER);
//add(combo, BorderLayout.WEST);
comboAdded = false;
@@ -367,6 +368,14 @@ public class AddressInput extends JPanel implements FocusableEditor {
combo.setEnabled(enabled);
}
/**
* Sets the accessible name for this address input field.
* @param name the accessible name for this address field
*/
public void setAccessibleName(String name) {
textField.getAccessibleContext().setAccessibleName(name);
}
/**
* Set the text field to be editable according to the state param.
*/

View File

@@ -270,7 +270,7 @@ public class OptionDialog extends DialogComponentProvider {
if (savedDialogChoicePanel != null) {
panel.add(savedDialogChoicePanel, BorderLayout.SOUTH);
}
setAccessibleDescription(message);
addWorkPanel(panel);
setRememberLocation(false);
setRememberSize(false);

View File

@@ -139,6 +139,14 @@ public class IntegerTextField {
listeners.add(listener);
}
/**
* Sets the accessible name for the component of this input field.
* @param name the accessible name for this field
*/
public void setAccessibleName(String name) {
textField.getAccessibleContext().setAccessibleName(name);
}
/**
* Removes the changes listener.
*