[kune-commits] r1618 - in trunk: . img src/main/java/cc/kune/barters/client src/main/java/cc/kune/blogs/client src/main/java/cc/kune/chat/client src/main/java/cc/kune/core/client/cnt src/main/java/cc/kune/core/client/groups/newgroup src/main/java/cc/kune/core/client/registry src/main/java/cc/kune/core/client/sitebar/search src/main/java/cc/kune/core/client/state src/main/java/cc/kune/docs/client src/main/java/cc/kune/events/client src/main/java/cc/kune/gspace/client/tool src/main/java/cc/kune/gspace/client/tool/selector src/main/java/cc/kune/gspace/client/viewers src/main/java/cc/kune/lists/client src/main/java/cc/kune/tasks/client src/main/java/cc/kune/wave/client src/main/java/cc/kune/wiki/client src/main/java/org/waveprotocol/box/webclient/client src/main/java/org/waveprotocol/wave/client/wavepanel/impl/toolbar

Vicente J. Ruiz Jurado vjrj_ at ourproject.org
Wed Nov 23 15:33:51 CET 2011


Author: vjrj_
Date: 2011-11-23 15:33:50 +0100 (Wed, 23 Nov 2011)
New Revision: 1618

Removed:
   trunk/src/main/java/org/waveprotocol/box/webclient/client/HistorySupport.java
   trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java
Modified:
   trunk/.classpath
   trunk/CREDITS
   trunk/img/kune-logos.svg
   trunk/pom.xml
   trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java
   trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java
   trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java
   trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java
   trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java
   trunk/src/main/java/cc/kune/core/client/registry/ContentCapabilitiesRegistry.java
   trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java
   trunk/src/main/java/cc/kune/core/client/state/StateManager.java
   trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java
   trunk/src/main/java/cc/kune/events/client/EventsClientTool.java
   trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java
   trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java
   trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
   trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java
   trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java
   trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java
   trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java
   trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
   trunk/src/main/java/cc/kune/wave/client/WebClient.java
   trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java
Log:
NEW - # 135: Some Calendar integration 
http://kune.ourproject.org/issues/ticket/135
NEW - # 163: Empty messages in Views where not logged shoul be different to logged 
http://kune.ourproject.org/issues/ticket/163
CLOSED - # 62: Tool links should point to the previous content (not the root) 
http://kune.ourproject.org/issues/ticket/62
Wave updated with many fixes and lib upgrades
Big bug fix: you can now safety move to other locations while editing a wave
Attachments now should work also in Group Space

Modified: trunk/.classpath
===================================================================
--- trunk/.classpath	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/.classpath	2011-11-23 14:33:50 UTC (rev 1618)
@@ -12,19 +12,19 @@
   <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar" sourcepath="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.5/box-0.3.5.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.5/box-src-0.3.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.7/box-0.3.7.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.7/box-src-0.3.7.jar" sourcepath="M2_REPO/org/waveprotocol/box-src/0.3.7/box-src-0.3.7-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
   <classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client/0.3.5/client-0.3.5.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common/0.3.5/client-common-0.3.5.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common-src/0.3.5/client-common-src-0.3.5.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.5/client-scheduler-src-0.3.5.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-src/0.3.5/client-src-0.3.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client/0.3.7/client-0.3.7.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common/0.3.7/client-common-0.3.7.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common-src/0.3.7/client-common-src-0.3.7.jar" sourcepath="M2_REPO/org/waveprotocol/client-common-src/0.3.7/client-common-src-0.3.7-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.7/client-scheduler-src-0.3.7.jar" sourcepath="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.7/client-scheduler-src-0.3.7-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-src/0.3.7/client-src-0.3.7.jar" sourcepath="M2_REPO/org/waveprotocol/client-src/0.3.7/client-src-0.3.7-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/common-src/0.3.5/common-src-0.3.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/common-src/0.3.7/common-src-0.3.7.jar" sourcepath="M2_REPO/org/waveprotocol/common-src/0.3.7/common-src-0.3.7-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" sourcepath="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/>
@@ -33,8 +33,8 @@
   <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar" sourcepath="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/communication-src/0.3.5/communication-src-0.3.5.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.5/concurrencycontrol-src-0.3.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/communication-src/0.3.7/communication-src-0.3.7.jar" sourcepath="M2_REPO/org/waveprotocol/communication-src/0.3.7/communication-src-0.3.7-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.7/concurrencycontrol-src-0.3.7.jar" sourcepath="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.7/concurrencycontrol-src-0.3.7-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5.jar" sourcepath="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0.jar" sourcepath="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0-sources.jar"/>
@@ -55,7 +55,7 @@
   <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/>
   <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.5/gwt-util-src-0.3.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.7/gwt-util-src-0.3.7.jar" sourcepath="M2_REPO/org/waveprotocol/gwt-util-src/0.3.7/gwt-util-src-0.3.7-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/2.0.0/gwt-voices-2.0.0.jar"/>
   <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5-sources.jar"/>
@@ -111,16 +111,16 @@
   <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/media-src/0.3.5/media-src-0.3.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/media-src/0.3.7/media-src-0.3.7.jar" sourcepath="M2_REPO/org/waveprotocol/media-src/0.3.7/media-src-0.3.7-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar" sourcepath="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.5/model-src-0.3.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.7/model-src-0.3.7.jar" sourcepath="M2_REPO/org/waveprotocol/model-src/0.3.7/model-src-0.3.7-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16.jar" sourcepath="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
   <classpathentry kind="var" path="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15.jar" sourcepath="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar" sourcepath="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-msg/0.3.5/proto-msg-0.3.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-msg/0.3.7/proto-msg-0.3.7.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/w3c/css/sac/1.3/sac-1.3.jar" sourcepath="M2_REPO/org/w3c/css/sac/1.3/sac-1.3-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.12.0/selenium-android-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.12.0/selenium-android-driver-2.12.0-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-api/2.12.0/selenium-api-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-api/2.12.0/selenium-api-2.12.0-sources.jar"/>
@@ -144,9 +144,9 @@
   <classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1.jar" sourcepath="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5.jar" sourcepath="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.5/util-src-0.3.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.7/util-src-0.3.7.jar" sourcepath="M2_REPO/org/waveprotocol/util-src/0.3.7/util-src-0.3.7-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-0.3/0.3.5/waveinabox-server-0.3-0.3.5.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-0.3/0.3.7/waveinabox-server-0.3-0.3.7.jar"/>
   <classpathentry kind="var" path="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1.jar" sourcepath="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1-sources.jar"/>
   <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
   <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>

Modified: trunk/CREDITS
===================================================================
--- trunk/CREDITS	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/CREDITS	2011-11-23 14:33:50 UTC (rev 1618)
@@ -24,6 +24,6 @@
 * Daniel Jiménez for the initial help and coordination
 * Johnattan Rupire, William Austen Bradbury and Rana Hassan for their web contributions and 
 translations
-* Bastien Guerry for his French translation
+* Bastien Guerry for his French translation and for his ideas, feedback, support, inspiration
 * and <URL:http://ourproject.org> and again <URL:http://xsto.info> and 
 <URL:http://iepala.es> for sharing with us their resources

Modified: trunk/img/kune-logos.svg
===================================================================
--- trunk/img/kune-logos.svg	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/img/kune-logos.svg	2011-11-23 14:33:50 UTC (rev 1618)
@@ -57,15 +57,15 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="1.27"
-     inkscape:cx="372.04724"
-     inkscape:cy="526.18109"
+     inkscape:zoom="1"
+     inkscape:cx="518.29119"
+     inkscape:cy="649.99995"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      inkscape:window-width="1078"
      inkscape:window-height="1867"
-     inkscape:window-x="0"
-     inkscape:window-y="24"
+     inkscape:window-x="1"
+     inkscape:window-y="52"
      showguides="true"
      inkscape:guide-bbox="true"
      inkscape:guide-points="true"
@@ -543,10 +543,10 @@
     <g
        inkscape:export-ydpi="90"
        inkscape:export-xdpi="90"
-       inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kunecc-logo-16px.png"
+       inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kunecc-logo-16px-low.png"
        transform="matrix(0.31973654,0,0,0.31973654,157.58786,-7.1498137)"
        id="g3289"
-       style="opacity:0.4">
+       style="opacity:0.5">
       <g
          id="g3291"
          transform="translate(380,-30)">
@@ -556,7 +556,7 @@
            inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-logo-1200.png"
            id="path3293"
            d="m 818.32888,1096.181 c -0.74303,0 -1.45723,0 -2.17391,0.049 -0.0669,0.014 -0.13033,0.037 -0.19763,0.049 -0.66715,0.1246 -1.32536,0.2309 -2.02569,0.247 -0.097,0.014 -0.19995,-0.014 -0.29644,0 -5.71605,0.8606 -10.54554,3.3425 -14.42688,7.4605 -4.53271,4.7871 -6.81817,10.5218 -6.81818,17.1937 0,6.7467 2.28548,12.5204 6.81818,17.2925 4.90667,5.146 11.2818,7.7075 19.12055,7.7075 4.15869,0 8.15681,-1.0333 11.95652,-3.1127 3.79965,-2.0195 7.10345,-4.8778 9.93083,-8.498 l -8.54743,-4.7431 c -3.68005,4.9067 -8.20158,7.3617 -13.58695,7.3617 -3.73988,0 -7.0931,-1.2132 -9.98024,-3.6067 -2.93207,-2.3935 -4.39727,-5.3089 -4.39723,-8.7945 l 39.08102,0 0,-1.9763 c -4e-5,-8.452 -2.86291,-15.2201 -8.54743,-20.3063 -4.78705,-4.2335 -10.0899,-6.324 -15.90909,-6.3241 z m -181.71937,0.3459 0,18.9229 -6.62055,0 0,9.6838 6.62055,0 0,19.7628 10.07905,0 0,-19.7628 6.07708,0 12.40119,19.7628 11.95652,0 -16.6502,-25.0988 15.90909,-22.332 -12.20356,0 -12.30237,17.9842 -5.18775,0 0,-18.9229 -10.07905,0 z m 123.66601,0 c -1.73503,0.3096 -3.35171,0.8136 -4.8419,1.581 -2.5132,1.3464 -4.49729,3.122 -5.97826,5.336 l 0,-5.9783 -10.12846,0 0,47.4308 10.12846,0 0,-26.581 c -1e-5,-3.7997 1.07224,-6.7151 3.21147,-8.7945 2.15413,-2.0793 4.88507,-3.1126 8.25098,-3.1126 3.56032,0 6.34065,0.9553 8.3004,2.915 1.95964,1.9597 2.91496,5.031 2.91502,9.1897 l 0,26.3834 10.12846,0 0,-28.6067 c -5e-5,-5.8192 -1.77567,-10.6272 -5.33597,-14.4269 -2.67029,-2.8497 -5.76,-4.6235 -9.28854,-5.336 l -7.36166,0 z m -76.77865,0.9387 0,27.4703 c -2e-5,6.4326 2.16853,11.6335 6.52173,15.6127 4.03904,3.7399 9.04189,5.6324 14.92095,5.6324 5.93886,0 10.91633,-1.8925 14.97036,-5.6324 4.35315,-3.9792 6.52169,-9.1801 6.52174,-15.6127 l 0,-27.4703 -10.12846,0 0,26.581 c -5e-5,3.5005 -1.0723,6.3484 -3.21146,8.5474 -2.21404,2.2739 -4.906,3.4091 -8.15218,3.4091 -3.12654,0 -5.83938,-1.1502 -8.05336,-3.4091 -2.19905,-2.2738 -3.2609,-5.1067 -3.26087,-8.5474 l 0,-26.581 -10.12845,0 z m 133.54743,7.8063 c 3.306,10e-5 6.19285,0.9268 8.64624,2.7668 2.37851,1.8849 4.13014,4.6309 5.23716,8.251 l -27.22332,0 c 0.79283,-3.4855 2.43792,-6.1925 4.8913,-8.1522 2.37853,-1.8998 5.18745,-2.8655 8.44862,-2.8656 z"
