예제 #1
0
  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;
  }