/** * 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; /** * Takes a file (path as string like in the module declarations) and a line and does actions on the current * base scheduler until the line is reached. When the line is reached the current scheduler is switched * to the {@link GUIScheduler}. * * @author mweber * */ public class RunToLineScheduler implements TotalScheduler { private final SchedulingStrategy schedulingStrategy; private int lineNumber; private String fileName; public RunToLineScheduler(SchedulingStrategy schedulingStrategy, String fileName, int lineNumber) { this.schedulingStrategy = schedulingStrategy; this.fileName = fileName; this.lineNumber = lineNumber; } @Override public ScheduleAction choose(ScheduleOptions options) { if(schedulingStrategy.steppedTask==null || (schedulingStrategy.steppedTask.getCurrentLine() != lineNumber) || !schedulingStrategy.steppedTask.getCurrentFile().equals(fileName)){ schedulingStrategy.baseScheduler.reset(); return schedulingStrategy.baseScheduler.choose(options); } else { return schedulingStrategy.awaitGUIAction(options); } } @Override public TaskInfo schedule(TaskScheduler scheduler, List<TaskInfo> scheduableTasks) { return schedulingStrategy.baseScheduler.schedule(scheduler, scheduableTasks); } @Override public void reset() { } }