import {Grid} from "./grid"; import { EditBox } from "./edit"; export class EventDriver{ //eventDriver , eventDealer static toggleSelect(tag:HTMLElement) { tag.classList.toggle('selected'); } static singleSelect(tag:HTMLElement, grid:Grid) { let domEle = grid.tableDOMElement; //배경 바꾸기 let selected = domEle.querySelectorAll('.selected'); let len = selected.length for (let i = 0; i if (event.target.tagName == "DIV") { if (event.ctrlKey || event.metaKey) { grid.toggleClicked(event.clientX, event.clientY, event.target); } else if(event.shiftKey){ //grid 객체 grid.rangeClicked(grid.mousePos.X, grid.mousePos.Y, event.clientX, event.clientY); } else if(!event.altKey){ grid.singleClicked(event.clientX, event.clientY, event.target); } } } } static editStart(tag:HTMLElement, grid:Grid, X:number, Y:number){ if(tag.tagName=="DIV"){ grid.findEditBoxPosition(X, Y); } } } interface IEventhandle{ event: Event grid?: Grid cellEditor?: EditBox rowIdx?: number fieldName?: string } export class EventRecognizer{ handle(handleInterface:IEventhandle):void{ } } export class ClickEventRecognizer extends EventRecognizer{ handle(handleInterface:IEventhandle){ let event = handleInterface.event; let grid = handleInterface.grid; if(event instanceof MouseEvent && grid) EventDriver.onMouseClick(event, grid); } } export class MouseOverEventRecognizer extends EventRecognizer{ handle(handleInterface:IEventhandle) { let event = handleInterface.event let grid = handleInterface.grid if (event.target instanceof HTMLElement && grid) { EventDriver.onMouseOver(event.target, grid); } } } export class DoubleClickEventRecognizer extends EventRecognizer{ handle(handleInterface:IEventhandle){ let event = handleInterface.event let grid = handleInterface.grid if(grid && event instanceof MouseEvent && event.target instanceof HTMLElement){ EventDriver.editStart(event.target, grid, event.clientX, event.clientY); } } } export class KeyDownEventRecognizer extends EventRecognizer{ handle(handleInterface:IEventhandle){ let event = handleInterface.event; let grid = handleInterface.grid if(grid && event instanceof KeyboardEvent){ grid.keycodeSeparator(event.keyCode); } } }