devexpress-richedit
Version:
DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.
172 lines (171 loc) • 10 kB
JavaScript
import { StrikeoutType, UnderlineType } from '../../../../../model/character/enums';
import { ListNumberAlignment, NumberingFormat } from '../../../../../model/numbering-lists/list-level-properties';
import { ParagraphFirstLineIndent } from '../../../../../model/paragraph/paragraph-properties';
import { ShadingInfo } from '../../../../../model/shadings/shading-info';
import { DestinationBase } from '../base/destination';
import { TextAfterDestination } from '../base/text-after-destination';
import { TextBeforeDestination } from '../base/text-before-destination';
import { DestinationSubDocument } from '../sub-document/destination-sub-document';
import { DestinationType } from '../utils/destination-type';
export class DestinationOldParagraphNumberingBase extends DestinationBase {
constructor() {
super(...arguments);
this.textBefore = '';
this.textAfter = '';
}
get destinationType() { return DestinationType.DestinationOldParagraphNumberingBase; }
get controlCharHT() { return null; }
static setNumberingListFormat(importer, format) {
importer.importers.numbering.oldListLevelInfo.listLevelProperties.format = format;
}
static setUnderlineType(importer, underlineType) {
importer.importers.character.characterFormatting.coreProperties.fontUnderlineType = underlineType;
}
static onCardinalKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setNumberingListFormat(importer, NumberingFormat.CardinalText);
}
static onDecimalKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setNumberingListFormat(importer, NumberingFormat.Decimal);
}
static onUpperCaseAlphabeticalKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setNumberingListFormat(importer, NumberingFormat.UpperLetter);
}
static onUpperCaseRomanKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setNumberingListFormat(importer, NumberingFormat.UpperRoman);
}
static onLowerCaseAlphabeticalKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setNumberingListFormat(importer, NumberingFormat.LowerLetter);
}
static onLowerCaseRomanKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setNumberingListFormat(importer, NumberingFormat.LowerRoman);
}
static onOrdinalKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setNumberingListFormat(importer, NumberingFormat.Ordinal);
}
static onOrdinalTextKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setNumberingListFormat(importer, NumberingFormat.OrdinalText);
}
static onNumberingInCircleKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setNumberingListFormat(importer, NumberingFormat.DecimalEnclosedCircle);
}
static onDashedUndrelineKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setUnderlineType(importer, UnderlineType.Dashed);
}
static onDashDottedUnderlineKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setUnderlineType(importer, UnderlineType.DashDotted);
}
static onDashDotDottedUnderlineKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setUnderlineType(importer, UnderlineType.DashDotDotted);
}
static onHairlineUnderlineKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setUnderlineType(importer, UnderlineType.ThickSingle);
}
static onThickUnderlineKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setUnderlineType(importer, UnderlineType.ThickSingle);
}
static onWaveUnderlineKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setUnderlineType(importer, UnderlineType.Wave);
}
static onDottedUnderlineKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setUnderlineType(importer, UnderlineType.Dotted);
}
static onDoubleUnderlineKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setUnderlineType(importer, UnderlineType.Double);
}
static onNoneUnderlineKeyword(importer, _parameterValue, _hasParameter) {
DestinationOldParagraphNumberingBase.setUnderlineType(importer, UnderlineType.None);
}
static onContinuousUnderlineKeyword(importer, _parameterValue, _hasParameter) {
importer.importers.character.characterFormatting.coreProperties.underlineWordsOnly = false;
}
static onWordUnderlineKeyword(importer, _parameterValue, _hasParameter) {
importer.importers.character.characterFormatting.coreProperties.underlineWordsOnly = true;
}
static onFontNumberKeyword(importer, parameterValue, hasParameter) {
const fontImporter = importer.importers.font;
if (!hasParameter)
parameterValue = fontImporter.defaultFontNumber;
fontImporter.setFont(fontImporter.fonts.getRtfFontInfoById(parameterValue));
}
static onFontBoldKeyword(importer, parameterValue, hasParameter) {
const val = hasParameter ? parameterValue != 0 : true;
importer.importers.character.characterFormatting.coreProperties.fontBold = val;
}
static onItalicKeyword(importer, parameterValue, hasParameter) {
const val = hasParameter ? parameterValue != 0 : true;
importer.importers.character.characterFormatting.coreProperties.fontItalic = val;
}
static onAllCapsKeyword(importer, parameterValue, hasParameter) {
const val = hasParameter ? parameterValue != 0 : true;
importer.importers.character.characterFormatting.coreProperties.allCaps = val;
}
static onSmallCapsKeyword(importer, parameterValue, hasParameter) {
const val = hasParameter ? parameterValue != 0 : true;
importer.importers.character.characterFormatting.coreProperties.smallCaps = !val;
}
static onStrikeKeyword(importer, parameterValue, hasParameter) {
const val = hasParameter ? parameterValue != 0 : true;
importer.importers.character.characterFormatting.coreProperties.fontStrikeoutType = val ? StrikeoutType.Single : StrikeoutType.None;
}
static onForegroundColorKeyword(importer, parameterValue, hasParameter) {
if (!hasParameter)
parameterValue = 0;
const oldSh = importer.importers.character.characterFormatting.coreProperties.shadingInfo;
importer.importers.character.characterFormatting.coreProperties.shadingInfo = new ShadingInfo(oldSh.shadingPattern, oldSh.backColor, DestinationSubDocument.getColorIndex(importer, parameterValue));
}
static onIndentKeyword(importer, parameterValue, _hasParameter) {
const info = importer.importers.paragraph.paragraphFormatting;
if (parameterValue < 0) {
info.coreProperties.firstLineIndent = -parameterValue;
info.coreProperties.firstLineIndentType = ParagraphFirstLineIndent.Hanging;
}
else {
info.coreProperties.firstLineIndent = parameterValue;
info.coreProperties.firstLineIndentType = ParagraphFirstLineIndent.Indented;
}
}
static onSpaceKeyword(_importer, _parameterValue, _hasParameter) {
}
static onUsePrevKeyword(importer, _parameterValue, _hasParameter) {
importer.importers.numbering.oldListLevelInfo.includeInformationFromPreviousLevel = true;
}
static onStartAtKeyword(importer, parameterValue, _hasParameter) {
importer.importers.numbering.oldListLevelInfo.listLevelProperties.start = parameterValue;
}
static onHangingIndentKeyword(importer, _parameterValue, _hasParameter) {
importer.importers.paragraph.paragraphFormatting.coreProperties.firstLineIndentType = ParagraphFirstLineIndent.Hanging;
}
static onRestartOnSectionBreakKeyword(_importer, _parameterValue, _hasParameter) {
}
static onCenterAlignmentKeyword(importer, _parameterValue, _hasParameter) {
importer.importers.numbering.oldListLevelInfo.listLevelProperties.alignment = ListNumberAlignment.Center;
}
static onLeftAlignmentKeyword(importer, _parameterValue, _hasParameter) {
importer.importers.numbering.oldListLevelInfo.listLevelProperties.alignment = ListNumberAlignment.Left;
}
static onRightAlignmentKeyword(importer, _parameterValue, _hasParameter) {
importer.importers.numbering.oldListLevelInfo.listLevelProperties.alignment = ListNumberAlignment.Right;
}
static onTextBeforeKeyword(importer, _parameterValue, _hasParameter) {
importer.destination = new TextBeforeDestination(importer);
}
static onTextAfterKeyword(importer, _parameterValue, _hasParameter) {
importer.destination = new TextAfterDestination(importer);
}
nestedGroupFinished(nestedDestination) {
super.nestedGroupFinished(nestedDestination);
if (nestedDestination instanceof TextBeforeDestination) {
this.textBefore = nestedDestination.value;
return;
}
if (nestedDestination instanceof TextAfterDestination) {
this.textAfter = nestedDestination.value;
return;
}
}
beforePopRtfState() {
super.beforePopRtfState();
this.importer.importers.numbering.oldListLevelInfo.textAfter = this.textAfter;
this.importer.importers.numbering.oldListLevelInfo.textBefore = this.textBefore;
}
}