shouldn't this be in a Display.getDefault().syncExec to avoid blocking rest of the UI ?