[kune-commits] r1371 - in trunk: img/nav-icons img/nav-icons/suplentes src/main/java/cc/kune src/main/java/cc/kune/barters src/main/java/cc/kune/barters/client src/main/java/cc/kune/barters/client/actions src/main/java/cc/kune/barters/server src/main/java/cc/kune/barters/shared src/main/java/cc/kune/blogs/client src/main/java/cc/kune/blogs/server src/main/java/cc/kune/client src/main/java/cc/kune/core/client/resources/nav src/main/java/cc/kune/core/server src/main/java/cc/kune/core/server/content src/main/java/cc/kune/core/server/tool src/main/java/cc/kune/core/server/utils src/main/java/cc/kune/docs/client src/main/java/cc/kune/docs/server src/main/java/cc/kune/domain src/main/java/cc/kune/gspace/client/tool src/main/java/cc/kune/gspace/client/tool/selector src/main/java/cc/kune/wave/server src/main/java/cc/kune/wiki/client src/main/java/org/ourproject/kune/blogs src/main/java/org/ourproject/kune/chat/server src/main/java/org/ourproject/kune/gallery/server src/test/java/cc/kune/wave/server

Vicente J. Ruiz Jurado vjrj_ at ourproject.org
Tue May 10 21:13:23 CEST 2011


Author: vjrj_
Date: 2011-05-10 21:13:22 +0200 (Tue, 10 May 2011)
New Revision: 1371

Added:
   trunk/img/nav-icons/barter.png
   trunk/img/nav-icons/barter_add.png
   trunk/img/nav-icons/suplentes/refresh-brown.png
   trunk/src/main/java/cc/kune/barters/
   trunk/src/main/java/cc/kune/barters/KuneBarters.gwt.xml
   trunk/src/main/java/cc/kune/barters/client/
   trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java
   trunk/src/main/java/cc/kune/barters/client/BartersGinModule.java
   trunk/src/main/java/cc/kune/barters/client/BartersGinjector.java
   trunk/src/main/java/cc/kune/barters/client/BartersParts.java
   trunk/src/main/java/cc/kune/barters/client/actions/
   trunk/src/main/java/cc/kune/barters/client/actions/BartersClientActions.java
   trunk/src/main/java/cc/kune/barters/client/actions/DelBartersMenuItem.java
   trunk/src/main/java/cc/kune/barters/client/actions/DelFolderMenuItem.java
   trunk/src/main/java/cc/kune/barters/client/actions/GoParentFolderBtn.java
   trunk/src/main/java/cc/kune/barters/client/actions/NewBartersBtn.java
   trunk/src/main/java/cc/kune/barters/client/actions/NewFolderBtn.java
   trunk/src/main/java/cc/kune/barters/client/actions/OpenBartersMenuItem.java
   trunk/src/main/java/cc/kune/barters/server/
   trunk/src/main/java/cc/kune/barters/server/BarterServerModule.java
   trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java
   trunk/src/main/java/cc/kune/barters/shared/
   trunk/src/main/java/cc/kune/barters/shared/BartersConstants.java
   trunk/src/main/java/cc/kune/core/client/resources/nav/barter.png
   trunk/src/main/java/cc/kune/core/client/resources/nav/barter_add.png
   trunk/src/main/java/cc/kune/core/server/tool/ServerWaveTool.java
   trunk/src/main/java/cc/kune/core/server/utils/UrlUtils.java
   trunk/src/main/java/cc/kune/gspace/client/tool/AbstractClientTool.java
   trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java
Removed:
   trunk/src/main/java/cc/kune/gspace/client/tool/old/
   trunk/src/main/java/org/ourproject/kune/blogs/client/
Modified:
   trunk/src/main/java/cc/kune/Kune.gwt.xml
   trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java
   trunk/src/main/java/cc/kune/blogs/server/BlogServerTool.java
   trunk/src/main/java/cc/kune/client/KuneEntryPoint.java
   trunk/src/main/java/cc/kune/client/KuneGinjector.java
   trunk/src/main/java/cc/kune/core/client/resources/nav/NavResources.java
   trunk/src/main/java/cc/kune/core/server/KuneRackModule.java
   trunk/src/main/java/cc/kune/core/server/content/ContentManager.java
   trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java
   trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java
   trunk/src/main/java/cc/kune/core/server/tool/ServerTool.java
   trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java
   trunk/src/main/java/cc/kune/docs/server/DocumentServerTool.java
   trunk/src/main/java/cc/kune/domain/Content.java
   trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.java
   trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java
   trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
   trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java
   trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java
   trunk/src/main/java/org/ourproject/kune/gallery/server/GalleryServerTool.java
   trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java
Log:
barter tool

Added: trunk/img/nav-icons/barter.png
===================================================================
(Binary files differ)


Property changes on: trunk/img/nav-icons/barter.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/img/nav-icons/barter_add.png
===================================================================
(Binary files differ)


Property changes on: trunk/img/nav-icons/barter_add.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/img/nav-icons/suplentes/refresh-brown.png
===================================================================
(Binary files differ)


Property changes on: trunk/img/nav-icons/suplentes/refresh-brown.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/src/main/java/cc/kune/Kune.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/Kune.gwt.xml	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/Kune.gwt.xml	2011-05-10 19:13:22 UTC (rev 1371)
@@ -5,9 +5,10 @@
   <inherits name='com.google.gwt.logging.Logging' />
   <inherits name="cc.kune.core.KuneCore" />
   <inherits name="cc.kune.wave.KuneWave" />
+  <inherits name="cc.kune.barters.KuneBarters" />
+  <inherits name="cc.kune.blogs.KuneBlogs" />
   <inherits name="cc.kune.chat.KuneChat" />
   <inherits name="cc.kune.docs.KuneDocs" />
-  <inherits name="cc.kune.blogs.KuneBlogs" />
   <inherits name="cc.kune.wiki.KuneWiki" />
   <inherits name="cc.kune.pspace.PSpace" />
   <inherits name="com.calclab.suco.Suco" />

Added: trunk/src/main/java/cc/kune/barters/KuneBarters.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/barters/KuneBarters.gwt.xml	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/KuneBarters.gwt.xml	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,6 @@
+<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd">
+<module>
+  <inherits name="cc.kune.core.KuneCore" />
+  <source path="client" />
+  <source path="shared" />
+</module>
\ No newline at end of file


