[kune-commits] r844 - in trunk: . script src/main/java/org/ourproject/kune/app/public src/main/java/org/ourproject/kune/app/public/css src/main/java/org/ourproject/kune/chat/client src/main/java/org/ourproject/kune/chat/client/ctx/rooms src/main/java/org/ourproject/kune/docs/client src/main/java/org/ourproject/kune/docs/client/cnt src/main/java/org/ourproject/kune/docs/client/cnt/folder/viewer/ui src/main/java/org/ourproject/kune/docs/client/cnt/reader src/main/java/org/ourproject/kune/docs/client/cnt/reader/ui src/main/java/org/ourproject/kune/docs/client/ctx src/main/java/org/ourproject/kune/docs/client/ctx/folder src/main/java/org/ourproject/kune/platf/client src/main/java/org/ourproject/kune/platf/client/actions src/main/java/org/ourproject/kune/platf/client/dto src/main/java/org/ourproject/kune/platf/client/services src/main/java/org/ourproject/kune/platf/client/state src/main/java/org/ourproject/kune/platf/client/tool src/main/java/org/ourproject/kune/workspace/client/editor src/main/java/org/ourproject/kune/workspace/client/newgroup src/main/java/org/ourproject/kune/workspace/client/sitebar/login src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/themes src/test/java/org/ourproject/kune/workspace/client/editor

vjrj vjrj at ourproject.org
Sun Sep 7 16:08:01 CEST 2008


Author: vjrj
Date: 2008-09-07 16:07:16 +0200 (Sun, 07 Sep 2008)
New Revision: 844

Added:
   trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPanel.java
   trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentView.java
   trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPanel.java
   trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPresenter.java
   trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextView.java
   trunk/src/main/java/org/ourproject/kune/platf/client/actions/
   trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionManager.java
   trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionPosition.java
   trunk/src/main/java/org/ourproject/kune/platf/client/actions/ClientActionCollection.java
   trunk/src/main/java/org/ourproject/kune/platf/client/actions/ClientActionDescriptor.java
   trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessRolDTO.java
   trunk/src/main/java/org/ourproject/kune/platf/client/dto/ContentStatusDTO.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigationItem.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigator.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorImages.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorView.java
Removed:
   trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPresenter.java
   trunk/src/main/java/org/ourproject/kune/docs/client/ctx/folder/FolderContext.java
   trunk/src/main/java/org/ourproject/kune/docs/client/ctx/folder/FolderContextPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItems.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsImages.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsView.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextTopBar.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ControlsPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ItemsPanel.java
Modified:
   trunk/pom.xml
   trunk/script/css-compact-and-tidy.css
   trunk/src/main/java/org/ourproject/kune/app/public/Kune.html
   trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
   trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
   trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
   trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java
   trunk/src/main/java/org/ourproject/kune/chat/client/ctx/rooms/RoomsAdminPresenter.java
   trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
   trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java
   trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContent.java
   trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java
   trunk/src/main/java/org/ourproject/kune/docs/client/cnt/folder/viewer/ui/FolderViewerPanel.java
   trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControl.java
   trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControlPresenter.java
   trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControlView.java
   trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/ui/DocumentReaderControlPanel.java
   trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContext.java
   trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateToken.java
   trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
   trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java
   trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java
   trunk/src/main/java/org/ourproject/kune/platf/client/tool/ClientTool.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditor.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorListener.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorView.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInView.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/EntityWorkspace.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/Toolbar.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/WorkspaceSkeleton.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/themes/WsThemePresenter.java
   trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java
Log:
new context navigator (more powerful but already buggy), new actions definition and management, many content/context changes, some bug fixes and enhacements


Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/pom.xml	2008-09-07 14:07:16 UTC (rev 844)
@@ -31,13 +31,13 @@
     <dependency>
       <groupId>com.google.gwt</groupId>
       <artifactId>gwt-user</artifactId>
-      <version>1.5.2</version>
+      <version>1.5.0</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>com.google.gwt</groupId>
       <artifactId>gwt-servlet</artifactId>
-      <version>1.5.2</version>
+      <version>1.5.0</version>
     </dependency>
     <!-- Use new repo -->
     <!-- http://code.google.com/p/gwt-ext/issues/detail?id=180 -->
@@ -56,12 +56,12 @@
     <dependency>
       <groupId>com.allen_sauer.gwt.log.gwt-log</groupId>
       <artifactId>gwt-log</artifactId>
-      <version>2.5.0</version>
+      <version>2.5.2</version>
     </dependency>
     <dependency>
       <groupId>com.allen_sauer.gwt.voices.gwt-voices</groupId>
       <artifactId>gwt-voices</artifactId>
-      <version>1.5.1</version>
+      <version>1.5.5</version>
     </dependency>
 
     <!-- utilities -->

Modified: trunk/script/css-compact-and-tidy.css
===================================================================
--- trunk/script/css-compact-and-tidy.css	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/script/css-compact-and-tidy.css	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,11 +1,28 @@
 #!/bin/bash
-#!/bin/bash
 ORIG=src/main/java/org/ourproject/kune/app/public/
 CATTMPFILE=`mktemp -t css.1.XXX` || exit 1
 CSSTMPFILE=`mktemp -t css.2.XXX` || exit 1
 DEST=src/main/java/org/ourproject/kune/app/public/css/all.css
 DEST2=src/main/java/org/ourproject/kune/app/public/css/richtext.css
