You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2010/11/19 05:42:40 UTC
svn commit: r1036739 - in /openjpa/sandboxes/jest:
openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jest/
openjpa-persistence/src/main/java/org/apache/openjpa/persistence/jest/
Author: ppoddar
Date: Fri Nov 19 04:42:40 2010
New Revision: 1036739
URL: http://svn.apache.org/viewvc?rev=1036739&view=rev
Log:
OPENJPA-1859; Add draft JavaScript support with Dojo
Added:
openjpa/sandboxes/jest/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jest/
openjpa/sandboxes/jest/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jest/instances.js (with props)
openjpa/sandboxes/jest/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/jest/DojoFormatter.java (with props)
Added: openjpa/sandboxes/jest/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jest/instances.js
URL: http://svn.apache.org/viewvc/openjpa/sandboxes/jest/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jest/instances.js?rev=1036739&view=auto
==============================================================================
--- openjpa/sandboxes/jest/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jest/instances.js (added)
+++ openjpa/sandboxes/jest/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jest/instances.js Fri Nov 19 04:42:40 2010
@@ -0,0 +1,79 @@
+dojo.require("dijit.form.Button");
+dojo.require("dijit.TitlePane");
+dojo.ready(function(){
+ var data = dojo.byId("data");
+// var instances = dojo.query("instance", data);
+// var tp = create(instances[0]);
+// tp.domNode.style.width="140px";
+// tp.domNode.style.position="absolute";
+// tp.domNode.style.left="200px";
+// tp.domNode.style.top="200px";
+// var canvas = dojo.byId("canvas");
+// canvas.appendChild(tp.domNode);
+ var canvas = dojo.byId("canvas");
+ dojo.query("instance", data).forEach(function(item) {
+ var tp = create(item);
+ tp.domNode.style.width="140px";
+ tp.domNode.style.position="absolute";
+ tp.domNode.style.left=Math.floor(Math.random()*500)+"px";
+ tp.domNode.style.top=Math.floor(Math.random()*200)+"px";
+ canvas.appendChild(tp.domNode);
+ });
+// var canvas = dojo.byId("canvas");
+// for (pane in panes) {
+// pane.domNode.style.left=Math.floor(Math.random()*500)+"px";
+// pane.domNode.style.top=Math.floor(Math.random()*500)+"px";
+// canvas.appendChild(pane.domNode);
+// }
+});
+
+/**
+ * Creates a dojo Title Pane from a DOM instance node.
+ * The pane has the instance id as its title.
+ * The content is name and value of each attribute in separate line.
+ *
+ * @param node an instance node
+ * @returns
+ */
+function create(node) {
+ var attrs = document.createElement("table");
+ dojo.query('basic, one-to-one', node)
+ .forEach(function(item) {
+ var attr = document.createElement("tr");
+ var name = document.createElement("td");
+ name.innerHTML = item.getAttribute("name").bold();
+ var value = document.createElement("td");
+ value.innerHTML = item.innerHTML;
+ attr.appendChild(name);
+ attr.appendChild(value);
+ attrs.appendChild(attr);
+ }
+ );
+ var pane = new dijit.TitlePane({
+ title: node.getAttribute("id"),
+ content:attrs
+ }
+ );
+
+ dojo.connect(pane, "onMouseEnter",
+ function(event){
+ pane.domNode.style.cursor = "move";
+ }
+ );
+ dojo.connect(pane, "onMouseLeave",
+ function(event){
+ pane.domNode.style.cursor = "default";
+ }
+ );
+ dojo.connect(pane, "onMouseUp",
+ function(event){
+ setPosition(pane, event);
+ }
+ );
+ return pane;
+};
+
+function setPosition(widget, event) {
+ widget.domNode.style.left = event.pageX+"px";
+ widget.domNode.style.top = event.pageY+"px";
+}
Propchange: openjpa/sandboxes/jest/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jest/instances.js
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: openjpa/sandboxes/jest/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jest/instances.js
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: openjpa/sandboxes/jest/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/jest/DojoFormatter.java
URL: http://svn.apache.org/viewvc/openjpa/sandboxes/jest/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/jest/DojoFormatter.java?rev=1036739&view=auto
==============================================================================
--- openjpa/sandboxes/jest/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/jest/DojoFormatter.java (added)
+++ openjpa/sandboxes/jest/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/jest/DojoFormatter.java Fri Nov 19 04:42:40 2010
@@ -0,0 +1,100 @@
+/*
+ * 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.apache.openjpa.persistence.jest;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Collection;
+
+/**
+ * Creates HTML document with Dojo JavaScript.
+ *
+ * @author Pinaki Poddar
+ *
+ */
+public class DojoFormatter extends XMLFormatter {
+ public static final String MIME_TYPE = "text/html";
+ static String DOCTYPE = "<!DOCTYPE html PUBLIC "
+ + quoted("-//W3C//DTD HTML 4.01//EN")
+ + quoted("http://www.w3.org/TR/html4/strict.dtd") + ">";
+ static String DOJO = quoted("http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojo/dojo.xd.js");
+ static String DOJO_THEME = quoted("http://ajax.googleapis.com/ajax/libs/dojo/1.5/dijit/themes/claro/claro.css");
+ static String DOJO_CONFIG = "djConfig=" + quoted("parseOnLoad:true, isDebug:true");
+ static String JAVASCRIPT_TYPE = " type=" + quoted("text/javascript") + " ";
+ static String CSS_TYPE = " type=" + quoted("text/css") + " ";
+ static String DOJO_INSTANCE = quoted("instances.js");
+
+ @Override
+ public String getMimeType() {
+ return MIME_TYPE;
+ }
+
+ @Override
+ public void configure(String key, Object value) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void encode(Object obj, JPAServletContext ctx) {
+ PrintWriter writer = writeHeader(ctx);
+ super.encode(obj, ctx);
+ close(writer);
+ }
+
+
+ @Override
+ public void encode(Collection<?> objs, JPAServletContext ctx) throws IOException {
+ PrintWriter writer = writeHeader(ctx);
+ super.encode(objs, ctx);
+ close(writer);
+ }
+
+ PrintWriter writeHeader(JPAServletContext ctx) {
+ PrintWriter writer = null;
+ try {
+ writer = ctx.getResponse().getWriter();
+ } catch (Exception e) {
+ throw new ErrorFormatter(e);
+ }
+ writer.println(DOCTYPE);
+ writer.println("<html>");
+ writer.println("<head>");
+ writer.println("<script src=" + DOJO + JAVASCRIPT_TYPE + DOJO_CONFIG + "></script>");
+ writer.println("<script src=" + DOJO_INSTANCE + JAVASCRIPT_TYPE + "></script>");
+ writer.println("<link rel=" + quoted("stylesheet") + CSS_TYPE + " href=" + DOJO_THEME + "/>");
+ writer.println("</head>");
+ writer.println("<body id=" + quoted("main") + " class=" + quoted(" claro ") + ">");
+ writer.println("<div id=" + quoted("canvas") + "></div>");
+ writer.println("<div id=" + quoted("data") + "style=" + quoted("display: none;") + ">");
+ return writer;
+ }
+
+ void close(PrintWriter writer) {
+ writer.println("</div>");
+ writer.println("</body>");
+ writer.println("</html>");
+ }
+
+ static String quoted(String s) {
+ return '"' + s + '"';
+ }
+
+}
Propchange: openjpa/sandboxes/jest/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/jest/DojoFormatter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: openjpa/sandboxes/jest/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/jest/DojoFormatter.java
------------------------------------------------------------------------------
svn:mime-type = text/plain