/*****************************************************
*
* Copyright 2009 Adobe Systems Incorporated. All Rights Reserved.
*
*****************************************************
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
*
* The Initial Developer of the Original Code is Adobe Systems Incorporated.
* Portions created by Adobe Systems Incorporated are Copyright (C) 2009 Adobe Systems
* Incorporated. All Rights Reserved.
*
*****************************************************/
package org.osmf.elements.compositeClasses
{
import org.osmf.media.MediaElement;
import org.osmf.traits.MediaTraitBase;
import org.osmf.traits.MediaTraitType;
import org.osmf.utils.OSMFStrings;
[ExcludeClass]
/**
* @private
*
* Factory class for generating composite media traits.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
public class CompositeMediaTraitFactory
{
/**
* Instantiates and returns a new MediaTraitBase which acts as a composite
* trait for a homogeneous set of child traits.
*
* @param traitType The type of the composite trait (and by extension,
* the type of all child traits).
* @param traitAggregator The aggregator of all traits within the
* composite trait. Note that the composite trait is only considered
* to contain those traits which are of type traitType.
* @param mode The composition mode to which the composite trait should
* adhere. See CompositionMode for valid values.
*
* @return The composite trait of the specified type.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
public function createTrait
( traitType:String
, traitAggregator:TraitAggregator
, mode:String
, owner:MediaElement
):MediaTraitBase
{
var compositeTrait:MediaTraitBase = null;
switch (traitType)
{
case MediaTraitType.AUDIO:
// No distinction between modes for AudioTrait.
compositeTrait = new CompositeAudioTrait(traitAggregator);
break;
case MediaTraitType.BUFFER:
compositeTrait = new CompositeBufferTrait(traitAggregator, mode);
break;
case MediaTraitType.DYNAMIC_STREAM:
compositeTrait
= mode == CompositionMode.PARALLEL
? new ParallelDynamicStreamTrait(traitAggregator)
: new SerialDynamicStreamTrait(traitAggregator);
break;
case MediaTraitType.LOAD:
compositeTrait = new CompositeLoadTrait(traitAggregator, mode);
break;
case MediaTraitType.PLAY:
compositeTrait = new CompositePlayTrait(traitAggregator, mode);
break;
case MediaTraitType.SEEK:
compositeTrait
= mode == CompositionMode.PARALLEL
? new ParallelSeekTrait(traitAggregator, owner)
: new SerialSeekTrait(traitAggregator, owner);
break;
case MediaTraitType.TIME:
compositeTrait = new CompositeTimeTrait(traitAggregator, mode, owner);
break;
case MediaTraitType.DISPLAY_OBJECT:
compositeTrait
= mode == CompositionMode.PARALLEL
? new ParallelDisplayObjectTrait(traitAggregator, owner)
: new SerialDisplayObjectTrait(traitAggregator, owner);
break;
case MediaTraitType.DRM:
compositeTrait = new CompositeDRMTrait(traitAggregator, owner, mode);
break;
case MediaTraitType.DVR:
compositeTrait = new CompositeDVRTrait(traitAggregator, owner, mode);
break;
default:
throw new Error(OSMFStrings.getString(OSMFStrings.COMPOSITE_TRAIT_NOT_FOUND));
break;
}
return compositeTrait;
}
}
}