[kune-commits] r834 - in trunk: img src/main/java/org/ourproject/kune/app/client src/main/java/org/ourproject/kune/app/public/css src/main/java/org/ourproject/kune/chat/client src/main/java/org/ourproject/kune/docs/client src/main/java/org/ourproject/kune/platf/client/app src/main/java/org/ourproject/kune/platf/client/dto src/main/java/org/ourproject/kune/platf/client/rpc src/main/java/org/ourproject/kune/platf/client/services src/main/java/org/ourproject/kune/platf/client/ui src/main/java/org/ourproject/kune/platf/client/ui/gridmenu src/main/java/org/ourproject/kune/platf/server/auth src/main/java/org/ourproject/kune/platf/server/domain src/main/java/org/ourproject/kune/platf/server/init src/main/java/org/ourproject/kune/platf/server/manager src/main/java/org/ourproject/kune/platf/server/manager/impl src/main/java/org/ourproject/kune/platf/server/mapper src/main/java/org/ourproject/kune/platf/server/rpc src/main/java/org/ourproject/kune/workspace/client/newgroup src/main/java/org/ourproject/kune/workspace/client/search src/main/java/org/ourproject/kune/workspace/client/socialnet src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/entitylogo src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel src/main/resources src/test/java/org/ourproject/kune/platf/integration src/test/java/org/ourproject/kune/platf/integration/kuneservice src/test/java/org/ourproject/kune/platf/server/auth src/test/java/org/ourproject/kune/platf/server/manager src/test/java/org/ourproject/kune/testhelper/ctx

vjrj vjrj at ourproject.org
Fri Aug 8 06:20:31 CEST 2008


Author: vjrj
Date: 2008-08-08 06:20:12 +0200 (Fri, 08 Aug 2008)
New Revision: 834

Added:
   trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupType.java
   trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkRequestResult.java
   trunk/src/main/java/org/ourproject/kune/platf/server/auth/ContentAuthorizated.java
   trunk/src/main/java/org/ourproject/kune/platf/server/auth/ContentAuthorizatedMethodInterceptor.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherType.java
   trunk/src/test/java/org/ourproject/kune/platf/server/auth/AuthorizatedMethodInterceptorTest.java
Removed:
   trunk/img/emite-groups-logo.svg
   trunk/img/emite-groups.png
   trunk/src/main/java/org/ourproject/kune/platf/server/domain/GroupType.java
   trunk/src/main/java/org/ourproject/kune/platf/server/mapper/GroupTypeConverter.java
Modified:
   trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java
   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/app/public/css/workspace.css
   trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java
   trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java
   trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java
   trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java
   trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java
   trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java
   trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java
   trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDTO.java
   trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkService.java
   trunk/src/main/java/org/ourproject/kune/platf/client/services/Kune.java
   trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java
   trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
   trunk/src/main/java/org/ourproject/kune/platf/client/ui/DefaultBorderLayout.java
   trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridMenuPanel.java
   trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java
   trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java
   trunk/src/main/java/org/ourproject/kune/platf/server/manager/SocialNetworkManager.java
   trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/GroupManagerDefault.java
   trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java
   trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherView.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/search/GroupLiveSearchPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/search/UserLiveSearcherPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/entitylogo/EntityLogoPanel.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/Entity.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/EntitySummary.java
   trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/WorkspaceSkeleton.java
   trunk/src/main/resources/dozerBeanMapping.xml
   trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java
   trunk/src/test/java/org/ourproject/kune/platf/integration/kuneservice/GroupServiceTest.java
   trunk/src/test/java/org/ourproject/kune/platf/server/manager/GroupManagerTest.java
   trunk/src/test/java/org/ourproject/kune/platf/server/manager/SocialNetworkManagerTest.java
   trunk/src/test/java/org/ourproject/kune/testhelper/ctx/DomainContext.java
Log:
Complete - task 37: Resolve SN Rights problems 

Enums use in UI. Some SN adjusts.

Deleted: trunk/img/emite-groups-logo.svg
===================================================================
--- trunk/img/emite-groups-logo.svg	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/img/emite-groups-logo.svg	2008-08-08 04:20:12 UTC (rev 834)
@@ -1,125 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="42"
-   height="42"
-   id="svg2533"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   version="1.0"
-   inkscape:export-filename="/Users/vjrj/Desktop/emite-groups.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90"
-   sodipodi:docbase="/Users/vjrj/Desktop"
-   sodipodi:docname="emite-groups-logo.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs2535" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="9.45"
-     inkscape:cx="29.482892"
-     inkscape:cy="20"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     width="42px"
-     height="42px"
-     inkscape:window-width="756"
-     inkscape:window-height="581"
-     inkscape:window-x="354"
-     inkscape:window-y="104" />
-  <metadata
-     id="metadata2538">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <text
-       xml:space="preserve"
-       style="font-size:23.88686371px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Emblem"
-       x="-0.14885554"
-       y="28.014141"
-       id="text2516"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan2518"
-         x="-0.14885554"
-         y="28.014141"
-         dy="0 0 -0.57697296"><tspan
-   style="fill:#ff6600"
-   id="tspan2520">((</tspan>e<tspan
-   style="fill:#ff6600"
-   id="tspan2522"
-   dy="0.57697296">))</tspan></tspan></text>
-    <g
-       id="g2551"
-       transform="matrix(0.126788,0,0,0.126788,107.24045,44.350445)">
-      <g
-         transform="matrix(1.7831728,0,0,1.7831728,-79.227654,-1724.5839)"
-         id="g2524">
-        <text
-           xml:space="preserve"
-           style="font-size:49.60492325px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:89.99999762%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Emblem"
-           x="-219.35106"
-           y="817.05505"
-           id="text2526"
-           sodipodi:linespacing="89.999998%"
-           transform="scale(0.9684286,1.0326006)"><tspan
-             sodipodi:role="line"
-             x="-219.35106"
-             y="817.05505"
-             id="tspan2528">emite</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-size:23.32044411px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:89.99999762%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Emblem"
-           x="-217.47432"
-           y="839.24841"
-           id="text2530"
-           sodipodi:linespacing="89.999998%"
-           transform="scale(0.9684286,1.0326006)"><tspan
-             sodipodi:role="line"
-             x="-217.47432"
-             y="839.24841"
-             id="tspan2532">xmpp &amp; gwt</tspan></text>
-      </g>
-      <text
-         inkscape:export-ydpi="32.508678"
-         inkscape:export-xdpi="32.508678"
-         inkscape:export-filename="/home/vjrj/proyectos/ourproject.org/kune/dev/emite/emite/img/emite-ui.png"
-         transform="scale(0.9684286,1.0326006)"
-         sodipodi:linespacing="89.999998%"
-         id="text2534"
-         y="-133.38048"
-         x="-471.8595"
-         style="font-size:34.96242523px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:89.99999762%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Emblem"
-         xml:space="preserve"><tspan
-           id="tspan2536"
-           y="-133.38048"
-           x="-471.8595"
-           sodipodi:role="line">ui application</tspan></text>
-    </g>
-  </g>
-</svg>

Deleted: trunk/img/emite-groups.png
===================================================================
(Binary files differ)

Modified: trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -46,6 +46,5 @@
 
     public void onModuleLoadCont() {
 	Kune.create();
-	// RootPanel.getBodyElement().setClassName("kunebody");
     }
 }

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-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css	2008-08-08 04:20:12 UTC (rev 834)
@@ -2699,25 +2699,9 @@
   background-image: url(img/language.gif) !important;
 }
 
-.chat-icon {
-  background-image: url(img/chat.gif) !important;
-}
 
-.group-icon {
-  background-image: url(img/group.gif) !important;
-}
 
-.user-icon {
-  background-image: url(img/user.gif) !important;
-}
 
-.userf-icon {
-  background-image: url(img/userf.gif) !important;
-}
-
-
-
-
 /* RTE Text editor */
 .kune-TexEditorPanel-TextArea {
   margin: 3px;
@@ -3484,13 +3468,13 @@
 }
 
 .k-toolselectoritem-notsel a {
-  color: blue;
+  color: #0000FF;
   padding: 0 9px;
   text-decoration: none;
 }
 
 .k-toolselectoritem-notsel a:hover {
-  text-decoration: none;
+  text-decoration: underline;
 }
 
 

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-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css	2008-08-08 04:20:12 UTC (rev 834)
@@ -618,11 +618,11 @@
 }
 
 .k-toolselectoritem-notsel a {
-  color: blue;
+  color: #0000FF;
   padding: 0 9px;
   text-decoration: none;
 }
 
 .k-toolselectoritem-notsel a:hover {
-  text-decoration: none;
+  text-decoration: underline;
 }

Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/workspace.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/workspace.css	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/workspace.css	2008-08-08 04:20:12 UTC (rev 834)
@@ -790,19 +790,3 @@
 .i18n-icon {
   background-image: url(img/language.gif) !important;
 }
-
-.chat-icon {
-  background-image: url(img/chat.gif) !important;
-}
-
-.group-icon {
-  background-image: url(img/group.gif) !important;
-}
-
-.user-icon {
-  background-image: url(img/user.gif) !important;
-}
-
-.userf-icon {
-  background-image: url(img/userf.gif) !important;
-}

Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientNewModule.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -35,7 +35,6 @@
 public class ChatClientNewModule extends AbstractModule {
 
     public ChatClientNewModule() {
-	super(ChatClientNewModule.class);
     }
 
     @Override

Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -65,7 +65,7 @@
 			initData.getChatRoomHost());
 		chat = new ChatEngineXmpp(emiteUIDialog, chatOptions, i18n, ws);
 		groupMembersSummaryProvider.get().addUserOperation(
-			new MenuItem<GroupDTO>("images/chat-basic.gif", i18n.t("Start a chat with this member"),
+			new MenuItem<GroupDTO>("images/new-chat.gif", i18n.t("Start a chat with this member"),
 				new Slot<GroupDTO>() {
 				    public void onEvent(final GroupDTO group) {
 					emiteUIDialog.show();

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-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineXmpp.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -82,7 +82,8 @@
 	if (traybarButton == null) {
 	    traybarButton = new ToolbarButton();
 	    traybarButton.setTooltip(i18n.t("Show/hide the chat window"));
-	    traybarButton.setIcon("images/emite-chat.gif");
+	    // traybarButton.setIcon("images/emite-chat.gif");
+	    traybarButton.setIcon("images/e-icon.gif");
 	    traybarButton.addListener(new ButtonListenerAdapter() {
 		@Override
 		public void onClick(final Button button, final EventObject e) {
@@ -92,9 +93,18 @@
 			emiteDialog.show();
 		    }
 		}
-
 	    });
 	    ws.getSiteTraybar().addButton(traybarButton);
+	    emiteDialog.onChatAttended(new Slot<String>() {
+		public void onEvent(final String parameter) {
+		    traybarButton.setIcon("images/e-icon.gif");
+		}
+	    });
+	    emiteDialog.onChatUnattendedWithActivity(new Slot<String>() {
+		public void onEvent(final String parameter) {
+		    traybarButton.setIcon("images/e-icon-a.gif");
+		}
+	    });
 	}
 	emiteDialog.setEnableStatusUI(true);
 	emiteDialog.hide();

Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientNewModule.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -45,7 +45,6 @@
 public class DocumentClientNewModule extends AbstractModule {
 
     public DocumentClientNewModule() {
-	super(DocumentClientNewModule.class);
     }
 
     @Override

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -24,7 +24,6 @@
 import java.util.HashMap;
 
 import org.ourproject.kune.platf.client.dispatch.ActionEvent;
-import org.ourproject.kune.platf.client.state.StateManager;
 import org.ourproject.kune.platf.client.tool.ClientTool;
 
 import com.calclab.suco.client.signal.Slot0;
@@ -33,7 +32,7 @@
 
     ClientTool getTool(String toolName);
 
-    void init(StateManager stateManager, HashMap<String, ClientTool> tools);
+    void init(HashMap<String, ClientTool> tools);
 
     void onApplicationStart(Slot0 slot);
 

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -32,7 +32,6 @@
 import org.ourproject.kune.platf.client.rpc.SiteServiceAsync;
 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.ClientTool;
 import org.ourproject.kune.platf.client.ui.WindowUtils;
 import org.ourproject.kune.platf.client.utils.PrefetchUtilities;
@@ -54,7 +53,6 @@
     private final Session session;
     private final Signal0 onApplicationStart;
     private final Signal0 onApplicationStop;
-    private StateManager stateManager;
 
     public ApplicationDefault(final Session session, final KuneErrorHandler errorHandler, final WorkspaceSkeleton ws) {
 	this.session = session;
@@ -76,8 +74,7 @@
 	return tools.get(toolName);
     }
 
-    public void init(final StateManager stateManager, final HashMap<String, ClientTool> tools) {
-	this.stateManager = stateManager;
+    public void init(final HashMap<String, ClientTool> tools) {
 	this.tools = tools;
     }
 
@@ -127,7 +124,6 @@
 		checkChatDomain(initData.getChatDomain());
 		session.setInitData(initData);
 		session.setCurrentUserInfo(initData.getUserInfo());
-		stateManager.reload();
 		RootPanel.get("kuneinitialcurtain").setVisible(false);
 	    }
 

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -20,20 +20,16 @@
 
 package org.ourproject.kune.platf.client.dto;
 
+
 import com.google.gwt.user.client.rpc.IsSerializable;
 
 public class GroupDTO implements IsSerializable {
-    public static final String ORGANIZATION = "ORGANIZATION";
-    public static final String COMMUNITY = "COMMUNITY";
-    public static final String PROJECT = "PROJECT";
-    public static final String ORPHANED_PROJECT = "ORPHANED_PROJECT";
-    public static final String PERSONAL = "PERSONAL";
 
     private Long id;
     private String shortName;
     private String longName;
     private String publicDesc;
-    private String type;
+    private GroupType type;
     private String defaultToolName;
     private Long defaultFolderId;
     private Long defaultContentId;
@@ -42,10 +38,10 @@
     private String tags;
 
     public GroupDTO() {
-	this(null, null, null, ORGANIZATION);
+	this(null, null, null, GroupType.ORGANIZATION);
     }
 
-    public GroupDTO(final String shortName, final String longName, final String publicDesc, final String type) {
+    public GroupDTO(final String shortName, final String longName, final String publicDesc, final GroupType type) {
 	this.shortName = shortName;
 	this.longName = longName;
 	this.publicDesc = publicDesc;
@@ -158,7 +154,7 @@
 	return tags;
     }
 
-    public String getType() {
+    public GroupType getType() {
 	return type;
     }
 
@@ -217,7 +213,7 @@
 	this.tags = tags;
     }
 
-    public void setType(final String type) {
+    public void setType(final GroupType type) {
 	this.type = type;
     }
 

Copied: trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupType.java (from rev 827, trunk/src/main/java/org/ourproject/kune/platf/server/domain/GroupType.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/GroupType.java	2008-08-05 01:27:25 UTC (rev 827)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupType.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -0,0 +1,26 @@
+/*
+ *
+ * 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.platf.client.dto;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+public enum GroupType implements IsSerializable {
+    ORGANIZATION, COMMUNITY, PROJECT, ORPHANED_PROJECT, PERSONAL
+}

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDTO.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDTO.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -23,10 +23,6 @@
 
 public class SocialNetworkDTO implements IsSerializable {
 
-    public static final String REQ_JOIN_WAITING_MODERATION = "MODERATED";
-    public static final String REQ_JOIN_ACEPTED = "ACEPTED";
-    public static final String REQ_JOIN_DENIED = "DENIED";
-
     AccessListsDTO accessLists;
 
     GroupListDTO pendingCollaborators;
@@ -40,14 +36,14 @@
 	return accessLists;
     }
 
-    public void setAccessLists(final AccessListsDTO accessLists) {
-	this.accessLists = accessLists;
-    }
-
     public GroupListDTO getPendingCollaborators() {
 	return pendingCollaborators;
     }
 
+    public void setAccessLists(final AccessListsDTO accessLists) {
+	this.accessLists = accessLists;
+    }
+
     public void setPendingCollaborators(final GroupListDTO pendingCollaborators) {
 	this.pendingCollaborators = pendingCollaborators;
     }

Added: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkRequestResult.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkRequestResult.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkRequestResult.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -0,0 +1,7 @@
+package org.ourproject.kune.platf.client.dto;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+public enum SocialNetworkRequestResult implements IsSerializable {
+    accepted, denied, moderated
+}

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkService.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkService.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkService.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -21,6 +21,7 @@
 
 import org.ourproject.kune.platf.client.dto.ParticipationDataDTO;
 import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult;
 import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
 import org.ourproject.kune.platf.client.errors.DefaultException;
 
@@ -50,7 +51,7 @@
 
     ParticipationDataDTO getParticipation(String hash, String groupShortName) throws DefaultException;
 
-    String requestJoinGroup(String hash, String groupShortName) throws DefaultException;
+    SocialNetworkRequestResult requestJoinGroup(String hash, String groupShortName) throws DefaultException;
 
     SocialNetworkResultDTO setAdminAsCollab(String hash, String groupShortName, String groupToSetCollabShortName)
 	    throws DefaultException;

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/Kune.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/Kune.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/Kune.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -24,12 +24,13 @@
 import com.calclab.suco.client.container.Container;
 import com.calclab.suco.client.container.DelegatedContainer;
 import com.calclab.suco.client.modules.Module;
+import com.calclab.suco.client.modules.ModuleManager.ProviderRegisterStrategy;
 
 public class Kune extends DelegatedContainer {
 
     public static Kune create(final Module... modules) {
 	final Container container = Suco.create(modules);
-	Suco.add(container, new KuneModule());
+	Suco.install(container, ProviderRegisterStrategy.registerOnlyIfNotRegistered, new KuneModule());
 	return container.getInstance(Kune.class);
     }
 

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -37,6 +37,7 @@
 import com.calclab.suco.client.signal.Signal0;
 import com.calclab.suco.client.signal.Slot0;
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException;
 
 public class KuneErrorHandler {
     private final Session session;
@@ -83,6 +84,8 @@
 	    logException(e);
 	    Site.error(i18n.t("Group not found"));
 	    stateManagerProvider.get().gotoToken("");
+	} catch (final IncompatibleRemoteServiceException e) {
+	    Site.error(i18n.t("Your browser is outdated from the server software. Please reload this page."));
 	} catch (final ContentNotFoundException e) {
 	    logException(e);
 	    Site.error(i18n.t("Content not found"));

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-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -133,6 +133,7 @@
 import com.calclab.emiteuimodule.client.EmiteUIModule;
 import com.calclab.suco.client.container.Container;
 import com.calclab.suco.client.modules.AbstractModule;
+import com.calclab.suco.client.modules.ModuleManager.ProviderRegisterStrategy;
 import com.calclab.suco.client.provider.Factory;
 import com.calclab.suco.client.scopes.SingletonScope;
 import com.calclab.suco.client.signal.Slot;
@@ -143,9 +144,6 @@
 import com.google.gwt.user.client.rpc.ServiceDefTarget;
 
 public class KuneModule extends AbstractModule {
-    public KuneModule() {
-	super(KuneModule.class);
-    }
 
     @Override
     public void onLoad() {
@@ -594,7 +592,8 @@
 	    }
 	});
 
-	load(new EmiteUIModule(), new DocumentClientNewModule(), new ChatClientNewModule());
+	install(ProviderRegisterStrategy.registerOnlyIfNotRegistered, new EmiteUIModule(),
+		new DocumentClientNewModule(), new ChatClientNewModule());
 
 	$(SitePublicSpaceLink.class);
 	$(SiteMessage.class);
@@ -632,7 +631,7 @@
 	});
 
 	final KunePlatform platform = $(KunePlatform.class);
-	$(Application.class).init($(StateManager.class), platform.getIndexedTools());
+	$(Application.class).init(platform.getIndexedTools());
 	$(Application.class).subscribeActions(platform.getActions());
 	$(Application.class).start();
 

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/DefaultBorderLayout.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/DefaultBorderLayout.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/DefaultBorderLayout.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -67,7 +67,7 @@
 	panel.add(widget);
 	if (panel.isRendered()) {
 	    panel.syncSize();
-	    panel.doLayout();
+	    panel.doLayout(false);
 	}
 	doLayoutIfNeeded();
     }
@@ -127,4 +127,8 @@
 	add(panel, widget);
 	doLayoutIfNeeded();
     }
+
+    public void syncSize() {
+	mainPanel.syncSize();
+    }
 }

Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridMenuPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridMenuPanel.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridMenuPanel.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -22,8 +22,10 @@
 import com.gwtext.client.dd.DropTarget;
 import com.gwtext.client.dd.DropTargetConfig;
 import com.gwtext.client.util.Format;
+import com.gwtext.client.widgets.Component;
 import com.gwtext.client.widgets.Panel;
 import com.gwtext.client.widgets.Toolbar;
+import com.gwtext.client.widgets.event.BoxComponentListenerAdapter;
 import com.gwtext.client.widgets.grid.CellMetadata;
 import com.gwtext.client.widgets.grid.ColumnConfig;
 import com.gwtext.client.widgets.grid.ColumnModel;
@@ -107,6 +109,12 @@
 	}
 	menuMap = new HashMap<String, GridMenu<T>>();
 	recordMap = new HashMap<T, Record>();
+	super.addListener(new BoxComponentListenerAdapter() {
+	    @Override
+	    public void onRender(final Component component) {
+		// Log.warn("Render grid -------------------");
+	    }
+	});
 	createGrid(emptyText, gridDragConfiguration, gridDropConfiguration);
     }
 
@@ -168,6 +176,7 @@
     public void doLayout(final boolean shallow) {
 	// Grid rendered problems with shallow false
 	super.doLayout();
+	grid.doLayout();
     }
 
     public void doLayoutIfNeeded() {
@@ -195,9 +204,7 @@
     }
 
     public void removeAll() {
-	if (grid != null) {
-	    store.removeAll();
-	}
+	store.removeAll();
 	recordMap.clear();
 	menuMap.clear();
     }
@@ -223,12 +230,10 @@
 
     @Override
     public void setWidth(final int width) {
-	if (grid != null) {
-	    // grid.setWidth(width - 27);
-	    grid.setWidth(width - 27);
-	    // super.setWidth(width - 11);
-	    doLayoutIfNeeded();
-	}
+	// grid.setWidth(width - 27);
+	grid.setWidth(width - 27);
+	// super.setWidth(width - 11);
+	doLayoutIfNeeded();
     }
 
     public void sort() {
@@ -455,4 +460,5 @@
 	final Record record = store.getRecordAt(rowIndex);
 	onDoubleClick.fire(record.getAsString(ID));
     }
+
 }

Added: trunk/src/main/java/org/ourproject/kune/platf/server/auth/ContentAuthorizated.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/auth/ContentAuthorizated.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/auth/ContentAuthorizated.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -0,0 +1,44 @@
+/*
+ *
+ * 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.platf.server.auth;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import org.ourproject.kune.platf.server.access.AccessType;
+
+import com.google.inject.BindingAnnotation;
+
+/**
+ * Use in RPC methods, for instance: <code>
+ * Authorizated(authLevelRequired = AuthLevelRequired.COLLAB, checkContent = true) </code>
+ * 
+ * The first parameter in the method must be the userHash, the second parameter
+ * must be a content token
+ * 
+ */
+ at BindingAnnotation
+ at Retention(RetentionPolicy.RUNTIME)
+public @interface ContentAuthorizated {
+
+    AccessType accessTypeRequired() default AccessType.READ;
+
+}

Added: trunk/src/main/java/org/ourproject/kune/platf/server/auth/ContentAuthorizatedMethodInterceptor.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/auth/ContentAuthorizatedMethodInterceptor.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/auth/ContentAuthorizatedMethodInterceptor.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -0,0 +1,85 @@
+/*
+ *
+ * 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.platf.server.auth;
+
+import javax.persistence.NoResultException;
+
+import org.aopalliance.intercept.MethodInterceptor;
+import org.aopalliance.intercept.MethodInvocation;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.errors.AccessViolationException;
+import org.ourproject.kune.platf.client.errors.ContentNotFoundException;
+import org.ourproject.kune.platf.server.UserSession;
+import org.ourproject.kune.platf.server.access.AccessService;
+import org.ourproject.kune.platf.server.access.AccessType;
+import org.ourproject.kune.platf.server.domain.Content;
+import org.ourproject.kune.platf.server.domain.Group;
+import org.ourproject.kune.platf.server.domain.User;
+import org.ourproject.kune.platf.server.manager.GroupManager;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class ContentAuthorizatedMethodInterceptor implements MethodInterceptor {
+
+    @Inject
+    Provider<UserSession> userSessionProvider;
+    @Inject
+    Provider<GroupManager> groupManagerProvider;
+    @Inject
+    Provider<AccessService> accessServiceProvider;
+
+    public Object invoke(final MethodInvocation invocation) throws Throwable {
+	final Object[] arguments = invocation.getArguments();
+	final String groupShortName = (String) arguments[1];
+
+	final UserSession userSession = userSessionProvider.get();
+	final GroupManager groupManager = groupManagerProvider.get();
+	final AccessService accessService = accessServiceProvider.get();
+
+	final ContentAuthorizated authoAnnotation = invocation.getStaticPart().getAnnotation(ContentAuthorizated.class);
+	final AccessType accessType = authoAnnotation.accessTypeRequired();
+
+	final User user = userSession.getUser();
+	Group group = Group.NO_GROUP;
+	try {
+	    group = groupManager.findByShortName(groupShortName);
+	} catch (final NoResultException e) {
+	    // continue, and check later
+	}
+	final StateToken contentToken = (StateToken) arguments[2];
+	final Long contentId = parseId(contentToken.getDocument());
+
+	final Content content = accessService.accessToContent(contentId, user, accessType);
+	if (!content.getContainer().getOwner().equals(group)) {
+	    throw new AccessViolationException();
+	}
+	final Object result = invocation.proceed();
+	return result;
+    }
+
+    private Long parseId(final String documentId) throws ContentNotFoundException {
+	try {
+	    return new Long(documentId);
+	} catch (final NumberFormatException e) {
+	    throw new ContentNotFoundException();
+	}
+    }
+}

Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -42,6 +42,7 @@
 import org.hibernate.search.annotations.Store;
 import org.hibernate.validator.Length;
 import org.hibernate.validator.Pattern;
+import org.ourproject.kune.platf.client.dto.GroupType;
 
 import com.google.inject.name.Named;
 import com.wideplay.warp.persist.dao.Finder;

Deleted: trunk/src/main/java/org/ourproject/kune/platf/server/domain/GroupType.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/GroupType.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/GroupType.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -1,24 +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.platf.server.domain;
-
-public enum GroupType {
-    ORGANIZATION, COMMUNITY, PROJECT, ORPHANED_PROJECT, PERSONAL
-}

Modified: trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -24,11 +24,11 @@
 
 import javax.persistence.NoResultException;
 
+import org.ourproject.kune.platf.client.dto.GroupType;
 import org.ourproject.kune.platf.client.errors.UserMustBeLoggedException;
 import org.ourproject.kune.platf.server.content.ContentManager;
 import org.ourproject.kune.platf.server.domain.Content;
 import org.ourproject.kune.platf.server.domain.Group;
-import org.ourproject.kune.platf.server.domain.GroupType;
 import org.ourproject.kune.platf.server.domain.I18nCountry;
 import org.ourproject.kune.platf.server.domain.I18nLanguage;
 import org.ourproject.kune.platf.server.domain.I18nTranslation;

Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/SocialNetworkManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/SocialNetworkManager.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/SocialNetworkManager.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -20,6 +20,7 @@
 
 package org.ourproject.kune.platf.server.manager;
 
+import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult;
 import org.ourproject.kune.platf.client.errors.AccessViolationException;
 import org.ourproject.kune.platf.client.errors.DefaultException;
 import org.ourproject.kune.platf.server.ParticipationData;
@@ -47,7 +48,7 @@
 
     ParticipationData findParticipation(User user, Group group) throws DefaultException;
 
-    String requestToJoin(User user, Group inGroup) throws DefaultException;
+    SocialNetworkRequestResult requestToJoin(User user, Group inGroup) throws DefaultException;
 
     void setAdminAsCollab(User userLogged, Group group, Group inGroup) throws DefaultException;
 

Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/GroupManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/GroupManagerDefault.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/GroupManagerDefault.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -30,6 +30,7 @@
 import org.apache.lucene.queryParser.MultiFieldQueryParser;
 import org.apache.lucene.queryParser.ParseException;
 import org.apache.lucene.search.Query;
+import org.ourproject.kune.platf.client.dto.GroupType;
 import org.ourproject.kune.platf.client.errors.AccessViolationException;
 import org.ourproject.kune.platf.client.errors.EmailAddressInUseException;
 import org.ourproject.kune.platf.client.errors.GroupNameInUseException;
@@ -38,7 +39,6 @@
 import org.ourproject.kune.platf.server.domain.AdmissionType;
 import org.ourproject.kune.platf.server.domain.Group;
 import org.ourproject.kune.platf.server.domain.GroupListMode;
-import org.ourproject.kune.platf.server.domain.GroupType;
 import org.ourproject.kune.platf.server.domain.License;
 import org.ourproject.kune.platf.server.domain.SocialNetwork;
 import org.ourproject.kune.platf.server.domain.User;

Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -26,7 +26,8 @@
 
 import javax.persistence.EntityManager;
 
-import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
+import org.ourproject.kune.platf.client.dto.GroupType;
+import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult;
 import org.ourproject.kune.platf.client.errors.AccessViolationException;
 import org.ourproject.kune.platf.client.errors.AlreadyGroupMemberException;
 import org.ourproject.kune.platf.client.errors.AlreadyUserMemberException;
@@ -38,7 +39,6 @@
 import org.ourproject.kune.platf.server.domain.AdmissionType;
 import org.ourproject.kune.platf.server.domain.Group;
 import org.ourproject.kune.platf.server.domain.GroupListMode;
-import org.ourproject.kune.platf.server.domain.GroupType;
 import org.ourproject.kune.platf.server.domain.SocialNetwork;
 import org.ourproject.kune.platf.server.domain.User;
 import org.ourproject.kune.platf.server.manager.SocialNetworkManager;
@@ -171,7 +171,7 @@
 	return new ParticipationData(groupsIsAdmin, groupsIsCollab);
     }
 
-    public String requestToJoin(final User user, final Group inGroup) throws DefaultException,
+    public SocialNetworkRequestResult requestToJoin(final User user, final Group inGroup) throws DefaultException,
 	    UserMustBeLoggedException {
 	final SocialNetwork sn = inGroup.getSocialNetwork();
 	if (!User.isKnownUser(user)) {
@@ -185,7 +185,7 @@
 	checkGroupIsNotAlreadyAMember(userGroup, sn);
 	if (isModerated(admissionType)) {
 	    sn.addPendingCollaborator(userGroup);
-	    return SocialNetworkDTO.REQ_JOIN_WAITING_MODERATION;
+	    return SocialNetworkRequestResult.moderated;
 	} else if (isOpen(admissionType)) {
 	    if (inGroup.getType().equals(GroupType.ORPHANED_PROJECT)) {
 		sn.addAdmin(userGroup);
@@ -195,9 +195,9 @@
 	    } else {
 		sn.addCollaborator(userGroup);
 	    }
-	    return SocialNetworkDTO.REQ_JOIN_ACEPTED;
+	    return SocialNetworkRequestResult.accepted;
 	} else if (isClosed(admissionType)) {
-	    return SocialNetworkDTO.REQ_JOIN_DENIED;
+	    return SocialNetworkRequestResult.denied;
 	} else {
 	    throw new DefaultException("State not expected in SocialNetworkManagerDefault class");
 	}
@@ -233,7 +233,12 @@
 
 	if (sn.isAdmin(groupToUnJoin)) {
 	    if (sn.getAccessLists().getAdmins().getList().size() == 1) {
-		throw new LastAdminInGroupException();
+		if (sn.getAccessLists().getEditors().getList().size() > 0) {
+		    throw new LastAdminInGroupException();
+		} else {
+		    inGroup.setType(GroupType.ORPHANED_PROJECT);
+		    inGroup.setAdmissionType(AdmissionType.Open);
+		}
 	    }
 	    sn.removeAdmin(groupToUnJoin);
 	} else if (sn.isCollab(groupToUnJoin)) {

Deleted: trunk/src/main/java/org/ourproject/kune/platf/server/mapper/GroupTypeConverter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/mapper/GroupTypeConverter.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/mapper/GroupTypeConverter.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -1,66 +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.platf.server.mapper;
-
-import java.text.MessageFormat;
-import java.util.HashMap;
-
-import net.sf.dozer.util.mapping.MappingException;
-import net.sf.dozer.util.mapping.converters.CustomConverter;
-
-import org.ourproject.kune.platf.server.domain.GroupType;
-
-public class GroupTypeConverter implements CustomConverter {
-    private final HashMap<String, GroupType> stringToEnum;
-    private final HashMap<GroupType, String> enumToString;
-
-    public GroupTypeConverter() {
-	this.stringToEnum = new HashMap<String, GroupType>();
-	this.enumToString = new HashMap<GroupType, String>();
-	add(GroupType.PERSONAL);
-	add(GroupType.PROJECT);
-	add(GroupType.COMMUNITY);
-	add(GroupType.ORGANIZATION);
-	add(GroupType.ORPHANED_PROJECT);
-    }
-
-    @SuppressWarnings("unchecked")
-    public Object convert(final Object destination, final Object source, final Class destinationClass,
-	    final Class sourceClass) {
-	if (source == null) {
-	    return null;
-	} else if (sourceClass.equals(String.class) && destinationClass.equals(GroupType.class)) {
-	    return stringToEnum.get(source);
-	} else if (sourceClass.equals(GroupType.class) && destinationClass.equals(String.class)) {
-	    return enumToString.get(source);
-	} else {
-	    final String msg = MessageFormat.format("couldn't map {0} ({1}) to {2} ({3})", source, sourceClass,
-		    destination, destinationClass);
-	    throw new MappingException(msg);
-	}
-
-    }
-
-    private void add(final GroupType mode) {
-	enumToString.put(mode, mode.toString());
-	stringToEnum.put(mode.toString(), mode);
-    }
-
-}

Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -21,6 +21,7 @@
 
 import org.ourproject.kune.platf.client.dto.ParticipationDataDTO;
 import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult;
 import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
 import org.ourproject.kune.platf.client.errors.DefaultException;
 import org.ourproject.kune.platf.client.rpc.SocialNetworkService;
@@ -160,7 +161,8 @@
 
     @Authenticated
     @Transactional(type = TransactionType.READ_WRITE)
-    public String requestJoinGroup(final String hash, final String groupShortName) throws DefaultException {
+    public SocialNetworkRequestResult requestJoinGroup(final String hash, final String groupShortName)
+	    throws DefaultException {
 	final UserSession userSession = getUserSession();
 	final User user = userSession.getUser();
 	final Group group = groupManager.findByShortName(groupShortName);

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-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -21,6 +21,7 @@
 
 import org.ourproject.kune.platf.client.View;
 import org.ourproject.kune.platf.client.dto.GroupDTO;
+import org.ourproject.kune.platf.client.dto.GroupType;
 import org.ourproject.kune.platf.client.dto.LicenseDTO;
 import org.ourproject.kune.platf.client.dto.StateToken;
 import org.ourproject.kune.platf.client.errors.GroupNameInUseException;
@@ -151,15 +152,15 @@
 	view.setMessage(message, type);
     }
 
-    private String getTypeOfGroup() {
+    private GroupType getTypeOfGroup() {
 	if (view.isProject()) {
-	    return GroupDTO.PROJECT;
+	    return GroupType.PROJECT;
 	} else if (view.isOrphanedProject()) {
-	    return GroupDTO.ORPHANED_PROJECT;
+	    return GroupType.ORPHANED_PROJECT;
 	} else if (view.isOrganization()) {
-	    return GroupDTO.ORGANIZATION;
+	    return GroupType.ORGANIZATION;
 	} else {
-	    return GroupDTO.COMMUNITY;
+	    return GroupType.COMMUNITY;
 	}
     }
 

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherPanel.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherPanel.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -49,12 +49,12 @@
     private static final int PAGINATION_SIZE = 10;
     private final EntityLiveSearcherPresenter presenter;
     private BasicDialog dialog;
-    private final int searchType;
+    private final EntityLiveSearcherType searchType;
     private FormPanel searchForm;
     private final I18nTranslationService i18n;
 
-    public EntityLiveSearcherPanel(final EntityLiveSearcherPresenter presenter, final int searchType,
-	    final I18nTranslationService i18n) {
+    public EntityLiveSearcherPanel(final EntityLiveSearcherPresenter presenter,
+	    final EntityLiveSearcherType searchType, final I18nTranslationService i18n) {
 	this.presenter = presenter;
 	this.searchType = searchType;
 	this.i18n = i18n;
@@ -77,9 +77,9 @@
 	dialog.center();
     }
 
-    private void createGroupSearchDialog(final int searchType) {
+    private void createGroupSearchDialog(final EntityLiveSearcherType searchType) {
 	String title;
-	if (searchType == EntityLiveSearcherView.SEARCH_GROUPS) {
+	if (searchType.equals(EntityLiveSearcherType.groups)) {
 	    title = i18n.t("Search existing users and groups");
 	} else {
 	    title = i18n.t("Search existing users");
@@ -90,10 +90,10 @@
 
 	DataProxy dataProxy = null;
 	switch (searchType) {
-	case EntityLiveSearcherView.SEARCH_GROUPS:
+	case groups:
 	    dataProxy = new HttpProxy("/kune/json/GroupJSONService/search", Connection.POST);
 	    break;
-	case EntityLiveSearcherView.SEARCH_USERS:
+	case users:
 	    dataProxy = new HttpProxy("/kune/json/UserJSONService/search", Connection.POST);
 	    break;
 	default:

Added: trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherType.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherType.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherType.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -0,0 +1,5 @@
+package org.ourproject.kune.workspace.client.search;
+
+public enum EntityLiveSearcherType {
+    groups, users
+}

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherView.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/search/EntityLiveSearcherView.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -23,13 +23,10 @@
 
 public interface EntityLiveSearcherView extends View {
 
-    final public static int SEARCH_GROUPS = 1;
-    final public static int SEARCH_USERS = 2;
+    void center();
 
-    void show();
-
     void hide();
 
-    void center();
+    void show();
 
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/search/GroupLiveSearchPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/search/GroupLiveSearchPanel.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/search/GroupLiveSearchPanel.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -24,7 +24,7 @@
 public class GroupLiveSearchPanel extends EntityLiveSearcherPanel {
 
     public GroupLiveSearchPanel(final EntityLiveSearcherPresenter presenter, final I18nTranslationService i18n) {
-	super(presenter, EntityLiveSearcherView.SEARCH_GROUPS, i18n);
+	super(presenter, EntityLiveSearcherType.groups, i18n);
     }
 
 }
\ No newline at end of file

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/search/UserLiveSearcherPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/search/UserLiveSearcherPanel.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/search/UserLiveSearcherPanel.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -24,7 +24,7 @@
 public class UserLiveSearcherPanel extends EntityLiveSearcherPanel {
 
     public UserLiveSearcherPanel(final EntityLiveSearcherPresenter presenter, final I18nTranslationService i18n) {
-	super(presenter, EntityLiveSearcherView.SEARCH_USERS, i18n);
+	super(presenter, EntityLiveSearcherType.users, i18n);
     }
 
 }

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -5,6 +5,7 @@
 import org.ourproject.kune.platf.client.dto.AccessListsDTO;
 import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
 import org.ourproject.kune.platf.client.dto.GroupDTO;
+import org.ourproject.kune.platf.client.dto.GroupType;
 import org.ourproject.kune.platf.client.dto.LinkDTO;
 import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
 import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
@@ -173,7 +174,7 @@
     }
 
     private void setState(final StateDTO state) {
-	if (state.getGroup().getType().equals(GroupDTO.PERSONAL)) {
+	if (state.getGroup().getType().equals(GroupType.PERSONAL)) {
 	    view.setVisible(false);
 	} else {
 	    setGroupMembers(state.getGroupMembers(), state.getGroupRights());

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -2,7 +2,8 @@
 
 import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
 import org.ourproject.kune.platf.client.dto.GroupDTO;
-import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
+import org.ourproject.kune.platf.client.dto.GroupType;
+import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult;
 import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
 import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
 import org.ourproject.kune.platf.client.rpc.SocialNetworkServiceAsync;
@@ -106,16 +107,18 @@
 			session.getCurrentState().getGroup().getShortName(), new AsyncCallbackSimple<Object>() {
 			    public void onSuccess(final Object result) {
 				Site.hideProgress();
-				final String resultType = (String) result;
-				if (resultType == SocialNetworkDTO.REQ_JOIN_ACEPTED) {
+				final SocialNetworkRequestResult resultType = (SocialNetworkRequestResult) result;
+				switch (resultType) {
+				case accepted:
 				    Site.info(i18n.t("You are now member of this group"));
 				    stateManager.reload();
-				}
-				if (resultType == SocialNetworkDTO.REQ_JOIN_DENIED) {
+				    break;
+				case denied:
 				    Site.important(i18n.t("Sorry this is a closed group"));
-				}
-				if (resultType == SocialNetworkDTO.REQ_JOIN_WAITING_MODERATION) {
+				    break;
+				case moderated:
 				    Site.info(i18n.t("Requested. Waiting for admins decision"));
+				    break;
 				}
 			    }
 			});
@@ -133,20 +136,20 @@
     private GridItem<GroupDTO> createDefMemberMenu(final GroupDTO group, final GridGroup gridGroup) {
 	final GridMenu<GroupDTO> menu = new GridMenu<GroupDTO>(group);
 	final String longName = group.getLongName();
-	final String toolTip = i18n.t(group.getType().equals(GroupDTO.PERSONAL) ? "User nickname: [%s]"
+	final String toolTip = i18n.t(group.getType().equals(GroupType.PERSONAL) ? "User nickname: [%s]"
 		: "Group short name: [%s]", group.getShortName());
 	final GridItem<GroupDTO> gridItem = new GridItem<GroupDTO>(group, gridGroup, group.getShortName(), imageUtils
 		.getImageHtml(ImageDescriptor.groupDefIcon), longName, longName, " ", longName, toolTip, menu);
-	if (!group.getType().equals(GroupDTO.PERSONAL)) {
+	if (!group.getType().equals(GroupType.PERSONAL)) {
 	    menu.addMenuItemList(otherOperations);
 	}
-	if (session.isLogged() && !group.getType().equals(GroupDTO.PERSONAL)) {
+	if (session.isLogged() && !group.getType().equals(GroupType.PERSONAL)) {
 	    menu.addMenuItemList(otherLoggedOperations);
 	}
-	if (group.getType().equals(GroupDTO.PERSONAL)) {
+	if (group.getType().equals(GroupType.PERSONAL)) {
 	    menu.addMenuItemList(otherOperationsUsers);
 	}
-	if (session.isLogged() && group.getType().equals(GroupDTO.PERSONAL)) {
+	if (session.isLogged() && group.getType().equals(GroupType.PERSONAL)) {
 	    menu.addMenuItemList(otherLoggedOperationsUsers);
 	}
 

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/entitylogo/EntityLogoPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/entitylogo/EntityLogoPanel.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/entitylogo/EntityLogoPanel.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -88,7 +88,7 @@
 
     public EntityLogoPanel(final I18nTranslationService i18n, final WorkspaceSkeleton ws) {
 	this.i18n = i18n;
-	ws.getEntityMainHeader().add(this);
+	ws.addToEntityMainHeader(this);
     }
 
     public void setLogo(final Image image) {

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/Entity.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/Entity.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/Entity.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -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.Widget;
 import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.layout.FitLayout;
 
 public class Entity extends DefaultBorderLayout {
 
@@ -14,6 +16,7 @@
     public Entity() {
 	entityMainHeader = new Panel();
 	entityMainHeader.setBorder(false);
+	entityMainHeader.setLayout(new FitLayout());
 	entitySummary = new EntitySummary();
 	entityWorkspace = new EntityWorkspace();
 	add(entityMainHeader, DefaultBorderLayout.Position.NORTH, 65);
@@ -21,8 +24,9 @@
 	add(entitySummary.getPanel(), DefaultBorderLayout.Position.EAST, true, 150);
     }
 
-    public Panel getEntityMainHeader() {
-	return entityMainHeader;
+    public void addToEntityMainHeader(final Widget widget) {
+	entityMainHeader.add(widget);
+	doLayoutIfNeeded();
     }
 
     public EntitySummary getEntitySummary() {

Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/EntitySummary.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/EntitySummary.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/EntitySummary.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -6,6 +6,7 @@
 import com.gwtext.client.widgets.Panel;
 import com.gwtext.client.widgets.Toolbar;
 import com.gwtext.client.widgets.event.ContainerListener;
+import com.gwtext.client.widgets.layout.FitLayout;
 
 public class EntitySummary {
     private final Panel entityTools;
@@ -16,13 +17,14 @@
     public EntitySummary() {
 	mainPanel = new DefaultBorderLayout();
 	entityTools = new Panel();
+	entityTools.setLayout(new FitLayout());
 	entityTools.setAutoHeight(true);
 	entitySummary = new Panel();
-	entitySummary.setCls("k-entity-summary");
 	entityTools.setBorder(false);
 	entitySummary.setBorder(false);
 	entityTools.setAutoScroll(false);
 	entitySummary.setAutoScroll(true);
+	entitySummary.setCls("k-entity-summary");
 	trayBar = mainPanel.createBottomBar(entitySummary, "k-site-traybar");
 	mainPanel.add(entityTools, DefaultBorderLayout.Position.NORTH);
 	mainPanel.add(entitySummary, DefaultBorderLayout.Position.CENTER);
@@ -31,15 +33,16 @@
 
     public void addInSummary(final Widget widget) {
 	entitySummary.add(widget);
+	entitySummary.syncSize();
 	mainPanel.doLayoutIfNeeded();
     }
 
     public void addInTools(final Widget widget) {
 	entityTools.add(widget);
+	mainPanel.syncSize();
 	if (entityTools.isRendered()) {
 	    entityTools.doLayout(false);
 	}
-	mainPanel.doLayoutIfNeeded();
     }
 
     public void addListener(final ContainerListener listener) {

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-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ui/newtmp/skel/WorkspaceSkeleton.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -5,6 +5,7 @@
 
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.user.client.ui.Widget;
 import com.gwtext.client.core.ExtElement;
 import com.gwtext.client.widgets.MessageBox;
 import com.gwtext.client.widgets.Panel;
@@ -35,8 +36,8 @@
 	new Viewport(container);
     }
 
-    public Panel getEntityMainHeader() {
-	return entity.getEntityMainHeader();
+    public void addToEntityMainHeader(final Widget widget) {
+	entity.addToEntityMainHeader(widget);
     }
 
     public EntitySummary getEntitySummary() {

Modified: trunk/src/main/resources/dozerBeanMapping.xml
===================================================================
--- trunk/src/main/resources/dozerBeanMapping.xml	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/main/resources/dozerBeanMapping.xml	2008-08-08 04:20:12 UTC (rev 834)
@@ -41,12 +41,7 @@
 
   <mapping>
     <class-a>org.ourproject.kune.platf.client.dto.GroupDTO</class-a>
-    <class-b>org.ourproject.kune.platf.server.domain.Group</class-b>
-    <field
-      custom-converter="org.ourproject.kune.platf.server.mapper.GroupTypeConverter">
-      <a>type</a>
-      <b>type</b>
-    </field>
+    <class-b>org.ourproject.kune.platf.server.domain.Group</class-b>
   </mapping>
 
   <mapping>

Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -25,7 +25,7 @@
 			bindScope(SessionScoped.class, Scopes.SINGLETON);
 			// test: use memory
 			// test_db: use mysql
-			bindConstant().annotatedWith(JpaUnit.class).to("test");
+			bindConstant().annotatedWith(JpaUnit.class).to("test_db");
 			bindConstant().annotatedWith(PropertiesFileName.class).to("kune.properties");
 			bind(HttpServletRequest.class).to(HttpServletRequestMocked.class);
 		    }

Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/kuneservice/GroupServiceTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/integration/kuneservice/GroupServiceTest.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/test/java/org/ourproject/kune/platf/integration/kuneservice/GroupServiceTest.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -5,6 +5,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.ourproject.kune.platf.client.dto.GroupDTO;
+import org.ourproject.kune.platf.client.dto.GroupType;
 import org.ourproject.kune.platf.client.dto.LicenseDTO;
 import org.ourproject.kune.platf.client.errors.UserMustBeLoggedException;
 import org.ourproject.kune.platf.client.rpc.GroupService;
@@ -13,7 +14,6 @@
 import org.ourproject.kune.platf.server.UserSession;
 import org.ourproject.kune.platf.server.domain.AdmissionType;
 import org.ourproject.kune.platf.server.domain.Group;
-import org.ourproject.kune.platf.server.domain.GroupType;
 
 import com.google.inject.Inject;
 
@@ -33,7 +33,7 @@
 	doLogin();
 
 	final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc",
-		GroupDTO.COMMUNITY);
+		GroupType.COMMUNITY);
 
 	final LicenseDTO license = new LicenseDTO();
 	license.setShortName("by-sa");
@@ -51,7 +51,7 @@
     @Test(expected = Exception.class)
     public void createGroupNotLogged() throws Exception {
 	final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc",
-		GroupDTO.PROJECT);
+		GroupType.PROJECT);
 	service.createNewGroup(session.getHash(), group);
     }
 
@@ -59,7 +59,7 @@
     public void createGroupNullUserHash() throws Exception {
 	doLogin();
 	final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc",
-		GroupDTO.PROJECT);
+		GroupType.PROJECT);
 	service.createNewGroup(null, group);
     }
 
@@ -68,7 +68,7 @@
 	doLogin();
 
 	final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc",
-		GroupDTO.PROJECT);
+		GroupType.PROJECT);
 
 	final LicenseDTO license = new LicenseDTO();
 	license.setShortName("by-sa");
@@ -88,7 +88,7 @@
 	doLogin();
 
 	final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc",
-		GroupDTO.ORGANIZATION);
+		GroupType.ORGANIZATION);
 
 	final LicenseDTO license = new LicenseDTO();
 	license.setShortName("by-sa");
@@ -108,7 +108,7 @@
 	doLogin();
 
 	final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", "Public Desc",
-		GroupDTO.ORPHANED_PROJECT);
+		GroupType.ORPHANED_PROJECT);
 
 	final LicenseDTO license = new LicenseDTO();
 	license.setShortName("by-sa");

Added: trunk/src/test/java/org/ourproject/kune/platf/server/auth/AuthorizatedMethodInterceptorTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/server/auth/AuthorizatedMethodInterceptorTest.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/test/java/org/ourproject/kune/platf/server/auth/AuthorizatedMethodInterceptorTest.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -0,0 +1,31 @@
+package org.ourproject.kune.platf.server.auth;
+
+import java.lang.reflect.AccessibleObject;
+
+import org.aopalliance.intercept.MethodInvocation;
+import org.junit.Before;
+import org.mockito.Mockito;
+import org.ourproject.kune.platf.integration.IntegrationTest;
+import org.ourproject.kune.platf.integration.IntegrationTestHelper;
+
+public class AuthorizatedMethodInterceptorTest extends IntegrationTest {
+
+    private AuthorizatedMethodInterceptor auth;
+    private MethodInvocation invocation;
+    private Authorizated authAnnotation;
+
+    @Before
+    public void before() {
+	auth = new AuthorizatedMethodInterceptor();
+	new IntegrationTestHelper(auth, this);
+	invocation = Mockito.mock(MethodInvocation.class);
+	final AccessibleObject accessibleObject = Mockito.mock(AccessibleObject.class);
+	Mockito.stub(invocation.getMethod()).toReturn(this.getClass().getMethods()[0]);
+	Mockito.stub(invocation.getStaticPart()).toReturn(accessibleObject);
+	authAnnotation = Mockito.mock(Authorizated.class);
+	Mockito.stub(accessibleObject.getAnnotation(Authorizated.class)).toReturn(authAnnotation);
+	// AccessType accessType = authoAnnotation.accessTypeRequired();
+	// boolean checkContent = authoAnnotation.checkContent();
+    }
+
+}

Modified: trunk/src/test/java/org/ourproject/kune/platf/server/manager/GroupManagerTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/server/manager/GroupManagerTest.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/test/java/org/ourproject/kune/platf/server/manager/GroupManagerTest.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -9,13 +9,13 @@
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.ourproject.kune.platf.client.dto.GroupType;
 import org.ourproject.kune.platf.client.errors.EmailAddressInUseException;
 import org.ourproject.kune.platf.client.errors.GroupNameInUseException;
 import org.ourproject.kune.platf.client.errors.I18nNotFoundException;
 import org.ourproject.kune.platf.server.PersistenceTest;
 import org.ourproject.kune.platf.server.domain.AccessLists;
 import org.ourproject.kune.platf.server.domain.Group;
-import org.ourproject.kune.platf.server.domain.GroupType;
 import org.ourproject.kune.platf.server.domain.I18nCountry;
 import org.ourproject.kune.platf.server.domain.I18nLanguage;
 import org.ourproject.kune.platf.server.domain.License;

Modified: trunk/src/test/java/org/ourproject/kune/platf/server/manager/SocialNetworkManagerTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/server/manager/SocialNetworkManagerTest.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/test/java/org/ourproject/kune/platf/server/manager/SocialNetworkManagerTest.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -7,7 +7,8 @@
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
+import org.ourproject.kune.platf.client.dto.GroupType;
+import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult;
 import org.ourproject.kune.platf.client.errors.AccessViolationException;
 import org.ourproject.kune.platf.client.errors.AlreadyGroupMemberException;
 import org.ourproject.kune.platf.client.errors.LastAdminInGroupException;
@@ -180,11 +181,22 @@
     }
 
     @Test(expected = LastAdminInGroupException.class)
-    public void lastAdminUnjoinGroupFails() throws Exception {
+    public void lastAdminUnjoinGroupWithCollabsFails() throws Exception {
 	socialNetworkManager.addAdmin(admin, group);
+	socialNetworkManager.requestToJoin(user, group);
+	socialNetworkManager.acceptJoinGroup(admin, userGroup, group);
 	socialNetworkManager.unJoinGroup(admin.getUserGroup(), group);
     }
 
+    @Test
+    public void lastAdminUnjoinGroupWithoutCollabsOrphaned() throws Exception {
+	socialNetworkManager.addAdmin(admin, group);
+	socialNetworkManager.unJoinGroup(admin.getUserGroup(), group);
+	assertEquals(GroupType.ORPHANED_PROJECT, group.getType());
+	assertEquals(0, group.getSocialNetwork().getAccessLists().getAdmins().getList().size());
+	assertEquals(0, group.getSocialNetwork().getAccessLists().getEditors().getList().size());
+    }
+
     @Test(expected = AccessViolationException.class)
     public void notAdminTryDeleteMember() throws Exception {
 	socialNetworkManager.requestToJoin(user, group);
@@ -197,8 +209,8 @@
     public void requestJoinAClosedGroupDeny() throws Exception {
 	group.setAdmissionType(AdmissionType.Closed);
 
-	final String result = socialNetworkManager.requestToJoin(user, group);
-	assertEquals(result, SocialNetworkDTO.REQ_JOIN_DENIED);
+	final SocialNetworkRequestResult result = socialNetworkManager.requestToJoin(user, group);
+	assertEquals(result, SocialNetworkRequestResult.denied);
 	closeTransaction();
     }
 
@@ -206,8 +218,8 @@
     public void requestJoinAModeratedGroupAddUserGroupToPending() throws Exception {
 	group.setAdmissionType(AdmissionType.Moderated);
 
-	final String result = socialNetworkManager.requestToJoin(user, group);
-	assertEquals(result, SocialNetworkDTO.REQ_JOIN_WAITING_MODERATION);
+	final SocialNetworkRequestResult result = socialNetworkManager.requestToJoin(user, group);
+	assertEquals(result, SocialNetworkRequestResult.moderated);
 	assertTrue(group.getSocialNetwork().getPendingCollaborators().getList().contains(userGroup));
 	closeTransaction();
     }
@@ -216,8 +228,8 @@
     public void requestJoinAOpenGroupAddUserGroupToEditors() throws Exception {
 	group.setAdmissionType(AdmissionType.Open);
 
-	final String result = socialNetworkManager.requestToJoin(user, group);
-	assertEquals(result, SocialNetworkDTO.REQ_JOIN_ACEPTED);
+	final SocialNetworkRequestResult result = socialNetworkManager.requestToJoin(user, group);
+	assertEquals(result, SocialNetworkRequestResult.accepted);
 	assertTrue(group.getSocialNetwork().getAccessLists().getEditors().getList().contains(userGroup));
 	assertEquals(group.getSocialNetwork().getAccessLists().getEditors().getMode(), GroupListMode.NORMAL);
 	closeTransaction();
@@ -227,8 +239,8 @@
     public void requestJoinAOrphanedGroupAddUserGroupToAdmins() throws Exception {
 	orphanedGroup.setAdmissionType(AdmissionType.Open);
 
-	final String result = socialNetworkManager.requestToJoin(user, orphanedGroup);
-	assertEquals(result, SocialNetworkDTO.REQ_JOIN_ACEPTED);
+	final SocialNetworkRequestResult result = socialNetworkManager.requestToJoin(user, orphanedGroup);
+	assertEquals(result, SocialNetworkRequestResult.accepted);
 	assertTrue(orphanedGroup.getSocialNetwork().getAccessLists().getAdmins().getList().contains(userGroup));
 	assertEquals(orphanedGroup.getSocialNetwork().getAccessLists().getAdmins().getMode(), GroupListMode.NORMAL);
 
@@ -240,8 +252,8 @@
     public void requestJoinTwiceAOrphanedGroupAddUserGroupToAdmins() throws Exception {
 	orphanedGroup.setAdmissionType(AdmissionType.Open);
 
-	final String result = socialNetworkManager.requestToJoin(user, orphanedGroup);
-	assertEquals(SocialNetworkDTO.REQ_JOIN_ACEPTED, result);
+	final SocialNetworkRequestResult result = socialNetworkManager.requestToJoin(user, orphanedGroup);
+	assertEquals(SocialNetworkRequestResult.accepted, result);
 	socialNetworkManager.requestToJoin(user, orphanedGroup);
     }
 

Modified: trunk/src/test/java/org/ourproject/kune/testhelper/ctx/DomainContext.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/testhelper/ctx/DomainContext.java	2008-08-07 12:07:05 UTC (rev 833)
+++ trunk/src/test/java/org/ourproject/kune/testhelper/ctx/DomainContext.java	2008-08-08 04:20:12 UTC (rev 834)
@@ -3,9 +3,9 @@
 import java.util.HashMap;
 import java.util.TimeZone;
 
+import org.ourproject.kune.platf.client.dto.GroupType;
 import org.ourproject.kune.platf.server.domain.AccessLists;
 import org.ourproject.kune.platf.server.domain.Group;
-import org.ourproject.kune.platf.server.domain.GroupType;
 import org.ourproject.kune.platf.server.domain.I18nCountry;
 import org.ourproject.kune.platf.server.domain.I18nLanguage;
 import org.ourproject.kune.platf.server.domain.SocialNetwork;




More information about the kune-commits mailing list