Community
Participate
Working Groups
MessageBox is effectively just a call to OS.MessageBox (hwndOwner, buffer1, buffer2, bits) It's odd that it isn't being read, but I'm not sure we can do anything about it.
JAWS *does* read SWT MessageBox messages. Run the example that is pasted below, and you will believe me. You did not give steps to repeat, but I suspect that you are talking about "message boxes" in the eclipse UI. For some reason they did not like the SWT message boxes, so they rolled their own. They did not add accessibility to theirs. See the org.eclipse.jface.dialogs.Dialog hierarchy, specifically MessageDialog. import org.eclipse.swt.*; import org.eclipse.swt.widgets.*; public class MessageBoxTest { static Display display; static Shell shell; public static void main(String[] args) { display = new Display(); shell = new Shell(display); MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.YES | SWT.NO | SWT.CANCEL); box.setText("MessageBox"); box.setMessage("JAWS will read this!"); box.open(); shell.setSize(100, 100); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } }
Moving to UI for comment.
Probably JFace MessageDialog. Our dialogs need to be accessible. I suspect that we're using a regular Label, which does not get read because it does not take focus. Could use a read-only Text.
I don't recommend we use a Text at all - it wraps differently from a label and having a gratuitous extra focus area will look bad. I will investigate using the IAccessible support.
Actually, there is no reason to use a read-only Text control, a label should work fine. When you press JAWSKEY+B (usually the "Insert" key on a full-sized keyboard), JAWS will read out the contents of the current dialog, labels included. But, in Eclipse, it reads out the Workbench title for some reason, and then the messagebox title. I was told, and I naively believed, that this accelerator reads the dialog to the user.
When I use the Ins+B combination it ends up reading the contents of the window that spawned the dialog so I think it is not a reliable enough workaround for this. Randy can you get it to read the contents of the confirmation dialog when deleting using your method? I get it reading the main window first.
Can you try INS+B on a non-Eclipse Windows app that spawns a Modal dialog. If it works in that case, then why doesn't it work in SWT? Sounds like it could still be an SWT problem.
It works as expected outside of Eclipse. In Eclipse it reads the contents of the window that spawned the dialog rather than the dialog itself. The Eclipse Message Dialog is not a system dialog - it is a dialog shell with content - i wouldn't expect it to work the same way as an OS Message Box
I was just talking about "custom" dialogs outside of Eclipse, such as the Options dialog on Internet Explorer. It sounds like you were testing an OS Messagebox outside of Eclipse. Since the Eclipse Message Dialog is just a dialog, this goes to show that *all* dialogs spawned from a workbench window won't get read by JAWS using INS+B. Is this true? So, the Preferences dialog and Properties dialogs aren't "readable" either?
If you look the the Add to Favourites dialog in IE for instance you will find that Ctrl+B does read the contents of the dialog. What we need to check against is a dialog with no groups that has a Label unrelated to it. I can't think of one offhand - if you can this is worth looking at.
You could find something comparable to MessageDialog outside of Eclipse, or you could find something comparable to "Add to favorites" inside Eclipse, such as the Preference Dialog. The preferences dialog doesn't get read either, so I don't think this is specific to the contents of MessageDialog.
Using JAWS it is possible to read the dialog using the JAWS cursor (-) so it is not unreadable. The Ins+B functionality is an extra feature that we do not currently support that we should consider for later releases. It would likely require some sort of discussion with Freedom Scientific (the makers of JAWS). What it is currently reading is the parent shell (the window) of the dialog - special support is required to read a dialog that is not a Windows system dialog. This behaviour can be seen in other applications like Photoshop that are not specifically designed to work with JAWS. Marking as LATER.
In build 0723 MessageBox text is no readable by JAWS as SWT has added 32270 support to the shell. Please note that JAWS only reads the direct children of the shell - any children within a composite will not be read.
As of now 'LATER' and 'REMIND' resolutions are no longer supported. Please reopen this bug if it is still valid for you.