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 +++++++++++++++++++++++++------- sources/simulator/VSSimulationPanel.java | 9 ++++++++ 2 files changed, 37 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 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; diff --git a/sources/simulator/VSSimulationPanel.java b/sources/simulator/VSSimulationPanel.java index 2699f64..49c7bbf 100644 --- a/sources/simulator/VSSimulationPanel.java +++ b/sources/simulator/VSSimulationPanel.java @@ -739,4 +739,13 @@ public class VSSimulationPanel extends JPanel implements Runnable, MouseMotionLi public void ancestorResized(HierarchyEvent e) { recalcOnWindowChanged(); } + + public ArrayList getProcessesArray() { + ArrayList arr = new ArrayList(); + + for (VSProcess process : processes) + arr.add(process); + + return arr; + } } -- cgit v1.2.3