Property changes on: trunk/src/main/java/cc/kune/barters/KuneBarters.gwt.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,68 @@
+/*
+ *
+ * Copyright (C) 2007-2009 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 cc.kune.barters.client;
+
+import static cc.kune.barters.shared.BartersConstants.NAME;
+import static cc.kune.barters.shared.BartersConstants.TYPE_BARTER;
+import static cc.kune.barters.shared.BartersConstants.TYPE_FOLDER;
+import static cc.kune.barters.shared.BartersConstants.TYPE_ROOT;
+import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.gspace.client.tool.FoldableAbstractClientTool;
+import cc.kune.gspace.client.tool.selector.ToolSelector;
+
+import com.google.inject.Inject;
+
+public class BartersClientTool extends FoldableAbstractClientTool {
+
+  private final NavResources navResources;
+
+  @Inject
+  public BartersClientTool(final I18nUITranslationService i18n, final ToolSelector toolSelector,
+      final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
+    super(NAME, i18n.t("barters"), toolSelector, cntCapRegistry);
+    this.navResources = navResources;
+
+    // registerAclEditableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
+    registerAuthorableTypes(TYPE_BARTER);
+    registerDragableTypes(TYPE_BARTER, TYPE_FOLDER);
+    registerDropableTypes(TYPE_ROOT, TYPE_FOLDER);
+    // registerPublishModerableTypes();
+    registerRateableTypes(TYPE_BARTER);
+    registerRenamableTypes(TYPE_FOLDER, TYPE_BARTER);
+    registerTageableTypes(TYPE_BARTER);
+    registerTranslatableTypes(TYPE_FOLDER, TYPE_BARTER);
+
+    registerIcons();
+  }
+
+  @Override
+  public String getName() {
+    return NAME;
+  }
+
+  private void registerIcons() {
+    registerContentTypeIcon(TYPE_FOLDER, navResources.folder());
+    registerContentTypeIcon(TYPE_ROOT, navResources.folder());
+    registerContentTypeIcon(TYPE_BARTER, navResources.barter());
+  }
+
+}


Property changes on: trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/client/BartersGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/BartersGinModule.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/client/BartersGinModule.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.barters.client;
+
+import cc.kune.barters.client.actions.BartersClientActions;
+
+import com.google.inject.Singleton;
+import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
+
+public class BartersGinModule extends AbstractPresenterModule {
+
+  @Override
+  protected void configure() {
+    bind(BartersClientTool.class).in(Singleton.class);
+    bind(BartersClientActions.class).in(Singleton.class);
+  }
+
+}


Property changes on: trunk/src/main/java/cc/kune/barters/client/BartersGinModule.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/client/BartersGinjector.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/BartersGinjector.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/client/BartersGinjector.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,28 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.barters.client;
+
+import com.google.gwt.inject.client.Ginjector;
+
+public interface BartersGinjector extends Ginjector {
+
+  BartersParts getBartersParts();
+
+}


Property changes on: trunk/src/main/java/cc/kune/barters/client/BartersGinjector.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/client/BartersParts.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/BartersParts.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/client/BartersParts.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,42 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.barters.client;
+
+import cc.kune.barters.client.actions.BartersClientActions;
+import cc.kune.barters.shared.BartersConstants;
+import cc.kune.core.client.state.Session;
+import cc.kune.gspace.client.tool.ContentViewerSelector;
+import cc.kune.gspace.client.viewers.ContentViewerPresenter;
+import cc.kune.gspace.client.viewers.FolderViewerPresenter;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class BartersParts {
+
+  @Inject
+  public BartersParts(final Session session, final Provider<BartersClientTool> clientTool,
+      final ContentViewerSelector viewerSelector, final BartersClientActions bartersActions,
+      final ContentViewerPresenter contentViewer, final FolderViewerPresenter folderViewer) {
+    clientTool.get();
+    viewerSelector.register(contentViewer, true, BartersConstants.TYPE_BARTER);
+    viewerSelector.register(folderViewer, true, BartersConstants.TYPE_ROOT, BartersConstants.TYPE_FOLDER);
+  }
+}
\ No newline at end of file


Property changes on: trunk/src/main/java/cc/kune/barters/client/BartersParts.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/client/actions/BartersClientActions.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/actions/BartersClientActions.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/client/actions/BartersClientActions.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,74 @@
+/*
+ *
+ * Copyright (C) 2007-2009 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 cc.kune.barters.client.actions;
+
+import static cc.kune.barters.shared.BartersConstants.TYPE_BARTER;
+import static cc.kune.barters.shared.BartersConstants.TYPE_FOLDER;
+import static cc.kune.barters.shared.BartersConstants.TYPE_ROOT;
+import cc.kune.core.client.actions.ActionRegistryByType;
+import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.docs.client.actions.DelFolderMenuItem;
+import cc.kune.docs.client.actions.NewFolderBtn;
+import cc.kune.gspace.client.actions.AbstractFoldableToolActions;
+import cc.kune.gspace.client.actions.ActionGroups;
+import cc.kune.gspace.client.actions.ContentViewerOptionsMenu;
+import cc.kune.gspace.client.actions.ParticipateInContentBtn;
+import cc.kune.gspace.client.actions.RefreshContentMenuItem;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class BartersClientActions extends AbstractFoldableToolActions {
+  final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_BARTER };
+  final String[] containers = { TYPE_ROOT, TYPE_FOLDER };
+  final String[] containersNoRoot = { TYPE_FOLDER };
+  final String[] contents = { TYPE_BARTER };
+
+  @Inject
+  public BartersClientActions(final I18nUITranslationService i18n, final Session session,
+      final StateManager stateManager, final ActionRegistryByType registry, final CoreResources res,
+      final Provider<GoParentFolderBtn> folderGoUp, final Provider<NewBartersBtn> newBartersBtn,
+      final Provider<NewFolderBtn> newFolderBtn,
+      final Provider<OpenBartersMenuItem> openContentMenuItem,
+      final Provider<DelBartersMenuItem> delContentMenuItem,
+      final Provider<ContentViewerOptionsMenu> optionsMenuContent,
+      final Provider<ParticipateInContentBtn> participateBtn,
+      final Provider<DelFolderMenuItem> delFolderMenuItem, final Provider<RefreshContentMenuItem> refresh) {
+    super(session, stateManager, i18n, registry);
+    actionsRegistry.addAction(ActionGroups.VIEW, optionsMenuContent, all);
+    actionsRegistry.addAction(ActionGroups.VIEW, refresh, all);
+    actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, contents);
+    actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, containersNoRoot);
+    actionsRegistry.addAction(ActionGroups.VIEW, newBartersBtn, containers);
+    actionsRegistry.addAction(ActionGroups.VIEW, participateBtn, contents);
+    actionsRegistry.addAction(ActionGroups.VIEW, newFolderBtn, containers);
+    actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, contents);
+    actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, containersNoRoot);
+    actionsRegistry.addAction(ActionGroups.MENUITEM, delContentMenuItem, contents);
+    actionsRegistry.addAction(ActionGroups.MENUITEM, delFolderMenuItem, containersNoRoot);
+  }
+
+  @Override
+  protected void createPostSessionInitActions() {
+  }
+}


Property changes on: trunk/src/main/java/cc/kune/barters/client/actions/BartersClientActions.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/client/actions/DelBartersMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/actions/DelBartersMenuItem.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/client/actions/DelBartersMenuItem.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,34 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.barters.client.actions;
+
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.actions.DelContentMenuItem;
+
+import com.google.inject.Inject;
+
+public class DelBartersMenuItem extends DelContentMenuItem {
+
+    @Inject
+    public DelBartersMenuItem(final I18nTranslationService i18n, final DelContentAction action, final CoreResources res) {
+        super(i18n, action, res);
+    }
+}


Property changes on: trunk/src/main/java/cc/kune/barters/client/actions/DelBartersMenuItem.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/client/actions/DelFolderMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/actions/DelFolderMenuItem.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/client/actions/DelFolderMenuItem.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.barters.client.actions;
+
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.actions.DelContainerMenuItem;
+
+import com.google.inject.Inject;
+
+public class DelFolderMenuItem extends DelContainerMenuItem {
+
+    @Inject
+    public DelFolderMenuItem(final I18nTranslationService i18n, final DelContainerAction action, final CoreResources res) {
+        super(i18n, action, res);
+    }
+
+}


Property changes on: trunk/src/main/java/cc/kune/barters/client/actions/DelFolderMenuItem.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/client/actions/GoParentFolderBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/actions/GoParentFolderBtn.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/client/actions/GoParentFolderBtn.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.barters.client.actions;
+
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.actions.GoParentContainerBtn;
+
+import com.google.inject.Inject;
+
+public class GoParentFolderBtn extends GoParentContainerBtn {
+
+    @Inject
+    public GoParentFolderBtn(final I18nTranslationService i18n, final GoParentContainerAction action, final CoreResources res) {
+        super(i18n, action, res);
+    }
+
+}


Property changes on: trunk/src/main/java/cc/kune/barters/client/actions/GoParentFolderBtn.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/client/actions/NewBartersBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/actions/NewBartersBtn.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/client/actions/NewBartersBtn.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.barters.client.actions;
+
+import cc.kune.barters.shared.BartersConstants;
+import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.actions.NewContentBtn;
+
+import com.google.inject.Inject;
+
+public class NewBartersBtn extends NewContentBtn {
+
+  @Inject
+  public NewBartersBtn(final I18nTranslationService i18n, final NewContentAction action,
+      final NavResources res, final GlobalShortcutRegister shorcutReg) {
+    super(i18n, action, res.barterAdd(), shorcutReg, i18n.t("New barter"),
+        i18n.t("Create a New Barter here"), i18n.t("New barter"), BartersConstants.TYPE_BARTER);
+  }
+
+}


Property changes on: trunk/src/main/java/cc/kune/barters/client/actions/NewBartersBtn.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/client/actions/NewFolderBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/actions/NewFolderBtn.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/client/actions/NewFolderBtn.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,38 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.barters.client.actions;
+
+import cc.kune.barters.shared.BartersConstants;
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.actions.NewContainerBtn;
+
+import com.google.inject.Inject;
+
+public class NewFolderBtn extends NewContainerBtn {
+
+  @Inject
+  public NewFolderBtn(final I18nTranslationService i18n, final NewContainerAction action,
+      final NavResources res) {
+    super(i18n, action, res.barterAdd(), i18n.t("New folder"), i18n.t("Create a new folder here"),
+        i18n.t("New folder"), BartersConstants.TYPE_FOLDER);
+  }
+
+}


Property changes on: trunk/src/main/java/cc/kune/barters/client/actions/NewFolderBtn.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/client/actions/OpenBartersMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/actions/OpenBartersMenuItem.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/client/actions/OpenBartersMenuItem.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.barters.client.actions;
+
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.actions.OpenContentMenuItem;
+
+import com.google.inject.Inject;
+
+public class OpenBartersMenuItem extends OpenContentMenuItem {
+
+    @Inject
+    public OpenBartersMenuItem(final I18nTranslationService i18n, final OpenContentAction action, final NavResources res) {
+        super(i18n, action, res);
+    }
+
+}


Property changes on: trunk/src/main/java/cc/kune/barters/client/actions/OpenBartersMenuItem.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/server/BarterServerModule.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/server/BarterServerModule.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/server/BarterServerModule.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,29 @@
+/*
+ *
+ * Copyright (C) 2007-2009 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 cc.kune.barters.server;
+
+import com.google.inject.Binder;
+import com.google.inject.Module;
+
+public class BarterServerModule implements Module {
+    public void configure(final Binder binder) {
+        binder.bind(BarterServerTool.class).asEagerSingleton();
+    }
+}


Property changes on: trunk/src/main/java/cc/kune/barters/server/BarterServerModule.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,192 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.barters.server;
+
+import static cc.kune.barters.shared.BartersConstants.NAME;
+import static cc.kune.barters.shared.BartersConstants.ROOT_NAME;
+import static cc.kune.barters.shared.BartersConstants.TYPE_BARTER;
+import static cc.kune.barters.shared.BartersConstants.TYPE_FOLDER;
+import static cc.kune.barters.shared.BartersConstants.TYPE_ROOT;
+
+import java.net.URL;
+import java.util.Date;
+
+import org.waveprotocol.wave.model.waveref.InvalidWaveRefException;
+import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder;
+
+import cc.kune.core.client.errors.ContainerNotPermittedException;
+import cc.kune.core.client.errors.ContentNotPermittedException;
+import cc.kune.core.client.errors.DefaultException;
+import cc.kune.core.server.content.ContainerManager;
+import cc.kune.core.server.content.ContentManager;
+import cc.kune.core.server.manager.ToolConfigurationManager;
+import cc.kune.core.server.tool.ServerToolRegistry;
+import cc.kune.core.server.tool.ServerToolTarget;
+import cc.kune.core.server.tool.ServerWaveTool;
+import cc.kune.core.server.utils.UrlUtils;
+import cc.kune.core.shared.domain.ContentStatus;
+import cc.kune.core.shared.domain.GroupListMode;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.domain.AccessLists;
+import cc.kune.domain.Container;
+import cc.kune.domain.Content;
+import cc.kune.domain.Group;
+import cc.kune.domain.ToolConfiguration;
+import cc.kune.domain.User;
+import cc.kune.wave.server.KuneWaveManager;
+
+import com.google.inject.Inject;
+
+public class BarterServerTool implements ServerWaveTool {
+
+  private static final String BARTER_GADGET = "http://op-org.appspot.com/troco_wave_gadget/org.ourproject.troco.client.TrocoWaveGadget.gadget.xml";
+  private final ToolConfigurationManager configurationManager;
+  private final ContainerManager containerManager;
+  private final ContentManager contentManager;
+  private final URL gadgetUrl;
+  private final I18nTranslationService i18n;
+  private final KuneWaveManager waveManager;
+
+  @Inject
+  public BarterServerTool(final ContentManager contentManager, final ContainerManager containerManager,
+      final ToolConfigurationManager configurationManager,
+      final I18nTranslationService translationService, final KuneWaveManager waveManager) {
+    this.contentManager = contentManager;
+    this.containerManager = containerManager;
+    this.configurationManager = configurationManager;
+    this.i18n = translationService;
+    this.waveManager = waveManager;
+    gadgetUrl = UrlUtils.of(BARTER_GADGET);
+  }
+
+  private void addGadget(final Content content) {
+    try {
+      waveManager.addGadget(JavaWaverefEncoder.decodeWaveRefFromPath(content.getWaveId()),
+          content.getAuthors().get(0).getShortName(), BARTER_GADGET);
+    } catch (final InvalidWaveRefException e) {
+      throw new DefaultException("Error creating barter");
+    }
+  }
+
+  void checkContainerTypeId(final String parentTypeId, final String typeId) {
+    if (typeId.equals(TYPE_FOLDER)) {
+      // ok valid container
+      if ((typeId.equals(TYPE_FOLDER) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER)))) {
+        // ok
+      } else {
+        throw new ContainerNotPermittedException();
+      }
+    } else {
+      throw new ContainerNotPermittedException();
+    }
+  }
+
+  void checkContentTypeId(final String parentTypeId, final String typeId) {
+    if (typeId.equals(TYPE_BARTER)) {
+      // ok valid content
+      final boolean parentIsFolderOrRoot = parentTypeId.equals(TYPE_ROOT)
+          || parentTypeId.equals(TYPE_FOLDER);
+      if ((typeId.equals(TYPE_BARTER) && parentIsFolderOrRoot)) {
+        // ok
+      } else {
+        throw new ContentNotPermittedException();
+      }
+    } else {
+      throw new ContentNotPermittedException();
+    }
+  }
+
+  @Override
+  public void checkTypesBeforeContainerCreation(final String parentTypeId, final String typeId) {
+    checkContainerTypeId(parentTypeId, typeId);
+  }
+
+  @Override
+  public void checkTypesBeforeContentCreation(final String parentTypeId, final String typeId) {
+    checkContentTypeId(parentTypeId, typeId);
+  }
+
+  @Override
+  public URL getGadgetUrl() {
+    return gadgetUrl;
+  }
+
+  @Override
+  public String getName() {
+    return NAME;
+  }
+
+  @Override
+  public String getRootName() {
+    return ROOT_NAME;
+  }
+
+  @Override
+  public ServerToolTarget getTarget() {
+    return ServerToolTarget.forUsers;
+  }
+
+  @Override
+  public Group initGroup(final User user, final Group group, final Object... otherVars) {
+    final ToolConfiguration config = new ToolConfiguration();
+    final Container rootFolder = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
+    setContainerBartersAcl(rootFolder);
+    config.setRoot(rootFolder);
+    group.setToolConfig(NAME, config);
+    configurationManager.persist(config);
+    final Content content = contentManager.createContent(
+        i18n.t("Barter sample"),
+        i18n.t("This is only a barter sample. You can invite other participants to this barter, but also publish to the general public allowing you to share services, goods, etc."),
+        user, rootFolder, TYPE_BARTER, gadgetUrl);
+    content.addAuthor(user);
+    content.setLanguage(user.getLanguage());
+    content.setTypeId(TYPE_BARTER);
+    content.setStatus(ContentStatus.publishedOnline);
+    contentManager.save(user, content);
+    return group;
+  }
+
+  @Override
+  public void onCreateContainer(final Container container, final Container parent) {
+    setContainerBartersAcl(container);
+  }
+
+  @Override
+  public void onCreateContent(final Content content, final Container parent) {
+    // addGadget(content);
+    content.setStatus(ContentStatus.publishedOnline);
+    content.setPublishedOn(new Date());
+  }
+
+  @Override
+  @Inject
+  public void register(final ServerToolRegistry registry) {
+    registry.register(this);
+  }
+
+  private void setContainerBartersAcl(final Container container) {
+    final AccessLists bartersAcl = new AccessLists();
+    bartersAcl.getAdmins().setMode(GroupListMode.NORMAL);
+    bartersAcl.getAdmins().add(container.getOwner());
+    bartersAcl.getEditors().setMode(GroupListMode.NORMAL);
+    bartersAcl.getViewers().setMode(GroupListMode.EVERYONE);
+    containerManager.setAccessList(container, bartersAcl);
+  }
+}


Property changes on: trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/barters/shared/BartersConstants.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/shared/BartersConstants.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/barters/shared/BartersConstants.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,32 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.barters.shared;
+
+public final class BartersConstants {
+
+  public static final String NAME = "barters";
+  public static final String ROOT_NAME = "barters";
+  public static final String TYPE_BARTER = NAME + "." + "barter";
+  public static final String TYPE_FOLDER = NAME + "." + "folder";
+  public static final String TYPE_ROOT = NAME + "." + "root";
+
+  private BartersConstants() {
+  }
+}
\ No newline at end of file


Property changes on: trunk/src/main/java/cc/kune/barters/shared/BartersConstants.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -27,7 +27,7 @@
 import cc.kune.core.client.i18n.I18nUITranslationService;
 import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
 import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.gspace.client.tool.old.FoldableAbstractClientTool;
+import cc.kune.gspace.client.tool.FoldableAbstractClientTool;
 import cc.kune.gspace.client.tool.selector.ToolSelector;
 
 import com.google.inject.Inject;

Modified: trunk/src/main/java/cc/kune/blogs/server/BlogServerTool.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/server/BlogServerTool.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/blogs/server/BlogServerTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -45,110 +45,111 @@
 
 public class BlogServerTool implements ServerTool {
 
-    public static final String ROOT_NAME = "blogs";
+  public static final String ROOT_NAME = "blogs";
 
-    private final ToolConfigurationManager configurationManager;
-    private final ContainerManager containerManager;
-    private final ContentManager contentManager;
-    private final I18nTranslationService i18n;
+  private final ToolConfigurationManager configurationManager;
+  private final ContainerManager containerManager;
+  private final ContentManager contentManager;
+  private final I18nTranslationService i18n;
 
-    @Inject
-    public BlogServerTool(final ContentManager contentManager, final ContainerManager containerManager,
-            final ToolConfigurationManager configurationManager, final I18nTranslationService translationService) {
-        this.contentManager = contentManager;
-        this.containerManager = containerManager;
-        this.configurationManager = configurationManager;
-        this.i18n = translationService;
-    }
+  @Inject
+  public BlogServerTool(final ContentManager contentManager, final ContainerManager containerManager,
+      final ToolConfigurationManager configurationManager,
+      final I18nTranslationService translationService) {
+    this.contentManager = contentManager;
+    this.containerManager = containerManager;
+    this.configurationManager = configurationManager;
+    this.i18n = translationService;
+  }
 
-    void checkContainerTypeId(final String parentTypeId, final String typeId) {
-        if (typeId.equals(TYPE_BLOG)) {
-            // ok valid container
-            if ((typeId.equals(TYPE_BLOG) && parentTypeId.equals(TYPE_ROOT))) {
-                // ok
-            } else {
-                throw new ContainerNotPermittedException();
-            }
-        } else {
-            throw new ContainerNotPermittedException();
-        }
+  void checkContainerTypeId(final String parentTypeId, final String typeId) {
+    if (typeId.equals(TYPE_BLOG)) {
+      // ok valid container
+      if ((typeId.equals(TYPE_BLOG) && parentTypeId.equals(TYPE_ROOT))) {
+        // ok
+      } else {
+        throw new ContainerNotPermittedException();
+      }
+    } else {
+      throw new ContainerNotPermittedException();
     }
+  }
 
-    void checkContentTypeId(final String parentTypeId, final String typeId) {
-        if (typeId.equals(TYPE_UPLOADEDFILE) || typeId.equals(TYPE_POST)) {
-            // ok valid content
-            if ((typeId.equals(TYPE_UPLOADEDFILE) && parentTypeId.equals(TYPE_BLOG))
-                    || (typeId.equals(TYPE_POST) && parentTypeId.equals(TYPE_BLOG))) {
-                // ok
-            } else {
-                throw new ContentNotPermittedException();
-            }
+  void checkContentTypeId(final String parentTypeId, final String typeId) {
+    if (typeId.equals(TYPE_UPLOADEDFILE) || typeId.equals(TYPE_POST)) {
+      // ok valid content
+      if ((typeId.equals(TYPE_UPLOADEDFILE) && parentTypeId.equals(TYPE_BLOG))
+          || (typeId.equals(TYPE_POST) && parentTypeId.equals(TYPE_BLOG))) {
+        // ok
+      } else {
+        throw new ContentNotPermittedException();
+      }
 
-        } else {
-            throw new ContentNotPermittedException();
-        }
+    } else {
+      throw new ContentNotPermittedException();
     }
+  }
 
-    @Override
-    public void checkTypesBeforeContainerCreation(final String parentTypeId, final String typeId) {
-        checkContainerTypeId(parentTypeId, typeId);
-    }
+  @Override
+  public void checkTypesBeforeContainerCreation(final String parentTypeId, final String typeId) {
+    checkContainerTypeId(parentTypeId, typeId);
+  }
 
-    @Override
-    public void checkTypesBeforeContentCreation(final String parentTypeId, final String typeId) {
-        checkContentTypeId(parentTypeId, typeId);
-    }
+  @Override
+  public void checkTypesBeforeContentCreation(final String parentTypeId, final String typeId) {
+    checkContentTypeId(parentTypeId, typeId);
+  }
 
-    @Override
-    public String getName() {
-        return NAME;
-    }
+  @Override
+  public String getName() {
+    return NAME;
+  }
 
-    @Override
-    public String getRootName() {
-        return ROOT_NAME;
-    }
+  @Override
+  public String getRootName() {
+    return ROOT_NAME;
+  }
 
-    @Override
-    public ServerToolTarget getTarget() {
-        return ServerToolTarget.forBoth;
-    }
+  @Override
+  public ServerToolTarget getTarget() {
+    return ServerToolTarget.forBoth;
+  }
 
-    @Override
-    public Group initGroup(final User user, final Group group, final Object... otherVars) {
-        final ToolConfiguration config = new ToolConfiguration();
-        final Container rootFolder = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
-        config.setRoot(rootFolder);
-        group.setToolConfig(NAME, config);
-        configurationManager.persist(config);
+  @Override
+  public Group initGroup(final User user, final Group group, final Object... otherVars) {
+    final ToolConfiguration config = new ToolConfiguration();
+    final Container rootFolder = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
+    config.setRoot(rootFolder);
+    group.setToolConfig(NAME, config);
+    configurationManager.persist(config);
 
-        final I18nLanguage language = user.getLanguage();
-        final Container blog = containerManager.createFolder(group, rootFolder, i18n.t("Blog sample"), language,
-                TYPE_BLOG);
+    final I18nLanguage language = user.getLanguage();
+    final Container blog = containerManager.createFolder(group, rootFolder, i18n.t("Blog sample"),
+        language, TYPE_BLOG);
 
-        final Content content = contentManager.createContent(i18n.t("A post sample"),
-                i18n.t("This is only a post sample. You can edit it, rename the post and this blog"), user, blog,
-                TYPE_POST);
-        content.addAuthor(user);
-        content.setLanguage(language);
-        content.setTypeId(TYPE_POST);
-        content.setStatus(ContentStatus.publishedOnline);
+    final Content content = contentManager.createContent(i18n.t("A post sample"),
+        i18n.t("This is only a post sample. You can edit it, rename the post and this blog"), user,
+        blog, TYPE_POST);
+    content.addAuthor(user);
+    content.setLanguage(language);
+    content.setTypeId(TYPE_POST);
+    content.setStatus(ContentStatus.publishedOnline);
 
-        contentManager.save(user, content);
-        return group;
-    }
+    contentManager.save(user, content);
+    return group;
+  }
 
-    @Override
-    public void onCreateContainer(final Container container, final Container parent) {
-    }
+  @Override
+  public void onCreateContainer(final Container container, final Container parent) {
+  }
 
-    @Override
-    public void onCreateContent(final Content content, final Container parent) {
-    }
+  @Override
+  public void onCreateContent(final Content content, final Container parent) {
+  }
 
-    @Override
-    @Inject
-    public void register(final ServerToolRegistry registry) {
-        registry.register(this);
-    }
+  @Override
+  @Inject
+  public void register(final ServerToolRegistry registry) {
+    registry.register(this);
+  }
 }

Modified: trunk/src/main/java/cc/kune/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/client/KuneEntryPoint.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/client/KuneEntryPoint.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -79,6 +79,7 @@
     ginjector.getDocsParts();
     ginjector.getBlogsParts();
     ginjector.getWikiParts();
+    ginjector.getBartersParts();
     ginjector.getSiteLogoPresenter();
     ginjector.getSpacesTabPresenter();
     ginjector.getChatClient();

Modified: trunk/src/main/java/cc/kune/client/KuneGinjector.java
===================================================================
--- trunk/src/main/java/cc/kune/client/KuneGinjector.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/client/KuneGinjector.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -19,6 +19,8 @@
  */
 package cc.kune.client;
 