-           style="font-size:58.13353348px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#a56941;fill-opacity:1;stroke:none;font-family:Emblem"
+           style="font-size:58.13353347999999698px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#a56941;fill-opacity:1;stroke:none;font-family:Emblem"
            inkscape:connector-curvature="0" />
         <g
            inkscape:export-ydpi="399.59854"
@@ -568,38 +568,38 @@
              transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)"
              id="path3297"
              d="m 60.321717,411.99998 377.014613,0"
-             style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23953247;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+             style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23953247000000033;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
              inkscape:connector-curvature="0" />
           <path
              transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)"
              id="path3299"
              d="m 252.61203,788.60332 0,-377.01178"
-             style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffdb6b;stroke-width:109.23950958;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+             style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffdb6b;stroke-width:109.23950958000000355;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
              inkscape:connector-curvature="0" />
           <path
              transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)"
              id="path3301"
              d="m 252.86937,597.15755 377.0124,0"
-             style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#69312f;stroke-width:109.23951721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+             style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#69312f;stroke-width:109.23951721000000248;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
              inkscape:connector-curvature="0" />
           <path
              transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)"
              id="path3303"
              d="m 437.45588,596.97447 0,-377.01491"
-             style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#cc6633;stroke-width:109.23950195;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+             style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#cc6633;stroke-width:109.23950195000000463;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
              inkscape:connector-curvature="0" />
           <path
              transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)"
              id="path3305"
              d="m 372.87905,411.27704 64.93441,0"
-             style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23947906;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+             style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23947905999999364;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
              inkscape:connector-curvature="0" />
         </g>
       </g>
       <text
          transform="scale(-1,1)"
          xml:space="preserve"
-         style="font-size:58.94304657px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#69312f;fill-opacity:1;stroke:none;font-family:Emblem"
+         style="font-size:58.94304656999999992px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#69312f;fill-opacity:1;stroke:none;font-family:Emblem"
          x="-1306.0667"
          y="1115.2828"
          id="text3307"
@@ -610,7 +610,7 @@
            y="1115.2828">cc</tspan></text>
       <text
          xml:space="preserve"
-         style="font-size:87.16403198px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#cc6633;fill-opacity:1;stroke:none;font-family:Emblem"
+         style="font-size:87.16403198000000430px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#cc6633;fill-opacity:1;stroke:none;font-family:Emblem"
          x="1218.1743"
          y="1115.0084"
          id="text3311"
@@ -716,5 +716,96 @@
        inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/favicon-demo.png"
        inkscape:export-xdpi="90"
        inkscape:export-ydpi="90" />
+    <g
+       transform="translate(-64.205696,-101.81263)"
+       inkscape:export-ydpi="90"
+       inkscape:export-xdpi="90"
+       inkscape:export-filename="/home/vjrj/proyectos/ourproject.org/kune/svn/trunk/img/kune-logo-16px-low.png"
+       id="g4171"
+       style="opacity:0.5">
+      <path
+         inkscape:connector-curvature="0"
+         style="font-size:58.13353347999999698px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#a56941;fill-opacity:1;stroke:none;font-family:Emblem"
+         d="m 206.0077,119.17481 c -0.23779,0 -0.46633,8.7e-4 -0.69567,0.0158 -0.0214,0.004 -0.0417,0.0118 -0.0632,0.0158 -0.21349,0.0399 -0.4241,0.0739 -0.6482,0.0791 -0.0311,0.004 -0.064,-0.005 -0.0949,0 -1.82915,0.27537 -3.37459,1.06959 -4.61662,2.38736 -1.45043,1.53186 -2.18178,3.36697 -2.18178,5.50197 0,2.15893 0.73135,4.00649 2.18178,5.53358 1.57013,1.64669 3.61017,2.46636 6.11859,2.46636 1.33077,0 2.61016,-0.33065 3.82604,-0.99601 1.21588,-0.64624 2.27312,-1.56093 3.1779,-2.71936 l -2.73518,-1.51778 c -1.17765,1.57013 -2.6245,2.35569 -4.34781,2.35569 -1.19676,0 -2.26981,-0.3882 -3.1937,-1.1541 -0.93824,-0.76596 -1.40711,-1.69889 -1.40711,-2.81422 l 12.5059,0 0,-0.63244 c 0,-2.70464 -0.91615,-4.8704 -2.73518,-6.49798 -1.53185,-1.35475 -3.22873,-2.02374 -5.09086,-2.02374 z m -58.15001,0.11067 0,6.0553 -2.1186,0 0,3.09885 2.1186,0 0,6.32407 3.22527,0 0,-6.32407 1.94464,0 3.96838,6.32407 3.82609,0 -5.32806,-8.03161 5.09091,-7.14623 -3.90514,0 -3.93676,5.75492 -1.66006,0 0,-6.0553 -3.22527,0 z m 39.573,0 c -0.55523,0.0991 -1.07256,0.26037 -1.5494,0.50596 -0.80423,0.43082 -1.43916,0.99904 -1.91307,1.7075 l 0,-1.91308 -3.24108,0 0,15.17784 3.24108,0 0,-8.5059 c 0,-1.21588 0.3431,-2.14881 1.02768,-2.81422 0.68934,-0.66536 1.5632,-0.99601 2.64032,-0.99607 1.13926,6e-5 2.02899,0.30575 2.65612,0.93283 0.62708,0.62713 0.93277,1.60993 0.93277,2.94069 l 0,8.44267 3.24113,0 0,-9.1541 c -5e-5,-1.86218 -0.56822,-3.40069 -1.70754,-4.61662 -0.85448,-0.91187 -1.84318,-1.4795 -2.97232,-1.7075 l -2.35569,0 z m -24.56913,0.30038 0,8.79053 c 0,2.0584 0.69395,3.72268 2.08698,4.99601 1.29249,1.19676 2.89338,1.80235 4.77467,1.80235 1.90046,0 3.49322,-0.60559 4.79053,-1.80235 1.39298,-1.27333 2.08693,-2.93761 2.08693,-4.99601 l 0,-8.79053 -3.24108,0 0,8.50591 c -6e-5,1.12015 -0.34316,2.03148 -1.02768,2.73517 -0.70851,0.72762 -1.56992,1.09092 -2.6087,1.09092 -1.0005,0 -1.86857,-0.36806 -2.57708,-1.09092 -0.70369,-0.72762 -1.04349,-1.63413 -1.04343,-2.73517 l 0,-8.50591 -3.24114,0 z m 42.73504,2.49803 c 1.05794,0 1.98172,0.2966 2.76679,0.8854 0.76114,0.60314 1.32167,1.48182 1.67593,2.64031 l -8.71148,0 c 0.25371,-1.11539 0.78014,-1.98162 1.5652,-2.60869 0.76114,-0.60797 1.66002,-0.91702 2.70356,-0.91702 z"
+         id="path4173"
+         inkscape:export-filename="/home/vjrj/proyectos/ourproject.org/kune/svn/trunk/img/kune-logo-16px.png"
+         inkscape:export-xdpi="90"
+         inkscape:export-ydpi="90" />
+      <g
+         id="g4175"
+         transform="matrix(0.1111494,0,0,0.111008,121.5678,22.515968)"
+         inkscape:export-filename="/home/vjrj/proyectos/ourproject.org/kune/svn/trunk/img/kune-logo-16px.png"
+         inkscape:export-xdpi="90"
+         inkscape:export-ydpi="90">
+        <path
+           inkscape:connector-curvature="0"
+           style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23953247000000033;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+           d="m 60.321717,411.99998 377.014613,0"
+           id="path4177"
+           transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" />
+        <path
+           inkscape:connector-curvature="0"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffdb6b;stroke-width:109.23950958000000355;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+           d="m 252.61203,788.60332 0,-377.01178"
+           id="path4179"
+           transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" />
+        <path
+           inkscape:connector-curvature="0"
+           style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#69312f;stroke-width:109.23951721000000248;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+           d="m 252.86937,597.15755 377.0124,0"
+           id="path4181"
+           transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" />
+        <path
+           inkscape:connector-curvature="0"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#cc6633;stroke-width:109.23950195000000463;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+           d="m 437.45588,596.97447 0,-377.01491"
+           id="path4183"
+           transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" />
+        <path
+           inkscape:connector-curvature="0"
+           style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23947905999999364;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+           d="m 372.87905,411.27704 64.93441,0"
+           id="path4185"
+           transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" />
+      </g>
+    </g>
+    <g
+       id="g4187"
+       transform="matrix(0.1111494,0,0,0.111008,214.3621,-79.296659)"
+       inkscape:export-filename="/home/vjrj/proyectos/ourproject.org/kune/svn/trunk/img/kune-icon16-low.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90"
+       style="opacity:0.5">
+      <path
+         inkscape:connector-curvature="0"
+         style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23953247000000033;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+         d="m 60.321717,411.99998 377.014613,0"
+         id="path4189"
+         transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" />
+      <path
+         inkscape:connector-curvature="0"
+         style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffdb6b;stroke-width:109.23950958000000355;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+         d="m 252.61203,788.60332 0,-377.01178"
+         id="path4191"
+         transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" />
+      <path
+         inkscape:connector-curvature="0"
+         style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#69312f;stroke-width:109.23951721000000248;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+         d="m 252.86937,597.15755 377.0124,0"
+         id="path4193"
+         transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" />
+      <path
+         inkscape:connector-curvature="0"
+         style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#cc6633;stroke-width:109.23950195000000463;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+         d="m 437.45588,596.97447 0,-377.01491"
+         id="path4195"
+         transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" />
+      <path
+         inkscape:connector-curvature="0"
+         style="color:#000000;fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23947905999999364;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block"
+         d="m 372.87905,411.27704 64.93441,0"
+         id="path4197"
+         transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)" />
+    </g>
   </g>
 </svg>

Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/pom.xml	2011-11-23 14:33:50 UTC (rev 1618)
@@ -19,6 +19,7 @@
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <slf4j.version>1.6.1</slf4j.version>
     <openjpa.version>2.0.1</openjpa.version>