-CSS='css/reset.css css/fonts-min.css js/ext/resources/css/ext-all.css js/ext/resources/css/xtheme-gray.css css/kune.css css/workspace.css css/chat.css css/docs.css css/kune-new.css'
+
+EXTTMPFILE=$ORIG/js/ext/resources/css/ext-all.css-tmp
+
+sed 's/normal 11px/normal 100\%/g' $ORIG/js/ext/resources/css/ext-all.css |\
+sed 's/bold 11px/normal 100\%/g' |\
+sed 's/normal 12px/normal 108\%/g' |\
+sed 's/bold 12px/bold 108\%/g' |\
+sed 's/font-size:11px/font-size:100\%/g' |\
+sed 's/font-size:12px/font-size:108\%/g' |\
+sed 's/ arial,tahoma,helvetica,sans-serif/ arial,sans/g' |\
+sed 's/ tahoma,arial,helvetica,sans-serif/ arial,sans/g' |\
+sed 's/ tahoma,arial,verdana,sans-serif/ arial,sans/g' |\
+sed 's/ tahoma,verdana,helvetica/ arial,sans/g' |\
+sed 's/ tahoma,arial,helvetica/ arial,sans/g' |\
+sed 's/ tahoma,arial,sans-serif/ arial,sans/g' |\
+sed 's/ \"sans serif\",tahoma,verdana,helvetica/ arial,sans/g' |\
+sed 's/ arial,helvetica,tahoma,sans-serif/ arial,sans/g' > $EXTTMPFILE
+
+CSS='css/reset.css css/fonts-min.css js/ext/resources/css/ext-all.css-tmp js/ext/resources/css/xtheme-gray.css css/kune.css css/workspace.css css/chat.css css/docs.css css/kune-new.css'
 CSS2='css/reset.css css/fonts-min.css css/base-min.css css/rte.css'
 
 function concat {
@@ -40,3 +57,5 @@
 
 concat $CSS2
 tidy $DEST2
+
+rm $EXTTMPFILE

Modified: trunk/src/main/java/org/ourproject/kune/app/public/Kune.html
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/Kune.html	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/app/public/Kune.html	2008-09-07 14:07:16 UTC (rev 844)
@@ -25,6 +25,7 @@
   top: 2px;
   left: 2px;
   z-index: 30000;
+  font-family: arial,sans;
 }
 
 .kune-Progress {
@@ -41,7 +42,7 @@
 <script type="text/javascript" language="javascript"
     src="org.ourproject.kune.app.Kune.nocache.js"></script>
 <iframe id="__gwt_historyFrame" style="width: 0; height: 0; border: 0"></iframe>
-<div id="kuneprogresspanel" class="kune-sitebar">
+<div id="kuneprogresspanel" class="k-sitebar">
 <table cellspacing="0" summary="Starting" cellpadding="0" border="0"
     style="height: 16px; margin-top: 5px; margin-left: 5px;">
     <tbody>

Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css	2008-09-07 14:07:16 UTC (rev 844)
@@ -33,7 +33,7 @@
 
 .ext-el-mask{z-index:20000;position:absolute;top:0;left:0;-moz-opacity:0.5;opacity:.50;filter:alpha(opacity=50);background-color:#CCC;width:100%;height:100%;zoom:1;}
 .ext-el-mask-msg{z-index:20001;position:absolute;top:0;left:0;border:1px solid #6593cf;background:#c3daf9 url(../js/ext/resources/images/default/box/tb-blue.gif) repeat-x 0 -16px;padding:2px;}
-.ext-el-mask-msg div{padding:5px 10px 5px 10px;background:#eee;border:1px solid #a3bad9;color:#222;font:normal 11px tahoma,arial,helvetica,sans-serif;cursor:wait;}
+.ext-el-mask-msg div{padding:5px 10px 5px 10px;background:#eee;border:1px solid #a3bad9;color:#222;font:normal 100% arial,sans;cursor:wait;}
 .ext-shim{position:absolute;visibility:hidden;left:0;top:0;overflow:hidden;}
 .ext-ie .ext-shim{filter:alpha(opacity=0);}
 .ext-ie6 .ext-shim{margin-left:5px;margin-top:3px;}
@@ -74,7 +74,7 @@
 .x-shadow .xsbl{background:transparent url( ../js/ext/resources/images/default/shadow.png ) no-repeat 0 -12px;}
 .x-shadow .xsbc{background:transparent url( ../js/ext/resources/images/default/shadow.png ) repeat-x 0 -36px;}
 .x-shadow .xsbr{background:transparent url( ../js/ext/resources/images/default/shadow.png ) repeat-x 0 -6px;}
-.loading-indicator{font-size:11px;background-image:url(../js/ext/resources/images/default/grid/loading.gif);background-repeat:no-repeat;background-position:left;padding-left:20px;line-height:16px;margin:3px;}
+.loading-indicator{font-size:100%;background-image:url(../js/ext/resources/images/default/grid/loading.gif);background-repeat:no-repeat;background-position:left;padding-left:20px;line-height:16px;margin:3px;}
 .x-text-resize{position:absolute;left:-1000px;top:-1000px;visibility:hidden;zoom:1;}
 .x-drag-overlay{width:100%;height:100%;display:none;position:absolute;left:0;top:0;background-image:url(../js/ext/resources/images/default/s.gif);z-index:20000;}
 .x-clear{clear:both;height:0;overflow:hidden;line-height:0;font-size:0;}
@@ -97,7 +97,7 @@
 .x-tab-strip a,.x-tab-strip span,.x-tab-strip em{display:block;}
 .x-tab-strip a{text-decoration:none!important;-moz-outline:none;outline:none;cursor:pointer;}
 .x-tab-strip-inner{overflow:hidden;text-overflow:ellipsis;}
-.x-tab-strip span.x-tab-strip-text{font:normal 11px tahoma,arial,helvetica;color:#416aa3;white-space:nowrap;cursor:pointer;padding:4px 0;}
+.x-tab-strip span.x-tab-strip-text{font:normal 100% arial,sans;color:#416aa3;white-space:nowrap;cursor:pointer;padding:4px 0;}
 .x-tab-strip .x-tab-with-icon .x-tab-right{padding-left:6px;}
 .x-tab-strip .x-tab-with-icon span.x-tab-strip-text{padding-left:20px;background-position:0 3px;background-repeat:no-repeat;}
 .x-tab-strip-over span.x-tab-strip-text{color:#15428b;}
@@ -147,7 +147,7 @@
 .x-tab-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
 .x-border-layout-ct .x-tab-panel{background:white;}
 
- .x-form-field{margin:0;font:normal 12px tahoma,arial,helvetica,sans-serif;}
+ .x-form-field{margin:0;font:normal 108% arial,sans;}
 .x-form-text,textarea.x-form-field{padding:1px 3px;background:#fff url(../js/ext/resources/images/default/form/text-bg.gif) repeat-x 0 0;border:1px solid #B5B8C8;}
 textarea.x-form-field{padding:2px 3px;}
 .x-form-text{height:22px;line-height:18px;vertical-align:middle;}
@@ -184,22 +184,22 @@
 .ext-ie .x-form-check-wrap input{width:15px;height:15px;}
 .x-editor .x-form-check-wrap{padding:3px;}
 .x-editor .x-form-checkbox{height:13px;}
-.x-form-grow-sizer{font:normal 12px tahoma,arial,helvetica,sans-serif;left:-10000px;padding:8px 3px;position:absolute;visibility:hidden;top:-10000px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;zoom:1;}
+.x-form-grow-sizer{font:normal 108% arial,sans;left:-10000px;padding:8px 3px;position:absolute;visibility:hidden;top:-10000px;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;zoom:1;}
 .x-form-grow-sizer p{margin:0!important;border:0 none!important;padding:0!important;}
-.x-form-item{font:normal 12px tahoma,arial,helvetica,sans-serif;display:block;margin-bottom:4px;}
+.x-form-item{font:normal 108% arial,sans;display:block;margin-bottom:4px;}
 .x-form-item label{display:block;float:left;width:100px;padding:3px;padding-left:0;clear:left;z-index:2;position:relative;}
 .x-form-element{padding-left:105px;position:relative;}
-.x-form-invalid-msg{color:#e00;padding:2px;padding-left:18px;font:normal 11px tahoma,arial,helvetica,sans-serif;background:transparent url(../js/ext/resources/images/default/shared/warning.gif) no-repeat 0 2px;line-height:16px;width:200px;}
+.x-form-invalid-msg{color:#e00;padding:2px;padding-left:18px;font:normal 100% arial,sans;background:transparent url(../js/ext/resources/images/default/shared/warning.gif) no-repeat 0 2px;line-height:16px;width:200px;}
 .x-form-label-right label{text-align:right;}
 .x-form-label-top .x-form-item label{width:auto;float:none;clear:none;display:inline;margin-bottom:4px;position:static;}
 .x-form-label-top .x-form-element{padding-left:0;padding-top:4px;}
 .x-form-label-top .x-form-item{padding-bottom:4px;}
 .x-form-empty-field{color:gray;}
-.x-small-editor .x-form-field{font:normal 11px arial,tahoma,helvetica,sans-serif;}
+.x-small-editor .x-form-field{font:normal 100% arial,sans;}
 .x-small-editor .x-form-text{height:20px;line-height:16px;vertical-align:middle;}
 .ext-ie .x-small-editor .x-form-text{margin-top:-1px!important;margin-bottom:-1px!important;height:20px!important;line-height:16px!important;}
 .ext-strict .x-small-editor .x-form-text{height:16px!important;}
-.ext-safari .x-small-editor .x-form-field{font:normal 12px arial,tahoma,helvetica,sans-serif;}
+.ext-safari .x-small-editor .x-form-field{font:normal 108% arial,sans;}
 .ext-ie .x-small-editor .x-form-text{height:20px;line-height:16px;}
 .ext-border-box .x-small-editor .x-form-text{height:20px;}
 .x-small-editor .x-form-select-one{height:20px;line-height:16px;vertical-align:middle;}
@@ -224,7 +224,7 @@
 .x-form .x-form-btns-ct .x-btn-click .x-btn-left{background-position:0 -63px;}
 .x-form-invalid-icon{width:16px;height:18px;visibility:hidden;position:absolute;left:0;top:0;display:block;background:transparent url(../js/ext/resources/images/default/form/exclamation.gif) no-repeat 0 2px;}
 .x-fieldset{border:1px solid #B5B8C8;padding:10px;margin-bottom:10px;}
-.x-fieldset legend{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;}
+.x-fieldset legend{font:normal 100% arial,sans;color:#15428b;}
 .ext-ie .x-fieldset legend{margin-bottom:10px;}
 .ext-ie .x-fieldset{padding-top:0;padding-bottom:10px;}
 .x-fieldset legend .x-tool-toggle{margin-right:3px;margin-left:0;float:left!important;}
@@ -245,8 +245,8 @@
 .x-fieldset-bwrap{overflow:hidden;zoom:1;}
 .x-fieldset-body{overflow:hidden;}
 
-.x-btn{font:normal 11px tahoma,verdana,helvetica;cursor:pointer;white-space:nowrap;}
-.x-btn button{border:0 none;background:transparent;font:normal 11px tahoma,verdana,helvetica;padding-left:3px;padding-right:3px;cursor:pointer;margin:0;overflow:visible;width:auto;-moz-outline:0 none;outline:0 none;}
+.x-btn{font:normal 100% arial,sans;cursor:pointer;white-space:nowrap;}
+.x-btn button{border:0 none;background:transparent;font:normal 100% arial,sans;padding-left:3px;padding-right:3px;cursor:pointer;margin:0;overflow:visible;width:auto;-moz-outline:0 none;outline:0 none;}
 * html .ext-ie .x-btn button{width:1px;}
 .ext-gecko .x-btn button{padding-left:0;padding-right:0;}
 .ext-ie .x-btn button{padding-top:2px;}
@@ -279,7 +279,7 @@
 .x-toolbar .x-item-disabled .x-btn-icon{opacity:.35;-moz-opacity:.35;filter:alpha(opacity=35);}
 .x-toolbar td{vertical-align:middle;}
 .mso .x-toolbar,.x-grid-mso .x-toolbar{border:0 none;background:url(../js/ext/resources/images/default/grid/mso-hd.gif);}
-.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{white-space:nowrap;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{white-space:nowrap;font:normal 100% arial,sans;}
 .x-toolbar .x-item-disabled{color:gray;cursor:default;opacity:.6;-moz-opacity:.6;filter:alpha(opacity=60);}
 .x-toolbar .x-item-disabled *{color:gray;cursor:default;}
 .x-toolbar .x-btn-left{background:none;}
@@ -342,7 +342,7 @@
 .x-grid-panel .x-panel-mc .x-panel-body{border:1px solid #99bbe8;}
 .ext-ie .x-grid3 table,.ext-safari .x-grid3 table{table-layout:fixed;}
 .x-grid3-viewport{overflow:hidden;}
-.x-grid3-hd-row td,.x-grid3-row td,.x-grid3-summary-row td{font:normal 11px arial,tahoma,helvetica,sans-serif;-moz-outline:none;-moz-user-focus:normal;}
+.x-grid3-hd-row td,.x-grid3-row td,.x-grid3-summary-row td{font:normal 100% arial,sans;-moz-outline:none;-moz-user-focus:normal;}
 .x-grid3-row td,.x-grid3-summary-row td{line-height:13px;vertical-align:top;padding-left:1px;padding-right:1px;-moz-user-select:none;}
 .x-grid3-hd-row td{line-height:15px;vertical-align:middle;border-left:1px solid #eee;border-right:1px solid #d0d0d0;}
 .x-grid3-hd-row .x-grid3-marker-hd{padding:3px;}
@@ -392,7 +392,7 @@
 .x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{background:#ebeadb url(../js/ext/resources/images/default/grid/grid-hrow.gif) repeat-x 0 bottom!important;vertical-align:middle!important;color:black;padding:0;border-top:1px solid white;border-bottom:none!important;border-right:1px solid #6fa0df!important;text-align:center;}
 .x-grid3-locked td.x-grid3-row-marker div,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{padding:0 4px;color:#15428b!important;text-align:center;}
 .x-grid3-dirty-cell{background:transparent url(../js/ext/resources/images/default/grid/dirty.gif) no-repeat 0 0;}
-.x-grid3-topbar,.x-grid3-bottombar{font:normal 11px arial,tahoma,helvetica,sans-serif;overflow:hidden;display:none;zoom:1;position:relative;}
+.x-grid3-topbar,.x-grid3-bottombar{font:normal 100% arial,sans;overflow:hidden;display:none;zoom:1;position:relative;}
 .x-grid3-topbar .x-toolbar{border-right:0 none;}
 .x-grid3-bottombar .x-toolbar{border-right:0 none;border-bottom:0 none;border-top:1px solid #a9bfd3;}
 .x-props-grid .x-grid3-cell{padding:1px;}
@@ -430,7 +430,7 @@
 .x-grid3-check-col-on{width:100%;height:16px;background-position:center center;background-repeat:no-repeat;background-color:transparent;background-image:url(../js/ext/resources/images/default/menu/checked.gif);}
 .x-grid-group,.x-grid-group-body,.x-grid-group-hd{zoom:1;}
 .x-grid-group-hd{border-bottom:2px solid #99bbe8;cursor:pointer;padding-top:6px;}
-.x-grid-group-hd div{background:transparent url(../js/ext/resources/images/default/grid/group-expand-sprite.gif) no-repeat 3px -47px;padding:4px 4px 4px 17px;color:#3764a0;font:bold 11px tahoma,arial,helvetica,sans-serif;}
+.x-grid-group-hd div{background:transparent url(../js/ext/resources/images/default/grid/group-expand-sprite.gif) no-repeat 3px -47px;padding:4px 4px 4px 17px;color:#3764a0;font:normal 100% arial,sans;}
 .x-grid-group-collapsed .x-grid-group-hd div{background-position:3px 3px;}
 .x-grid-group-collapsed .x-grid-group-body{display:none;}
 .x-group-by-icon{background-image:url(../js/ext/resources/images/default/grid/group-by.gif);}
@@ -438,11 +438,11 @@
 .x-show-groups-icon{background-image:url(../js/ext/resources/images/default/grid/group-by.gif);}
 .ext-ie .x-grid3 .x-editor .x-form-text{position:relative;top:-1px;}
 .ext-ie .x-props-grid .x-editor .x-form-text{position:static;top:0;}
-.x-grid-empty{padding:10px;color:gray;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.x-grid-empty{padding:10px;color:gray;font:normal 100% arial,sans;}
 .ext-ie7 .x-grid-panel .x-panel-bbar{position:relative;}
 
 .x-dd-drag-proxy{position:absolute;left:0;top:0;visibility:hidden;z-index:15000;}
-.x-dd-drag-ghost{color:black;font:normal 11px arial,helvetica,sans-serif;-moz-opacity:0.85;opacity:.85;filter:alpha(opacity=85);border-top:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #bbb;border-bottom:1px solid #bbb;padding:3px;padding-left:20px;background-color:white;white-space:nowrap;}
+.x-dd-drag-ghost{color:black;font:normal 100% arial,helvetica,sans-serif;-moz-opacity:0.85;opacity:.85;filter:alpha(opacity=85);border-top:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #bbb;border-bottom:1px solid #bbb;padding:3px;padding-left:20px;background-color:white;white-space:nowrap;}
 .x-dd-drag-repair .x-dd-drag-ghost{-moz-opacity:0.4;opacity:.4;filter:alpha(opacity=40);border:0 none;padding:0;background-color:transparent;}
 .x-dd-drag-repair .x-dd-drop-icon{visibility:hidden;}
 .x-dd-drop-icon{position:absolute;top:3px;left:3px;display:block;width:16px;height:16px;background-color:transparent;background-position:center;background-repeat:no-repeat;z-index:1;}
@@ -493,7 +493,7 @@
 .x-tree-arrows .x-tree-ec-over .x-tree-elbow-end-minus{background-position:-48px 0;}
 .x-tree-elbow-plus,.x-tree-elbow-minus,.x-tree-elbow-end-plus,.x-tree-elbow-end-minus{cursor:pointer;}
 .ext-ie ul.x-tree-node-ct{font-size:0;line-height:0;zoom:1;}
-.x-tree-node{color:black;font:normal 11px arial,tahoma,helvetica,sans-serif;white-space:nowrap;}
+.x-tree-node{color:black;font:normal 100% arial,sans;white-space:nowrap;}
 .x-tree-node-el{line-height:18px;cursor:pointer;}
 .x-tree-node a,.x-dd-drag-ghost a{text-decoration:none;color:black;-khtml-user-select:none;-moz-user-select:none;-kthml-user-focus:normal;-moz-user-focus:normal;-moz-outline:0 none;outline:0 none;}
 .x-tree-node a span,.x-dd-drag-ghost a span{text-decoration:none;color:black;padding:1px 3px 1px 2px;}
@@ -519,7 +519,7 @@
 .x-date-picker{border:1px solid #1b376c;border-top:0 none;background:#fff;position:relative;}
 .x-date-picker a{-moz-outline:0 none;outline:0 none;}
 .x-date-inner,.x-date-inner td,.x-date-inner th{border-collapse:separate;}
-.x-date-middle,.x-date-left,.x-date-right{background:url(../js/ext/resources/images/default/shared/hd-sprite.gif) repeat-x 0 -83px;color:#FFF;font:bold 11px "sans serif",tahoma,verdana,helvetica;overflow:hidden;}
+.x-date-middle,.x-date-left,.x-date-right{background:url(../js/ext/resources/images/default/shared/hd-sprite.gif) repeat-x 0 -83px;color:#FFF;font:normal 100% arial,sans;overflow:hidden;}
 .x-date-middle .x-btn-left,.x-date-middle .x-btn-center,.x-date-middle .x-btn-right{background:transparent!important;vertical-align:middle;}
 .x-date-middle .x-btn .x-btn-text{color:#fff;}
 .x-date-middle .x-btn-with-menu .x-btn-center em{background:transparent url(../js/ext/resources/images/default/toolbar/btn-arrow-light.gif) no-repeat right 0;}
@@ -532,10 +532,10 @@
 .x-date-left a{background-image:url(../js/ext/resources/images/default/shared/left-btn.gif);margin-left:2px;text-decoration:none!important;}
 table.x-date-inner{width:100%;table-layout:fixed;}
 .x-date-inner th{width:25px;}
-.x-date-inner th{background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;text-align:right!important;border-bottom:1px solid #a3bad9;font:normal 10px arial,helvetica,tahoma,sans-serif;color:#233d6d;cursor:default;padding:0;border-collapse:separate;}
+.x-date-inner th{background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;text-align:right!important;border-bottom:1px solid #a3bad9;font:normal 10px arial,sans;color:#233d6d;cursor:default;padding:0;border-collapse:separate;}
 .x-date-inner th span{display:block;padding:2px;padding-right:7px;}
 .x-date-inner td{border:1px solid #fff;text-align:right;padding:0;}
-.x-date-inner a{padding:2px 5px;display:block;font:normal 11px arial,helvetica,tahoma,sans-serif;text-decoration:none;color:black;text-align:right;zoom:1;}
+.x-date-inner a{padding:2px 5px;display:block;font:normal 100% arial,sans;text-decoration:none;color:black;text-align:right;zoom:1;}
 .x-date-inner .x-date-active{cursor:pointer;color:black;}
 .x-date-inner .x-date-selected a{background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;border:1px solid #8db2e3;padding:1px 4px;}
 .x-date-inner .x-date-today a{border:1px solid darkred;padding:1px 4px;}
@@ -548,10 +548,10 @@
 .x-date-mmenu .x-menu-item{font-size:10px;padding:1px 24px 1px 4px;white-space:nowrap;color:#000;}
 .x-date-mmenu .x-menu-item .x-menu-item-icon{width:10px;height:10px;margin-right:5px;background-position:center -4px!important;}
 .x-date-mp{position:absolute;left:0;top:0;background:white;display:none;}
-.x-date-mp td{padding:2px;font:normal 11px arial,helvetica,tahoma,sans-serif;}
+.x-date-mp td{padding:2px;font:normal 100% arial,sans;}
 td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn{border:0 none;text-align:center;vertical-align:middle;width:25%;}
 .x-date-mp-ok{margin-right:3px;}
-.x-date-mp-btns button{text-decoration:none;text-align:center;text-decoration:none!important;background:#083772;color:white;border:1px solid;border-color:#36c #005 #005 #36c;padding:1px 3px 1px;font:normal 11px arial,helvetica,tahoma,sans-serif;cursor:pointer;}
+.x-date-mp-btns button{text-decoration:none;text-align:center;text-decoration:none!important;background:#083772;color:white;border:1px solid;border-color:#36c #005 #005 #36c;padding:1px 3px 1px;font:normal 100% arial,sans;cursor:pointer;}
 .x-date-mp-btns{background:#dfecfb url(../js/ext/resources/images/default/shared/glass-bg.gif) repeat-x left top;}
 .x-date-mp-btns td{border-top:1px solid #c5d2df;text-align:center;}
 td.x-date-mp-month a,td.x-date-mp-year a{display:block;padding:2px 4px;text-decoration:none;text-align:center;color:#15428b;}
@@ -573,12 +573,12 @@
 .x-tip .x-tip-bc{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -121px;height:3px;overflow:hidden;}
 .x-tip .x-tip-bl{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -59px;padding-left:6px;zoom:1;}
 .x-tip .x-tip-br{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat right -59px;padding-right:6px;zoom:1;}
-.x-tip .x-tip-mc{border:0 none;font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.x-tip .x-tip-mc{border:0 none;font:normal 100% arial,sans;}
 .x-tip .x-tip-ml{background:#fff url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat 0 -124px;padding-left:6px;zoom:1;}
 .x-tip .x-tip-mr{background:transparent url(../js/ext/resources/images/default/qtip/tip-sprite.gif) no-repeat right -124px;padding-right:6px;zoom:1;}
 .ext-ie .x-tip .x-tip-header,.ext-ie .x-tip .x-tip-tc{font-size:0;line-height:0;}
-.x-tip .x-tip-header-text{font:bold 11px tahoma,arial,helvetica,sans-serif;padding:0;margin:0 0 2px 0;color:#444;}
-.x-tip .x-tip-body{font:normal 11px tahoma,arial,helvetica,sans-serif;margin:0!important;line-height:14px;color:#444;padding:0;}
+.x-tip .x-tip-header-text{font:normal 100% arial,sans;padding:0;margin:0 0 2px 0;color:#444;}
+.x-tip .x-tip-body{font:normal 100% arial,sans;margin:0!important;line-height:14px;color:#444;padding:0;}
 .x-tip .x-tip-body .loading-indicator{margin:0;}
 .x-tip-draggable .x-tip-header,.x-tip-draggable .x-tip-header-text{cursor:move;}
 .x-form-invalid-tip .x-tip-tc{background:url(../js/ext/resources/images/default/form/error-tip-corners.gif) repeat-x 0 -12px;padding-top:6px;}
@@ -598,7 +598,7 @@
 .x-menu-list{background:transparent;border:0 none;}
 .x-menu li{line-height:100%;}
 .x-menu li.x-menu-sep-li{font-size:1px;line-height:1px;}
-.x-menu-list-item{font:normal 11px tahoma,arial,sans-serif;white-space:nowrap;-moz-user-select:none;-khtml-user-select:none;display:block;padding:1px;}
+.x-menu-list-item{font:normal 100% arial,sans;white-space:nowrap;-moz-user-select:none;-khtml-user-select:none;display:block;padding:1px;}
 .x-menu-item-arrow{background:transparent url(../js/ext/resources/images/default/menu/menu-parent.gif) no-repeat right;}
 .x-menu-sep{display:block;font-size:1px;line-height:1px;margin:2px 3px;background-color:#e0e0e0;border-bottom:1px solid #fff;overflow:hidden;}
 .x-menu-focus{position:absolute;left:0;top:-5px;width:0;height:0;line-height:1px;}
@@ -622,7 +622,7 @@
 .x-box-tc{height:8px;background:transparent url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 0;overflow:hidden;}
 .x-box-tr{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat right -8px;}
 .x-box-ml{background:transparent url(../js/ext/resources/images/default/box/l.gif) repeat-y 0;padding-left:4px;overflow:hidden;zoom:1;}
-.x-box-mc{background:#eee url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 -16px;padding:4px 10px;font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:12px;}
+.x-box-mc{background:#eee url(../js/ext/resources/images/default/box/tb.gif) repeat-x 0 -16px;padding:4px 10px;font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:108%;}
 .x-box-mc h3{font-size:14px;font-weight:bold;margin:0 0 4px 0;zoom:1;}
 .x-box-mr{background:transparent url(../js/ext/resources/images/default/box/r.gif) repeat-y right;padding-right:4px;overflow:hidden;}
 .x-box-bl{background:transparent url(../js/ext/resources/images/default/box/corners.gif) no-repeat 0 -16px;zoom:1;}
@@ -637,7 +637,7 @@
 .x-box-blue .x-box-ml{background-image:url(../js/ext/resources/images/default/box/l-blue.gif);}
 .x-box-blue .x-box-mr{background-image:url(../js/ext/resources/images/default/box/r-blue.gif);}
 
-#x-debug-browser .x-tree .x-tree-node a span{color:#222297;font-size:11px;padding-top:2px;font-family:"monotype","courier new",sans-serif;line-height:18px;}
+#x-debug-browser .x-tree .x-tree-node a span{color:#222297;font-size:100%;padding-top:2px;font-family:"monotype","courier new",sans-serif;line-height:18px;}
 #x-debug-browser .x-tree a i{color:#FF4545;font-style:normal;}
 #x-debug-browser .x-tree a em{color:#999;}
 #x-debug-browser .x-tree .x-tree-node .x-tree-selected a span{background:#c3daf9;}
@@ -648,23 +648,23 @@
 
 .x-combo-list{border:1px solid #98c0f4;background:#ddecfe;zoom:1;overflow:hidden;}
 .x-combo-list-inner{overflow:auto;background:white;position:relative;zoom:1;overflow-x:hidden;}
-.x-combo-list-hd{font:bold 11px tahoma,arial,helvetica,sans-serif;color:#15428b;background-image:url(../js/ext/resources/images/default/layout/panel-title-light-bg.gif);border-bottom:1px solid #98c0f4;padding:3px;}
+.x-combo-list-hd{font:normal 100% arial,sans;color:#15428b;background-image:url(../js/ext/resources/images/default/layout/panel-title-light-bg.gif);border-bottom:1px solid #98c0f4;padding:3px;}
 .x-resizable-pinned .x-combo-list-inner{border-bottom:1px solid #98c0f4;}
-.x-combo-list-item{font:normal 12px tahoma,arial,helvetica,sans-serif;padding:2px;border:1px solid #fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
+.x-combo-list-item{font:normal 108% arial,sans;padding:2px;border:1px solid #fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
 .x-combo-list .x-combo-selected{border:1px dotted #a3bae9!important;background:#DFE8F6;cursor:pointer;}
 .x-combo-noedit{cursor:pointer;}
 .x-combo-list .x-toolbar{border-top:1px solid #98c0f4;border-bottom:0 none;}
-.x-combo-list-small .x-combo-list-item{font:normal 11px tahoma,arial,helvetica,sans-serif;}
+.x-combo-list-small .x-combo-list-item{font:normal 100% arial,sans;}
 
 .x-panel{border-style:solid;border-color:#99bbe8;border-width:0;}
-.x-panel-header{overflow:hidden;zoom:1;color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 3px 4px 5px;border:1px solid #99bbe8;line-height:15px;background:transparent url(../js/ext/resources/images/default/panel/white-top-bottom.gif) repeat-x 0 -1px;}
+.x-panel-header{overflow:hidden;zoom:1;color:#15428b;font:normal 100% arial,sans;padding:5px 3px 4px 5px;border:1px solid #99bbe8;line-height:15px;background:transparent url(../js/ext/resources/images/default/panel/white-top-bottom.gif) repeat-x 0 -1px;}
 .x-panel-body{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;background:white;position:relative;}
 .x-panel-bbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
 .x-panel-tbar .x-toolbar{border:1px solid #99bbe8;border-top:0 none;overflow:hidden;padding:2px;}
 .x-panel-tbar-noheader .x-toolbar,.x-panel-mc .x-panel-tbar .x-toolbar{border-top:1px solid #99bbe8;border-bottom:0 none;}
 .x-panel-body-noheader,.x-panel-mc .x-panel-body{border-top:1px solid #99bbe8;}
 .x-panel-header{overflow:hidden;zoom:1;}
-.x-panel-tl .x-panel-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px 0;border:0 none;background:transparent;}
+.x-panel-tl .x-panel-header{color:#15428b;font:normal 100% arial,sans;padding:5px 0 4px 0;border:0 none;background:transparent;}
 .x-panel-tl .x-panel-icon,.x-window-tl .x-panel-icon{padding-left:20px!important;background-repeat:no-repeat;background-position:0 4px;zoom:1;}
 .x-panel-inline-icon{width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;vertical-align:middle;margin-right:4px;margin-top:-1px;margin-bottom:-1px;}
 .x-panel-tc{background:transparent url(../js/ext/resources/images/default/panel/top-bottom.gif) repeat-x 0 0;overflow:hidden;}
@@ -675,7 +675,7 @@
 .x-panel-bc .x-panel-footer{zoom:1;}
 .x-panel-bl{background:transparent url(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat 0 bottom;padding-left:6px;zoom:1;}
 .x-panel-br{background:transparent url(../js/ext/resources/images/default/panel/corners-sprite.gif) no-repeat right bottom;padding-right:6px;zoom:1;}
-.x-panel-mc{border:0 none;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;padding-top:6px;background:#dfe8f6;}
+.x-panel-mc{border:0 none;padding:0;margin:0;font:normal 100% arial,sans;padding-top:6px;background:#dfe8f6;}
 .x-panel-mc .x-panel-body{background:transparent;border:0 none;}
 .x-panel-ml{background:#fff url(../js/ext/resources/images/default/panel/left-right.gif) repeat-y 0 0;padding-left:6px;zoom:1;}
 .x-panel-mr{background:transparent url(../js/ext/resources/images/default/panel/left-right.gif) repeat-y right 0;padding-right:6px;zoom:1;}
@@ -758,7 +758,7 @@
 .x-window-proxy{background:#C7DFFC;border:1px solid #99bbe8;z-index:12000;overflow:hidden;position:absolute;left:0;top:0;display:none;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}
 .x-window-header{overflow:hidden;zoom:1;}
 .x-window-bwrap{z-index:1;position:relative;zoom:1;}
-.x-window-tl .x-window-header{color:#15428b;font:bold 11px tahoma,arial,verdana,sans-serif;padding:5px 0 4px 0;}
+.x-window-tl .x-window-header{color:#15428b;font:normal 100% arial,sans;padding:5px 0 4px 0;}
 .x-window-header-text{cursor:pointer;}
 .x-window-tc{background:transparent url(../js/ext/resources/images/default/window/top-bottom.png) repeat-x 0 0;overflow:hidden;zoom:1;}
 .x-window-tl{background:transparent url(../js/ext/resources/images/default/window/left-corners.png) no-repeat 0 0;padding-left:6px;zoom:1;z-index:1;position:relative;}
@@ -767,7 +767,7 @@
 .x-window-bc .x-window-footer{padding-bottom:6px;zoom:1;font-size:0;line-height:0;}
 .x-window-bl{background:transparent url(../js/ext/resources/images/default/window/left-corners.png) no-repeat 0 bottom;padding-left:6px;zoom:1;}
 .x-window-br{background:transparent url(../js/ext/resources/images/default/window/right-corners.png) no-repeat right bottom;padding-right:6px;zoom:1;}
-.x-window-mc{border:1px solid #99bbe8;padding:0;margin:0;font:normal 11px tahoma,arial,helvetica,sans-serif;background:#dfe8f6;}
+.x-window-mc{border:1px solid #99bbe8;padding:0;margin:0;font:normal 100% arial,sans;background:#dfe8f6;}
 .x-window-ml{background:transparent url(../js/ext/resources/images/default/window/left-right.png) repeat-y 0 0;padding-left:6px;zoom:1;}
 .x-window-mr{background:transparent url(../js/ext/resources/images/default/window/left-right.png) repeat-y right 0;padding-right:6px;zoom:1;}
 .x-panel-nofooter .x-window-bc{height:6px;}
@@ -879,15 +879,15 @@
 .x-progress-wrap{border:1px solid #6593cf;overflow:hidden;}
 .x-progress-inner{height:18px;background:#e0e8f3 url(../js/ext/resources/images/default/qtip/bg.gif) repeat-x;position:relative;}
 .x-progress-bar{height:18px;float:left;width:0;background:#9CBFEE url( ../js/ext/resources/images/default/progress/progress-bg.gif ) repeat-x left center;border-top:1px solid #D1E4FD;border-bottom:1px solid #7FA9E4;border-right:1px solid #7FA9E4;}
-.x-progress-text{font-size:11px;font-weight:bold;color:#fff;padding:1px 5px;overflow:hidden;position:absolute;left:0;text-align:center;}
+.x-progress-text{font-size:100%;font-weight:bold;color:#fff;padding:1px 5px;overflow:hidden;position:absolute;left:0;text-align:center;}
 .x-progress-text-back{color:#396095;line-height:16px;}
 .ext-ie .x-progress-text-back{line-height:15px;}
 
 .x-window-dlg .x-window-body{border:0 none!important;padding:5px 10px;overflow:hidden!important;}
 .x-window-dlg .x-window-mc{border:0 none!important;}
-.x-window-dlg .ext-mb-text,.x-window-dlg .x-window-header-text{font-size:12px;}
+.x-window-dlg .ext-mb-text,.x-window-dlg .x-window-header-text{font-size:108%;}
 .x-window-dlg .ext-mb-input{margin-top:4px;width:95%;}
-.x-window-dlg .ext-mb-textarea{margin-top:4px;font:normal 12px tahoma,arial,helvetica,sans-serif;}
+.x-window-dlg .ext-mb-textarea{margin-top:4px;font:normal 108% arial,sans;}
 .x-window-dlg .x-progress-wrap{margin-top:4px;}
 .ext-ie .x-window-dlg .x-progress-wrap{margin-top:6px;}
 .x-window-dlg .x-msg-box-wait{background:transparent url(../js/ext/resources/images/default/grid/loading.gif) no-repeat left;display:block;width:300px;padding-left:18px;line-height:18px;}
@@ -3171,27 +3171,27 @@
     text-decoration: underline;
 }
 
-.k-entity-container-default div {
+.k-entity-context-default div {
     background: #FFD09D none repeat scroll 0% 50%;
 }
 
-.k-entity-container-green div {
+.k-entity-context-green div {
     background: #CFA none repeat scroll 0% 50%;
 }
 
-.k-entity-container-blue div {
+.k-entity-context-blue div {
     background: #AACCFF none repeat scroll 0% 50%;
 }
 
-.k-entity-container-grey div {
+.k-entity-context-grey div {
     background: #B3B3B3 none repeat scroll 0% 50%;
 }
 
-.k-entity-container-purple div {
+.k-entity-context-purple div {
     background: #DDAFE9 none repeat scroll 0% 50%;
 }
 
-.k-entity-container-red div {
+.k-entity-context-red div {
     background: #FFAAAA none repeat scroll 0% 50%;
 }
 
@@ -3462,4 +3462,9 @@
   text-decoration: underline;
 }
 
+/* others */
+.k-linethrough {
+	text-decoration: line-through;
+}
 
+

Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css	2008-09-07 14:07:16 UTC (rev 844)
@@ -336,27 +336,27 @@
     text-decoration: underline;
 }
 
-.k-entity-container-default div {
+.k-entity-context-default div {
     background: #FFD09D none repeat scroll 0% 50%;
 }
 
-.k-entity-container-green div {
+.k-entity-context-green div {
     background: #CFA none repeat scroll 0% 50%;
 }
 
-.k-entity-container-blue div {
+.k-entity-context-blue div {
     background: #AACCFF none repeat scroll 0% 50%;
 }
 
-.k-entity-container-grey div {
+.k-entity-context-grey div {
     background: #B3B3B3 none repeat scroll 0% 50%;
 }
 
-.k-entity-container-purple div {
+.k-entity-context-purple div {
     background: #DDAFE9 none repeat scroll 0% 50%;
 }
 
-.k-entity-container-red div {
+.k-entity-context-red div {
     background: #FFAAAA none repeat scroll 0% 50%;
 }
 
@@ -626,3 +626,8 @@
 .k-toolselectoritem-notsel a:hover {
   text-decoration: underline;
 }
+
+/* others */
+.k-linethrough {
+	text-decoration: line-through;
+}

Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -22,7 +22,7 @@
 import org.ourproject.kune.workspace.client.component.WorkspaceDeckPanel;
 import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
 import org.ourproject.kune.workspace.client.socialnet.GroupMembersSummary;
-import org.ourproject.kune.workspace.client.ui.ctx.items.ContextItems;
+import org.ourproject.kune.workspace.client.ui.ctx.items.ContextNavigator;
 import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 import org.ourproject.kune.workspace.client.ui.newtmp.themes.WsThemePresenter;
 
@@ -81,7 +81,7 @@
 	});
 	register(SingletonScope.class, new Factory<RoomsAdmin>(RoomsAdmin.class) {
 	    public RoomsAdmin create() {
-		final RoomsAdminPresenter presenter = new RoomsAdminPresenter($(ContextItems.class),
+		final RoomsAdminPresenter presenter = new RoomsAdminPresenter($(ContextNavigator.class),
 			$(I18nUITranslationService.class), $$(StateManager.class), $(Session.class),
 			$$(ContentServiceAsync.class));
 		return presenter;

Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -123,9 +123,8 @@
     public void logout() {
 	if (!emiteDialog.isDialogNotStarted()) {
 	    emiteDialog.setOwnPresence(OwnStatus.offline);
-	    final UserChatOptions userChatOptions = getUserChatOptions("reset at example.com", "");
-	    emiteDialog.refreshUserInfo(userChatOptions);
-	    chatOptions.userOptions = userChatOptions;
+	    chatOptions.userOptions = getUserChatOptions("reset at example.com", "");
+	    emiteDialog.refreshUserInfo(chatOptions.userOptions);
 	    emiteDialog.setEnableStatusUI(false);
 	}
     }

Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ctx/rooms/RoomsAdminPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ctx/rooms/RoomsAdminPresenter.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ctx/rooms/RoomsAdminPresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -20,67 +20,64 @@
 
 package org.ourproject.kune.chat.client.ctx.rooms;
 
-import org.ourproject.kune.chat.client.ChatClientTool;
 import org.ourproject.kune.platf.client.View;
 import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
 import org.ourproject.kune.platf.client.dto.ContainerDTO;
-import org.ourproject.kune.platf.client.dto.StateDTO;
 import org.ourproject.kune.platf.client.dto.StateToken;
-import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
 import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
 import org.ourproject.kune.platf.client.services.I18nTranslationService;
 import org.ourproject.kune.platf.client.state.Session;
 import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.workspace.client.sitebar.Site;
-import org.ourproject.kune.workspace.client.ui.ctx.items.ContextItems;
-import org.ourproject.kune.workspace.client.ui.ctx.items.ContextItemsImages;
+import org.ourproject.kune.workspace.client.ui.ctx.items.ContextNavigator;
 
 import com.calclab.suco.client.provider.Provider;
-import com.calclab.suco.client.signal.Slot;
 
 public class RoomsAdminPresenter implements RoomsAdmin {
-    private final ContextItems contextItems;
+    private final ContextNavigator contextNavigator;
 
-    public RoomsAdminPresenter(final ContextItems contextItems, final I18nTranslationService i18n,
+    public RoomsAdminPresenter(final ContextNavigator contextNavigator, final I18nTranslationService i18n,
 	    final Provider<StateManager> stateManagerProvider, final Session session,
 	    final Provider<ContentServiceAsync> contentServiceProvider) {
-	this.contextItems = contextItems;
-	final ContextItemsImages images = ContextItemsImages.App.getInstance();
-	contextItems.setParentTreeVisible(false);
-	contextItems.registerType(ChatClientTool.TYPE_CHAT, images.page());
-	contextItems.registerType(ChatClientTool.TYPE_ROOM, images.chatGreen());
-	contextItems.canCreate(i18n.t("New chat room"), i18n.t("Add a chat room"), new Slot<String>() {
-	    public void onEvent(final String name) {
-		Site.showProgressProcessing();
-		final String groupShortName = session.getCurrentState().getGroup().getShortName();
-		final Long containerId = session.getCurrentState().getFolder().getId();
-		contentServiceProvider.get().addRoom(session.getUserHash(), groupShortName, containerId,
-			groupShortName + "-" + name, new AsyncCallbackSimple<StateDTO>() {
-			    public void onSuccess(final StateDTO state) {
-				final StateManager stateManager = stateManagerProvider.get();
-				stateManager.setRetrievedState(state);
-				// FIXME: Isn't using cache (same in Add folder)
-				stateManager.reloadContextAndTitles();
-				Site.hideProgress();
-			    }
-			});
-	    }
-	});
+	this.contextNavigator = contextNavigator;
+	// final ContextNavigatorImages images =
+	// ContextNavigatorImages.App.getInstance();
+	// contextNavigator.registerType(ChatClientTool.TYPE_CHAT,
+	// images.page());
+	// contextNavigator.registerType(ChatClientTool.TYPE_ROOM,
+	// images.chatGreen());
+	// contextNavigator.canCreate(i18n.t("New chat room"), i18n.t("Add a
+	// chat room"), new Slot<String>() {
+	// public void onEvent(final String name) {
+	// Site.showProgressProcessing();
+	// final String groupShortName =
+	// session.getCurrentState().getGroup().getShortName();
+	// final Long containerId =
+	// session.getCurrentState().getFolder().getId();
+	// contentServiceProvider.get().addRoom(session.getUserHash(),
+	// groupShortName, containerId,
+	// groupShortName + "-" + name, new AsyncCallbackSimple<StateDTO>() {
+	// public void onSuccess(final StateDTO state) {
+	// final StateManager stateManager = stateManagerProvider.get();
+	// stateManager.setRetrievedState(state);
+	// // FIXME: Isn't using cache (same in Add folder)
+	// stateManager.reloadContextAndTitles();
+	// Site.hideProgress();
+	// }
+	// });
+	// }
+	// });
     }
 
     public View getView() {
-	return contextItems.getView();
+	return contextNavigator.getView();
     }
 
-    // FIXME: cierta lógica de negocio en el cliente
-    // ¿debemos quitarla? es decir, enviar desde el servidor si se puede añadir
-    // hijos al contenedor
     public void showRoom(final StateToken token, final ContainerDTO container, final AccessRightsDTO rights) {
-	contextItems.showContainer(token, container, rights);
-	final String type = container.getTypeId();
-	if (type.equals(ChatClientTool.TYPE_ROOM)) {
-	    contextItems.setControlsVisible(false);
-	}
+	// contextNavigator.showContainer(token, container, rights);
+	// final String type = container.getTypeId();
+	// if (type.equals(ChatClientTool.TYPE_ROOM)) {
+	// contextNavigator.setControlsVisible(false);
+	// }
     }
 
 }

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,6 +1,7 @@
 package org.ourproject.kune.docs.client;
 
 import org.ourproject.kune.docs.client.cnt.DocumentContent;
+import org.ourproject.kune.docs.client.cnt.DocumentContentPanel;
 import org.ourproject.kune.docs.client.cnt.DocumentContentPresenter;
 import org.ourproject.kune.docs.client.cnt.folder.FolderEditor;
 import org.ourproject.kune.docs.client.cnt.folder.FolderEditorPresenter;
@@ -18,24 +19,22 @@
 import org.ourproject.kune.docs.client.cnt.reader.ui.DocumentReaderControlPanel;
 import org.ourproject.kune.docs.client.cnt.reader.ui.DocumentReaderPanel;
 import org.ourproject.kune.docs.client.ctx.DocumentContext;
+import org.ourproject.kune.docs.client.ctx.DocumentContextPanel;
 import org.ourproject.kune.docs.client.ctx.DocumentContextPresenter;
 import org.ourproject.kune.docs.client.ctx.admin.AdminContext;
 import org.ourproject.kune.docs.client.ctx.admin.AdminContextPresenter;
 import org.ourproject.kune.docs.client.ctx.admin.AdminContextView;
 import org.ourproject.kune.docs.client.ctx.admin.ui.AdminContextPanel;
-import org.ourproject.kune.docs.client.ctx.folder.FolderContext;
-import org.ourproject.kune.docs.client.ctx.folder.FolderContextPresenter;
 import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
 import org.ourproject.kune.platf.client.services.KuneErrorHandler;
 import org.ourproject.kune.platf.client.state.Session;
 import org.ourproject.kune.platf.client.state.StateManager;
 import org.ourproject.kune.platf.client.tool.ToolSelector;
 import org.ourproject.kune.platf.client.ui.rate.RateIt;
-import org.ourproject.kune.workspace.client.component.WorkspaceDeckPanel;
 import org.ourproject.kune.workspace.client.editor.TextEditor;
 import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
 import org.ourproject.kune.workspace.client.tags.TagsSummary;
-import org.ourproject.kune.workspace.client.ui.ctx.items.ContextItems;
+import org.ourproject.kune.workspace.client.ui.ctx.items.ContextNavigator;
 import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 import org.ourproject.kune.workspace.client.ui.newtmp.themes.WsThemePresenter;
 import org.ourproject.kune.workspace.client.ui.newtmp.title.EntitySubTitlePresenter;
@@ -58,7 +57,7 @@
 	register(SingletonScope.class, new Factory<DocumentClientTool>(DocumentClientTool.class) {
 	    public DocumentClientTool create() {
 		return new DocumentClientTool(i18n, $(ToolSelector.class), $(WsThemePresenter.class),
-			$(WorkspaceSkeleton.class), $$(DocumentContent.class), $$(DocumentContext.class));
+			$(WorkspaceSkeleton.class), $$(DocumentContext.class));
 	    }
 	});
 
@@ -75,20 +74,22 @@
 
 	register(SingletonScope.class, new Factory<DocumentContent>(DocumentContent.class) {
 	    public DocumentContent create() {
-		final WorkspaceDeckPanel panel = new WorkspaceDeckPanel();
 		final DocumentContentPresenter presenter = new DocumentContentPresenter($(StateManager.class),
-			$(I18nUITranslationService.class), $(KuneErrorHandler.class), panel, $(Session.class),
+			$(I18nUITranslationService.class), $(KuneErrorHandler.class), $(Session.class),
 			$(RateIt.class), $$(DocumentReader.class), $$(DocumentReaderControl.class),
 			$$(TextEditor.class), $$(FolderViewer.class), $$(FolderEditor.class),
 			$$(ContentServiceAsync.class));
+		final DocumentContentPanel panel = new DocumentContentPanel($(WorkspaceSkeleton.class));
+		presenter.init(panel);
 		return presenter;
 	    }
 	});
 	register(SingletonScope.class, new Factory<DocumentContext>(DocumentContext.class) {
 	    public DocumentContext create() {
-		final WorkspaceDeckPanel view = new WorkspaceDeckPanel();
-		final DocumentContextPresenter presenter = new DocumentContextPresenter(view, $$(FolderContext.class),
-			$$(AdminContext.class));
+		final DocumentContextPresenter presenter = new DocumentContextPresenter($(StateManager.class),
+			$$(ContextNavigator.class), $$(AdminContext.class));
+		final DocumentContextPanel panel = new DocumentContextPanel($(WorkspaceSkeleton.class));
+		presenter.init(panel);
 		return presenter;
 	    }
 	});
@@ -103,21 +104,14 @@
 
 	register(SingletonScope.class, new Factory<DocumentReaderControl>(DocumentReaderControl.class) {
 	    public DocumentReaderControl create() {
-		final DocumentReaderControlPresenter presenter = new DocumentReaderControlPresenter();
+		final DocumentReaderControlPresenter presenter = new DocumentReaderControlPresenter(
+			$(DocumentContent.class));
 		final DocumentReaderControlView view = new DocumentReaderControlPanel(presenter, i18n, ws);
 		presenter.init(view);
 		return presenter;
 	    }
 	});
 
-	register(SingletonScope.class, new Factory<FolderContext>(FolderContext.class) {
-	    public FolderContext create() {
-		final FolderContextPresenter presenter = new FolderContextPresenter($(ContextItems.class),
-			$(StateManager.class), $(Session.class), i18n, $$(ContentServiceAsync.class));
-		return presenter;
-	    }
-	});
-
 	register(SingletonScope.class, new Factory<FolderEditor>(FolderEditor.class) {
 	    public FolderEditor create() {
 		final FolderEditorPanel view = new FolderEditorPanel();
@@ -128,12 +122,14 @@
 
 	register(SingletonScope.class, new Factory<FolderViewer>(FolderViewer.class) {
 	    public FolderViewer create() {
-		final FolderViewerView view = new FolderViewerPanel(ws);
+		final FolderViewerView view = new FolderViewerPanel();
 		final FolderViewerPresenter presenter = new FolderViewerPresenter(view);
 		return presenter;
 	    }
 	});
 
 	$(DocumentClientTool.class);
+	$(DocumentContent.class);
+	$(DocumentContext.class);
     }
 }

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -20,9 +20,7 @@
 
 package org.ourproject.kune.docs.client;
 
-import org.ourproject.kune.docs.client.cnt.DocumentContent;
 import org.ourproject.kune.docs.client.ctx.DocumentContext;
-import org.ourproject.kune.platf.client.dto.StateDTO;
 import org.ourproject.kune.platf.client.tool.AbstractClientTool;
 import org.ourproject.kune.platf.client.tool.ToolSelector;
 import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
@@ -37,14 +35,11 @@
     public static final String TYPE_DOCUMENT = "docs.doc";
     public static final String NAME = "docs";
     private final Provider<DocumentContext> documentContextProvider;
-    private final Provider<DocumentContent> documentContentProvider;
 
     public DocumentClientTool(final I18nUITranslationService i18n, final ToolSelector toolSelector,
 	    final WsThemePresenter wsThemePresenter, final WorkspaceSkeleton ws,
-	    final Provider<DocumentContent> documentContentProvider,
 	    final Provider<DocumentContext> documentContextProvider) {
 	super(NAME, i18n.t("documents"), toolSelector, wsThemePresenter, ws);
-	this.documentContentProvider = documentContentProvider;
 	this.documentContextProvider = documentContextProvider;
     }
 
@@ -60,15 +55,4 @@
 	documentContextProvider.get().showAdmin();
     }
 
-    public void setContent(final StateDTO state) {
-	documentContentProvider.get().setContent(state);
-
-	// TODO: check trigger interface (setState)
-	// trigger.setState(state.getStateToken().toString());
-    }
-
-    public void setContext(final StateDTO state) {
-	documentContextProvider.get().setContext(state);
-    }
-
 }

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContent.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContent.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContent.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -20,20 +20,20 @@
 
 package org.ourproject.kune.docs.client.cnt;
 
-import org.ourproject.kune.platf.client.dto.StateDTO;
-
 import com.calclab.suco.client.signal.Slot0;
 
 public interface DocumentContent {
 
-    void onCancel(Slot0 slot);
+    void onEditCancelled(Slot0 slot);
 
-    void onEdit(Slot0 slot);
+    void onDeleteClicked();
 
+    void onEditClicked();
+
+    void onEditing(Slot0 slot);
+
     void onSaved();
 
     void onSaveFailed();
 
-    void setContent(StateDTO content);
-
 }

Added: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPanel.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPanel.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,19 @@
+package org.ourproject.kune.docs.client.cnt;
+
+import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
+
+import com.google.gwt.user.client.ui.Widget;
+
+public class DocumentContentPanel implements DocumentContentView {
+
+    private final WorkspaceSkeleton ws;
+
+    public DocumentContentPanel(final WorkspaceSkeleton ws) {
+	this.ws = ws;
+    }
+
+    public void setContent(final View view) {
+	ws.getEntityWorkspace().setContent((Widget) view);
+    }
+}

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -20,11 +20,11 @@
 
 package org.ourproject.kune.docs.client.cnt;
 
+import org.ourproject.kune.docs.client.DocumentClientTool;
 import org.ourproject.kune.docs.client.cnt.folder.FolderEditor;
 import org.ourproject.kune.docs.client.cnt.folder.viewer.FolderViewer;
 import org.ourproject.kune.docs.client.cnt.reader.DocumentReader;
 import org.ourproject.kune.docs.client.cnt.reader.DocumentReaderControl;
-import org.ourproject.kune.platf.client.View;
 import org.ourproject.kune.platf.client.dto.StateDTO;
 import org.ourproject.kune.platf.client.errors.SessionExpiredException;
 import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
@@ -33,7 +33,6 @@
 import org.ourproject.kune.platf.client.state.Session;
 import org.ourproject.kune.platf.client.state.StateManager;
 import org.ourproject.kune.platf.client.ui.rate.RateIt;
-import org.ourproject.kune.workspace.client.component.WorkspaceDeckView;
 import org.ourproject.kune.workspace.client.editor.TextEditor;
 import org.ourproject.kune.workspace.client.editor.TextEditorListener;
 import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
@@ -41,11 +40,13 @@
 
 import com.calclab.suco.client.provider.Provider;
 import com.calclab.suco.client.signal.Signal0;
+import com.calclab.suco.client.signal.Slot;
 import com.calclab.suco.client.signal.Slot0;
+import com.calclab.suco.client.signal.Slot2;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 
 public class DocumentContentPresenter implements DocumentContent, TextEditorListener {
-    private final WorkspaceDeckView view;
+    private DocumentContentView view;
     private final StateManager stateManager;
     private StateDTO content;
     private final Session session;
@@ -55,15 +56,15 @@
     private final Provider<FolderEditor> folderEditorProvider;
     private final Provider<TextEditor> textEditorProvider;
     private final Provider<FolderViewer> folderViewerProvider;
-    private final Signal0 onEdit;
-    private final Signal0 onCancel;
+    private final Signal0 onEditing;
+    private final Signal0 onEditCancelled;
     private final Provider<ContentServiceAsync> contentServiceProvider;
     private final I18nUITranslationService i18n;
     private final KuneErrorHandler errorHandler;
 
     public DocumentContentPresenter(final StateManager stateManager, final I18nUITranslationService i18n,
-	    final KuneErrorHandler errorHandler, final WorkspaceDeckView view, final Session session,
-	    final RateIt rateIt, final Provider<DocumentReader> docReaderProvider,
+	    final KuneErrorHandler errorHandler, final Session session, final RateIt rateIt,
+	    final Provider<DocumentReader> docReaderProvider,
 	    final Provider<DocumentReaderControl> docReaderControlProvider,
 	    final Provider<TextEditor> textEditorProvider, final Provider<FolderViewer> folderViewerProvider,
 	    final Provider<FolderEditor> folderEditorProvider,
@@ -71,7 +72,6 @@
 	this.stateManager = stateManager;
 	this.i18n = i18n;
 	this.errorHandler = errorHandler;
-	this.view = view;
 	this.session = session;
 	this.rateIt = rateIt;
 	this.docReaderProvider = docReaderProvider;
@@ -80,26 +80,30 @@
 	this.folderViewerProvider = folderViewerProvider;
 	this.folderEditorProvider = folderEditorProvider;
 	this.contentServiceProvider = contentServiceProvider;
-	this.onEdit = new Signal0("onEdit");
-	this.onCancel = new Signal0("onCancel");
+	this.onEditing = new Signal0("onEditing");
+	this.onEditCancelled = new Signal0("onEditCancelled");
+	stateManager.onStateChanged(new Slot<StateDTO>() {
+	    public void onEvent(final StateDTO state) {
+		if (state.getToolName().equals(DocumentClientTool.NAME)) {
+		    content = state;
+		    showContent();
+		}
+	    }
+	});
+	stateManager.onToolChanged(new Slot2<String, String>() {
+	    public void onEvent(final String oldTool, final String newTool) {
+		if (oldTool != null && oldTool.equals(DocumentClientTool.NAME)) {
+		    // Detach
+		}
+	    }
+	});
     }
 
-    public View getView() {
-	return view;
+    public void init(final DocumentContentView view) {
+	this.view = view;
     }
 
-    public void onCancel() {
-	showContent();
-	onCancel.fire();
-	// Re-enable rateIt widget
-	rateIt.setVisible(true);
-    }
-
-    public void onCancel(final Slot0 slot) {
-	onCancel.add(slot);
-    }
-
-    public void onDelete() {
+    public void onDeleteClicked() {
 	Site.showProgressProcessing();
 	contentServiceProvider.get().delContent(session.getUserHash(),
 		session.getCurrentState().getGroup().getShortName(), content.getDocumentId(),
@@ -111,7 +115,19 @@
 		});
     }
 
-    public void onEdit() {
+    public void onEditCancelled() {
+	showContent();
+	onEditCancelled.fire();
+	// Re-enable rateIt widget
+	rateIt.setVisible(true);
+	textEditorProvider.get().setToolbarVisible(false);
+    }
+
+    public void onEditCancelled(final Slot0 slot) {
+	onEditCancelled.add(slot);
+    }
+
+    public void onEditClicked() {
 	session.check(new AsyncCallbackSimple<Object>() {
 	    public void onSuccess(final Object result) {
 		if (content.hasDocument()) {
@@ -119,19 +135,20 @@
 		    rateIt.setVisible(false);
 		    final TextEditor editor = textEditorProvider.get();
 		    editor.setContent(content.getContent());
-		    view.show(editor.getView());
+		    editor.setToolbarVisible(true);
+		    view.setContent(editor.getView());
 		} else {
 		    final FolderEditor editor = folderEditorProvider.get();
 		    editor.setFolder(content.getFolder());
-		    view.show(editor.getView());
+		    view.setContent(editor.getView());
 		}
-		onEdit.fire();
+		onEditing.fire();
 	    }
 	});
     }
 
-    public void onEdit(final Slot0 slot) {
-	onEdit.add(slot);
+    public void onEditing(final Slot0 slot) {
+	onEditing.add(slot);
     }
 
     public void onSave(final String text) {
@@ -170,12 +187,8 @@
     public void onTranslate() {
     }
 
-    public void setContent(final StateDTO content) {
-	this.content = content;
-	showContent();
-    }
-
     private void showContent() {
+	textEditorProvider.get().setToolbarVisible(false);
 	if (content.hasDocument()) {
 	    docReaderProvider.get().showDocument(content.getContent());
 	    textEditorProvider.get().reset();
@@ -185,7 +198,7 @@
 	} else {
 	    final FolderViewer viewer = folderViewerProvider.get();
 	    viewer.setFolder(content.getFolder());
-	    view.show(viewer.getView());
+	    view.setContent(viewer.getView());
 	}
     }
 

Added: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentView.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentView.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,9 @@
+package org.ourproject.kune.docs.client.cnt;
+
+import org.ourproject.kune.platf.client.View;
+
+public interface DocumentContentView {
+
+    void setContent(View view);
+
+}

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/folder/viewer/ui/FolderViewerPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/folder/viewer/ui/FolderViewerPanel.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/folder/viewer/ui/FolderViewerPanel.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -22,13 +22,12 @@
 
 import org.ourproject.kune.docs.client.cnt.folder.viewer.FolderViewerView;
 import org.ourproject.kune.workspace.client.sitebar.Site;
-import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 
 import com.google.gwt.user.client.ui.Label;
 
-public class FolderViewerPanel implements FolderViewerView {
+public class FolderViewerPanel extends Label implements FolderViewerView {
 
-    public FolderViewerPanel(final WorkspaceSkeleton ws) {
-	ws.getEntityWorkspace().setContent(new Label("Folder properties, translations ..." + Site.IN_DEVELOPMENT));
+    public FolderViewerPanel() {
+	super("Folder properties, translations ..." + Site.IN_DEVELOPMENT);
     }
 }

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControl.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControl.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControl.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -20,13 +20,10 @@
 
 package org.ourproject.kune.docs.client.cnt.reader;
 
-import org.ourproject.kune.platf.client.View;
 import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
 
 public interface DocumentReaderControl {
 
-    View getView();
-
     void setRights(AccessRightsDTO accessRights);
 
     void show();

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControlPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControlPresenter.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControlPresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -20,27 +20,42 @@
 
 package org.ourproject.kune.docs.client.cnt.reader;
 
-import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.docs.client.cnt.DocumentContent;
 import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
 
+import com.calclab.suco.client.signal.Slot0;
+
 public class DocumentReaderControlPresenter implements DocumentReaderControl {
     private DocumentReaderControlView view;
+    private final DocumentContent docContent;
 
-    public View getView() {
-	return view;
+    public DocumentReaderControlPresenter(final DocumentContent docContent) {
+	this.docContent = docContent;
+	docContent.onEditing(new Slot0() {
+	    public void onEvent() {
+		view.hide();
+	    }
+	});
+	docContent.onEditCancelled(new Slot0() {
+	    public void onEvent() {
+		view.show();
+	    }
+	});
     }
 
     public void init(final DocumentReaderControlView view) {
 	this.view = view;
     }
 
-    public void onDelete() {
+    public void onDeleteClicked() {
+	// docContent.onDeleteClicked();
     }
 
-    public void onEdit() {
+    public void onEditClicked() {
+	// docContent.onEditClicked();
     }
 
-    public void onTranslate() {
+    public void onTranslateClicked() {
     }
 
     public void setRights(final AccessRightsDTO accessRights) {

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControlView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControlView.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/DocumentReaderControlView.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -24,12 +24,14 @@
 
 public interface DocumentReaderControlView extends View {
 
-    public void setDeleteEnabled(boolean isEnabled);
+    void hide();
 
-    public void setEditEnabled(boolean isEnabled);
+    void setDeleteEnabled(boolean isEnabled);
 
-    public void setTranslateEnabled(boolean isEnabled);
+    void setEditEnabled(boolean isEnabled);
 
-    public void show();
+    void setTranslateEnabled(boolean isEnabled);
 
+    void show();
+
 }

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/ui/DocumentReaderControlPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/ui/DocumentReaderControlPanel.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/reader/ui/DocumentReaderControlPanel.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -22,53 +22,60 @@
 
 import org.ourproject.kune.docs.client.cnt.reader.DocumentReaderControlPresenter;
 import org.ourproject.kune.docs.client.cnt.reader.DocumentReaderControlView;
-import org.ourproject.kune.platf.client.ui.CustomPushButton;
 import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.Toolbar;
 import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
 
-public class DocumentReaderControlPanel extends HorizontalPanel implements DocumentReaderControlView {
-    private final CustomPushButton editBtn;
-    private final CustomPushButton deleteBtn;
-    private final CustomPushButton translateBtn;
+public class DocumentReaderControlPanel implements DocumentReaderControlView {
+    private final ToolbarButton editBtn;
+    private final ToolbarButton deleteBtn;
+    private final ToolbarButton translateBtn;
+    private final Widget space1;
+    private final Widget space2;
 
     public DocumentReaderControlPanel(final DocumentReaderControlPresenter presenter,
 	    final I18nUITranslationService i18n, final WorkspaceSkeleton ws) {
-	editBtn = new CustomPushButton(i18n.tWithNT("Edit", "used in button"), new ClickListener() {
-	    public void onClick(final Widget sender) {
-		presenter.onEdit();
-		editBtn.removeStyleDependentName("up-hovering");
+	editBtn = new ToolbarButton(i18n.tWithNT("Edit", "used in button"), new ButtonListenerAdapter() {
+	    public void onClick(final Button button, final EventObject e) {
+		presenter.onEditClicked();
 	    }
 	});
 
-	deleteBtn = new CustomPushButton(i18n.tWithNT("Delete", "used in button"), new ClickListener() {
-	    public void onClick(final Widget sender) {
-		presenter.onDelete();
-		deleteBtn.removeStyleDependentName("up-hovering");
+	deleteBtn = new ToolbarButton(i18n.tWithNT("Delete", "used in button"), new ButtonListenerAdapter() {
+	    public void onClick(final Button button, final EventObject e) {
+		presenter.onDeleteClicked();
 	    }
 	});
 
-	translateBtn = new CustomPushButton(i18n.tWithNT("Translate", "used in button"), new ClickListener() {
-	    public void onClick(final Widget sender) {
-		presenter.onTranslate();
-		translateBtn.removeStyleDependentName("up-hovering");
+	translateBtn = new ToolbarButton(i18n.tWithNT("Translate", "used in button"), new ButtonListenerAdapter() {
+	    public void onClick(final Button button, final EventObject e) {
+		presenter.onTranslateClicked();
 		ws.showAlertMessage(i18n.t("Alert"), i18n.t("Sorry, this functionality is currently in development"));
 	    }
 	});
 
-	add(editBtn);
-	add(deleteBtn);
-	add(translateBtn);
-	deleteBtn.addStyleName("kune-Button-Small-lSpace");
-	translateBtn.addStyleName("kune-Button-Small-lSpace");
+	final Toolbar contentTopBar = ws.getEntityWorkspace().getContentTopBar();
+	contentTopBar.add(editBtn);
+	space1 = contentTopBar.addSpacer();
+	contentTopBar.add(deleteBtn);
+	space2 = contentTopBar.addSpacer();
+	contentTopBar.add(translateBtn);
 	setEditEnabled(false);
 	setDeleteEnabled(false);
 	setTranslateEnabled(false);
+	hide();
     }
 
+    public void hide() {
+	this.setVisible(false);
+    }
+
     public void setDeleteEnabled(final boolean isEnabled) {
 	deleteBtn.setVisible(isEnabled);
     }
@@ -82,7 +89,14 @@
     }
 
     public void show() {
+	this.setVisible(true);
+    }
 
+    private void setVisible(final boolean visible) {
+	editBtn.setVisible(visible);
+	deleteBtn.setVisible(visible);
+	translateBtn.setVisible(visible);
+	space1.setVisible(visible);
+	space2.setVisible(visible);
     }
-
 }

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContext.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContext.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContext.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -20,12 +20,9 @@
 
 package org.ourproject.kune.docs.client.ctx;
 
-import org.ourproject.kune.platf.client.dto.StateDTO;
 
 public interface DocumentContext {
 
-    void setContext(StateDTO state);
-
     void showAdmin();
 
     void showFolders();

Added: trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPanel.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPanel.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,19 @@
+package org.ourproject.kune.docs.client.ctx;
+
+import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
+
+public class DocumentContextPanel implements DocumentContextView {
+
+    private final WorkspaceSkeleton ws;
+
+    public DocumentContextPanel(final WorkspaceSkeleton ws) {
+	this.ws = ws;
+    }
+
+    @Deprecated
+    public void setContainer(final View view) {
+	// ws.getEntityWorkspace().setContext((Widget) view);
+    }
+
+}

Deleted: trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPresenter.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,64 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.docs.client.ctx;
-
-import org.ourproject.kune.docs.client.ctx.admin.AdminContext;
-import org.ourproject.kune.docs.client.ctx.folder.FolderContext;
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.dto.StateDTO;
-import org.ourproject.kune.platf.client.dto.StateToken;
-import org.ourproject.kune.workspace.client.component.WorkspaceDeckView;
-
-import com.calclab.suco.client.provider.Provider;
-
-public class DocumentContextPresenter implements DocumentContext {
-    private final WorkspaceDeckView view;
-    private final Provider<FolderContext> folderContextProvider;
-    private final Provider<AdminContext> adminContextProvider;
-
-    public DocumentContextPresenter(final WorkspaceDeckView view, final Provider<FolderContext> folderContexProvider,
-	    final Provider<AdminContext> adminContextProvider) {
-	this.view = view;
-	this.folderContextProvider = folderContexProvider;
-	this.adminContextProvider = adminContextProvider;
-    }
-
-    public View getView() {
-	return view;
-    }
-
-    public void setContext(final StateDTO content) {
-	final StateToken state = content.getStateToken();
-	folderContextProvider.get().setContainer(state, content.getFolder(), content.getFolderRights());
-	adminContextProvider.get().setState(content);
-	view.show(folderContextProvider.get().getView());
-    }
-
-    public void showAdmin() {
-	final AdminContext adminContext = adminContextProvider.get();
-	view.show(adminContext.getView());
-    }
-
-    public void showFolders() {
-	final FolderContext folderContext = folderContextProvider.get();
-	view.show(folderContext.getView());
-    }
-}

Added: trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPresenter.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextPresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,68 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package org.ourproject.kune.docs.client.ctx;
+
+import org.ourproject.kune.docs.client.DocumentClientTool;
+import org.ourproject.kune.docs.client.ctx.admin.AdminContext;
+import org.ourproject.kune.platf.client.dto.StateDTO;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.workspace.client.ui.ctx.items.ContextNavigator;
+
+import com.calclab.suco.client.provider.Provider;
+import com.calclab.suco.client.signal.Slot;
+
+public class DocumentContextPresenter implements DocumentContext {
+    private DocumentContextView view;
+    private final Provider<ContextNavigator> contextNavigatorProvider;
+    private final Provider<AdminContext> adminContextProvider;
+
+    public DocumentContextPresenter(final StateManager stateManager,
+	    final Provider<ContextNavigator> contextNavigatorProvider, final Provider<AdminContext> adminContextProvider) {
+	this.contextNavigatorProvider = contextNavigatorProvider;
+	this.adminContextProvider = adminContextProvider;
+	stateManager.onStateChanged(new Slot<StateDTO>() {
+	    public void onEvent(final StateDTO state) {
+		if (DocumentClientTool.NAME.equals(state.getToolName())) {
+		    setState(state);
+		}
+	    }
+	});
+    }
+
+    public void init(final DocumentContextView view) {
+	this.view = view;
+    }
+
+    public void showAdmin() {
+	final AdminContext adminContext = adminContextProvider.get();
+	view.setContainer(adminContext.getView());
+    }
+
+    public void showFolders() {
+	view.setContainer(contextNavigatorProvider.get().getView());
+    }
+
+    private void setState(final StateDTO state) {
+	contextNavigatorProvider.get().setState(state);
+	adminContextProvider.get().setState(state);
+	showFolders();
+    }
+}

Added: trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextView.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/ctx/DocumentContextView.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,10 @@
+package org.ourproject.kune.docs.client.ctx;
+
+import org.ourproject.kune.platf.client.View;
+
+public interface DocumentContextView {
+
+    @Deprecated
+    void setContainer(View view);
+
+}

Deleted: trunk/src/main/java/org/ourproject/kune/docs/client/ctx/folder/FolderContext.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/ctx/folder/FolderContext.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/ctx/folder/FolderContext.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,32 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.docs.client.ctx.folder;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
-import org.ourproject.kune.platf.client.dto.ContainerDTO;
-import org.ourproject.kune.platf.client.dto.StateToken;
-
-public interface FolderContext {
-    View getView();
-
-    void setContainer(StateToken currentState, ContainerDTO folder, AccessRightsDTO accessRightsDTO);
-}

Deleted: trunk/src/main/java/org/ourproject/kune/docs/client/ctx/folder/FolderContextPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/ctx/folder/FolderContextPresenter.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/ctx/folder/FolderContextPresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,92 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.docs.client.ctx.folder;
-
-import org.ourproject.kune.docs.client.DocumentClientTool;
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
-import org.ourproject.kune.platf.client.dto.ContainerDTO;
-import org.ourproject.kune.platf.client.dto.StateDTO;
-import org.ourproject.kune.platf.client.dto.StateToken;
-import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
-import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.workspace.client.sitebar.Site;
-import org.ourproject.kune.workspace.client.ui.ctx.items.ContextItems;
-import org.ourproject.kune.workspace.client.ui.ctx.items.ContextItemsImages;
-
-import com.calclab.suco.client.provider.Provider;
-import com.calclab.suco.client.signal.Slot;
-
-public class FolderContextPresenter implements FolderContext {
-    private final ContextItems contextItems;
-
-    public FolderContextPresenter(final ContextItems contextItems, final StateManager stateManager,
-	    final Session session, final I18nTranslationService i18n,
-	    final Provider<ContentServiceAsync> contentServiceProvider) {
-	this.contextItems = contextItems;
-	final ContextItemsImages contextImages = ContextItemsImages.App.getInstance();
-	contextItems.registerType(DocumentClientTool.TYPE_DOCUMENT, contextImages.pageWhite());
-	contextItems.registerType(DocumentClientTool.TYPE_FOLDER, contextImages.folder());
-	contextItems.canCreate(i18n.t("New document"), i18n.t("Add a document"), new Slot<String>() {
-	    public void onEvent(final String name) {
-		Site.showProgressProcessing();
-		contentServiceProvider.get().addContent(session.getUserHash(),
-			session.getCurrentState().getGroup().getShortName(),
-			session.getCurrentState().getFolder().getId(), name, new AsyncCallbackSimple<StateDTO>() {
-			    public void onSuccess(final StateDTO state) {
-				Site.info(i18n.t("Created, now you can edit the document"));
-				stateManager.setRetrievedState(state);
-				Site.hideProgress();
-			    }
-			});
-	    }
-	});
-	contextItems.canCreate(i18n.t("New folder"), i18n.t("Add a folder"), new Slot<String>() {
-	    public void onEvent(final String name) {
-		Site.showProgressProcessing();
-		contentServiceProvider.get().addFolder(session.getUserHash(),
-			session.getCurrentState().getGroup().getShortName(),
-			session.getCurrentState().getFolder().getId(), name, new AsyncCallbackSimple<StateDTO>() {
-			    public void onSuccess(final StateDTO state) {
-				Site.info(i18n.t("Folder created"));
-				stateManager.setRetrievedState(state);
-				// FIXME: Isn't using cache
-				stateManager.reloadContextAndTitles();
-				Site.hideProgress();
-			    }
-			});
-	    }
-	});
-	contextItems.setParentTreeVisible(true);
-    }
-
-    public View getView() {
-	return contextItems.getView();
-    }
-
-    public void setContainer(final StateToken state, final ContainerDTO container, final AccessRightsDTO rights) {
-	contextItems.showContainer(state, container, rights);
-    }
-
-}

Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionManager.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionManager.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,31 @@
+package org.ourproject.kune.platf.client.actions;
+
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
+
+import com.calclab.suco.client.signal.Slot0;
+
+public class ActionManager {
+
+    private final WorkspaceSkeleton ws;
+
+    public ActionManager(final WorkspaceSkeleton ws) {
+	this.ws = ws;
+    }
+
+    public void doAction(final ClientActionDescriptor<?> action, final Object parameter) {
+	if (action.isMustBeConfirmed()) {
+	    ws.askConfirmation(action.getConfirmationTitle(), action.getConfirmationText(), new Slot0() {
+		public void onEvent() {
+		    action.fireOnPerformCall(parameter);
+		}
+	    }, new Slot0() {
+		public void onEvent() {
+		    action.fireOnNotConfirmed(parameter);
+		}
+	    });
+	} else {
+	    action.fireOnPerformCall(parameter);
+	}
+    }
+
+}

Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionPosition.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionPosition.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionPosition.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,5 @@
+package org.ourproject.kune.platf.client.actions;
+
+public enum ActionPosition {
+    topbar, bottombar, itemMenu, topBarAndItemMenu, bootombarAndItemMenu
+}

Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ClientActionCollection.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ClientActionCollection.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ClientActionCollection.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,9 @@
+package org.ourproject.kune.platf.client.actions;
+
+import java.util.ArrayList;
+
+public class ClientActionCollection<T> extends ArrayList<ClientActionDescriptor<T>> {
+
+    private static final long serialVersionUID = 1L;
+
+}

Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ClientActionDescriptor.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ClientActionDescriptor.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ClientActionDescriptor.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,158 @@
+package org.ourproject.kune.platf.client.actions;
+
+import org.ourproject.kune.platf.client.dto.AccessRolDTO;
+import org.ourproject.kune.platf.client.services.ImageDescriptor;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.calclab.suco.client.signal.Slot;
+
+public class ClientActionDescriptor<T> {
+
+    private String iconUrl;
+    private ImageDescriptor iconDescriptor;
+    private String textDescription;
+    private String toolTip;
+
+    private boolean mustBeConfirmed;
+    private String confirmationTitle;
+    private String confirmationText;
+
+    private boolean isMenuAction;
+    private String parentMenuTitle;
+    private String parentMenuIconUrl;
+    private String parentSubMenuTitle;
+
+    private final Slot<T> onPerformCall;
+    private final Slot<T> onNotConfirmed;
+
+    private AccessRolDTO accessRol;
+
+    private ActionPosition actionPosition;
+
+    public ClientActionDescriptor(final AccessRolDTO accessRolDTO, final ActionPosition actionPosition,
+	    final Slot<T> onPerformCall) {
+	accessRol = accessRolDTO;
+	this.actionPosition = actionPosition;
+	this.onPerformCall = onPerformCall;
+	mustBeConfirmed = false;
+	onNotConfirmed = null;
+	isMenuAction = false;
+    }
+
+    @SuppressWarnings("unchecked")
+    public void fireOnNotConfirmed(final Object parameter) {
+	if (onNotConfirmed != null) {
+	    onNotConfirmed.onEvent((T) parameter);
+	}
+    }
+
+    @SuppressWarnings("unchecked")
+    public void fireOnPerformCall(final Object parameter) {
+	onPerformCall.onEvent((T) parameter);
+    }
+
+    public AccessRolDTO getAccessRol() {
+	return accessRol;
+    }
+
+    public ActionPosition getActionPosition() {
+	return actionPosition;
+    }
+
+    public String getConfirmationText() {
+	return confirmationText;
+    }
+
+    public String getConfirmationTitle() {
+	return confirmationTitle;
+    }
+
+    public ImageDescriptor getIconDescriptor() {
+	return iconDescriptor;
+    }
+
+    public String getIconUrl() {
+	return iconUrl;
+    }
+
+    public String getParentMenuIconUrl() {
+	return parentMenuIconUrl;
+    }
+
+    public String getParentMenuTitle() {
+	return parentMenuTitle;
+    }
+
+    public String getParentSubMenuTitle() {
+	return parentSubMenuTitle;
+    }
+
+    public String getText() {
+	return textDescription;
+    }
+
+    public String getToolTip() {
+	return toolTip;
+    }
+
+    public boolean isMenuAction() {
+	return isMenuAction;
+    }
+
+    public boolean isMustBeConfirmed() {
+	return mustBeConfirmed;
+    }
+
+    public void setAccessRol(final AccessRolDTO accessRol) {
+	this.accessRol = accessRol;
+    }
+
+    public void setConfirmationText(final String confirmationText) {
+	this.confirmationText = confirmationText;
+    }
+
+    public void setConfirmationTitle(final String confirmationTitle) {
+	this.confirmationTitle = confirmationTitle;
+    }
+
+    public void setIconDescriptor(final ImageDescriptor iconDescriptor) {
+	this.iconDescriptor = iconDescriptor;
+    }
+
+    public void setIconUrl(final String iconUrl) {
+	this.iconUrl = iconUrl;
+    }
+
+    public void setMustBeConfirmed(final boolean mustBeConfirmed) {
+	this.mustBeConfirmed = mustBeConfirmed;
+    }
+
+    public void setActionPosition(final ActionPosition actionPosition) {
+	this.actionPosition = actionPosition;
+    }
+
+    public void setParentMenuIconUrl(final String parentMenuIconUrl) {
+	this.parentMenuIconUrl = parentMenuIconUrl;
+    }
+
+    public void setParentMenuTitle(final String parentMenuTitle) {
+	isMenuAction = true;
+	this.parentMenuTitle = parentMenuTitle;
+    }
+
+    public void setParentSubMenuTitle(final String parentSubMenuTitle) {
+	if (parentMenuTitle == null) {
+	    Log.warn("Please set parentMenuTitle before");
+	}
+	this.parentSubMenuTitle = parentSubMenuTitle;
+    }
+
+    public void setTextDescription(final String textDescription) {
+	this.textDescription = textDescription;
+    }
+
+    public void setToolTip(final String toolTip) {
+	this.toolTip = toolTip;
+    }
+
+}

Added: trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessRolDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessRolDTO.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessRolDTO.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,5 @@
+package org.ourproject.kune.platf.client.dto;
+
+public enum AccessRolDTO {
+    Administrator, Editor, Viewer
+}

Added: trunk/src/main/java/org/ourproject/kune/platf/client/dto/ContentStatusDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/ContentStatusDTO.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/ContentStatusDTO.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,5 @@
+package org.ourproject.kune.platf.client.dto;
+
+public enum ContentStatusDTO {
+    publicVisible, nonPublicVisible, markForDelection
+}
\ No newline at end of file

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateToken.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateToken.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateToken.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -25,8 +25,8 @@
 import com.google.gwt.user.client.rpc.IsSerializable;
 
 public class StateToken implements IsSerializable {
+    public static final String SEPARATOR = ".";
     private static final String[] EMPTY = new String[0];
-    private static final String DOT = ".";
 
     public static String encode(final String group, final String tool, final String folder, final String document) {
 	String encoded = "";
@@ -34,13 +34,13 @@
 	    encoded += group;
 	}
 	if (tool != null) {
-	    encoded += DOT + tool;
+	    encoded += SEPARATOR + tool;
 	}
 	if (folder != null) {
-	    encoded += DOT + folder;
+	    encoded += SEPARATOR + folder;
 	}
 	if (document != null) {
-	    encoded += DOT + document;
+	    encoded += SEPARATOR + document;
 	}
 	return encoded;
     }
@@ -80,6 +80,10 @@
 	encoded = null;
     }
 
+    public StateToken clone() {
+	return new StateToken(this.getEncoded());
+    }
+
     public String getDocument() {
 	return document;
     }
@@ -103,7 +107,7 @@
 	String publicUrl = "http://";
 
 	if (group != null) {
-	    publicUrl += group + DOT;
+	    publicUrl += group + SEPARATOR;
 	}
 
 	// FIXME: Maybe get from InitData the site.domain
@@ -113,10 +117,10 @@
 	    publicUrl += tool;
 	}
 	if (folder != null) {
-	    publicUrl += DOT + folder;
+	    publicUrl += SEPARATOR + folder;
 	}
 	if (document != null) {
-	    publicUrl += DOT + document;
+	    publicUrl += SEPARATOR + document;
 	}
 
 	return publicUrl;
@@ -155,24 +159,28 @@
 	return getDocument() != null;
     }
 
-    public void setDocument(final String document) {
+    public StateToken setDocument(final String document) {
 	this.document = document;
 	encoded = null;
+	return this;
     }
 
-    public void setFolder(final String folder) {
+    public StateToken setFolder(final String folder) {
 	this.folder = folder;
 	encoded = null;
+	return this;
     }
 
-    public void setGroup(final String group) {
+    public StateToken setGroup(final String group) {
 	this.group = group;
 	encoded = null;
+	return this;
     }
 
-    public void setTool(final String tool) {
+    public StateToken setTool(final String tool) {
 	this.tool = tool;
 	encoded = null;
+	return this;
     }
 
     public String toString() {

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -2,6 +2,7 @@
 
 import org.ourproject.kune.chat.client.ChatClientModule;
 import org.ourproject.kune.docs.client.DocumentClientModule;
+import org.ourproject.kune.platf.client.actions.ActionManager;
 import org.ourproject.kune.platf.client.app.Application;
 import org.ourproject.kune.platf.client.app.ApplicationDefault;
 import org.ourproject.kune.platf.client.app.HistoryWrapper;
@@ -85,9 +86,9 @@
 import org.ourproject.kune.workspace.client.tags.TagsSummary;
 import org.ourproject.kune.workspace.client.tags.TagsSummaryPanel;
 import org.ourproject.kune.workspace.client.tags.TagsSummaryPresenter;
-import org.ourproject.kune.workspace.client.ui.ctx.items.ContextItems;
-import org.ourproject.kune.workspace.client.ui.ctx.items.ContextItemsPanel;
-import org.ourproject.kune.workspace.client.ui.ctx.items.ContextItemsPresenter;
+import org.ourproject.kune.workspace.client.ui.ctx.items.ContextNavigator;
+import org.ourproject.kune.workspace.client.ui.ctx.items.ContextNavigatorPanel;
+import org.ourproject.kune.workspace.client.ui.ctx.items.ContextNavigatorPresenter;
 import org.ourproject.kune.workspace.client.ui.newtmp.entitylogo.EntityLogo;
 import org.ourproject.kune.workspace.client.ui.newtmp.entitylogo.EntityLogoPanel;
 import org.ourproject.kune.workspace.client.ui.newtmp.entitylogo.EntityLogoPresenter;
@@ -560,7 +561,7 @@
 	register(SingletonScope.class, new Factory<TextEditor>(TextEditor.class) {
 	    public TextEditor create() {
 		final TextEditorPresenter presenter = new TextEditorPresenter(null, true);
-		final TextEditorPanel panel = new TextEditorPanel(presenter, i18n);
+		final TextEditorPanel panel = new TextEditorPanel(presenter, i18n, ws);
 		presenter.init(panel);
 		return presenter;
 	    }
@@ -575,11 +576,18 @@
 	    }
 	});
 
-	register(SingletonScope.class, new Factory<ContextItems>(ContextItems.class) {
-	    public ContextItems create() {
-		final ContextItemsPresenter presenter = new ContextItemsPresenter(i18n, $(StateManager.class),
-			$(Session.class), $$(ContentServiceAsync.class));
-		final ContextItemsPanel panel = new ContextItemsPanel(presenter, i18n, $(StateManager.class), ws);
+	register(SingletonScope.class, new Factory<ActionManager>(ActionManager.class) {
+	    public ActionManager create() {
+		return new ActionManager(ws);
+	    }
+	});
+
+	register(SingletonScope.class, new Factory<ContextNavigator>(ContextNavigator.class) {
+	    public ContextNavigator create() {
+		final ContextNavigatorPresenter presenter = new ContextNavigatorPresenter($(StateManager.class),
+			$(Session.class), $$(ContentServiceAsync.class), i18n);
+		final ContextNavigatorPanel panel = new ContextNavigatorPanel(presenter, i18n, $(StateManager.class),
+			ws, $$(ActionManager.class));
 		presenter.init(panel);
 		return presenter;
 	    }

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -34,6 +34,8 @@
 
     void gotoContainer(Long containerId);
 
+    void gotoToken(StateToken state);
+
     void gotoToken(String token);
 
     void onGroupChanged(Slot2<String, String> slot);
@@ -54,6 +56,4 @@
 
     void setSocialNetwork(SocialNetworkResultDTO socialNet);
 
-    void setState(StateToken state);
-
 }

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -81,11 +81,15 @@
 	final StateToken newStateToken = session.getCurrentState().getStateToken();
 	newStateToken.setDocument(null);
 	newStateToken.setFolder(containerId.toString());
-	setState(newStateToken);
+	gotoToken(newStateToken);
     }
 
+    public void gotoToken(final StateToken state) {
+	history.newItem(state.getEncoded());
+    }
+
     public void gotoToken(final String token) {
-	setState(new StateToken(token));
+	gotoToken(new StateToken(token));
     }
 
     public void onGroupChanged(final Slot2<String, String> slot) {
@@ -131,6 +135,7 @@
 	onHistoryChanged(history.getToken());
     }
 
+    @Deprecated
     public void reloadContextAndTitles() {
 	contentProvider.getContent(session.getUserHash(), new StateToken(history.getToken()),
 		new AsyncCallbackSimple<StateDTO>() {
@@ -151,7 +156,6 @@
     public void setRetrievedState(final StateDTO content) {
 	final StateToken state = content.getStateToken();
 	contentProvider.cache(state, content);
-	setState(state);
     }
 
     public void setSocialNetwork(final SocialNetworkResultDTO socialNet) {
@@ -168,10 +172,6 @@
 	}
     }
 
-    public void setState(final StateToken state) {
-	history.newItem(state.getEncoded());
-    }
-
     private void checkGroupAndToolChange(final StateDTO oldState, final StateDTO newState) {
 	final String oldGroupName = oldState != null ? oldState.getGroup().getShortName() : null;
 	final String newGroupName = newState.getGroup().getShortName();
@@ -187,34 +187,11 @@
     }
 
     private void loadContent(final StateDTO state) {
-	session.setCurrent(state);
 	onStateChanged.fire(state);
-	// final GroupDTO group = state.getGroup();
-	// app.setGroupState(group.getShortName());
-	// final boolean isAdmin = state.getGroupRights().isAdministrable();
-	// if (isAdmin) {
-	// workspace.getThemeMenuComponent().setVisible(true);
-	// } else {
-	// workspace.getThemeMenuComponent().setVisible(false);
-	// }
-	// workspace.showGroup(group, isAdmin);
-
-	// final String toolName = state.getToolName();
-	// workspace.setTool(toolName);
-
-	// final ClientTool clientTool = app.getTool(toolName);
-	// clientTool.setContent(state);
-	// clientTool.setContext(state);
-	// workspace.getContentTitleComponent().setState(state);
-	// workspace.getContentSubTitleComponent().setState(state);
-	// workspace.getContentBottomToolBarComponent().setRate(state,
-	// session.isLogged());
-	// workspace.setContent(clientTool.getContent());
-	// workspace.setContext(clientTool.getContext());
-	// workspace.getLicenseComponent().setLicense(state);
 	Site.hideProgress();
     }
 
+    @Deprecated
     private void loadContextOnly(final StateDTO state) {
 	session.setCurrent(state);
 	// /final String toolName = state.getToolName();
@@ -226,8 +203,9 @@
     private void onHistoryChanged(final StateToken newState) {
 	contentProvider.getContent(session.getUserHash(), newState, new AsyncCallbackSimple<StateDTO>() {
 	    public void onSuccess(final StateDTO newState) {
-		loadContent(newState);
+		session.setCurrent(newState);
 		checkGroupAndToolChange(oldState, newState);
+		loadContent(newState);
 		oldState = newState;
 	    }
 	});
@@ -238,7 +216,8 @@
 	    onHistoryChanged(new StateToken());
 	} else {
 	    final StateDTO currentState = session.getCurrentState();
-	    checkGroupAndToolChange(oldState, currentState);
+	    session.setCurrent(oldState);
+	    checkGroupAndToolChange(currentState, oldState);
 	    loadContent(oldState);
 	}
     }

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/tool/ClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/tool/ClientTool.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/tool/ClientTool.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -20,14 +20,9 @@
 
 package org.ourproject.kune.platf.client.tool;
 
-import org.ourproject.kune.platf.client.dto.StateDTO;
 
 public interface ClientTool {
 
     String getName();
 
-    void setContent(StateDTO state);
-
-    void setContext(StateDTO state);
-
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditor.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditor.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditor.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -24,18 +24,18 @@
 
 public interface TextEditor {
 
+    public String getContent();
+
     public View getView();
 
-    public View getToolBar();
-
-    public void setContent(String content);
-
-    public String getContent();
-
     public void onSaved();
 
     public void onSaveFailed();
 
     public void reset();
 
+    public void setContent(String content);
+
+    public void setToolbarVisible(boolean visible);
+
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorListener.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorListener.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorListener.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -21,7 +21,9 @@
 package org.ourproject.kune.workspace.client.editor;
 
 public interface TextEditorListener {
-    void onCancel();
 
+    void onEditCancelled();
+
     void onSave(String text);
+
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -22,6 +22,7 @@
 
 import org.ourproject.kune.platf.client.View;
 import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Timer;
@@ -40,12 +41,13 @@
     private final Timer saveTimer;
     private final I18nTranslationService i18n;
 
-    public TextEditorPanel(final TextEditorPresenter presenter, final I18nTranslationService i18n) {
+    public TextEditorPanel(final TextEditorPresenter presenter, final I18nTranslationService i18n,
+	    final WorkspaceSkeleton ws) {
 
 	this.presenter = presenter;
 	this.i18n = i18n;
 	gwtRTarea = new RichTextArea();
-	textEditorToolbar = new TextEditorToolbar(gwtRTarea, presenter, i18n);
+	textEditorToolbar = new TextEditorToolbar(gwtRTarea, presenter, i18n, ws);
 	initWidget(gwtRTarea);
 
 	gwtRTarea.setWidth("97%");
@@ -117,6 +119,10 @@
 	textEditorToolbar.setTextSaveButton(text);
     }
 
+    public void setToolBarVisible(final boolean visible) {
+	textEditorToolbar.setVisible(visible);
+    }
+
     public void showSaveBeforeDialog() {
 	MessageBox.confirm(i18n.t("Save confirmation"), i18n.t("Save before close?"), new MessageBox.ConfirmCallback() {
 	    public void execute(final String btnID) {

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -31,104 +31,103 @@
     private boolean saveAndCloseConfirmed;
 
     public TextEditorPresenter(final TextEditorListener listener, final boolean isAutoSave) {
-        this.listener = listener;
-        autoSave = isAutoSave;
-        savePending = false;
-        editingHtml = false;
-        saveAndCloseConfirmed = false;
+	this.listener = listener;
+	autoSave = isAutoSave;
+	savePending = false;
+	editingHtml = false;
+	saveAndCloseConfirmed = false;
+    }
 
+    public String getContent() {
+	return view.getHTML();
     }
 
-    public void init(final TextEditorView view) {
-        this.view = view;
-        this.view.setEnabledSaveButton(false);
-        this.view.setEnabled(true);
+    public View getView() {
+	return view;
     }
 
-    public void setContent(final String html) {
-        this.view.setHTML(html);
+    public void init(final TextEditorView view) {
+	this.view = view;
+	this.view.setEnabledSaveButton(false);
+	this.view.setEnabled(true);
     }
 
     public void onEdit() {
-        if (!savePending) {
-            savePending = true;
-            view.setEnabledSaveButton(true);
-            if (autoSave) {
-                view.scheduleSave(10000);
-            }
-        }
+	if (!savePending) {
+	    savePending = true;
+	    view.setEnabledSaveButton(true);
+	    if (autoSave) {
+		view.scheduleSave(10000);
+	    }
+	}
     }
 
-    protected void onSave() {
-        listener.onSave(view.getHTML());
+    public void onSaveAndClose() {
+	saveAndCloseConfirmed = true;
+	onSave();
     }
 
-    protected void onCancel() {
-        if (savePending) {
-            view.saveTimerCancel();
-            view.showSaveBeforeDialog();
-        } else {
-            onCancelConfirmed();
-        }
+    public void onSaved() {
+	if (saveAndCloseConfirmed) {
+	    onCancelConfirmed();
+	} else {
+	    reset();
+	}
     }
 
-    protected void onCancelConfirmed() {
-        reset();
-        listener.onCancel();
+    public void onSaveFailed() {
+	view.scheduleSave(20000);
+	if (saveAndCloseConfirmed) {
+	    saveAndCloseConfirmed = false;
+	}
     }
 
-    protected void onEditHTML() {
-        if (editingHtml) {
-            // normal editor
-            String html = view.getText();
-            view.setHTML(html);
-            view.editHTML(false);
-            editingHtml = false;
-        } else {
-            // html editor
-            String html = view.getHTML();
-            view.setText(html);
-            view.editHTML(true);
-            editingHtml = true;
-        }
+    public void reset() {
+	view.saveTimerCancel();
+	savePending = false;
+	saveAndCloseConfirmed = false;
+	view.setEnabledSaveButton(false);
     }
 
-    public void onSaved() {
-        if (saveAndCloseConfirmed) {
-            onCancelConfirmed();
-        } else {
-            reset();
-        }
+    public void setContent(final String html) {
+	this.view.setHTML(html);
     }
 
-    public void reset() {
-        view.saveTimerCancel();
-        savePending = false;
-        saveAndCloseConfirmed = false;
-        view.setEnabledSaveButton(false);
+    public void setToolbarVisible(final boolean visible) {
+	view.setToolBarVisible(visible);
     }
 
-    public void onSaveFailed() {
-        view.scheduleSave(20000);
-        if (saveAndCloseConfirmed) {
-            saveAndCloseConfirmed = false;
-        }
+    protected void onCancel() {
+	if (savePending) {
+	    view.saveTimerCancel();
+	    view.showSaveBeforeDialog();
+	} else {
+	    onCancelConfirmed();
+	}
     }
 
-    public View getView() {
-        return view;
+    protected void onCancelConfirmed() {
+	reset();
+	listener.onEditCancelled();
     }
 
-    public View getToolBar() {
-        return view.getToolBar();
+    protected void onEditHTML() {
+	if (editingHtml) {
+	    // normal editor
+	    final String html = view.getText();
+	    view.setHTML(html);
+	    view.editHTML(false);
+	    editingHtml = false;
+	} else {
+	    // html editor
+	    final String html = view.getHTML();
+	    view.setText(html);
+	    view.editHTML(true);
+	    editingHtml = true;
+	}
     }
 
-    public String getContent() {
-        return view.getHTML();
+    protected void onSave() {
+	listener.onSave(view.getHTML());
     }
-
-    public void onSaveAndClose() {
-        saveAndCloseConfirmed = true;
-        onSave();
-    }
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -21,7 +21,6 @@
 package org.ourproject.kune.workspace.client.editor;
 
 import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.ui.CustomPushButton;
 import org.ourproject.kune.platf.client.ui.KuneUiUtils;
 import org.ourproject.kune.platf.client.ui.dialogs.BasicDialog;
 import org.ourproject.kune.platf.client.ui.form.FileUploadFormSample;
@@ -31,6 +30,7 @@
 import org.ourproject.kune.platf.client.ui.palette.ColorSelectListener;
 import org.ourproject.kune.platf.client.ui.palette.WebSafePalettePanel;
 import org.ourproject.kune.platf.client.ui.palette.WebSafePalettePresenter;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.Command;
@@ -47,6 +47,7 @@
 import com.google.gwt.user.client.ui.ToggleButton;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.EventObject;
 import com.gwtext.client.data.ArrayReader;
 import com.gwtext.client.data.DateFieldDef;
 import com.gwtext.client.data.FieldDef;
@@ -55,8 +56,11 @@
 import com.gwtext.client.data.RecordDef;
 import com.gwtext.client.data.Store;
 import com.gwtext.client.data.StringFieldDef;
+import com.gwtext.client.widgets.Button;
 import com.gwtext.client.widgets.MessageBox;
+import com.gwtext.client.widgets.ToolbarButton;
 import com.gwtext.client.widgets.MessageBox.PromptCallback;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
 
 /**
  * A sample toolbar for use with {@link RichTextArea}. It provides a simple UI
@@ -71,192 +75,192 @@
      */
     private class EventListener implements ClickListener, ChangeListener, KeyboardListener {
 
-        private ImageChooser ic;
+	private ImageChooser ic;
 
-        public void onChange(final Widget sender) {
-            fireEdit();
-        }
+	public void onChange(final Widget sender) {
+	    fireEdit();
+	}
 
-        public void onClick(final Widget sender) {
-            if (sender == bold) {
-                basic.toggleBold();
-            } else if (sender == italic) {
-                basic.toggleItalic();
-            } else if (sender == underline) {
-                basic.toggleUnderline();
-            } else if (sender == subscript) {
-                basic.toggleSubscript();
-            } else if (sender == superscript) {
-                basic.toggleSuperscript();
-            } else if (sender == strikethrough) {
-                extended.toggleStrikethrough();
-            } else if (sender == indent) {
-                extended.rightIndent();
-            } else if (sender == outdent) {
-                extended.leftIndent();
-            } else if (sender == justifyLeft) {
-                basic.setJustification(RichTextArea.Justification.LEFT);
-            } else if (sender == justifyCenter) {
-                basic.setJustification(RichTextArea.Justification.CENTER);
-            } else if (sender == justifyRight) {
-                basic.setJustification(RichTextArea.Justification.RIGHT);
-            } else if (sender == insertImage) {
-                showImagePanel();
-            } else if (sender == createLink) {
-                MessageBox.prompt("Insert a link", "Enter a link URL:", new PromptCallback() {
-                    public void execute(final String btnID, final String text) {
-                        if (btnID.equals("ok") && text != null) {
-                            extended.createLink(text);
-                        }
-                    }
-                });
-                showLinkPanel();
-            } else if (sender == backColor) {
-                showPalette(sender, sender.getAbsoluteLeft(), sender.getAbsoluteTop() + 20);
-                palettePresenter.addColorSelectListener(new ColorSelectListener() {
-                    public void onColorSelected(final String color) {
-                        basic.setBackColor(color);
-                        popupPalette.hide();
-                        palettePresenter.reset();
-                    }
-                });
-            } else if (sender == fontColor) {
-                showPalette(sender, sender.getAbsoluteLeft(), sender.getAbsoluteTop() + 20);
-                palettePresenter.addColorSelectListener(new ColorSelectListener() {
-                    public void onColorSelected(final String color) {
-                        basic.setForeColor(color);
-                        popupPalette.hide();
-                        palettePresenter.reset();
-                    }
-                });
-            } else if (sender == removeLink) {
-                extended.removeLink();
-            } else if (sender == hr) {
-                extended.insertHorizontalRule();
-            } else if (sender == ol) {
-                extended.insertOrderedList();
-            } else if (sender == ul) {
-                extended.insertUnorderedList();
-            } else if (sender == removeFormat) {
-                extended.removeFormat();
-            } else if (sender == richText) {
-                // We use the RichTextArea's onKeyUp event to update the
-                // toolbar status.
-                // This will catch any cases where the user moves the cursur
-                // using the
-                // keyboard, or uses one of the browser's built-in keyboard
-                // shortcuts.
-                updateStatus();
-            }
-            if (sender != richText) {
-                // some button pressed is equiv to edit
-                fireEdit();
-            }
-        }
+	public void onClick(final Widget sender) {
+	    if (sender == bold) {
+		basic.toggleBold();
+	    } else if (sender == italic) {
+		basic.toggleItalic();
+	    } else if (sender == underline) {
+		basic.toggleUnderline();
+	    } else if (sender == subscript) {
+		basic.toggleSubscript();
+	    } else if (sender == superscript) {
+		basic.toggleSuperscript();
+	    } else if (sender == strikethrough) {
+		extended.toggleStrikethrough();
+	    } else if (sender == indent) {
+		extended.rightIndent();
+	    } else if (sender == outdent) {
+		extended.leftIndent();
+	    } else if (sender == justifyLeft) {
+		basic.setJustification(RichTextArea.Justification.LEFT);
+	    } else if (sender == justifyCenter) {
+		basic.setJustification(RichTextArea.Justification.CENTER);
+	    } else if (sender == justifyRight) {
+		basic.setJustification(RichTextArea.Justification.RIGHT);
+	    } else if (sender == insertImage) {
+		showImagePanel();
+	    } else if (sender == createLink) {
+		MessageBox.prompt("Insert a link", "Enter a link URL:", new PromptCallback() {
+		    public void execute(final String btnID, final String text) {
+			if (btnID.equals("ok") && text != null) {
+			    extended.createLink(text);
+			}
+		    }
+		});
+		showLinkPanel();
+	    } else if (sender == backColor) {
+		showPalette(sender, sender.getAbsoluteLeft(), sender.getAbsoluteTop() + 20);
+		palettePresenter.addColorSelectListener(new ColorSelectListener() {
+		    public void onColorSelected(final String color) {
+			basic.setBackColor(color);
+			popupPalette.hide();
+			palettePresenter.reset();
+		    }
+		});
+	    } else if (sender == fontColor) {
+		showPalette(sender, sender.getAbsoluteLeft(), sender.getAbsoluteTop() + 20);
+		palettePresenter.addColorSelectListener(new ColorSelectListener() {
+		    public void onColorSelected(final String color) {
+			basic.setForeColor(color);
+			popupPalette.hide();
+			palettePresenter.reset();
+		    }
+		});
+	    } else if (sender == removeLink) {
+		extended.removeLink();
+	    } else if (sender == hr) {
+		extended.insertHorizontalRule();
+	    } else if (sender == ol) {
+		extended.insertOrderedList();
+	    } else if (sender == ul) {
+		extended.insertUnorderedList();
+	    } else if (sender == removeFormat) {
+		extended.removeFormat();
+	    } else if (sender == richText) {
+		// We use the RichTextArea's onKeyUp event to update the
+		// toolbar status.
+		// This will catch any cases where the user moves the cursur
+		// using the
+		// keyboard, or uses one of the browser's built-in keyboard
+		// shortcuts.
+		updateStatus();
+	    }
+	    if (sender != richText) {
+		// some button pressed is equiv to edit
+		fireEdit();
+	    }
+	}
 
-        public void onKeyDown(final Widget sender, final char keyCode, final int modifiers) {
-            if (sender == removeLink && keyCode == KeyboardListener.KEY_ENTER) {
-                fireEditHTML();
-            }
-        }
+	public void onKeyDown(final Widget sender, final char keyCode, final int modifiers) {
+	    if (sender == removeLink && keyCode == KeyboardListener.KEY_ENTER) {
+		fireEditHTML();
+	    }
+	}
 
-        public void onKeyPress(final Widget sender, final char keyCode, final int modifiers) {
-        }
+	public void onKeyPress(final Widget sender, final char keyCode, final int modifiers) {
+	}
 
-        public void onKeyUp(final Widget sender, final char keyCode, final int modifiers) {
-            if (sender == richText) {
-                // We use the RichTextArea's onKeyUp event to update the
-                // toolbar status.
-                // This will catch any cases where the user moves the cursur
-                // using the
-                // keyboard, or uses one of the browser's built-in keyboard
-                // shortcuts.
-                updateStatus();
-                fireEdit();
-            }
-        }
+	public void onKeyUp(final Widget sender, final char keyCode, final int modifiers) {
+	    if (sender == richText) {
+		// We use the RichTextArea's onKeyUp event to update the
+		// toolbar status.
+		// This will catch any cases where the user moves the cursur
+		// using the
+		// keyboard, or uses one of the browser's built-in keyboard
+		// shortcuts.
+		updateStatus();
+		fireEdit();
+	    }
+	}
 
-        private Object[][] getData() {
-            return new Object[][] {
-            // new Object[]{"Pirates of the Caribbean", new Integer(2120), new
-            // Long(1180231870000l), "images/view/carribean.jpg"},
-            // new Object[]{"Resident Evil", new Integer(2120), new
-            // Long(1180231870000l), "images/view/resident_evil.jpg"},
-            // new Object[]{"Blood Diamond", new Integer(2120), new
-            // Long(1180231870000l), "images/view/blood_diamond.jpg"},
-            // new Object[]{"No Reservations", new Integer(2120), new
-            // Long(1180231870000l), "images/view/no_reservations.jpg"},
-            // new Object[]{"Casino Royale", new Integer(2120), new
-            // Long(1180231870000l), "images/view/casino_royale.jpg"},
-            // new Object[]{"Good Shepherd", new Integer(2120), new
-            // Long(1180231870000l), "images/view/good_shepherd.jpg"},
-            // new Object[]{"Ghost Rider", new Integer(2120), new
-            // Long(1180231870000l), "images/view/ghost_rider.jpg"},
-            // new Object[]{"Batman Begins", new Integer(2120), new
-            // Long(1180231870000l), "images/view/batman_begins.jpg"},
-            // new Object[]{"Last Samurai", new Integer(2120), new
-            // Long(1180231870000l), "images/view/last_samurai.jpg"},
-            // new Object[]{"Italian Job", new Integer(2120), new
-            // Long(1180231870000l), "images/view/italian_job.jpg"},
-            // new Object[]{"Mission Impossible III", new Integer(2120), new
-            // Long(1180231870000l), "images/view/mi3.jpg"},
-            // new Object[]{"Mr & Mrs Smith", new Integer(2120), new
-            // Long(1180231870000l), "images/view/smith.jpg"},
-            // new Object[]{"Inside Man", new Integer(2120), new
-            // Long(1180231870000l), "images/view/inside_man.jpg"},
-            // new Object[]{"The Island", new Integer(2120), new
-            // Long(1180231870000l), "images/view/island.jpg"}
-            };
-        }
+	private Object[][] getData() {
+	    return new Object[][] {
+	    // new Object[]{"Pirates of the Caribbean", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/carribean.jpg"},
+	    // new Object[]{"Resident Evil", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/resident_evil.jpg"},
+	    // new Object[]{"Blood Diamond", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/blood_diamond.jpg"},
+	    // new Object[]{"No Reservations", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/no_reservations.jpg"},
+	    // new Object[]{"Casino Royale", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/casino_royale.jpg"},
+	    // new Object[]{"Good Shepherd", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/good_shepherd.jpg"},
+	    // new Object[]{"Ghost Rider", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/ghost_rider.jpg"},
+	    // new Object[]{"Batman Begins", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/batman_begins.jpg"},
+	    // new Object[]{"Last Samurai", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/last_samurai.jpg"},
+	    // new Object[]{"Italian Job", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/italian_job.jpg"},
+	    // new Object[]{"Mission Impossible III", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/mi3.jpg"},
+	    // new Object[]{"Mr & Mrs Smith", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/smith.jpg"},
+	    // new Object[]{"Inside Man", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/inside_man.jpg"},
+	    // new Object[]{"The Island", new Integer(2120), new
+	    // Long(1180231870000l), "images/view/island.jpg"}
+	    };
+	}
 
-        private void showImagePanel() {
-            // i18n:
-            FileUploadFormSample fileUploadFormSample = new FileUploadFormSample();
-            BasicDialog dialog = new BasicDialog("Insert image", false, true, 400, 400);
-            dialog.add(fileUploadFormSample);
-            dialog.show();
+	private void showImagePanel() {
+	    // i18n:
+	    final FileUploadFormSample fileUploadFormSample = new FileUploadFormSample();
+	    final BasicDialog dialog = new BasicDialog("Insert image", false, true, 400, 400);
+	    dialog.add(fileUploadFormSample);
+	    dialog.show();
 
-            if (ic == null) {
-                MemoryProxy dataProxy = new MemoryProxy(getData());
-                RecordDef recordDef = new RecordDef(new FieldDef[] { new StringFieldDef("name"),
-                        new IntegerFieldDef("size"), new DateFieldDef("lastmod", "timestamp"),
-                        new StringFieldDef("url") });
-                ArrayReader reader = new ArrayReader(recordDef);
-                final Store store = new Store(dataProxy, reader, true);
-                store.load();
+	    if (ic == null) {
+		final MemoryProxy dataProxy = new MemoryProxy(getData());
+		final RecordDef recordDef = new RecordDef(new FieldDef[] { new StringFieldDef("name"),
+			new IntegerFieldDef("size"), new DateFieldDef("lastmod", "timestamp"),
+			new StringFieldDef("url") });
+		final ArrayReader reader = new ArrayReader(recordDef);
+		final Store store = new Store(dataProxy, reader, true);
+		store.load();
 
-                ic = new ImageChooser("Image Chooser", 515, 400, store);
-            }
+		ic = new ImageChooser("Image Chooser", 515, 400, store);
+	    }
 
-            ic.show(new ImageChooserCallback() {
-                public void onImageSelection(final ImageData data) {
-                    // Element el = DomHelper.append("images",
-                    // Format.format("<img src='{0}'
-                    // style='margin:20px;visibility:hidden;'/>",
-                    // data.getUrl()));
-                    // ExtElement extEl = new ExtElement(el);
-                    // extEl.show(true).frame();
-                }
-            });
-            // MessageBox.prompt("Insert image", "Enter an image URL:", new
-            // PromptCallback() {
-            // public void execute(final String btnID, final String text) {
-            // if (btnID.equals("ok") && text != null) {
-            // extended.insertImage(text);
-            // }
-            // }
-            // });
+	    ic.show(new ImageChooserCallback() {
+		public void onImageSelection(final ImageData data) {
+		    // Element el = DomHelper.append("images",
+		    // Format.format("<img src='{0}'
+		    // style='margin:20px;visibility:hidden;'/>",
+		    // data.getUrl()));
+		    // ExtElement extEl = new ExtElement(el);
+		    // extEl.show(true).frame();
+		}
+	    });
+	    // MessageBox.prompt("Insert image", "Enter an image URL:", new
+	    // PromptCallback() {
+	    // public void execute(final String btnID, final String text) {
+	    // if (btnID.equals("ok") && text != null) {
+	    // extended.insertImage(text);
+	    // }
+	    // }
+	    // });
 
-        }
+	}
 
-        private void showLinkPanel() {
-        }
+	private void showLinkPanel() {
+	}
     }
 
     private static final RichTextArea.FontSize[] fontSizesConstants = new RichTextArea.FontSize[] {
-            RichTextArea.FontSize.XX_SMALL, RichTextArea.FontSize.X_SMALL, RichTextArea.FontSize.SMALL,
-            RichTextArea.FontSize.MEDIUM, RichTextArea.FontSize.LARGE, RichTextArea.FontSize.X_LARGE,
-            RichTextArea.FontSize.XX_LARGE };
+	    RichTextArea.FontSize.XX_SMALL, RichTextArea.FontSize.X_SMALL, RichTextArea.FontSize.SMALL,
+	    RichTextArea.FontSize.MEDIUM, RichTextArea.FontSize.LARGE, RichTextArea.FontSize.X_LARGE,
+	    RichTextArea.FontSize.XX_LARGE };
 
     private final TextEditorImages images = (TextEditorImages) GWT.create(TextEditorImages.class);
     private final EventListener listener = new EventListener();
@@ -267,7 +271,6 @@
 
     private final VerticalPanel outer = new VerticalPanel();
     private final HorizontalPanel topPanel = new HorizontalPanel();
-    private final HorizontalPanel subtopPanel = new HorizontalPanel();
     private ToggleButton bold;
     private ToggleButton italic;
     private ToggleButton underline;
@@ -290,8 +293,8 @@
     private PushButton fontColor;
     private MenuBar fonts;
     private MenuBar fontSizes;
-    private final CustomPushButton save;
-    private final CustomPushButton close;
+    private final ToolbarButton save;
+    private final ToolbarButton close;
     private WebSafePalettePanel palettePanel;
     private final TextEditorPresenter panelListener;
     private PopupPanel popupPalette;
@@ -305,235 +308,246 @@
      *                the rich text area to be controlled
      */
     public TextEditorToolbar(final RichTextArea richText, final TextEditorPresenter panelListener,
-            final I18nTranslationService i18n) {
-        this.richText = richText;
-        this.i18n = i18n;
-        this.basic = richText.getBasicFormatter();
-        this.extended = richText.getExtendedFormatter();
+	    final I18nTranslationService i18n, final WorkspaceSkeleton ws) {
+	this.richText = richText;
+	this.i18n = i18n;
+	this.basic = richText.getBasicFormatter();
+	this.extended = richText.getExtendedFormatter();
 
-        this.panelListener = panelListener;
+	this.panelListener = panelListener;
 
-        initWidget(outer);
+	initWidget(outer);
 
-        outer.add(topPanel);
-        outer.add(subtopPanel);
-        outer.setVerticalAlignment(VerticalPanel.ALIGN_MIDDLE);
-        setStyleName("gwt-RichTextToolbar");
+	outer.add(topPanel);
+	outer.setVerticalAlignment(VerticalPanel.ALIGN_MIDDLE);
+	setStyleName("gwt-RichTextToolbar");
 
-        if (basic != null) {
-            topPanel.add(bold = createToggleButton(images.bold(), i18n.t("Toggle Bold")));
-            topPanel.add(italic = createToggleButton(images.italic(), i18n.t("Toggle Italic")));
-            topPanel.add(underline = createToggleButton(images.underline(), i18n.t("Toggle Underline")));
-        }
+	save = new ToolbarButton(i18n.tWithNT("Save", "used in button"), new ButtonListenerAdapter() {
+	    @Override
+	    public void onClick(final Button button, final EventObject e) {
+		if (!save.isDisabled()) {
+		    fireSave();
+		}
+	    }
+	});
 
-        if (extended != null) {
-            topPanel.add(strikethrough = createToggleButton(images.strikeout(), i18n.t("Toggle Strikethrough")));
-        }
+	close = new ToolbarButton(i18n.tWithNT("Close", "used in button"), new ButtonListenerAdapter() {
+	    @Override
+	    public void onClick(final Button button, final EventObject e) {
+		if (!close.isDisabled()) {
+		    fireCancel();
+		}
+	    }
+	});
 
-        if (basic != null) {
-            topPanel.add(subscript = createToggleButton(images.subscript(), i18n.t("Toggle Subscript")));
-            topPanel.add(superscript = createToggleButton(images.superscript(), i18n.t("Toggle Superscript")));
-            topPanel.add(justifyLeft = createPushButton(images.alignleft(), i18n.t("Left Justify")));
-            topPanel.add(justifyCenter = createPushButton(images.centerpara(), i18n.t("Center")));
-            topPanel.add(justifyRight = createPushButton(images.alignright(), i18n.t("Right Justify")));
-        }
+	close.addStyleName("kune-Button-Large-lrSpace");
+	topPanel.add(save);
+	topPanel.add(close);
 
-        if (extended != null) {
-            topPanel.add(indent = createPushButton(images.incrementindent(), i18n.t("Indent Right")));
-            topPanel.add(outdent = createPushButton(images.decrementindent(), i18n.t("Indent Left")));
-            topPanel.add(hr = createPushButton(images.hfixedline(), i18n.t("Insert Horizontal Rule")));
-            topPanel.add(ol = createPushButton(images.defaultnumbering(), i18n.t("Insert Ordered List")));
-            topPanel.add(ul = createPushButton(images.defaultbullet(), i18n.t("Insert Unordered List")));
-            topPanel.add(insertImage = createPushButton(images.images(), i18n.t("Insert Image")));
-            topPanel.add(createLink = createPushButton(images.link(), i18n.t("Create Link")));
-            topPanel.add(removeLink = createPushButton(images.linkBreak(), i18n.t("Remove Link")));
-            topPanel.add(removeFormat = createPushButton(images.removeFormat(), i18n.t("Remove Formatting")));
-        }
+	if (basic != null) {
+	    topPanel.add(bold = createToggleButton(images.bold(), i18n.t("Toggle Bold")));
+	    topPanel.add(italic = createToggleButton(images.italic(), i18n.t("Toggle Italic")));
+	    topPanel.add(underline = createToggleButton(images.underline(), i18n.t("Toggle Underline")));
+	}
 
-        if (basic != null) {
-            topPanel.add(backColor = createPushButton(images.backcolor(), i18n.t("Background Color")));
-            topPanel.add(fontColor = createPushButton(images.fontcolor(), i18n.t("Font Color")));
-            topPanel.add(fonts = createFontsMenu());
-            topPanel.add(fontSizes = createFontSizesMenu());
+	if (extended != null) {
+	    topPanel.add(strikethrough = createToggleButton(images.strikeout(), i18n.t("Toggle Strikethrough")));
+	}
 
-            // We only use these listeners for updating status, so don't
-            // hook them up
-            // unless at least basic editing is supported.
-            richText.addKeyboardListener(listener);
-            richText.addClickListener(listener);
-        }
+	if (basic != null) {
+	    topPanel.add(subscript = createToggleButton(images.subscript(), i18n.t("Toggle Subscript")));
+	    topPanel.add(superscript = createToggleButton(images.superscript(), i18n.t("Toggle Superscript")));
+	    topPanel.add(justifyLeft = createPushButton(images.alignleft(), i18n.t("Left Justify")));
+	    topPanel.add(justifyCenter = createPushButton(images.centerpara(), i18n.t("Center")));
+	    topPanel.add(justifyRight = createPushButton(images.alignright(), i18n.t("Right Justify")));
+	}
 
-        save = new CustomPushButton(i18n.tWithNT("Save", "used in button"), new ClickListener() {
-            public void onClick(final Widget sender) {
-                if (save.isEnabled()) {
-                    fireSave();
-                }
-            }
-        });
+	if (extended != null) {
+	    topPanel.add(indent = createPushButton(images.incrementindent(), i18n.t("Indent Right")));
+	    topPanel.add(outdent = createPushButton(images.decrementindent(), i18n.t("Indent Left")));
+	    topPanel.add(hr = createPushButton(images.hfixedline(), i18n.t("Insert Horizontal Rule")));
+	    topPanel.add(ol = createPushButton(images.defaultnumbering(), i18n.t("Insert Ordered List")));
+	    topPanel.add(ul = createPushButton(images.defaultbullet(), i18n.t("Insert Unordered List")));
+	    topPanel.add(insertImage = createPushButton(images.images(), i18n.t("Insert Image")));
+	    topPanel.add(createLink = createPushButton(images.link(), i18n.t("Create Link")));
+	    topPanel.add(removeLink = createPushButton(images.linkBreak(), i18n.t("Remove Link")));
+	    topPanel.add(removeFormat = createPushButton(images.removeFormat(), i18n.t("Remove Formatting")));
+	}
 
-        close = new CustomPushButton(i18n.tWithNT("Close", "used in button"), new ClickListener() {
-            public void onClick(final Widget sender) {
-                if (close.isEnabled()) {
-                    fireCancel();
-                }
-            }
-        });
+	if (basic != null) {
+	    topPanel.add(backColor = createPushButton(images.backcolor(), i18n.t("Background Color")));
+	    topPanel.add(fontColor = createPushButton(images.fontcolor(), i18n.t("Font Color")));
+	    topPanel.add(fonts = createFontsMenu());
+	    topPanel.add(fontSizes = createFontSizesMenu());
 
-        close.addStyleName("kune-Button-Large-lrSpace");
+	    // We only use these listeners for updating status, so don't
+	    // hook them up
+	    // unless at least basic editing is supported.
+	    richText.addKeyboardListener(listener);
+	    richText.addClickListener(listener);
+	}
 
-        // if (basic != null) {
-        // topPanel.add(editHtml = createToggleButton(images.editHtml(),
-        // i18n.t("Edit HTML")));
-        // }
+	// if (basic != null) {
+	// topPanel.add(editHtml = createToggleButton(images.editHtml(),
+	// i18n.t("Edit HTML")));
+	// }
 
-        subtopPanel.add(save);
-        subtopPanel.add(close);
+	ws.getEntityWorkspace().getContentTopBar().add(this);
+	super.setVisible(false);
     }
 
     public void editHTML(final boolean edit) {
-        boolean enable = !edit;
-        if (basic != null) {
-            bold.setEnabled(enable);
-            italic.setEnabled(enable);
-            underline.setEnabled(enable);
-            subscript.setEnabled(enable);
-            superscript.setEnabled(enable);
-            justifyLeft.setEnabled(enable);
-            justifyCenter.setEnabled(enable);
-            justifyRight.setEnabled(enable);
-            backColor.setEnabled(enable);
-            fontColor.setEnabled(enable);
-        }
-        if (extended != null) {
-            strikethrough.setEnabled(enable);
-            indent.setEnabled(enable);
-            outdent.setEnabled(enable);
-            insertImage.setEnabled(enable);
-            createLink.setEnabled(enable);
-            removeLink.setEnabled(enable);
-            ol.setEnabled(enable);
-            ul.setEnabled(enable);
-            hr.setEnabled(enable);
-            removeFormat.setEnabled(enable);
-            fonts.setVisible(enable);
-            fontSizes.setVisible(enable);
-        }
+	final boolean enable = !edit;
+	if (basic != null) {
+	    bold.setEnabled(enable);
+	    italic.setEnabled(enable);
+	    underline.setEnabled(enable);
+	    subscript.setEnabled(enable);
+	    superscript.setEnabled(enable);
+	    justifyLeft.setEnabled(enable);
+	    justifyCenter.setEnabled(enable);
+	    justifyRight.setEnabled(enable);
+	    backColor.setEnabled(enable);
+	    fontColor.setEnabled(enable);
+	}
+	if (extended != null) {
+	    strikethrough.setEnabled(enable);
+	    indent.setEnabled(enable);
+	    outdent.setEnabled(enable);
+	    insertImage.setEnabled(enable);
+	    createLink.setEnabled(enable);
+	    removeLink.setEnabled(enable);
+	    ol.setEnabled(enable);
+	    ul.setEnabled(enable);
+	    hr.setEnabled(enable);
+	    removeFormat.setEnabled(enable);
+	    fonts.setVisible(enable);
+	    fontSizes.setVisible(enable);
+	}
     }
 
     public void setEnabledCloseButton(final boolean enabled) {
-        close.setEnabled(enabled);
+	if (enabled) {
+	    close.enable();
+	} else {
+	    close.disable();
+	}
     }
 
     public void setEnabledSaveButton(final boolean enabled) {
-        save.setEnabled(enabled);
+	if (enabled) {
+	    save.enable();
+	} else {
+	    save.disable();
+	}
     }
 
     public void setTextSaveButton(final String text) {
-        save.setText(text);
+	save.setText(text);
     }
 
     public void showPalette(final Widget sender, final int left, final int top) {
-        if (palettePanel == null) {
-            palettePresenter = new WebSafePalettePresenter();
-            palettePanel = new WebSafePalettePanel(palettePresenter);
-        }
-        popupPalette = new PopupPanel(true, true);
-        popupPalette.setVisible(false);
-        popupPalette.show();
-        popupPalette.setPopupPosition(left, top);
-        popupPalette.setWidget(palettePanel);
-        popupPalette.setVisible(true);
+	if (palettePanel == null) {
+	    palettePresenter = new WebSafePalettePresenter();
+	    palettePanel = new WebSafePalettePanel(palettePresenter);
+	}
+	popupPalette = new PopupPanel(true, true);
+	popupPalette.setVisible(false);
+	popupPalette.show();
+	popupPalette.setPopupPosition(left, top);
+	popupPalette.setWidget(palettePanel);
+	popupPalette.setVisible(true);
     }
 
     private MenuBar createFontSizesMenu() {
-        MenuBar menu = new MenuBar();
-        MenuBar submenu = new MenuBar(true);
-        String fontSizes[] = { i18n.t("Extra small"), i18n.t("Very small"), i18n.t("small"), i18n.t("Medium"),
-                i18n.t("Large"), i18n.t("Very large"), i18n.t("Extra large") };
+	final MenuBar menu = new MenuBar();
+	final MenuBar submenu = new MenuBar(true);
+	final String fontSizes[] = { i18n.t("Extra small"), i18n.t("Very small"), i18n.t("small"), i18n.t("Medium"),
+		i18n.t("Large"), i18n.t("Very large"), i18n.t("Extra large") };
 
-        KuneUiUtils.setQuickTip(menu, i18n.t("Font Size"));
-        menu.addItem(images.fontheight().getHTML(), true, submenu);
-        for (int i = 0; i < fontSizes.length; i++) {
-            final String f = fontSizes[i];
-            final int fontSize = i;
-            submenu.addItem("<font size=\"" + (i + 1) + "\">" + f + "</font>", true, new Command() {
-                public void execute() {
-                    basic.setFontSize(fontSizesConstants[fontSize]);
-                    fireEdit();
-                }
-            });
-        }
-        menu.setStyleName("RichTextToolbar-menu");
-        submenu.setStyleName("RichTextToolbar-submenu");
-        return menu;
+	KuneUiUtils.setQuickTip(menu, i18n.t("Font Size"));
+	menu.addItem(images.fontheight().getHTML(), true, submenu);
+	for (int i = 0; i < fontSizes.length; i++) {
+	    final String f = fontSizes[i];
+	    final int fontSize = i;
+	    submenu.addItem("<font size=\"" + (i + 1) + "\">" + f + "</font>", true, new Command() {
+		public void execute() {
+		    basic.setFontSize(fontSizesConstants[fontSize]);
+		    fireEdit();
+		}
+	    });
+	}
+	menu.setStyleName("RichTextToolbar-menu");
+	submenu.setStyleName("RichTextToolbar-submenu");
+	return menu;
     }
 
     private MenuBar createFontsMenu() {
-        MenuBar menu = new MenuBar();
-        MenuBar submenu = new MenuBar(true);
-        String fontName[] = { "Times New Roman", "Arial", "Courier New", "Georgia", "Trebuchet", "Verdana" };
+	final MenuBar menu = new MenuBar();
+	final MenuBar submenu = new MenuBar(true);
+	final String fontName[] = { "Times New Roman", "Arial", "Courier New", "Georgia", "Trebuchet", "Verdana" };
 
-        KuneUiUtils.setQuickTip(menu, i18n.t("Font Type"));
-        menu.addItem(images.charfontname().getHTML(), true, submenu);
-        for (int i = 0; i < fontName.length; i++) {
-            final String f = fontName[i];
-            submenu.addItem("<span style=\"font-family: " + f + "\">" + f + "</span>", true, new Command() {
-                public void execute() {
-                    basic.setFontName(f);
-                    fireEdit();
-                }
-            });
-        }
-        menu.setStyleName("RichTextToolbar-menu");
-        submenu.setStyleName("RichTextToolbar-submenu");
-        return menu;
+	KuneUiUtils.setQuickTip(menu, i18n.t("Font Type"));
+	menu.addItem(images.charfontname().getHTML(), true, submenu);
+	for (int i = 0; i < fontName.length; i++) {
+	    final String f = fontName[i];
+	    submenu.addItem("<span style=\"font-family: " + f + "\">" + f + "</span>", true, new Command() {
+		public void execute() {
+		    basic.setFontName(f);
+		    fireEdit();
+		}
+	    });
+	}
+	menu.setStyleName("RichTextToolbar-menu");
+	submenu.setStyleName("RichTextToolbar-submenu");
+	return menu;
     }
 
     private PushButton createPushButton(final AbstractImagePrototype img, final String tip) {
-        PushButton pb = new PushButton(img.createImage());
-        pb.addClickListener(listener);
-        KuneUiUtils.setQuickTip(pb, tip);
-        return pb;
+	final PushButton pb = new PushButton(img.createImage());
+	pb.addClickListener(listener);
+	KuneUiUtils.setQuickTip(pb, tip);
+	return pb;
     }
 
     private ToggleButton createToggleButton(final AbstractImagePrototype img, final String tip) {
-        ToggleButton tb = new ToggleButton(img.createImage());
-        tb.addClickListener(listener);
-        KuneUiUtils.setQuickTip(tb, tip);
-        return tb;
+	final ToggleButton tb = new ToggleButton(img.createImage());
+	tb.addClickListener(listener);
+	KuneUiUtils.setQuickTip(tb, tip);
+	return tb;
     }
 
     private void fireCancel() {
-        panelListener.onCancel();
+	panelListener.onCancel();
     }
 
     private void fireEdit() {
-        panelListener.onEdit();
+	panelListener.onEdit();
     }
 
     private void fireEditHTML() {
-        panelListener.onEditHTML();
+	panelListener.onEditHTML();
     }
 
     private void fireSave() {
-        panelListener.onSave();
+	panelListener.onSave();
     }
 
     /**
      * Updates the status of all the stateful buttons.
      */
     private void updateStatus() {
-        if (basic != null) {
-            bold.setDown(basic.isBold());
-            italic.setDown(basic.isItalic());
-            underline.setDown(basic.isUnderlined());
-            subscript.setDown(basic.isSubscript());
-            superscript.setDown(basic.isSuperscript());
-        }
+	if (basic != null) {
+	    bold.setDown(basic.isBold());
+	    italic.setDown(basic.isItalic());
+	    underline.setDown(basic.isUnderlined());
+	    subscript.setDown(basic.isSubscript());
+	    superscript.setDown(basic.isSuperscript());
+	}
 
-        if (extended != null) {
-            strikethrough.setDown(extended.isStrikethrough());
-        }
+	if (extended != null) {
+	    strikethrough.setDown(extended.isStrikethrough());
+	}
     }
 
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorView.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorView.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -30,6 +30,12 @@
 
     public String getText();
 
+    public View getToolBar();
+
+    public void saveTimerCancel();
+
+    public void scheduleSave(int delayMillis);
+
     public void setEnabled(boolean enabled);
 
     public void setEnabledCancelButton(boolean enabled);
@@ -44,12 +50,8 @@
 
     public void setTextSaveButton(String text);
 
+    public void setToolBarVisible(boolean visible);
+
     public void showSaveBeforeDialog();
 
-    public void scheduleSave(int delayMillis);
-
-    public void saveTimerCancel();
-
-    public View getToolBar();
-
 }
\ No newline at end of file

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -69,7 +69,7 @@
 		    view.center();
 		    Site.hideProgress();
 		} else {
-		    stateManager.setState(previousToken);
+		    stateManager.gotoToken(previousToken);
 		    Site.info(i18n.t("Sign in or register to create a group"));
 		}
 	    }
@@ -94,12 +94,12 @@
     public void onCancel() {
 	view.hide();
 	reset();
-	stateManager.setState(previousToken);
+	stateManager.gotoToken(previousToken);
     }
 
     public void onClose() {
 	reset();
-	stateManager.setState(previousToken);
+	stateManager.gotoToken(previousToken);
     }
 
     public void onFinish() {
@@ -130,7 +130,7 @@
 	    }
 
 	    public void onSuccess(final StateToken token) {
-		stateManager.setState(token);
+		stateManager.gotoToken(token);
 		view.hide();
 		reset();
 		view.unMask();

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPanel.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPanel.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -19,6 +19,9 @@
  */
 package org.ourproject.kune.workspace.client.sitebar.login;
 
+import java.util.Date;
+
+import org.ourproject.kune.platf.client.state.Session;
 import org.ourproject.kune.platf.client.ui.dialogs.BasicDialog;
 import org.ourproject.kune.platf.client.ui.dialogs.InfoDialog;
 import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
@@ -27,7 +30,9 @@
 import org.ourproject.kune.workspace.client.sitebar.msg.SimpleMessagePanel;
 import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
 
+import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.Cookies;
 import com.google.gwt.user.client.DeferredCommand;
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.Label;
@@ -174,6 +179,14 @@
 	});
     }
 
+    public void setCookie(final String userHash) {
+	// http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
+	final long duration = Session.SESSION_DURATION;
+	final Date expires = new Date(System.currentTimeMillis() + duration);
+	Cookies.setCookie(Site.USERHASH, userHash, expires, null, "/", false);
+	GWT.log("Received hash: " + userHash, null);
+    }
+
     public void setRegisterMessage(final String message, final SiteErrorType type) {
 	messagesRegisterPanel.setMessage(message, type, type);
 	messagesRegisterPanel.show();

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPresenter.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInPresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -19,8 +19,6 @@
  */
 package org.ourproject.kune.workspace.client.sitebar.login;
 
-import java.util.Date;
-
 import org.ourproject.kune.platf.client.dto.I18nCountryDTO;
 import org.ourproject.kune.platf.client.dto.I18nLanguageDTO;
 import org.ourproject.kune.platf.client.dto.StateToken;
@@ -39,7 +37,6 @@
 
 import com.calclab.emite.client.im.roster.RosterManager.SubscriptionMode;
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.user.client.Cookies;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 
 public class SignInPresenter implements SignIn {
@@ -67,7 +64,7 @@
 	    view.center();
 	    Site.hideProgress();
 	} else {
-	    stateManager.setState(previousStateToken);
+	    stateManager.gotoToken(previousStateToken);
 	}
     }
 
@@ -95,14 +92,14 @@
 	resetMessages();
 	reset();
 	view.hide();
-	stateManager.setState(previousStateToken);
+	stateManager.gotoToken(previousStateToken);
     }
 
     public void onClose() {
 	reset();
 	view.hideMessages();
 	if (!session.isLogged()) {
-	    stateManager.setState(previousStateToken);
+	    stateManager.gotoToken(previousStateToken);
 	}
     }
 
@@ -180,8 +177,8 @@
 		}
 
 		public void onSuccess(final UserInfoDTO userInfoDTO) {
-		    stateManager.setState(previousStateToken);
 		    onSignIn(userInfoDTO);
+		    stateManager.gotoToken(previousStateToken);
 		    view.hide();
 		    view.unMask();
 		}
@@ -191,8 +188,9 @@
     }
 
     private void onSignIn(final UserInfoDTO userInfoDTO) {
-	setCookie(userInfoDTO);
-	session.setUserHash(userInfoDTO.getUserHash());
+	final String userHash = userInfoDTO.getUserHash();
+	view.setCookie(userHash);
+	session.setUserHash(userHash);
 	session.setCurrentUserInfo(userInfoDTO);
 	final I18nLanguageDTO language = userInfoDTO.getLanguage();
 	i18n.changeCurrentLanguage(language.getCode());
@@ -207,12 +205,4 @@
 	view.hideMessages();
     }
 
-    private void setCookie(final UserInfoDTO userInfoDTO) {
-	// http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
-	final String sessionId = userInfoDTO.getUserHash();
-	final long duration = Session.SESSION_DURATION;
-	final Date expires = new Date(System.currentTimeMillis() + duration);
-	Cookies.setCookie(Site.USERHASH, sessionId, expires, null, "/", false);
-    }
-
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInView.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/login/SignInView.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -64,6 +64,8 @@
 
     public void unMask();
 
+    void setCookie(String userHash);
+
     void setRegisterMessage(String message, SiteErrorType type);
 
     void setSignInMessage(String message, SiteErrorType type);

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItems.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItems.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItems.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,45 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.workspace.client.ui.ctx.items;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
-import org.ourproject.kune.platf.client.dto.ContainerDTO;
-import org.ourproject.kune.platf.client.dto.StateToken;
-
-import com.calclab.suco.client.signal.Slot;
-import com.google.gwt.user.client.ui.AbstractImagePrototype;
-
-public interface ContextItems {
-
-    public void canCreate(String buttonTitle, String promptMessage, Slot<String> slot);
-
-    public View getView();
-
-    public void registerType(String typeName, AbstractImagePrototype pageWhite);
-
-    public void setControlsVisible(boolean visible);
-
-    public void setParentTreeVisible(boolean visible);
-
-    public void showContainer(StateToken state, ContainerDTO container, AccessRightsDTO rights);
-
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsImages.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsImages.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsImages.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,87 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.workspace.client.ui.ctx.items;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.user.client.ui.AbstractImagePrototype;
-import com.google.gwt.user.client.ui.ImageBundle;
-
-/**
- * 
- * http://code.google.com/p/google-web-toolkit/wiki/ImageBundleDesign
- * 
- */
-public interface ContextItemsImages extends ImageBundle {
-
-    public static class App {
-	private static ContextItemsImages ourInstance = null;
-
-	public static synchronized ContextItemsImages getInstance() {
-	    if (ourInstance == null) {
-		ourInstance = (ContextItemsImages) GWT.create(ContextItemsImages.class);
-	    }
-	    return ourInstance;
-	}
-    }
-
-    @Resource("bullet_arrow_right.png")
-    AbstractImagePrototype bulletArrowRight();
-
-    @Resource("chat-blue.png")
-    AbstractImagePrototype chatBlue();
-
-    @Resource("chat-green.png")
-    AbstractImagePrototype chatGreen();
-
-    @Resource("folder.png")
-    AbstractImagePrototype folder();
-
-    @Resource("folder_add.png")
-    AbstractImagePrototype folderAdd();
-
-    @Resource("folder-go-up.png")
-    AbstractImagePrototype folderGoUp();
-
-    @Resource("folder-go-up-light.png")
-    AbstractImagePrototype folderGoUpLight();
-
-    @Resource("folderpathmenu.png")
-    AbstractImagePrototype folderpathmenu();
-
-    @Resource("go-up.png")
-    AbstractImagePrototype goUp();
-
-    @Resource("go-up-light.png")
-    AbstractImagePrototype goUpLight();
-
-    @Resource("page.png")
-    AbstractImagePrototype page();
-
-    @Resource("page_add.png")
-    AbstractImagePrototype pageAdd();
-
-    @Resource("page_white.png")
-    AbstractImagePrototype pageWhite();
-
-    @Resource("page_white_add.png")
-    AbstractImagePrototype pageWhiteAdd();
-
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPanel.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPanel.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,130 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.workspace.client.ui.ctx.items;
-
-import org.ourproject.kune.platf.client.dto.ContainerSimpleDTO;
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.services.Images;
-import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.platf.client.ui.HorizontalLine;
-import org.ourproject.kune.platf.client.ui.IconLabel;
-import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
-
-import com.calclab.suco.client.signal.Slot;
-import com.google.gwt.user.client.ui.AbstractImagePrototype;
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.DockPanel;
-import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.gwtext.client.widgets.MessageBox;
-
-public class ContextItemsPanel extends DockPanel implements ContextItemsView {
-    private final VerticalPanel controls;
-    private final ItemsPanel items;
-    private final ContextTopBar topBar;
-    private final I18nTranslationService i18n;
-
-    public ContextItemsPanel(final ContextItemsPresenter presenter, final I18nTranslationService i18n,
-	    final StateManager stateManager, final WorkspaceSkeleton ws) {
-	this.i18n = i18n;
-	topBar = new ContextTopBar(presenter, i18n, stateManager);
-	addTopBar(topBar);
-
-	items = new ItemsPanel(presenter);
-	add(items, DockPanel.NORTH);
-	final HTML expand = new HTML("<b></b>");
-	add(expand, DockPanel.CENTER);
-	controls = new VerticalPanel();
-	add(controls, DockPanel.SOUTH);
-	controls.setVerticalAlignment(VerticalPanel.ALIGN_MIDDLE);
-	final HorizontalLine horizontalLine = new HorizontalLine();
-	controls.add(horizontalLine);
-
-	// setHeight("100%");
-	expand.setHeight("15px");
-	setCellHeight(expand, "15px");
-	addStyleName("kune-NavigationBar");
-	controls.setWidth("100%");
-	controls.setCellWidth(horizontalLine, "100%");
-	horizontalLine.setWidth("100%");
-    }
-
-    public void addCommand(final String buttonText, final String promptMessage, final Slot<String> slot) {
-	final IconLabel iconLabel = new IconLabel(Images.App.getInstance().addGreen(), buttonText);
-	iconLabel.addClickListener(new ClickListener() {
-	    public void onClick(final Widget sender) {
-		promptName(promptMessage, slot);
-	    }
-	});
-	iconLabel.addStyleName("kune-ContextItemsPanel-LabelLink");
-	controls.add(iconLabel);
-
-    }
-
-    public void addItem(final String name, final String type, final String event, final boolean editable) {
-	items.add(name, type, event, editable);
-    }
-
-    public void clear() {
-	items.clear();
-    }
-
-    public void promptName(final String title, final Slot<String> slot) {
-	MessageBox.prompt(title, i18n.t("Please enter a name:"), new MessageBox.PromptCallback() {
-	    public void execute(final String btnID, final String text) {
-		slot.onEvent(text);
-	    }
-	});
-    }
-
-    public void registerType(final String typeName, final AbstractImagePrototype image) {
-	items.registerType(typeName, image);
-    }
-
-    public void selectItem(final int index) {
-    }
-
-    public void setAbsolutePath(final ContainerSimpleDTO[] absolutePath) {
-	topBar.setAbsolutePath(absolutePath);
-    }
-
-    public void setControlsVisible(final boolean visible) {
-	controls.setVisible(visible);
-    }
-
-    public void setCurrentName(final String name) {
-	topBar.currentFolder.setText(name);
-    }
-
-    public void setParentButtonEnabled(final boolean isEnabled) {
-	topBar.btnGoParent.setVisible(isEnabled);
-	topBar.btnGoParentDisabled.setVisible(!isEnabled);
-    }
-
-    public void setParentTreeVisible(final boolean visible) {
-	topBar.firstRow.setVisible(visible);
-    }
-
-    private void addTopBar(final Widget widget) {
-	add(topBar, DockPanel.NORTH);
-    }
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPresenter.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,129 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.workspace.client.ui.ctx.items;
-
-import java.util.List;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
-import org.ourproject.kune.platf.client.dto.ContainerDTO;
-import org.ourproject.kune.platf.client.dto.ContentDTO;
-import org.ourproject.kune.platf.client.dto.StateDTO;
-import org.ourproject.kune.platf.client.dto.StateToken;
-import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
-import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.workspace.client.sitebar.Site;
-
-import com.calclab.suco.client.provider.Provider;
-import com.calclab.suco.client.signal.Slot;
-import com.google.gwt.user.client.ui.AbstractImagePrototype;
-
-public class ContextItemsPresenter implements ContextItems {
-    protected ContextItemsView view;
-    private final I18nTranslationService i18n;
-    private final StateManager stateManager;
-    private final Session session;
-    private final Provider<ContentServiceAsync> contentServiceProvider;
-
-    public ContextItemsPresenter(final I18nTranslationService i18n, final StateManager stateManager,
-	    final Session session, final Provider<ContentServiceAsync> contentServiceProvider) {
-	this.i18n = i18n;
-	this.stateManager = stateManager;
-	this.session = session;
-	this.contentServiceProvider = contentServiceProvider;
-    }
-
-    public void canCreate(final String buttonText, final String promptMessage, final Slot<String> slot) {
-	view.addCommand(buttonText, promptMessage, slot);
-    }
-
-    public View getView() {
-	return view;
-    }
-
-    public void init(final ContextItemsView view) {
-	this.view = view;
-    }
-
-    public void onGoUp() {
-	final StateDTO state = session.getCurrentState();
-	final StateToken token = state.getStateToken();
-	token.setDocument(null);
-	token.setFolder(state.getFolder().getParentFolderId().toString());
-	stateManager.setState(token);
-    }
-
-    public void onTitleRename(final String newName, final String token) {
-	Site.showProgressSaving();
-	final StateDTO currentState = session.getCurrentState();
-	contentServiceProvider.get().rename(session.getUserHash(), currentState.getGroup().getShortName(), token,
-		newName, new AsyncCallbackSimple<String>() {
-		    public void onSuccess(final String result) {
-			stateManager.reloadContextAndTitles();
-			Site.hideProgress();
-		    }
-		});
-    }
-
-    public void registerType(final String typeName, final AbstractImagePrototype image) {
-	view.registerType(typeName, image);
-    }
-
-    public void setControlsVisible(final boolean visible) {
-	view.setControlsVisible(visible);
-    }
-
-    public void setParentTreeVisible(final boolean visible) {
-	view.setParentTreeVisible(visible);
-    }
-
-    public void showContainer(final StateToken state, final ContainerDTO container, final AccessRightsDTO rights) {
-	state.setDocument(null);
-	if (container.getParentFolderId() == null) {
-	    // We translate root folder names (documents, chat room,
-	    // etcetera)
-	    view.setCurrentName(i18n.t(container.getName()));
-	} else {
-	    view.setCurrentName(container.getName());
-	}
-	view.clear();
-	final List<ContainerDTO> folders = container.getChilds();
-	for (int index = 0; index < folders.size(); index++) {
-	    final ContainerDTO child = folders.get(index);
-	    state.setFolder(child.getId().toString());
-	    view.addItem(child.getName(), child.getTypeId(), state.getEncoded(), rights.isEditable());
-	}
-
-	state.setFolder(container.getId().toString());
-	final List<ContentDTO> contents = container.getContents();
-	for (int index = 0; index < contents.size(); index++) {
-	    final ContentDTO dto = contents.get(index);
-	    state.setDocument(dto.getId().toString());
-	    view.addItem(dto.getTitle(), dto.getTypeId(), state.getEncoded(), rights.isEditable());
-	}
-	view.setParentButtonEnabled(container.getParentFolderId() != null);
-	view.setControlsVisible(rights.isEditable());
-	view.setAbsolutePath(container.getAbsolutePath());
-    }
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsView.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsView.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,51 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.workspace.client.ui.ctx.items;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.dto.ContainerSimpleDTO;
-
-import com.calclab.suco.client.signal.Slot;
-import com.google.gwt.user.client.ui.AbstractImagePrototype;
-
-public interface ContextItemsView extends View {
-
-    void addCommand(String buttonTitle, String promptMessage, Slot<String> slot);
-
-    void addItem(String name, String type, String event, boolean editable);
-
-    void clear();
-
-    void registerType(String typeName, AbstractImagePrototype image);
-
-    void selectItem(int index);
-
-    void setAbsolutePath(ContainerSimpleDTO[] absolutePath);
-
-    void setControlsVisible(boolean isVisible);
-
-    void setCurrentName(String name);
-
-    void setParentButtonEnabled(boolean isEnabled);
-
-    void setParentTreeVisible(boolean b);
-
-}

Added: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigationItem.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigationItem.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigationItem.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,68 @@
+package org.ourproject.kune.workspace.client.ui.ctx.items;
+
+import org.ourproject.kune.platf.client.actions.ClientActionCollection;
+import org.ourproject.kune.platf.client.dto.ContentStatusDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+
+public class ContextNavigationItem {
+    private final String id;
+    private final String parentId;
+    private final String iconUrl;
+    private final String text;
+    private final ContentStatusDTO contentStatusDTO;
+    private final StateToken token;
+    private final ClientActionCollection<StateToken> actionCollection;
+    private final boolean allowDrag;
+    private final boolean allowDrop;
+
+    public ContextNavigationItem(final String id, final String parentId, final String iconUrl, final String text,
+	    final ContentStatusDTO contentStatusDTO, final StateToken token, final boolean allowDrag,
+	    final boolean allowDrop, final ClientActionCollection<StateToken> actionCollection) {
+	this.id = id;
+	this.parentId = parentId;
+	this.iconUrl = iconUrl;
+	this.text = text;
+	this.contentStatusDTO = contentStatusDTO;
+	this.token = token;
+	this.allowDrag = allowDrag;
+	this.allowDrop = allowDrop;
+	this.actionCollection = actionCollection;
+    }
+
+    public ClientActionCollection<StateToken> getActionCollection() {
+	return actionCollection;
+    }
+
+    public ContentStatusDTO getContentStatus() {
+	return contentStatusDTO;
+    }
+
+    public String getIconUrl() {
+	return iconUrl;
+    }
+
+    public String getId() {
+	return id;
+    }
+
+    public String getParentId() {
+	return parentId;
+    }
+
+    public StateToken getStateToken() {
+	return token;
+    }
+
+    public String getText() {
+	return text;
+    }
+
+    public boolean isDraggable() {
+	return allowDrag;
+    }
+
+    public boolean isDroppable() {
+	return allowDrop;
+    }
+
+}

Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigator.java (from rev 841, trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItems.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItems.java	2008-08-11 01:20:37 UTC (rev 841)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigator.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,38 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package org.ourproject.kune.workspace.client.ui.ctx.items;
+
+import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.actions.ClientActionDescriptor;
+import org.ourproject.kune.platf.client.dto.StateDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+
+public interface ContextNavigator {
+
+    public View getView();
+
+    public void setState(StateDTO state);
+
+    void addAction(String contentTypeId, ClientActionDescriptor<StateToken> action);
+
+    void removeAction(String contentTypeId, ClientActionDescriptor<StateToken> action);
+
+}

Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorImages.java (from rev 841, trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsImages.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsImages.java	2008-08-11 01:20:37 UTC (rev 841)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorImages.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,88 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package org.ourproject.kune.workspace.client.ui.ctx.items;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.ui.AbstractImagePrototype;
+import com.google.gwt.user.client.ui.ImageBundle;
+
+/**
+ * 
+ * http://code.google.com/p/google-web-toolkit/wiki/ImageBundleDesign
+ * 
+ */
+public interface ContextNavigatorImages extends ImageBundle {
+
+    public static class App {
+	private static ContextNavigatorImages ourInstance = null;
+
+	@Deprecated
+	public static synchronized ContextNavigatorImages getInstance() {
+	    if (ourInstance == null) {
+		ourInstance = (ContextNavigatorImages) GWT.create(ContextNavigatorImages.class);
+	    }
+	    return ourInstance;
+	}
+    }
+
+    @Resource("bullet_arrow_right.png")
+    AbstractImagePrototype bulletArrowRight();
+
+    @Resource("chat-blue.png")
+    AbstractImagePrototype chatBlue();
+
+    @Resource("chat-green.png")
+    AbstractImagePrototype chatGreen();
+
+    @Resource("folder.png")
+    AbstractImagePrototype folder();
+
+    @Resource("folder_add.png")
+    AbstractImagePrototype folderAdd();
+
+    @Resource("folder-go-up.png")
+    AbstractImagePrototype folderGoUp();
+
+    @Resource("folder-go-up-light.png")
+    AbstractImagePrototype folderGoUpLight();
+
+    @Resource("folderpathmenu.png")
+    AbstractImagePrototype folderpathmenu();
+
+    @Resource("go-up.png")
+    AbstractImagePrototype goUp();
+
+    @Resource("go-up-light.png")
+    AbstractImagePrototype goUpLight();
+
+    @Resource("page.png")
+    AbstractImagePrototype page();
+
+    @Resource("page_add.png")
+    AbstractImagePrototype pageAdd();
+
+    @Resource("page_white.png")
+    AbstractImagePrototype pageWhite();
+
+    @Resource("page_white_add.png")
+    AbstractImagePrototype pageWhiteAdd();
+
+}

Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorPanel.java (from rev 842, trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPanel.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPanel.java	2008-08-30 14:57:17 UTC (rev 842)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorPanel.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,310 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package org.ourproject.kune.workspace.client.ui.ctx.items;
+
+import java.util.HashMap;
+
+import org.ourproject.kune.platf.client.actions.ActionManager;
+import org.ourproject.kune.platf.client.actions.ClientActionCollection;
+import org.ourproject.kune.platf.client.actions.ClientActionDescriptor;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.Toolbar;
+import org.ourproject.kune.workspace.client.ui.newtmp.skel.WorkspaceSkeleton;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.calclab.suco.client.provider.Provider;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.data.Node;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.Editor;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.ToolbarMenuButton;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.event.EditorListenerAdapter;
+import com.gwtext.client.widgets.form.TextField;
+import com.gwtext.client.widgets.menu.BaseItem;
+import com.gwtext.client.widgets.menu.Item;
+import com.gwtext.client.widgets.menu.Menu;
+import com.gwtext.client.widgets.menu.MenuItem;
+import com.gwtext.client.widgets.menu.event.BaseItemListenerAdapter;
+import com.gwtext.client.widgets.tree.TreeEditor;
+import com.gwtext.client.widgets.tree.TreeNode;
+import com.gwtext.client.widgets.tree.TreePanel;
+import com.gwtext.client.widgets.tree.event.TreeNodeListenerAdapter;
+import com.gwtext.client.widgets.tree.event.TreePanelListenerAdapter;
+
+public class ContextNavigatorPanel implements ContextNavigatorView {
+
+    private TreePanel treePanel;
+    private TreeEditor treeEditor;
+    private final HashMap<String, Menu> contextMenus;
+    private final HashMap<String, Menu> toolbarMenus;
+    private final WorkspaceSkeleton ws;
+    private final Provider<ActionManager> actionManagerProvider;
+    private final StateManager stateManager;
+
+    public ContextNavigatorPanel(final ContextNavigatorPresenter presenter, final I18nTranslationService i18n,
+	    final StateManager stateManager, final WorkspaceSkeleton ws,
+	    final Provider<ActionManager> actionManagerProvider) {
+	this.stateManager = stateManager;
+	this.ws = ws;
+	this.actionManagerProvider = actionManagerProvider;
+
+	contextMenus = new HashMap<String, Menu>();
+	toolbarMenus = new HashMap<String, Menu>();
+    }
+
+    public void addItem(final ContextNavigationItem item) {
+	final String nodeId = item.getId();
+	if (treePanel.getNodeById(nodeId) == null) {
+	    final TreeNode child = new TreeNode(item.getText());
+	    child.setId(nodeId);
+	    child.setHref("#" + item.getStateToken().toString());
+	    child.setAllowDrag(item.isDraggable());
+	    child.setAllowDrop(item.isDroppable());
+	    switch (item.getContentStatus()) {
+	    case publicVisible:
+		child.enable();
+		break;
+	    case markForDelection:
+		child.setCls("k-linethrough");
+	    case nonPublicVisible:
+		child.disable();
+		break;
+	    }
+	    contextMenus.put(nodeId, createItemMenu(item.getActionCollection(), item.getStateToken()));
+	    final TreeNode parent = treePanel.getNodeById(item.getParentId());
+	    if (parent != null) {
+		Log.info("Adding child node: " + nodeId + " to folder: " + item.getParentId());
+		if (!item.getStateToken().hasAll()) {
+		    child.setExpandable(true);
+		    child.addListener(new TreeNodeListenerAdapter() {
+			public void onExpand(final Node node) {
+			    treePanel.getNodeById(node.getId()).select();
+			    stateManager.gotoToken(node.getAttribute("href").substring(1));
+			}
+		    });
+		}
+		parent.appendChild(child);
+	    } else {
+		Log.error("Error building file tree, parent folder not found");
+	    }
+	} else {
+	    // the node already created
+	    if (contextMenus.get(nodeId) == null && item.getActionCollection() != null) {
+		contextMenus.put(nodeId, createItemMenu(item.getActionCollection(), item.getStateToken()));
+	    }
+	}
+
+    }
+
+    public void clear() {
+	if (treePanel != null) {
+	    treePanel.clear();
+	}
+	contextMenus.clear();
+	toolbarMenus.clear();
+    }
+
+    public void editItem(final String id) {
+	treeEditor.startEdit(getNode(id));
+    }
+
+    public void selectItem(final String id) {
+	final TreeNode item = getNode(id);
+	if (item != null) {
+	    item.select();
+	    // item.ensureVisible();
+	} else {
+	    Log.error("Error building file tree, current token not found");
+	}
+    }
+
+    public void setBottomActions(final StateToken stateToken, final ClientActionCollection<StateToken> operations) {
+	final Toolbar toolBar = ws.getEntityWorkspace().getContextBottomBar();
+	setToolbarOperations(toolBar, stateToken, operations);
+    }
+
+    public void setRootItem(final String id, final String text, final StateToken stateToken) {
+	if (treePanel == null || treePanel.getNodeById(id) == null) {
+	    createTreePanel(id);
+	}
+    }
+
+    public void setTopActions(final StateToken stateToken, final ClientActionCollection<StateToken> operations) {
+	final Toolbar toolBar = ws.getEntityWorkspace().getContextTopBar();
+	setToolbarOperations(toolBar, stateToken, operations);
+    }
+
+    private Menu createItemMenu(final ClientActionCollection<StateToken> operationCollection,
+	    final StateToken stateToken) {
+	if (operationCollection != null) {
+	    final Menu menu = new Menu();
+	    // Remove if when retrieved rights of siblings
+	    for (final ClientActionDescriptor<StateToken> operation : operationCollection) {
+		final Item item = new Item(operation.getText());
+		item.setIcon(operation.getIconUrl());
+		menu.addItem(item);
+		item.addListener(new BaseItemListenerAdapter() {
+		    public void onClick(final BaseItem item, final EventObject e) {
+			DeferredCommand.addCommand(new Command() {
+			    public void execute() {
+				actionManagerProvider.get().doAction(operation, stateToken);
+			    }
+			});
+		    }
+		});
+	    }
+	    return menu;
+	}
+	return null;
+    }
+
+    private Menu createToolbarMenu(final String iconUrl, final String menuTitle) {
+	Menu menu;
+	menu = new Menu();
+	final ToolbarMenuButton toolbarMenu = new ToolbarMenuButton(menuTitle);
+	if (iconUrl != null) {
+	    toolbarMenu.setIcon(iconUrl);
+	}
+	toolbarMenu.setMenu(menu);
+	toolbarMenus.put(menuTitle, menu);
+	return menu;
+    }
+
+    private void createTreePanel(final String rootId) {
+	if (treePanel != null) {
+	    clear();
+	}
+	treePanel = new TreePanel();
+	treePanel.setAnimate(true);
+	treePanel.setBorder(false);
+	treePanel.setRootVisible(false);
+	treePanel.setUseArrows(true);
+	final TreeNode root = new TreeNode();
+	root.setAllowDrag(false);
+	root.setExpanded(true);
+	root.setId(rootId);
+	root.expand();
+	treePanel.addListener(new TreePanelListenerAdapter() {
+	    public void onContextMenu(final TreeNode node, final EventObject e) {
+		final Menu menu = contextMenus.get(node.getId());
+		if (menu != null) {
+		    menu.showAt(e.getXY());
+		} else {
+		    Log.info("Empty item menu");
+		}
+	    }
+	});
+	treePanel.setLines(false);
+	treePanel.setEnableDD(true);
+	treePanel.setRootNode(root);
+	final TextField field = new TextField();
+	treeEditor = new TreeEditor(treePanel, field);
+	treeEditor.addListener(new EditorListenerAdapter() {
+	    // public boolean doBeforeComplete(final Editor source, final Object
+	    // value, final Object startValue) {
+	    // return false;
+	    // }
+
+	    public void onComplete(final Editor source, final Object value, final Object startValue) {
+		// TODO Auto-generated method stub
+	    }
+	});
+	final Panel panel = new Panel();
+	panel.setBorder(false);
+	panel.add(treePanel);
+	ws.getEntityWorkspace().setContext(panel);
+    }
+
+    private void doOperation(final ClientActionDescriptor<StateToken> operation, final StateToken stateToken) {
+	actionManagerProvider.get().doAction(operation, stateToken);
+    }
+
+    private TreeNode getNode(final String id) {
+	final TreeNode node = treePanel.getNodeById(id);
+	if (node == null) {
+	    Log.error("Id: " + id + " not found in context navigator");
+	}
+	return node;
+    }
+
+    private void setToolbarOperations(final Toolbar toolBar, final StateToken stateToken,
+	    final ClientActionCollection<StateToken> operations) {
+	toolBar.removeAll();
+	for (final ClientActionDescriptor<StateToken> operation : operations) {
+	    Log.info("Procesing operation: " + operation.getText());
+	    if (!operation.isMenuAction()) {
+		final ToolbarButton button = new ToolbarButton(operation.getText(), new ButtonListenerAdapter() {
+		    @Override
+		    public void onClick(final Button button, final EventObject e) {
+			doOperation(operation, stateToken);
+		    }
+		});
+		button.setIcon(operation.getIconUrl());
+		button.setTooltip(operation.getToolTip());
+		toolBar.add(button);
+	    } else {
+		// Menu operation
+		final Item item = new Item(operation.getText(), new BaseItemListenerAdapter() {
+		    @Override
+		    public void onClick(BaseItem item, EventObject e) {
+			doOperation(operation, stateToken);
+		    }
+		});
+		item.setIcon(operation.getIconUrl());
+
+		final String menuTitle = operation.getParentMenuTitle();
+		final String menuSubTitle = operation.getParentSubMenuTitle();
+		final String subMenuKey = menuTitle + "-" + menuSubTitle;
+		Menu menu = toolbarMenus.get(menuTitle);
+		Menu subMenu = toolbarMenus.get(subMenuKey);
+		if (menuSubTitle != null) {
+		    if (subMenu == null) {
+			subMenu = new Menu();
+			final MenuItem subMenuItem = new MenuItem(menuSubTitle, subMenu);
+			if (menu == null) {
+			    menu = createToolbarMenu(operation.getParentMenuIconUrl(), menuTitle);
+			    toolBar.add(menu);
+			}
+			menu.addItem(subMenuItem);
+			toolBar.doLayoutIfNeeded();
+			toolbarMenus.put(subMenuKey, subMenu);
+		    }
+		    subMenu.addItem(item);
+		} else {
+		    // Menu operation without submenu
+		    if (menu == null) {
+			menu = createToolbarMenu(operation.getParentMenuIconUrl(), menuTitle);
+			toolBar.add(menu);
+		    }
+		    menu.addItem(item);
+		    toolBar.doLayoutIfNeeded();
+		}
+	    }
+	}
+    }
+}

Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorPresenter.java (from rev 842, trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPresenter.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsPresenter.java	2008-08-30 14:57:17 UTC (rev 842)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorPresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,417 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package org.ourproject.kune.workspace.client.ui.ctx.items;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.ourproject.kune.docs.client.DocumentClientTool;
+import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.actions.ActionPosition;
+import org.ourproject.kune.platf.client.actions.ClientActionCollection;
+import org.ourproject.kune.platf.client.actions.ClientActionDescriptor;
+import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
+import org.ourproject.kune.platf.client.dto.AccessRolDTO;
+import org.ourproject.kune.platf.client.dto.ContainerDTO;
+import org.ourproject.kune.platf.client.dto.ContainerSimpleDTO;
+import org.ourproject.kune.platf.client.dto.ContentDTO;
+import org.ourproject.kune.platf.client.dto.ContentStatusDTO;
+import org.ourproject.kune.platf.client.dto.StateDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.UserInfoDTO;
+import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
+import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.sitebar.Site;
+
+import com.calclab.suco.client.provider.Provider;
+import com.calclab.suco.client.signal.Slot;
+import com.calclab.suco.client.signal.Slot0;
+import com.calclab.suco.client.signal.Slot2;
+
+public class ContextNavigatorPresenter implements ContextNavigator {
+
+    private ContextNavigatorView view;
+    private final StateManager stateManager;
+    private final Session session;
+    private final Provider<ContentServiceAsync> contentServiceProvider;
+    private final I18nUITranslationService i18n;
+    private final HashMap<String, ClientActionCollection<StateToken>> actions;
+    private final ArrayList<String> draggables;
+    private final ArrayList<String> droppables;
+
+    public ContextNavigatorPresenter(final StateManager stateManager, final Session session,
+	    final Provider<ContentServiceAsync> contentServiceProvider, final I18nUITranslationService i18n) {
+	this.stateManager = stateManager;
+	this.session = session;
+	this.contentServiceProvider = contentServiceProvider;
+	this.i18n = i18n;
+	actions = new HashMap<String, ClientActionCollection<StateToken>>();
+	draggables = new ArrayList<String>();
+	droppables = new ArrayList<String>();
+	createActions();
+	registerDragDropTypes();
+    }
+
+    public void addAction(final String contentTypeId, final ClientActionDescriptor<StateToken> action) {
+	ClientActionCollection<StateToken> actionColl = actions.get(contentTypeId);
+	if (actionColl == null) {
+	    actionColl = new ClientActionCollection<StateToken>();
+	    actions.put(contentTypeId, actionColl);
+	}
+	actionColl.add(action);
+    }
+
+    public View getView() {
+	return view;
+    }
+
+    public void init(final ContextNavigatorView view) {
+	this.view = view;
+	stateManager.onGroupChanged(new Slot2<String, String>() {
+	    public void onEvent(final String oldGroup, final String newGroup) {
+		if (oldGroup != null) {
+		    view.clear();
+		}
+	    }
+	});
+	stateManager.onToolChanged(new Slot2<String, String>() {
+	    public void onEvent(final String oldTool, final String newTool) {
+		if (oldTool != null) {
+		    view.clear();
+		}
+	    }
+	});
+	session.onUserSignIn(new Slot<UserInfoDTO>() {
+	    public void onEvent(final UserInfoDTO parameter) {
+		view.clear();
+	    }
+	});
+	session.onUserSignOut(new Slot0() {
+	    public void onEvent() {
+		view.clear();
+	    }
+	});
+    }
+
+    public void onTitleRename(final String newName, final String token) {
+	Site.showProgressSaving();
+	final StateDTO currentState = session.getCurrentState();
+	contentServiceProvider.get().rename(session.getUserHash(), currentState.getGroup().getShortName(), token,
+		newName, new AsyncCallbackSimple<String>() {
+		    public void onSuccess(final String result) {
+			stateManager.reloadContextAndTitles();
+			Site.hideProgress();
+		    }
+		});
+    }
+
+    public void registerDraggableType(final String type) {
+	draggables.add(type);
+    }
+
+    public void registerDroppableType(final String type) {
+	droppables.add(type);
+    }
+
+    public void removeAction(final String contentTypeId, final ClientActionDescriptor<StateToken> action) {
+	actions.get(contentTypeId).remove(action);
+    }
+
+    public void setState(final StateDTO state) {
+	final StateToken stateToken = state.getStateToken().clone();
+	final String treeId = genId(stateToken);
+
+	final ContainerDTO container = state.getFolder();
+	createTreePath(stateToken, container.getAbsolutePath());
+
+	boolean visible = false;
+	AccessRightsDTO rights = null;
+
+	String containerTreeId;
+
+	if (state.hasDocument()) {
+	    rights = state.getContentRights();
+	    visible = rights.isVisible();
+	    containerTreeId = genId(stateToken.clone().setDocument(null));
+	} else {
+	    rights = state.getFolderRights();
+	    visible = rights.isVisible();
+	    final Long folderId = container.getParentFolderId();
+	    containerTreeId = genId(stateToken.clone().setDocument(null).setFolder(
+		    folderId == null ? null : folderId.toString()));
+	}
+
+	// here check deletion mark
+
+	final ClientActionCollection<StateToken> topActions = new ClientActionCollection<StateToken>();
+	final ClientActionCollection<StateToken> itemActions = new ClientActionCollection<StateToken>();
+	final ClientActionCollection<StateToken> bottomActions = new ClientActionCollection<StateToken>();
+
+	boolean add = false;
+	for (final ClientActionDescriptor<StateToken> action : actions.get(state.getTypeId())) {
+	    switch (action.getAccessRol()) {
+	    case Administrator:
+		add = rights.isAdministrable();
+		break;
+	    case Editor:
+		add = rights.isEditable();
+		break;
+	    case Viewer:
+		add = rights.isVisible();
+		break;
+	    }
+	    if (add) {
+		switch (action.getActionPosition()) {
+		case topBarAndItemMenu:
+		    itemActions.add(action);
+		case topbar:
+		    topActions.add(action);
+		    break;
+		case bootombarAndItemMenu:
+		    itemActions.add(action);
+		case bottombar:
+		    bottomActions.add(action);
+		    break;
+		case itemMenu:
+		    itemActions.add(action);
+		    break;
+		}
+	    }
+	}
+
+	view.setTopActions(stateToken, topActions);
+	view.setBottomActions(stateToken, bottomActions);
+
+	final ContextNavigationItem item = new ContextNavigationItem(treeId, containerTreeId, "", state.getTitle(),
+		visible ? ContentStatusDTO.publicVisible : ContentStatusDTO.nonPublicVisible, stateToken, isDraggable(
+			state.getTypeId(), rights.isAdministrable()), isDroppable(state.getTypeId(), rights
+			.isAdministrable()), itemActions);
+	view.addItem(item);
+
+	for (final ContentDTO content : container.getContents()) {
+	    final StateToken siblingToken = stateToken.clone().setDocument(content.getId().toString());
+	    final StateToken siblingParentToken = stateToken.clone().setDocument(null);
+	    // TODO: rights not correct
+	    final ContextNavigationItem sibling = new ContextNavigationItem(genId(siblingToken),
+		    genId(siblingParentToken), "", content.getTitle(), ContentStatusDTO.publicVisible, siblingToken,
+		    isDraggable(content.getTypeId(), rights.isAdministrable()), isDroppable(content.getTypeId(), rights
+			    .isAdministrable()), null);
+	    view.addItem(sibling);
+
+	}
+
+	for (final ContainerDTO siblingFolder : container.getChilds()) {
+	    final StateToken siblingToken = stateToken.clone().setDocument(null).setFolder(
+		    siblingFolder.getId().toString());
+	    final StateToken siblingParentToken = stateToken.clone().setDocument(null).setFolder(
+		    siblingFolder.getParentFolderId().toString());
+	    // TODO: rights not correct
+	    final ContextNavigationItem sibling = new ContextNavigationItem(genId(siblingToken),
+		    genId(siblingParentToken), "", siblingFolder.getName(), ContentStatusDTO.publicVisible,
+		    siblingToken, isDraggable(container.getTypeId(), rights.isAdministrable()), isDroppable(container
+			    .getTypeId(), rights.isAdministrable()), null);
+	    view.addItem(sibling);
+	}
+	view.selectItem(treeId);
+    }
+
+    private void createActions() {
+	final ClientActionDescriptor<StateToken> addFolder = new ClientActionDescriptor<StateToken>(
+		AccessRolDTO.Editor, ActionPosition.topBarAndItemMenu, new Slot<StateToken>() {
+		    public void onEvent(final StateToken parameter) {
+			contentServiceProvider.get().addFolder(session.getUserHash(),
+				session.getCurrentState().getGroup().getShortName(), new Long(parameter.getFolder()),
+				i18n.t("New folder"), new AsyncCallbackSimple<StateDTO>() {
+				    public void onSuccess(final StateDTO state) {
+					setState(state);
+					stateManager.setRetrievedState(state);
+					stateManager.reload();
+					view.editItem(genId(state.getStateToken()));
+				    }
+				});
+		    }
+		});
+	addFolder.setTextDescription(i18n.t("New folder"));
+	addFolder.setParentMenuTitle(i18n.t("New"));
+
+	final ClientActionDescriptor<StateToken> addDoc = new ClientActionDescriptor<StateToken>(AccessRolDTO.Editor,
+		ActionPosition.topBarAndItemMenu, new Slot<StateToken>() {
+		    public void onEvent(final StateToken token) {
+			contentServiceProvider.get().addContent(session.getUserHash(),
+				session.getCurrentState().getGroup().getShortName(),
+				session.getCurrentState().getFolder().getId(), i18n.t("New document"),
+				new AsyncCallbackSimple<StateDTO>() {
+				    public void onSuccess(final StateDTO state) {
+					setState(state);
+					stateManager.setRetrievedState(state);
+					stateManager.reload();
+					view.editItem(genId(state.getStateToken()));
+				    }
+				});
+
+		    }
+		});
+	addDoc.setTextDescription(i18n.t("New document"));
+	addDoc.setParentMenuTitle(i18n.t("New"));
+
+	final ClientActionDescriptor<StateToken> delContainer = new ClientActionDescriptor<StateToken>(
+		AccessRolDTO.Administrator, ActionPosition.itemMenu, new Slot<StateToken>() {
+		    public void onEvent(final StateToken token) {
+			Site.info("Sorry, in development");
+		    }
+		});
+	delContainer.setTextDescription(i18n.t("Delete"));
+	delContainer.setMustBeConfirmed(true);
+	delContainer.setConfirmationTitle(i18n.t("Please confirm"));
+	delContainer.setConfirmationText(i18n.t("You will delete it and also all its contents. Are you sure?"));
+
+	final ClientActionDescriptor<StateToken> delContent = new ClientActionDescriptor<StateToken>(
+		AccessRolDTO.Administrator, ActionPosition.itemMenu, new Slot<StateToken>() {
+		    public void onEvent(final StateToken token) {
+			contentServiceProvider.get().delContent(session.getUserHash(),
+				session.getCurrentState().getGroup().getShortName(), token.getDocument(),
+				new AsyncCallbackSimple<String>() {
+				    public void onSuccess(final String result) {
+					final StateToken parent = token.clone();
+					parent.setDocument(null);
+					stateManager.gotoToken(parent);
+				    }
+				});
+		    }
+		});
+	delContent.setTextDescription(i18n.t("Delete"));
+	delContent.setMustBeConfirmed(true);
+	delContent.setConfirmationTitle(i18n.t("Please confirm"));
+	delContent.setConfirmationText(i18n.t("Are you sure?"));
+
+	final ClientActionDescriptor<StateToken> go = new ClientActionDescriptor<StateToken>(AccessRolDTO.Viewer,
+		ActionPosition.itemMenu, new Slot<StateToken>() {
+		    public void onEvent(final StateToken token) {
+			stateManager.gotoToken(token);
+		    }
+		});
+	go.setTextDescription(i18n.t("Open"));
+
+	final ClientActionDescriptor<StateToken> rename = new ClientActionDescriptor<StateToken>(AccessRolDTO.Editor,
+		ActionPosition.itemMenu, new Slot<StateToken>() {
+		    public void onEvent(final StateToken stateToken) {
+			view.editItem(genId(stateToken));
+		    }
+		});
+	rename.setTextDescription(i18n.t("Rename"));
+
+	addAction(DocumentClientTool.TYPE_FOLDER, go);
+	addAction(DocumentClientTool.TYPE_FOLDER, addDoc);
+	addAction(DocumentClientTool.TYPE_FOLDER, addFolder);
+	addAction(DocumentClientTool.TYPE_FOLDER, delContainer);
+	addAction(DocumentClientTool.TYPE_FOLDER, rename);
+	addAction(DocumentClientTool.TYPE_ROOT, addDoc);
+	addAction(DocumentClientTool.TYPE_ROOT, addFolder);
+	addAction(DocumentClientTool.TYPE_DOCUMENT, go);
+	addAction(DocumentClientTool.TYPE_DOCUMENT, delContent);
+	addAction(DocumentClientTool.TYPE_DOCUMENT, rename);
+    }
+
+    // public void showContainer(final StateToken state, final ContainerDTO
+    // container, final AccessRightsDTO rights) {
+    // final StateToken stateLoc = state.clone();
+    //
+    // createTreePath(stateLoc, container.getAbsolutePath());
+    //
+    // stateLoc.setDocument(null);
+    // view.clear();
+    // final List<ContainerDTO> folders = container.getChilds();
+    // for (int index = 0; index < folders.size(); index++) {
+    // final ContainerDTO folder = folders.get(index);
+    // stateLoc.setFolder(folder.getId().toString());
+    // // view.addItem(folder.getName(), folder.getTypeId(),
+    // // stateLoc.getEncoded(), rights.isEditable());
+    // final String parentFolderId = folder.getParentFolderId() == null ? null :
+    // folder.getParentFolderId()
+    // .toString();
+    // final String token = StateToken.encode(stateLoc.getGroup(),
+    // stateLoc.getTool(), folder.getId().toString(),
+    // null);
+    // view.addItem(folder.getId(), folder.getName(), parentFolderId, "#" +
+    // token, false);
+    // }
+    //
+    // stateLoc.setFolder(container.getId().toString());
+    // final List<ContentDTO> contents = container.getContents();
+    // for (int index = 0; index < contents.size(); index++) {
+    // final ContentDTO dto = contents.get(index);
+    // stateLoc.setDocument(dto.getId().toString());
+    // // view.addItem(dto.getTitle(), dto.getTypeId(),
+    // // stateLoc.getEncoded(), rights.isEditable());
+    // final String token = StateToken.encode(stateLoc.getGroup(),
+    // stateLoc.getTool(), stateLoc.getFolder(), dto
+    // .getId().toString());
+    // view.addItem(dto.getId(), dto.getTitle(), stateLoc.getFolder(), "#" +
+    // token, true);
+    // }
+    // // view.selectItem(state.isComplete() ? state.getDocument() :
+    // // state.getFolder(), state.isComplete());
+    // }
+
+    private void createTreePath(final StateToken state, final ContainerSimpleDTO[] absolutePath) {
+	for (int i = 0; i < absolutePath.length; i++) {
+	    final ContainerSimpleDTO folder = absolutePath[i];
+	    final String parentFolderId = folder.getParentFolderId() == null ? null : folder.getParentFolderId()
+		    .toString();
+	    final StateToken folderStateToken = state.clone().setDocument(null).setFolder(folder.getId().toString());
+	    final StateToken parentStateToken = state.clone().setDocument(null).setFolder(parentFolderId);
+	    if (folder.getParentFolderId() != null) {
+		// Bad rights, draggable/droppable
+		final ContextNavigationItem parent = new ContextNavigationItem(genId(folderStateToken),
+			genId(parentStateToken), "", folder.getName(), ContentStatusDTO.publicVisible,
+			folderStateToken, false, true, null);
+		view.addItem(parent);
+	    } else {
+		// create root folder
+		view.setRootItem(genId(folderStateToken), i18n.t("contents"), folderStateToken);
+	    }
+	}
+    }
+
+    private String genId(final StateToken token) {
+	return "k-" + token.toString().replace(StateToken.SEPARATOR, "-");
+    }
+
+    private boolean isDraggable(final String typeId, final boolean administrable) {
+	return administrable && draggables.contains(typeId);
+    }
+
+    private boolean isDroppable(final String typeId, final boolean administrable) {
+	return administrable && droppables.contains(typeId);
+    }
+
+    @Deprecated
+    private void registerDragDropTypes() {
+	draggables.add(DocumentClientTool.TYPE_DOCUMENT);
+	draggables.add(DocumentClientTool.TYPE_FOLDER);
+	droppables.add(DocumentClientTool.TYPE_ROOT);
+	droppables.add(DocumentClientTool.TYPE_FOLDER);
+	droppables.add(DocumentClientTool.TYPE_DOCUMENT);
+    }
+}

Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorView.java (from rev 841, trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsView.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextItemsView.java	2008-08-11 01:20:37 UTC (rev 841)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextNavigatorView.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -0,0 +1,43 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package org.ourproject.kune.workspace.client.ui.ctx.items;
+
+import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.actions.ClientActionCollection;
+import org.ourproject.kune.platf.client.dto.StateToken;
+
+public interface ContextNavigatorView extends View {
+
+    void addItem(ContextNavigationItem contextNavigationItem);
+
+    void clear();
+
+    void editItem(String id);
+
+    void selectItem(String id);
+
+    void setBottomActions(StateToken stateToken, ClientActionCollection<StateToken> actions);
+
+    void setRootItem(String id, String text, StateToken stateToken);
+
+    void setTopActions(StateToken stateToken, ClientActionCollection<StateToken> actions);
+
+}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextTopBar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextTopBar.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ContextTopBar.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,123 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.workspace.client.ui.ctx.items;
-
-import org.ourproject.kune.platf.client.dto.ContainerSimpleDTO;
-import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.platf.client.ui.KuneUiUtils;
-import org.ourproject.kune.platf.client.ui.RoundedBorderDecorator;
-
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.MenuBar;
-import com.google.gwt.user.client.ui.PushButton;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-
-class ContextTopBar extends VerticalPanel {
-
-    public final Label currentFolder;
-    public final PushButton btnGoParent;
-    public final Image btnGoParentDisabled;
-    public final HorizontalPanel firstRow;
-    private final ContextItemsImages img;
-    private final MenuBar pathSubmenu;
-    private final I18nTranslationService i18n;
-    private final StateManager stateManager;
-
-    public ContextTopBar(final ContextItemsPresenter presenter, final I18nTranslationService i18n,
-	    final StateManager stateManager) {
-	this.i18n = i18n;
-	this.stateManager = stateManager;
-	img = ContextItemsImages.App.getInstance();
-	firstRow = new HorizontalPanel();
-	final HorizontalPanel secondRow = new HorizontalPanel();
-	final HorizontalPanel iconBarHP = new HorizontalPanel();
-	final HorizontalPanel currentFolderHP = new HorizontalPanel();
-	btnGoParent = new PushButton(img.folderGoUp().createImage(), img.folderGoUpLight().createImage());
-	btnGoParent.addClickListener(new ClickListener() {
-	    public void onClick(final Widget sender) {
-		presenter.onGoUp();
-	    }
-	});
-
-	KuneUiUtils.setQuickTip(btnGoParent, i18n.t("Go to parent folder"));
-	btnGoParentDisabled = img.folderGoUpLight().createImage();
-	final MenuBar pathMenu = new MenuBar();
-	pathSubmenu = new MenuBar(true);
-	// Layout
-	add(firstRow);
-	add(secondRow);
-	firstRow.add(iconBarHP);
-	secondRow.add(currentFolderHP);
-	// iconBarHP.add(btnGoParent);
-	final RoundedBorderDecorator buttonRounded = new RoundedBorderDecorator(pathMenu, RoundedBorderDecorator.ALL,
-		RoundedBorderDecorator.SIMPLE);
-	iconBarHP.add(buttonRounded);
-	pathMenu.addItem(img.folderpathmenu().getHTML(), true, pathSubmenu);
-	KuneUiUtils.setQuickTip(pathMenu, i18n.t("Navigation tree"));
-	currentFolderHP.add(btnGoParent);
-	currentFolderHP.add(btnGoParentDisabled);
-	currentFolder = new Label("Current Container");
-	currentFolderHP.add(currentFolder);
-
-	// Set properties
-	addStyleName("kune-NavigationBar");
-	firstRow.addStyleName("topBar");
-	firstRow.addStyleName("topBar-margin");
-	secondRow.addStyleName("topBar");
-	firstRow.setWidth("100%");
-	secondRow.setWidth("100%");
-	setCellWidth(firstRow, "100%");
-	setCellWidth(secondRow, "100%");
-	firstRow.setVerticalAlignment(VerticalPanel.ALIGN_MIDDLE);
-	iconBarHP.addStyleName("kune-topBar-iconBar");
-	iconBarHP.setCellVerticalAlignment(btnGoParent, VerticalPanel.ALIGN_MIDDLE);
-	iconBarHP.setCellVerticalAlignment(buttonRounded, VerticalPanel.ALIGN_MIDDLE);
-	pathMenu.setStyleName("pathMenu");
-	buttonRounded.setColor("AAA");
-	btnGoParent.addStyleName("kune-pointer");
-    }
-
-    public void setAbsolutePath(final ContainerSimpleDTO[] absolutePath) {
-	pathSubmenu.clearItems();
-	String indent = "";
-	for (int i = 0; i < absolutePath.length; i++) {
-	    final ContainerSimpleDTO folder = absolutePath[i];
-	    String folderName = folder.getName();
-	    if (i == 0) {
-		// We translate root folders
-		folderName = i18n.t(folderName);
-	    }
-	    pathSubmenu.addItem(indent + img.folder().getHTML() + "&nbsp;" + folderName, true, new Command() {
-		public void execute() {
-		    stateManager.gotoContainer(folder.getId());
-		}
-	    });
-	    indent = indent + "&nbsp&nbsp;";
-	}
-    }
-
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ControlsPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ControlsPanel.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ControlsPanel.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,29 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.workspace.client.ui.ctx.items;
-
-import com.google.gwt.user.client.ui.VerticalPanel;
-
-class ControlsPanel extends VerticalPanel {
-
-    public ControlsPanel() {
-    }
-}

Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ItemsPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ItemsPanel.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/ctx/items/ItemsPanel.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -1,60 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-package org.ourproject.kune.workspace.client.ui.ctx.items;
-
-import java.util.HashMap;
-
-import org.ourproject.kune.platf.client.ui.EditableClickListener;
-import org.ourproject.kune.platf.client.ui.EditableIconLabel;
-
-import com.google.gwt.user.client.ui.AbstractImagePrototype;
-import com.google.gwt.user.client.ui.VerticalPanel;
-
-class ItemsPanel extends VerticalPanel {
-    private final HashMap<String, AbstractImagePrototype> fileIcons;
-    private final ContextItemsPresenter presenter;
-
-    public ItemsPanel(final ContextItemsPresenter presenter) {
-        this.presenter = presenter;
-        addStyleName("kune-NavigationBar");
-        addStyleName("Items");
-        fileIcons = new HashMap<String, AbstractImagePrototype>();
-    }
-
-    public void add(final String name, final String type, final String token, final boolean editable) {
-        // IconHyperlink item = new IconHyperlink((AbstractImagePrototype)
-        // fileIcons.get(type), name, event);
-        EditableIconLabel item = new EditableIconLabel(fileIcons.get(type), name, token, true,
-                new EditableClickListener() {
-                    public void onEdited(String text) {
-                        presenter.onTitleRename(text, token);
-                    }
-                });
-        item.setEditable(editable);
-        item.addStyleName("Items");
-        item.addStyleName("kune-floatleft");
-        add(item);
-    }
-
-    public void registerType(final String typeName, final AbstractImagePrototype image) {
-        fileIcons.put(typeName, image);
-    }
-}

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/EntityWorkspace.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/EntityWorkspace.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/EntityWorkspace.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -11,17 +11,17 @@
 
 public class EntityWorkspace extends DefaultBorderLayout {
     private final Panel content;
-    private final Panel container;
+    private final Panel context;
     private final TitleBar title;
     private final TitleBar subTitle;
     private final TitleBar bottom;
     private final Toolbar contentTopBar;
     private final Toolbar contentBottomBar;
-    private final Toolbar containerTopBar;
-    private final Toolbar containerBottomBar;
+    private final Toolbar contextTopBar;
+    private final Toolbar contextBottomBar;
     private final RoundedPanel roundedTitle;
     private final RoundedPanel roundedBottom;
-    private final DefaultBorderLayout containerWrap;
+    private final DefaultBorderLayout contextWrap;
 
     public EntityWorkspace() {
 	final Panel titles = new Panel();
@@ -48,37 +48,36 @@
 	bottomPanel.add(roundedBottom, new AnchorLayoutData("100% -" + DEF_TOOLBAR_HEIGHT));
 
 	final DefaultBorderLayout contentWrap = new DefaultBorderLayout();
-	containerWrap = new DefaultBorderLayout();
+	contextWrap = new DefaultBorderLayout();
 	contentWrap.setBorder(true);
-	containerWrap.setBorder(true);
+	contextWrap.setBorder(true);
 	content = new Panel();
-	container = new Panel();
+	context = new Panel();
 	content.setBorder(false);
-	container.setBorder(false);
-	container.setCollapsible(true);
-	content.setPaddings(5);
-	container.setPaddings(5);
+	context.setBorder(false);
+	context.setCollapsible(true);
+	content.setPaddings(7);
 	content.setAutoScroll(true);
-	container.setAutoScroll(true);
+	context.setAutoScroll(true);
 
 	contentTopBar = new Toolbar();
 	contentBottomBar = new Toolbar();
-	containerTopBar = new Toolbar();
-	containerBottomBar = new Toolbar();
+	contextTopBar = new Toolbar();
+	contextBottomBar = new Toolbar();
 	contentTopBar.addStyleName("k-toolbar-bottom-line");
 	contentBottomBar.addStyleName("k-toolbar-top-line");
-	containerTopBar.addStyleName("k-toolbar-bottom-line");
-	containerBottomBar.addStyleName("k-toolbar-top-line");
+	contextTopBar.addStyleName("k-toolbar-bottom-line");
+	contextBottomBar.addStyleName("k-toolbar-top-line");
 	contentWrap.add(contentTopBar.getPanel(), Position.NORTH, false, DEF_TOOLBAR_HEIGHT);
-	containerWrap.add(containerTopBar.getPanel(), Position.NORTH, false, DEF_TOOLBAR_HEIGHT);
+	contextWrap.add(contextTopBar.getPanel(), Position.NORTH, false, DEF_TOOLBAR_HEIGHT);
 	contentWrap.add(content, Position.CENTER);
-	containerWrap.add(container, Position.CENTER);
+	contextWrap.add(context, Position.CENTER);
 	contentWrap.add(contentBottomBar.getPanel(), Position.SOUTH, false, DEF_TOOLBAR_HEIGHT);
-	containerWrap.add(containerBottomBar.getPanel(), Position.SOUTH, false, DEF_TOOLBAR_HEIGHT);
+	contextWrap.add(contextBottomBar.getPanel(), Position.SOUTH, false, DEF_TOOLBAR_HEIGHT);
 
 	add(titles, DefaultBorderLayout.Position.NORTH, DEF_TOOLBAR_HEIGHT * 2);
 	add(contentWrap.getPanel(), DefaultBorderLayout.Position.CENTER);
-	add(containerWrap.getPanel(), DefaultBorderLayout.Position.EAST, true, 175);
+	add(contextWrap.getPanel(), DefaultBorderLayout.Position.EAST, true, 175);
 	add(bottomPanel, DefaultBorderLayout.Position.SOUTH, DEF_TOOLBAR_HEIGHT + 2);
     }
 
@@ -86,14 +85,6 @@
 	return bottom;
     }
 
-    public Toolbar getContainerBottomBar() {
-	return containerBottomBar;
-    }
-
-    public Toolbar getContainerTopBar() {
-	return containerTopBar;
-    }
-
     public Toolbar getContentBottomBar() {
 	return contentBottomBar;
     }
@@ -102,6 +93,14 @@
 	return contentTopBar;
     }
 
+    public Toolbar getContextBottomBar() {
+	return contextBottomBar;
+    }
+
+    public Toolbar getContextTopBar() {
+	return contextTopBar;
+    }
+
     public TitleBar getSubTitle() {
 	return subTitle;
     }
@@ -110,14 +109,14 @@
 	return title;
     }
 
-    public void setContainer(final Widget widget) {
-	setPanel(container, widget);
-    }
-
     public void setContent(final Widget widget) {
 	setPanel(content, widget);
     }
 
+    public void setContext(final Widget widget) {
+	setPanel(context, widget);
+    }
+
     public void setTheme(final WsTheme oldTheme, final WsTheme newTheme) {
 	final String themeS = newTheme.toString();
 	if (oldTheme != null) {
@@ -126,7 +125,7 @@
 	    subTitle.removeStyleDependentName(previousThemeS);
 	    bottom.removeStyleDependentName(previousThemeS);
 	    super.removeStyle("k-entityworkspace-" + previousThemeS);
-	    container.removeStyleName("k-entity-container-" + previousThemeS);
+	    context.removeStyleName("k-entity-context-" + previousThemeS);
 	}
 	super.addStyle("k-entityworkspace-" + newTheme);
 	roundedTitle.setCornerStyleName("k-entity-title-rd-" + newTheme);
@@ -134,6 +133,6 @@
 	title.addStyleDependentName(themeS);
 	subTitle.addStyleDependentName(themeS);
 	bottom.addStyleDependentName(themeS);
-	container.addStyleName("k-entity-container-" + newTheme);
+	context.addStyleName("k-entity-context-" + newTheme);
     }
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/Toolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/Toolbar.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/Toolbar.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -26,9 +26,7 @@
 
     public void add(final Widget widget) {
 	childPanel.add(widget);
-	if (container.isRendered()) {
-	    container.doLayout(false);
-	}
+	doLayoutIfNeeded();
     }
 
     public Widget addFill() {
@@ -57,8 +55,24 @@
 	container.addClass(cls);
     }
 
+    public void doLayoutIfNeeded() {
+	if (container.isRendered()) {
+	    container.doLayout(false);
+	}
+    }
+
     public Panel getPanel() {
 	return container;
     }
 
+    public void remove(final Widget widget) {
+	childPanel.remove(widget);
+	doLayoutIfNeeded();
+    }
+
+    public void removeAll() {
+	childPanel.clear();
+	doLayoutIfNeeded();
+    }
+
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/WorkspaceSkeleton.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/WorkspaceSkeleton.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/WorkspaceSkeleton.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -3,7 +3,9 @@
 import org.ourproject.kune.platf.client.ui.DefaultBorderLayout;
 import org.ourproject.kune.workspace.client.ui.newtmp.themes.WsTheme;
 
-import com.google.gwt.user.client.ui.Label;
+import com.calclab.suco.client.signal.Slot0;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
 import com.google.gwt.user.client.ui.RootPanel;
 import com.google.gwt.user.client.ui.Widget;
 import com.gwtext.client.core.ExtElement;
@@ -32,7 +34,6 @@
 	mainPanel.add(sitebar, DefaultBorderLayout.Position.NORTH, DefaultBorderLayout.DEF_TOOLBAR_HEIGHT);
 	mainPanel.add(entity.getPanel(), DefaultBorderLayout.Position.CENTER);
 	container.add(mainPanel.getPanel());
-	getEntityWorkspace().getContentTopBar().add(new Label("Sorry, kune workspace under heavy refactorization"));
 	new Viewport(container);
     }
 
@@ -40,6 +41,22 @@
 	entity.addToEntityMainHeader(widget);
     }
 
+    public void askConfirmation(final String title, final String message, final Slot0 onConfirmed, final Slot0 onCancel) {
+	MessageBox.confirm(title, message, new MessageBox.ConfirmCallback() {
+	    public void execute(final String btnID) {
+		if (btnID.equals("yes")) {
+		    DeferredCommand.addCommand(new Command() {
+			public void execute() {
+			    onConfirmed.onEvent();
+			}
+		    });
+		} else {
+		    onCancel.onEvent();
+		}
+	    }
+	});
+    }
+
     public EntitySummary getEntitySummary() {
 	return entity.getEntitySummary();
     }
@@ -64,6 +81,15 @@
 	extRootBody.mask(message, "x-mask-loading");
     }
 
+    public void promptMessage(final String title, final String message, final Slot0 onEnter) {
+	MessageBox.prompt(title, message, new MessageBox.PromptCallback() {
+	    public void execute(final String btnID, final String text) {
+		// FIXME: use btnID
+		onEnter.onEvent();
+	    }
+	});
+    }
+
     public void setTheme(final WsTheme oldTheme, final WsTheme newTheme) {
 	entity.setTheme(oldTheme, newTheme);
     }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/themes/WsThemePresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/themes/WsThemePresenter.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/themes/WsThemePresenter.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -29,6 +29,7 @@
 	session.onInitDataReceived(new Slot<InitDataDTO>() {
 	    public void onEvent(final InitDataDTO initData) {
 		view.setThemes(initData.getWsThemes());
+		setTheme(new WsTheme(initData.getWsThemes()[0]));
 	    }
 	});
 	stateManager.onStateChanged(new Slot<StateDTO>() {

Modified: trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java	2008-08-30 16:58:14 UTC (rev 843)
+++ trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java	2008-09-07 14:07:16 UTC (rev 844)
@@ -64,7 +64,7 @@
         viewReset();
         EasyMock.replay(view);
         listener.onSave("foo");
-        listener.onCancel();
+        listener.onEditCancelled();
         EasyMock.replay(listener);
         presenter.init(view);
         presenter.onEdit();




More information about the kune-commits mailing list