diff options
| author | Paul Buetow <paul@buetow.org> | 2008-05-19 09:00:46 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-05-19 09:00:46 +0000 |
| commit | 6dec65db5dceaf8636a98f5bd51c31e20922ecdd (patch) | |
| tree | f96c1ea8e35afbea9475e66aaaaa4d7c442f845a /sources/simulator/VSSimulation.java | |
| parent | 500b15abeb493bc40b77b964aba1eb0186d79b9e (diff) | |
TaskManager done for today.
Diffstat (limited to 'sources/simulator/VSSimulation.java')
| -rw-r--r-- | sources/simulator/VSSimulation.java | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/sources/simulator/VSSimulation.java b/sources/simulator/VSSimulation.java index 458d7be..3cf42e0 100644 --- a/sources/simulator/VSSimulation.java +++ b/sources/simulator/VSSimulation.java @@ -674,20 +674,26 @@ public class VSSimulation extends VSFrame implements ActionListener { } private boolean takeover(long time) { - VSProcess process = getSelectedProcess(); - int index = comboBox.getSelectedIndex(); + VSProcess selectedProcess = getSelectedProcess(); + int index = comboBox.getSelectedIndex(); VSCreateTask createTask = createTasks.get(index); if (createTask == null) return false; - VSTask task = createTask.createTask(process, time, localTasks); - taskManager.addTask(task, VSTaskManager.PROGRAMMED); + ArrayList<VSProcess> processes = getConcernedProcesses(localTasks); - if (localTasks) - taskManagerLocalModel.addTask(task); - else - taskManagerGlobalModel.addTask(task); + for (VSProcess process : processes) { + VSTask task = createTask.createTask(process, time, localTasks); + taskManager.addTask(task, VSTaskManager.PROGRAMMED); + + if (process.equals(selectedProcess)) { + if (localTasks) + taskManagerLocalModel.addTask(task); + else + taskManagerGlobalModel.addTask(task); + } + } return true; } @@ -881,6 +887,20 @@ public class VSSimulation extends VSFrame implements ActionListener { return simulationPanel.getProcess(processNum); } + private ArrayList<VSProcess> getConcernedProcesses(boolean localTasks) { + int processNum = localTasks + ? localPIDComboBox.getSelectedIndex() + : globalPIDComboBox.getSelectedIndex(); + + if (processNum == simulationPanel.getNumProcesses()) + return simulationPanel.getProcessesArray(); + + ArrayList<VSProcess> arr = new ArrayList<VSProcess>(); + arr.add(simulationPanel.getProcess(processNum)); + + return arr; + } + public void updateTaskManagerTable() { VSProcess process = getSelectedProcess(); boolean allProcesses = process == null; |