+    <wiab.version>0.3.7</wiab.version>
     <skipTests>true</skipTests>
   </properties>
   <repositories>
@@ -528,12 +529,12 @@
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>proto-msg</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>gwt-util-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>com.google.guava</groupId>
@@ -543,52 +544,52 @@
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>box</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>box-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>model-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>client</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>client-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>client-common</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>client-common-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>waveinabox-server-0.3</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>proto-msg</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>gwt-util-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>com.google.guava</groupId>
@@ -598,67 +599,67 @@
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>box</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>box-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>model-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>client</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>client-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>client-common</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>client-common-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>common-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>util-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>concurrencycontrol-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>client-scheduler-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>media-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>org.waveprotocol</groupId>
       <artifactId>communication-src</artifactId>
-      <version>0.3.5</version>
+      <version>${wiab.version}</version>
     </dependency>
     <dependency>
       <groupId>net.sourceforge.findbugs</groupId>

Modified: trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -33,6 +33,8 @@
 
 public class BartersClientTool extends FoldableAbstractClientTool {
 
+  private static final String THERE_ISN_T_ANY_BARTER = "There isn't any barter. ";
+
   @Inject
   public BartersClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
       final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
@@ -63,8 +65,10 @@
     registerContentTypeIcon(TYPE_FOLDER, navResources.folder());
     registerContentTypeIcon(TYPE_ROOT, navResources.folder());
     registerContentTypeIcon(TYPE_BARTER, navResources.barter());
-    registerEmptyMessages(TYPE_FOLDER, i18n.t("This folder is empty"));
-    registerEmptyMessages(TYPE_ROOT, i18n.t("There isn't any barter"));
+    registerEmptyMessages(TYPE_FOLDER, i18n.t(THERE_ISN_T_ANY_BARTER + "You can create some here"));
+    registerEmptyMessages(TYPE_ROOT, i18n.t(THERE_ISN_T_ANY_BARTER));
+    registerEmptyMessagesNotLogged(TYPE_FOLDER, i18n.t(THERE_ISN_T_ANY_BARTER));
+    registerEmptyMessagesNotLogged(TYPE_ROOT, i18n.t(THERE_ISN_T_ANY_BARTER));
   }
 
 }

Modified: trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -68,6 +68,8 @@
     registerUploadTypesAndMimes(TYPE_UPLOADEDFILE);
     registerEmptyMessages(TYPE_ROOT, i18n.t("There isn't any blog, create one"));
     registerEmptyMessages(TYPE_BLOG, i18n.t("This blog hasn't any post, create one"));
+    registerEmptyMessagesNotLogged(TYPE_ROOT, i18n.t("There isn't any blog"));
+    registerEmptyMessagesNotLogged(TYPE_BLOG, i18n.t("This blog hasn't any post"));
   }
 
 }

Modified: trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -57,8 +57,10 @@
 
   private void registerIcons() {
     registerContentTypeIcon(TYPE_ROOM, res.groupChat());
-    registerEmptyMessages(TYPE_ROOM, i18n.tWithNT("See the archive of old conversations"
-        + TextUtils.IN_DEVELOPMENT_P, "with Brackets"));
+    final String emptyMsg = i18n.tWithNT("See the archive of old conversations"
+        + TextUtils.IN_DEVELOPMENT_P, "with Brackets");
+    registerEmptyMessages(TYPE_ROOM, emptyMsg);
+    registerEmptyMessagesNotLogged(TYPE_ROOM, emptyMsg);
   }
 
 }

Modified: trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -19,8 +19,6 @@
  */
 package cc.kune.core.client.cnt;
 
-import org.waveprotocol.box.webclient.client.HistorySupport;
-
 import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
 import cc.kune.common.client.notify.NotifyUser;
 import cc.kune.core.client.services.FileDownloadUtils;
@@ -39,156 +37,153 @@
 
 import com.google.inject.Provider;
 
