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