Topics

Jetbrains IDEs - improving speech and focus. #addonrelease #addontesting

Pawel Urbanski
 

Dear Everyone,
I recently started using Jetbrains IDEs. I think that they are very good in terms of accessibility, for Jetbrains provides a specific enhanced mode for screen readers.
However there are minor interactions, which are not convinient for constant use.
1. While code completion works fantastically well, the bug can be described as follows:
* Whenever I accept a completion item: a variable / property / function, and the editor gains focus, NVDA is always reading the name property of the editor class provided by the Java Access Bridge,
* For example: "Editor for <name of the currently opened file>, and then continues with the trest of the focused content, or reports inserted item.
2. I tried to create a simple appmodule, which checks if the controle type is of type: ROLE_EDITABLETEXT and then cancel speech, but suddenly inserted items are not being reported, the line content is not visible on the Braille display, and code completion stopped working...

The code is as follows:
class AppModule(appModuleHandler.AppModule):
def event_focusEntered(self, obj, nextHandler):
if obj.role == controlTypes.ROLE_EDITABLETEXT:
speech.cancelSpeech()
nextHandler()

I import Java Access Bridge objects, NVDA objects and behaviors. The edit control is the one without autoselect detection.

I am seaking help in creating the fix for this too verbose announcements. I must say that this IDE is much better when it comes to coding than Visual Studio or Visual Studio Code. Jetbrains has products for different languages, but they use a common shell, just ike Eclipse does, so it would be a fantastic tool for blind developers.

Thank you for your help in advance...
Pawel
 

 

Hi,

Welcome to NvDA list.

Focus entered is most appropriate if an item inside a container (lists, for example) is focused.

Regarding focus item problem: the code fragment below won’t work simply because it’ll match ALL edit fields (think about what that if statement does, as it’ll silence all speech if system focus moves to any edit field). A common solution is to match a specific edit field by inspecting window class names, control ID’s and what not, along with properties of accessibility API object representing the edit field to screen readers (in this case, what Java Access Bridge says about the edit field in question).

Auto-completes and a more general solution: I think the best way to handle this situation is defining an overlay class. This means letting the app module come with an overlay class representing the edit field, with the overlay class dealing with focus announcement, auto-complete suggestions (there is already a behavior mix-in defined for it named EditableTextWithSuggestions) and others. Then in the app module class, you can use chooseNVDAObjectOverlayClasses method to locate the specific edit field represented by the overlay class and inserting that class to top of the classes list (clsList), which means any event NVDA listens to and commands will be sent to that edit field before falling back to default implementation.

Although users list may provide you with some starting points, it isn’t really a forum that talks about intricacies of add-on development; there is a sister forum to this users list (named nvda-addons hosted on Groups.IO) where people like you come together and share their knowledge.

P.S. I’m the one who wrote definitions for EditableTextWithSuggestions mix-in back in 2017 as part of a project to let NVDA deal with UIA search fields.

Cheers,

Joseph

 

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of pawel@...
Sent: Wednesday, January 9, 2019 4:53 AM
To: nvda@nvda.groups.io
Subject: [nvda] Jetbrains IDEs - improving speech and focus. #addonrelease #addonrelease #addonrelease #addontesting

 

Dear Everyone,
I recently started using Jetbrains IDEs. I think that they are very good in terms of accessibility, for Jetbrains provides a specific enhanced mode for screen readers.
However there are minor interactions, which are not convinient for constant use.
1. While code completion works fantastically well, the bug can be described as follows:
* Whenever I accept a completion item: a variable / property / function, and the editor gains focus, NVDA is always reading the name property of the editor class provided by the Java Access Bridge,
* For example: "Editor for <name of the currently opened file>, and then continues with the trest of the focused content, or reports inserted item.
2. I tried to create a simple appmodule, which checks if the controle type is of type: ROLE_EDITABLETEXT and then cancel speech, but suddenly inserted items are not being reported, the line content is not visible on the Braille display, and code completion stopped working...

The code is as follows:

class AppModule(appModuleHandler.AppModule):

def event_focusEntered(self, obj, nextHandler):

