public void launchApplication(Window owner, ExecutorWorkerService executor, Profile profile) {
profile.setLastLaunchDate(new Date());
Persistence.commitAndForget(profile);
getProfiles().notifyUpdate();
LoginController loginDialog = new LoginController(owner, this);
loginDialog.setVisible(true);
Identity identity = loginDialog.getIdentity();
if (identity != null) {
LaunchWorker task = new LaunchWorker(profile, identity);
ListenableFuture<LaunchedProcess> future = executor.submit(task);
SwingHelper.addErrorDialogCallback(future, owner);