org.wicketstuff.html5.media.webvtt.WebVtt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of wicketstuff-html5 Show documentation
Show all versions of wicketstuff-html5 Show documentation
Some simple components and behaviors to support HTML5
/*
* 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.wicketstuff.html5.media.webvtt;
import java.util.ArrayList;
import java.util.List;
/**
* A WebVTT document
*
* Further information:
* https://developer.mozilla.org/en-US/docs/Web/API/Web_Video_Text_Tracks_Format#Cue_Settings
* http://dev.w3.org/html5/webvtt/
* http://www.jwplayer.com/html5/webvtt/
*
* @author Tobias Soloschenko
*/
public class WebVtt
{
private List vttCues = new ArrayList();
private List vttRegions = new ArrayList();
private String description;
private String note;
/**
* Gets the description shown beside WEBVTT
*
* Note: A " - " is prefixed to the description and all \n's are replaced with " "
*
* @return the description the description
*/
public String getDescription()
{
return description;
}
/**
* Gets the description shown beside WEBVTT
*
* Note: A " - " is prefixed to the description and all \n's are replaced with " "
*
* @param description
* the description to be shown
*
* @return the vtt to perform further operations
*/
public WebVtt setDescription(String description)
{
this.description = description;
return this;
}
/**
* Gets the document note
*
* @return the document note
*/
public String getNote()
{
return note;
}
/**
* Sets the document note
*
* @param note
* the note to be shown in the document
* @return the vtt to perform further operations
*/
public WebVtt setNote(String note)
{
this.note = note;
return this;
}
/**
* Adds a cue
*
* @param vttCue
* the cue to be added
*/
public void addCue(VttCue vttCue)
{
vttCues.add(vttCue);
}
/**
* Removes a cue
*
* @param vttCue
* the cue to be removed
*/
public void removeCue(VttCue vttCue)
{
vttCues.remove(vttCue);
}
/**
* Removes a cue based on its index
*
* @param index
* the index of the cue to be removed
*/
public void removeCue(int index)
{
vttCues.remove(index);
}
/**
* Adds a region
*
* @param vttRegion
* the region to be added
*/
public void addRegion(VttRegion vttRegion)
{
vttRegions.add(vttRegion);
}
/**
* Removes a region
*
* @param vttRegion
* the region to be removed
*/
public void removeRegion(VttRegion vttRegion)
{
vttRegions.remove(vttRegion);
}
/**
* Removes a region based on the given index
*
* @param index
* the index of the region to be removed
*/
public void removeRegion(int index)
{
vttRegions.remove(index);
}
/**
* Creates the WebVTT document
*
* @return the WebVTT document as string
*/
public String create()
{
StringBuilder builder = new StringBuilder(1000);
builder.append("WEBVTT");
if (getDescription() != null)
{
builder.append(" - ");
builder.append(getDescription().replace("\n", " "));
}
if (getNote() != null)
{
builder.append("\n\n");
builder.append("NOTE \n");
builder.append(getNote());
builder.append("\n");
}
for (VttRegion vttRegion : vttRegions)
{
builder.append("\n");
builder.append(vttRegion.getRepresentation());
}
for (VttCue vttCue : vttCues)
{
builder.append("\n\n");
// This has to be excluded from getRepresentation,
// because it has to be shown before the actual item
String note = vttCue.getNote();
if (note != null)
{
builder.append("NOTE \n");
builder.append(note);
builder.append("\n\n");
}
builder.append(vttCue.getRepresentation());
}
return builder.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy