Android Open Source - Renderers Video Renderer Builder






From Project

Back to project page Renderers.

License

The source code is released under:

Apache License

If you think the Android project Renderers listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2014 Pedro Vicente Gmez Snchez.
 *// ww  w  .j  a  va  2  s .  c o  m
 * Licensed 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 com.pedrogomez.renderers.ui.builder;

import android.content.Context;
import com.pedrogomez.renderers.Renderer;
import com.pedrogomez.renderers.RendererBuilder;
import com.pedrogomez.renderers.model.Video;
import com.pedrogomez.renderers.ui.renderers.FavoriteVideoRenderer;
import com.pedrogomez.renderers.ui.renderers.LikeVideoRenderer;
import com.pedrogomez.renderers.ui.renderers.LiveVideoRenderer;
import com.pedrogomez.renderers.ui.renderers.VideoRenderer;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import javax.inject.Inject;

/**
 * RendererBuilder extension created to work with videos. This class works as connector between
 * RendererAdapter and
 * VideoRenderers. Define the mapping between Videos and VideoRenderers.
 *
 * @author Pedro Vicente Gmez Snchez.
 */
public class VideoRendererBuilder extends RendererBuilder<Video> {

  @Inject public VideoRendererBuilder(Context context,
      VideoRenderer.OnVideoClicked onVideoClicked) {
    Collection<Renderer<Video>> prototypes = getPrototypes(context, onVideoClicked);
    setPrototypes(prototypes);
  }

  /**
   * Method to declare Video-VideoRenderer mapping.
   * Favorite videos will be rendered using FavoriteVideoRenderer.
   * Live videos will be rendered using LiveVideoRenderer.
   * Liked videos will be rendered using LikeVideoRenderer.
   *
   * @param content used to map object-renderers.
   * @return VideoRenderer subtype class.
   */
  @Override protected Class getPrototypeClass(Video content) {
    Class prototypeClass;
    if (content.isFavorite()) {
      prototypeClass = FavoriteVideoRenderer.class;
    } else if (content.isLive()) {
      prototypeClass = LiveVideoRenderer.class;
    } else {
      prototypeClass = LikeVideoRenderer.class;
    }
    return prototypeClass;
  }

  /**
   * Create a list of prototypes to configure RendererBuilder.
   * The list of Renderer<Video> that contains all the possible renderers that our RendererBuilder
   * is going to use.
   *
   * @return Renderer<Video> prototypes for RendererBuilder.
   */
  private List<Renderer<Video>> getPrototypes(Context context,
      VideoRenderer.OnVideoClicked onVideoClickedListener) {
    List<Renderer<Video>> prototypes = new LinkedList<Renderer<Video>>();
    LikeVideoRenderer likeVideoRenderer = new LikeVideoRenderer(context);
    likeVideoRenderer.setListener(onVideoClickedListener);
    prototypes.add(likeVideoRenderer);

    FavoriteVideoRenderer favoriteVideoRenderer = new FavoriteVideoRenderer(context);
    favoriteVideoRenderer.setListener(onVideoClickedListener);
    prototypes.add(favoriteVideoRenderer);

    LiveVideoRenderer liveVideoRenderer = new LiveVideoRenderer(context);
    liveVideoRenderer.setListener(onVideoClickedListener);
    prototypes.add(liveVideoRenderer);

    return prototypes;
  }
}




Java Source Code List

com.pedrogomez.renderers.AdapteeCollection.java
com.pedrogomez.renderers.ListAdapteeCollection.java
com.pedrogomez.renderers.RendererAdapter.java
com.pedrogomez.renderers.RendererBuilder.java
com.pedrogomez.renderers.Renderer.java
com.pedrogomez.renderers.SampleApplication.java
com.pedrogomez.renderers.exception.NeedsPrototypesException.java
com.pedrogomez.renderers.exception.NotInflateViewException.java
com.pedrogomez.renderers.exception.NullContentException.java
com.pedrogomez.renderers.exception.NullLayoutInflaterException.java
com.pedrogomez.renderers.exception.NullParentException.java
com.pedrogomez.renderers.exception.NullPrototypeClassException.java
com.pedrogomez.renderers.exception.NullRendererBuiltException.java
com.pedrogomez.renderers.exception.PrototypeNotFoundException.java
com.pedrogomez.renderers.exception.RendererException.java
com.pedrogomez.renderers.model.RandomVideoCollectionGenerator.java
com.pedrogomez.renderers.model.VideoCollection.java
com.pedrogomez.renderers.model.Video.java
com.pedrogomez.renderers.module.MainModule.java
com.pedrogomez.renderers.module.OnVideoClickedListener.java
com.pedrogomez.renderers.ui.MainActivity.java
com.pedrogomez.renderers.ui.builder.VideoRendererBuilder.java
com.pedrogomez.renderers.ui.renderers.FavoriteVideoRenderer.java
com.pedrogomez.renderers.ui.renderers.LikeVideoRenderer.java
com.pedrogomez.renderers.ui.renderers.LiveVideoRenderer.java
com.pedrogomez.renderers.ui.renderers.VideoRenderer.java