feat:add control context menu

pr675
Hufe921 4 years ago
parent 5f5eed207c
commit 236d28ef18

@ -65,6 +65,7 @@ export class Command {
private static pageScaleMinus: Function
private static pageScaleAdd: Function
private static insertElementList: Function
private static removeControl: Function
constructor(adapt: CommandAdapt) {
Command.mode = adapt.mode.bind(adapt)
@ -123,6 +124,7 @@ export class Command {
Command.pageScaleMinus = adapt.pageScaleMinus.bind(adapt)
Command.pageScaleAdd = adapt.pageScaleAdd.bind(adapt)
Command.insertElementList = adapt.insertElementList.bind(adapt)
Command.removeControl = adapt.removeControl.bind(adapt)
}
// 全局命令
@ -355,4 +357,8 @@ export class Command {
return Command.insertElementList(payload)
}
public executeRemoveControl() {
return Command.removeControl()
}
}

@ -1305,4 +1305,20 @@ export class CommandAdapt {
this.draw.insertElementList(payload)
}
public removeControl() {
const { startIndex, endIndex } = this.range.getRange()
if (startIndex !== endIndex) return
const elementList = this.draw.getElementList()
const element = elementList[startIndex]
if (element.type !== ElementType.CONTROL) return
// 删除控件
const control = this.draw.getControl()
const newIndex = control.removeControl(startIndex)
// 重新渲染
this.range.setRange(newIndex, newIndex)
this.draw.render({
curIndex: newIndex
})
}
}

@ -6,6 +6,7 @@ import { Command } from '../command/Command'
import { Draw } from '../draw/Draw'
import { Position } from '../position/Position'
import { RangeManager } from '../range/RangeManager'
import { controlMenus } from './menus/controlMenus'
import { globalMenus } from './menus/globalMenus'
import { imageMenus } from './menus/imageMenus'
import { tableMenus } from './menus/tableMenus'
@ -38,7 +39,8 @@ export class ContextMenu {
this.contextMenuList = [
...globalMenus,
...tableMenus,
...imageMenus
...imageMenus,
...controlMenus
]
this.contextMenuContainerList = []
this.contextMenuRelationShip = new Map()

@ -0,0 +1,15 @@
import { ElementType } from '../../../dataset/enum/Element'
import { IRegisterContextMenu } from '../../../interface/contextmenu/ContextMenu'
import { Command } from '../../command/Command'
export const controlMenus: IRegisterContextMenu[] = [
{
name: '删除控件',
when: (payload) => {
return !payload.editorHasSelection && payload.startElement?.type === ElementType.CONTROL
},
callback: (command: Command) => {
command.executeRemoveControl()
}
}
]
Loading…
Cancel
Save