jaroslav@26: /** jaroslav@106: * Back 2 Browser Bytecode Translator jaroslav@106: * Copyright (C) 2012 Jaroslav Tulach jaroslav@26: * jaroslav@26: * This program is free software: you can redistribute it and/or modify jaroslav@26: * it under the terms of the GNU General Public License as published by jaroslav@26: * the Free Software Foundation, version 2 of the License. jaroslav@26: * jaroslav@26: * This program is distributed in the hope that it will be useful, jaroslav@26: * but WITHOUT ANY WARRANTY; without even the implied warranty of jaroslav@26: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the jaroslav@26: * GNU General Public License for more details. jaroslav@26: * jaroslav@26: * You should have received a copy of the GNU General Public License jaroslav@26: * along with this program. Look for COPYING file in the top folder. jaroslav@26: * If not, see http://opensource.org/licenses/GPL-2.0. jaroslav@26: */ jaroslav@26: package org.apidesign.bck2brwsr.htmlpage.api; jaroslav@26: jaroslav@100: import org.apidesign.bck2brwsr.core.JavaScriptBody; jaroslav@100: jaroslav@26: /** Represents a generic HTML element. jaroslav@26: * jaroslav@26: * @author Jaroslav Tulach jaroslav@26: */ jaroslav@26: public abstract class Element { jaroslav@26: private final String id; jaroslav@26: jaroslav@26: public Element(String id) { jaroslav@26: this.id = id; jaroslav@26: } jaroslav@26: jaroslav@26: abstract void dontSubclass(); jaroslav@27: jaroslav@100: @JavaScriptBody( jaroslav@100: args={"el", "property", "value"}, jaroslav@139: body="var e = window.document.getElementById(el.fld_id);\n" jaroslav@100: + "e[property] = value;\n" jaroslav@100: ) jaroslav@27: static void setAttribute(Element el, String property, Object value) { jaroslav@27: throw new UnsupportedOperationException("Needs JavaScript!"); jaroslav@27: } jaroslav@100: jaroslav@100: @JavaScriptBody( jaroslav@100: args={"el", "property"}, jaroslav@139: body="var e = window.document.getElementById(el.fld_id);\n" jaroslav@100: + "return e[property];\n" jaroslav@100: ) jaroslav@100: static Object getAttribute(Element el, String property) { jaroslav@100: throw new UnsupportedOperationException("Needs JavaScript!"); jaroslav@100: } jaroslav@28: jaroslav@28: /** Executes given runnable when user performs a "click" on the given jaroslav@28: * element. jaroslav@28: * @param r the runnable to execute, never null jaroslav@28: */ jaroslav@100: @JavaScriptBody( jaroslav@100: args={"el", "r"}, jaroslav@139: body="var e = window.document.getElementById(el.fld_id);\n" jaroslav@100: + "e.onclick = function() { r.runV(); };\n" jaroslav@100: ) jaroslav@28: public final void addOnClick(Runnable r) { jaroslav@28: throw new UnsupportedOperationException("Needs JavaScript!"); jaroslav@28: } jaroslav@26: }