]> source.dussan.org Git - vaadin-framework.git/commitdiff
client console into a window, removed need for trailing slash in uri
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 17 Aug 2007 06:38:15 +0000 (06:38 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 17 Aug 2007 06:38:15 +0000 (06:38 +0000)
svn changeset:2035/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
src/com/itmill/toolkit/terminal/gwt/client/Console.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/client/DebugConsole.java [new file with mode: 0755]
src/com/itmill/toolkit/terminal/gwt/client/NullConsole.java [new file with mode: 0644]
src/com/itmill/toolkit/terminal/gwt/server/ApplicationServlet.java

index 829849e5a62bd5973137bbf95c0ccec1bafcbb25..298807937951e06cd5943014f0502c98cee258a9 100755 (executable)
@@ -16,6 +16,7 @@ import com.google.gwt.json.client.JSONObject;
 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;
@@ -23,6 +24,7 @@ import com.google.gwt.user.client.ui.RootPanel;
 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>.
@@ -55,14 +57,23 @@ public class ApplicationConnection implements EntryPoint, FocusListener {
        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;
        }-*/;
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Console.java b/src/com/itmill/toolkit/terminal/gwt/client/Console.java
deleted file mode 100755 (executable)
index f39390b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-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());
-       }
-}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/DebugConsole.java b/src/com/itmill/toolkit/terminal/gwt/client/DebugConsole.java
new file mode 100755 (executable)
index 0000000..b15f547
--- /dev/null
@@ -0,0 +1,55 @@
+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());
+       }
+}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/NullConsole.java b/src/com/itmill/toolkit/terminal/gwt/client/NullConsole.java
new file mode 100644 (file)
index 0000000..44f4aed
--- /dev/null
@@ -0,0 +1,22 @@
+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) {
+       }
+
+}
index af66067c4c0ded2275829edc0641a369cbc912b3..27f8f7594256efbb07a622b218ef0c65a7effb62 100644 (file)
@@ -422,7 +422,10 @@ public class ApplicationServlet extends HttpServlet {
                         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");
@@ -430,7 +433,7 @@ public class ApplicationServlet extends HttpServlet {
                
                
                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:'");
@@ -441,20 +444,19 @@ public class ApplicationServlet extends HttpServlet {
                // 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");