+import cc.kune.barters.client.BartersGinModule;
+import cc.kune.barters.client.BartersGinjector;
 import cc.kune.blogs.client.BlogsGinModule;
 import cc.kune.blogs.client.BlogsGinjector;
 import cc.kune.chat.client.ChatClient;
@@ -71,9 +73,9 @@
 
 @GinModules({ KuneGinModule.class, CoreGinModule.class, ChatGinModule.class, WaveGinModule.class,
     PSpaceGinModule.class, GSpaceGinModule.class, DocsGinModule.class, BlogsGinModule.class,
-    WikiGinModule.class })
+    WikiGinModule.class, BartersGinModule.class })
 public interface KuneGinjector extends Ginjector, GSpaceGinjector, DocsGinjector, BlogsGinjector,
-    WikiGinjector {
+    WikiGinjector, BartersGinjector {
 
   /*
    * You have to add here all the GWTPresenters (as Provider or AsyncProvider)

Modified: trunk/src/main/java/cc/kune/core/client/resources/nav/NavResources.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/resources/nav/NavResources.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/core/client/resources/nav/NavResources.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -24,90 +24,96 @@
 
 public interface NavResources extends ClientBundle {
 
-    @Source("blog.png")
-    ImageResource blog();
+  @Source("barter.png")
+  ImageResource barter();
 
-    @Source("blog_add.png")
-    ImageResource blogAdd();
+  @Source("barter_add.png")
+  ImageResource barterAdd();
 
-    @Source("download.png")
-    ImageResource download();
+  @Source("blog.png")
+  ImageResource blog();
 
-    @Source("film.png")
-    ImageResource film();
+  @Source("blog_add.png")
+  ImageResource blogAdd();
 
-    @Source("folder.png")
-    ImageResource folder();
+  @Source("download.png")
+  ImageResource download();
 
-    @Source("folder_add.png")
-    ImageResource folderAdd();
+  @Source("film.png")
+  ImageResource film();
 
-    @Source("gallery.png")
-    ImageResource gallery();
+  @Source("folder.png")
+  ImageResource folder();
 
-    @Source("gallery_add.png")
-    ImageResource galleryAdd();
+  @Source("folder_add.png")
+  ImageResource folderAdd();
 
-    @Source("go.png")
-    ImageResource go();
+  @Source("gallery.png")
+  ImageResource gallery();
 
-    @Source("music.png")
-    ImageResource music();
+  @Source("gallery_add.png")
+  ImageResource galleryAdd();
 
-    @Source("page.png")
-    ImageResource page();
+  @Source("go.png")
+  ImageResource go();
 
-    @Source("page_add.png")
-    ImageResource pageAdd();
+  @Source("music.png")
+  ImageResource music();
 
-    @Source("page_excel.png")
-    ImageResource pageExcel();
+  @Source("page.png")
+  ImageResource page();
 
-    @Source("page_pdf.png")
-    ImageResource pagePdf();
+  @Source("page_add.png")
+  ImageResource pageAdd();
 
-    @Source("page_pps.png")
-    ImageResource pagePps();
+  @Source("page_excel.png")
+  ImageResource pageExcel();
 
-    @Source("page_text.png")
-    ImageResource pageText();
+  @Source("page_pdf.png")
+  ImageResource pagePdf();
 
-    @Source("page_word.png")
-    ImageResource pageWord();
+  @Source("page_pps.png")
+  ImageResource pagePps();
 
-    @Source("page_zip.png")
-    ImageResource pageZip();
+  @Source("page_text.png")
+  ImageResource pageText();
 
-    @Source("picture.png")
-    ImageResource picture();
+  @Source("page_word.png")
+  ImageResource pageWord();
 
-    @Source("post.png")
-    ImageResource post();
+  @Source("page_zip.png")
+  ImageResource pageZip();
 
-    @Source("post_add.png")
-    ImageResource postAdd();
+  @Source("picture.png")
+  ImageResource picture();
 
-    @Source("refresh.png")
-    ImageResource refresh();
+  @Source("post.png")
+  ImageResource post();
 
-    @Source("room.png")
-    ImageResource room();
+  @Source("post_add.png")
+  ImageResource postAdd();
 
-    @Source("room_add.png")
-    ImageResource roomAdd();
+  @Source("refresh.png")
+  ImageResource refresh();
 
-    @Source("upload.png")
-    ImageResource upload();
+  @Source("room.png")
+  ImageResource room();
 
-    @Source("wiki.png")
-    ImageResource wiki();
+  @Source("room_add.png")
+  ImageResource roomAdd();
 
-    @Source("wiki_add.png")
-    ImageResource wikiAdd();
+  @Source("upload.png")
+  ImageResource upload();
 
-    @Source("wikipage.png")
-    ImageResource wikipage();
+  @Source("wiki.png")
+  ImageResource wiki();
 
-    @Source("wikipage_add.png")
-    ImageResource wikipageAdd();
+  @Source("wiki_add.png")
+  ImageResource wikiAdd();
+
+  @Source("wikipage.png")
+  ImageResource wikipage();
+
+  @Source("wikipage_add.png")
+  ImageResource wikipageAdd();
 }

Added: trunk/src/main/java/cc/kune/core/client/resources/nav/barter.png
===================================================================
(Binary files differ)


Property changes on: trunk/src/main/java/cc/kune/core/client/resources/nav/barter.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/src/main/java/cc/kune/core/client/resources/nav/barter_add.png
===================================================================
(Binary files differ)


Property changes on: trunk/src/main/java/cc/kune/core/client/resources/nav/barter_add.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/src/main/java/cc/kune/core/server/KuneRackModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/KuneRackModule.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/core/server/KuneRackModule.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -22,6 +22,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import cc.kune.barters.server.BarterServerModule;
 import cc.kune.blogs.server.BlogServerModule;
 import cc.kune.core.client.rpcservices.ContentService;
 import cc.kune.core.client.rpcservices.GroupService;
@@ -33,8 +34,8 @@
 import cc.kune.core.server.manager.file.EntityLogoDownloadManager;
 import cc.kune.core.server.manager.file.EntityLogoUploadManager;
 import cc.kune.core.server.manager.file.FileDownloadManager;
+import cc.kune.core.server.manager.file.FileGwtUploadServlet;
 import cc.kune.core.server.manager.file.FileUploadManager;
-import cc.kune.core.server.manager.file.FileGwtUploadServlet;
 import cc.kune.core.server.properties.PropertiesFileName;
 import cc.kune.core.server.rack.RackBuilder;
 import cc.kune.core.server.rack.RackModule;
@@ -144,6 +145,7 @@
     builder.use(new DocumentServerModule());
     builder.use(new BlogServerModule());
     builder.use(new WikiServerModule());
+    builder.use(new BarterServerModule());
     // builder.use(new ChatServerModule());
     // builder.use(new GalleryServerModule());
     builder.use(new RESTServicesModule());

Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContentManager.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/core/server/content/ContentManager.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -19,6 +19,7 @@
  */
 package cc.kune.core.server.content;
 
+import java.net.URL;
 import java.util.Date;
 
 import cc.kune.core.client.errors.DefaultException;
@@ -50,6 +51,9 @@
 
   Content createContent(String title, String body, User author, Container container, String typeId);
 
+  Content createContent(String title, String body, User author, Container container, String typeId,
+      URL gadgetUrl);
+
   boolean findIfExistsTitle(Container container, String title);
 
   Double getRateAvg(Content content);

Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -19,6 +19,7 @@
  */
 package cc.kune.core.server.content;
 
+import java.net.URL;
 import java.util.Date;
 import java.util.List;
 
@@ -113,6 +114,12 @@
   @Override
   public Content createContent(final String title, final String body, final User author,
       final Container container, final String typeId) {
+    return createContent(title, body, author, container, typeId, KuneWaveManager.WITHOUT_GADGET);
+  }
+
+  @Override
+  public Content createContent(final String title, final String body, final User author,
+      final Container container, final String typeId, final URL gadgetUrl) {
     FilenameUtils.checkBasicFilename(title);
     final String newtitle = findInexistentTitle(container, title);
     final Content newContent = new Content();
@@ -125,7 +132,7 @@
     revision.setTitle(newtitle);
     // Duplicate in StateServiceDefault
     if (newContent.isWave()) {
-      final WaveRef waveRef = kuneWaveManager.createWave(newtitle, body,
+      final WaveRef waveRef = kuneWaveManager.createWave(newtitle, body, gadgetUrl,
           participantUtils.of(author.getShortName()));
       newContent.setWaveId(JavaWaverefEncoder.encodeToUriPathSegment(waveRef));
       newContent.setModifiedOn((new Date()).getTime());

Modified: trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -19,52 +19,62 @@
  */
 package cc.kune.core.server.content;
 
+import java.net.URL;
 
+import cc.kune.core.server.tool.ServerTool;
 import cc.kune.core.server.tool.ServerToolRegistry;
+import cc.kune.core.server.tool.ServerWaveTool;
 import cc.kune.domain.Container;
 import cc.kune.domain.Content;
 import cc.kune.domain.Group;
 import cc.kune.domain.I18nLanguage;
 import cc.kune.domain.User;
+import cc.kune.wave.server.KuneWaveManager;
 
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
 @Singleton
 public class CreationServiceDefault implements CreationService {
-    private final ContainerManager containerManager;
-    private final ContentManager contentManager;
-    private final ServerToolRegistry tools;
+  private final ContainerManager containerManager;
+  private final ContentManager contentManager;
+  private final ServerToolRegistry tools;
 
-    @Inject
-    public CreationServiceDefault(final ContainerManager containerManager, final ContentManager contentManager,
-            final ServerToolRegistry toolRegistry) {
-        this.containerManager = containerManager;
-        this.contentManager = contentManager;
-        this.tools = toolRegistry;
-    }
+  @Inject
+  public CreationServiceDefault(final ContainerManager containerManager,
+      final ContentManager contentManager, final ServerToolRegistry toolRegistry) {
+    this.containerManager = containerManager;
+    this.contentManager = contentManager;
+    this.tools = toolRegistry;
+  }
 
-    public Content createContent(final String title, final String body, final User user, final Container container,
-            final String typeId) {
-        final String toolName = container.getToolName();
-        tools.get(toolName).checkTypesBeforeContentCreation(container.getTypeId(), typeId);
-        final Content content = contentManager.createContent(title, body, user, container, typeId);
-        tools.get(toolName).onCreateContent(content, container);
-        return content;
-    }
+  @Override
+  public Content createContent(final String title, final String body, final User user,
+      final Container container, final String typeId) {
+    final String toolName = container.getToolName();
+    final ServerTool tool = tools.get(toolName);
+    tool.checkTypesBeforeContentCreation(container.getTypeId(), typeId);
+    final URL gagdetUrl = tool instanceof ServerWaveTool ? ((ServerWaveTool) tool).getGadgetUrl()
+        : KuneWaveManager.WITHOUT_GADGET;
+    final Content content = contentManager.createContent(title, body, user, container, typeId, gagdetUrl);
+    tool.onCreateContent(content, container);
+    return content;
+  }
 
-    public Container createFolder(final Group group, final Long parentFolderId, final String name,
-            final I18nLanguage language, final String typeId) {
-        final Container parent = containerManager.find(parentFolderId);
-        final String toolName = parent.getToolName();
-        tools.get(toolName).checkTypesBeforeContainerCreation(parent.getTypeId(), typeId);
-        final Container child = containerManager.createFolder(group, parent, name, language, typeId);
-        tools.get(toolName).onCreateContainer(child, parent);
-        return child;
-    }
+  @Override
+  public Container createFolder(final Group group, final Long parentFolderId, final String name,
+      final I18nLanguage language, final String typeId) {
+    final Container parent = containerManager.find(parentFolderId);
+    final String toolName = parent.getToolName();
+    tools.get(toolName).checkTypesBeforeContainerCreation(parent.getTypeId(), typeId);
+    final Container child = containerManager.createFolder(group, parent, name, language, typeId);
+    tools.get(toolName).onCreateContainer(child, parent);
+    return child;
+  }
 
-    public Content saveContent(final User editor, final Content content, final String body) {
-        return contentManager.save(editor, content, body);
-    }
+  @Override
+  public Content saveContent(final User editor, final Content content, final String body) {
+    return contentManager.save(editor, content, body);
+  }
 
 }

Modified: trunk/src/main/java/cc/kune/core/server/tool/ServerTool.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/tool/ServerTool.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/core/server/tool/ServerTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -32,21 +32,21 @@
  */
 public interface ServerTool {
 
-    void checkTypesBeforeContainerCreation(String parentTypeId, String typeId);
+  void checkTypesBeforeContainerCreation(String parentTypeId, String typeId);
 
-    void checkTypesBeforeContentCreation(String parentTypeId, String typeId);
+  void checkTypesBeforeContentCreation(String parentTypeId, String typeId);
 
-    String getName();
+  String getName();
 
-    String getRootName();
+  String getRootName();
 
-    ServerToolTarget getTarget();
+  ServerToolTarget getTarget();
 
-    Group initGroup(User user, Group group, Object... vars);
+  Group initGroup(User user, Group group, Object... vars);
 
-    void onCreateContainer(Container container, Container parent);
+  void onCreateContainer(Container container, Container parent);
 
-    void onCreateContent(Content content, Container parent);
+  void onCreateContent(Content content, Container parent);
 
-    void register(ServerToolRegistry registry);
+  void register(ServerToolRegistry registry);
 }

Added: trunk/src/main/java/cc/kune/core/server/tool/ServerWaveTool.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/tool/ServerWaveTool.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/tool/ServerWaveTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,9 @@
+package cc.kune.core.server.tool;
+
+import java.net.URL;
+
+public interface ServerWaveTool extends ServerTool {
+
+  URL getGadgetUrl();
+
+}


Property changes on: trunk/src/main/java/cc/kune/core/server/tool/ServerWaveTool.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: trunk/src/main/java/cc/kune/core/server/utils/UrlUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/utils/UrlUtils.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/utils/UrlUtils.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,25 @@
+package cc.kune.core.server.utils;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class UrlUtils {
+
+  private static final Log LOG = LogFactory.getLog(UrlUtils.class);
+
+  public static URL of(final String urlString) {
+    URL url = null;
+    try {
+      url = new URL(urlString);
+      return url;
+    } catch (final MalformedURLException e) {
+      LOG.error("Error creating url with" + urlString);
+      e.printStackTrace();
+    }
+    return url;
+  }
+
+}


Property changes on: trunk/src/main/java/cc/kune/core/server/utils/UrlUtils.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -27,7 +27,7 @@
 import cc.kune.core.client.i18n.I18nUITranslationService;
 import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
 import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.gspace.client.tool.old.FoldableAbstractClientTool;
+import cc.kune.gspace.client.tool.FoldableAbstractClientTool;
 import cc.kune.gspace.client.tool.selector.ToolSelector;
 
 import com.google.inject.Inject;

Modified: trunk/src/main/java/cc/kune/docs/server/DocumentServerTool.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/server/DocumentServerTool.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/docs/server/DocumentServerTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -48,106 +48,108 @@
 import com.google.inject.Inject;
 
 public class DocumentServerTool implements ServerTool {
-    private final ToolConfigurationManager configurationManager;
-    private final ContainerManager containerManager;
-    private final ContentManager contentManager;
-    private final I18nTranslationService i18n;
+  private final ToolConfigurationManager configurationManager;
+  private final ContainerManager containerManager;
+  private final ContentManager contentManager;
+  private final I18nTranslationService i18n;
 
-    @Inject
-    public DocumentServerTool(final ContentManager contentManager, final ContainerManager containerManager,
-            final ToolConfigurationManager configurationManager, final I18nTranslationService translationService) {
-        this.contentManager = contentManager;
-        this.containerManager = containerManager;
-        this.configurationManager = configurationManager;
-        this.i18n = translationService;
-    }
+  @Inject
+  public DocumentServerTool(final ContentManager contentManager,
+      final ContainerManager containerManager, final ToolConfigurationManager configurationManager,
+      final I18nTranslationService translationService) {
+    this.contentManager = contentManager;
+    this.containerManager = containerManager;
+    this.configurationManager = configurationManager;
+    this.i18n = translationService;
+  }
 
-    void checkContainerTypeId(final String parentTypeId, final String typeId) {
-        if (typeId.equals(TYPE_FOLDER)) {
-            // ok valid container
-            if ((typeId.equals(TYPE_FOLDER) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER)))) {
-                // ok
-            } else {
-                throw new ContainerNotPermittedException();
-            }
-        } else {
-            throw new ContainerNotPermittedException();
-        }
+  void checkContainerTypeId(final String parentTypeId, final String typeId) {
+    if (typeId.equals(TYPE_FOLDER)) {
+      // ok valid container
+      if ((typeId.equals(TYPE_FOLDER) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER)))) {
+        // ok
+      } else {
+        throw new ContainerNotPermittedException();
+      }
+    } else {
+      throw new ContainerNotPermittedException();
     }
+  }
 
-    void checkContentTypeId(final String parentTypeId, final String typeId) {
-        if (typeId.equals(TYPE_DOCUMENT) || typeId.equals(TYPE_UPLOADEDFILE)) {
-            // ok valid content
-            if ((typeId.equals(TYPE_DOCUMENT) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER)))
-                    || (typeId.equals(TYPE_UPLOADEDFILE) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER)))) {
-                // ok
-            } else {
-                throw new ContentNotPermittedException();
-            }
+  void checkContentTypeId(final String parentTypeId, final String typeId) {
+    if (typeId.equals(TYPE_DOCUMENT) || typeId.equals(TYPE_UPLOADEDFILE)) {
+      // ok valid content
+      if ((typeId.equals(TYPE_DOCUMENT) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER)))
+          || (typeId.equals(TYPE_UPLOADEDFILE) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER)))) {
+        // ok
+      } else {
+        throw new ContentNotPermittedException();
+      }
 
-        } else {
-            throw new ContentNotPermittedException();
-        }
+    } else {
+      throw new ContentNotPermittedException();
     }
+  }
 
-    @Override
-    public void checkTypesBeforeContainerCreation(final String parentTypeId, final String typeId) {
-        checkContainerTypeId(parentTypeId, typeId);
-    }
+  @Override
+  public void checkTypesBeforeContainerCreation(final String parentTypeId, final String typeId) {
+    checkContainerTypeId(parentTypeId, typeId);
+  }
 
-    @Override
-    public void checkTypesBeforeContentCreation(final String parentTypeId, final String typeId) {
-        checkContentTypeId(parentTypeId, typeId);
-    }
+  @Override
+  public void checkTypesBeforeContentCreation(final String parentTypeId, final String typeId) {
+    checkContentTypeId(parentTypeId, typeId);
+  }
 
-    @Override
-    public String getName() {
-        return NAME;
-    }
+  @Override
+  public String getName() {
+    return NAME;
+  }
 
-    @Override
-    public String getRootName() {
-        return ROOT_NAME;
-    }
+  @Override
+  public String getRootName() {
+    return ROOT_NAME;
+  }
 
-    @Override
-    public ServerToolTarget getTarget() {
-        return ServerToolTarget.forBoth;
-    }
+  @Override
+  public ServerToolTarget getTarget() {
+    return ServerToolTarget.forBoth;
+  }
 
-    @Override
-    public Group initGroup(final User user, final Group group, final Object... otherVars) {
-        final ToolConfiguration config = new ToolConfiguration();
-        final Container rootFolder = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
-        config.setRoot(rootFolder);
-        group.setToolConfig(NAME, config);
-        configurationManager.persist(config);
+  @Override
+  public Group initGroup(final User user, final Group group, final Object... otherVars) {
+    final ToolConfiguration config = new ToolConfiguration();
+    final Container rootFolder = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
+    config.setRoot(rootFolder);
+    group.setToolConfig(NAME, config);
+    configurationManager.persist(config);
 
-        final boolean hasVars = otherVars.length >= 2;
-        final String title = hasVars ? (String) otherVars[0] : i18n.t("Document sample");
-        final String body = hasVars ? (String) otherVars[1] : i18n.t("This is only a sample of document");
+    final boolean hasVars = otherVars.length >= 2;
+    final String title = hasVars ? (String) otherVars[0] : i18n.t("Document sample");
+    final String body = hasVars ? (String) otherVars[1] : i18n.t("This is only a sample of document");
 
-        final Content content = contentManager.createContent(title, body, user, rootFolder, DocsConstants.TYPE_DOCUMENT);
-        content.addAuthor(user);
-        content.setLanguage(user.getLanguage());
-        content.setTypeId(TYPE_DOCUMENT);
-        content.setStatus(ContentStatus.publishedOnline);
-        content.setPublishedOn(new Date());
-        group.setDefaultContent(content);
-        return group;
-    }
+    final Content content = contentManager.createContent(title, body, user, rootFolder,
+        DocsConstants.TYPE_DOCUMENT);
+    content.addAuthor(user);
+    content.setLanguage(user.getLanguage());
+    content.setTypeId(TYPE_DOCUMENT);
+    content.setStatus(ContentStatus.publishedOnline);
+    content.setPublishedOn(new Date());
+    group.setDefaultContent(content);
+    return group;
+  }
 
-    @Override
-    public void onCreateContainer(final Container container, final Container parent) {
-    }
+  @Override
+  public void onCreateContainer(final Container container, final Container parent) {
+  }
 
