//////////////////////////////////////////////////////////////////////////////// // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. // The ASF licenses this file to You under the Apache License, Version 2.0 // (the "License"); you may not use this file except in compliance with // the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////////// package flashx.textLayout.operations { import flashx.textLayout.debug.assert; import flashx.textLayout.edit.SelectionState; import flashx.textLayout.elements.ContainerFormattedElement; import flashx.textLayout.elements.FlowElement; import flashx.textLayout.elements.FlowGroupElement; import flashx.textLayout.elements.ParagraphFormattedElement; import flashx.textLayout.elements.TextFlow; import flashx.textLayout.tlf_internal; use namespace tlf_internal; /** * The ApplyElementUserStyleOperation class encapsulates a change in a style value of an element. * * @see flashx.textLayout.elements.FlowElement#userStyles * @see flashx.textLayout.edit.EditManager * @see flashx.textLayout.events.FlowOperationEvent * * @playerversion Flash 10 * @playerversion AIR 1.5 * @langversion 3.0 */ public class ApplyElementUserStyleOperation extends FlowElementOperation { private var _styleName:String; private var _origValue:*; private var _newValue:*; /** * Creates a ApplyElementUserStyleOperation object. * *

If the relativeStart and relativeEnd parameters are set, then the existing * element is split into multiple elements, the selected portion using the new * style value and the rest using the existing style value.

* * @param operationState Describes the range of text to style. * @param targetElement Specifies the element to change. * @param styleName The name of the style to change. * @param value The new style value. * @param relativeStart An offset from the beginning of the target element. * @param relativeEnd An offset from the end of the target element. * * @playerversion Flash 10 * @playerversion AIR 1.5 * @langversion 3.0 */ public function ApplyElementUserStyleOperation(operationState:SelectionState, targetElement:FlowElement, styleName:String, value:*, relativeStart:int = 0, relativeEnd:int = -1) { _styleName = styleName; _newValue = value; super(operationState,targetElement,relativeStart,relativeEnd); } /** * The name of the style changed. * * @playerversion Flash 10 * @playerversion AIR 1.5 * @langversion 3.0 */ public function get styleName():String { return _styleName; } public function set styleName(val:String):void { _styleName = val; } /** * The new style value. * * @playerversion Flash 10 * @playerversion AIR 1.5 * @langversion 3.0 */ public function get newValue():* { return _newValue; } public function set newValue(val:*):void { _newValue = val; } /** @private */ public override function doOperation():Boolean { var targetElement:FlowElement = getTargetElement(); _origValue = targetElement.getStyle(_styleName); adjustForDoOperation(targetElement); targetElement.setStyle(_styleName,_newValue); return true; } /** @private */ public override function undo():SelectionState { var targetElement:FlowElement = getTargetElement(); targetElement.setStyle(_styleName,_origValue); adjustForUndoOperation(targetElement); return originalSelectionState; } } }