Author: vjrj Date: 2010-03-30 02:17:04 +0200 (Tue, 30 Mar 2010) New Revision: 1146 Added: trunk/src/main/java/com/google/gwt/wave/public/README trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js-pre2.0.0 trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java.txt trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java.txt trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/KuneSeleniumTestHelper.java.txt trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java.txt trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SeleniumTestHelper.java.txt trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java.txt trunk/war/WEB-INF/localhost.cer trunk/war/WEB-INF/localhost.key Removed: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/KuneSeleniumTestHelper.java trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SeleniumTestHelper.java trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java Modified: trunk/TODO trunk/pom.xml trunk/src/main/java/com/google/gwt/wave/client/WaveEmbed.java trunk/src/main/java/com/google/gwt/wave/client/WaveWidget.java trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js trunk/src/main/java/org/ourproject/kune/app/public/css/workspace.css trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kimg.css trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/img/RTEImgResources.java trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/img/rteimg.css trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java Log: some gwt and wave updates Modified: trunk/TODO =================================================================== --- trunk/TODO 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/TODO 2010-03-30 00:17:04 UTC (rev 1146) @@ -147,6 +147,7 @@ ** danigb,vjrj URLs public/workspace braimstorming Read this -> http://googlewebmastercentral.blogspot.com/2009/10/proposal-for-making-ajax-... +http://stackoverflow.com/questions/2430244/making-gwt-application-crawlable-... Nowadays: - ws: #group.tool.container.content - public (prov): /public/group.tool.container.content. Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/pom.xml 2010-03-30 00:17:04 UTC (rev 1146) @@ -72,7 +72,7 @@ <dependency> <groupId>com.allen_sauer.gwt.log.gwt-log</groupId> <artifactId>gwt-log</artifactId> - <version>2.6.2</version> + <version>3.0.1</version> </dependency> <dependency> <groupId>com.allen_sauer.gwt.voices.gwt-voices</groupId> @@ -94,7 +94,7 @@ <dependency> <groupId>com.calclab</groupId> <artifactId>suco</artifactId> - <version>0.6.1</version> + <version>0.6.5</version> </dependency> <dependency> <groupId>jmagick</groupId> @@ -263,18 +263,16 @@ <version>1.7.0.0</version> </dependency> - <!-- jetty dependencies --> - <!-- <dependency>--> - <!-- <groupId>org.mortbay.jetty</groupId>--> - <!-- <artifactId>jetty-util</artifactId>--> - <!-- <version>6.1.11</version>--> - <!-- --> - <!-- <version>7.0.0.pre5</version>--> - <!-- --> - <!-- <scope>provided</scope>--> - <!-- </dependency>--> +<!-- jetty dependencies --> <dependency> <groupId>org.mortbay.jetty</groupId> + <artifactId>jetty-util</artifactId> + <version>6.1.11</version> +<!-- <version>7.0.0.pre5</version>--> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <!-- <artifactId>jetty-maven-plugin</artifactId>--> <!-- <version>7.0.0.1beta0</version>--> @@ -292,6 +290,7 @@ <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> + <scope>test</scope> <version>1.6</version> </dependency> <dependency> @@ -308,12 +307,12 @@ <scope>test</scope> --> </dependency> - <dependency> - <groupId>org.openqa.selenium.client-drivers</groupId> - <artifactId>selenium-java-client-driver</artifactId> - <version>1.0-beta-1</version> - <scope>test</scope> - </dependency> +<!-- <dependency>--> +<!-- <groupId>org.openqa.selenium.client-drivers</groupId>--> +<!-- <artifactId>selenium-java-client-driver</artifactId>--> +<!-- <version>1.0-beta-1</version>--> +<!-- <scope>test</scope>--> +<!-- </dependency>--> <!-- public side --> <dependency> @@ -558,7 +557,7 @@ <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> <!-- http://mojo.codehaus.org/gwt-maven-plugin/index.html --> - <version>1.2-SNAPSHOT</version> + <version>1.2</version> <executions> <execution> <configuration> @@ -592,10 +591,8 @@ </plugin> <plugin> <groupId>org.mortbay.jetty</groupId> - <!-- - <artifactId>jetty-maven-plugin</artifactId> - <version>7.0.0.1beta0</version> - --> +<!-- <artifactId>jetty-maven-plugin</artifactId>--> +<!-- <version>7.0.0.1beta0</version>--> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.11</version> <configuration> <contextPath>/</contextPath> @@ -699,25 +696,25 @@ </execution> </executions> </plugin> +<!-- <plugin>--> +<!-- <groupId>org.codehaus.mojo</groupId>--> +<!-- <artifactId>selenium-maven-plugin</artifactId>--> +<!-- <configuration>--> +<!-- <port>4441</port>--> +<!-- </configuration>--> +<!-- <executions>--> +<!-- <execution>--> +<!-- <phase>pre-integration-test</phase>--> +<!-- <goals>--> +<!-- <goal>start-server</goal>--> +<!-- </goals>--> +<!-- <configuration>--> +<!-- <background>true</background>--> +<!-- </configuration>--> +<!-- </execution>--> +<!-- </executions>--> +<!-- </plugin>--> <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>selenium-maven-plugin</artifactId> - <configuration> - <port>4441</port> - </configuration> - <executions> - <execution> - <phase>pre-integration-test</phase> - <goals> - <goal>start-server</goal> - </goals> - <configuration> - <background>true</background> - </configuration> - </execution> - </executions> - </plugin> - <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> Modified: trunk/src/main/java/com/google/gwt/wave/client/WaveEmbed.java =================================================================== --- trunk/src/main/java/com/google/gwt/wave/client/WaveEmbed.java 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/main/java/com/google/gwt/wave/client/WaveEmbed.java 2010-03-30 00:17:04 UTC (rev 1146) @@ -9,128 +9,146 @@ final class WaveEmbed extends JavaScriptObject { - protected WaveEmbed() { - // Required by JavaScriptObject types - } + /** + * Creates a new WaveEmbed using the default Wave server URL: + * <code>http://wave-devel.corp.google.com/a/google.com/</code> + */ + public static native WaveEmbed newInstance() /*-{ + return new $wnd.WavePanel(); + }-*/; - // Undocumented: - // loadSearch - // setContactProvider - // provideContacts + // Undocumented: + // loadSearch + // setContactProvider + // provideContacts - // Not yet available: - // addParticipant - // addReply - - /** - * Creates a new WaveEmbed using the default Wave server URL: - * <code>http://wave-devel.corp.google.com/a/google.com/</code> - */ - public static native WaveEmbed newInstance() /*-{ - return new $wnd.WavePanel(); - }-*/; + // Not yet available: + // addParticipant + // addReply - /** - * Creates a new WaveEmbed using the specified Wave server URL. - * - * @param serverURL The URL of the Wave server to use - */ - public static native WaveEmbed newInstance(String serverURL) /*-{ - return new $wnd.WavePanel(serverURL); - }-*/; + /** + * Creates a new WaveEmbed using the specified Wave server URL. + * + * @param serverURL + * The URL of the Wave server to use + */ + public static native WaveEmbed newInstance(String serverURL) /*-{ + // http://code.google.com/p/google-wave-resources/issues/detail?id=486 + var nwave = new $wnd.WavePanel(serverURL); + var uiConfig = new $wnd.WavePanel.UIConfig(); + uiConfig.setFooterEnabled(true); + uiConfig.setHeaderEnabled(true); + uiConfig.setToolbarEnabled(true); + nwave.setUIConfigObject(uiConfig); + return nwave; + }-*/; - /** - * Set the UI configuration for the wave. This must be done before init() is - * called. Note that fontSize must be expressed in points, such as "12pts". - * - * @param bgColor - * @param color - * @param font - * @param fontSize - */ - public native void setUIConfig(String bgColor, String color, String font, - String fontSize) /*-{ - this.setUIConfig(bgColor, color, font, fontSize); - }-*/; + // Called from JSNI + @SuppressWarnings("unused") + private static void fireWaveLoadEvent(final HasWaveLoadHandlers source, final String waveId) { + final UncaughtExceptionHandler ueh = GWT.getUncaughtExceptionHandler(); + final WaveLoadEvent event = new WaveLoadEvent(waveId); - /** - * Actually creates the wave >iframe> inside the given container. This is - * not done in the constructor so the caller can set various initialization - * options before the creation. - * - * @param container The container element which will hold the Wave >IFRAME> - */ - public native void init(Element container) /*-{ - this.init(container); - }-*/; + if (ueh != null) { + try { + source.fireEvent(event); + } catch (final Exception ex) { + ueh.onUncaughtException(ex); + } + } else { + source.fireEvent(event); + } + } - /** - * Loads the given wave into the wavePanel. This can be called before or after - * init. - * - * @param waveId The Id of the Wave to load - */ - public native void loadWave(String waveId) /*-{ - this.loadWave(waveId); - }-*/; + protected WaveEmbed() { + // Required by JavaScriptObject types + } - /** - * Loads the given wave into the wavePanel. This can be called before or after - * init. - * - * @param source An instance of HasWaveLoadHandlers where the WaveLoadEvent - * will be dispatched from - * @param waveId The Id of the Wave to load - */ - public native void loadWave(HasWaveLoadHandlers source, String waveId) /*-{ - this.loadWave(waveId, function() { + /** + * Adds the current user as a participant to the wave. + * <p> + * NOTE: Not yet functional in developer sandbox! + */ + public native void addParticipant() /*-{ + this.addParticipant(); + }-*/; + + /** + * Adds a reply to the currently loaded wave. An empty reply will be added + * to the wave. + * <p> + * NOTE: Not yet functional in developer sandbox! + */ + public native void addReply() /*-{ + this.addReply(); + }-*/; + + /** + * Returns the ID of the created <iframe> + * + * @return the ID of the created <iframe> + */ + public native String getFrameId() /*-{ + return this.getFrameId(); + }-*/; + + /** + * Actually creates the wave >iframe> inside the given container. This is + * not done in the constructor so the caller can set various initialization + * options before the creation. + * + * @param container + * The container element which will hold the Wave >IFRAME> + */ + public native void init(Element container) /*-{ + this.init(container); + }-*/; + + /** + * Loads the given wave into the wavePanel. This can be called before or + * after init. + * + * @param source + * An instance of HasWaveLoadHandlers where the WaveLoadEvent + * will be dispatched from + * @param waveId + * The Id of the Wave to load + */ + public native void loadWave(HasWaveLoadHandlers source, String waveId) /*-{ + this.loadWave(waveId, function() { @com.google.gwt.wave.client.WaveEmbed::fireWaveLoadEvent(Lcom/google/gwt/wave/client/event/HasWaveLoadHandlers;Ljava/lang/String;)(source, waveId); - }) - }-*/; + }) + }-*/; - // Called from JSNI - @SuppressWarnings("unused") - private static void fireWaveLoadEvent(HasWaveLoadHandlers source, - String waveId) { - UncaughtExceptionHandler ueh = GWT.getUncaughtExceptionHandler(); - WaveLoadEvent event = new WaveLoadEvent(waveId); + /** + * Loads the given wave into the wavePanel. This can be called before or + * after init. + * + * @param waveId + * The Id of the Wave to load + */ + public native void loadWave(String waveId) /*-{ + this.loadWave(waveId); + }-*/; - if (ueh != null) { - try { - source.fireEvent(event); - } catch (Exception ex) { - ueh.onUncaughtException(ex); - } - } else { - source.fireEvent(event); - } - } + public native void setEditMode(boolean value) /*-{ + this.setEditMode(value); + }-*/; - /** - * Returns the ID of the created <iframe> - * - * @return the ID of the created <iframe> - */ - public native String getFrameId() /*-{ - return this.getFrameId(); - }-*/; + public native void setToolbarVisible(boolean value) /*-{ + this.setToolbarVisible(value); + }-*/; - /** - * Adds the current user as a participant to the wave. - * <p> - * NOTE: Not yet functional in developer sandbox! - */ - public native void addParticipant() /*-{ - this.addParticipant(); - }-*/; - - /** - * Adds a reply to the currently loaded wave. An empty reply will be added to - * the wave. - * <p> - * NOTE: Not yet functional in developer sandbox! - */ - public native void addReply() /*-{ - this.addReply(); - }-*/; + /** + * Set the UI configuration for the wave. This must be done before init() is + * called. Note that fontSize must be expressed in points, such as "12pts". + * + * @param bgColor + * @param color + * @param font + * @param fontSize + */ + public native void setUIConfig(String bgColor, String color, String font, String fontSize) /*-{ + this.setUIConfig(bgColor, color, font, fontSize); + }-*/; } Modified: trunk/src/main/java/com/google/gwt/wave/client/WaveWidget.java =================================================================== --- trunk/src/main/java/com/google/gwt/wave/client/WaveWidget.java 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/main/java/com/google/gwt/wave/client/WaveWidget.java 2010-03-30 00:17:04 UTC (rev 1146) @@ -18,6 +18,16 @@ this.waveEmbed = WaveEmbed.newInstance(waveServer); } + // Package protected until this is functional on the developer sandbox + public void addParticipant() { + waveEmbed.addParticipant(); + } + + // Package protected until this is functional on the developer sandbox + public void addReply() { + waveEmbed.addReply(); + } + public HandlerRegistration addWaveLoadHandler(final WaveLoadHandler handler) { return addHandler(handler, WaveLoadEvent.getType()); } @@ -35,6 +45,14 @@ waveEmbed.init(getElement()); } + public void setEditMode(final boolean value) { + waveEmbed.setEditMode(value); + } + + public void setToolbarVisible(final boolean value) { + waveEmbed.setToolbarVisible(value); + } + /** * Set the UI configuration for the wave. This must be done before the panel * is attached to the page. @@ -53,13 +71,4 @@ waveEmbed.setUIConfig(bgColor, color, font, fontSize); } - // Package protected until this is functional on the developer sandbox - void addParticipant() { - waveEmbed.addParticipant(); - } - - // Package protected until this is functional on the developer sandbox - void addReply() { - waveEmbed.addReply(); - } } Added: trunk/src/main/java/com/google/gwt/wave/public/README =================================================================== --- trunk/src/main/java/com/google/gwt/wave/public/README (rev 0) +++ trunk/src/main/java/com/google/gwt/wave/public/README 2010-03-30 00:17:04 UTC (rev 1146) @@ -0,0 +1 @@ +wget http://wave-api.appspot.com/public/embed.js Modified: trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js =================================================================== --- trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js 2010-03-30 00:17:04 UTC (rev 1146) @@ -1,23 +1,22 @@ -// embed.js retreived from http://wave-api.appspot.com/public/embed.js on 2009-06-02 var a, WAVEPANEL_nextId = 0; -if(typeof gadgets == "undefined" || !gadgets.rpc)document.write('<script src="http://wave.google.com/gadgets/js/core:rpc?debug=1&c=1" type="text/javascript"><\/script>'); +if(typeof gadgets == "undefined" || !gadgets.rpc)document.write('<script src="https://wave.google.com/gadgets/js/core:rpc?debug=1&c=1" type="text/javascript"><\/script>'); function WavePanel(b) { this.id_ = WAVEPANEL_nextId++; this.frameId_ = "iframe_panel_" + this.id_; this.eventListeners_ = {}; this.init_ = false; - this.waveRootUrl = b || "http://wave-devel.corp.google.com/a/google.com/" + this.waveRootUrl = b || "https://wave.google.com/a/wavesandbox.com/" } WavePanel.prototype.getId = function() { return this.id_ }; WavePanel.prototype.setContactProvider = function(b) { - if(this.init_)throw"Can only set contact provider before calling init";this.contactProvider_ = b + if(this.init_)throw"Can only set profile provider before calling init";this.profileProvider_ = b }; WavePanel.prototype.init = function(b, c) { this.init_ = true; if(this.initWaveId_ && this.initSearch_)throw"Both an initial wave ID and a search were specified";this.setupRpc_(c); - this.createFrame_(b, this.contactProvider_, this.initWaveId_, this.initSearch_, this.uiConfig_); + this.createFrame_(b); gadgets.rpc.setRelayUrl(this.getFrameId(), this.getRelayUrl_(), false); delete this.initSearch_; delete this.initWaveId_ @@ -53,45 +52,53 @@ gadgets.rpc.register("load_wave_done", function() { e(this) }); - gadgets.rpc.register("request_contacts", function() { - if(!c.contactProvider_)throw"Got a contacts request but no contact provider is set.";c.contactProvider_(this.a[0]) + gadgets.rpc.register("digest_search_done", function() { + e(this) }); + gadgets.rpc.register("request_profiles", function() { + if(!c.profileProvider_)throw"Got a profiles request but no profile provider is set.";c.profileProvider_(this.a[0]) + }); gadgets.rpc.registerDefault(function() { - var d = this.s, f = this.a[0], h = c.eventListeners_[d]; - if(h)for(var g in h)h[g](f) + var d = this.s, f = this.a[0]; + if(d = c.eventListeners_[d])for(var g in d)d[g](f) }) } }; -a.createFrame_ = function(b, c, e, d, f) { - var h = document.createElement("div"); - h.innerHTML = '<iframe name="' + this.frameId_ + '" >'; - var g = h.firstChild; - g.id = this.frameId_; - g.width = "100%"; - g.height = "100%"; - g.frameBorder = "no"; - g.scrolling = "no"; - g.marginHeight = 0; - g.marginWidth = 0; - g.className = "embed-iframe"; - g.src = this.iframeUrl_(c, e, d, f); +a.createFrame_ = function(b) { + var c = document.createElement("div"); + c.innerHTML = '<iframe name="' + this.frameId_ + '" >'; + c = c.firstChild; + c.id = this.frameId_; + c.width = "100%"; + c.height = "100%"; + c.frameBorder = "no"; + c.scrolling = "no"; + c.marginHeight = 0; + c.marginWidth = 0; + c.className = "embed-iframe"; + c.src = this.iframeUrl_(); b = b || document.body; - b.appendChild(g); - return g + b.appendChild(c); + return c }; -a.iframeUrl_ = function(b, c, e, d) { - var f = []; - f.push("client.type=embedded"); - f.push("parent=" + escape("http://" + window.location.host + window.location.pathname)); - b && f.push("ext_contacts=1"); - c && f.push("wave_id=" + encodeURIComponent(c)); - e && f.push("search_query=" + encodeURIComponent(e)); - if(d) { - d.bgcolor && f.push("bgcolor=" + encodeURIComponent(d.bgcolor)); - d.color && f.push("color=" + encodeURIComponent(d.color)); - d.font && f.push("font=" + encodeURIComponent(d.font)); - d.fontsize && f.push("fontsize=" + encodeURIComponent(d.fontsize)) - }return this.waveRootUrl + "?" + f.join("&") +a.iframeUrl_ = function() { + var b = []; + b.push("client.type=embedded"); + b.push("parent=" + escape(window.location.protocol + "//" + window.location.host + window.location.pathname)); + this.profileProvider_ && b.push("ext_profiles=1"); + this.authToken_ && b.push("auth=" + encodeURIComponent(this.authToken_)); + this.initWaveId_ && b.push("wave_id=" + encodeURIComponent(this.initWaveId_)); + this.initSearch_ && b.push("search_query=" + encodeURIComponent(this.initSearch_)); + if(this.uiConfig_) { + var c = this.uiConfig_; + b.push("bgcolor=" + encodeURIComponent(c.getBgcolor())); + b.push("color=" + encodeURIComponent(c.getColor())); + b.push("font=" + encodeURIComponent(c.getFont())); + b.push("fontsize=" + encodeURIComponent(c.getFontSize())); + b.push("embed_header=" + c.getHeaderEnabled()); + b.push("embed_footer=" + c.getFooterEnabled()); + b.push("embed_toolbar=" + c.getToolbarEnabled()) + }return this.waveRootUrl + "?" + b.join("&") }; a.addListener = function(b, c) { var e = this.eventListeners_, d = e[b]; @@ -108,35 +115,44 @@ if(c && c.length > 0) { var e = c[c.length - 1]; b = c[0] + "://"; - for(var d = 0;d < e.length;++d) { - if(e[d] == "/")break; - b += e[d] + for(c = 0;c < e.length;++c) { + if(e[c] == "/")break; + b += e[c] }b += "/" }return b + "gadgets/files/container/rpc_relay.html" }; a.loadWave = function(b, c) { if(this.init_) { - var e = WavePanel.pushCallback_(c); - gadgets.rpc.call(this.getFrameId(), "load_wave", null, e, b) + c = WavePanel.pushCallback_(c); + gadgets.rpc.call(this.getFrameId(), "load_wave", null, c, b) }else this.initWaveId_ = b }; a.loadSearch = function(b, c) { if(this.init_) { - var e = WavePanel.pushCallback_(c); - gadgets.rpc.call(this.getFrameId(), "digest_search", null, e, b) + c = WavePanel.pushCallback_(c); + gadgets.rpc.call(this.getFrameId(), "digest_search", null, c, b) }else this.initSearch_ = b }; a.setUIConfig = function(b, c, e, d) { - if(this.init_)throw"Cannot change the UIConfig after Init has been called.";else this.uiConfig_ = {bgcolor:b, color:c, font:e, fontsize:d} + if(this.init_)throw"Cannot change the UIConfig after Init has been called.";else { + if(!this.uiConfig_)this.uiConfig_ = new WavePanel.UIConfig; + this.uiConfig_.setBgcolor(b); + this.uiConfig_.setColor(c); + this.uiConfig_.setFont(e); + this.uiConfig_.setFontSize(d) + } }; +a.setUIConfigObject = function(b) { + if(this.init_)throw"Cannot change the UIConfig after Init has been called.";else this.uiConfig_ = b +}; a.addParticipant = function() { if(!this.init_)throw"Init not called.";gadgets.rpc.call(this.getFrameId(), "add_participant", null, "") }; a.addReply = function(b, c) { - if(!this.init_)throw"Init not called.";var e = WavePanel.pushCallback_(c); - gadgets.rpc.call(this.getFrameId(), "add_reply", null, e, b) + if(!this.init_)throw"Init not called.";c = WavePanel.pushCallback_(c); + gadgets.rpc.call(this.getFrameId(), "add_reply", null, c, b) }; -a.provideContacts = function(b) { +a.provideProfiles = function(b) { if(!this.init_)throw"Init not called.";var c = []; for(var e in b) { var d = b[e]; @@ -145,5 +161,69 @@ c.push(d.lastName); c.push(d.photoUrl) }c.unshift(c.length / 4); - gadgets.rpc.call(this.getFrameId(), "provide_contacts", null, c) + gadgets.rpc.call(this.getFrameId(), "provide_profiles", null, c) }; +a.setAuthToken = function(b) { + this.authToken_ = b +}; +a.setContacts = function(b) { + if(!this.init_)throw"Init not called.";gadgets.rpc.call(this.getFrameId(), "set_contacts", null, b) +}; +a.setEditMode = function(b) { + if(!this.init_)throw"Init not called.";b = b ? "true" : "false"; + gadgets.rpc.call(this.getFrameId(), "set_edit_mode", null, b) +}; +a.setToolbarVisible = function(b) { + if(!this.init_)throw"Init not called.";b = b ? "true" : "false"; + gadgets.rpc.call(this.getFrameId(), "set_toolbar_visible", null, b) +}; +WavePanel.UIConfig = function() { + this.bgcolor_ = "transparent"; + this.color_ = "black"; + this.font_ = "Arial"; + this.fontsize_ = "8pt"; + this.toolbar_ = this.footer_ = this.header_ = false +}; +a = WavePanel.UIConfig.prototype; +a.getBgcolor = function() { + return this.bgcolor_ +}; +a.setBgcolor = function(b) { + this.bgcolor_ = b +}; +a.getColor = function() { + return this.color_ +}; +a.setColor = function(b) { + this.color_ = b +}; +a.getFont = function() { + return this.font_ +}; +a.setFont = function(b) { + this.font_ = b +}; +a.getFontSize = function() { + return this.fontsize_ +}; +a.setFontSize = function(b) { + this.fontsize_ = b +}; +a.getHeaderEnabled = function() { + return this.header_ +}; +a.setHeaderEnabled = function(b) { + this.header_ = b +}; +a.getFooterEnabled = function() { + return this.footer_ +}; +a.setFooterEnabled = function(b) { + this.footer_ = b +}; +a.getToolbarEnabled = function() { + return this.toolbar_ +}; +a.setToolbarEnabled = function(b) { + this.toolbar_ = b +}; Added: trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js-pre2.0.0 =================================================================== --- trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js-pre2.0.0 (rev 0) +++ trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js-pre2.0.0 2010-03-30 00:17:04 UTC (rev 1146) @@ -0,0 +1,149 @@ +// embed.js retreived from http://wave-api.appspot.com/public/embed.js on 2009-06-02 +var a, WAVEPANEL_nextId = 0; +if(typeof gadgets == "undefined" || !gadgets.rpc)document.write('<script src="http://wave.google.com/gadgets/js/core:rpc?debug=1&c=1" type="text/javascript"><\/script>'); +function WavePanel(b) { + this.id_ = WAVEPANEL_nextId++; + this.frameId_ = "iframe_panel_" + this.id_; + this.eventListeners_ = {}; + this.init_ = false; + this.waveRootUrl = b || "http://wave-devel.corp.google.com/a/google.com/" +} +WavePanel.prototype.getId = function() { + return this.id_ +}; +WavePanel.prototype.setContactProvider = function(b) { + if(this.init_)throw"Can only set contact provider before calling init";this.contactProvider_ = b +}; +WavePanel.prototype.init = function(b, c) { + this.init_ = true; + if(this.initWaveId_ && this.initSearch_)throw"Both an initial wave ID and a search were specified";this.setupRpc_(c); + this.createFrame_(b, this.contactProvider_, this.initWaveId_, this.initSearch_, this.uiConfig_); + gadgets.rpc.setRelayUrl(this.getFrameId(), this.getRelayUrl_(), false); + delete this.initSearch_; + delete this.initWaveId_ +}; +WavePanel.rpcSetup_ = false; +WavePanel.callbackQueue_ = {}; +WavePanel.nextCallbackId = 0; +WavePanel.pushCallback_ = function(b) { + if(!b)return""; + var c = "" + WavePanel.nextCallbackId; + WavePanel.nextCallbackId++; + WavePanel.callbackQueue_[c] = b; + return c +}; +WavePanel.popCallback_ = function(b) { + if(b == "")return null; + var c = WavePanel.callbackQueue_[b]; + delete WavePanel.callbackQueue_[b]; + return c +}; +a = WavePanel.prototype; +a.setupRpc_ = function(b) { + if(!this.rpcSetup_) { + this.rpcSetup_ = true; + var c = this; + gadgets.rpc.register("load_done", function() { + b && b() + }); + var e = function(d) { + var f = WavePanel.popCallback_(d.a[0]); + f && f(d.a[1]) + }; + gadgets.rpc.register("load_wave_done", function() { + e(this) + }); + gadgets.rpc.register("request_contacts", function() { + if(!c.contactProvider_)throw"Got a contacts request but no contact provider is set.";c.contactProvider_(this.a[0]) + }); + gadgets.rpc.registerDefault(function() { + var d = this.s, f = this.a[0], h = c.eventListeners_[d]; + if(h)for(var g in h)h[g](f) + }) + } +}; +a.createFrame_ = function(b, c, e, d, f) { + var h = document.createElement("div"); + h.innerHTML = '<iframe name="' + this.frameId_ + '" >'; + var g = h.firstChild; + g.id = this.frameId_; + g.width = "100%"; + g.height = "100%"; + g.frameBorder = "no"; + g.scrolling = "no"; + g.marginHeight = 0; + g.marginWidth = 0; + g.className = "embed-iframe"; + g.src = this.iframeUrl_(c, e, d, f); + b = b || document.body; + b.appendChild(g); + return g +}; +a.iframeUrl_ = function(b, c, e, d) { + var f = []; + f.push("client.type=embedded"); + f.push("parent=" + escape("http://" + window.location.host + window.location.pathname)); + b && f.push("ext_contacts=1"); + c && f.push("wave_id=" + encodeURIComponent(c)); + e && f.push("search_query=" + encodeURIComponent(e)); + if(d) { + d.bgcolor && f.push("bgcolor=" + encodeURIComponent(d.bgcolor)); + d.color && f.push("color=" + encodeURIComponent(d.color)); + d.font && f.push("font=" + encodeURIComponent(d.font)); + d.fontsize && f.push("fontsize=" + encodeURIComponent(d.fontsize)) + }return this.waveRootUrl + "?" + f.join("&") +}; +a.addListener = function(b, c) { + var e = this.eventListeners_, d = e[b]; + if(!d) { + d = []; + e[b] = d + }d.push(c) +}; +a.getFrameId = function() { + return this.frameId_ +}; +a.getRelayUrl_ = function() { + var b = this.waveRootUrl, c = b.split("://"); + if(c && c.length > 0) { + var e = c[c.length - 1]; + b = c[0] + "://"; + for(var d = 0;d < e.length;++d) { + if(e[d] == "/")break; + b += e[d] + }b += "/" + }return b + "gadgets/files/container/rpc_relay.html" +}; +a.loadWave = function(b, c) { + if(this.init_) { + var e = WavePanel.pushCallback_(c); + gadgets.rpc.call(this.getFrameId(), "load_wave", null, e, b) + }else this.initWaveId_ = b +}; +a.loadSearch = function(b, c) { + if(this.init_) { + var e = WavePanel.pushCallback_(c); + gadgets.rpc.call(this.getFrameId(), "digest_search", null, e, b) + }else this.initSearch_ = b +}; +a.setUIConfig = function(b, c, e, d) { + if(this.init_)throw"Cannot change the UIConfig after Init has been called.";else this.uiConfig_ = {bgcolor:b, color:c, font:e, fontsize:d} +}; +a.addParticipant = function() { + if(!this.init_)throw"Init not called.";gadgets.rpc.call(this.getFrameId(), "add_participant", null, "") +}; +a.addReply = function(b, c) { + if(!this.init_)throw"Init not called.";var e = WavePanel.pushCallback_(c); + gadgets.rpc.call(this.getFrameId(), "add_reply", null, e, b) +}; +a.provideContacts = function(b) { + if(!this.init_)throw"Init not called.";var c = []; + for(var e in b) { + var d = b[e]; + c.push(e); + c.push(d.firstName); + c.push(d.lastName); + c.push(d.photoUrl) + }c.unshift(c.length / 4); + gadgets.rpc.call(this.getFrameId(), "provide_contacts", null, c) +}; Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/workspace.css =================================================================== --- trunk/src/main/java/org/ourproject/kune/app/public/css/workspace.css 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/main/java/org/ourproject/kune/app/public/css/workspace.css 2010-03-30 00:17:04 UTC (rev 1146) @@ -549,6 +549,7 @@ .kune-EditableLabel-high { background-color: #FFFBC1; cursor: pointer; + cursor: hand; } .kune-EditableLabel-high span { Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java 2010-03-30 00:17:04 UTC (rev 1146) @@ -28,7 +28,6 @@ import org.ourproject.kune.platf.client.actions.Shortcut; import org.ourproject.kune.platf.client.app.Application; import org.ourproject.kune.platf.client.dto.InitDataDTO; -import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.dto.UserInfoDTO; import org.ourproject.kune.platf.client.i18n.I18nTranslationService; import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister; @@ -191,12 +190,14 @@ // FIXME: Avatar provider final AvatarProvider avatarProvider = new AvatarProvider() { public String getAvatarURL(final XmppURI userURI) { - if (userURI.getHost().equals(chatOptions.domain)) { - return downloadUtils.get().getLogoImageUrl(new StateToken(userURI.getNode())); - } else { - return ""; - // return "images/person-def.gif"; - } + // if (userURI.getHost().equals(chatOptions.domain)) { + // FIXME + // return downloadUtils.get().getLogoImageUrl(new + // StateToken(userURI.getNode())); + // } else { + // return ""; + // } + return "images/person-def.gif"; } }; final String initialWindowTitle = Window.getTitle(); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kimg.css =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kimg.css 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kimg.css 2010-03-30 00:17:04 UTC (rev 1146) @@ -1,3 +1,4 @@ +@external k-icon-info,k-icon-language,k-icon-kuneIcon16,k-icon-bug,k-icon-prefs,k-icon-groupHome,k-icon-addGreen,k-icon-maximize,k-icon-minimize; @sprite div .k-icon-info { gwt-image: "info"; Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/img/RTEImgResources.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/img/RTEImgResources.java 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/img/RTEImgResources.java 2010-03-30 00:17:04 UTC (rev 1146) @@ -2,7 +2,6 @@ import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.ImageResource; -import com.google.gwt.resources.client.CssResource.Strict; // @PMD:REVIEWED:TooManyMethods: by vjrj on 27/05/09 0:06 public interface RTEImgResources extends ClientBundle { @@ -29,7 +28,6 @@ ImageResource copy(); @Source("rteimg.css") - @Strict RTEImgCssResource css(); @Source("cut.png") Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/img/rteimg.css =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/img/rteimg.css 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/img/rteimg.css 2010-03-30 00:17:04 UTC (rev 1146) @@ -1,3 +1,4 @@ +@external k-icon-underline,k-icon-superscript,k-icon-subscript,k-icon-film,k-icon-strikeout,k-icon-removeFormat,k-icon-link,k-icon-linkbreak,k-icon-italic,k-icon-incrementindent,k-icon-images,k-icon-hfixedline,k-icon-fontheight,k-icon-fontcolor,k-icon-edithtml,k-icon-defaultnumbering,k-icon-defaultbullet,k-icon-decrementindent,k-icon-charfontname,k-icon-centerpara,k-icon-bold,k-icon-backcolor,k-icon-alignright,k-icon-alignleft,k-icon-specialchars,k-icon-copy,k-icon-cut,k-icon-insertspreadsheet,k-icon-insertsymbol,k-icon-inserttable,k-icon-paste,k-icon-redo,k-icon-save,k-icon-selectall,k-icon-undo; @sprite div .k-icon-underline { gwt-image: "underline"; } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2010-03-30 00:17:04 UTC (rev 1146) @@ -103,6 +103,8 @@ }); waveWidget.loadWave(waveId); setWidgetAsContent(waveWidget, false); + waveWidget.setToolbarVisible(true); + waveWidget.setEditMode(false); } public void setWidgetAsContent(final Widget widget, final boolean setDefMargins) { Deleted: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java 2010-03-30 00:17:04 UTC (rev 1146) @@ -1,18 +0,0 @@ -package org.ourproject.kune.platf.integration.selenium; - -import org.junit.Test; -import org.ourproject.kune.platf.client.dto.StateToken; -import org.ourproject.kune.workspace.client.entityheader.EntityTextLogo; - -public class ContentAddSeleniumTest extends KuneSeleniumTestHelper { - @Test - public void wikiEditByAny() throws Exception { - String shortname = "g" + genPrefix(); - String longName = "testing" + genPrefix(); - newGroupRegistrationDefLicense(shortname, longName, "some description", "tag1 tag2"); - waitForTextInside(gid(EntityTextLogo.LOGO_NAME), longName); - open(new StateToken(shortname, "")); - signOut(); - // TODO: need to add more ids - } -} Copied: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java.txt (from rev 1140, trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java) =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java.txt (rev 0) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java.txt 2010-03-30 00:17:04 UTC (rev 1146) @@ -0,0 +1,18 @@ +package org.ourproject.kune.platf.integration.selenium; + +import org.junit.Test; +import org.ourproject.kune.platf.client.dto.StateToken; +import org.ourproject.kune.workspace.client.entityheader.EntityTextLogo; + +public class ContentAddSeleniumTest extends KuneSeleniumTestHelper { + @Test + public void wikiEditByAny() throws Exception { + String shortname = "g" + genPrefix(); + String longName = "testing" + genPrefix(); + newGroupRegistrationDefLicense(shortname, longName, "some description", "tag1 tag2"); + waitForTextInside(gid(EntityTextLogo.LOGO_NAME), longName); + open(new StateToken(shortname, "")); + signOut(); + // TODO: need to add more ids + } +} Deleted: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java 2010-03-30 00:17:04 UTC (rev 1146) @@ -1,31 +0,0 @@ -package org.ourproject.kune.platf.integration.selenium; - -import java.io.File; -import java.io.IOException; - -import org.junit.Ignore; -import org.ourproject.kune.platf.client.ui.download.FileConstants; -import org.ourproject.kune.workspace.client.options.GroupOptionsPresenter; -import org.ourproject.kune.workspace.client.options.logo.GroupOptionsLogoPanel; - -public class EntityLogoSeleniumTest extends KuneSeleniumTestHelper { - - @Ignore - public void testEntityLogoUpload() throws Exception { - openDefPage(); - signIn(); - setLogo("kune-logo-400px.png"); - setLogo("kune-logo-without-text.png"); - } - - private void setLogo(final String filename) throws Exception, IOException { - click(gid(GroupOptionsPresenter.GROUP_OPTIONS_ICON)); - // waitForTextInside(EntityOptionsLogoPanel.PANEL_ID, - // PlatfMessages.ENT_OPTIONS_GROUP_TITLE); - click(GroupOptionsLogoPanel.BUTTON_ID); - final File dir = new File("."); - type(FileConstants.GROUP_LOGO_FIELD, dir.getCanonicalPath() + File.separator + "img" + File.separator - + filename); - click(GroupOptionsLogoPanel.BUTTON_ID); - } -} Copied: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java.txt (from rev 1140, trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java) =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java.txt (rev 0) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java.txt 2010-03-30 00:17:04 UTC (rev 1146) @@ -0,0 +1,31 @@ +package org.ourproject.kune.platf.integration.selenium; + +import java.io.File; +import java.io.IOException; + +import org.junit.Ignore; +import org.ourproject.kune.platf.client.ui.download.FileConstants; +import org.ourproject.kune.workspace.client.options.GroupOptionsPresenter; +import org.ourproject.kune.workspace.client.options.logo.GroupOptionsLogoPanel; + +public class EntityLogoSeleniumTest extends KuneSeleniumTestHelper { + + @Ignore + public void testEntityLogoUpload() throws Exception { + openDefPage(); + signIn(); + setLogo("kune-logo-400px.png"); + setLogo("kune-logo-without-text.png"); + } + + private void setLogo(final String filename) throws Exception, IOException { + click(gid(GroupOptionsPresenter.GROUP_OPTIONS_ICON)); + // waitForTextInside(EntityOptionsLogoPanel.PANEL_ID, + // PlatfMessages.ENT_OPTIONS_GROUP_TITLE); + click(GroupOptionsLogoPanel.BUTTON_ID); + final File dir = new File("."); + type(FileConstants.GROUP_LOGO_FIELD, dir.getCanonicalPath() + File.separator + "img" + File.separator + + filename); + click(GroupOptionsLogoPanel.BUTTON_ID); + } +} Deleted: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/KuneSeleniumTestHelper.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/KuneSeleniumTestHelper.java 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/KuneSeleniumTestHelper.java 2010-03-30 00:17:04 UTC (rev 1146) @@ -1,197 +0,0 @@ -package org.ourproject.kune.platf.integration.selenium; - -import java.io.File; -import java.io.IOException; -import java.util.Date; - -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.ourproject.kune.platf.client.dto.GroupType; -import org.ourproject.kune.platf.client.dto.StateToken; -import org.ourproject.kune.platf.server.ServerException; -import org.ourproject.kune.workspace.client.WorkspaceMessages; -import org.ourproject.kune.workspace.client.newgroup.NewGroupPanel; -import org.ourproject.kune.workspace.client.signin.RegisterForm; -import org.ourproject.kune.workspace.client.signin.RegisterPanel; -import org.ourproject.kune.workspace.client.signin.SignInForm; -import org.ourproject.kune.workspace.client.signin.SignInPanel; -import org.ourproject.kune.workspace.client.site.SiteToken; -import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignInLinkPanel; -import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignOutLinkPanel; -import org.ourproject.kune.workspace.client.sitebar.siteusermenu.SiteUserOptionsPanel; -import org.ourproject.kune.workspace.client.title.EntityTitlePanel; - -import com.thoughtworks.selenium.SeleniumException; - -public class KuneSeleniumTestHelper extends SeleniumTestHelper { - - protected static final String KUNE_BASE_URL = "/ws/?locale=en#"; - - private static File dirCaptures; - - @BeforeClass - public static void beforeKuneClass() { - dirCaptures = new File("img/captures/"); - if (!dirCaptures.exists()) { - dirCaptures.mkdir(); - } - } - - private boolean mustCapture; - - @After - public void after() throws IOException { - if (mustCapture) { - selenium.captureEntirePageScreenshot(File.createTempFile("kune", "capture.png", dirCaptures).getAbsolutePath()); - } - } - - @Before - public void before() { - mustCapture = true; - try { - selenium.deleteAllVisibleCookies(); - selenium.refresh(); - selenium.windowMaximize(); - } catch (final UnsupportedOperationException e) { - throw new ServerException( - "Seems that selenium server is not running; run before: 'mvn selenium:start-server' "); - } - } - - public void setMustCapture(final boolean mustCapture) { - this.mustCapture = mustCapture; - } - - protected void fillNewGroup1stPage(final String shortname, final String longName, final String description, - final String tags, final GroupType groupType) throws Exception { - type(NewGroupPanel.SHORTNAME_FIELD, shortname); - type(NewGroupPanel.LONGNAME_FIELD, longName); - type(NewGroupPanel.PUBLICDESC_FIELD, description); - type(NewGroupPanel.TAGS_FIELD, tags); - switch (groupType) { - case COMMUNITY: - click(NewGroupPanel.COMM_GROUP_TYPE_ID); - break; - case ORGANIZATION: - click(NewGroupPanel.ORG_GROUP_TYPE_ID); - break; - case PROJECT: - click(NewGroupPanel.PROJ_GROUP_TYPE_ID); - break; - default: - fail("Invalid group type"); - break; - } - } - - protected long genPrefix() { - final long prefix = new Date().getTime(); - return prefix; - } - - protected void ifLoggedSigOut() { - if (selenium.getText(gid(SiteSignOutLinkPanel.SITE_SIGN_OUT)).indexOf("admin") > 0) { - signOut(); - } - } - - protected void newGroupRegistrationDefLicense(final String shortname, final String longName, - final String description, final String tags) throws Exception { - final GroupType organization = GroupType.ORGANIZATION; - signInAndNewGroup(); - fillNewGroup1stPage(shortname, longName, description, tags, organization); - click(NewGroupPanel.REGISTER_BUTTON); - } - - protected void open(final SiteToken token) { - open(KUNE_BASE_URL + token.toString()); - } - - protected void open(final StateToken token) { - open(KUNE_BASE_URL + token.toString()); - } - - @Override - protected void open(final String url) { - try { - selenium.setTimeout("0"); - super.open(url); - selenium.setTimeout("30"); - } catch (final SeleniumException e) { - // TODO Auto-generated method stub - } - } - - protected void openDefPage() throws Exception { - open(KUNE_BASE_URL + "#site"); - waitForTextInside(gid(EntityTitlePanel.ENTITY_TITLE_RIGHT_TITLE), "Welcome to kune"); - } - - protected void register(final String shortName, final String longName, final String passwd, final String passwdDup, - final String email, final String country, final String language, final String tz, final boolean wantHomepage) { - click(gid(SiteSignInLinkPanel.SITE_SIGN_IN)); - click(gid(SignInPanel.CREATE_ONE)); - type(RegisterForm.NICK_FIELD, shortName); - type(RegisterForm.LONGNAME_FIELD, longName); - type(RegisterForm.PASSWORD_FIELD, passwd); - type(RegisterForm.PASSWORD_FIELD_DUP, passwdDup); - type(RegisterForm.EMAIL_FIELD, email); - type(RegisterForm.LANG_FIELD, language); - type(RegisterForm.COUNTRY_FIELD, country); - type(RegisterForm.TIMEZONE_FIELD, tz); - // div[6]/div[1]/div/img - click("//div[6]/div[1]/div/img"); - click("//div[text()='" + language + "']"); - click("//div[7]/div[1]/div/img"); - click("//div[text()='" + country + "']"); - click("//div[8]/div[1]/div/img"); - click("//div[text()='" + tz + "']"); - // "xpath=//div\[contains(@style,'visible')\]/div\[@class='x-combo-list-inner']/div[text()='"ItemTextValue"'\]"; - type("//div[@id='k-regp-p']/div/div/div/div/div/div/div/div/form/div[6]/div/div/input[2]", language); - type("//div[@id='k-regp-p']/div/div/div/div/div/div/div/div/form/div[7]/div/div/input[2]", country); - type("//div[@id='k-regp-p']/div/div/div/div/div/div/div/div/form/div[8]/div/div/input[2]", tz); - - if (wantHomepage) { - click(RegisterForm.WANNAPERSONALHOMEPAGE_ID); - } else { - click(RegisterForm.NOPERSONALHOMEPAGE_ID); - } - click(RegisterPanel.REGISTER_BUTTON_ID); - } - - protected String registerValidUser(final boolean wantHomepage) { - final String shortName = "u" + genPrefix(); - register(shortName, "some name " + genPrefix(), "somepasswd", "somepasswd", genPrefix() + "@example.com", - "Andorra", "English", "MET", wantHomepage); - return shortName; - } - - protected void signIn() { - signIn("admin", "easyeasy"); - } - - protected void signIn(final String nick, final String passwd) { - click(gid(SiteSignInLinkPanel.SITE_SIGN_IN)); - type(SignInForm.NICKOREMAIL_FIELD, nick); - type(SignInForm.PASSWORD_FIELD, passwd); - click(SignInPanel.SIGN_IN_BUTTON_ID); - } - - protected void signInAndNewGroup() throws Exception { - openDefPage(); - signIn(); - verifyLoggedUserShorName("admin"); - open(SiteToken.newgroup); - waitForTextInside(NewGroupPanel.NEWGROUP_WIZARD, WorkspaceMessages.REGISTER_A_NEW_GROUP_TITLE); - } - - protected void signOut() { - click("gwt-debug-k-ssolp-lb"); - } - - protected void verifyLoggedUserShorName(final String userShortName) throws Exception { - waitForTextInside(gid(SiteUserOptionsPanel.LOGGED_USER_MENU), userShortName); - } -} Copied: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/KuneSeleniumTestHelper.java.txt (from rev 1140, trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/KuneSeleniumTestHelper.java) =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/KuneSeleniumTestHelper.java.txt (rev 0) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/KuneSeleniumTestHelper.java.txt 2010-03-30 00:17:04 UTC (rev 1146) @@ -0,0 +1,197 @@ +package org.ourproject.kune.platf.integration.selenium; + +import java.io.File; +import java.io.IOException; +import java.util.Date; + +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.ourproject.kune.platf.client.dto.GroupType; +import org.ourproject.kune.platf.client.dto.StateToken; +import org.ourproject.kune.platf.server.ServerException; +import org.ourproject.kune.workspace.client.WorkspaceMessages; +import org.ourproject.kune.workspace.client.newgroup.NewGroupPanel; +import org.ourproject.kune.workspace.client.signin.RegisterForm; +import org.ourproject.kune.workspace.client.signin.RegisterPanel; +import org.ourproject.kune.workspace.client.signin.SignInForm; +import org.ourproject.kune.workspace.client.signin.SignInPanel; +import org.ourproject.kune.workspace.client.site.SiteToken; +import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignInLinkPanel; +import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignOutLinkPanel; +import org.ourproject.kune.workspace.client.sitebar.siteusermenu.SiteUserOptionsPanel; +import org.ourproject.kune.workspace.client.title.EntityTitlePanel; + +import com.thoughtworks.selenium.SeleniumException; + +public class KuneSeleniumTestHelper extends SeleniumTestHelper { + + protected static final String KUNE_BASE_URL = "/ws/?locale=en#"; + + private static File dirCaptures; + + @BeforeClass + public static void beforeKuneClass() { + dirCaptures = new File("img/captures/"); + if (!dirCaptures.exists()) { + dirCaptures.mkdir(); + } + } + + private boolean mustCapture; + + @After + public void after() throws IOException { + if (mustCapture) { + selenium.captureEntirePageScreenshot(File.createTempFile("kune", "capture.png", dirCaptures).getAbsolutePath()); + } + } + + @Before + public void before() { + mustCapture = true; + try { + selenium.deleteAllVisibleCookies(); + selenium.refresh(); + selenium.windowMaximize(); + } catch (final UnsupportedOperationException e) { + throw new ServerException( + "Seems that selenium server is not running; run before: 'mvn selenium:start-server' "); + } + } + + public void setMustCapture(final boolean mustCapture) { + this.mustCapture = mustCapture; + } + + protected void fillNewGroup1stPage(final String shortname, final String longName, final String description, + final String tags, final GroupType groupType) throws Exception { + type(NewGroupPanel.SHORTNAME_FIELD, shortname); + type(NewGroupPanel.LONGNAME_FIELD, longName); + type(NewGroupPanel.PUBLICDESC_FIELD, description); + type(NewGroupPanel.TAGS_FIELD, tags); + switch (groupType) { + case COMMUNITY: + click(NewGroupPanel.COMM_GROUP_TYPE_ID); + break; + case ORGANIZATION: + click(NewGroupPanel.ORG_GROUP_TYPE_ID); + break; + case PROJECT: + click(NewGroupPanel.PROJ_GROUP_TYPE_ID); + break; + default: + fail("Invalid group type"); + break; + } + } + + protected long genPrefix() { + final long prefix = new Date().getTime(); + return prefix; + } + + protected void ifLoggedSigOut() { + if (selenium.getText(gid(SiteSignOutLinkPanel.SITE_SIGN_OUT)).indexOf("admin") > 0) { + signOut(); + } + } + + protected void newGroupRegistrationDefLicense(final String shortname, final String longName, + final String description, final String tags) throws Exception { + final GroupType organization = GroupType.ORGANIZATION; + signInAndNewGroup(); + fillNewGroup1stPage(shortname, longName, description, tags, organization); + click(NewGroupPanel.REGISTER_BUTTON); + } + + protected void open(final SiteToken token) { + open(KUNE_BASE_URL + token.toString()); + } + + protected void open(final StateToken token) { + open(KUNE_BASE_URL + token.toString()); + } + + @Override + protected void open(final String url) { + try { + selenium.setTimeout("0"); + super.open(url); + selenium.setTimeout("30"); + } catch (final SeleniumException e) { + // TODO Auto-generated method stub + } + } + + protected void openDefPage() throws Exception { + open(KUNE_BASE_URL + "#site"); + waitForTextInside(gid(EntityTitlePanel.ENTITY_TITLE_RIGHT_TITLE), "Welcome to kune"); + } + + protected void register(final String shortName, final String longName, final String passwd, final String passwdDup, + final String email, final String country, final String language, final String tz, final boolean wantHomepage) { + click(gid(SiteSignInLinkPanel.SITE_SIGN_IN)); + click(gid(SignInPanel.CREATE_ONE)); + type(RegisterForm.NICK_FIELD, shortName); + type(RegisterForm.LONGNAME_FIELD, longName); + type(RegisterForm.PASSWORD_FIELD, passwd); + type(RegisterForm.PASSWORD_FIELD_DUP, passwdDup); + type(RegisterForm.EMAIL_FIELD, email); + type(RegisterForm.LANG_FIELD, language); + type(RegisterForm.COUNTRY_FIELD, country); + type(RegisterForm.TIMEZONE_FIELD, tz); + // div[6]/div[1]/div/img + click("//div[6]/div[1]/div/img"); + click("//div[text()='" + language + "']"); + click("//div[7]/div[1]/div/img"); + click("//div[text()='" + country + "']"); + click("//div[8]/div[1]/div/img"); + click("//div[text()='" + tz + "']"); + // "xpath=//div\[contains(@style,'visible')\]/div\[@class='x-combo-list-inner']/div[text()='"ItemTextValue"'\]"; + type("//div[@id='k-regp-p']/div/div/div/div/div/div/div/div/form/div[6]/div/div/input[2]", language); + type("//div[@id='k-regp-p']/div/div/div/div/div/div/div/div/form/div[7]/div/div/input[2]", country); + type("//div[@id='k-regp-p']/div/div/div/div/div/div/div/div/form/div[8]/div/div/input[2]", tz); + + if (wantHomepage) { + click(RegisterForm.WANNAPERSONALHOMEPAGE_ID); + } else { + click(RegisterForm.NOPERSONALHOMEPAGE_ID); + } + click(RegisterPanel.REGISTER_BUTTON_ID); + } + + protected String registerValidUser(final boolean wantHomepage) { + final String shortName = "u" + genPrefix(); + register(shortName, "some name " + genPrefix(), "somepasswd", "somepasswd", genPrefix() + "@example.com", + "Andorra", "English", "MET", wantHomepage); + return shortName; + } + + protected void signIn() { + signIn("admin", "easyeasy"); + } + + protected void signIn(final String nick, final String passwd) { + click(gid(SiteSignInLinkPanel.SITE_SIGN_IN)); + type(SignInForm.NICKOREMAIL_FIELD, nick); + type(SignInForm.PASSWORD_FIELD, passwd); + click(SignInPanel.SIGN_IN_BUTTON_ID); + } + + protected void signInAndNewGroup() throws Exception { + openDefPage(); + signIn(); + verifyLoggedUserShorName("admin"); + open(SiteToken.newgroup); + waitForTextInside(NewGroupPanel.NEWGROUP_WIZARD, WorkspaceMessages.REGISTER_A_NEW_GROUP_TITLE); + } + + protected void signOut() { + click("gwt-debug-k-ssolp-lb"); + } + + protected void verifyLoggedUserShorName(final String userShortName) throws Exception { + waitForTextInside(gid(SiteUserOptionsPanel.LOGGED_USER_MENU), userShortName); + } +} Deleted: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java 2010-03-30 00:17:04 UTC (rev 1146) @@ -1,51 +0,0 @@ -package org.ourproject.kune.platf.integration.selenium; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.junit.Test; -import org.ourproject.kune.platf.client.dto.GroupType; -import org.ourproject.kune.workspace.client.WorkspaceMessages; -import org.ourproject.kune.workspace.client.entityheader.EntityTextLogo; -import org.ourproject.kune.workspace.client.newgroup.NewGroupPanel; -import org.ourproject.kune.workspace.client.site.SiteToken; - -public class NewGroupSeleniumTest extends KuneSeleniumTestHelper { - - @Test - public void newGroupBasic() throws Exception { - assertFalse(selenium.isTextPresent(NewGroupPanel.NEWGROUP_WIZARD)); - signInAndNewGroup(); - click(NewGroupPanel.CANCEL_BUTTON); - assertFalse(selenium.isTextPresent(NewGroupPanel.NEWGROUP_WIZARD)); - open(SiteToken.newgroup); - waitForTextInside(NewGroupPanel.NEWGROUP_WIZARD, WorkspaceMessages.REGISTER_A_NEW_GROUP_TITLE); - } - - @Test - public void newGroupNotLogged() throws Exception { - openDefPage(); - assertFalse(selenium.isTextPresent(NewGroupPanel.NEWGROUP_WIZARD)); - assertFalse(selenium.isTextPresent(WorkspaceMessages.REGISTER_TO_CREATE_A_GROUP)); - open(SiteToken.newgroup); - wait(1000); - assertTrue(selenium.isTextPresent(WorkspaceMessages.REGISTER_TO_CREATE_A_GROUP)); - } - - @Test - public void newGroupWithExistingNicknameFails() throws Exception { - signInAndNewGroup(); - fillNewGroup1stPage("admin", "some long name" + genPrefix(), "some public description", "tag1 tag2 tag3", - GroupType.ORGANIZATION); - click(NewGroupPanel.REGISTER_BUTTON); - waitForTextInside(gid(NewGroupPanel.ERROR_MSG_BAR), WorkspaceMessages.NAME_IN_ALREADY_IN_USE); - } - - @Test - public void newGroupWithNonOccidentalChars() throws Exception { - String longName = "漢語 中文 华语 汉语" + genPrefix(); - newGroupRegistrationDefLicense("g" + genPrefix(), longName, - "吗 台湾 六种辅音韵尾 中国政府要求在中国出售的软件必须使用编码 过 国标 名词的复数形式只在代词及多音节", "漢語 中文 华语 汉语"); - waitForTextInside(gid(EntityTextLogo.LOGO_NAME), longName); - } -} Copied: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java.txt (from rev 1140, trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java) =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java.txt (rev 0) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java.txt 2010-03-30 00:17:04 UTC (rev 1146) @@ -0,0 +1,51 @@ +package org.ourproject.kune.platf.integration.selenium; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.ourproject.kune.platf.client.dto.GroupType; +import org.ourproject.kune.workspace.client.WorkspaceMessages; +import org.ourproject.kune.workspace.client.entityheader.EntityTextLogo; +import org.ourproject.kune.workspace.client.newgroup.NewGroupPanel; +import org.ourproject.kune.workspace.client.site.SiteToken; + +public class NewGroupSeleniumTest extends KuneSeleniumTestHelper { + + @Test + public void newGroupBasic() throws Exception { + assertFalse(selenium.isTextPresent(NewGroupPanel.NEWGROUP_WIZARD)); + signInAndNewGroup(); + click(NewGroupPanel.CANCEL_BUTTON); + assertFalse(selenium.isTextPresent(NewGroupPanel.NEWGROUP_WIZARD)); + open(SiteToken.newgroup); + waitForTextInside(NewGroupPanel.NEWGROUP_WIZARD, WorkspaceMessages.REGISTER_A_NEW_GROUP_TITLE); + } + + @Test + public void newGroupNotLogged() throws Exception { + openDefPage(); + assertFalse(selenium.isTextPresent(NewGroupPanel.NEWGROUP_WIZARD)); + assertFalse(selenium.isTextPresent(WorkspaceMessages.REGISTER_TO_CREATE_A_GROUP)); + open(SiteToken.newgroup); + wait(1000); + assertTrue(selenium.isTextPresent(WorkspaceMessages.REGISTER_TO_CREATE_A_GROUP)); + } + + @Test + public void newGroupWithExistingNicknameFails() throws Exception { + signInAndNewGroup(); + fillNewGroup1stPage("admin", "some long name" + genPrefix(), "some public description", "tag1 tag2 tag3", + GroupType.ORGANIZATION); + click(NewGroupPanel.REGISTER_BUTTON); + waitForTextInside(gid(NewGroupPanel.ERROR_MSG_BAR), WorkspaceMessages.NAME_IN_ALREADY_IN_USE); + } + + @Test + public void newGroupWithNonOccidentalChars() throws Exception { + String longName = "漢語 中文 华语 汉语" + genPrefix(); + newGroupRegistrationDefLicense("g" + genPrefix(), longName, + "吗 台湾 六种辅音韵尾 中国政府要求在中国出售的软件必须使用编码 过 国标 名词的复数形式只在代词及多音节", "漢語 中文 华语 汉语"); + waitForTextInside(gid(EntityTextLogo.LOGO_NAME), longName); + } +} Deleted: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SeleniumTestHelper.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SeleniumTestHelper.java 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SeleniumTestHelper.java 2010-03-30 00:17:04 UTC (rev 1146) @@ -1,141 +0,0 @@ -package org.ourproject.kune.platf.integration.selenium; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.ourproject.kune.platf.server.ServerException; - -import com.google.gwt.user.client.ui.UIObject; -import com.thoughtworks.selenium.DefaultSelenium; - -public class SeleniumTestHelper { - - protected static DefaultSelenium selenium; - private static boolean mustStopFinally = true; - - @AfterClass - public static void afterClass() { - if (mustStopFinally) { - selenium.stop(); - } - } - - /** - * - * If you get and null in ./content/recorder.js line 74 running test, this - * happens when you compile gwt with PRETTY instead of OBF. See: - * - * <pre> - * http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/5d6a9... - * </pre> - * - * <pre> - * http://code.google.com/p/google-web-toolkit/issues/detail?id=2861 - * </pre> - * - * @param url - * @return - * @throws Exception - */ - @BeforeClass - public static void beforeClass() { - // ff3 hangs: http://jira.openqa.org/browse/SRC-225 - // as a workarount use ff2: - // - // return new DefaultSelenium("localhost", 4441, - // "*firefox /usr/lib/firefox-3.0.3/firefox", url); - - // this is a problem... platform dependence ... - selenium = new DefaultSelenium("localhost", 4441, "*chrome /usr/lib/firefox/firefox-2-bin", - "http://localhost:8080/"); - selenium.start(); - } - - public static void setMustStopFinally(final boolean mustStopFinally) { - SeleniumTestHelper.mustStopFinally = mustStopFinally; - } - - protected void click(final String id) { - selenium.click(id); - } - - protected void clickOnPushButton(final String id) { - selenium.mouseOver(id); - selenium.mouseDown(id); - selenium.mouseUp(id); - } - - protected void fail(final String message) throws Exception { - throw new ServerException(message); - } - - /** - * Returns the debug id with the gwt DEBUG_ID_PREFIX - * - * @param id - * @return - */ - protected String gid(final String id) { - return UIObject.DEBUG_ID_PREFIX + id; - } - - protected String linkId(final String link) { - return "link=" + link; - } - - protected void open(final String url) { - try { - selenium.open(url); - } catch (final UnsupportedOperationException e) { - throw new ServerException( - "Seems that selenium server is not running; run before: 'mvn selenium:start-server' ", e); - } - } - - protected void setSpeed(final int milliseconds) { - selenium.setSpeed("" + milliseconds); - } - - protected void type(final String id, final String text) { - selenium.type(id, text); - } - - protected void wait(final int milliseconds) { - try { - Thread.sleep(milliseconds); - } catch (final InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - protected void waitForTextInside(final String id, final String text) throws Exception { - for (int second = 0;; second++) { - if (second >= 60) { - fail("timeout"); - } - try { - final String selText = selenium.getText(id); - if (selText.indexOf(text) >= 0) { - break; - } - } catch (final Exception e) { - } - Thread.sleep(1000); - } - } - - protected void waitForTextRegExp(final String id, final String text) throws Exception { - for (int second = 0;; second++) { - if (second >= 60) { - fail("timeout"); - } - try { - if (selenium.getText(id).matches(text)) { - break; - } - } catch (final Exception e) { - } - Thread.sleep(1000); - } - } -} Copied: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SeleniumTestHelper.java.txt (from rev 1140, trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SeleniumTestHelper.java) =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SeleniumTestHelper.java.txt (rev 0) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SeleniumTestHelper.java.txt 2010-03-30 00:17:04 UTC (rev 1146) @@ -0,0 +1,141 @@ +package org.ourproject.kune.platf.integration.selenium; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.ourproject.kune.platf.server.ServerException; + +import com.google.gwt.user.client.ui.UIObject; +import com.thoughtworks.selenium.DefaultSelenium; + +public class SeleniumTestHelper { + + protected static DefaultSelenium selenium; + private static boolean mustStopFinally = true; + + @AfterClass + public static void afterClass() { + if (mustStopFinally) { + selenium.stop(); + } + } + + /** + * + * If you get and null in ./content/recorder.js line 74 running test, this + * happens when you compile gwt with PRETTY instead of OBF. See: + * + * <pre> + * http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/5d6a9... + * </pre> + * + * <pre> + * http://code.google.com/p/google-web-toolkit/issues/detail?id=2861 + * </pre> + * + * @param url + * @return + * @throws Exception + */ + @BeforeClass + public static void beforeClass() { + // ff3 hangs: http://jira.openqa.org/browse/SRC-225 + // as a workarount use ff2: + // + // return new DefaultSelenium("localhost", 4441, + // "*firefox /usr/lib/firefox-3.0.3/firefox", url); + + // this is a problem... platform dependence ... + selenium = new DefaultSelenium("localhost", 4441, "*chrome /usr/lib/firefox/firefox-2-bin", + "http://localhost:8080/"); + selenium.start(); + } + + public static void setMustStopFinally(final boolean mustStopFinally) { + SeleniumTestHelper.mustStopFinally = mustStopFinally; + } + + protected void click(final String id) { + selenium.click(id); + } + + protected void clickOnPushButton(final String id) { + selenium.mouseOver(id); + selenium.mouseDown(id); + selenium.mouseUp(id); + } + + protected void fail(final String message) throws Exception { + throw new ServerException(message); + } + + /** + * Returns the debug id with the gwt DEBUG_ID_PREFIX + * + * @param id + * @return + */ + protected String gid(final String id) { + return UIObject.DEBUG_ID_PREFIX + id; + } + + protected String linkId(final String link) { + return "link=" + link; + } + + protected void open(final String url) { + try { + selenium.open(url); + } catch (final UnsupportedOperationException e) { + throw new ServerException( + "Seems that selenium server is not running; run before: 'mvn selenium:start-server' ", e); + } + } + + protected void setSpeed(final int milliseconds) { + selenium.setSpeed("" + milliseconds); + } + + protected void type(final String id, final String text) { + selenium.type(id, text); + } + + protected void wait(final int milliseconds) { + try { + Thread.sleep(milliseconds); + } catch (final InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + protected void waitForTextInside(final String id, final String text) throws Exception { + for (int second = 0;; second++) { + if (second >= 60) { + fail("timeout"); + } + try { + final String selText = selenium.getText(id); + if (selText.indexOf(text) >= 0) { + break; + } + } catch (final Exception e) { + } + Thread.sleep(1000); + } + } + + protected void waitForTextRegExp(final String id, final String text) throws Exception { + for (int second = 0;; second++) { + if (second >= 60) { + fail("timeout"); + } + try { + if (selenium.getText(id).matches(text)) { + break; + } + } catch (final Exception e) { + } + Thread.sleep(1000); + } + } +} Deleted: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java 2009-12-26 06:18:15 UTC (rev 1145) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java 2010-03-30 00:17:04 UTC (rev 1146) @@ -1,141 +0,0 @@ -package org.ourproject.kune.platf.integration.selenium; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import org.junit.Test; -import org.ourproject.kune.platf.client.PlatfMessages; -import org.ourproject.kune.platf.client.state.Session; -import org.ourproject.kune.workspace.client.nohomepage.NoHomePagePanel; -import org.ourproject.kune.workspace.client.signin.RegisterPanel; -import org.ourproject.kune.workspace.client.signin.SignInForm; -import org.ourproject.kune.workspace.client.signin.SignInPanel; -import org.ourproject.kune.workspace.client.site.SiteToken; -import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignInLinkPanel; -import org.ourproject.kune.workspace.client.sitebar.siteusermenu.SiteUserOptionsPanel; -import org.ourproject.kune.workspace.client.title.EntityTitlePanel; - -public class SignInSeleniumTest extends KuneSeleniumTestHelper { - - @Test - public void registerAdminNameMustFail() throws Exception { - openDefPage(); - register("u" + genPrefix(), "Site Administrator", "somepasswd", "somepasswd", "some" + genPrefix() - + "@example.com", "Andorra", "Afrikaans", "MIT", true); - waitForTextInside(gid(RegisterPanel.ERRMSG), PlatfMessages.NAME_IN_USE); - click(RegisterPanel.CANCEL_BUTTON_ID); - } - - @Test - public void registerAdminNicknameMustFail() throws Exception { - openDefPage(); - register("admin", "some name" + genPrefix(), "somepasswd", "somepasswd", "some" + genPrefix() + "@example.com", - "Andorra", "Afrikaans", "MIT", true); - waitForTextInside(gid(RegisterPanel.ERRMSG), PlatfMessages.NAME_IN_USE); - click(RegisterPanel.CANCEL_BUTTON_ID); - } - - @Test - public void registerSomeUser() throws Exception { - openDefPage(); - String user = registerValidUser(true); - verifyLoggedUserShorName(user); - } - - @Test - public void registerSomeUserWithouHomepage() throws Exception { - openDefPage(); - registerValidUser(false); - selenium.isTextPresent("Welcome"); - click(RegisterPanel.WELCOME_OK_BUTTON); - clickOnPushButton(gid(SiteUserOptionsPanel.LOGGED_USER_MENU)); - click(linkId(PlatfMessages.YOUR_HOMEPAGE)); - waitForTextInside(gid(NoHomePagePanel.NO_HOME_PAGE_LABEL), PlatfMessages.USER_DOESN_T_HAVE_A_HOMEPAGE); - } - - @Test - public void registerUserWithNonOccidentalChars() throws Exception { - openDefPage(); - String user = "u" + genPrefix(); - register(user, "漢語 中文 华语 汉语" + genPrefix() + genPrefix(), "somepasswd", "somepasswd", genPrefix() - + "@example.com", "Andorra", "English", "MET", true); - verifyLoggedUserShorName(user); - } - - @Test - public void testFocusOnNickAndSignInWithIntro() throws Exception { - openDefPage(); - click(gid(SiteSignInLinkPanel.SITE_SIGN_IN)); - selenium.keyPress(SignInForm.NICKOREMAIL_FIELD, "\\97"); - selenium.keyPress(SignInForm.NICKOREMAIL_FIELD, "\\100"); - selenium.keyPress(SignInForm.NICKOREMAIL_FIELD, "\\109"); - selenium.keyPress(SignInForm.NICKOREMAIL_FIELD, "\\105"); - selenium.keyPress(SignInForm.NICKOREMAIL_FIELD, "\\110"); - type(SignInForm.PASSWORD_FIELD, "easyeasy"); - selenium.keyPress(SignInForm.PASSWORD_FIELD, "\\13"); - verifyLoggedUserShorName("admin"); - } - - @Test - public void testRegisterToken() throws Exception { - open(SiteToken.register); - assertFalse(selenium.isTextPresent(PlatfMessages.REGISTER_TITLE)); - waitForTextInside(gid(EntityTitlePanel.ENTITY_TITLE_RIGHT_TITLE), "Welcome to kune"); - assertTrue(selenium.isTextPresent(PlatfMessages.REGISTER_TITLE)); - } - - @Test - public void testSignInAndOut() throws Exception { - openDefPage(); - signIn(); - verifyLoggedUserShorName("admin"); - signOut(); - } - - @Test - public void testSignInAndOutRemovingCookie() throws Exception { - openDefPage(); - signIn(); - assertNotNull(selenium.getCookieByName(Session.USERHASH)); - verifyLoggedUserShorName("admin"); - signOut(); - } - - @Test - public void testSignInFailed() throws Exception { - openDefPage(); - signIn("something", "wrong"); - waitForTextInside(gid(SignInPanel.ERROR_MSG), PlatfMessages.INCORRECT_NICKNAME_EMAIL_OR_PASSWORD); - signOut(); - } - - @Test - public void testSignInOutTwice() throws Exception { - openDefPage(); - signIn(); - verifyLoggedUserShorName("admin"); - signOut(); - signIn(); - verifyLoggedUserShorName("admin"); - signOut(); - } - - @Test - public void testSignInRemember() throws Exception { - openDefPage(); - signIn(); - verifyLoggedUserShorName("admin"); - selenium.refresh(); - verifyLoggedUserShorName("admin"); - signOut(); - } - - @Test - public void testSignInToken() throws Exception { - open(SiteToken.signin); - assertFalse(selenium.isTextPresent(PlatfMessages.SIGN_IN_TITLE)); - waitForTextInside(gid(EntityTitlePanel.ENTITY_TITLE_RIGHT_TITLE), "Welcome to kune"); - assertTrue(selenium.isTextPresent(PlatfMessages.SIGN_IN_TITLE)); - } -} Copied: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java.txt (from rev 1140, trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java) =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java.txt (rev 0) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java.txt 2010-03-30 00:17:04 UTC (rev 1146) @@ -0,0 +1,141 @@ +package org.ourproject.kune.platf.integration.selenium; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.ourproject.kune.platf.client.PlatfMessages; +import org.ourproject.kune.platf.client.state.Session; +import org.ourproject.kune.workspace.client.nohomepage.NoHomePagePanel; +import org.ourproject.kune.workspace.client.signin.RegisterPanel; +import org.ourproject.kune.workspace.client.signin.SignInForm; +import org.ourproject.kune.workspace.client.signin.SignInPanel; +import org.ourproject.kune.workspace.client.site.SiteToken; +import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignInLinkPanel; +import org.ourproject.kune.workspace.client.sitebar.siteusermenu.SiteUserOptionsPanel; +import org.ourproject.kune.workspace.client.title.EntityTitlePanel; + +public class SignInSeleniumTest extends KuneSeleniumTestHelper { + + @Test + public void registerAdminNameMustFail() throws Exception { + openDefPage(); + register("u" + genPrefix(), "Site Administrator", "somepasswd", "somepasswd", "some" + genPrefix() + + "@example.com", "Andorra", "Afrikaans", "MIT", true); + waitForTextInside(gid(RegisterPanel.ERRMSG), PlatfMessages.NAME_IN_USE); + click(RegisterPanel.CANCEL_BUTTON_ID); + } + + @Test + public void registerAdminNicknameMustFail() throws Exception { + openDefPage(); + register("admin", "some name" + genPrefix(), "somepasswd", "somepasswd", "some" + genPrefix() + "@example.com", + "Andorra", "Afrikaans", "MIT", true); + waitForTextInside(gid(RegisterPanel.ERRMSG), PlatfMessages.NAME_IN_USE); + click(RegisterPanel.CANCEL_BUTTON_ID); + } + + @Test + public void registerSomeUser() throws Exception { + openDefPage(); + String user = registerValidUser(true); + verifyLoggedUserShorName(user); + } + + @Test + public void registerSomeUserWithouHomepage() throws Exception { + openDefPage(); + registerValidUser(false); + selenium.isTextPresent("Welcome"); + click(RegisterPanel.WELCOME_OK_BUTTON); + clickOnPushButton(gid(SiteUserOptionsPanel.LOGGED_USER_MENU)); + click(linkId(PlatfMessages.YOUR_HOMEPAGE)); + waitForTextInside(gid(NoHomePagePanel.NO_HOME_PAGE_LABEL), PlatfMessages.USER_DOESN_T_HAVE_A_HOMEPAGE); + } + + @Test + public void registerUserWithNonOccidentalChars() throws Exception { + openDefPage(); + String user = "u" + genPrefix(); + register(user, "漢語 中文 华语 汉语" + genPrefix() + genPrefix(), "somepasswd", "somepasswd", genPrefix() + + "@example.com", "Andorra", "English", "MET", true); + verifyLoggedUserShorName(user); + } + + @Test + public void testFocusOnNickAndSignInWithIntro() throws Exception { + openDefPage(); + click(gid(SiteSignInLinkPanel.SITE_SIGN_IN)); + selenium.keyPress(SignInForm.NICKOREMAIL_FIELD, "\\97"); + selenium.keyPress(SignInForm.NICKOREMAIL_FIELD, "\\100"); + selenium.keyPress(SignInForm.NICKOREMAIL_FIELD, "\\109"); + selenium.keyPress(SignInForm.NICKOREMAIL_FIELD, "\\105"); + selenium.keyPress(SignInForm.NICKOREMAIL_FIELD, "\\110"); + type(SignInForm.PASSWORD_FIELD, "easyeasy"); + selenium.keyPress(SignInForm.PASSWORD_FIELD, "\\13"); + verifyLoggedUserShorName("admin"); + } + + @Test + public void testRegisterToken() throws Exception { + open(SiteToken.register); + assertFalse(selenium.isTextPresent(PlatfMessages.REGISTER_TITLE)); + waitForTextInside(gid(EntityTitlePanel.ENTITY_TITLE_RIGHT_TITLE), "Welcome to kune"); + assertTrue(selenium.isTextPresent(PlatfMessages.REGISTER_TITLE)); + } + + @Test + public void testSignInAndOut() throws Exception { + openDefPage(); + signIn(); + verifyLoggedUserShorName("admin"); + signOut(); + } + + @Test + public void testSignInAndOutRemovingCookie() throws Exception { + openDefPage(); + signIn(); + assertNotNull(selenium.getCookieByName(Session.USERHASH)); + verifyLoggedUserShorName("admin"); + signOut(); + } + + @Test + public void testSignInFailed() throws Exception { + openDefPage(); + signIn("something", "wrong"); + waitForTextInside(gid(SignInPanel.ERROR_MSG), PlatfMessages.INCORRECT_NICKNAME_EMAIL_OR_PASSWORD); + signOut(); + } + + @Test + public void testSignInOutTwice() throws Exception { + openDefPage(); + signIn(); + verifyLoggedUserShorName("admin"); + signOut(); + signIn(); + verifyLoggedUserShorName("admin"); + signOut(); + } + + @Test + public void testSignInRemember() throws Exception { + openDefPage(); + signIn(); + verifyLoggedUserShorName("admin"); + selenium.refresh(); + verifyLoggedUserShorName("admin"); + signOut(); + } + + @Test + public void testSignInToken() throws Exception { + open(SiteToken.signin); + assertFalse(selenium.isTextPresent(PlatfMessages.SIGN_IN_TITLE)); + waitForTextInside(gid(EntityTitlePanel.ENTITY_TITLE_RIGHT_TITLE), "Welcome to kune"); + assertTrue(selenium.isTextPresent(PlatfMessages.SIGN_IN_TITLE)); + } +} Added: trunk/war/WEB-INF/localhost.cer =================================================================== --- trunk/war/WEB-INF/localhost.cer (rev 0) +++ trunk/war/WEB-INF/localhost.cer 2010-03-30 00:17:04 UTC (rev 1146) @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC7zCCAligAwIBAgIJAP5zJqYmGz7vMA0GCSqGSIb3DQEBBQUAMFkxCzAJBgNV +BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX +aWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0wOTA4MDUxMDI2 +MDBaFw0xMDA4MDUxMDI2MDBaMFkxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21l +LVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNV +BAMTCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0mHausYX +KTlrz/fdhYA/63L8PZFwjtqCEdUh+5BFSqFlE34uhwmoIFzZat5z80tAQGjyp1EL +Ai2BegqCOHWaeOKNnwSm93a31fMy6N4rygUgs2rCjVtz6yqMCBd7c9KENifMTWY0 +agIz6C4Pk+YLnkx7rrDGyW5/jaIKNrjFioUCAwEAAaOBvjCBuzAdBgNVHQ4EFgQU +Aob17ojAhUn47dxkKOogj+NWtxUwgYsGA1UdIwSBgzCBgIAUAob17ojAhUn47dxk +KOogj+NWtxWhXaRbMFkxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRl +MSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMTCWxv +Y2FsaG9zdIIJAP5zJqYmGz7vMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +gYEANGKOujn47HIf0rYEq0Z8mnzfUet+7AtzGjueLymKSRI9PGSdgtJd/C7lQEsD +bqzIb4gu8NDE5wJjcEOikrQ6jawK/ws6s/H+BCKtrefCmbaNsv3hmC4uaQfmCkiE +U3gN9MsqSncdzBX/5kXZn7gzS0j/KVukDOykjLAAsbp4Ad4= +-----END CERTIFICATE----- Added: trunk/war/WEB-INF/localhost.key =================================================================== --- trunk/war/WEB-INF/localhost.key (rev 0) +++ trunk/war/WEB-INF/localhost.key 2010-03-30 00:17:04 UTC (rev 1146) @@ -0,0 +1,16 @@ +-----BEGIN PRIVATE KEY----- +MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANJh2rrGFyk5a8/3 +3YWAP+ty/D2RcI7aghHVIfuQRUqhZRN+LocJqCBc2Wrec/NLQEBo8qdRCwItgXoK +gjh1mnjijZ8Epvd2t9XzMujeK8oFILNqwo1bc+sqjAgXe3PShDYnzE1mNGoCM+gu +D5PmC55Me66wxsluf42iCja4xYqFAgMBAAECgYEAuJ/JXQlEABh1JbAGxgaTkaN5 ++unslmDpro6U4Pht5p2WXzHn0PfHhIcXAfMwXD0YqK2w7OZxO7sFmj0opDWIlZ9t +H5ruSlV1YOEmuReeGqWJRNKEVnr6BXUFtEmTRZxF2XrxGEci71afH7EziC+uNYKm +53XPKvg4/qeHE+Ig+w0CQQD2GdwkHIRKvn2KyNrI0ag4uuX7tWDk2avkRpwnjRBk +E+Z7GYiXpwGZrJktJ2lbsc3r4pU6yEPmtdLah9DJrW93AkEA2tgxWtdwyFlosBj/ +h/Eq+VCVCLR+OtbDaD8IZ0cijHtnllL99XRivnOrLUeTQfWxaUM7Qoky3tk6p5Pw +Oxbs4wJBAIM/93Aq5UMXpMzHoidH6XeX9d/wM+TZUhtErTNKwFsfYeR1EawPnYLf +0jGKu13zzebnyL64373DatixZmCo5rECQFRNgAW8hGfJeXiMyLL3hlRwZFjsHsxP +uwrHbVdLodV4HFleMxKA+SDgsgpJTkLUgLlJ+uQQshYCnIO9i4dXt30CQBsJJ+pD +9DjZXSRvklLZBqpFnFMIi+jW12GQrpNb7HO16pZNdy+Ljc0b/YZL+6nAYjbwg30c +4X+49VVcDxiJMws= +-----END PRIVATE KEY-----