ddei-editor/plugins/core/menus/menu-copy-sheet.ts
2024-04-22 18:28:44 +08:00

93 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {DDeiEnumBusCommandType} from "ddei-framework1";
import {DDeiEditor} from "ddei-framework1";
import {DDeiEditorEnumBusCommandType} from "ddei-framework1";
import {DDeiEditorState} from "ddei-framework1";
import {DDeiSheet} from "ddei-framework1";
import {DDeiMenuBase} from "ddei-framework1";
/**
* 复制页签
*/
class MenuCopySheet extends DDeiMenuBase {
name: string = "ddei-core-menu-copy-sheet"
/**
* 缺省实例
*/
static defaultIns: MenuCopySheet = new MenuCopySheet();
defaultOptions: object = {
'label': '复制',
'icon': '#icon-a-ziyuan488',
'models': ["DDeiSheet"],
'disabled': false
}
static configuraton(options, fullConfig: boolean = false) {
//解析options只使用自己相关的
if (options) {
let newOptions = {}
if (fullConfig) {
if (fullConfig) {
if (options[MenuCopySheet.defaultIns.name]) {
for (let i in options[MenuCopySheet.defaultIns.name]) {
newOptions[i] = options[MenuCopySheet.defaultIns.name][i]
}
}
}
} else {
newOptions = options
}
if (newOptions && Object.keys(newOptions).length !== 0) {
let panels = new MenuCopySheet(newOptions);
return panels;
}
}
return MenuCopySheet;
}
/**
* 执行的方法
*/
action(model: object, evt: Event): void {
if (model.modelType == 'DDeiSheet') {
//将sheet插入文件
let editor = DDeiEditor.ACTIVE_INSTANCE
let file = editor?.files[editor.currentFileIndex];
let ddInstance = model.stage.ddInstance
let sheetJson = model.toJSON()
let newSheet = DDeiSheet.loadFromJSON(sheetJson, { currentDdInstance: ddInstance });
file.sheets.splice(file?.currentSheetIndex + 1, 0, newSheet);
newSheet.name = "页面-" + file.sheets.length
file.changeSheet(file.currentSheetIndex + 1);
let stage = newSheet.stage;
stage.ddInstance = ddInstance;
//刷新页面
ddInstance.stage = stage;
//加载场景渲染器
stage.initRender();
editor.changeState(DDeiEditorState.DESIGNING);
editor.bus.push(DDeiEditorEnumBusCommandType.ClearTemplateUI);
editor.bus.push(DDeiEnumBusCommandType.RefreshShape, null, null);
//记录日志
editor.bus.push(DDeiEnumBusCommandType.AddHistroy)
editor.bus.push(DDeiEditorEnumBusCommandType.RefreshEditorParts, { parts: ["bottommenu"] })
editor.bus?.executeAll();
editor.editorViewer?.changeFileModifyDirty();
}
}
/**
* 判定是否显示的方法
*/
isVisiable(model: object): boolean {
return !this.disabled;
}
}
export default MenuCopySheet;