summaryrefslogtreecommitdiff
path: root/sources/simulator/VSSimulator.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/simulator/VSSimulator.java')
-rw-r--r--sources/simulator/VSSimulator.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/sources/simulator/VSSimulator.java b/sources/simulator/VSSimulator.java
index ac7588a..ea552f6 100644
--- a/sources/simulator/VSSimulator.java
+++ b/sources/simulator/VSSimulator.java
@@ -323,6 +323,26 @@ public class VSSimulator extends JPanel implements VSSerializable {
fireTableDataChanged();
}
+ /**
+ * Copies the tasks at a specified rows.
+ *
+ * @param rows the rows
+ */
+ private void copyTasksAtRows(int rows[]) {
+ ArrayList<VSTask> copiedTasks = new ArrayList<VSTask>();
+
+ for (int row : rows)
+ /* Use the copy constructor */
+ copiedTasks.add(new VSTask(tasks.get(row)));
+
+ for (VSTask task : copiedTasks) {
+ taskManager.addTask(task, VSTaskManager.PROGRAMMED);
+ addTask(task);
+ }
+
+ fireTableDataChanged();
+ }
+
/* (non-Javadoc)
* @see java.awt.event.MouseListener#mouseClicked(
* java.awt.event.MouseEvent)
@@ -337,9 +357,14 @@ public class VSSimulator extends JPanel implements VSSerializable {
public void actionPerformed(ActionEvent ae) {
String command = ae.getActionCommand();
int rows[] = source.getSelectedRows();
+
if (command.equals(prefs.getString("lang.remove"))) {
for (int i = rows.length - 1; i >= 0; --i)
removeTaskAtRow(rows[i]);
+
+ } else if (command.equals(
+ prefs.getString("lang.copy"))) {
+ copyTasksAtRows(rows);
}
}
};
@@ -349,6 +374,10 @@ public class VSSimulator extends JPanel implements VSSerializable {
item.addActionListener(actionListener);
popup.add(item);
+ item = new JMenuItem(prefs.getString("lang.copy"));
+ item.addActionListener(actionListener);
+ popup.add(item);
+
popup.show(me.getComponent(), me.getX(), me.getY());
}
}