@eclipse-glsp/client
Version:
A sprotty-based client for GLSP
156 lines • 8.1 kB
TypeScript
/********************************************************************************
* Copyright (c) 2024 Axon Ivy AG and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
import { Dimension, GModelElement, ISnapper, KeyboardModifier, MousePositionTracker, Movement, Point, Vector } from '@eclipse-glsp/sprotty';
import { FeedbackEmitter } from '../../../base/feedback/feedback-emitter';
import { ResizeHandleLocation } from '../../change-bounds/model';
import { IMovementRestrictor } from '../../change-bounds/movement-restrictor';
import { IGridManager } from '../../grid/grid-manager';
import { IHelperLineManager } from '../../helper-lines/helper-line-manager';
import { ChangeBoundsTracker, TrackedElementMove, TrackedElementResize, TrackedMove, TrackedResize } from './change-bounds-tracker';
export declare const CSS_RESIZE_MODE = "resize-mode";
export declare const CSS_RESTRICTED_RESIZE = "resize-not-allowed";
export declare const CSS_ACTIVE_HANDLE = "active";
export interface IChangeBoundsManager {
/**
* Unsnap the modifier used for changing bounds.
* @returns The unsnapped keyboard modifier, or undefined if no modifier was snapped.
*/
unsnapModifier(): KeyboardModifier | undefined;
/**
* Determine whether to use position snap for changing bounds.
* @param arg - The event argument.
* @returns True if position snap should be used, false otherwise.
*/
usePositionSnap(arg: MouseEvent | KeyboardEvent | any): boolean;
/**
* Snap the position of an element.
* @param element - The element to snap.
* @param position - The position to snap.
* @returns The snapped position.
*/
snapPosition(element: GModelElement, position: Point): Point;
/**
* Check if an element is valid for changing bounds.
* @param element - The element to check.
* @returns True if the element is valid, false otherwise.
*/
isValid(element: GModelElement): boolean;
/**
* Check if an element has a valid position for changing bounds.
* @param element - The element to check.
* @param position - The position to check.
* @returns True if the element has a valid position, false otherwise.
*/
hasValidPosition(element: GModelElement, position?: Point): boolean;
/**
* Check if an element has a valid size for changing bounds.
* @param element - The element to check.
* @param size - The size to check.
* @returns True if the element has a valid size, false otherwise.
*/
hasValidSize(element: GModelElement, size?: Dimension): boolean;
/**
* Get the minimum size of an element for changing bounds.
* @param element - The element to get the minimum size for.
* @returns The minimum size of the element.
*/
getMinimumSize(element: GModelElement): Dimension;
/**
* Determine whether to use movement restriction for changing bounds.
* @param arg - The event argument.
* @returns True if movement restriction should be used, false otherwise.
*/
useMovementRestriction(arg: MouseEvent | KeyboardEvent | any): boolean;
/**
* Restrict the movement of an element.
* @param element - The element to restrict movement for.
* @param movement - The movement to restrict.
* @returns The restricted movement.
*/
restrictMovement(element: GModelElement, movement: Movement): Movement;
/**
* Add move feedback for changing bounds.
* @param feedback - The feedback emitter.
* @param trackedMove - The tracked move.
* @param ctx - The context element. (optional)
* @param event - The mouse event. (optional)
* @returns The feedback emitter.
*/
addMoveFeedback(feedback: FeedbackEmitter, trackedMove: TrackedMove, ctx?: GModelElement, event?: MouseEvent): FeedbackEmitter;
/**
* Add resize feedback for changing bounds.
* @param feedback - The feedback emitter.
* @param resize - The tracked resize.
* @param ctx - The context element. (optional)
* @param event - The mouse event. (optional)
* @returns The feedback emitter.
*/
addResizeFeedback(feedback: FeedbackEmitter, resize: TrackedResize, ctx?: GModelElement, event?: MouseEvent): FeedbackEmitter;
/**
* Add move restriction feedback for changing bounds.
* @param feedback - The feedback emitter.
* @param change - The tracked element resize or move.
* @param ctx - The context element. (optional)
* @param event - The mouse event. (optional)
* @returns The feedback emitter.
*/
addMoveRestrictionFeedback(feedback: FeedbackEmitter, change: TrackedElementResize | TrackedElementMove, ctx?: GModelElement, event?: MouseEvent): FeedbackEmitter;
/**
* Get the default resize locations for changing bounds.
* @returns The default resize handle locations.
*/
defaultResizeLocations(): ResizeHandleLocation[];
/**
* Determine whether to use symmetric resize for changing bounds.
* @param arg - The event argument.
* @returns True if symmetric resize should be used, false otherwise.
*/
useSymmetricResize(arg: MouseEvent | KeyboardEvent | any): boolean;
/**
* Create a tracker for changing bounds.
* @returns The change bounds tracker.
*/
createTracker(): ChangeBoundsTracker;
}
/**
* The default {@link IChangeBoundsManager} implementation. It is responsible for managing
* the change of bounds for {@link GModelElement}s.
*/
export declare class ChangeBoundsManager implements IChangeBoundsManager {
readonly positionTracker: MousePositionTracker;
readonly movementRestrictor?: IMovementRestrictor | undefined;
readonly snapper?: ISnapper | undefined;
readonly helperLineManager?: IHelperLineManager | undefined;
protected gridManager?: IGridManager | undefined;
constructor(positionTracker: MousePositionTracker, movementRestrictor?: IMovementRestrictor | undefined, snapper?: ISnapper | undefined, helperLineManager?: IHelperLineManager | undefined, gridManager?: IGridManager | undefined);
unsnapModifier(): KeyboardModifier | undefined;
usePositionSnap(arg: MouseEvent | KeyboardEvent | any): boolean;
snapPosition(element: GModelElement, position: Point): Point;
isValid(element: GModelElement): boolean;
hasValidPosition(element: GModelElement, position?: Point): boolean;
hasValidSize(element: GModelElement, size?: Dimension): boolean;
getMinimumSize(element: GModelElement): Dimension;
useMovementRestriction(arg: MouseEvent | KeyboardEvent | any): boolean;
restrictMovement(element: GModelElement, movement: Movement): Movement;
protected getMinimumMovement(element: GModelElement, movement: Movement): Vector | undefined;
addMoveFeedback(feedback: FeedbackEmitter, trackedMove: TrackedMove, ctx?: GModelElement, event?: MouseEvent): FeedbackEmitter;
addResizeFeedback(feedback: FeedbackEmitter, resize: TrackedResize, ctx?: GModelElement, event?: MouseEvent): FeedbackEmitter;
addMoveRestrictionFeedback(feedback: FeedbackEmitter, change: TrackedElementResize | TrackedElementMove, ctx?: GModelElement, event?: MouseEvent): FeedbackEmitter;
defaultResizeLocations(): ResizeHandleLocation[];
useSymmetricResize(arg: MouseEvent | KeyboardEvent | any): boolean;
createTracker(): ChangeBoundsTracker;
}
//# sourceMappingURL=change-bounds-manager.d.ts.map