UNPKG

@eclipse-glsp/client

Version:

A sprotty-based client for GLSP

156 lines 8.1 kB
/******************************************************************************** * 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