/** * Copyright (c) 2009-2011, The HATS Consortium. All rights reserved. * This file is licensed under the terms of the Modified BSD License. */ package org.absmodels.abs.plugin.debug.scheduling; import java.util.List; import abs.backend.java.scheduling.ScheduleAction; import abs.backend.java.scheduling.ScheduleOptions; import abs.backend.java.scheduling.TaskScheduler; import abs.backend.java.scheduling.SimpleTaskScheduler.TaskInfo; /** * This scheduler does the given number of steps on the current base scheduler. After the given steps, * the current scheduler is switched to the {@link GUIScheduler}. * * @author mweber * */ public class NStepScheduler implements TotalScheduler{ private final SchedulingStrategy schedulingStrategy; private int steps = 0; public NStepScheduler(SchedulingStrategy schedulingStrategy, int n){ this.schedulingStrategy = schedulingStrategy; steps = n; } @Override public ScheduleAction choose(ScheduleOptions options) { if(steps>0){ steps--; return this.schedulingStrategy.baseScheduler.choose(options); } else { return this.schedulingStrategy.awaitGUIAction(options); } } @Override public TaskInfo schedule(TaskScheduler scheduler, List<TaskInfo> scheduableTasks) { return this.schedulingStrategy.baseScheduler.schedule(scheduler, scheduableTasks); } @Override public void reset() { } }