The gist of a generic wrapper around a value
public final class Wrap<T> {
public volatile T value;
public Wrap(T initialValue) {
value = initialValue;
}
public static final <T> Wrap<T> create() {
return new Wrap<T>(null);
}
public static final <T> Wrap<T> create(T initialValue) {
return new Wrap<T>(initialValue);
}
}
private String getText(final Text text) {
final String[] retValue = new String[1];
text.getDisplay().syncExec(new Runnable() {
public void run() {
retValue[0] = text.getText();
}
});
return retValue[0];
}
private Control[] getChildren(final Composite composite) {
final Wrap<Control[]> children = Wrap.create();
composite.getDisplay().syncExec(new Runnable() {
public void run() {
children.value = composite.getChildren();
}
});
return children.value;
}