/** * Copyright 2010 the original author or authors. * * This file is part of openTruuls™. http://www.opentruuls.org/ and * have the permission to be integrated in the zksample2 demo application. * * Zksample2 is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Zksample2 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Zksample2. If not, see <http://www.gnu.org/licenses/gpl.html>. */ package de.forsthaus.webui.dashboard.module; import java.io.Serializable; import org.zkoss.zul.Borderlayout; import org.zkoss.zul.Caption; import org.zkoss.zul.Center; import org.zkoss.zul.Div; import org.zkoss.zul.Groupbox; import org.zkoss.zul.Iframe; import org.zkoss.zul.Script; import org.zkoss.zul.Window; /** * EN: <b>Google Translate starter</b> controller for the dashboard.<br> * <hr> * DE: <b>Google Uebersetzer</b> Controller fuer die SystemUebersicht. <br> * * <pre> * call: Div div = DashboardGoogleTranslateCtrl.show(80); * </pre> * * <!-- Google Translate Element --><br> * <h:div id="google_translate_element" style="display:block"></h:div><br> * <h:script> <br> * function googleTranslateElementInit() { new <br> * google.translate.TranslateElement({pageLanguage: "af"},<br> * "google_translate_element"); }; <br> * </h:script> <br> * <h:script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit" * ><br> * </h:script> <br> * * * @author Stephan Gerth * @thanks to 'gekkio' from zk forum. */ public class DashboardGoogleTranslateCtrl extends Div implements Serializable { private static final long serialVersionUID = 1L; // the height of this dashboard module private int modulHeight; /** * Module dependend */ private Iframe anIFrame; // The google icon path for the groupbox private String iconPath = "/images/framework_icons/translate_logo_sm.png"; // The url to the google translator private String urlString = "http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"; /** * The static call method. * * @param modulHeight * The height of this dashboard module * @param scrollling * scrolling "true", "false", "yes" or "no" or "auto", "auto" by * default If null, "auto" is assumed * @return the module as DIV. */ public static Div show(int modulHeight) { return new DashboardGoogleTranslateCtrl(modulHeight); } /** * Private Constructor. So it can only be created with the static show() * method.<br> * * @param modulHeight * The height of this dashboard module */ private DashboardGoogleTranslateCtrl(int modulHeight) { super(); setModulHeight(modulHeight); createComponents(); } /** * Creates the components.<br> */ private void createComponents() { /** * !! Windows as NameSpaceContainer to prevent not unique id's error * from other dashboard module buttons or other used components. */ Window win = new Window(); win.setBorder("none"); win.setParent(this); Groupbox gb = new Groupbox(); gb.setMold("3d"); gb.setClosable(false); gb.setParent(win); Caption cap = new Caption(); cap.setImage(iconPath); cap.setLabel("Translator"); cap.setStyle("padding: 0px;"); cap.setParent(gb); // body Borderlayout bl = new Borderlayout(); bl.setHeight(getModulHeight() + "px"); bl.setParent(gb); Center ct = new Center(); ct.setSclass("FDCenterNoBorder"); ct.setStyle("background-color: white"); ct.setParent(bl); Div container = new Div(); container.setStyle("padding: 4px;"); ct.appendChild(container); Script init = new Script(); init.setContent("function googleTranslateElementInit() { new google.translate.TranslateElement({pageLanguage: 'af'}, '" + container.getUuid() + "'); };"); win.appendChild(init); Script translate = new Script(); translate.setSrc("http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"); win.appendChild(translate); } // +++++++++++++++++++++++++++++++++++++++++++++++++ // // ++++++++++++++++ Setter/Getter ++++++++++++++++++ // // +++++++++++++++++++++++++++++++++++++++++++++++++ // public void setAnIFrame(Iframe anIFrame) { this.anIFrame = anIFrame; } public Iframe getAnIFrame() { return anIFrame; } public void setModulHeight(int modulHeight) { this.modulHeight = modulHeight; } public int getModulHeight() { return modulHeight; } }