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.IResource;
public class DragNDropResourceCommand implements Command {
private final IProject project;
private final TreeTableRow<IResource> row;
private final int draggedIndex;
private IResource draggedResource;
public DragNDropResourceCommand(IProject project, TreeTableRow<IResource> row, int draggedIndex) {
this.project = project;
this.row = row;
this.draggedIndex = draggedIndex;
}
@Override
public void execute() {
draggedResource = project.getResourceList().remove(draggedIndex);
int dropIndex;
if (row.isEmpty()) {
dropIndex = row.getTreeTableView().getRoot().getChildren().size();
} else {
dropIndex = row.getIndex();
}
project.getResourceList().add(dropIndex, draggedResource);
}
@Override
public void undo() {
project.getResourceList().remove(draggedResource);
project.getResourceList().add(draggedIndex, draggedResource);
}
}