46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
/**
|
|
* Base command interface for the command pattern implementation
|
|
* All undoable operations in KGSP should extend this class
|
|
*/
|
|
export abstract class KGCommand {
|
|
/**
|
|
* Execute the command (perform the operation)
|
|
*/
|
|
abstract execute(): void;
|
|
|
|
/**
|
|
* Undo the command (reverse the operation)
|
|
*/
|
|
abstract undo(): void;
|
|
|
|
/**
|
|
* Get a human-readable description of what the command does
|
|
* Used for UI feedback and debugging
|
|
*/
|
|
abstract getDescription(): string;
|
|
|
|
/**
|
|
* Check if this command can be merged with another command
|
|
* Used for continuous operations like dragging or resizing
|
|
* @param other The other command to potentially merge with
|
|
*/
|
|
canMergeWith(other: KGCommand): boolean {
|
|
return false; // Default: commands cannot be merged
|
|
}
|
|
|
|
/**
|
|
* Merge this command with another command
|
|
* Only called if canMergeWith returns true
|
|
* @param other The other command to merge with
|
|
* @returns A new merged command, or null if merge fails
|
|
*/
|
|
mergeWith(other: KGCommand): KGCommand | null {
|
|
return null; // Default: no merging implemented
|
|
}
|
|
|
|
/**
|
|
* Get the timestamp when this command was created
|
|
* Used for command history management
|
|
*/
|
|
public readonly timestamp: number = Date.now();
|
|
} |