private static boolean smartAdvanceAction( final boolean start, final JiraClient client, final JiraIssue issue, final TaskData taskData, final ITask task, final IProgressMonitor monitor) throws JiraException { final boolean[] doAdvanceAction = new boolean[1]; doAdvanceAction[0] = false; final String[] selectedAction = new String[1]; selectedAction[0] = start ? JiraTaskDataHandler.START_PROGRESS_OPERATION : JiraTaskDataHandler.STOP_PROGRESS_OPERATION; if ((start && !haveStartProgressOperation(taskData)) || (!start && !haveStopProgressOperation(taskData))) { PlatformUI.getWorkbench() .getDisplay() .syncExec( new Runnable() { public void run() { selectedAction[0] = showSelectActionDialog(taskData, task, start); doAdvanceAction[0] = selectedAction[0] != null; } }); } else { doAdvanceAction[0] = true; } if (doAdvanceAction[0]) { client.advanceIssueWorkflow(issue, selectedAction[0], null, monitor); return true; } return false; }