Search in sources :

Example 1 with ClipChannelPair

use of com.helospark.tactview.core.timeline.ClipChannelPair 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);
}
Also used : Component(com.helospark.lightdi.annotation.Component) UiCommandInterpreterService(com.helospark.tactview.ui.javafx.UiCommandInterpreterService) TimelineUiCacheElement(com.helospark.tactview.ui.javafx.uicomponents.canvasdraw.domain.TimelineUiCacheElement) MouseEvent(javafx.scene.input.MouseEvent) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) ClipDragInformation(com.helospark.tactview.ui.javafx.repository.drag.ClipDragInformation) DragEvent(javafx.scene.input.DragEvent) TimelineClip(com.helospark.tactview.core.timeline.TimelineClip) TransferMode(javafx.scene.input.TransferMode) ArrayList(java.util.ArrayList) Dragboard(javafx.scene.input.Dragboard) CloneRequestMetadata(com.helospark.tactview.core.clone.CloneRequestMetadata) Map(java.util.Map) TimelineChannel(com.helospark.tactview.core.timeline.TimelineChannel) AddExistingClipsCommand(com.helospark.tactview.ui.javafx.commands.impl.AddExistingClipsCommand) StatelessEffect(com.helospark.tactview.core.timeline.StatelessEffect) CurrentlyPressedKeyRepository(com.helospark.tactview.ui.javafx.key.CurrentlyPressedKeyRepository) AddClipsCommand(com.helospark.tactview.ui.javafx.commands.impl.AddClipsCommand) ClipChannelPair(com.helospark.tactview.core.timeline.ClipChannelPair) EffectDragAdder(com.helospark.tactview.ui.javafx.uicomponents.EffectDragAdder) AddExistingClipRequest(com.helospark.tactview.core.timeline.AddExistingClipRequest) DragRepository(com.helospark.tactview.ui.javafx.repository.DragRepository) KeyCode(javafx.scene.input.KeyCode) Logger(org.slf4j.Logger) SelectedNodeRepository(com.helospark.tactview.ui.javafx.repository.SelectedNodeRepository) TimelineDragAndDropHandler(com.helospark.tactview.ui.javafx.uicomponents.TimelineDragAndDropHandler) TimelinePosition(com.helospark.tactview.core.timeline.TimelinePosition) TimelineState(com.helospark.tactview.ui.javafx.uicomponents.TimelineState) Collectors(java.util.stream.Collectors) File(java.io.File) TimelineInterval(com.helospark.tactview.core.timeline.TimelineInterval) TimelineUiCacheType(com.helospark.tactview.ui.javafx.uicomponents.canvasdraw.domain.TimelineUiCacheType) List(java.util.List) LinkClipRepository(com.helospark.tactview.core.timeline.LinkClipRepository) TimelineManagerAccessor(com.helospark.tactview.core.timeline.TimelineManagerAccessor) Entry(java.util.Map.Entry) Optional(java.util.Optional) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) TimelineChannel(com.helospark.tactview.core.timeline.TimelineChannel) AddExistingClipsCommand(com.helospark.tactview.ui.javafx.commands.impl.AddExistingClipsCommand) AddExistingClipRequest(com.helospark.tactview.core.timeline.AddExistingClipRequest) TimelineClip(com.helospark.tactview.core.timeline.TimelineClip) ClipChannelPair(com.helospark.tactview.core.timeline.ClipChannelPair)

Aggregations

Component (com.helospark.lightdi.annotation.Component)1 CloneRequestMetadata (com.helospark.tactview.core.clone.CloneRequestMetadata)1 AddExistingClipRequest (com.helospark.tactview.core.timeline.AddExistingClipRequest)1 ClipChannelPair (com.helospark.tactview.core.timeline.ClipChannelPair)1 LinkClipRepository (com.helospark.tactview.core.timeline.LinkClipRepository)1 StatelessEffect (com.helospark.tactview.core.timeline.StatelessEffect)1 TimelineChannel (com.helospark.tactview.core.timeline.TimelineChannel)1 TimelineClip (com.helospark.tactview.core.timeline.TimelineClip)1 TimelineInterval (com.helospark.tactview.core.timeline.TimelineInterval)1 TimelineManagerAccessor (com.helospark.tactview.core.timeline.TimelineManagerAccessor)1 TimelinePosition (com.helospark.tactview.core.timeline.TimelinePosition)1 UiCommandInterpreterService (com.helospark.tactview.ui.javafx.UiCommandInterpreterService)1 AddClipsCommand (com.helospark.tactview.ui.javafx.commands.impl.AddClipsCommand)1 AddExistingClipsCommand (com.helospark.tactview.ui.javafx.commands.impl.AddExistingClipsCommand)1 CurrentlyPressedKeyRepository (com.helospark.tactview.ui.javafx.key.CurrentlyPressedKeyRepository)1 DragRepository (com.helospark.tactview.ui.javafx.repository.DragRepository)1 SelectedNodeRepository (com.helospark.tactview.ui.javafx.repository.SelectedNodeRepository)1 ClipDragInformation (com.helospark.tactview.ui.javafx.repository.drag.ClipDragInformation)1 EffectDragAdder (com.helospark.tactview.ui.javafx.uicomponents.EffectDragAdder)1 TimelineDragAndDropHandler (com.helospark.tactview.ui.javafx.uicomponents.TimelineDragAndDropHandler)1