blob: de22970779c4629230602337c221b323b7e010f9 [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.conversion
{
import flashx.textLayout.elements.GlobalSettings;
import flashx.textLayout.tlf_internal;
use namespace tlf_internal;
/**
* This is a base class for importers as well as exporters. It implements the error handling
* plus property getters and setters that generate an error when invoked.
* @playerversion Flash 10.2
* @playerversion AIR 2.0
* @langversion 3.0
*/
public class ConverterBase
{
private var _errors:Vector.<String> = null;
private var _throwOnError:Boolean = false;
private var _useClipboardAnnotations:Boolean = false;
/** A converter that converts clipboard data into a TextFlow should use the MERGE_TO_NEXT_ON_PASTE property
* to control how the elements are treated when they are merged into an existing TextFlow on paste. This is useful
* if you want special handling for the case where only part of the element is copied. For instance, wheh a list
* is copied, if only part of the list is copied, and you paste it into another list, it merges into the list as
* additional items. If the entire list is copied, it appears as a nested list. When TLF creates a TextFlow for use
* on the clipboard, it decorates any partial elements with user properties that control whether the end of the element
* should be merged with the one after it. This user property is never pasted into the final TextFlow, but it may go
* on the elements in the TextScrap.textFlow. When copying text, the converter has the option to look for these properties
* to propagate them into the format that is posted on the clipboard. For instance, the plain text exporter checks the
* "mergeToNextOnPaste" property on paragraphs and supresses the paragraph terminator if it is found set to true.
* Likewise on import if the incoming String has no terminator, and useClipboardAnnotations is true, then it calls
* <code>setStyle(MERGE_TO_NEXT_ON_PASTE, "true")</code> on the corresponding paragraph so that when it is pasted
* it will blend into the paragraph where its pasted. This property should only be set on elements in a TextScrap, and
* only on the last element in the scrap.
*
* @playerversion Flash 10
* @playerversion AIR 1.5
* @langversion 3.0
*/
static public const MERGE_TO_NEXT_ON_PASTE:String = "mergeToNextOnPaste";
/** Errors encountered while parsing.
* Value is a vector of Strings.
*/
public function get errors():Vector.<String>
{
return _errors;
}
/** @copy ITextImporter#throwOnError()
*/
public function get throwOnError():Boolean
{
return _throwOnError;
}
public function set throwOnError(value:Boolean):void
{
_throwOnError = value;
}
/** @private
* Clear errors.
*/
tlf_internal function clear():void
{
_errors = null;
}
/** @private
* Register an error that was encountered while parsing. If throwOnError
* is true, the error causes an exception. Otherwise it is logged and parsing
* continues.
* @param error the String that describes the error
*/
tlf_internal function reportError(error:String):void
{
if (_throwOnError)
throw new Error(error);
if (!_errors)
_errors = new Vector.<String>();
_errors.push(error);
}
/** @copy ITextImporter#useClipboardAnnotations()
*/
public function get useClipboardAnnotations():Boolean
{
return _useClipboardAnnotations;
}
public function set useClipboardAnnotations(value:Boolean):void
{
_useClipboardAnnotations = value;
}
}
}