package ru.khasang.cachoeira.commands.project; import javafx.scene.control.TreeTableRow; import ru.khasang.cachoeira.commands.Command; import ru.khasang.cachoeira.model.IProject; import ru.khasang.cachoeira.model.ITask; public class DragNDropTaskCommand implements Command { private final IProject project; private final TreeTableRow<ITask> row; private final int draggedIndex; private ITask draggedTask; public DragNDropTaskCommand(IProject project, TreeTableRow<ITask> row, int draggedIndex) { this.project = project; this.row = row; this.draggedIndex = draggedIndex; } @Override public void execute() { draggedTask = project.getTaskList().remove(draggedIndex); int dropIndex; if (row.isEmpty()) { dropIndex = row.getTreeTableView().getRoot().getChildren().size(); } else { dropIndex = row.getIndex(); } project.getTaskList().add(dropIndex, draggedTask); } @Override public void undo() { project.getTaskList().remove(draggedTask); project.getTaskList().add(draggedIndex, draggedTask); } }