blob: 02cf1d7733e48b7c771b36fc532e475da263b3e8 [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// 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;
[Deprecated(replacement="ApplyFormatToElementOperation", deprecatedSince="2.0")]
/**
* 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.
*
* <p>If the <code>relativeStart</code> and <code>relativeEnd</code> 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.</p>
*
* @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;
}
}
}