View Javadoc

1   package org.kuali.student.common.ui.client.util;
2   
3   import com.google.gwt.dom.client.Document;
4   import com.google.gwt.dom.client.NodeList;
5   import com.google.gwt.user.client.Window;
6   import com.google.gwt.user.client.ui.UIObject;
7   import com.google.gwt.user.client.ui.Widget;
8   
9   public class PrintUtils {
10      private static int num = 0;
11      /**
12       * Shows the uiObject content in a printable form in a new window
13       * @param uiObject
14       */
15      public static void print(UIObject uiObject){
16      	String headTag = "";
17      	StringBuilder styleTags = new StringBuilder("");
18      	NodeList<com.google.gwt.dom.client.Element> head = Document.get().getElementsByTagName("head");
19      	if(head.getItem(0) != null){
20      		com.google.gwt.dom.client.Element e = head.getItem(0);
21      		NodeList<com.google.gwt.dom.client.Element> styles = e.getElementsByTagName("style");
22      		for(int i = 0; i < styles.getLength(); i++){
23      			styleTags.append(styles.getItem(i).getString());
24      			
25      		}
26      	}
27      	headTag = "<HEAD><TITLE>Print - " + Window.getTitle() + "</TITLE>" + styleTags + "</HEAD>";
28      	openPrintWindow(uiObject.getElement().getString(), headTag, num);
29      	num++;
30      }
31      
32      private static native void openPrintWindow(String html, String headTag, int num)/*-{
33      	var win = $wnd.open("", num, "width=900,height=600,scrollbars=1");
34      	var doc = win.document;
35      	doc.open("text/html", "replace");
36      	if(navigator.appName == "Microsoft Internet Explorer"){
37      	    doc.write("<HTML style='overflow: auto;'>");
38      	    doc.write(headTag);
39      	    doc.write("<BODY style='overflow: auto;'>");
40      	} else {
41      	    doc.write("<HTML style='overflow: inherit;'>");
42              doc.write(headTag);
43              doc.write("<BODY style='overflow: inherit;'>");
44      	}
45      	doc.write("<a class='ks-button-primary' style='cursor: pointer;' onClick='print();'>Print</a>");
46      	doc.write("<DIV class='printPage'>");
47      	doc.writeln(html);
48      	doc.writeln("</DIV></BODY></HTML>");
49      	doc.close();
50      	
51      }-*/;
52  
53  }