import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
+import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.FocusListener;
import com.google.gwt.user.client.ui.FocusWidget;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Widget;
import com.itmill.toolkit.terminal.gwt.client.ui.IContextMenu;
import com.itmill.toolkit.terminal.gwt.client.ui.IView;
+import com.itmill.toolkit.terminal.gwt.client.ui.IWindow;
/**
* Entry point classes define <code>onModuleLoad()</code>.
public void onModuleLoad() {
appUri = getAppUri();
-
- // TODO Hardcoded (finnish) id -> change
- console = new Console(RootPanel.get("itmtk-loki"));
+
+ if(isDebugMode()) {
+ console = new DebugConsole();
+ } else {
+ console = new NullConsole();
+ }
makeUidlRequest("repaintAll=1");
}
+ private native boolean isDebugMode() /*-{
+ var uri = $wnd.location;
+ var re = /debug[^\/]*$/;
+ return re.test(uri);
+ }-*/;
+
private native String getAppUri()/*-{
return $wnd.itmtk.appUri;
}-*/;
+++ /dev/null
-package com.itmill.toolkit.terminal.gwt.client;
-
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.RootPanel;
-
-public final class Console {
-
- private RootPanel rp;
-
- public Console(RootPanel rp) {
- this.rp = rp;
- }
-
- public void log(String msg) {
- rp.add(new Label(msg));
- System.out.println(msg);
- }
-
- public void error(String msg) {
- rp.add((new Label(msg)));
- System.out.println(msg);
- }
-
- public void printObject(Object msg) {
- rp.add((new Label(msg.toString())));
- }
-
- public void dirUIDL(UIDL u) {
- rp.add(u.print_r());
- }
-}
--- /dev/null
+package com.itmill.toolkit.terminal.gwt.client;
+
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.itmill.toolkit.terminal.gwt.client.ui.IWindow;
+
+public final class DebugConsole extends IWindow implements Console {
+
+ private FlowPanel panel;
+
+ public DebugConsole() {
+ super();
+ panel = new FlowPanel();
+ this.setWidget(panel);
+ minimize();
+ show();
+ }
+
+ private void minimize() {
+ // TODO stack to bottom (create window manager of some sort)
+ setPixelSize(60, 60);
+ setPopupPosition(Window.getClientWidth() - 66, Window.getClientHeight() - 66);
+ }
+
+ /* (non-Javadoc)
+ * @see com.itmill.toolkit.terminal.gwt.client.Console#log(java.lang.String)
+ */
+ public void log(String msg) {
+ panel.add(new Label(msg));
+ System.out.println(msg);
+ }
+
+ /* (non-Javadoc)
+ * @see com.itmill.toolkit.terminal.gwt.client.Console#error(java.lang.String)
+ */
+ public void error(String msg) {
+ panel.add((new Label(msg)));
+ System.out.println(msg);
+ }
+
+ /* (non-Javadoc)
+ * @see com.itmill.toolkit.terminal.gwt.client.Console#printObject(java.lang.Object)
+ */
+ public void printObject(Object msg) {
+ panel.add((new Label(msg.toString())));
+ }
+
+ /* (non-Javadoc)
+ * @see com.itmill.toolkit.terminal.gwt.client.Console#dirUIDL(com.itmill.toolkit.terminal.gwt.client.UIDL)
+ */
+ public void dirUIDL(UIDL u) {
+ panel.add(u.print_r());
+ }
+}
--- /dev/null
+package com.itmill.toolkit.terminal.gwt.client;
+
+/**
+ * Client side console implementation for non-debug mode
+ * that discards all messages.
+ *
+ */
+public class NullConsole implements Console {
+
+ public void dirUIDL(UIDL u) {
+ }
+
+ public void error(String msg) {
+ }
+
+ public void log(String msg) {
+ }
+
+ public void printObject(Object msg) {
+ }
+
+}
Window window, String themeName) throws IOException, MalformedURLException {
response.setContentType("text/html");
BufferedWriter page = new BufferedWriter(new OutputStreamWriter(response.getOutputStream()));
-
+
+ String uri = request.getRequestURL().toString();
+ boolean hasSlash = (uri.charAt(uri.length()-1) == '/') ? true : false;
+
page
.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
+ "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
page.write("<html>\n<head>\n<title>IT Mill Toolkit 5</title>\n" +
- "<meta name='gwt:module' content='../com.itmill.toolkit.terminal.gwt.Client=com.itmill.toolkit.terminal.gwt.Client'>\n" +
+ "<meta name='gwt:module' content='"+ (hasSlash ? "../" : "") +"com.itmill.toolkit.terminal.gwt.Client=com.itmill.toolkit.terminal.gwt.Client'>\n" +
"<script type=\"text/javascript\">\n" +
" var itmtk = {\n" +
" appUri:'");
// virtual server configurations which lose the server name
for (int i = 3; i < urlParts.length; i++)
appUrl += "/" + urlParts[i];
- if (appUrl.endsWith("/"))
+ if (appUrl.endsWith("/")) {
appUrl = appUrl.substring(0, appUrl.length() - 1);
+ }
+
page.write(appUrl);
page.write("'\n};\n" +
"</script>\n" +
"<link REL=\"stylesheet\" TYPE=\"text/css\" HREF=\""+request.getContextPath() + THEME_DIRECTORY_PATH+themeName+"/style.css\">" +
- "</head>\n<body>\n<script language=\"javascript\" src=\"../com.itmill.toolkit.terminal.gwt.Client/gwt.js\"></script>\n" +
+ "</head>\n<body>\n<script language=\"javascript\" src=\""+ (hasSlash ? "../" : "") +"com.itmill.toolkit.terminal.gwt.Client/gwt.js\"></script>\n" +
" <iframe id=\"__gwt_historyFrame\" style=\"width:0;height:0;border:0\"></iframe>\n" +
" <div id=\"itmtk-ajax-window\"></div>" +
- " <div id=\"itmtk-loki\" style=\"width: 100%; position: absolute; left: 0px; bottom: 0; height: 0px; border-top: 1px solid gray; background-color: #f6f6f6; overflow: scroll; font-size: x-small;color:red !important;\"" +
- "></div>\n" +
- "<div id='itm-loki-exp' style='right: 0; bottom: 0px; position: absolute; padding-left: 5px; padding-right: 5px; border-left: 1px solid gray; border-top: 1px solid gray; background-color: #f6f6f6;' onclick='itm_loki_exp()'>console</div><script language='JavaScript'>itm_loki_exp = function() {var l=document.getElementById('itmtk-loki'); var e=document.getElementById('itm-loki-exp'); if (e.style.bottom=='400px') {e.style.bottom='0px'; l.style.height='0px'; e.innerHTML='console';} else {e.style.bottom='400px'; l.style.height='400px'; e.innerHTML='-';}}</script>"+
" <div style=\"position: absolute; right: 5px; top: 5px; color: gray;\"><strong>IT Mill Toolkit 5 Prototype</strong></div>\n" +
" </body>\n" +
"</html>\n");