mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-25 17:00:36 -09:00
Merge remote-tracking branch 'origin/GP-4511_ghidragon_improved_accessibility_for_memory_map_dialogs--SQUASHED'
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user