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/
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 [email protected] (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); - } - } - } -}
participants (1)
-
Vicente J. Ruiz Jurado