package org.netbeans.gradle.project.output;
import java.io.IOException;
import java.util.Arrays;
import org.jtrim.cancel.CancellationSource;
import org.netbeans.gradle.model.util.CollectionUtils;
import org.netbeans.gradle.project.tasks.AsyncGradleTask;
import org.netbeans.gradle.project.tasks.GradleTaskDef;
import org.openide.windows.InputOutput;
public final class TaskIOTab implements IOTabDef {
private final InputOutputWrapper io;
private final TaskTabAction[] actions;
public TaskIOTab(InputOutput io, TaskTabAction... actions) {
this.io = new InputOutputWrapper(io);
this.actions = actions.clone();
CollectionUtils.checkNoNullElements(Arrays.asList(this.actions), "actions");
}
public void setLastTask(GradleTaskDef source, AsyncGradleTask lastTask) {
for (TaskTabAction action: actions) {
action.setLastTask(source, lastTask);
}
}
public void taskStarted(CancellationSource cancellation) {
for (TaskTabAction action: actions) {
action.taskStarted(cancellation);
}
}
public void taskCompleted() {
for (TaskTabAction action: actions) {
action.taskCompleted();
}
}
public InputOutputWrapper getIo() {
return io;
}
@Override
public boolean isDestroyed() {
return io.getIo().isClosed();
}
@Override
public void close() throws IOException {
getIo().closeStreamsForNow();
}
}