How to assign unique id to swt widget and get it in swtbot?

eclipse-plugin, eclipse-rcp, java, swt, swtbot

Solution

Unfortunately, there is no built-in way to do this.

I think your best option is to use the method `Widget#setData(Object)` to set the id.

You can generate a (pseudo) random id using:

UUID id = UUID.randomUUID();
widget.setData(id);

(or use any id generation method you want).

To find your widget, you would have to search through the children of the `Shell` (or the `Composite` to which you can narrow it down) with any search algorithm you want (DFS, BFS, ...) and then compare the `UUID` to the id you are searching for.

for(Control control : shell.getChildren())
{
    UUID id = (UUID) control.getData();

    if(id.equals(WHATEVER_HERE))
    {
        System.out.println(control);
    }
}

Problem

I want to assign a unique id to swt widget, and than get back the widget in SWTBot test with this unique id. Is there a way to do it?

Original source