An HTML presentation component that enables to create fully-featured and beautiful presentations.
It is possible to render keynotes in a dynamic way as in data iteration components.
Lorem ipsum content 1
Lorem ipsum content 2
Lorem ipsum content 3
Lorem ipsum content 4
Lorem ipsum content 5
Lorem ipsum content 6
Lorem ipsum content 7
Lorem ipsum content 8
Lorem ipsum content 9
Lorem ipsum content 10
<pe:keynote loop="true" autoSlide="3000" slideNumber="c/t" value="#{keynoteController.items}" var="item" width="480" height="350" style="width: 50vw; height: 50vh;"> <pe:keynoteItem> <h2>#{item.headline}</h2> <p>#{item.content}</p> </pe:keynoteItem> </pe:keynote>
@Named @ViewScoped public class KeynoteController implements Serializable { private static final long serialVersionUID = 1L; private List<KeynoteItem> items; private boolean disabled = true; @PostConstruct protected void initialize() { items = new ArrayList<>(); for (int i = 1; i <= 10; i++) { items.add(new KeynoteItem(new KeynoteItemContent("Section " + i, "Lorem ipsum content " + i))); } } public void onSlideChanged(final KeynoteEvent event) { disabled = !event.isLastSlide(); final FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Trigger: " + new Date(), "Slide changed: " + event.isCompleted() + ", last slide: " + event.isLastSlide()); FacesContext.getCurrentInstance().addMessage(null, msg); } public void onSlideTransitionEnd(final KeynoteEvent event) { disabled = !event.isLastSlide(); final FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Trigger: " + new Date(), "Slide transition end: " + event.isCompleted() + ", last slide: " + event.isLastSlide()); FacesContext.getCurrentInstance().addMessage(null, msg); } public List<KeynoteItem> getItems() { return items; } public boolean isDisabled() { return disabled; } public class KeynoteItemContent implements Serializable { private String headline; private String content; public KeynoteItemContent(final String headline, final String content) { this.headline = headline; this.content = content; } public String getHeadline() { return headline; } public void setHeadline(final String headline) { this.headline = headline; } public String getContent() { return content; } public void setContent(final String content) { this.content = content; } } }