});
}
private void updateButtons() {
boolean selected = table.getSelectionCount() == 1;
TaskSummary task = getSelectedTask();
String userId = getUserId();
claimButton.setEnabled(selected && Status.Ready.equals(task.getStatus()));
startButton.setEnabled(selected &&
(Status.Ready.equals(task.getStatus()) ||
(Status.Reserved.equals(task.getStatus())
&& userId.equals(task.getActualOwner().getId()))));
stopButton.setEnabled(selected && Status.InProgress.equals(task.getStatus())
&& userId.equals(task.getActualOwner().getId()));
releaseButton.setEnabled(selected &&
(Status.Reserved.equals(task.getStatus()) || Status.InProgress.equals(task.getStatus()))
&& userId.equals(task.getActualOwner().getId()));
suspendButton.setEnabled(selected &&
(Status.Ready.equals(task.getStatus()) ||
((Status.Reserved.equals(task.getStatus()) || Status.InProgress.equals(task.getStatus()))
&& userId.equals(task.getActualOwner().getId()))));
// TODO only actual owner if previousStatus = reserved or inProgress
resumeButton.setEnabled(selected && Status.Suspended.equals(task.getStatus()));
// TODO only initiator if state Created
skipButton.setEnabled(selected && task.isSkipable() &&
(Status.Created.equals(task.getStatus()) && Status.Ready.equals(task.getStatus()) ||
((Status.Reserved.equals(task.getStatus()) || Status.InProgress.equals(task.getStatus()))
&& userId.equals(task.getActualOwner().getId()))));
completeButton.setEnabled(selected && Status.InProgress.equals(task.getStatus())
&& userId.equals(task.getActualOwner().getId()));
failButton.setEnabled(selected && Status.InProgress.equals(task.getStatus())
&& userId.equals(task.getActualOwner().getId()));
}