summaryrefslogtreecommitdiff
path: root/sources/simulator/VSSimulation.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-05-19 09:00:46 +0000
committerPaul Buetow <paul@buetow.org>2008-05-19 09:00:46 +0000
commit6dec65db5dceaf8636a98f5bd51c31e20922ecdd (patch)
treef96c1ea8e35afbea9475e66aaaaa4d7c442f845a /sources/simulator/VSSimulation.java
parent500b15abeb493bc40b77b964aba1eb0186d79b9e (diff)
TaskManager done for today.
Diffstat (limited to 'sources/simulator/VSSimulation.java')
-rw-r--r--sources/simulator/VSSimulation.java36
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;