private void DrawClipElement(Rect rect, int index, bool selected, bool focused)
        {
            ClipInformation info = (ClipInformation)m_ClipList.list[index];

            rect.xMax -= kFrameColumnWidth * 2;
            GUI.Label(rect, info.name, EditorStyles.label);
            rect.x     = rect.xMax;
            rect.width = kFrameColumnWidth;
            GUI.Label(rect, info.firstFrame, styles.numberStyle);
            rect.x = rect.xMax;
            GUI.Label(rect, info.lastFrame, styles.numberStyle);
        }
        /// <summary>
        /// Schedules an ad to be played by this plugin.
        /// </summary>
        /// <param name="adSource">The source of the ad content.</param>
        /// <param name="deliveryMethod">The delivery method of the ad content.</param>
        /// <param name="duration">The duration of the ad content that should be played.  If ommitted the plugin will play the full duration of the ad content.</param>
        /// <param name="startTime">The position within the media where this ad should be played.  If ommited ad will begin playing immediately.</param>
        /// <param name="clickThrough">The URL where the user should be directed when they click the ad.</param>
        /// <param name="pauseTimeline">Indicates if the timeline of the currently playing media should be paused while the ad is playing.</param>
        /// <param name="appendToAd">Another scheduled ad that this ad should be appended to.  If ommitted this ad will be scheduled independently.</param>
        /// <param name="data">User data.</param>
        /// <param name="isLinearClip">Indicates that SSME.ScheduleLinearClip should be called instead of ScheduleClip. pauseTimeline must be false.</param>
        /// <returns>A reference to the IAdContext that contains information about the scheduled ad.</returns>
        public IAdContext ScheduleAd(Uri adSource, DeliveryMethods deliveryMethod, TimeSpan? duration = null,
                                     TimeSpan? startTime = null, TimeSpan? startOffset = null, Uri clickThrough = null, bool pauseTimeline = true,
                                     IAdContext appendToAd = null, object data = null, bool isLinearClip = false)
        {
#if !WINDOWS_PHONE
            if (adSource == null) throw new ArgumentNullException("adSource");

            Duration clipDuration = duration.HasValue
                                        ? new Duration(duration.Value)
                                        : TimeSpan.MaxValue;
            var adContext = appendToAd as AdContext;
            bool isSmoothStreamingSource = deliveryMethod == DeliveryMethods.AdaptiveStreaming;
            var clipInformation = new ClipInformation(isSmoothStreamingSource, adSource, clickThrough, clipDuration);

            var scheduledAd = new ScheduledAd
                                  {
                                      IsLinearClip = isLinearClip,
                                      ClipInformation = clipInformation,
                                      StartTime = startTime,
                                      StartOffset = startOffset,
                                      PauseTimeline = pauseTimeline,
                                      Data = data,
                                      AppendToAd = appendToAd != null
                                                       ? adContext.ScheduledAd
                                                       : null
                                  };

            if (CurrentState == MediaPluginState.Closed)
            {
                //Queue the ads until ManifestReady fires
                _scheduledAds.Add(scheduledAd);
            }
            else
            {
                ScheduleAd(scheduledAd);
            }

            if (isLinearClip)
            {
                return new LinearAdContext(scheduledAd, MediaElement, data);
            }
            else
            {
                return new AdContext(scheduledAd, data);
            }
#else
            throw new NotImplementedException();
#endif
        }