/* * PresentationFrame.java * * Copyright (C) 2009-12 by RStudio, Inc. * * Unless you have received this program directly from RStudio pursuant * to the terms of a commercial license agreement with RStudio, then * this program is licensed to you under the terms of version 3 of the * GNU Affero General Public License. This program is distributed WITHOUT * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. * */ package org.rstudio.studio.client.workbench.views.presentation; import org.rstudio.core.client.StringUtil; import org.rstudio.core.client.dom.WindowEx; import org.rstudio.core.client.widget.AnchorableFrame; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.dom.client.Element; import com.google.gwt.event.dom.client.LoadEvent; import com.google.gwt.event.dom.client.LoadHandler; import com.google.gwt.user.client.ui.HasText; public class PresentationFrame extends AnchorableFrame { public PresentationFrame(boolean autoFocus) { this(autoFocus, false); } public PresentationFrame(boolean autoFocus, boolean allowFullScreen) { this(autoFocus, allowFullScreen, null); } public PresentationFrame(boolean autoFocus, boolean allowFullScreen, final HasText titleWidget) { super(autoFocus); // allow full-screen view of iframe if (allowFullScreen) { Element el = getElement(); el.setAttribute("webkitallowfullscreen", ""); el.setAttribute("mozallowfullscreen", ""); el.setAttribute("allowfullscreen", ""); } addLoadHandler(new LoadHandler() { @Override public void onLoad(LoadEvent event) { // set title title_ = StringUtil.notNull( getWindow().getDocument().getTitle()); if (titleWidget != null) titleWidget.setText(title_); } }); } public String getFrameTitle() { return title_; } public void clear() { getWindow().replaceLocationHref("about:blank"); } public void home() { Reveal.fromWindow(getWindow()).home(); } public void slide(int index) { Reveal.fromWindow(getWindow()).slide(index); } public void next() { Reveal.fromWindow(getWindow()).next(); } public void prev() { Reveal.fromWindow(getWindow()).prev(); } private static class Reveal extends JavaScriptObject { protected Reveal() { } public static final native Reveal fromWindow(WindowEx window) /*-{ return window.Reveal; }-*/; public final native void home() /*-{ this.slide(0); }-*/; public final native void slide(int index) /*-{ this.slide(index); }-*/; public final native void next() /*-{ this.next(); }-*/; public final native void prev() /*-{ this.prev(); }-*/; } private String title_ = ""; }