-    @Override
-    public void onCreateContent(final Content content, final Container parent) {
-    }
+  @Override
+  public void onCreateContent(final Content content, final Container parent) {
+  }
 
-    @Override
-    @Inject
-    public void register(final ServerToolRegistry registry) {
-        registry.register(this);
-    }
+  @Override
+  @Inject
+  public void register(final ServerToolRegistry registry) {
+    registry.register(this);
+  }
 }

Modified: trunk/src/main/java/cc/kune/domain/Content.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/Content.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/domain/Content.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -52,6 +52,7 @@
 import org.hibernate.search.annotations.IndexedEmbedded;
 import org.hibernate.validator.NotNull;
 
+import cc.kune.barters.shared.BartersConstants;
 import cc.kune.blogs.shared.BlogsConstants;
 import cc.kune.core.shared.domain.ContentStatus;
 import cc.kune.core.shared.domain.utils.StateToken;
@@ -261,7 +262,7 @@
   @Transient
   public boolean isWave() {
     return (typeId.equals(DocsConstants.TYPE_DOCUMENT)) || typeId.equals(WikiConstants.TYPE_WIKIPAGE)
-        || (typeId.equals(BlogsConstants.TYPE_POST));
+        || (typeId.equals(BlogsConstants.TYPE_POST) || typeId.equals(BartersConstants.TYPE_BARTER));
   }
 
   public void removeAuthor(final User user) {

Copied: trunk/src/main/java/cc/kune/gspace/client/tool/AbstractClientTool.java (from rev 1361, trunk/src/main/java/cc/kune/gspace/client/tool/old/AbstractClientTool.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/AbstractClientTool.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/AbstractClientTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.gspace.client.tool;
+
+import cc.kune.gspace.client.tool.selector.ToolSelector;
+import cc.kune.gspace.client.tool.selector.ToolSelectorItemPanel;
+import cc.kune.gspace.client.tool.selector.ToolSelectorItemPresenter;
+
+public abstract class AbstractClientTool {
+
+    public AbstractClientTool(final String shortName, final String longName, final ToolSelector toolSelector) {
+        final ToolSelectorItemPresenter presenter = new ToolSelectorItemPresenter(shortName, longName, toolSelector);
+        final ToolSelectorItemPanel panel = new ToolSelectorItemPanel();
+        presenter.init(panel);
+    }
+
+    public abstract String getName();
+}

Copied: trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java (from rev 1361, trunk/src/main/java/cc/kune/gspace/client/tool/old/FoldableAbstractClientTool.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -0,0 +1,124 @@
+/*
+ *
+ * Copyright (C) 2007-2011 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 cc.kune.gspace.client.tool;
+
+import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
+import cc.kune.core.shared.dto.BasicMimeTypeDTO;
+import cc.kune.gspace.client.tool.selector.ToolSelector;
+
+public abstract class FoldableAbstractClientTool extends AbstractClientTool {
+
+  protected final ContentCapabilitiesRegistry contentCapabilitiesRegistry;
+
+  public FoldableAbstractClientTool(final String shortName, final String longName,
+      final ToolSelector toolSelector, final ContentCapabilitiesRegistry contentCapabilitiesRegistry) {
+    super(shortName, longName, toolSelector);
+    this.contentCapabilitiesRegistry = contentCapabilitiesRegistry;
+  }
+
+  protected void registerAclEditableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getAclEditable().register(typeIds);
+  }
+
+  protected void registerAuthorableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getAuthorable().register(typeIds);
+  }
+
+  protected void registerComentableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getComentable().register(typeIds);
+  }
+
+  public void registerContentTypeIcon(final String typeId, final BasicMimeTypeDTO mimeType,
+      final String iconUrl) {
+    contentCapabilitiesRegistry.getIconsRegistry().registerContentTypeIcon(typeId, mimeType, iconUrl);
+  }
+
+  public void registerContentTypeIcon(final String contentTypeId, final Object icon) {
+    contentCapabilitiesRegistry.getIconsRegistry().registerContentTypeIcon(contentTypeId, icon);
+  }
+
+  protected void registerDragableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getDragable().register(typeIds);
+  }
+
+  protected void registerDropableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getDropable().register(typeIds);
+  }
+
+  protected void registerEmailSubscribeAbleTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getEmailSubscribeAble().register(typeIds);
+  }
+
+  protected void registerLicensableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getLicensable().register(typeIds);
+  }
+
+  protected void registerPublishModerableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getPublishModerable().register(typeIds);
+  }
+
+  protected void registerRateableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getRateable().register(typeIds);
+  }
+
+  protected void registerRenamableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getRenamable().register(typeIds);
+  }
+
+  protected void registerTageableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getTageable().register(typeIds);
+  }
+
+  protected void registerTranslatableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getTranslatable().register(typeIds);
+  }
+
+  protected void registerUploadTypesAndMimes(final String typeUploadedfile) {
+    registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("image"), "images/nav/picture.png");
+    registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("video"), "images/nav/film.png");
+    registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("audio"), "images/nav/music.png");
+    registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "pdf"),
+        "images/nav/page_pdf.png");
+    registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "zip"),
+        "images/nav/page_zip.png");
+    registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "zip"),
+        "images/nav/page_zip.png");
+    registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("text"), "images/nav/page_text.png");
+    registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "msword"),
+        "images/nav/page_word.png");
+    registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "excel"),
+        "images/nav/page_excel.png");
+    registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "mspowerpoint"),
+        "images/nav/page_pps.png");
+    registerContentTypeIcon(typeUploadedfile, "images/nav/page.png");
+  }
+
+  protected void registerVersionableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getVersionable().register(typeIds);
+  }
+
+  protected void registerXmppComentableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getXmppComentable().register(typeIds);
+  }
+
+  protected void registerXmppNotifyCapableTypes(final String... typeIds) {
+    contentCapabilitiesRegistry.getXmppNotificyCapable().register(typeIds);
+  }
+}

Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -37,84 +37,89 @@
 
 public class ToolSelectorItemPanel extends Composite implements ToolSelectorItemView {
 
-    interface ToolSelectorItemPanelUiBinder extends UiBinder<Widget, ToolSelectorItemPanel> {
-    }
+  interface ToolSelectorItemPanelUiBinder extends UiBinder<Widget, ToolSelectorItemPanel> {
+  }
 
-    private static ToolSelectorItemPanelUiBinder uiBinder = GWT.create(ToolSelectorItemPanelUiBinder.class);
+  private static ToolSelectorItemPanelUiBinder uiBinder = GWT.create(ToolSelectorItemPanelUiBinder.class);
 
-    @UiField
-    Image iconLeft;
-    @UiField
-    Image iconRight;
-    @UiField
-    InlineLabel label;
-    @UiField
-    FocusPanel self;
+  @UiField
+  Image iconLeft;
+  @UiField
+  Image iconRight;
+  @UiField
+  InlineLabel label;
+  @UiField
+  FocusPanel self;
 
-    public ToolSelectorItemPanel() {
-        initWidget(uiBinder.createAndBindUi(this));
-    }
+  public ToolSelectorItemPanel() {
+    initWidget(uiBinder.createAndBindUi(this));
+    setVisibleImpl(false);
+  }
 
-    @Override
-    public Widget asWidget() {
-        return this;
-    }
+  @Override
+  public Widget asWidget() {
+    return this;
+  }
 
-    private void focus() {
-        self.addStyleDependentName("focus");
-        self.removeStyleDependentName("nofocus");
-    }
+  private void focus() {
+    self.addStyleDependentName("focus");
+    self.removeStyleDependentName("nofocus");
+  }
 
-    @Override
-    public HasClickHandlers getFocus() {
-        return self;
-    }
+  @Override
+  public HasClickHandlers getFocus() {
+    return self;
+  }
 
-    @Override
-    public HasText getLabel() {
-        return label;
-    }
+  @Override
+  public HasText getLabel() {
+    return label;
+  }
 
-    @UiHandler("self")
-    void onSelfMouseOut(final MouseOutEvent event) {
-        unfocus();
-    }
+  @UiHandler("self")
+  void onSelfMouseOut(final MouseOutEvent event) {
+    unfocus();
+  }
 
-    // public void setTheme(final WsTheme oldTheme, final WsTheme newTheme) {
-    // if (oldTheme != null) {
-    // final String oldName = oldTheme.getName();
-    // hl.removeStyleDependentName(oldName);
-    // }
-    // final String newName = newTheme.getName();
-    // hl.addStyleDependentName(newName);
-    // super.setCornerStyleName(hl.getStyleName());
-    // }
+  // public void setTheme(final WsTheme oldTheme, final WsTheme newTheme) {
+  // if (oldTheme != null) {
+  // final String oldName = oldTheme.getName();
+  // hl.removeStyleDependentName(oldName);
+  // }
+  // final String newName = newTheme.getName();
+  // hl.addStyleDependentName(newName);
+  // super.setCornerStyleName(hl.getStyleName());
+  // }
 
-    @UiHandler("self")
-    void onSelfMouseOver(final MouseOverEvent event) {
-        focus();
-    }
+  @UiHandler("self")
+  void onSelfMouseOver(final MouseOverEvent event) {
+    focus();
+  }
 
-    @Override
-    public void setSelected(final boolean selected) {
-        if (selected) {
-            self.addStyleDependentName("selected");
-            self.removeStyleDependentName("notselected");
-            iconRight.setVisible(true);
-        } else {
-            self.addStyleDependentName("notselected");
-            self.removeStyleDependentName("selected");
-            iconRight.setVisible(false);
-        }
+  @Override
+  public void setSelected(final boolean selected) {
+    if (selected) {
+      self.addStyleDependentName("selected");
+      self.removeStyleDependentName("notselected");
+      iconRight.setVisible(true);
+    } else {
+      self.addStyleDependentName("notselected");
+      self.removeStyleDependentName("selected");
+      iconRight.setVisible(false);
     }
+  }
 
-    @Override
-    public void setVisible(final boolean visible) {
-        self.setVisible(visible);
-    }
+  @Override
+  public void setVisible(final boolean visible) {
+    setVisibleImpl(visible);
+  }
 
-    private void unfocus() {
-        self.addStyleDependentName("nofocus");
-        self.removeStyleDependentName("focus");
-    }
+  private void setVisibleImpl(final boolean visible) {
+    self.setVisible(visible);
+  }
+
+  private void unfocus() {
+    self.addStyleDependentName("nofocus");
+    self.removeStyleDependentName("focus");
+  }
 }

Modified: trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManager.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -19,23 +19,30 @@
  */
 package cc.kune.wave.server;
 
+import java.net.URL;
+
 import org.waveprotocol.wave.model.wave.ParticipantId;
 import org.waveprotocol.wave.model.waveref.WaveRef;
 
 import com.google.wave.api.Wavelet;
 
 public interface KuneWaveManager {
+  public static final URL WITHOUT_GADGET = null;
 
-    void addParticipant(WaveRef waveName, String author, String userWhoAdd, String newParticipant);
+  void addGadget(WaveRef waveName, String author, String gadgetUrl);
 
-    WaveRef createWave(String message, ParticipantId participants);
+  void addParticipant(WaveRef waveName, String author, String userWhoAdd, String newParticipant);
 
-    WaveRef createWave(String title, String message, ParticipantId... participantsArray);
+  WaveRef createWave(String message, ParticipantId participants);
 
-    Wavelet fetchWavelet(WaveRef waveRef, String author);
+  WaveRef createWave(String title, String message, ParticipantId... participantsArray);
 
-    boolean isParticipant(Wavelet wavelet, String user);
+  WaveRef createWave(String title, String message, URL gadgetUrl, ParticipantId... participantsArray);
 
-    void setTitle(WaveRef waveName, String title, String author);
+  Wavelet fetchWavelet(WaveRef waveRef, String author);
 
+  boolean isParticipant(Wavelet wavelet, String user);
+
+  void setTitle(WaveRef waveName, String title, String author);
+
 }

Modified: trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -19,8 +19,11 @@
  */
 package cc.kune.wave.server;
 
+import java.net.URL;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -43,26 +46,39 @@
 import cc.kune.common.client.utils.TextUtils;
 import cc.kune.core.client.errors.DefaultException;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.google.inject.Inject;
 import com.google.inject.name.Named;
 import com.google.wave.api.ApiIdSerializer;
 import com.google.wave.api.Blip;
 import com.google.wave.api.BlipData;
 import com.google.wave.api.BlipThread;
+import com.google.wave.api.Element;
+import com.google.wave.api.Gadget;
 import com.google.wave.api.JsonRpcConstant.ParamsProperty;
 import com.google.wave.api.JsonRpcResponse;
 import com.google.wave.api.OperationQueue;
 import com.google.wave.api.OperationRequest;
+import com.google.wave.api.OperationRequest.Parameter;
 import com.google.wave.api.ProtocolVersion;
 import com.google.wave.api.Wavelet;
 import com.google.wave.api.data.converter.EventDataConverterManager;
+import com.google.wave.api.impl.DocumentModifyAction;
+import com.google.wave.api.impl.DocumentModifyAction.BundledAnnotation;
+import com.google.wave.api.impl.DocumentModifyAction.ModifyHow;
 import com.google.wave.api.impl.WaveletData;
 
 public class KuneWaveManagerDefault implements KuneWaveManager {
   public static final Log LOG = LogFactory.getLog(KuneWaveManagerDefault.class);
 
+  // See: DocumentModifyServiceTest
+  private static final String NO_ANNOTATION_KEY = null;
+  private static final List<BundledAnnotation> NO_BUNDLED_ANNOTATIONS = Collections.emptyList();
   private static final String NO_TITLE = "";
 
+  private static final List<String> NO_VALUES = Collections.<String> emptyList();
+
   private final ConversationUtil conversationUtil;
   private final EventDataConverterManager converterManager;
   private final String domain;
@@ -85,6 +101,27 @@
   }
 
   @Override
+  public void addGadget(final WaveRef waveName, final String author, final String gadgetUrl) {
+    // See DocumentModifyServiceTest
+    final List<Element> elementsIn = Lists.newArrayListWithCapacity(1);
+    final Map<String, String> properties = Maps.newHashMap();
+    properties.put(Gadget.URL, gadgetUrl);
+    properties.put(Gadget.AUTHOR, participantUtils.of(author).getAddress());
+    final Gadget gadget = new Gadget(properties);
+
+    elementsIn.add(gadget);
+    final Wavelet wavelet = fetchWavelet(waveName, author);
+    final OperationQueue opQueue = new OperationQueue();
+    final Blip rootBlip = wavelet.getRootBlip();
+
+    opQueue.modifyDocument(rootBlip).addParameter(
+        Parameter.of(ParamsProperty.MODIFY_ACTION, new DocumentModifyAction(ModifyHow.INSERT, NO_VALUES,
+            NO_ANNOTATION_KEY, elementsIn, NO_BUNDLED_ANNOTATIONS, false)));
+    opQueue.modifyDocument(rootBlip).addParameter(Parameter.of(ParamsProperty.INDEX, 1));
+    doOperation(author, opQueue, "add gadget");
+  }
+
+  @Override
   public void addParticipant(final WaveRef waveName, final String author, final String userWhoAdds,
       final String participant) {
     final Wavelet wavelet = fetchWavelet(waveName, author);
@@ -92,26 +129,8 @@
         : author;
     final OperationQueue opQueue = new OperationQueue();
     opQueue.addParticipantToWavelet(wavelet, participantUtils.of(participant).toString());
-    final OperationContextImpl context = new OperationContextImpl(waveletProvider,
-        converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
-    final OperationRequest request = opQueue.getPendingOperations().get(0);
-    OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(whoAdd));
-    final String reqId = request.getId();
-    final JsonRpcResponse response = context.getResponse(reqId);
-    if (response != null && response.isError()) {
-      onFailure(context.getResponse(reqId).getErrorMessage());
-    }
-    OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() {
-      @Override
-      public void onFailure(final String arg0) {
-        KuneWaveManagerDefault.this.onFailure("Wave add participant failed, onFailure: " + arg0);
-      }
+    doOperation(whoAdd, opQueue, "add participant");
 
-      @Override
-      public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) {
-        LOG.info("Wave addParticipant success: " + arg1);
-      }
-    });
   }
 
   @Override
@@ -122,6 +141,12 @@
   @Override
   public WaveRef createWave(@Nonnull final String title, final String message,
       @Nonnull final ParticipantId... participantsArray) {
+    return createWave(title, message, WITHOUT_GADGET, participantsArray);
+  }
+
+  @Override
+  public WaveRef createWave(@Nonnull final String title, final String message, final URL gadgetUrl,
+      @Nonnull final ParticipantId... participantsArray) {
     String newWaveId = null;
     String newWaveletId = null;
     final Set<String> participants = new HashSet<String>();
@@ -134,6 +159,12 @@
     opQueue.setTitleOfWavelet(newWavelet, title);
     final Blip rootBlip = newWavelet.getRootBlip();
     rootBlip.append(new com.google.wave.api.Markup(message).getText());
+
+    if (gadgetUrl != WITHOUT_GADGET) {
+      final Gadget gadget = new Gadget(gadgetUrl.toString());
+      rootBlip.append(gadget);
+    }
+
     final OperationContextImpl context = new OperationContextImpl(waveletProvider,
         converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
     for (final OperationRequest req : opQueue.getPendingOperations()) {
@@ -178,6 +209,29 @@
     return wavename;
   }
 
+  private void doOperation(final String author, final OperationQueue opQueue, final String logComment) {
+    final OperationContextImpl context = new OperationContextImpl(waveletProvider,
+        converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
+    final OperationRequest request = opQueue.getPendingOperations().get(0);
+    OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author));
+    final String reqId = request.getId();
+    final JsonRpcResponse response = context.getResponse(reqId);
+    if (response != null && response.isError()) {
+      onFailure(context.getResponse(reqId).getErrorMessage());
+    }
+    OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() {
+      @Override
+      public void onFailure(final String arg0) {
+        KuneWaveManagerDefault.this.onFailure("Wave " + logComment + " failed, onFailure: " + arg0);
+      }
+
+      @Override
+      public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) {
+        LOG.info("Wave " + logComment + " success: " + arg1);
+      }
+    });
+  }
+
   public void doOperations(final WaveRef waveName, final String author, final OperationQueue opQueue,
       final SubmitRequestListener listener) {
     final OperationContextImpl context = new OperationContextImpl(waveletProvider,
@@ -245,26 +299,6 @@
     final Wavelet wavelet = fetchWavelet(waveName, author);
     final OperationQueue opQueue = new OperationQueue();
     opQueue.setTitleOfWavelet(wavelet, title);
-    final OperationContextImpl context = new OperationContextImpl(waveletProvider,
-        converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil);
-    final OperationRequest request = opQueue.getPendingOperations().get(0);
-    OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author));
-    final String reqId = request.getId();
-    final JsonRpcResponse response = context.getResponse(reqId);
-    if (response != null && response.isError()) {
-      onFailure(context.getResponse(reqId).getErrorMessage());
-    }
-    OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() {
-      @Override
-      public void onFailure(final String arg0) {
-        KuneWaveManagerDefault.this.onFailure("Wave set title failed, onFailure: " + arg0);
-      }
-
-      @Override
-      public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) {
-        LOG.info("Wave set title success: " + arg1);
-      }
-    });
+    doOperation(author, opQueue, "set title");
   }
-
 }

Modified: trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -27,7 +27,7 @@
 import cc.kune.core.client.i18n.I18nUITranslationService;
 import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
 import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.gspace.client.tool.old.FoldableAbstractClientTool;
+import cc.kune.gspace.client.tool.FoldableAbstractClientTool;
 import cc.kune.gspace.client.tool.selector.ToolSelector;
 
 import com.google.inject.Inject;

Modified: trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -36,81 +36,82 @@
 import com.google.inject.Inject;
 
 public class ChatServerTool implements ServerTool {
-    public static final String NAME = "chats";
-    public static final String ROOT_NAME = "chat rooms";
-    public static final String TYPE_CHAT = ChatClientTool.TYPE_CHAT;
-    public static final String TYPE_ROOM = ChatClientTool.TYPE_ROOM;
-    public static final String TYPE_ROOT = ChatClientTool.TYPE_ROOT;
-    private final ToolConfigurationManager configurationManager;
-    private final ContainerManager containerManager;
+  public static final String NAME = "chats";
+  public static final String ROOT_NAME = "chat rooms";
+  public static final String TYPE_CHAT = ChatClientTool.TYPE_CHAT;
+  public static final String TYPE_ROOM = ChatClientTool.TYPE_ROOM;
+  public static final String TYPE_ROOT = ChatClientTool.TYPE_ROOT;
+  private final ToolConfigurationManager configurationManager;
+  private final ContainerManager containerManager;
 
-    @Inject
-    public ChatServerTool(final ToolConfigurationManager configurationManager, final ContainerManager containerManager) {
-        this.configurationManager = configurationManager;
-        this.containerManager = containerManager;
-    }
+  @Inject
+  public ChatServerTool(final ToolConfigurationManager configurationManager,
+      final ContainerManager containerManager) {
+    this.configurationManager = configurationManager;
+    this.containerManager = containerManager;
+  }
 
-    private void checkContainerTypeId(final String parentTypeId, final String typeId) {
-        if (typeId.equals(TYPE_ROOM)) {
-            if (!parentTypeId.equals(TYPE_ROOT)) {
-                throw new ContainerNotPermittedException();
-            }
-            // ok valid container
-        } else {
-            throw new ContainerNotPermittedException();
-        }
+  private void checkContainerTypeId(final String parentTypeId, final String typeId) {
+    if (typeId.equals(TYPE_ROOM)) {
+      if (!parentTypeId.equals(TYPE_ROOT)) {
+        throw new ContainerNotPermittedException();
+      }
+      // ok valid container
+    } else {
+      throw new ContainerNotPermittedException();
     }
+  }
 
-    @Override
-    public void checkTypesBeforeContainerCreation(final String parentTypeId, final String typeId) {
-        checkContainerTypeId(parentTypeId, typeId);
-    }
+  @Override
+  public void checkTypesBeforeContainerCreation(final String parentTypeId, final String typeId) {
+    checkContainerTypeId(parentTypeId, typeId);
+  }
 
-    @Override
-    public void checkTypesBeforeContentCreation(final String parentTypeId, final String typeId) {
-        if (!parentTypeId.equals(TYPE_ROOM)) {
-            throw new ContainerNotPermittedException();
-        }
-        // in the future chat history checks
+  @Override
+  public void checkTypesBeforeContentCreation(final String parentTypeId, final String typeId) {
+    if (!parentTypeId.equals(TYPE_ROOM)) {
+      throw new ContainerNotPermittedException();
     }
+    // in the future chat history checks
+  }
 
-    @Override
-    public String getName() {
-        return NAME;
-    }
+  @Override
+  public String getName() {
+    return NAME;
+  }
 
-    @Override
-    public String getRootName() {
-        return ROOT_NAME;
-    }
+  @Override
+  public String getRootName() {
+    return ROOT_NAME;
+  }
 
-    @Override
-    public ServerToolTarget getTarget() {
-        return ServerToolTarget.forGroups;
-    }
+  @Override
+  public ServerToolTarget getTarget() {
+    return ServerToolTarget.forGroups;
+  }
 
-    @Override
-    public Group initGroup(final User user, final Group group, final Object... otherVars) {
-        final ToolConfiguration config = new ToolConfiguration();
-        final Container container = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
-        config.setRoot(container);
-        group.setToolConfig(NAME, config);
-        configurationManager.persist(config);
-        return group;
-    }
+  @Override
+  public Group initGroup(final User user, final Group group, final Object... otherVars) {
+    final ToolConfiguration config = new ToolConfiguration();
+    final Container container = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
+    config.setRoot(container);
+    group.setToolConfig(NAME, config);
+    configurationManager.persist(config);
+    return group;
+  }
 
-    @Override
-    public void onCreateContainer(final Container container, final Container parent) {
-    }
+  @Override
+  public void onCreateContainer(final Container container, final Container parent) {
+  }
 
-    @Override
-    public void onCreateContent(final Content content, final Container parent) {
-    }
+  @Override
+  public void onCreateContent(final Content content, final Container parent) {
+  }
 
-    @Override
-    @Inject
-    public void register(final ServerToolRegistry registry) {
-        registry.register(this);
-    }
+  @Override
+  @Inject
+  public void register(final ServerToolRegistry registry) {
+    registry.register(this);
+  }
 
 }

Modified: trunk/src/main/java/org/ourproject/kune/gallery/server/GalleryServerTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/server/GalleryServerTool.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/main/java/org/ourproject/kune/gallery/server/GalleryServerTool.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -37,99 +37,102 @@
 import com.google.inject.Inject;
 
 public class GalleryServerTool implements ServerTool {
-    public static final String NAME = "gallery";
-    public static final String ROOT_NAME = "gallery";
-    public static final String TYPE_ALBUM = NAME + "." + "album";
-    public static final String TYPE_ROOT = NAME + "." + "root";
+  public static final String NAME = "gallery";
+  public static final String ROOT_NAME = "gallery";
+  public static final String TYPE_ALBUM = NAME + "." + "album";
+  public static final String TYPE_ROOT = NAME + "." + "root";
 
-    public static final String TYPE_UPLOADEDFILE = NAME + "." + ToolConstants.UPLOADEDFILE_SUFFIX;
+  public static final String TYPE_UPLOADEDFILE = NAME + "." + ToolConstants.UPLOADEDFILE_SUFFIX;
 
-    private final ToolConfigurationManager configurationManager;
-    private final ContainerManager containerManager;
-    private final I18nTranslationService i18n;
+  private final ToolConfigurationManager configurationManager;
+  private final ContainerManager containerManager;
+  private final I18nTranslationService i18n;
 
-    @Inject
-    public GalleryServerTool(final ContainerManager containerManager,
-            final ToolConfigurationManager configurationManager, final I18nTranslationService translationService) {
-        this.containerManager = containerManager;
-        this.configurationManager = configurationManager;
-        this.i18n = translationService;
-    }
+  @Inject
+  public GalleryServerTool(final ContainerManager containerManager,
+      final ToolConfigurationManager configurationManager,
+      final I18nTranslationService translationService) {
+    this.containerManager = containerManager;
+    this.configurationManager = configurationManager;
+    this.i18n = translationService;
+  }
 
-    void checkContainerTypeId(final String parentTypeId, final String typeId) {
-        if (typeId.equals(TYPE_ALBUM)) {
-            // ok valid container
-            if ((typeId.equals(TYPE_ALBUM) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_ALBUM)))) {
-                // ok
-            } else {
-                throw new ContainerNotPermittedException();
-            }
-        } else {
-            throw new ContainerNotPermittedException();
-        }
+  void checkContainerTypeId(final String parentTypeId, final String typeId) {
+    if (typeId.equals(TYPE_ALBUM)) {
+      // ok valid container
+      if ((typeId.equals(TYPE_ALBUM) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_ALBUM)))) {
+        // ok
+      } else {
+        throw new ContainerNotPermittedException();
+      }
+    } else {
+      throw new ContainerNotPermittedException();
     }
+  }
 
-    void checkContentTypeId(final String parentTypeId, final String typeId) {
-        if (typeId.equals(TYPE_UPLOADEDFILE)) {
-            // ok valid content
-            if (typeId.equals(TYPE_UPLOADEDFILE) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_ALBUM))) {
-                // ok
-            } else {
-                throw new ContentNotPermittedException();
-            }
-        } else {
-            throw new ContentNotPermittedException();
-        }
+  void checkContentTypeId(final String parentTypeId, final String typeId) {
+    if (typeId.equals(TYPE_UPLOADEDFILE)) {
+      // ok valid content
+      if (typeId.equals(TYPE_UPLOADEDFILE)
+          && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_ALBUM))) {
+        // ok
+      } else {
+        throw new ContentNotPermittedException();
+      }
+    } else {
+      throw new ContentNotPermittedException();
     }
+  }
 
-    @Override
-    public void checkTypesBeforeContainerCreation(final String parentTypeId, final String typeId) {
-        checkContainerTypeId(parentTypeId, typeId);
-    }
+  @Override
+  public void checkTypesBeforeContainerCreation(final String parentTypeId, final String typeId) {
+    checkContainerTypeId(parentTypeId, typeId);
+  }
 
-    @Override
-    public void checkTypesBeforeContentCreation(final String parentTypeId, final String typeId) {
-        checkContentTypeId(parentTypeId, typeId);
-    }
+  @Override
+  public void checkTypesBeforeContentCreation(final String parentTypeId, final String typeId) {
+    checkContentTypeId(parentTypeId, typeId);
+  }
 
-    @Override
-    public String getName() {
-        return NAME;
-    }
+  @Override
+  public String getName() {
+    return NAME;
+  }
 
-    @Override
-    public String getRootName() {
-        return ROOT_NAME;
-    }
+  @Override
+  public String getRootName() {
+    return ROOT_NAME;
+  }
 
-    @Override
-    public ServerToolTarget getTarget() {
-        return ServerToolTarget.forBoth;
-    }
+  @Override
+  public ServerToolTarget getTarget() {
+    return ServerToolTarget.forBoth;
+  }
 
-    @Override
-    public Group initGroup(final User user, final Group group, final Object... otherVars) {
-        final ToolConfiguration config = new ToolConfiguration();
-        final Container rootFolder = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
-        config.setRoot(rootFolder);
-        group.setToolConfig(NAME, config);
-        configurationManager.persist(config);
+  @Override
+  public Group initGroup(final User user, final Group group, final Object... otherVars) {
+    final ToolConfiguration config = new ToolConfiguration();
+    final Container rootFolder = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
+    config.setRoot(rootFolder);
+    group.setToolConfig(NAME, config);
+    configurationManager.persist(config);
 
-        containerManager.createFolder(group, rootFolder, i18n.t("Album sample"), user.getLanguage(), TYPE_ALBUM);
-        return group;
-    }
+    containerManager.createFolder(group, rootFolder, i18n.t("Album sample"), user.getLanguage(),
+        TYPE_ALBUM);
+    return group;
+  }
 
-    @Override
-    public void onCreateContainer(final Container container, final Container parent) {
-    }
+  @Override
+  public void onCreateContainer(final Container container, final Container parent) {
+  }
 
-    @Override
-    public void onCreateContent(final Content content, final Container parent) {
-    }
+  @Override
+  public void onCreateContent(final Content content, final Container parent) {
+  }
 
-    @Override
-    @Inject
-    public void register(final ServerToolRegistry registry) {
-        registry.register(this);
-    }
+  @Override
+  @Inject
+  public void register(final ServerToolRegistry registry) {
+    registry.register(this);
+  }
 }

Modified: trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java	2011-05-10 18:55:08 UTC (rev 1370)
+++ trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java	2011-05-10 19:13:22 UTC (rev 1371)
@@ -24,6 +24,7 @@
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
+import java.net.URL;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -40,6 +41,7 @@
 
   private static final String MESSAGE = "testing";
   private static final String NEW_PARTICIPANT = "newparti";
+  private static final String TEST_GADGET = "http://wave-api.appspot.com/public/gadgets/areyouin/gadget.xml";
   private static final String TITLE = "title";
   private static final String TITLENEW = "titleNew";
   @Inject
@@ -47,6 +49,15 @@
   @Inject
   ParticipantUtils participantUtils;
 
+  @Test
+  public void addGadget() throws DefaultException, IOException {
+    doLogin();
+    final WaveRef waveletName = manager.createWave(TITLE, MESSAGE,
+        participantUtils.of(getSiteAdminShortName()));
+    assertNotNull(waveletName);
+    manager.addGadget(waveletName, getSiteAdminShortName(), TEST_GADGET);
+  }
+
   private void addParticipant(final String whoAdds) throws IOException {
     doLogin();
     final WaveRef waveletName = manager.createWave(TITLE, MESSAGE,
@@ -83,6 +94,17 @@
   }
 
   @Test
+  public void createWaveWithGadget() throws DefaultException, IOException {
+    doLogin();
+    final WaveRef waveletName = manager.createWave(TITLE, MESSAGE, new URL(TEST_GADGET),
+        participantUtils.of(getSiteAdminShortName()));
+    assertNotNull(waveletName);
+    final Wavelet fetchWavelet = manager.fetchWavelet(waveletName, getSiteAdminShortName());
+    assertNotNull(fetchWavelet);
+    assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
+  }
+
+  @Test
   public void createWaveWithTitle() throws DefaultException, IOException {
     doLogin();
     final WaveRef waveletName = manager.createWave(TITLE, MESSAGE,




More information about the kune-commits mailing list