/*
 * 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 org.apache.wicket.examples.media;

import java.util.UUID;

import org.apache.wicket.examples.WicketExamplePage;
import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.media.Source;
import org.apache.wicket.markup.html.media.video.Video;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.PackageResourceReference;


/**
 * Demonstrates different flavors of org.apache.wicket.examples.videos.<br>
 * <br>
 *
 * Videos are from: http://media.w3.org/2010/05/video/<br>
 * <br>
 * Images are from: http://search.creativecommons.org/ with check on commercial use and modify...
 *
 * @author Tobias Soloschenko
 */
public final class Home extends WicketExamplePage
{
    private static final long serialVersionUID = 1L;

    /**
     * Constructor
     */
    public Home()
    {
        // Internal video with several options

        Video video1 = new Video("video1",
            new PackageResourceReference(Home.class, "video1.mp4").readBuffered(false));
        video1.setAutoplay(false);
        video1.setControls(true);
        video1.setLooping(false);
        video1.setWidth(320);
        video1.setHeight(240);
        video1.setType("video/mp4");
        video1.setPoster(new PackageResourceReference(Home.class, "novideo.gif"));
        add(video1);

        // video with source

        Video video2 = new Video("video2");
        video2.setPoster(new PackageResourceReference(Home.class, "novideo.gif"));

        Source source2 = new Source("source2",
            new PackageResourceReference(Home.class, "video2.mp4"));
        // Need to be set to true to show the type
        source2.setDisplayType(true);
        // the default type is the mime type of the image with no codec information
        source2.setType("video/mp4");
        video2.add(source2);

        add(video2);

        // External video
        PageParameters pageParameters = new PageParameters();
        pageParameters.add("random", UUID.randomUUID().toString());
        pageParameters.add("test", "test");
        Video video3 = new Video("video3", "https://w3c-test.org/media/movie_300.mp4",
            pageParameters);
        video3.setPoster(new PackageResourceReference(Home.class, "novideo.gif"));
        video3.setType("video/mp4");
        add(video3);

        /*
         * // video with track Video video4 = new Video("video4", new
         * PackageResourceReference(Home.class, "dummyVideo.m4a"));
         *
         * // source tag Source source4 = new Source("source4",
         * "http://www.mytestpage.xc/video.m4a"); source4.setMedia("screen and (device-width:500px)"
         * ); source4.setType("video/mp4"); source4.setDisplayType(true); video4.add(source4);
         *
         * // tack tag Track track4 = new Track("track4", new PackageResourceReference(Home.class,
         * "dummySubtitles.vtt")); track4.setKind(Kind.subtitles); track4.setLabel(
         * "Subtitles of video"); track4.setSrclang(Locale.GERMANY); track4.setDefaultTrack(true);
         * video4.add(track4);
         *
         * add(video4);
         */
    }

    @Override
    public void renderHead(IHeaderResponse response)
    {
        super.renderHead(response);
        response.render(
            CssHeaderItem.forReference(new PackageResourceReference(Home.class, "Home.css")));
    }
}