use of com.helospark.tactview.ui.javafx.commands.impl.CompositeCommand in project tactview by helospark.
the class PrimitiveEffectLine method removeAllAndSetKeyframe.
@Override
public void removeAllAndSetKeyframe(TimelinePosition currentPosition) {
RemoveAllKeyframeCommand removeAllKeyFrameCommand = new RemoveAllKeyframeCommand(effectParametersRepository, descriptorId);
KeyframeAddedRequest keyframeRequest = KeyframeAddedRequest.builder().withDescriptorId(descriptorId).withGlobalTimelinePosition(currentPosition).withValue(currentValueSupplier.get()).build();
AddKeyframeForPropertyCommand addKeyframeCommand = new AddKeyframeForPropertyCommand(effectParametersRepository, keyframeRequest);
commandInterpreter.sendWithResult(new CompositeCommand(removeAllKeyFrameCommand, addKeyframeCommand));
}
use of com.helospark.tactview.ui.javafx.commands.impl.CompositeCommand 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.CompositeCommand in project tactview by helospark.
the class GeneralCanvasOperationStrategy method onMouseDraggedEvent.
public void onMouseDraggedEvent(GeneralCanvasOperationsMouseRequest input) {
if (input.mouseEvent.getButton().equals(MouseButton.MIDDLE)) {
Point relativeMoveNormalized = new Point(input.canvasRelativeX, input.canvasRelativeY).subtract(dragStartPointAbsoluteCanvasPos);
if (Math.abs(relativeMoveNormalized.distanceFrom(0.0, 0.0)) >= 1.0) {
canvasStateHolder.increaseTranslateX(relativeMoveNormalized.x);
canvasStateHolder.increaseTranslateY(relativeMoveNormalized.y);
messagingService.sendMessage(new DisplayUpdateRequestMessage(false));
}
dragStartPointAbsoluteCanvasPos = new Point(input.canvasRelativeX, input.canvasRelativeY);
} else if (dragData != null) {
Point relativeMoveNormalized = new Point(input.x, input.y).subtract(dragStartPoint);
Point relativeScale = relativeMoveNormalized.multiply(projectRepository.getPreviewWidth() / dragData.boundingBox.getWidth(), projectRepository.getPreviewHeight() / dragData.boundingBox.getHeight());
Point relativeMove = relativeMoveNormalized.multiply(projectRepository.getPreviewWidth(), projectRepository.getPreviewHeight()).scalarDivide(projectRepository.getScaleFactor());
Point newPosition = dragData.originalClipPosition.add(relativeMove);
if (dragData.dragPointType.equals(DragPointType.CENTER)) {
commandInterpreterService.sendWithResult(createKeyframeCommandWithValue(newPosition, "translate", dragData.draggedClip));
} else if (dragData.dragPointType.equals(DragPointType.BOTTOM_RIGHT)) {
String scaleEffectId = getOrAddScaleEffect(dragData.draggedClip);
double newWidth = (1.0 + relativeScale.x) * dragData.originalScale.x;
double newHeight = (1.0 + relativeScale.y) * dragData.originalScale.y;
AddKeyframeForPropertyCommand widthScaleCommand = createKeyframeCommandWithValue(newWidth, "width scale", scaleEffectId);
AddKeyframeForPropertyCommand heigthScaleCommand = createKeyframeCommandWithValue(newHeight, "height scale", scaleEffectId);
commandInterpreterService.sendWithResult(new CompositeCommand(widthScaleCommand, heigthScaleCommand));
} else if (dragData.dragPointType.equals(DragPointType.BOTTOM_LEFT)) {
String scaleEffectId = getOrAddScaleEffect(dragData.draggedClip);
double newWidth = (1.0 - relativeScale.x) * dragData.originalScale.x;
double newHeight = (1.0 + relativeScale.y) * dragData.originalScale.y;
AddKeyframeForPropertyCommand xMoveCommand = createKeyframeCommandWithValue(new Point(newPosition.x, dragData.originalClipPosition.y), "translate", dragData.draggedClip);
AddKeyframeForPropertyCommand widthScaleCommand = createKeyframeCommandWithValue(newWidth, "width scale", scaleEffectId);
AddKeyframeForPropertyCommand heigthScaleCommand = createKeyframeCommandWithValue(newHeight, "height scale", scaleEffectId);
commandInterpreterService.sendWithResult(new CompositeCommand(xMoveCommand, widthScaleCommand, heigthScaleCommand));
} else if (dragData.dragPointType.equals(DragPointType.TOP_RIGHT)) {
String scaleEffectId = getOrAddScaleEffect(dragData.draggedClip);
double newWidth = (1.0 + relativeScale.x) * dragData.originalScale.x;
double newHeight = (1.0 - relativeScale.y) * dragData.originalScale.y;
AddKeyframeForPropertyCommand xMoveCommand = createKeyframeCommandWithValue(new Point(dragData.originalClipPosition.x, newPosition.y), "translate", dragData.draggedClip);
AddKeyframeForPropertyCommand widthScaleCommand = createKeyframeCommandWithValue(newWidth, "width scale", scaleEffectId);
AddKeyframeForPropertyCommand heigthScaleCommand = createKeyframeCommandWithValue(newHeight, "height scale", scaleEffectId);
commandInterpreterService.sendWithResult(new CompositeCommand(xMoveCommand, widthScaleCommand, heigthScaleCommand));
} else if (dragData.dragPointType.equals(DragPointType.TOP_LEFT)) {
String scaleEffectId = getOrAddScaleEffect(dragData.draggedClip);
double newWidth = (1.0 - relativeScale.x) * dragData.originalScale.x;
double newHeight = (1.0 - relativeScale.y) * dragData.originalScale.y;
AddKeyframeForPropertyCommand xMoveCommand = createKeyframeCommandWithValue(newPosition, "translate", dragData.draggedClip);
AddKeyframeForPropertyCommand widthScaleCommand = createKeyframeCommandWithValue(newWidth, "width scale", scaleEffectId);
AddKeyframeForPropertyCommand heigthScaleCommand = createKeyframeCommandWithValue(newHeight, "height scale", scaleEffectId);
commandInterpreterService.sendWithResult(new CompositeCommand(xMoveCommand, widthScaleCommand, heigthScaleCommand));
} else if (dragData.dragPointType.equals(DragPointType.LEFT)) {
String scaleEffectId = getOrAddScaleEffect(dragData.draggedClip);
double newWidth = (1.0 - relativeScale.x) * dragData.originalScale.x;
AddKeyframeForPropertyCommand xMoveCommand = createKeyframeCommandWithValue(new Point(newPosition.x, dragData.originalClipPosition.y), "translate", dragData.draggedClip);
AddKeyframeForPropertyCommand widthScaleCommand = createKeyframeCommandWithValue(newWidth, "width scale", scaleEffectId);
commandInterpreterService.sendWithResult(new CompositeCommand(xMoveCommand, widthScaleCommand));
} else if (dragData.dragPointType.equals(DragPointType.RIGHT)) {
String scaleEffectId = getOrAddScaleEffect(dragData.draggedClip);
double newWidth = (1.0 + relativeScale.x) * dragData.originalScale.x;
AddKeyframeForPropertyCommand widthScaleCommand = createKeyframeCommandWithValue(newWidth, "width scale", scaleEffectId);
commandInterpreterService.sendWithResult(widthScaleCommand);
} else if (dragData.dragPointType.equals(DragPointType.TOP)) {
String scaleEffectId = getOrAddScaleEffect(dragData.draggedClip);
double newHeight = (1.0 - relativeScale.y) * dragData.originalScale.y;
AddKeyframeForPropertyCommand xMoveCommand = createKeyframeCommandWithValue(new Point(dragData.originalClipPosition.x, newPosition.y), "translate", dragData.draggedClip);
AddKeyframeForPropertyCommand heigthScaleCommand = createKeyframeCommandWithValue(newHeight, "height scale", scaleEffectId);
commandInterpreterService.sendWithResult(new CompositeCommand(xMoveCommand, heigthScaleCommand));
} else if (dragData.dragPointType.equals(DragPointType.BOTTOM)) {
String scaleEffectId = getOrAddScaleEffect(dragData.draggedClip);
double newHeight = (1.0 + relativeScale.y) * dragData.originalScale.y;
AddKeyframeForPropertyCommand heigthScaleCommand = createKeyframeCommandWithValue(newHeight, "height scale", scaleEffectId);
commandInterpreterService.sendWithResult(heigthScaleCommand);
}
}
}
use of com.helospark.tactview.ui.javafx.commands.impl.CompositeCommand in project tactview by helospark.
the class StandardClipContextMenuChainItemConfiguration method deleteAllEffectsMenuItem.
@Bean
@Order(102)
public ClipContextMenuChainItem deleteAllEffectsMenuItem(CopyPasteRepository copyPasteRepository, UiCommandInterpreterService commandInterpreter, TimelineManagerAccessor timelineManager) {
return alwaysSupportedContextMenuItem(request -> {
MenuItem deleteEffectsFromClipMenuItem = new MenuItem("Delete all effects");
deleteEffectsFromClipMenuItem.setOnAction(e -> {
List<RemoveEffectCommand> removeEffectsCommand = request.getPrimaryClip().getEffects().stream().map(effect -> new RemoveEffectCommand(timelineManager, effect.getId())).collect(Collectors.toList());
commandInterpreter.sendWithResult(new CompositeCommand(removeEffectsCommand));
});
if (request.getPrimaryClip().getEffects().isEmpty()) {
deleteEffectsFromClipMenuItem.setDisable(true);
}
return deleteEffectsFromClipMenuItem;
});
}
use of com.helospark.tactview.ui.javafx.commands.impl.CompositeCommand in project tactview by helospark.
the class StandardClipContextMenuChainItemConfiguration method scaleToFrameMenuItem.
@Bean
@Order(0)
public ClipContextMenuChainItem scaleToFrameMenuItem(UiCommandInterpreterService commandInterpreter, TimelineManagerAccessor timelineManager, ProjectRepository projectRepository, @Qualifier("scaleEffect") EffectFactory scaleFactory, EffectFactoryChain effectFactoryChain, SelectedNodeRepository selectedNodeRepository) {
return typeSupportingContextMenuItem(VisualTimelineClip.class, request -> {
MenuItem scaleToImageMenuItem = new MenuItem("Scale to frame");
scaleToImageMenuItem.setOnAction(e -> {
List<AddScaleCommand> commands = request.getAllClips().stream().map(a -> a.getId()).map(clipId -> AddScaleCommand.builder().withClipId(clipId).withProjectRepository(projectRepository).withScaleEffectFactory(scaleFactory).withTimelineManager(timelineManager).withEffectFactoryChain(effectFactoryChain).build()).collect(Collectors.toList());
if (commands.size() > 0) {
commandInterpreter.sendWithResult(new CompositeCommand(commands));
}
});
return scaleToImageMenuItem;
});
}
Aggregations