-public abstract class FoldableContentPresenter extends AbstractContentPresenter implements FoldableContent {
+public abstract class FoldableContentPresenter extends AbstractContentPresenter implements
+    FoldableContent {
 
-    private final GuiActionDescCollection actionRegistry;
-    private final Provider<FileDownloadUtils> downloadProvider;
-    private final I18nTranslationService i18n;
-    private final Provider<MediaUtils> mediaUtils;
-    protected final Session session;
-    private final ActionContentToolbar toolbar;
-    private final String toolName;
-    private String uploadType;
-    private String waveType;
+  private final GuiActionDescCollection actionRegistry;
+  private final Provider<FileDownloadUtils> downloadProvider;
+  private final I18nTranslationService i18n;
+  private final Provider<MediaUtils> mediaUtils;
+  protected final Session session;
+  private final ActionContentToolbar toolbar;
+  private final String toolName;
+  private String uploadType;
+  private String waveType;
 
-    public FoldableContentPresenter(final String toolName, final StateManager stateManager, final Session session,
-            final ActionContentToolbar toolbar, final GuiActionDescCollection actionRegistry,
-            final Provider<FileDownloadUtils> downloadProvider, final I18nTranslationService i18n,
-            final Provider<MediaUtils> mediaUtils) {
-        this.toolName = toolName;
-        this.session = session;
-        this.toolbar = toolbar;
-        this.actionRegistry = actionRegistry;
-        this.downloadProvider = downloadProvider;
-        this.i18n = i18n;
-        this.mediaUtils = mediaUtils;
-        stateManager.onStateChanged(true, new StateChangedHandler() {
-            @Override
-            public void onStateChanged(final StateChangedEvent event) {
-                setState(event.getState());
-            }
-        });
-    }
+  public FoldableContentPresenter(final String toolName, final StateManager stateManager,
+      final Session session, final ActionContentToolbar toolbar,
+      final GuiActionDescCollection actionRegistry, final Provider<FileDownloadUtils> downloadProvider,
+      final I18nTranslationService i18n, final Provider<MediaUtils> mediaUtils) {
+    this.toolName = toolName;
+    this.session = session;
+    this.toolbar = toolbar;
+    this.actionRegistry = actionRegistry;
+    this.downloadProvider = downloadProvider;
+    this.i18n = i18n;
+    this.mediaUtils = mediaUtils;
+    stateManager.onStateChanged(true, new StateChangedHandler() {
+      @Override
+      public void onStateChanged(final StateChangedEvent event) {
+        setState(event.getState());
+      }
+    });
+  }
 
-    private String getContentBody(final StateContentDTO state) {
-        final String contentBody = state.getContent();
-        return contentBody;
-    }
+  private String getContentBody(final StateContentDTO state) {
+    final String contentBody = state.getContent();
+    return contentBody;
+  }
 
-    public String getToolName() {
-        return toolName;
-    }
+  public String getToolName() {
+    return toolName;
+  }
 
-    public String getUploadType() {
-        return uploadType;
-    }
+  public String getUploadType() {
+    return uploadType;
+  }
 
-    public String getWaveType() {
-        return waveType;
-    }
+  public String getWaveType() {
+    return waveType;
+  }
 
-    @Override
-    public void refreshState() {
-        setState(session.getContentState());
+  @Override
+  public void refreshState() {
+    setState(session.getContentState());
+  }
+
+  protected void setContent(final StateContentDTO state) {
+    final String typeId = state.getTypeId();
+    NotifyUser.info(typeId);
+    if (typeId.equals(getUploadType())) {
+      setUploadedContent(state);
+    } else if (typeId.equals(getWaveType())) {
+      setNormalContent(state);
+      // setWaveContent(state.getContent());
+    } else {
+      setNormalContent(state);
     }
+    view.attach();
+  }
 
-    protected void setContent(final StateContentDTO state) {
-        final String typeId = state.getTypeId();
-        NotifyUser.info(typeId);
-        if (typeId.equals(getUploadType())) {
-            setUploadedContent(state);
-        } else if (typeId.equals(getWaveType())) {
-            setNormalContent(state);
-            // setWaveContent(state.getContent());
-        } else {
-            setNormalContent(state);
-        }
-        view.attach();
+  private void setNormalContent(final StateContentDTO state) {
+    final String contentBody = getContentBody(state);
+    if (contentBody == null || contentBody.length() == 0) {
+      if (state.getContentRights().isEditable()) {
+        view.setInfoMessage(i18n.t("There is no text in this page. Feel free to edit this page"));
+      } else {
+        view.setInfoMessage(i18n.t("There is no text in this page"));
+      }
+    } else {
+      view.setRawContent(contentBody);
     }
+  }
 
-    private void setNormalContent(final StateContentDTO state) {
-        final String contentBody = getContentBody(state);
-        if (contentBody == null || contentBody.length() == 0) {
-            if (state.getContentRights().isEditable()) {
-                view.setInfoMessage(i18n.t("There is no text in this page. Feel free to edit this page"));
-            } else {
-                view.setInfoMessage(i18n.t("There is no text in this page"));
-            }
+  protected void setState(final StateAbstractDTO state) {
+    toolbar.detach();
+    if (state instanceof StateContainerDTO) {
+      final StateContainerDTO stateCntCtx = (StateContainerDTO) state;
+      if (stateCntCtx.getToolName().equals(toolName)) {
+        // This tool
+        if (stateCntCtx instanceof StateContentDTO) {
+          setState((StateContentDTO) stateCntCtx);
         } else {
-            view.setRawContent(contentBody);
+          setState(stateCntCtx);
         }
+      }
     }
+  }
 
-    protected void setState(final StateAbstractDTO state) {
-        toolbar.detach();
-        if (state instanceof StateContainerDTO) {
-            final StateContainerDTO stateCntCtx = (StateContainerDTO) state;
-            if (stateCntCtx.getToolName().equals(toolName)) {
-                // This tool
-                if (stateCntCtx instanceof StateContentDTO) {
-                    setState((StateContentDTO) stateCntCtx);
-                } else {
-                    setState(stateCntCtx);
-                }
-            }
-        }
-    }
+  protected void setState(final StateContainerDTO state) {
+    setToolbar(actionRegistry);
+    attach();
+  }
 
-    protected void setState(final StateContainerDTO state) {
-        setToolbar(actionRegistry);
-        attach();
-    }
+  protected void setState(final StateContentDTO state) {
+    setToolbar(actionRegistry);
+    attach();
+  }
 
-    protected void setState(final StateContentDTO state) {
-        setToolbar(actionRegistry);
-        attach();
-    }
+  private void setToolbar(final GuiActionDescCollection collection) {
+    // toolbar.disableMenusAndClearButtons();
+    toolbar.addAll(collection);
+    toolbar.attach();
+  }
 
-    private void setToolbar(final GuiActionDescCollection collection) {
-        // toolbar.disableMenusAndClearButtons();
-        toolbar.addAll(collection);
-        toolbar.attach();
+  private void setUploadedContent(final StateContentDTO state) {
+    final String contentBody = state.getContent();
+    final StateToken token = state.getStateToken();
+    final BasicMimeTypeDTO mimeType = state.getMimeType();
+    if (mimeType != null) {
+      final FileDownloadUtils fileDownloadUtils = downloadProvider.get();
+      if (mimeType.isImage()) {
+        view.showImage(fileDownloadUtils.getImageUrl(token),
+            fileDownloadUtils.getImageResizedUrl(token, ImageSize.sized), false);
+      } else if (mimeType.isPdf()) {
+        view.showImage(fileDownloadUtils.getImageUrl(token),
+            fileDownloadUtils.getImageResizedUrl(token, ImageSize.sized), true);
+      } else if (mimeType.isMp3()) {
+        view.setRawContent(mediaUtils.get().getMp3Embed(token));
+      } else if (mimeType.isOgg()) {
+        view.setRawContent(mediaUtils.get().getOggEmbed(token));
+      } else if (mimeType.isFlv()) {
+        view.setRawContent(mediaUtils.get().getFlvEmbed(token));
+      } else if (mimeType.isAvi()) {
+        view.setRawContent(mediaUtils.get().getAviEmbed(token));
+      } else if (mimeType.isText()) {
+        view.setContent(contentBody, true);
+      } else {
+        view.setNoPreview();
+      }
+    } else {
+      view.setNoPreview();
     }
+  }
 
-    private void setUploadedContent(final StateContentDTO state) {
-        final String contentBody = state.getContent();
-        final StateToken token = state.getStateToken();
-        final BasicMimeTypeDTO mimeType = state.getMimeType();
-        if (mimeType != null) {
-            final FileDownloadUtils fileDownloadUtils = downloadProvider.get();
-            if (mimeType.isImage()) {
-                view.showImage(fileDownloadUtils.getImageUrl(token),
-                        fileDownloadUtils.getImageResizedUrl(token, ImageSize.sized), false);
-            } else if (mimeType.isPdf()) {
-                view.showImage(fileDownloadUtils.getImageUrl(token),
-                        fileDownloadUtils.getImageResizedUrl(token, ImageSize.sized), true);
-            } else if (mimeType.isMp3()) {
-                view.setRawContent(mediaUtils.get().getMp3Embed(token));
-            } else if (mimeType.isOgg()) {
-                view.setRawContent(mediaUtils.get().getOggEmbed(token));
-            } else if (mimeType.isFlv()) {
-                view.setRawContent(mediaUtils.get().getFlvEmbed(token));
-            } else if (mimeType.isAvi()) {
-                view.setRawContent(mediaUtils.get().getAviEmbed(token));
-            } else if (mimeType.isText()) {
-                view.setContent(contentBody, true);
-            } else {
-                view.setNoPreview();
-            }
-        } else {
-            view.setNoPreview();
-        }
-    }
+  public void setUploadType(final String uploadType) {
+    this.uploadType = uploadType;
+  }
 
-    public void setUploadType(final String uploadType) {
-        this.uploadType = uploadType;
-    }
-
-    private void setWaveContent(final String id) {
-        view.setEditableWaveContent(HistorySupport.waveRefFromHistoryToken(id), false);
-    }
-
-    public void setWaveType(final String waveType) {
-        this.waveType = waveType;
-    }
+  public void setWaveType(final String waveType) {
+    this.waveType = waveType;
+  }
 }

Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -21,6 +21,7 @@
 
 import cc.kune.common.client.notify.NotifyLevel;
 import cc.kune.common.client.notify.NotifyLevelImages;
+import cc.kune.common.client.tooltip.Tooltip;
 import cc.kune.common.client.ui.MaskWidgetView;
 import cc.kune.common.client.ui.dialogs.BasicTopDialog;
 import cc.kune.common.client.ui.dialogs.BasicTopDialog.Builder;
@@ -145,15 +146,9 @@
     publicDescField.setValidationDelay(1000);
     form.add(publicDescField);
 
-    tag1 = new TextField<String>();
-    tag1.setTabIndex(4);
-    tag1.setFieldLabel(i18n.t("Group tags"));
-    tag1.setName(TAGS_FIELD);
-    tag1.setWidth(DefaultForm.BIG_FIELD_WIDTH);
-    tag1.setAllowBlank(false);
-    tag1.setTitle(i18n.t("type some keyword that define your group"));
-    tag1.setValidationDelay(1000);
-    form.add(tag1);
+    form.add(createTagField(tag1));
+    // form.add(createTagField(tag2));
+    // form.add(createTagField(tag3));
 
     final FieldSet groupTypeFieldSet = new FieldSet();
     groupTypeFieldSet.setHeading(i18n.t("Group type"));
@@ -197,6 +192,18 @@
     return form;
   }
 
+  private TextField<String> createTagField(TextField<String> tag) {
+    tag = new TextField<String>();
+    tag.setTabIndex(4);
+    tag.setFieldLabel(i18n.t("Group tags"));
+    tag.setName(TAGS_FIELD);
+    tag.setWidth(DefaultForm.BIG_FIELD_WIDTH);
+    tag.setAllowBlank(false);
+    Tooltip.to(tag, i18n.t("type some keyword that define your group"));
+    tag.setValidationDelay(1000);
+    return tag;
+  }
+
   @Override
   public void focusOnShorName() {
     shortNameField.focus();

Modified: trunk/src/main/java/cc/kune/core/client/registry/ContentCapabilitiesRegistry.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/registry/ContentCapabilitiesRegistry.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/core/client/registry/ContentCapabilitiesRegistry.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -31,6 +31,7 @@
   private final DropableRegistry dropable;
   private final EmailSubscribeAbleRegistry emailSubscribeAble;
   private final EmptyMessagesRegistry emptyMessagesRegistry;
+  private final EmptyMessagesRegistry emptyMessagesRegistryNotLogged;
   private final IconsRegistry iconsRegistry;
   private final LicensableRegistry licensable;
   private final NewMenusForTypeIdsRegistry newMenus;
@@ -54,6 +55,7 @@
       final RateableRegistry rateable, final TageableRegistry tageable,
       final RenamableRegistry renamable, final TranslatableRegistry translatable,
       final VersionableRegistry versionable, final EmptyMessagesRegistry emptyMessagesRegistry,
+      final EmptyMessagesRegistry emptyMessagesRegistryNotLogged,
       final XmppComentableRegistry xmppComentable, final XmppNotifyCapableRegistry xmppNotifyCapable,
       final ShowDeletedRegistry showDeleted) {
     this.authorable = authorableRegistry;
@@ -73,6 +75,8 @@
     this.translatable = translatable;
     this.versionable = versionable;
     this.emptyMessagesRegistry = emptyMessagesRegistry;
+    this.emptyMessagesRegistryNotLogged = emptyMessagesRegistryNotLogged;
+
     this.xmppComentable = xmppComentable;
     this.xmppNotifyCapable = xmppNotifyCapable;
     this.showDeleted = showDeleted;
@@ -114,6 +118,10 @@
     return emptyMessagesRegistry;
   }
 
+  public EmptyMessagesRegistry getEmptyMessagesRegistryNotLogged() {
+    return emptyMessagesRegistryNotLogged;
+  }
+
   public IconsRegistry getIconsRegistry() {
     return iconsRegistry;
   }

Modified: trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -41,7 +41,7 @@
 
   private static final int SEARCH_TEXT_HEIGHT = 13;
   private static final int SEARCH_TEXT_WIDTH_BIG = 160;
-  private static final int SEARCH_TEXT_WIDTH_SMALL = 120;
+  private static final int SEARCH_TEXT_WIDTH_SMALL = 80;
   public static final String SITE_SEARCH_BUTTON = "kune-ssp-searchbt";
   public static final String SITE_SEARCH_TEXTBOX = "kune-ssp-tbox";
   private final PushButton searchButton;

Modified: trunk/src/main/java/cc/kune/core/client/state/StateManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManager.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManager.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -26,8 +26,21 @@
 
 public interface StateManager {
 
+  /**
+   * @param listener
+   *          you can use this {@link BeforeActionListener} to intercept changes
+   *          of state (for instance if you are editing and what to save, etc.
+   */
   void addBeforeStateChangeListener(BeforeActionListener listener);
 
+  /**
+   * This permits to add custom #framents to urls and its associated actions
+   * 
+   * @param token
+   *          the url #fragment
+   * @param historyTokenCallback
+   *          the action that will be executed when the previous url fragment
+   */
   void addSiteToken(String token, HistoryTokenCallback historyTokenCallback);
 
   String getCurrentToken();

Modified: trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -35,6 +35,8 @@
 
 public class DocsClientTool extends FoldableAbstractClientTool {
 
+  private static final String EMPTY_CREATE_SOME = "This folder is empty. You can create some document or folder here.";
+
   @Inject
   public DocsClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
       final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
@@ -66,8 +68,10 @@
     registerContentTypeIcon(TYPE_ROOT, navResources.folder());
     registerContentTypeIcon(TYPE_DOCUMENT, navResources.page());
     registerUploadTypesAndMimes(TYPE_UPLOADEDFILE);
-    registerEmptyMessages(TYPE_FOLDER, i18n.t("This folder is empty"));
-    registerEmptyMessages(TYPE_ROOT, i18n.t("This folder is empty"));
+    registerEmptyMessagesNotLogged(TYPE_FOLDER, i18n.t(EMPTY));
+    registerEmptyMessagesNotLogged(TYPE_ROOT, i18n.t(EMPTY));
+    registerEmptyMessages(TYPE_FOLDER, i18n.t(EMPTY_CREATE_SOME));
+    registerEmptyMessages(TYPE_ROOT, i18n.t(EMPTY_CREATE_SOME));
   }
 
 }

Modified: trunk/src/main/java/cc/kune/events/client/EventsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/EventsClientTool.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/events/client/EventsClientTool.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -60,7 +60,8 @@
   private void registerIcons() {
     registerContentTypeIcon(TYPE_ROOT, navResources.folder());
     registerContentTypeIcon(TYPE_MEETING, navResources.calendar());
-    registerEmptyMessages(TYPE_ROOT, i18n.t("There isn't any meeting"));
+    registerEmptyMessages(TYPE_ROOT, i18n.t("There isn't any meeting, create one"));
+    registerEmptyMessagesNotLogged(TYPE_ROOT, i18n.t("There isn't any meeting"));
   }
 
 }

Modified: trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -31,6 +31,7 @@
 
 public abstract class FoldableAbstractClientTool extends AbstractClientTool {
 
+  protected static final String EMPTY = "This folder is empty";
   protected final ContentCapabilitiesRegistry contentCapabilitiesRegistry;
   protected final I18nTranslationService i18n;
   protected final NavResources navResources;
@@ -87,6 +88,10 @@
     contentCapabilitiesRegistry.getEmptyMessagesRegistry().register(contentTypeId, message);
   }
 
+  public void registerEmptyMessagesNotLogged(final String contentTypeId, final String message) {
+    contentCapabilitiesRegistry.getEmptyMessagesRegistryNotLogged().register(contentTypeId, message);
+  }
+
   protected void registerLicensableTypes(final String... typeIds) {
     contentCapabilitiesRegistry.getLicensable().register(typeIds);
   }

Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -124,13 +124,16 @@
       final ToolSelectorItem tool = tools.get(oldTool);
       checkTool(tool);
       tool.setSelected(false);
-      tool.setToken(oldToken);
+      if (newToken != null && oldToken != null && newToken.getGroup().equals(oldToken.getGroup())) {
+        // only if we don't change of group
+        tool.setToken(oldToken);
+      }
     }
     if (TextUtils.notEmpty(newTool)) {
       final ToolSelectorItem tool = tools.get(newTool);
       checkTool(tool);
       tool.setSelected(true);
-      tool.setToken(newToken.copy().clearDocument().clearFolder());
+      tool.setGroupShortName(newToken.getGroup());
     }
   }
 

Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -23,7 +23,6 @@
 import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
 import cc.kune.common.client.ui.HasEditHandler;
 import cc.kune.common.client.ui.UiUtils;
-import cc.kune.common.client.utils.TextUtils;
 import cc.kune.core.client.dnd.FolderViewerDropController;
 import cc.kune.core.client.dnd.KuneDragController;
 import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
@@ -136,9 +135,8 @@
   }
 
   @Override
-  public void showEmptyMsg(final String contentTypeId) {
+  public void showEmptyMsg(final String emptyMessage) {
+    emptyLabel.setText(emptyMessage);
     gsArmor.getDocContainer().add(emptyPanel);
-    final String msg = capabilitiesRegistry.getEmptyMessagesRegistry().getContentTypeIcon(contentTypeId);
-    emptyLabel.setText(TextUtils.empty(msg) ? i18n.t("This is empty.") : i18n.t(msg));
   }
 }

Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -30,12 +30,14 @@
 import org.waveprotocol.wave.model.waveref.WaveRef;
 import org.waveprotocol.wave.util.escapers.GwtWaverefEncoder;
 
+import cc.kune.common.client.actions.BeforeActionListener;
 import cc.kune.common.client.actions.ui.IsActionExtensible;
 import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
 import cc.kune.common.client.errors.UIException;
 import cc.kune.common.client.ui.HasEditHandler;
 import cc.kune.common.client.ui.UiUtils;
 import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
+import cc.kune.core.client.state.StateManager;
 import cc.kune.core.shared.dto.StateContentDTO;
 import cc.kune.core.shared.i18n.I18nTranslationService;
 import cc.kune.gspace.client.GSpaceArmor;
@@ -97,7 +99,7 @@
   @Inject
   public ContentViewerPanel(final GSpaceArmor wsArmor, final WaveClientProvider waveClient,
       final ContentCapabilitiesRegistry capabilitiesRegistry, final I18nTranslationService i18n,
-      final EventBus eventBus) {
+      final EventBus eventBus, final StateManager stateManager) {
     this.gsArmor = wsArmor;
     this.waveClientProv = waveClient;
     this.capabilitiesRegistry = capabilitiesRegistry;
@@ -110,6 +112,15 @@
             waveClear();
           }
         });
