UNPKG

devexpress-richedit

Version:

DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.

38 lines (37 loc) 2.75 kB
import { LayoutPosition } from '../../layout/layout-position'; import { LayoutColumn } from '../../layout/main-structures/layout-column'; import { ControlOptions } from '../../model/options/control'; import { Table } from '../../model/tables/main-structures/table'; import { TableConditionalFormattingCalculator } from '../../model/tables/table-utils'; import { UnitConverter } from '@devexpress/utils/lib/class/unit-converter'; import { SelectionHistoryItem } from '../../model/history/selection/selection-history-item'; import { CommandBase } from '../command-base'; import { SimpleCommandState } from '../command-states'; import { ApplyTableStyleHistoryItem } from '../../../common/model/history/items/apply-style-history-items'; import { TableStyle } from '../../../common/model/tables/styles/table-style'; import { StylesManager } from '../../../common/model/styles-manager'; export class InsertTableCoreCommand extends CommandBase { getState() { return new SimpleCommandState(this.isEnabled()); } isEnabled() { return super.isEnabled() && ControlOptions.isEnabled(this.control.modelManager.richOptions.control.tables); } executeCore(_state, options) { const parameter = options.param; const model = this.control.modelManager.model; const gridTableStyle = model.getTableStyleByName(TableStyle.GRID_STYLENAME) || model.stylesManager.addTableStyle(StylesManager.getPresetTableStyleByName(TableStyle.GRID_STYLENAME)?.clone()); const subDocument = this.selection.activeSubDocument; const position = this.selection.intervals[0].start; const lp = LayoutPosition.ensure(this.control.layoutFormatterManager, subDocument, position); let currentTable = Table.getTableByPosition(subDocument.tables, position, true); let availableWidth = currentTable ? lp.row.tableCellInfo.avaliableContentWidth : LayoutColumn.findSectionColumnWithMinimumWidth(lp.pageArea.columns); this.history.beginTransaction(); const table = this.modelManipulator.table.insertTable(subDocument, parameter.rowCount, parameter.cellCount, position, UnitConverter.pixelsToTwipsF(availableWidth), this.inputPosition, false); this.history.addAndRedo(new SelectionHistoryItem(this.modelManipulator, this.selection, this.selection.getState(), this.selection.getState().setPosition(table.getStartPosition()).setEndOfLine(false))); TableConditionalFormattingCalculator.updateTable(this.control.modelManager, table, subDocument); this.history.addAndRedo(new ApplyTableStyleHistoryItem(this.modelManipulator, subDocument, table.index, gridTableStyle)); this.history.endTransaction(); return true; } }