use of com.helospark.tactview.ui.javafx.commands.impl.AddExistingClipsCommand in project tactview by helospark.
the class TimelineCanvasOnDragOverHandler method setNewClipDragInformationAfterCopy.
private void setNewClipDragInformationAfterCopy(String channelId, AddExistingClipsCommand commands, List<TimelineClip> clips, Map<TimelineClip, TimelineClip> originalToNewClipMap) {
TimelineClip clip = clips.get(0);
if (commands.isSuccess()) {
dragRepository.currentlyDraggedClip().setShouldCopyClip(false);
List<String> elementIds = clips.stream().map(a -> a.getId()).collect(Collectors.toList());
ClipDragInformation clipDragInformation = new ClipDragInformation(clip.getGlobalInterval().getStartPosition(), elementIds, channelId, dragRepository.getClipDragInformation().getAnchorPointX(), clip.getGlobalInterval());
relinkClips(originalToNewClipMap);
dragRepository.onClipDragged(clipDragInformation);
}
}
use of com.helospark.tactview.ui.javafx.commands.impl.AddExistingClipsCommand in project tactview by helospark.
the class CopyPasteRepository method pasteClip.
private void pasteClip() {
TimelinePosition positionToInsertClipsTo = timelineManager.findEndPosition();
ClipCopyPasteDomain clipCopyPasteDomain = (ClipCopyPasteDomain) clipboardContent;
List<AddExistingClipsCommand> commands = new ArrayList<>();
for (var element : clipCopyPasteDomain.copiedData) {
AddExistingClipRequest request = AddExistingClipRequest.builder().withChannel(element.timelineChannel).withClipToAdd(// multiple ctrl+v
element.clipboardContent.cloneClip(CloneRequestMetadata.ofDefault())).withPosition(Optional.of(positionToInsertClipsTo.add(element.relativeOffset))).build();
AddExistingClipsCommand addClipCommand = new AddExistingClipsCommand(request, timelineManager);
commands.add(addClipCommand);
}
commandInterpreter.sendWithResult(new CompositeCommand(commands));
}
use of com.helospark.tactview.ui.javafx.commands.impl.AddExistingClipsCommand in project tactview by helospark.
the class TimelineCanvasOnDragOverHandler method copyCurrentClipOnDrag.
private void copyCurrentClipOnDrag(List<String> clipIds, String channelId, TimelinePosition newX) {
TimelineChannel channel = timelineAccessor.findChannelWithId(channelId).get();
int relativeChannelMove = timelineAccessor.findChannelIndexByChannelId(channelId).get() - timelineAccessor.findChannelIndexForClipId(clipIds.get(0)).get();
List<TimelineClip> clips = new ArrayList<>();
List<TimelineClip> allClipsToCopyOriginal = timelineAccessor.resolveClipIdsWithAllLinkedClip(clipIds);
for (var clip : allClipsToCopyOriginal) {
int currentChannelIndex = timelineAccessor.findChannelIndexForClipId(clip.getId()).get();
int newChannelIndex = currentChannelIndex + relativeChannelMove;
if (newChannelIndex < 0 || newChannelIndex >= timelineAccessor.getChannels().size()) {
LOGGER.debug("Cannot copy clip, becase {} would be in non-existent channel {}", clip.getId(), newChannelIndex);
return;
}
}
Map<TimelineClip, TimelineClip> originalToNewClipMap = new HashMap<>();
List<ClipChannelPair> allClonedClips = allClipsToCopyOriginal.stream().filter(a -> !a.getId().equals(clipIds.get(0))).map(a -> {
TimelineClip newClip = a.cloneClip(CloneRequestMetadata.ofDefault());
int currentChannelIndex = timelineAccessor.findChannelIndexForClipId(a.getId()).get();
int newChannelIndex = currentChannelIndex + relativeChannelMove;
TimelineChannel newChannel = timelineAccessor.findChannelOnIndex(newChannelIndex).get();
originalToNewClipMap.put(a, newClip);
return new ClipChannelPair(newClip, newChannel);
}).collect(Collectors.toList());
TimelineClip clip = timelineAccessor.findClipById(clipIds.get(0)).get();
TimelineClip clonedClip = clip.cloneClip(CloneRequestMetadata.ofDefault());
originalToNewClipMap.put(clip, clonedClip);
AddExistingClipRequest request = AddExistingClipRequest.builder().withChannel(channel).withClipToAdd(clonedClip).withPosition(Optional.of(newX)).withAdditionalClipsToAdd(allClonedClips).build();
AddExistingClipsCommand addClipCommand = new AddExistingClipsCommand(request, timelineAccessor);
clips.add(clonedClip);
commandInterpreter.synchronousSend(addClipCommand);
setNewClipDragInformationAfterCopy(channelId, addClipCommand, clips, originalToNewClipMap);
}
Aggregations