diff --git a/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/SPIMPipelineProgressScreenshots.java b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/SPIMPipelineProgressScreenshots.java
new file mode 100644
index 0000000000000000000000000000000000000000..e4769c61ccab054ddf0145b4885c040358802787
--- /dev/null
+++ b/haas-spim-benchmark/src/main/java/cz/it4i/fiji/haas_spim_benchmark/ui/SPIMPipelineProgressScreenshots.java
@@ -0,0 +1,128 @@
+package cz.it4i.fiji.haas_spim_benchmark.ui;
+
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+import cz.it4i.fiji.haas_java_client.JobState;
+import cz.it4i.fiji.haas_spim_benchmark.core.SPIMComputationAccessor;
+import cz.it4i.fiji.haas_spim_benchmark.core.Task;
+import cz.it4i.fiji.haas_spim_benchmark.core.TaskComputation;
+
+public class SPIMPipelineProgressScreenshots {
+	public static List<Task> getEmptyTasks1() {
+
+		return Arrays.asList(new FakeTask("define_xml_czi", JobState.Unknown),
+				new FakeTask("hdf5_xml", JobState.Unknown),
+				new FakeTask("resave_hdf5", JobState.Unknown, JobState.Unknown, JobState.Unknown, JobState.Unknown,
+						JobState.Unknown, JobState.Unknown, JobState.Unknown, JobState.Unknown, JobState.Unknown,
+						JobState.Unknown),
+				new FakeTask("registration", JobState.Unknown, JobState.Unknown, JobState.Unknown, JobState.Unknown,
+						JobState.Unknown, JobState.Unknown, JobState.Unknown, JobState.Unknown, JobState.Unknown,
+						JobState.Unknown),
+				new FakeTask("xml_merge", JobState.Unknown), new FakeTask("timelapse", JobState.Unknown),
+				new FakeTask("fusion", JobState.Unknown, JobState.Unknown, JobState.Unknown, JobState.Unknown,
+						JobState.Unknown, JobState.Unknown, JobState.Unknown, JobState.Unknown, JobState.Unknown,
+						JobState.Unknown),
+				new FakeTask("define_output", JobState.Unknown), new FakeTask("hdf5_xml_output", JobState.Unknown),
+				new FakeTask("resave_hdf5_output", JobState.Unknown), new FakeTask("done", JobState.Unknown));
+	}
+
+	public static List<Task> getEmptyTasks2() {
+
+		return Arrays.asList(new FakeTask("define_xml_czi", JobState.Finished),
+				new FakeTask("hdf5_xml", JobState.Finished),
+				new FakeTask("resave_hdf5", JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished),
+				new FakeTask("registration", JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished),
+				new FakeTask("xml_merge", JobState.Finished), new FakeTask("timelapse", JobState.Finished),
+				new FakeTask("fusion", JobState.Running, JobState.Running, JobState.Running, JobState.Running,
+						JobState.Running, JobState.Queued, JobState.Queued, JobState.Queued, JobState.Queued,
+						JobState.Queued),
+				new FakeTask("define_output", JobState.Unknown), new FakeTask("hdf5_xml_output", JobState.Unknown),
+				new FakeTask("resave_hdf5_output", JobState.Unknown), new FakeTask("done", JobState.Unknown));
+	}
+
+	public static List<Task> getEmptyTasks3() {
+
+		return Arrays.asList(new FakeTask("define_xml_czi", JobState.Finished),
+				new FakeTask("hdf5_xml", JobState.Finished),
+				new FakeTask("resave_hdf5", JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished),
+				new FakeTask("registration", JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished),
+				new FakeTask("xml_merge", JobState.Finished), new FakeTask("timelapse", JobState.Finished),
+				new FakeTask("fusion", JobState.Finished, JobState.Finished, JobState.Failed, JobState.Finished,
+						JobState.Running, JobState.Queued, JobState.Queued, JobState.Queued, JobState.Queued,
+						JobState.Queued),
+				new FakeTask("define_output", JobState.Unknown), new FakeTask("hdf5_xml_output", JobState.Unknown),
+				new FakeTask("resave_hdf5_output", JobState.Unknown), new FakeTask("done", JobState.Unknown));
+	}
+
+	public static List<Task> getEmptyTasks4() {
+
+		return Arrays.asList(new FakeTask("define_xml_czi", JobState.Finished),
+				new FakeTask("hdf5_xml", JobState.Finished),
+				new FakeTask("resave_hdf5", JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished),
+				new FakeTask("registration", JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished),
+				new FakeTask("xml_merge", JobState.Finished), new FakeTask("timelapse", JobState.Finished),
+				new FakeTask("fusion", JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished, JobState.Finished,
+						JobState.Finished),
+				new FakeTask("define_output", JobState.Finished), new FakeTask("hdf5_xml_output", JobState.Finished),
+				new FakeTask("resave_hdf5_output", JobState.Finished), new FakeTask("done", JobState.Finished));
+	}
+	
+	private static class FakeTask extends Task {
+
+		private List<TaskComputation> tasks;
+
+		public FakeTask(String desc, JobState... states) {
+			super(null, desc, 0);
+			tasks = new LinkedList<TaskComputation>();
+			int i = 1;
+			for (JobState state : states) {
+				tasks.add(new FakeTaskComputation(null, desc, i++, state));
+			}
+		}
+
+		@Override
+		public void update() {
+		}
+
+		@Override
+		public List<TaskComputation> getComputations() {
+			return tasks;
+		}
+	}
+
+	private static class FakeTaskComputation extends TaskComputation {
+
+		private JobState state;
+
+		public FakeTaskComputation(SPIMComputationAccessor computationAccessor, String taskDescription, int timepoint,
+				JobState state) {
+			super(computationAccessor, taskDescription, timepoint);
+			this.state = state;
+		}
+
+		@Override
+		public JobState getState() {
+			return state;
+		}
+
+		@Override
+		public void update() {
+		}
+	}
+
+}