From 6dec65db5dceaf8636a98f5bd51c31e20922ecdd Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 19 May 2008 09:00:46 +0000 Subject: TaskManager done for today. --- sources/simulator/VSSimulation.java | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) (limited to 'sources/simulator/VSSimulation.java') 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 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 getConcernedProcesses(boolean localTasks) { + int processNum = localTasks + ? localPIDComboBox.getSelectedIndex() + : globalPIDComboBox.getSelectedIndex(); + + if (processNum == simulationPanel.getNumProcesses()) + return simulationPanel.getProcessesArray(); + + ArrayList arr = new ArrayList(); + arr.add(simulationPanel.getProcess(processNum)); + + return arr; + } + public void updateTaskManagerTable() { VSProcess process = getSelectedProcess(); boolean allProcesses = process == null; -- cgit v1.2.3