+    stateManager.addBeforeStateChangeListener(new BeforeActionListener() {
+      @Override
+      public boolean beforeAction() {
+        // This fix lot of problems when you are editing and move to other
+        // location (without stop editing)
+        waveClear();
+        return true;
+      }
+    });
   }
 
   @Override

Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -25,6 +25,7 @@
 import cc.kune.common.client.ui.EditEvent;
 import cc.kune.common.client.ui.EditEvent.EditHandler;
 import cc.kune.common.client.ui.HasEditHandler;
+import cc.kune.common.client.utils.TextUtils;
 import cc.kune.core.client.actions.ActionRegistryByType;
 import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
 import cc.kune.core.client.registry.IconsRegistry;
@@ -97,7 +98,7 @@
 
     void setSubheaderActions(GuiActionDescCollection actions);
 
-    void showEmptyMsg(String contentTypeId);
+    void showEmptyMsg(String message);
   }
 
   private final ActionRegistryByType actionsRegistry;
@@ -140,7 +141,8 @@
     final String name = content.getName();
     final Object icon = mimeType != null ? getIcon(stateToken, typeId, mimeType) : getIcon(stateToken,
         typeId, status);
-    final String tooltip = getTooltip(stateToken, mimeType, capabilitiesRegistry.isDragable(typeId) && rights.isAdministrable());
+    final String tooltip = getTooltip(stateToken, mimeType, capabilitiesRegistry.isDragable(typeId)
+        && rights.isAdministrable());
     if (status.equals(ContentStatus.inTheDustbin)
         && (!capabilitiesRegistry.showDeleted(typeId) && !session.getShowDeletedContent())) {
       // Don't show
@@ -176,7 +178,15 @@
 
   private void createChildItems(final ContainerDTO container, final AccessRights containerRights) {
     if (container.getContents().size() + container.getChilds().size() == 0) {
-      getView().showEmptyMsg(container.getTypeId());
+      String msg = null;
+      final String typeId = container.getTypeId();
+      if (session.isLogged()) {
+        msg = capabilitiesRegistry.getEmptyMessagesRegistry().getContentTypeIcon(typeId);
+      } else {
+        msg = capabilitiesRegistry.getEmptyMessagesRegistryNotLogged().getContentTypeIcon(typeId);
+      }
+      final String emptyMessage = TextUtils.empty(msg) ? i18n.t("This is empty.") : i18n.t(msg);
+      getView().showEmptyMsg(emptyMessage);
     } else {
       // Folders
       for (final ContainerSimpleDTO childFolder : container.getChilds()) {

Modified: trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -66,8 +66,12 @@
     registerContentTypeIcon(TYPE_POST, navResources.email());
     final String noWave = i18n.t("There is nothing posted yet. Post something");
     final String noList = i18n.t("There isn't any list, create one");
+    final String noWaveNotLogged = i18n.t("There is nothing posted yet");
+    final String noListNotLogged = i18n.t("There isn't any list");
     registerEmptyMessages(TYPE_ROOT, noList);
     registerEmptyMessages(TYPE_LIST, noWave);
+    registerEmptyMessagesNotLogged(TYPE_ROOT, noListNotLogged);
+    registerEmptyMessagesNotLogged(TYPE_LIST, noWaveNotLogged);
     // registerShowDeleted();
   }
 

Modified: trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -35,6 +35,8 @@
 
 public class TasksClientTool extends FoldableAbstractClientTool {
 
+  private static final String NO_TASK = "There isn't any task";
+
   @Inject
   public TasksClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
       final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
@@ -66,9 +68,11 @@
     registerContentTypeIcon(TYPE_FOLDER, navResources.taskfolder());
     registerContentTypeIcon(TYPE_TASK, navResources.task());
     registerContentTypeIcon(TYPE_TASK, ContentStatus.inTheDustbin, navResources.taskdone());
-    final String noTask = i18n.t("There isn't any task, create one");
-    registerEmptyMessages(TYPE_ROOT, noTask);
-    registerEmptyMessages(TYPE_FOLDER, noTask);
+    final String noTaskLogged = i18n.t(NO_TASK + ", create one");
+    registerEmptyMessages(TYPE_ROOT, noTaskLogged);
+    registerEmptyMessages(TYPE_FOLDER, noTaskLogged);
+    registerEmptyMessagesNotLogged(TYPE_ROOT, NO_TASK);
+    registerEmptyMessagesNotLogged(TYPE_FOLDER, NO_TASK);
     registerShowDeleted(TYPE_FOLDER, TYPE_ROOT, TYPE_TASK);
   }
 

Modified: trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -36,11 +36,8 @@
 import org.waveprotocol.wave.client.wavepanel.view.dom.ModelAsViewProvider;
 import org.waveprotocol.wave.client.wavepanel.view.dom.full.BlipQueueRenderer;
 import org.waveprotocol.wave.client.wavepanel.view.dom.full.DomRenderer;
-import org.waveprotocol.wave.model.conversation.Conversation;
-import org.waveprotocol.wave.model.conversation.ConversationBlip;
 import org.waveprotocol.wave.model.conversation.ConversationView;
 import org.waveprotocol.wave.model.id.IdGenerator;
-import org.waveprotocol.wave.model.id.ModernIdSerialiser;
 import org.waveprotocol.wave.model.waveref.WaveRef;
 
 import com.google.gwt.dom.client.Element;
@@ -124,7 +121,7 @@
   @Override
   protected AsyncHolder<StageTwo> createStageTwoLoader(StageOne one) {
     return haltIfClosed(new StageTwoProvider(
-        this.one = one, waveRef.getWaveId(), channel, isNewWave, idGenerator, profiles) {
+        this.one = one, waveRef, channel, isNewWave, idGenerator, profiles) {
       // Kune patch
       @Override
       protected DomRenderer createRenderer() {
@@ -193,33 +190,8 @@
   }
 
   private void handleExistingWave(StageThree three) {
-    // If there's blip reference then focus on that blip.
-    String documentId = waveRef.getDocumentId();
-    if (documentId != null) {
-      ModelAsViewProvider views = two.getModelAsViewProvider();
       BlipQueueRenderer blipQueue = two.getBlipQueue();
-      ConversationView wave = two.getConversations();
       blipQueue.flush();
-      // Find conversation
-      Conversation conversation;
-      if (waveRef.hasWaveletId()) {
-        String id = ModernIdSerialiser.INSTANCE.serialiseWaveletId(waveRef.getWaveletId());
-        conversation = wave.getConversation(id);
-      } else {
-        // Unspecified wavelet means root.
-        conversation = wave.getRoot();
-      }
-      if (conversation != null) {
-        // Find selected blip.
-        ConversationBlip blip = wave.getRoot().getBlip(documentId);
-        if (blip != null) {
-          BlipView blipUi = views.getBlipView(blip);
-          if (blipUi != null) {
-            two.getStageOne().getFocusFrame().focus(blipUi);
-          }
-        }
-      }
-    }
   }
 
   public void destroy() {

Modified: trunk/src/main/java/cc/kune/wave/client/WebClient.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WebClient.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/wave/client/WebClient.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -28,6 +28,7 @@
 import org.waveprotocol.box.webclient.client.ClientEvents;
 import org.waveprotocol.box.webclient.client.ClientIdGenerator;
 import org.waveprotocol.box.webclient.client.DebugMessagePanel;
+import org.waveprotocol.box.webclient.client.HistoryProvider;
 import org.waveprotocol.box.webclient.client.HistorySupport;
 import org.waveprotocol.box.webclient.client.RemoteViewServiceMultiplexer;
 import org.waveprotocol.box.webclient.client.Session;
@@ -183,6 +184,12 @@
             final String message = stack.asString().replace("<br>", "\n");
             REMOTE_LOG.severe(message);
             NotifyUser.logError(message);
+            NotifyUser.showProgress("Error in editor");
+            new Timer() {
+              @Override
+              public void run() {
+                NotifyUser.hideProgress();
+              }}.schedule(3000);
           }
         });
       }
@@ -285,7 +292,19 @@
     //setupConnectionIndicator();
 
     // Done in StateManager
-    HistorySupport.kuneInit(tokenMatcher, session);
+    HistorySupport.init(new HistoryProvider() {
+      @Override
+      public String getToken() {
+        final String currentToken = History.getToken();
+        String waveToken = currentToken;
+        // FIXME what about preview?
+        if (tokenMatcher.isGroupToken(currentToken) || tokenMatcher.isHomeToken(currentToken)) {
+          waveToken = session.getContentState().getWaveRef();
+          LOG.info("Kune URL: " + currentToken + " = " + waveToken);
+        }
+        return waveToken;
+      }
+    });
 
     loginImpl();
 

Modified: trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -34,6 +34,8 @@
 
 public class WikiClientTool extends FoldableAbstractClientTool {
 
+  private static final String EMPTY_FOLDER = "This folder is empty, create some wikipage or folder";
+
   @Inject
   public WikiClientTool(final I18nUITranslationService i18n, final ToolSelector toolSelector,
       final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
@@ -65,8 +67,10 @@
     registerContentTypeIcon(TYPE_ROOT, navResources.folder());
     registerContentTypeIcon(TYPE_WIKIPAGE, navResources.wikipage());
     registerUploadTypesAndMimes(TYPE_UPLOADEDFILE);
-    registerEmptyMessages(TYPE_FOLDER, i18n.t("This folder is empty"));
-    registerEmptyMessages(TYPE_ROOT, i18n.t("This wiki is empty"));
+    registerEmptyMessages(TYPE_FOLDER, i18n.t(EMPTY_FOLDER));
+    registerEmptyMessages(TYPE_ROOT, i18n.t(EMPTY_FOLDER));
+    registerEmptyMessagesNotLogged(TYPE_FOLDER, i18n.t("This folder is empty"));
+    registerEmptyMessagesNotLogged(TYPE_ROOT, i18n.t("This wiki is empty"));
   }
 
 }

Deleted: trunk/src/main/java/org/waveprotocol/box/webclient/client/HistorySupport.java
===================================================================
--- trunk/src/main/java/org/waveprotocol/box/webclient/client/HistorySupport.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/org/waveprotocol/box/webclient/client/HistorySupport.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -1,85 +0,0 @@
-// @formatter:off
-/*
- * Copyright 2010 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package org.waveprotocol.box.webclient.client;
-
-import javax.annotation.Nullable;
-
-import org.waveprotocol.box.webclient.client.events.Log;
-import org.waveprotocol.wave.model.waveref.InvalidWaveRefException;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-import org.waveprotocol.wave.util.escapers.GwtWaverefEncoder;
-
-import cc.kune.core.client.state.TokenMatcher;
-
-/**
- * Contains the code to interface the history event mechanism with the client's
- * event bus. At the moment, a history token encodes a wave id or wave ref.
- */
-public class HistorySupport {
-  private static final Log LOG = Log.get(HistorySupport.class);
-  private static TokenMatcher tokenMatcher;
-  private static cc.kune.core.client.state.Session session;
-  public static void kuneInit(TokenMatcher tokenMatcher, cc.kune.core.client.state.Session session) {
-    HistorySupport.tokenMatcher = tokenMatcher;
-    HistorySupport.session = session;
-  }
-    public static void init() {
-//    History.addValueChangeHandler(new ValueChangeHandler<String>() {
-//      @Override
-//      public void onValueChange(ValueChangeEvent<String> event) {
-//        String encodedToken = event.getValue();
-//        if (encodedToken == null || encodedToken.length() == 0) {
-//          return;
-//        }
-//        WaveRef waveRef = waveRefFromHistoryToken(encodedToken);
-//        if (waveRef == null) {
-//          LOG.info("History token contains invalid path: " + encodedToken);
-//          return;
-//        }
-//        LOG.info("Changing selected wave based on history event to " + waveRef.toString());
-//        ClientEvents.get().fireEvent(new WaveSelectionEvent(waveRef));
-//      }
-//    });
-  }
-
-  /**
-   * @param encodedToken token to parse into waveref
-   * @return null if cannot parse into valid waveRef
-   */
-  @Nullable
-  public static WaveRef waveRefFromHistoryToken(String encodedToken) {
-    LOG.info("Encoded token: " + encodedToken);
-    String waveToken = encodedToken;
-    if (tokenMatcher.isGroupToken(encodedToken) || tokenMatcher.isHomeToken(encodedToken)) {
-      waveToken = session.getContentState().getWaveRef();
-      LOG.info("Kune URL: " + encodedToken + " = " + waveToken);
-    }
-    try {
-      return GwtWaverefEncoder.decodeWaveRefFromPath(waveToken);
-    } catch (InvalidWaveRefException e) {
-      return null;
-    }
-  }
-
-  public static String historyTokenFromWaveref(WaveRef ref) {
-    return GwtWaverefEncoder.encodeToUriPathSegment(ref);
-  }
-
-  private HistorySupport() {
-  }
-}

Deleted: trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java
===================================================================
--- trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java	2011-11-19 15:02:45 UTC (rev 1617)
+++ trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java	2011-11-23 14:33:50 UTC (rev 1618)
@@ -1,610 +0,0 @@
-// @formatter:off
-/**
- * Copyright 2010 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.waveprotocol.wave.client.wavepanel.impl.toolbar;
-
-import org.waveprotocol.box.webclient.client.HistorySupport;
-import org.waveprotocol.wave.client.common.util.WaveRefConstants;
-import org.waveprotocol.wave.client.doodad.link.Link;
-import org.waveprotocol.wave.client.doodad.link.Link.InvalidLinkException;
-import org.waveprotocol.wave.client.editor.Editor;
-import org.waveprotocol.wave.client.editor.EditorContext;
-import org.waveprotocol.wave.client.editor.EditorContextAdapter;
-import org.waveprotocol.wave.client.editor.content.CMutableDocument;
-import org.waveprotocol.wave.client.editor.content.ContentElement;
-import org.waveprotocol.wave.client.editor.content.ContentNode;
-import org.waveprotocol.wave.client.editor.content.misc.StyleAnnotationHandler;
-import org.waveprotocol.wave.client.editor.content.paragraph.Paragraph;
-import org.waveprotocol.wave.client.editor.content.paragraph.Paragraph.LineStyle;
-import org.waveprotocol.wave.client.editor.toolbar.ButtonUpdater;
-import org.waveprotocol.wave.client.editor.toolbar.ParagraphApplicationController;
-import org.waveprotocol.wave.client.editor.toolbar.ParagraphTraversalController;
-import org.waveprotocol.wave.client.editor.toolbar.TextSelectionController;
-import org.waveprotocol.wave.client.editor.util.EditorAnnotationUtil;
-import org.waveprotocol.wave.client.gadget.GadgetXmlUtil;
-import org.waveprotocol.wave.client.wavepanel.impl.toolbar.attachment.AttachmentPopupWidget;
-import org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetSelectorWidget;
-import org.waveprotocol.wave.client.wavepanel.view.AttachmentPopupView;
-import org.waveprotocol.wave.client.wavepanel.view.AttachmentPopupView.Listener;
-import org.waveprotocol.wave.client.widget.popup.UniversalPopup;
-import org.waveprotocol.wave.client.widget.toolbar.SubmenuToolbarView;
-import org.waveprotocol.wave.client.widget.toolbar.ToolbarButtonViewBuilder;
-import org.waveprotocol.wave.client.widget.toolbar.ToolbarView;
-import org.waveprotocol.wave.client.widget.toolbar.ToplevelToolbarWidget;
-import org.waveprotocol.wave.client.widget.toolbar.buttons.ToolbarClickButton;
-import org.waveprotocol.wave.client.widget.toolbar.buttons.ToolbarToggleButton;
-import org.waveprotocol.wave.media.model.AttachmentIdGenerator;
-import org.waveprotocol.wave.media.model.AttachmentIdGeneratorImpl;
-import org.waveprotocol.wave.model.document.util.FocusedRange;
-import org.waveprotocol.wave.model.document.util.LineContainers;
-import org.waveprotocol.wave.model.document.util.Point;
-import org.waveprotocol.wave.model.document.util.XmlStringBuilder;
-import org.waveprotocol.wave.model.id.IdGenerator;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-import org.waveprotocol.wave.model.waveref.WaveRef;
-import org.waveprotocol.wave.util.escapers.GwtWaverefEncoder;
-
-import com.google.common.base.Preconditions;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.dom.client.Document;
-import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.Style.Unit;
-import com.google.gwt.http.client.URL;
-import com.google.gwt.user.client.History;
-import com.google.gwt.user.client.Window;
-
-/**
- * Attaches actions that can be performed in a Wave's "edit mode" to a toolbar.
- * <p>
- * Also constructs an initial set of such actions.
- *
- * @author kalman at google.com (Benjamin Kalman)
- */
-public class EditToolbar {
-
-  /**
-   * Container for an alignment.
-   */
-  private static final class Alignment {
-    public final String description;
-    public final String iconCss;
-    public final LineStyle style;
-    public Alignment(final String description, final String iconCss, final LineStyle style) {
-      this.description = description;
-      this.iconCss = iconCss;
-      this.style = style;
-    }
-  }
-
-  /**
-   * Handler for click buttons added with {@link EditToolbar#addClickButton}.
-   */
-  public interface ClickHandler {
-    void onClicked(EditorContext context);
-  }
-
-  /**
-   * Container for a font family.
-   */
-  private static final class FontFamily {
-    public final String description;
-    public final String style;
-    public FontFamily(final String description, final String style) {
-      this.description = description;
-      this.style = style;
-    }
-  }
-
-  private static <E> E[] asArray(final E... elements) {
-    return elements;
-  }
-  /**
-   * Attaches editor behaviour to a toolbar, adding all the edit buttons.
-   */
-  public static EditToolbar create(final ParticipantId user, final IdGenerator idGenerator) {
-    final ToplevelToolbarWidget toolbarUi = new ToplevelToolbarWidget();
-    final EditorToolbarResources.Css css = EditorToolbarResources.Loader.res.css();
-    return new EditToolbar(css, toolbarUi, user, idGenerator);
-  }
-  private final AttachmentIdGenerator attachmentIdGenerator;
-  private final EditorToolbarResources.Css css;
-
-  private final EditorContextAdapter editor = new EditorContextAdapter(null);
-  private final ToplevelToolbarWidget toolbarUi;
-
-  private final ButtonUpdater updater = new ButtonUpdater(editor);
-
-  private final ParticipantId user;
-
-  private EditToolbar(final EditorToolbarResources.Css css, final ToplevelToolbarWidget toolbarUi,
-      final ParticipantId user, final IdGenerator idGenerator) {
-    this.css = css;
-    this.toolbarUi = toolbarUi;
-    this.user = user;
-    attachmentIdGenerator = new AttachmentIdGeneratorImpl(idGenerator);
-  }
-
-  /**
-   * Adds a button to this toolbar.
-   */
-  public void addClickButton(final String icon, final ClickHandler handler) {
-    final ToolbarClickButton.Listener uiHandler = new ToolbarClickButton.Listener() {
-      @Override
-      public void onClicked() {
-        handler.onClicked(editor);
-      }
-    };
-    new ToolbarButtonViewBuilder().setIcon(icon).applyTo(toolbarUi.addClickButton(), uiHandler);
-  }
-
-  private void createAlignButtons(final ToolbarView toolbar) {
-    final SubmenuToolbarView submenu = toolbar.addSubmenu();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.alignDrop())
-        .applyTo(submenu, null);
-    submenu.setShowDropdownArrow(false); // Icon already has dropdown arrow.
-    final ToolbarView group = submenu.addGroup();
-    for (final Alignment alignment : asArray(
-        new Alignment("Left", css.alignLeft(), Paragraph.Alignment.LEFT),
-        new Alignment("Centre", css.alignCentre(), Paragraph.Alignment.CENTER),
-        new Alignment("Right", css.alignRight(), Paragraph.Alignment.RIGHT))) {
-      final ToolbarToggleButton b = group.addToggleButton();
-      new ToolbarButtonViewBuilder()
-          .setText(alignment.description)
-          .setIcon(alignment.iconCss)
-          .applyTo(b, createParagraphApplicationController(b, alignment.style));
-    }
-  }
-
-  private void createBoldButton(final ToolbarView toolbar) {
-    final ToolbarToggleButton b = toolbar.addToggleButton();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.bold())
-        .applyTo(b, createTextSelectionController(b, "fontWeight", "bold"));
-  }
-
-  private void createClearFormattingButton(final ToolbarView toolbar) {
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.clearFormatting())
-        .applyTo(toolbar.addClickButton(), new ToolbarClickButton.Listener() {
-          @Override public void onClicked() {
-            EditorAnnotationUtil.clearAnnotationsOverSelection(editor, asArray(
-                StyleAnnotationHandler.key("backgroundColor"),
-                StyleAnnotationHandler.key("color"),
-                StyleAnnotationHandler.key("fontFamily"),
-                StyleAnnotationHandler.key("fontSize"),
-                StyleAnnotationHandler.key("fontStyle"),
-                StyleAnnotationHandler.key("fontWeight"),
-                StyleAnnotationHandler.key("textDecoration")
-                // NOTE: add more as required.
-            ));
-            createClearHeadingsListener().onClicked();
-          }
-        });
-  }
-
-  private ToolbarClickButton.Listener createClearHeadingsListener() {
-    return new ParagraphTraversalController(editor, new ContentElement.Action() {
-        @Override public void execute(final ContentElement e) {
-          e.getMutableDoc().setElementAttribute(e, Paragraph.SUBTYPE_ATTR, null);
-        }
-      });
-  }
-
-  private void createFontFamilyButton(final ToolbarView toolbar) {
-    final SubmenuToolbarView submenu = toolbar.addSubmenu();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.fontFamily())
-        .applyTo(submenu, null);
-    submenu.setShowDropdownArrow(false); // Icon already has dropdown arrow.
-    createFontFamilyGroup(submenu.addGroup(), new FontFamily("Default", null));
-    createFontFamilyGroup(submenu.addGroup(),
-        new FontFamily("Sans Serif", "sans-serif"),
-        new FontFamily("Serif", "serif"),
-        new FontFamily("Wide", "arial black,sans-serif"),
-        new FontFamily("Narrow", "arial narrow,sans-serif"),
-        new FontFamily("Fixed Width", "monospace"));
-    createFontFamilyGroup(submenu.addGroup(),
-        new FontFamily("Arial", "arial,helvetica,sans-serif"),
-        new FontFamily("Comic Sans MS", "comic sans ms,sans-serif"),
-        new FontFamily("Courier New", "courier new,monospace"),
-        new FontFamily("Garamond", "garamond,serif"),
-        new FontFamily("Georgia", "georgia,serif"),
-        new FontFamily("Tahoma", "tahoma,sans-serif"),
-        new FontFamily("Times New Roman", "times new roman,serif"),
-        new FontFamily("Trebuchet MS", "trebuchet ms,sans-serif"),
-        new FontFamily("Verdana", "verdana,sans-serif"));
-  }
-
-  private Element createFontFamilyElement(final FontFamily family) {
-    final Element e = Document.get().createSpanElement();
-    e.getStyle().setProperty("fontFamily", family.style);
-    e.setInnerText(family.description);
-    return e;
-  }
-
-  private void createFontFamilyGroup(final ToolbarView toolbar, final FontFamily... families) {
-    for (final FontFamily family : families) {
-      final ToolbarToggleButton b = toolbar.addToggleButton();
-      b.setVisualElement(createFontFamilyElement(family));
-      b.setListener(createTextSelectionController(b, "fontFamily", family.style));
-    }
-  }
-
-  private void createFontSizeButton(final ToolbarView toolbar) {
-    final SubmenuToolbarView submenu = toolbar.addSubmenu();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.fontSize())
-        .applyTo(submenu, null);
-    submenu.setShowDropdownArrow(false); // Icon already has dropdown arrow.
-    // TODO(kalman): default text size option.
-    final ToolbarView group = submenu.addGroup();
-    for (final int size : asArray(8, 9, 10, 11, 12, 14, 16, 18, 21, 24, 28, 32, 36, 42, 48, 56, 64, 72)) {
-      final ToolbarToggleButton b = group.addToggleButton();
-      final double baseSize = 12.0;
-      b.setVisualElement(createFontSizeElement(baseSize, size));
-      b.setListener(createTextSelectionController(b, "fontSize", (size / baseSize) + "em"));
-    }
-  }
-
-  private Element createFontSizeElement(final double baseSize, final double size) {
-    final Element e = Document.get().createSpanElement();
-    e.getStyle().setFontSize(size / baseSize, Unit.EM);
-    e.setInnerText(((int) size) + "");
-    return e;
-  }
-
-  private void createHeadingButton(final ToolbarView toolbar) {
-    final SubmenuToolbarView submenu = toolbar.addSubmenu();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.heading())
-        .applyTo(submenu, null);
-    submenu.setShowDropdownArrow(false); // Icon already has dropdown arrow.
-    final ToolbarClickButton defaultButton = submenu.addClickButton();
-    new ToolbarButtonViewBuilder()
-        .setText("Default")
-        .applyTo(defaultButton, createClearHeadingsListener());
-    final ToolbarView group = submenu.addGroup();
-    for (final int level : asArray(1, 2, 3, 4)) {
-      final ToolbarToggleButton b = group.addToggleButton();
-      b.setVisualElement(createHeadingElement(level));
-      b.setListener(createParagraphApplicationController(b, Paragraph.regularStyle("h" + level)));
-    }
-  }
-
-  private Element createHeadingElement(final int level) {
-    final Element e = Document.get().createElement("h" + level);
-    e.getStyle().setMarginTop(2, Unit.PX);
-    e.getStyle().setMarginBottom(2, Unit.PX);
-    e.setInnerText("Heading " + level);
-    return e;
-  }
-
-  private void createIndentButton(final ToolbarView toolbar) {
-    final ToolbarClickButton b = toolbar.addClickButton();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.indent())
-        .applyTo(b, new ParagraphTraversalController(editor, Paragraph.INDENTER));
-  }
-
-  private void createInsertAttachmentButton(final ToolbarView toolbar, final ParticipantId user) {
-    // Find the current wave id.
-    final String encodedToken = History.getToken();
-    WaveRef waveRef = null;
-    if (encodedToken != null && !encodedToken.isEmpty()) {
-      waveRef = HistorySupport.waveRefFromHistoryToken(encodedToken);
-    }
-    // Kune workaround while we do a HistorySupport patch
-    if (waveRef == null) {
-      return;
-    }
-    Preconditions.checkState(waveRef != null);
-    final String waveRefToken = URL.encode(GwtWaverefEncoder.encodeToUriQueryString(waveRef));
-
-    new ToolbarButtonViewBuilder().setIcon(css.insertAttachment()).setTooltip("Insert attachment")
-        .applyTo(toolbar.addClickButton(), new ToolbarClickButton.Listener() {
-          @Override
-          public void onClicked() {
-            int tmpCursor = -1;
-            final FocusedRange focusedRange = editor.getSelectionHelper().getSelectionRange();
-            if (focusedRange != null) {
-              tmpCursor = focusedRange.getFocus();
-            }
-            final int cursorLoc = tmpCursor;
-            final AttachmentPopupView attachmentView = new AttachmentPopupWidget();
-            attachmentView.init(new Listener() {
-
-              @Override
-              public void onDone(final String encodedWaveRef, final String attachmentId, final String fullFileName) {
-                // Insert a file name linking to the attachment URL.
-                final int lastSlashPos = fullFileName.lastIndexOf("/");
-                final int lastBackSlashPos = fullFileName.lastIndexOf("\\");
-                String fileName = fullFileName;
-                if (lastSlashPos != -1) {
-                  fileName = fullFileName.substring(lastSlashPos + 1, fullFileName.length());
-                } else if (lastBackSlashPos != -1) {
-                  fileName = fullFileName.substring(lastBackSlashPos + 1, fullFileName.length());
-                }
-                final XmlStringBuilder xml = XmlStringBuilder.createFromXmlString(fileName);
-                int to = -1;
-                final int docSize = editor.getDocument().size();
-                if (cursorLoc != -1) {
-                  // Insert the attachment at the cursor location.
-                  final CMutableDocument doc = editor.getDocument();
-                  final Point<ContentNode> point = doc.locate(cursorLoc);
-                  doc.insertXml(point, xml);
-                } else {
-                  LineContainers.appendLine(editor.getDocument(), xml);
-                }
-                // Calculate the link length for the attachment.
-                to = cursorLoc + editor.getDocument().size() - docSize;
-                final String linkValue =
-                    GWT.getHostPageBaseURL() + "attachment/" + attachmentId + "?fileName="
-                        + fileName + "&waveRef=" + encodedWaveRef;
-                EditorAnnotationUtil.setAnnotationOverRange(editor.getDocument(),
-                    editor.getCaretAnnotations(), Link.KEY, linkValue, cursorLoc, to);
-                // Store the attachment information as annotations to allow
-                // robots detect and process them.
-                EditorAnnotationUtil.setAnnotationOverRange(editor.getDocument(),
-                    editor.getCaretAnnotations(), "attachment/id", attachmentId, cursorLoc, to);
-                EditorAnnotationUtil.setAnnotationOverRange(editor.getDocument(),
-                    editor.getCaretAnnotations(), "attachment/fileName", fileName, cursorLoc, to);
-              }
-
-              @Override
-              public void onHide() {
-              }
-
-              @Override
-              public void onShow() {
-              }
-            });
-
-            attachmentView.setAttachmentId(attachmentIdGenerator.newAttachmentId());
-            attachmentView.setWaveRef(waveRefToken);
-            attachmentView.show();
-          }
-        });
-}
-
-  private void createInsertGadgetButton(final ToolbarView toolbar, final ParticipantId user) {
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.insertGadget())
-        .applyTo(toolbar.addClickButton(), new ToolbarClickButton.Listener() {
-          @Override public void onClicked() {
-            final GadgetSelectorWidget selector = new GadgetSelectorWidget();
-            selector.addFeaturedOptions();
-            final UniversalPopup popup = selector.showInPopup();
-            selector.setListener(new GadgetSelectorWidget.Listener() {
-              @Override public void onSelect(final String url) {
-                insertGadget(url);
-                popup.hide();
-              }
-            });
-          }
-        });
-  }
-
-  private void createInsertLinkButton(final ToolbarView toolbar) {
-    // TODO (Yuri Z.) use createTextSelectionController when the full
-    // link doodad is incorporated
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.insertLink())
-        .applyTo(toolbar.addClickButton(), new ToolbarClickButton.Listener() {
-              @Override  public void onClicked() {
-                final FocusedRange range = editor.getSelectionHelper().getSelectionRange();
-                if (range == null || range.isCollapsed()) {
-                  Window.alert("Select some text to create a link.");
-                  return;
-                }
-                final String rawLinkValue =
-                    Window.prompt("Enter link: URL or Wave ID.", WaveRefConstants.WAVE_URI_PREFIX);
-                // user hit "ESC" or "cancel"
-                if (rawLinkValue == null) {
-                  return;
-                }
-                try {
-                  final String linkAnnotationValue = Link.normalizeLink(rawLinkValue);
-                  EditorAnnotationUtil.setAnnotationOverSelection(editor, Link.KEY,
-                      linkAnnotationValue);
-                } catch (final InvalidLinkException e) {
-                  Window.alert(e.getLocalizedMessage());
-                }
-              }
-            });
-  }
-
-  private void createItalicButton(final ToolbarView toolbar) {
-    final ToolbarToggleButton b = toolbar.addToggleButton();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.italic())
-        .applyTo(b, createTextSelectionController(b, "fontStyle", "italic"));
-  }
-
-  private void createOrderedListButton(final ToolbarView toolbar) {
-    final ToolbarToggleButton b = toolbar.addToggleButton();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.orderedlist())
-        .applyTo(b, createParagraphApplicationController(
-            b, Paragraph.listStyle(Paragraph.LIST_STYLE_DECIMAL)));
-  }
-
-  private void createOutdentButton(final ToolbarView toolbar) {
-    final ToolbarClickButton b = toolbar.addClickButton();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.outdent())
-        .applyTo(b, new ParagraphTraversalController(editor, Paragraph.OUTDENTER));
-  }
-
-  private ToolbarToggleButton.Listener createParagraphApplicationController(final ToolbarToggleButton b,
-      final LineStyle style) {
-    return updater.add(new ParagraphApplicationController(b, editor, style));
-  }
-
-  private void createRemoveLinkButton(final ToolbarView toolbar) {
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.removeLink())
-        .applyTo(toolbar.addClickButton(), new ToolbarClickButton.Listener() {
-          @Override public void onClicked() {
-            if (editor.getSelectionHelper().getSelectionRange() != null) {
-              EditorAnnotationUtil.clearAnnotationsOverSelection(editor, Link.LINK_KEYS);
-            }
-          }
-        });
-  }
-
-  private void createStrikethroughButton(final ToolbarView toolbar) {
-    final ToolbarToggleButton b = toolbar.addToggleButton();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.strikethrough())
-        .applyTo(b, createTextSelectionController(b, "textDecoration", "line-through"));
-  }
-
-  private void createSubscriptButton(final ToolbarView toolbar) {
-    final ToolbarToggleButton b = toolbar.addToggleButton();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.subscript())
-        .applyTo(b, createTextSelectionController(b, "verticalAlign", "sub"));
-  }
-
-  private void createSuperscriptButton(final ToolbarView toolbar) {
-    final ToolbarToggleButton b = toolbar.addToggleButton();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.superscript())
-        .applyTo(b, createTextSelectionController(b, "verticalAlign", "super"));
-  }
-
-  private ToolbarToggleButton.Listener createTextSelectionController(final ToolbarToggleButton b,
-      final String styleName, final String value) {
-    return updater.add(new TextSelectionController(b, editor,
-        StyleAnnotationHandler.key(styleName), value));
-  }
-
-  private void createUnderlineButton(final ToolbarView toolbar) {
-    final ToolbarToggleButton b = toolbar.addToggleButton();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.underline())
-        .applyTo(b, createTextSelectionController(b, "textDecoration", "underline"));
-  }
-
-  private void createUnorderedListButton(final ToolbarView toolbar) {
-    final ToolbarToggleButton b = toolbar.addToggleButton();
-    new ToolbarButtonViewBuilder()
-        .setIcon(css.unorderedlist())
-        .applyTo(b, createParagraphApplicationController(b, Paragraph.listStyle(null)));
-  }
-
-  /**
-   * Stops listening to editor changes.
-   *
-   * @throws IllegalStateException if this toolbar is not currently enabled
-   * @throws IllegalArgumentException if this toolbar is currently enabled for a
-   *         different editor
-   */
-  public void disable(final Editor editor) {
-    this.editor.checkEditor(editor);
-    // The above won't throw if we're not currently enabled, but it makes sure
-    // 'editor' is the same as the current editor, if any. So if 'editor' is
-    // null, it means we aren't enabled (the wrapped editor is null too).
-    Preconditions.checkState(editor != null);
-    editor.removeUpdateListener(updater);
-    this.editor.switchEditor(null);
-  }
-
-  /**
-   * Starts listening to editor changes.
-   *
-   * @throws IllegalStateException if this toolbar is already enabled
-   * @throws IllegalArgumentException if the editor is <code>null</code>
-   */
-  public void enable(final Editor editor) {
-    this.editor.checkEditor(null);
-    Preconditions.checkArgument(editor != null);
-    this.editor.switchEditor(editor);
-    editor.addUpdateListener(updater);
-    updater.updateButtonStates();
-  }
-
-  /**
-   * @return the {@link ToplevelToolbarWidget} backing this toolbar.
-   */
-  public ToplevelToolbarWidget getWidget() {
-    return toolbarUi;
-  }
-
-  /** Constructs the initial set of actions in the toolbar. */
-  public void init() {
-    ToolbarView group = toolbarUi.addGroup();
-    createBoldButton(group);
-    createItalicButton(group);
-    createUnderlineButton(group);
-    createStrikethroughButton(group);
-
-    group = toolbarUi.addGroup();
-    createSuperscriptButton(group);
-    createSubscriptButton(group);
-
-    group = toolbarUi.addGroup();
-    createFontSizeButton(group);
-    createFontFamilyButton(group);
-    createHeadingButton(group);
-
-    group = toolbarUi.addGroup();
-    createIndentButton(group);
-    createOutdentButton(group);
-
-    group = toolbarUi.addGroup();
-    createUnorderedListButton(group);
-    createOrderedListButton(group);
-
-    group = toolbarUi.addGroup();
-    createAlignButtons(group);
-    createClearFormattingButton(group);
-
-    group = toolbarUi.addGroup();
-    createInsertLinkButton(group);
-    createRemoveLinkButton(group);
-
-    group = toolbarUi.addGroup();
-    createInsertGadgetButton(group, user);
-
-    group = toolbarUi.addGroup();
-    createInsertAttachmentButton(group, user);
-  }
-
-  private void insertGadget(final String url) {
-    int from = -1;
-    final FocusedRange focusedRange = editor.getSelectionHelper().getSelectionRange();
-    if (focusedRange != null) {
-      from = focusedRange.getFocus();
-    }
-    if (url != null && !url.isEmpty()) {
-      final XmlStringBuilder xml = GadgetXmlUtil.constructXml(url, "", user.getAddress());
-      final CMutableDocument document = editor.getDocument();
-      if (document == null) {
-        return;
-      }
-      if (from != -1) {
-        final Point<ContentNode> point = document.locate(from);
-        document.insertXml(point, xml);
-      } else {
-        LineContainers.appendLine(document, xml);
-      }
-    }
-  }
-}




More information about the kune-commits mailing list