import { EditorToolType } from "../canvas/PeekCanvasEditorToolType.web"
import {
    CanvasInputPos,
    InputDelegateConstructorViewArgs
} from "./PeekCanvasInputDelegate.web"
import { InputDelegateConstructorEditArgs } from "./PeekCanvasInputDelegateUtil.web"
import { DispPolyline, DispPolylineT } from "../canvas-shapes/DispPolyline"
import { PeekCanvasInputEditMakeDispPolyDelegate } from "./PeekCanvasInputEditMakePolyDelegate.web"
import { ModelCoordSet } from "@peek/peek_plugin_diagram/_private/tuples/ModelCoordSet"

/**
 * This input delegate handles :
 * Zooming (touch and mouse)
 * Panning (touch and mouse)
 * Selecting at a point (touch and mouse)
 *
 */
export class PeekCanvasInputMakeDispPolylineEdgeDelegate
    extends PeekCanvasInputEditMakeDispPolyDelegate {
    static readonly TOOL_NAME = EditorToolType.EDIT_MAKE_DISP_POLYLINE_EDGE
    
    constructor(
        viewArgs: InputDelegateConstructorViewArgs,
        editArgs: InputDelegateConstructorEditArgs
    ) {
        super(viewArgs, editArgs,
            PeekCanvasInputMakeDispPolylineEdgeDelegate.TOOL_NAME)
        
        this._reset()
    }
    
    protected createDisp(inputPos: CanvasInputPos) {
        super.createDisp(inputPos)
        
        const coordSet = <ModelCoordSet>this.viewArgs.config.coordSet
        const disp = <DispPolylineT>this._creating
        DispPolyline.setTargetEdgeTemplateName(disp,
            coordSet.editDefaultEdgeCoordSetId,
            coordSet.editDefaultEdgeGroupName)
    }
    
}