if obj.role == controlTypes.ROLE_EDITABLETEXT:

speech.cancelSpeech()

nextHandler()

I import Java Access Bridge objects, NVDA objects and behaviors. The edit control is the one without autoselect detection.

I am seaking help in creating the fix for this too verbose announcements. I must say that this IDE is much better when it comes to coding than Visual Studio or Visual Studio Code. Jetbrains has products for different languages, but they use a common shell, just ike Eclipse does, so it would be a fantastic tool for blind developers.

Thank you for your help in advance...
Pawel

 

Pawel Urbanski
 

Hi Joseph,
I will move this thread to the other group, and try to create a custom class.
Unfortunately, it seems to me that most windows and IDs have the same
class window name of SunAwtFrame and the ID of 0. I looked it up using
Access Bridge Explorer by Google.

Thanks for your help and the hint about other group.
Pawel

On 09/01/2019, Joseph Lee <@joslee> wrote:
Hi,

Welcome to NvDA list.

Focus entered is most appropriate if an item inside a container (lists, for
example) is focused.

Regarding focus item problem: the code fragment below won’t work simply
because it’ll match ALL edit fields (think about what that if statement
does, as it’ll silence all speech if system focus moves to any edit field).
A common solution is to match a specific edit field by inspecting window
class names, control ID’s and what not, along with properties of
accessibility API object representing the edit field to screen readers (in
this case, what Java Access Bridge says about the edit field in question).

Auto-completes and a more general solution: I think the best way to handle
this situation is defining an overlay class. This means letting the app
module come with an overlay class representing the edit field, with the
overlay class dealing with focus announcement, auto-complete suggestions
(there is already a behavior mix-in defined for it named
EditableTextWithSuggestions) and others. Then in the app module class, you
can use chooseNVDAObjectOverlayClasses method to locate the specific edit
field represented by the overlay class and inserting that class to top of
the classes list (clsList), which means any event NVDA listens to and
commands will be sent to that edit field before falling back to default
implementation.

Although users list may provide you with some starting points, it isn’t
really a forum that talks about intricacies of add-on development; there is
a sister forum to this users list (named nvda-addons hosted on Groups.IO)
where people like you come together and share their knowledge.

P.S. I’m the one who wrote definitions for EditableTextWithSuggestions
mix-in back in 2017 as part of a project to let NVDA deal with UIA search
fields.

Cheers,

Joseph





From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of
pawel@...
Sent: Wednesday, January 9, 2019 4:53 AM
To: nvda@nvda.groups.io
Subject: [nvda] Jetbrains IDEs - improving speech and focus. #addonrelease
#addonrelease #addonrelease #addontesting



Dear Everyone,
I recently started using Jetbrains IDEs. I think that they are very good in
terms of accessibility, for Jetbrains provides a specific enhanced mode for
screen readers.
However there are minor interactions, which are not convinient for constant
use.
1. While code completion works fantastically well, the bug can be described
as follows:
* Whenever I accept a completion item: a variable / property / function, and
the editor gains focus, NVDA is always reading the name property of the
editor class provided by the Java Access Bridge,
* For example: "Editor for <name of the currently opened file>, and then
continues with the trest of the focused content, or reports inserted item.
2. I tried to create a simple appmodule, which checks if the controle type
is of type: ROLE_EDITABLETEXT and then cancel speech, but suddenly inserted
items are not being reported, the line content is not visible on the Braille
display, and code completion stopped working...

The code is as follows:

class AppModule(appModuleHandler.AppModule):

def event_focusEntered(self, obj, nextHandler):

if obj.role == controlTypes.ROLE_EDITABLETEXT:

speech.cancelSpeech()

nextHandler()

I import Java Access Bridge objects, NVDA objects and behaviors. The edit
control is the one without autoselect detection.

I am seaking help in creating the fix for this too verbose announcements. I
must say that this IDE is much better when it comes to coding than Visual
Studio or Visual Studio Code. Jetbrains has products for different
languages, but they use a common shell, just ike Eclipse does, so it would
be a fantastic tool for blind developers.

Thank you for your help in advance...
Pawel