Hi Niraj,

Thanks for answering. The problem with this snippet is, that it uses "normal" table items, not owner drawn ones. Attached is a snippet with owner draw. It would be interesting how I can tell the screen reader the "text name/value" of a row. Thanks in advance.

--
Best regards,
Thomas Singer
=============
syntevo GmbH
www.syntevo.com


On 2020-06-18 11:52, Niraj Modi wrote:

Hi Thomas,
It should works on similar lines as below snippet from SWT snippets
https://www.eclipse.org/swt/snippets/ :
https://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet162.java

You could also take clues from other snippets from Accessibility section.
If it doesn't work-out, then share an example Snippet for your use-case ?

Regards,
Niraj Modi


From:   Thomas Singer <ts-...@syntevo.com>
To:     platform-dev@eclipse.org
Date:   17-06-2020 01:47 PM
Subject:        [EXTERNAL] [platform-dev] Accessibility (Screen Reader)
Sent by:        platform-dev-boun...@eclipse.org



Hi,

In our SWT based application we are using a lot of owner-drawn tables.
How we can provide information about selected rows (in compact and
detailed form) to a screen reader? I've tried something like

    table.getAccessible().addAccessible*Listener(new Accessible*() {
      ...
    });

but none of the listeners seems to make a change. Our tables still are
read as "1 of 197" in NVDA.

--
Best regards,
Thomas Singer
=============
syntevo GmbH
www.syntevo.com
_______________________________________________
platform-dev mailing list
platform-dev@eclipse.org
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/platform-dev





_______________________________________________
platform-dev mailing list
platform-dev@eclipse.org
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/platform-dev


import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

/**
 * @author Thomas Singer
 */
public class OwnerDrawnTable {

        public static void main(String[] args) {
                final Display display = new Display();

                final Shell shell = new Shell(display);
                shell.setLayout(new FillLayout());

                final Composite composite = new Composite(shell, SWT.NONE);
                composite.setLayout(new FillLayout());

                final Table table = new Table(composite, SWT.VIRTUAL | 
SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
                table.setHeaderVisible(true);

                table.setHeaderVisible(true);
                final Listener listener = event -> {
                        final TableItem item = (TableItem)event.item;
                        if (event.type == SWT.EraseItem) {
//                                      event.detail &= ~SWT.FOREGROUND;
                        }
                        else if (event.type == SWT.PaintItem) {
                                event.gc.drawText("hello", event.x, event.y, 
true);
                        }
                        else if (event.type == SWT.MeasureItem) {
                                event.width = 100;
                        }
                        else if (event.type == SWT.SetData) {
                                final int index = table.indexOf(item);
                                item.setData("Item " + index);
                        }
                };
                table.addListener(SWT.EraseItem, listener);
                table.addListener(SWT.SetData, listener);
                table.addListener(SWT.MeasureItem, listener);
                table.addListener(SWT.PaintItem, listener);

                createColumn(SWT.LEFT, "Column 1", table);
                createColumn(SWT.LEFT, "Column 2", table);
                createColumn(SWT.LEFT, "Column 3", table);

                shell.setSize(500, 450);
                shell.open();

                table.setRedraw(false);
                try {
                        table.setSortColumn(table.getColumn(1));
                        table.setSortDirection(SWT.UP);

                        table.setItemCount(50);
                        table.clearAll();
                        table.setSelection(0);
                }
                finally {
                        table.setRedraw(true);
                }

                while (!shell.isDisposed()) {
                        if (!display.readAndDispatch()) {
                                display.sleep();
                        }
                }

                display.dispose();
        }

        private static void createColumn(int style, String text, Table table) {
                final TableColumn tableColumn = new TableColumn(table, style);
                tableColumn.setText(text);
                tableColumn.setWidth(100);
        }
}

_______________________________________________
platform-dev mailing list
platform-dev@eclipse.org
To unsubscribe from this list, visit 
https://www.eclipse.org/mailman/listinfo/platform-dev

Reply via email to