Skip to content

Commit 9891a6b

Browse files
committed
Improve accessibility in the Preferences dialog
This commit makes the Preferences dialog more usable by accessibility devices like screen readers. Previously, a screen reader would only read the content of the text boxes. By using JLabel's setLabelFor() feature (and in some extreme cases, setAccessibleName()), a screen reader will know that a label is assigned to a text field. For example, instead of just reading "12", it will now read "Editor font size: 12".
1 parent 4b374dc commit 9891a6b

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

app/src/cc/arduino/view/preferences/Preferences.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ private void initComponents() {
174174
jTabbedPane1.setRequestFocusEnabled(false);
175175

176176
sketchbookLocationLabel.setText(tr("Sketchbook location:"));
177-
177+
sketchbookLocationLabel.setLabelFor(sketchbookLocationField);
178+
178179
sketchbookLocationField.setColumns(40);
179180

180181
browseButton.setText(I18n.PROMPT_BROWSE);
@@ -187,21 +188,28 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
187188
comboLanguageLabel.setText(tr("Editor language: "));
188189

189190
requiresRestartLabel.setText(tr(" (requires restart of Arduino)"));
191+
192+
comboLanguage.getAccessibleContext().setAccessibleName("Editor language (requires restart of Arduino)");
190193

191194
fontSizeLabel.setText(tr("Editor font size: "));
195+
fontSizeLabel.setLabelFor(fontSizeField);
192196

193197
fontSizeField.setColumns(4);
194198

195199
showVerboseLabel.setText(tr("Show verbose output during: "));
196200

197201
verboseCompilationBox.setText(tr("compilation "));
202+
verboseCompilationBox.getAccessibleContext().setAccessibleName("Show verbose output during compilation");
198203

199204
verboseUploadBox.setText(tr("upload"));
205+
verboseUploadBox.getAccessibleContext().setAccessibleName("Show verbose output during upload");
200206

201207
comboWarningsLabel.setText(tr("Compiler warnings: "));
208+
comboWarningsLabel.setLabelFor(comboWarnings);
202209

203210
additionalBoardsManagerLabel.setText(tr("Additional Boards Manager URLs: "));
204211
additionalBoardsManagerLabel.setToolTipText(tr("Enter a comma separated list of urls"));
212+
additionalBoardsManagerLabel.setLabelFor(additionalBoardsManagerField);
205213

206214
additionalBoardsManagerField.setToolTipText(tr("Enter a comma separated list of urls"));
207215

@@ -212,6 +220,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
212220
extendedAdditionalUrlFieldWindowActionPerformed(evt);
213221
}
214222
});
223+
extendedAdditionalUrlFieldWindow.getAccessibleContext().setAccessibleName("New Window");
215224

216225
morePreferencesLabel.setForeground(Color.GRAY);
217226
morePreferencesLabel.setText(tr("More preferences can be edited directly in the file"));
@@ -229,6 +238,7 @@ public void mouseEntered(java.awt.event.MouseEvent evt) {
229238
preferencesFileLabelMouseEntered(evt);
230239
}
231240
});
241+
preferencesFileLabel.setFocusable(true);
232242

233243
arduinoNotRunningLabel.setForeground(Color.GRAY);
234244
arduinoNotRunningLabel.setText(tr("(edit only when Arduino is not running)"));
@@ -280,6 +290,7 @@ public void mouseEntered(java.awt.event.MouseEvent evt) {
280290

281291
scaleSpinner.setModel(new javax.swing.SpinnerNumberModel(100, 100, 400, 5));
282292
scaleSpinner.setEnabled(false);
293+
scaleSpinner.getAccessibleContext().setAccessibleName("Interface scale (requires restart of Arduino)");
283294

284295
autoScaleCheckBox.setSelected(true);
285296
autoScaleCheckBox.setText(tr("Automatic"));
@@ -288,6 +299,7 @@ public void itemStateChanged(java.awt.event.ItemEvent evt) {
288299
autoScaleCheckBoxItemStateChanged(evt);
289300
}
290301
});
302+
autoScaleCheckBox.getAccessibleContext().setAccessibleName("Automatic interface scale (requires restart of Arduino");
291303

292304
jLabel3.setText("%");
293305

0 commit comments

Comments
 (0)