kune-commits
Threads by month
- ----- 2026 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 1587 discussions
r1471 - in trunk: img/icons src/main/java/cc/kune/core/client/services src/main/java/cc/kune/core/public/images src/main/java/cc/kune/wave/client
by Vicente J. Ruiz Jurado 28 Jul '11
by Vicente J. Ruiz Jurado 28 Jul '11
28 Jul '11
Author: vjrj_
Date: 2011-07-29 01:36:39 +0200 (Fri, 29 Jul 2011)
New Revision: 1471
Added:
trunk/img/icons/world-90.png
trunk/src/main/java/cc/kune/core/public/images/world-90.gif
Modified:
trunk/img/icons/from-private-to-public.svg
trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java
trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java
Log:
CLOSED - # 72: Make a @Domain avatar (for everybody)
http://kune.ourproject.org/issues/ticket/72
Modified: trunk/img/icons/from-private-to-public.svg
===================================================================
--- trunk/img/icons/from-private-to-public.svg 2011-07-28 22:46:26 UTC (rev 1470)
+++ trunk/img/icons/from-private-to-public.svg 2011-07-28 23:36:39 UTC (rev 1471)
@@ -14,7 +14,7 @@
height="297mm"
id="svg3010"
version="1.1"
- inkscape:version="0.48.0 r9654"
+ inkscape:version="0.48.1 r9760"
sodipodi:docname="from-private-to-public.svg">
<defs
id="defs3012" />
@@ -26,13 +26,13 @@
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
- inkscape:cx="-59.935638"
- inkscape:cy="1024"
+ inkscape:cx="297.16839"
+ inkscape:cy="1014"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
- inkscape:window-width="1280"
- inkscape:window-height="975"
+ inkscape:window-width="1080"
+ inkscape:window-height="1824"
inkscape:window-x="0"
inkscape:window-y="21"
inkscape:window-maximized="1"
@@ -43,7 +43,11 @@
inkscape:object-nodes="true">
<inkscape:grid
type="xygrid"
- id="grid3037" />
+ id="grid3037"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata3015">
@@ -61,6 +65,16 @@
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1">
+ <rect
+ style="opacity:0.82999997999999997;color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect6727"
+ width="90"
+ height="90"
+ x="301.92883"
+ y="67.511871"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/world-90.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#b3b3b3;stroke-width:1.48864591000000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
@@ -627,5 +641,65 @@
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/group-def-new.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
+ <g
+ id="g6729"
+ transform="translate(-4.999997,-4.9999999)"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/world-90.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
+ sodipodi:type="arc"
+ style="color:#000000;fill:#aaeeff;fill-opacity:1;fill-rule:nonzero;stroke:#b3b3b3;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path4967-4"
+ sodipodi:cx="90"
+ sodipodi:cy="32.362183"
+ sodipodi:rx="20"
+ sodipodi:ry="10"
+ d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z"
+ transform="matrix(1.9,0,0,3.8,180.92883,-5.4644227)" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
+ style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 343.41091,82.102257 c -4.61208,1.27568 -8.4152,4.3488 -12.51252,6.67072 -2.35308,1.74788 -5.12984,6.52288 -1.96136,8.60572 2.50816,0.42204 4.52272,-1.71204 6.9918,-1.86684 2.88372,-0.66468 5.82796,-1.19016 8.56184,-2.36416 4.67024,-1.47172 4.67024,-1.47172 5.1476,-3.19456 0.2268,-2.594 -1.61708,-4.99872 -3.35792,-6.7716 -0.7942,-0.65116 -1.8022,-1.26156 -2.86944,-1.07928 z"
+ id="path4969-0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
+ style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 379.92883,107.51186 c -6.54148,3.33576 -14.24416,6.695 -17.08312,13.33832 -0.87308,2.04304 0.36,4.4522 0.66656,6.63188 1.24588,2.32204 -1.79852,4.3692 -0.89984,6.6998 1.0754,2.41996 4.1484,2.05532 6.18628,1.27852 2.07688,-0.71376 -0.86608,-2.75712 0,0 0.94212,2.20364 8.67396,2.87608 11.00512,1.87524 2.24192,-0.82204 3.76764,-1.20964 4.83784,-3.08096 3.5092,-7.13912 5.23236,-15.22316 4.6808,-23.17324 -0.172,-2.14232 -0.83076,-4.21536 -1.6044,-6.19228 -0.8002,-2.60864 -3.50284,0.028 -4.56584,1.10028 -0.97392,0.68904 -2.05424,1.25484 -3.2234,1.52244 z"
+ id="path4983-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cacccccccccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
+ inkscape:connector-curvature="0"
+ id="path4985-4"
+ d="m 328.42251,109.20506 c -3.85116,1.46336 -8.01156,2.4666 -11.52748,4.61236 -2.9146,2.45496 -2.5518,6.93884 -1.0408,10.06404 1.85428,4 3.32528,8.1856 5.54108,12.01032 2.14308,2.82516 -0.1448,1.59612 2.45892,3.98968 0.73584,0.87624 5.32,5.30628 8,4 1.33596,-0.65116 1.00188,-2.62 0.8862,-4.3696 0.84188,-3.62872 -1.33312,-7.09848 -1.15972,-10.75332 -0.0936,-4.58884 0.80728,-9.12276 1.354,-13.6626 0.312,-2.51708 -1.10816,-7.20092 -4.5122,-5.89088 z"
+ style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:nodetypes="cccccacccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/publicSpaceEnabled.png"
+ transform="matrix(1.9,0,0,3.8,180.92883,-5.4644227)"
+ d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z"
+ sodipodi:ry="10"
+ sodipodi:rx="20"
+ sodipodi:cy="32.362183"
+ sodipodi:cx="90"
+ id="path4987-7"
+ style="color:#000000;fill:none;stroke:#002255;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ </g>
</g>
</svg>
Added: trunk/img/icons/world-90.png
===================================================================
(Binary files differ)
Property changes on: trunk/img/icons/world-90.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java 2011-07-28 22:46:26 UTC (rev 1470)
+++ trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java 2011-07-28 23:36:39 UTC (rev 1471)
@@ -39,6 +39,7 @@
protected static final String GROUP_NO_AVATAR_IMAGE = "images/group-def-icon.png";
private static final String LOGODOWNLOADSERVLET = "servlets/EntityLogoDownloadManager";
protected static final String PERSON_NO_AVATAR_IMAGE = "images/unknown.jpg";
+ public static final String WORLD_AVATAR_IMAGE = "images/world-90.gif";
private final ImageUtils imageUtils;
private final Session session;
Added: trunk/src/main/java/cc/kune/core/public/images/world-90.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/public/images/world-90.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java 2011-07-28 22:46:26 UTC (rev 1470)
+++ trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java 2011-07-28 23:36:39 UTC (rev 1471)
@@ -38,6 +38,7 @@
ProfileManager {
private final FileDownloadUtils downloadUtils;
+ private String localDomain;
@Inject
public KuneWaveProfileManager(final FileDownloadUtils downloadUtils) {
@@ -45,10 +46,14 @@
}
private void checkAvatar(final ProfileImpl profile) {
+ if (localDomain == null) {
+ localDomain = "@" + Session.get().getDomain();
+ }
final String address = profile.getAddress();
- if (address.contains(Session.get().getDomain())) {
- profile.update(profile.getFirstName(), profile.getFullName(),
- downloadUtils.getUserAvatar(address.split("@")[0]));
+ if (address.equals(localDomain) || address.equals("@")) {
+ updateProfileAvatar(profile, FileDownloadUtils.WORLD_AVATAR_IMAGE);
+ } else if (address.contains(Session.get().getDomain())) {
+ updateProfileAvatar(profile, downloadUtils.getUserAvatar(address.split("@")[0]));
}
}
@@ -64,4 +69,8 @@
return profile;
}
+ private void updateProfileAvatar(final ProfileImpl profile, final String avatar) {
+ profile.update(profile.getFirstName(), profile.getFullName(), avatar);
+ }
+
}
\ No newline at end of file
1
0
Author: vjrj_
Date: 2011-07-29 00:46:26 +0200 (Fri, 29 Jul 2011)
New Revision: 1470
Added:
trunk/src/main/java/cc/kune/core/client/errors/UnderDevelopmentException.java
Modified:
trunk/pom.xml
trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java
trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java
trunk/src/main/java/cc/kune/core/client/sn/actions/RemoveMemberAction.java
trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java
trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java
trunk/src/main/java/cc/kune/core/client/sn/actions/UserSNVisibilityAction.java
trunk/src/main/java/cc/kune/core/client/state/StateManager.java
trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java
trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java
trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java
trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java
trunk/src/main/java/cc/kune/gspace/client/actions/ParticipateInContentBtn.java
trunk/src/main/java/cc/kune/gspace/client/actions/RefreshContentMenuItem.java
trunk/src/main/java/cc/kune/gspace/client/licensewizard/LicenseChangeAction.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java
trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
trunk/src/main/java/com/google/wave/splash/web/template/Templates.java
trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java
trunk/src/main/webapp/WEB-INF/web.xml
trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java
trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java
Log:
NEW - # 71: D-and-D folder into folder fails
http://kune.ourproject.org/issues/ticket/71
CLOSED - # 73: (Edit) button in my Group don't open Wiab editor
http://kune.ourproject.org/issues/ticket/73
NEW - # 75: Remove memory leaks in server memory usage
http://kune.ourproject.org/issues/ticket/75
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/pom.xml 2011-07-28 22:46:26 UTC (rev 1470)
@@ -778,7 +778,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
- <version>1.1.1</version>
+ <version>1.2</version>
<executions>
<execution>
<phase>exec</phase>
Modified: trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -60,12 +60,12 @@
@Override
public void onFailure(final Throwable caught) {
erroHandler.process(caught);
- stateManager.reload();
+ stateManager.refreshCurrentState();
}
@Override
public void onSuccess(final StateContainerDTO result) {
- stateManager.reload();
+ stateManager.refreshCurrentState();
}
});
} else {
Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -25,6 +25,7 @@
import cc.kune.common.client.log.Log;
import cc.kune.common.client.notify.NotifyLevel;
import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.utils.TextUtils;
import cc.kune.core.client.notify.msgs.UserNotifyEvent;
import cc.kune.core.client.notify.spiner.ProgressHideEvent;
import cc.kune.core.client.state.Session;
@@ -131,6 +132,9 @@
logException(caught);
eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error,
i18n.t("This user is already a group member")));
+ } else if (caught instanceof UnderDevelopmentException) {
+ logException(caught);
+ eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.info, i18n.t(TextUtils.IN_DEVELOPMENT)));
} else {
logException(caught, true);
eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error,
Added: trunk/src/main/java/cc/kune/core/client/errors/UnderDevelopmentException.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/UnderDevelopmentException.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/errors/UnderDevelopmentException.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.core.client.errors;
+
+public class UnderDevelopmentException extends DefaultException {
+ private static final long serialVersionUID = 7207715062129253927L;
+}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -60,7 +60,7 @@
switch ((result)) {
case accepted:
NotifyUser.info(i18n.t("You are now member of this group"));
- stateManager.refreshCurrentGroupState();
+ stateManager.refreshCurrentStateWithoutCache();
break;
case denied:
NotifyUser.important(i18n.t("Sorry this is a closed group"));
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/RemoveMemberAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/RemoveMemberAction.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/RemoveMemberAction.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -62,7 +62,7 @@
public void onSuccess(final SocialNetworkDataDTO result) {
NotifyUser.hideProgress();
NotifyUser.info(i18n.t("Member removed"));
- stateManager.refreshCurrentGroupState();
+ stateManager.refreshCurrentStateWithoutCache();
}
});
}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -63,7 +63,7 @@
public void onSuccess(final Void result) {
NotifyUser.hideProgress();
NotifyUser.info(i18n.t("Removed as member"));
- stateManager.refreshCurrentGroupState();
+ stateManager.refreshCurrentStateWithoutCache();
}
});
}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -73,7 +73,7 @@
public void onSuccess(final Void result) {
NotifyUser.hideProgress();
NotifyUser.info(i18n.t("Removed as member"));
- stateManager.refreshCurrentGroupState();
+ stateManager.refreshCurrentStateWithoutCache();
}
});
}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/UserSNVisibilityAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/UserSNVisibilityAction.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/UserSNVisibilityAction.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -57,7 +57,7 @@
// NotifyUser.info(i18n.t("Visibility of your network changed to "
// + visibility.toString()));
NotifyUser.info(i18n.t("Visibility of your network changed"));
- stateManager.refreshCurrentGroupState();
+ stateManager.refreshCurrentStateWithoutCache();
}
});
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -68,9 +68,9 @@
void redirectOrRestorePreviousToken();
- void refreshCurrentGroupState();
+ void refreshCurrentStateWithoutCache();
- void reload();
+ void refreshCurrentState();
void removeBeforeStateChangeListener(BeforeActionListener listener);
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -90,7 +90,7 @@
session.onUserSignOut(false, new UserSignOutEvent.UserSignOutHandler() {
@Override
public void onUserSignOut(final UserSignOutEvent event) {
- refreshCurrentGroupState();
+ refreshCurrentStateWithoutCache();
}
});
processCurrentHistoryToken();
@@ -333,11 +333,21 @@
/**
* <p>
+ * Reload current state (using client cache if available)
+ * </p>
+ */
+ @Override
+ public void refreshCurrentState() {
+ processHistoryToken(history.getToken());
+ }
+
+ /**
+ * <p>
* Reload current state (not using client cache)
* </p>
*/
@Override
- public void refreshCurrentGroupState() {
+ public void refreshCurrentStateWithoutCache() {
final StateToken currentStateToken = session.getCurrentStateToken();
if (currentStateToken == null) {
processCurrentHistoryToken();
@@ -347,17 +357,7 @@
}
}
- /**
- * <p>
- * Reload current state (using client cache if available)
- * </p>
- */
@Override
- public void reload() {
- processHistoryToken(history.getToken());
- }
-
- @Override
public void removeBeforeStateChangeListener(final BeforeActionListener listener) {
beforeStateChangeCollection.remove(listener);
}
@@ -378,7 +378,7 @@
public void resumeTokenChange() {
if (resumedHistoryToken != null) {
// Is this reload redundant?
- reload();
+ refreshCurrentState();
gotoHistoryToken(resumedHistoryToken);
resumedHistoryToken = null;
}
Modified: trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -19,7 +19,6 @@
*/
package cc.kune.core.server.content;
-
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.server.manager.Manager;
import cc.kune.core.server.manager.impl.SearchResult;
@@ -30,19 +29,22 @@
public interface ContainerManager extends Manager<Container, Long> {
- Container createFolder(Group group, Container parent, String name, I18nLanguage language, String typeId);
+ Container createFolder(Group group, Container parent, String name, I18nLanguage language, String typeId);
- Container createRootFolder(Group group, String toolName, String name, String type);
+ Container createRootFolder(Group group, String toolName, String name, String type);
- Container find(Long id);
+ @Override
+ Container find(Long id);
- boolean findIfExistsTitle(Container container, String title);
+ boolean findIfExistsTitle(Container container, String title);
- Container renameFolder(Group group, Container container, String newName) throws DefaultException;
+ void moveContainer(Container container, Container newContainer);
- SearchResult<Container> search(String search);
+ Container renameFolder(Group group, Container container, String newName) throws DefaultException;
- SearchResult<Container> search(String search, Integer firstResult, Integer maxResults);
+ SearchResult<Container> search(String search);
- void setAccessList(Container container, AccessLists accessList);
+ SearchResult<Container> search(String search, Integer firstResult, Integer maxResults);
+
+ void setAccessList(Container container, AccessLists accessList);
}
Modified: trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -31,6 +31,7 @@
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.client.errors.NameInUseException;
+import cc.kune.core.client.errors.UnderDevelopmentException;
import cc.kune.core.server.manager.file.FileUtils;
import cc.kune.core.server.manager.impl.DefaultManager;
import cc.kune.core.server.manager.impl.SearchResult;
@@ -50,103 +51,110 @@
@Singleton
public class ContainerManagerDefault extends DefaultManager<Container, Long> implements ContainerManager {
- private final ContainerFinder containerFinder;
- private final ContentFinder contentFinder;
+ private final ContainerFinder containerFinder;
+ private final ContentFinder contentFinder;
- @Inject
- public ContainerManagerDefault(final ContentFinder contentFinder, final ContainerFinder containerFinder,
- final Provider<EntityManager> provider) {
- super(provider, Container.class);
- this.contentFinder = contentFinder;
- this.containerFinder = containerFinder;
- }
+ @Inject
+ public ContainerManagerDefault(final ContentFinder contentFinder,
+ final ContainerFinder containerFinder, final Provider<EntityManager> provider) {
+ super(provider, Container.class);
+ this.contentFinder = contentFinder;
+ this.containerFinder = containerFinder;
+ }
- @Override
- public Container createFolder(final Group group, final Container parent, final String name,
- final I18nLanguage language, final String typeId) {
- FilenameUtils.checkBasicFilename(name);
- final String newtitle = findInexistentName(parent, name);
- final List<Container> parentAbsolutePath = parent.getAbsolutePath();
- final List<Container> childAbsolutePath = new ArrayList<Container>();
+ @Override
+ public Container createFolder(final Group group, final Container parent, final String name,
+ final I18nLanguage language, final String typeId) {
+ FilenameUtils.checkBasicFilename(name);
+ final String newtitle = findInexistentName(parent, name);
+ final List<Container> parentAbsolutePath = parent.getAbsolutePath();
+ final List<Container> childAbsolutePath = new ArrayList<Container>();
- for (final Container parentRef : parentAbsolutePath) {
- childAbsolutePath.add(parentRef);
- }
- // FIXME: use
- // childAbsolutePath.addAll(parentAbsolutePath);
- final Container child = new Container(newtitle, group, parent.getToolName());
- childAbsolutePath.add(child);
- child.setLanguage(language);
- child.setAbsolutePath(childAbsolutePath);
- child.setTypeId(typeId);
- parent.addChild(child);
- persist(child);
- return child;
+ for (final Container parentRef : parentAbsolutePath) {
+ childAbsolutePath.add(parentRef);
}
+ // FIXME: use
+ // childAbsolutePath.addAll(parentAbsolutePath);
+ final Container child = new Container(newtitle, group, parent.getToolName());
+ childAbsolutePath.add(child);
+ child.setLanguage(language);
+ child.setAbsolutePath(childAbsolutePath);
+ child.setTypeId(typeId);
+ parent.addChild(child);
+ persist(child);
+ return child;
+ }
- @Override
- public Container createRootFolder(final Group group, final String toolName, final String name, final String type) {
- final Container container = new Container(name, group, toolName);
- container.setTypeId(type);
- final List<Container> absolutePath = new ArrayList<Container>();
- absolutePath.add(container);
- container.setAbsolutePath(absolutePath);
- return persist(container);
- }
+ @Override
+ public Container createRootFolder(final Group group, final String toolName, final String name,
+ final String type) {
+ final Container container = new Container(name, group, toolName);
+ container.setTypeId(type);
+ final List<Container> absolutePath = new ArrayList<Container>();
+ absolutePath.add(container);
+ container.setAbsolutePath(absolutePath);
+ return persist(container);
+ }
- /** Duplicate code in ContentMD **/
- @Override
- public boolean findIfExistsTitle(final Container container, final String title) {
- return (contentFinder.findIfExistsTitle(container, title) > 0)
- || (containerFinder.findIfExistsTitle(container, title) > 0);
- }
+ /** Duplicate code in ContentMD **/
+ @Override
+ public boolean findIfExistsTitle(final Container container, final String title) {
+ return (contentFinder.findIfExistsTitle(container, title) > 0)
+ || (containerFinder.findIfExistsTitle(container, title) > 0);
+ }
- /** Duplicate code in ContentMD **/
- private String findInexistentName(final Container container, final String title) {
- String initialTitle = String.valueOf(title);
- while (findIfExistsTitle(container, initialTitle)) {
- initialTitle = FileUtils.getNextSequentialFileName(initialTitle);
- }
- return initialTitle;
+ /** Duplicate code in ContentMD **/
+ private String findInexistentName(final Container container, final String title) {
+ String initialTitle = String.valueOf(title);
+ while (findIfExistsTitle(container, initialTitle)) {
+ initialTitle = FileUtils.getNextSequentialFileName(initialTitle);
}
+ return initialTitle;
+ }
- @Override
- public Container renameFolder(final Group group, final Container container, final String newName)
- throws DefaultException {
- FilenameUtils.checkBasicFilename(newName);
- final String newNameWithoutNT = FilenameUtils.chomp(newName);
- if (container.isRoot()) {
- throw new DefaultException("Root folder cannot be renamed");
- }
- if (findIfExistsTitle(container.getParent(), newNameWithoutNT)) {
- throw new NameInUseException();
- }
- container.setName(newNameWithoutNT);
- persist(container);
- return container;
- }
+ @Override
+ public void moveContainer(final Container container, final Container newContainer) {
+ throw new UnderDevelopmentException();
+ }
- @Override
- public SearchResult<Container> search(final String search) {
- return this.search(search, null, null);
+ @Override
+ public Container renameFolder(final Group group, final Container container, final String newName)
+ throws DefaultException {
+ FilenameUtils.checkBasicFilename(newName);
+ final String newNameWithoutNT = FilenameUtils.chomp(newName);
+ if (container.isRoot()) {
+ throw new DefaultException("Root folder cannot be renamed");
}
-
- @Override
- public SearchResult<Container> search(final String search, final Integer firstResult, final Integer maxResults) {
- final MultiFieldQueryParser parser = new MultiFieldQueryParser(new String[] { "name" }, new StandardAnalyzer());
- Query query;
- try {
- query = parser.parse(search);
- } catch (final ParseException e) {
- throw new ServerManagerException("Error parsing search");
- }
- return super.search(query, firstResult, maxResults);
+ if (findIfExistsTitle(container.getParent(), newNameWithoutNT)) {
+ throw new NameInUseException();
}
+ container.setName(newNameWithoutNT);
+ persist(container);
+ return container;
+ }
- @Override
- public void setAccessList(final Container container, final AccessLists accessList) {
- container.setAccessLists(accessList);
- persist(container);
+ @Override
+ public SearchResult<Container> search(final String search) {
+ return this.search(search, null, null);
+ }
+
+ @Override
+ public SearchResult<Container> search(final String search, final Integer firstResult,
+ final Integer maxResults) {
+ final MultiFieldQueryParser parser = new MultiFieldQueryParser(new String[] { "name" },
+ new StandardAnalyzer());
+ Query query;
+ try {
+ query = parser.parse(search);
+ } catch (final ParseException e) {
+ throw new ServerManagerException("Error parsing search");
}
+ return super.search(query, firstResult, maxResults);
+ }
+ @Override
+ public void setAccessList(final Container container, final AccessLists accessList) {
+ container.setAccessLists(accessList);
+ persist(container);
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -26,6 +26,7 @@
import cc.kune.chat.server.ChatManager;
import cc.kune.core.client.errors.AccessViolationException;
import cc.kune.core.client.errors.ContentNotFoundException;
+import cc.kune.core.client.errors.ContentNotPermittedException;
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.client.errors.NoDefaultContentException;
import cc.kune.core.client.errors.ToolNotFoundException;
@@ -318,17 +319,30 @@
@Authenticated
@Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor, mustCheckMembership = false)
@Transactional
- public StateContainerDTO moveContent(final String userHash, final StateToken contentToken,
+ public StateContainerDTO moveContent(final String userHash, final StateToken movedToken,
final StateToken newContainerToken) throws DefaultException {
final User user = getCurrentUser();
try {
- final Content content = accessService.accessToContent(
- ContentUtils.parseId(contentToken.getDocument()), user, AccessRol.Editor);
- final Container newContainer = accessService.accessToContainer(
- ContentUtils.parseId(newContainerToken.getFolder()), user, AccessRol.Editor);
- final Container oldContainer = content.getContainer();
- contentManager.moveContent(content, newContainer);
- return getState(user, oldContainer);
+ if (movedToken.isComplete()) {
+ final Content content = accessService.accessToContent(
+ ContentUtils.parseId(movedToken.getDocument()), user, AccessRol.Editor);
+ final Container newContainer = accessService.accessToContainer(
+ ContentUtils.parseId(newContainerToken.getFolder()), user, AccessRol.Editor);
+ final Container oldContainer = content.getContainer();
+ contentManager.moveContent(content, newContainer);
+ return getState(user, oldContainer);
+ } else if (movedToken.hasGroupToolAndFolder()) {
+ // Folder to folder
+ final Container container = accessService.accessToContainer(
+ ContentUtils.parseId(movedToken.getFolder()), user, AccessRol.Editor);
+ final Container newContainer = accessService.accessToContainer(
+ ContentUtils.parseId(newContainerToken.getFolder()), user, AccessRol.Editor);
+ final Container oldParent = container.getParent();
+ containerManager.moveContainer(container, newContainer);
+ return getState(user, oldParent);
+ } else {
+ throw new ContentNotPermittedException();
+ }
} catch (final NoResultException e) {
throw new AccessViolationException();
}
Modified: trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -81,7 +81,7 @@
// session.setCurrentState(state);
final StateToken parent = token.copy().clearDocument();
if (session.getCurrentStateToken().equals(parent)) {
- stateManager.refreshCurrentGroupState();
+ stateManager.refreshCurrentStateWithoutCache();
// Warning: the previous action
// is asynchronous (it gets a
// content)
Modified: trunk/src/main/java/cc/kune/gspace/client/actions/ParticipateInContentBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/ParticipateInContentBtn.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/ParticipateInContentBtn.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -62,7 +62,9 @@
@Override
public void onSuccess(final Void arg) {
NotifyUser.hideProgress();
- stateManager.gotoStateToken(session.getCurrentStateToken());
+ stateManager.refreshCurrentStateWithoutCache();
+ // issue #73
+ // stateManager.gotoStateToken(session.getCurrentStateToken());
}
});
}
Modified: trunk/src/main/java/cc/kune/gspace/client/actions/RefreshContentMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/RefreshContentMenuItem.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/RefreshContentMenuItem.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -41,7 +41,7 @@
@Override
public void actionPerformed(final ActionEvent event) {
- stateManager.refreshCurrentGroupState();
+ stateManager.refreshCurrentStateWithoutCache();
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/licensewizard/LicenseChangeAction.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/licensewizard/LicenseChangeAction.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/gspace/client/licensewizard/LicenseChangeAction.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -66,7 +66,7 @@
@Override
public void onSuccess(final Void result) {
- stateManager.reload();
+ stateManager.refreshCurrentState();
callback.onSuccess();
LicenseChangedEvent.fire(eventBus);
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -139,7 +139,7 @@
@Override
public void onSuccess(final Void result) {
- stateManager.reload();
+ stateManager.refreshCurrentState();
// view.unmask();
}
});
Modified: trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -187,12 +187,19 @@
@Override
public void addParticipant(final WaveRef waveName, final String author, final String userWhoAdds,
- final String participant) {
+ final String newLocalParticipant) {
final Wavelet wavelet = fetchWave(waveName, author);
+ final String newPartWithDomain = participantUtils.of(newLocalParticipant).toString();
+ for (final String current : wavelet.getParticipants()) {
+ if (current.equals(newPartWithDomain)) {
+ // Current user is a participant already (issue #73)
+ return;
+ }
+ }
final String whoAdd = wavelet.getParticipants().contains(participantUtils.of(userWhoAdds)) ? userWhoAdds
: author;
final OperationQueue opQueue = new OperationQueue();
- opQueue.addParticipantToWavelet(wavelet, participantUtils.of(participant).toString());
+ opQueue.addParticipantToWavelet(wavelet, newPartWithDomain);
doOperation(whoAdd, opQueue, "add participant");
}
@@ -390,7 +397,8 @@
@Override
public String render(final Wavelet wavelet) {
final ClientAction clientPage = waveRenderer.render(wavelet, 0);
- return clientPage.getHtml();
+ final String html = clientPage.getHtml();
+ return html;
}
@Override
Modified: trunk/src/main/java/com/google/wave/splash/web/template/Templates.java
===================================================================
--- trunk/src/main/java/com/google/wave/splash/web/template/Templates.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/com/google/wave/splash/web/template/Templates.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -60,7 +60,7 @@
private final Markup markup;
- private final boolean productionMode = false;
+ private final boolean productionMode = true;
/**
* file name of template -> compiled template lazy cache.
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -415,7 +415,7 @@
AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
@Override
public void onEvent(final StateToken stateToken) {
- stateManager.reload();
+ stateManager.refreshCurrentState();
contextNavigator.selectItem(stateToken);
}
});
@@ -433,7 +433,7 @@
AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener<StateToken>() {
@Override
public void onEvent(final StateToken stateToken) {
- stateManager.reload();
+ stateManager.refreshCurrentState();
contextNavigator.selectItem(stateToken);
}
});
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -98,7 +98,7 @@
@Override
public void onEvent(final StateToken currentUploadStateToken) {
if (currentUploadStateToken.hasSameContainer(session.getCurrentStateToken())) {
- stateManager.reload();
+ stateManager.refreshCurrentState();
}
}
});
Modified: trunk/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/src/main/webapp/WEB-INF/web.xml 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/main/webapp/WEB-INF/web.xml 2011-07-28 22:46:26 UTC (rev 1470)
@@ -5,12 +5,12 @@
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
- <!-- NOTE: if you modify this, cp for rapid testing: cp src/main/webapp/WEB-INF/web.xml
+ <!-- NOTE: if you modify this, cp for rapid testing: cp src/main/webapp/WEB-INF/web.xml
target/kune-PUT_HERE_VERSION/WEB-INF/web.xml -->
<!-- TODO: Add <servlet> tags for each servlet here. -->
<!-- TODO: Add <servlet-mapping> tags for each <servlet> here. -->
- <!-- TODO: Optionally add a <welcome-file-list> tag to display a welcome
+ <!-- TODO: Optionally add a <welcome-file-list> tag to display a welcome
file. -->
<display-name>ws</display-name>
<description>kune workspace</description>
@@ -69,12 +69,12 @@
</context-param>
<context-param>
<param-name>rails.root</param-name>
- <param-value>/WEB-INF/publicspace/
+ <param-value>/WEB-INF/publicspace/
</param-value>
</context-param>
<context-param>
<param-name>files.prefix</param-name>
- <param-value>/WEB-INF/publicspace/public
+ <param-value>/WEB-INF/publicspace/public
</param-value>
</context-param>
<context-param>
@@ -89,6 +89,7 @@
<param-name>public.root</param-name>
<param-value>/public/</param-value>
</context-param>
+ <!-- Disabled while not used
<filter>
<filter-name>RackFilter</filter-name>
<filter-class>org.jruby.rack.RackFilter</filter-class>
@@ -100,6 +101,7 @@
<listener>
<listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class>
</listener>
+ -->
<!-- Emite xmpp proxy ======================================================================================= -->
<!-- <servlet> -->
<!-- <servlet-name>HttpBind</servlet-name> -->
Modified: trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -202,7 +202,7 @@
// When a user enter reload state, also if the application is starting
// (and the user was logged)
Mockito.when(history.getToken()).thenReturn("");
- stateManager.reload();
+ stateManager.refreshCurrentState();
verifyGetServerContent();
}
Modified: trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java 2011-07-28 16:01:40 UTC (rev 1469)
+++ trunk/src/test/java/cc/kune/wave/server/KuneWaveManagerDefaultTest.java 2011-07-28 22:46:26 UTC (rev 1470)
@@ -71,6 +71,22 @@
}
@Test
+ public void addParticipantTwice() throws IOException {
+ doLogin();
+ final WaveRef waveletName = createTestWave();
+ assertNotNull(waveletName);
+ manager.addParticipant(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
+ NEW_PARTICIPANT);
+ manager.addParticipant(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
+ NEW_PARTICIPANT);
+ final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ assertNotNull(fetchWavelet);
+ assertEquals(2, fetchWavelet.getParticipants().size());
+ manager.isParticipant(fetchWavelet, NEW_PARTICIPANT);
+ manager.isParticipant(fetchWavelet, "newparti");
+ }
+
+ @Test
public void authorAddParticipant() throws DefaultException, IOException {
final String whoAdds = getSiteAdminShortName();
addParticipant(whoAdds);
1
0
Author: vjrj_
Date: 2011-07-28 18:01:40 +0200 (Thu, 28 Jul 2011)
New Revision: 1469
Modified:
trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
Log:
CLOSED - # 74: New StateProvider seems that broke read/unread of blips
http://kune.ourproject.org/issues/ticket/74
Modified: trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java 2011-07-28 14:07:43 UTC (rev 1468)
+++ trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java 2011-07-28 16:01:40 UTC (rev 1469)
@@ -36,7 +36,6 @@
import org.waveprotocol.wave.client.wavepanel.view.dom.ModelAsViewProvider;
import org.waveprotocol.wave.client.wavepanel.view.dom.full.BlipQueueRenderer;
import org.waveprotocol.wave.client.wavepanel.view.dom.full.DomRenderer;
-import org.waveprotocol.wave.client.wavepanel.view.dom.full.WavePanelResourceLoader;
import org.waveprotocol.wave.model.conversation.Conversation;
import org.waveprotocol.wave.model.conversation.ConversationBlip;
import org.waveprotocol.wave.model.conversation.ConversationView;
@@ -150,11 +149,12 @@
createViewFactories(), showParticipantsPanel);
}
- @Override
- protected void installFeatures() {
- WavePanelResourceLoader.loadCss();
- // KuneWavePanelResourceLoader.loadCss();
- }
+ // Warning: this run into issue #73
+ // @Override
+ // protected void installFeatures() {
+ // WavePanelResourceLoader.loadCss();
+ // // KuneWavePanelResourceLoader.loadCss();
+ // }
});
}
1
0
Author: vjrj_
Date: 2011-07-28 16:07:43 +0200 (Thu, 28 Jul 2011)
New Revision: 1468
Added:
trunk/src/main/java/cc/kune/wave/client/KuneConversation.css
trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java
trunk/src/main/java/cc/kune/wave/client/KuneFullDomWaveRendererImpl.java
trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java
trunk/src/main/java/cc/kune/wave/client/toolbar_empty.png
trunk/src/main/java/org/waveprotocol/wave/
trunk/src/main/java/org/waveprotocol/wave/client/
trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/
trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/
trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/
trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/
trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java
Modified:
trunk/script/kune client -no-server.launch
trunk/src/main/java/cc/kune/Kune.gwt.xml
trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java
trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml
trunk/src/main/java/cc/kune/gspace/client/resources/GSpaceArmorResources.java
trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css
trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.ui.xml
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
trunk/src/main/java/cc/kune/wave/client/WebClient.java
trunk/src/main/resources/wave-server.properties
Log:
CLOSED - # 69: Toolbar scroll also in Wave Panel
http://kune.ourproject.org/issues/ticket/69
Modified: trunk/script/kune client -no-server.launch
===================================================================
--- trunk/script/kune client -no-server.launch 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/script/kune client -no-server.launch 2011-07-28 14:07:43 UTC (rev 1468)
@@ -20,7 +20,7 @@
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gwt.eclipse.core.moduleClasspathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-war /home/vjrj/proyectos/dev/kune/trunk/target/kune-0.0.8 -startupUrl /ws/?locale=en&log_level=INFO -noserver -remoteUI "${gwt_remote_ui_server_port}:${unique_id}" -logLevel INFO -codeServerPort 9997 cc.kune.Kune"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-war /home/vjrj/proyectos/dev/kune/trunk/target/kune-0.1.0-SNAPSHOT -startupUrl /ws/?locale=en&log_level=INFO -noserver -remoteUI "${gwt_remote_ui_server_port}:${unique_id}" -logLevel INFO -codeServerPort 9997 cc.kune.Kune"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="kune"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m"/>
</launchConfiguration>
Modified: trunk/src/main/java/cc/kune/Kune.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/Kune.gwt.xml 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/Kune.gwt.xml 2011-07-28 14:07:43 UTC (rev 1468)
@@ -1,36 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.0.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.0.1/distro-source/core/…">
<module rename-to="ws">
- <inherits name="com.google.gwt.user.User" />
- <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.wiki.KuneWiki" />
- <inherits name="cc.kune.meets.KuneMeets" />
- <inherits name="cc.kune.pspace.PSpace" />
- <inherits name="com.calclab.suco.Suco" />
+ <inherits name="com.google.gwt.user.User"/>
+ <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.wiki.KuneWiki"/>
+ <inherits name="cc.kune.meets.KuneMeets"/>
+ <inherits name="cc.kune.pspace.PSpace"/>
+ <inherits name="com.calclab.suco.Suco"/>
<inherits name="org.adamtacy.GWTEffects"></inherits>
<inherits name='com.allen_sauer.gwt.dnd.gwt-dnd'/>
<source path='client'
- excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java" />
+ excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java"/>
<!-- <source path='shared'/> -->
<!-- <public path="public"/> -->
<!-- Logging Configuration -->
- <set-property name="gwt.logging.enabled" value="TRUE" />
- <set-property name="gwt.logging.logLevel" value="INFO" />
- <set-property name="gwt.logging.consoleHandler" value="ENABLED" />
+ <set-property name="gwt.logging.enabled" value="TRUE"/>
+ <set-property name="gwt.logging.logLevel" value="INFO"/>
+ <set-property name="gwt.logging.consoleHandler" value="ENABLED"/>
<set-property name="gwt.logging.developmentModeHandler"
- value="ENABLED" />
- <set-property name="gwt.logging.firebugHandler" value="ENABLED" />
- <set-property name="gwt.logging.hasWidgetsHandler" value="DISABLED" />
- <set-property name="gwt.logging.popupHandler" value="DISABLED" />
- <set-property name="gwt.logging.systemHandler" value="ENABLED" />
+ value="ENABLED"/>
+ <set-property name="gwt.logging.firebugHandler" value="ENABLED"/>
+ <set-property name="gwt.logging.hasWidgetsHandler" value="DISABLED"/>
+ <set-property name="gwt.logging.popupHandler" value="DISABLED"/>
+ <set-property name="gwt.logging.systemHandler" value="ENABLED"/>
<set-property name="gwt.logging.simpleRemoteHandler"
- value="DISABLED" />
+ value="DISABLED"/>
<!-- Uncomment if you are enabling server side deobfuscation of StackTraces
<set-property name="compiler.emulatedStack" value="true" /> <set-configuration-property
name="compiler.emulatedStack.recordLineNumbers" value="true" /> <set-configuration-property
@@ -38,25 +38,28 @@
<!-- NOTE: this only compiles for chromium/safari ============= -->
<!--http://code.google.com/p/google-web-toolkit/issues/detail?id=42 -->
<!-- <set-property name="user.agent" value="gecko1_8" /> -->
- <set-property name="user.agent" value="safari,gecko1_8,ie6" />
+ <set-property name="user.agent" value="safari,gecko1_8,ie6"/>
<!-- gwt-platform ============================================= -->
- <inherits name='com.gwtplatform.mvp.Mvp' />
+ <inherits name='com.gwtplatform.mvp.Mvp'/>
<define-configuration-property name="gin.ginjector"
- is-multi-valued="false" />
+ is-multi-valued="false"/>
<set-configuration-property name="gin.ginjector"
- value="cc.kune.client.KuneGinjector" />
+ value="cc.kune.client.KuneGinjector"/>
<!-- Debugging ================================================ -->
<!-- for add ensureDebugIds (debugId in UIBinder), remove/comment in production
see UIObject.ensureDebugId()) -->
- <inherits name="com.google.gwt.user.Debug" />
+ <inherits name="com.google.gwt.user.Debug"/>
+ <!-- For make CSS obfuscation more pretty -->
+ <set-configuration-property name="CssResource.style"
+ value="pretty"/>
<!-- Hardcoded locale (to override emite italian support) ===== -->
- <extend-property name="locale" values="en" />
- <set-property name="locale" value="en" />
+ <extend-property name="locale" values="en"/>
+ <set-property name="locale" value="en"/>
<!-- Hardcoded log level ====================================== -->
<!-- Turn off logging in wave -->
- <set-property name="loglevel" value="none" />
+ <set-property name="loglevel" value="none"/>
<!-- <set-property name="loglevel" value="debug" /> -->
<!-- Entrypoint =============================================== -->
- <entry-point class="cc.kune.client.KuneEntryPoint" />
+ <entry-point class="cc.kune.client.KuneEntryPoint"/>
<!-- <entry-point class="cc.kune.common.client.SampleEntryPoint" /> -->
</module>
Modified: trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -51,7 +51,7 @@
public class BarterServerTool implements ServerWaveTool {
- private static final String BARTER_GADGET = "http://op-org.appspot.com/troco_wave_gadget/org.ourproject.troco.client.Tro…";
+ private static final String BARTER_GADGET = "http://troco.ourproject.org/gadget/org.ourproject.troco.client.TrocoWaveGad…";
private final ToolConfigurationManager configurationManager;
private final ContainerManager containerManager;
private final ContentManager contentManager;
Modified: trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -14,6 +14,7 @@
super(RootPanel.get(), false);
setBehaviorDragProxy(true);
setBehaviorMultipleSelection(false);
+ setBehaviorScrollIntoView(false);
setBehaviorDragStartSensitivity(5);
Window.addResizeHandler(new ResizeHandler() {
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -28,6 +28,8 @@
void clearBackImage();
+ void enableCenterScroll(boolean enable);
+
ForIsWidget getDocContainer();
ForIsWidget getDocFooter();
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -25,6 +25,7 @@
import cc.kune.common.client.actions.ui.IsActionExtensible;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Style.Overflow;
import com.google.gwt.dom.client.Style.Position;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
@@ -35,6 +36,7 @@
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.SplitLayoutPanel;
import com.google.gwt.user.client.ui.TabLayoutPanel;
@@ -51,8 +53,10 @@
private static WsArmorImplUiBinder uiBinder = GWT.create(WsArmorImplUiBinder.class);
@UiField
- VerticalPanel docContainer;
+ ScrollPanel centerScroll;
@UiField
+ FlowPanel docContainer;
+ @UiField
DockLayoutPanel docContainerParent;
@UiField
FlowPanel docFooter;
@@ -112,6 +116,7 @@
entityToolsNorth.getElement().getStyle().setPosition(Position.RELATIVE);
// entityToolsSouth.setVisible(false);
mainpanel.getWidgetContainerElement(tabs).addClassName("k-spaces");
+ enableCenterScroll(true);
}
@Override
@@ -120,6 +125,20 @@
}
@Override
+ public void enableCenterScroll(final boolean enable) {
+ if (enable) {
+ centerScroll.setAlwaysShowScrollBars(false);
+ DOM.setStyleAttribute(centerScroll.getElement(), "position", "absolute");
+ DOM.setStyleAttribute((Element) centerScroll.getElement().getFirstChildElement(), "position",
+ "relative");
+ } else {
+ centerScroll.getElement().getStyle().setOverflow(Overflow.HIDDEN);
+ DOM.setStyleAttribute(centerScroll.getElement(), "position", "");
+ DOM.setStyleAttribute((Element) centerScroll.getElement().getFirstChildElement(), "position", "");
+ }
+ }
+
+ @Override
public ForIsWidget getDocContainer() {
return docContainer;
}
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml 2011-07-28 14:07:43 UTC (rev 1468)
@@ -65,9 +65,8 @@
<g:SimplePanel />
</g:east>
<g:center>
- <g:ScrollPanel styleName="{res.style.docEditor}">
- <g:VerticalPanel width="100%"
- height="100%" ui:field="docContainer"></g:VerticalPanel>
+ <g:ScrollPanel ui:field="centerScroll" styleName="{res.style.docEditor}">
+ <g:FlowPanel width="auto" height="auto" styleName="{res.style.docEditorContainer}" ui:field="docContainer" />
</g:ScrollPanel>
</g:center>
<g:south size="33.0">
Modified: trunk/src/main/java/cc/kune/gspace/client/resources/GSpaceArmorResources.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/GSpaceArmorResources.java 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/GSpaceArmorResources.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -28,6 +28,8 @@
String docEditor();
+ String docEditorContainer();
+
String docEditorMargin();
String docFooter();
Modified: trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css 2011-07-28 14:07:43 UTC (rev 1468)
@@ -7,7 +7,7 @@
.mainPanel {
border-top: 2px solid white;
-/* border-bottom: 7px solid transparent;
+ /* border-bottom: 7px solid transparent;
border-right: 17px solid transparent;
border-left: 17px solid transparent; */
}
@@ -18,6 +18,7 @@
}
.k-space {
+
}
.floatRight {
@@ -37,6 +38,7 @@
.entityCentralContainer {
}
+
.entityHeader {
-webkit-border-top-right-radius: 7px;
-moz-border-radius-topright: 7px;
@@ -137,12 +139,36 @@
-webkit-border-top-right-radius: 7px;
-moz-border-radius-topright: 7px;
border-top-right-radius: 7px;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
}
+.docEditorContainer {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ -webkit-border-top-left-radius: 7px;
+ -moz-border-radius-topleft: 7px;
+ border-top-left-radius: 7px;
+ -webkit-border-top-right-radius: 7px;
+ -moz-border-radius-topright: 7px;
+ border-top-right-radius: 7px;
+}
+
+/* Fix wave scroll problem
.docEditor div {
overflow-y: visible;
}
+div.docEditor div {
+ position: static;
+}
+*/
.docFooter {
border-left: 1px solid #959595;
border-right: 1px solid #959595;
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -75,6 +75,7 @@
public void attach() {
final ForIsWidget docContainer = gsArmor.getDocContainer();
docContainer.add(widget);
+ gsArmor.enableCenterScroll(true);
}
@Override
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -22,7 +22,6 @@
import org.waveprotocol.box.webclient.client.ClientIdGenerator;
import org.waveprotocol.box.webclient.client.RemoteViewServiceMultiplexer;
import org.waveprotocol.box.webclient.client.SimpleWaveStore;
-import org.waveprotocol.box.webclient.client.StagesProvider;
import org.waveprotocol.box.webclient.search.WaveStore;
import org.waveprotocol.wave.client.account.ProfileManager;
import org.waveprotocol.wave.client.widget.common.ImplPanel;
@@ -40,6 +39,7 @@
import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.GSpaceArmor;
import cc.kune.gspace.client.viewers.ContentViewerPresenter.ContentViewerView;
+import cc.kune.wave.client.KuneStagesProvider;
import cc.kune.wave.client.WaveClientClearEvent;
import cc.kune.wave.client.WaveClientManager;
import cc.kune.wave.client.WebClient;
@@ -56,18 +56,17 @@
import com.google.gwt.user.client.ui.DeckPanel;
import com.google.gwt.user.client.ui.InlineHTML;
import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
-import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.ViewImpl;
public class ContentViewerPanel extends ViewImpl implements ContentViewerView {
- interface DocsViewerPanelUiBinder extends UiBinder<Widget, ContentViewerPanel> {
+ interface ContentViewerPanelUiBinder extends UiBinder<Widget, ContentViewerPanel> {
}
private static final RemoteViewServiceMultiplexer NO_CHANNEL = null;
- private static DocsViewerPanelUiBinder uiBinder = GWT.create(DocsViewerPanelUiBinder.class);
+ private static ContentViewerPanelUiBinder uiBinder = GWT.create(ContentViewerPanelUiBinder.class);
private final ContentCapabilitiesRegistry capabilitiesRegistry;
private RemoteViewServiceMultiplexer channel;
@@ -81,12 +80,12 @@
InlineHTML onlyViewPanel;
private ProfileManager profiles;
/** The wave panel, if a wave is open. */
- private StagesProvider wave;
+ private KuneStagesProvider wave;
private final WaveClientManager waveClient;
private ImplPanel waveHolder;
@UiField
- VerticalPanel waveHolderParent;
+ ImplPanel waveHolderParent;
private final WaveStore waveStore = new SimpleWaveStore();
@@ -176,6 +175,7 @@
@Override
public void setContent(final StateContentDTO state) {
final boolean editable = state.getContentRights().isEditable();
+ gsArmor.enableCenterScroll(true);
setTitle(state, editable);
onlyViewPanel.setHTML(SafeHtmlUtils.fromTrustedString(state.getContent()));
deck.showWidget(1);
@@ -183,6 +183,7 @@
@Override
public void setEditableContent(final StateContentDTO state) {
+ gsArmor.enableCenterScroll(false);
setTitle(state, true);
setEditableWaveContent(state.getWaveRef(), false);
deck.showWidget(0);
@@ -211,8 +212,9 @@
// UIObject.setVisible(waveFrame.getElement(), true);
waveHolder.getElement().appendChild(loading);
final Element holder = waveHolder.getElement().appendChild(Document.get().createDivElement());
- final StagesProvider wave = new StagesProvider(holder, waveHolder, waveRef, channel, idGenerator,
- profiles, waveStore, isNewWave, org.waveprotocol.box.webclient.client.Session.get().getDomain());
+ final KuneStagesProvider wave = new KuneStagesProvider(holder, waveHolder, waveRef, channel,
+ idGenerator, profiles, waveStore, isNewWave,
+ org.waveprotocol.box.webclient.client.Session.get().getDomain(), true);
this.wave = wave;
wave.load(new Command() {
@Override
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.ui.xml 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.ui.xml 2011-07-28 14:07:43 UTC (rev 1468)
@@ -25,14 +25,12 @@
}
</ui:style>
- <g:HTMLPanel>
- <g:DeckPanel ui:field="deck" addStyleNames="k-doc-content-deck">
- <!-- <w:ImplPanel ui:field="waveHolder" addStyleNames="{style.waveHolder}"
- /> -->
- <g:VerticalPanel ui:field="waveHolderParent" />
- <g:FlowPanel ui:field="onlyViewParent" height="auto" width="auto" addStyleNames="{style.onlyparent}">
- <g:InlineHTML ui:field="onlyViewPanel" styleName="{style.viewonly}" />
- </g:FlowPanel>
- </g:DeckPanel>
- </g:HTMLPanel>
+ <g:DeckPanel ui:field="deck"
+ addStyleNames="{style.waveHolder} k-doc-content-deck">
+ <w:ImplPanel ui:field="waveHolderParent" addStyleNames="{style.waveHolder}"/>
+ <!-- <g:VerticalPanel ui:field="waveHolderParent" /> -->
+ <g:FlowPanel ui:field="onlyViewParent" height="auto" width="auto" addStyleNames="{style.onlyparent}">
+ <g:InlineHTML ui:field="onlyViewPanel" styleName="{style.viewonly}"/>
+ </g:FlowPanel>
+ </g:DeckPanel>
</ui:UiBinder>
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -112,30 +112,30 @@
// menu.hide();
}
});
+ final MenuDescriptor menu = new MenuDescriptor(i18n.t("Actions"));
+ menu.withIcon(res.arrowdown()).withStyles("k-def-docbtn, k-btn, k-button");
+ menu.setStandalone(false);
+ toolbar.add(menu);
+ final GuiActionDescCollection actions = item.getActionCollection();
+ toolbar.setVisible(actions.size() > 0);
+ itemWidget.setMenuVisible(false);
+
itemWidget.getRowMouse().addMouseOverHandler(new MouseOverHandler() {
- MenuDescriptor menu;
+ boolean initialized = false;
- private MenuDescriptor createMenu(final FolderItemDescriptor item,
- final FolderItemWidget itemWidget, final ActionSimplePanel toolbar) {
- MenuDescriptor menu;
- menu = new MenuDescriptor(i18n.t("Actions"));
- menu.withIcon(res.arrowdown()).withStyles("k-def-docbtn, k-btn, k-button");
- menu.setStandalone(false);
- itemWidget.setMenuVisible(false);
- toolbar.add(menu);
- final GuiActionDescCollection actions = item.getActionCollection();
- toolbar.setVisible(actions.size() > 0);
+ private void init(final FolderItemDescriptor item, final FolderItemWidget itemWidget,
+ final ActionSimplePanel toolbar) {
for (final GuiActionDescrip menuItem : actions) {
menuItem.setParent(menu);
toolbar.add(menuItem);
}
- return menu;
}
@Override
public void onMouseOver(final MouseOverEvent event) {
- if (menu == null) {
- menu = createMenu(item, itemWidget, toolbar);
+ if (!initialized) {
+ init(item, itemWidget, toolbar);
+ initialized = true;
}
// menu.setVisible(true);
itemWidget.setMenuVisible(true);
Added: trunk/src/main/java/cc/kune/wave/client/KuneConversation.css
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneConversation.css (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/KuneConversation.css 2011-07-28 14:07:43 UTC (rev 1468)
@@ -0,0 +1,30 @@
+/*
+ * CSS for conversations.
+ *
+ * Author: reuben(a)google.com (Reuben Kan)
+ */
+.fixedSelf {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 0;
+}
+
+@sprite .toolbar {
+ gwt-image: 'emptyToolbar';
+}
+
+.fixedThread { /*
+ * Allow scrolling. Also, keep the scrollbar there permanently, so that content does not get
+ * horizontally resized by the addition and removal of a scrollbar.
+ */
+ overflow-y: scroll;
+ /* position: absolute; */ /* position: relative; */
+ /* top: 24px; */
+ top: 0;
+ /* left: 0; */ /* right: 0; */ /* bottom: 0; */
+ /* Layout under siblings (participant panel etc). */
+ z-index: -1;
+}
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -0,0 +1,253 @@
+// @formatter:off
+/**
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package cc.kune.wave.client;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.waveprotocol.wave.client.account.Profile;
+import org.waveprotocol.wave.client.account.ProfileManager;
+import org.waveprotocol.wave.client.common.safehtml.EscapeUtils;
+import org.waveprotocol.wave.client.common.safehtml.SafeHtmlBuilder;
+import org.waveprotocol.wave.client.render.RenderingRules;
+import org.waveprotocol.wave.client.state.ThreadReadStateMonitor;
+import org.waveprotocol.wave.client.uibuilder.HtmlClosure;
+import org.waveprotocol.wave.client.uibuilder.HtmlClosureCollection;
+import org.waveprotocol.wave.client.uibuilder.UiBuilder;
+import org.waveprotocol.wave.client.wavepanel.render.ShallowBlipRenderer;
+import org.waveprotocol.wave.client.wavepanel.view.ViewIdMapper;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.AnchorViewBuilder;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.BlipMetaViewBuilder;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.BlipViewBuilder;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.ContinuationIndicatorViewBuilder;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.InlineThreadViewBuilder;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.ParticipantAvatarViewBuilder;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.ParticipantsViewBuilder;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.ReplyBoxViewBuilder;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.RootThreadViewBuilder;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.ViewFactory;
+import org.waveprotocol.wave.model.conversation.Conversation;
+import org.waveprotocol.wave.model.conversation.ConversationBlip;
+import org.waveprotocol.wave.model.conversation.ConversationThread;
+import org.waveprotocol.wave.model.conversation.ConversationView;
+import org.waveprotocol.wave.model.util.CollectionUtils;
+import org.waveprotocol.wave.model.util.IdentityMap;
+import org.waveprotocol.wave.model.util.IdentityMap.ProcV;
+import org.waveprotocol.wave.model.util.IdentityMap.Reduce;
+import org.waveprotocol.wave.model.util.StringMap;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+
+
+/**
+ * Renders conversational objects with UiBuilders.
+ *
+ */
+public final class KuneFullDomRenderer implements RenderingRules<UiBuilder> {
+
+ public interface DocRefRenderer {
+ DocRefRenderer EMPTY = new DocRefRenderer() {
+ @Override
+ public UiBuilder render(final ConversationBlip blip,
+ final IdentityMap<ConversationThread, UiBuilder> replies) {
+ return UiBuilder.Constant.of(EscapeUtils.fromSafeConstant("<div></div>"));
+ }
+ };
+
+ UiBuilder render(ConversationBlip blip,
+ IdentityMap<ConversationThread, UiBuilder> replies);
+ }
+
+ public interface ParticipantsRenderer {
+ ParticipantsRenderer EMPTY = new ParticipantsRenderer() {
+ @Override
+ public UiBuilder render(final Conversation c) {
+ return UiBuilder.Constant.of(EscapeUtils.fromSafeConstant("<div></div>"));
+ }
+ };
+
+ UiBuilder render(Conversation c);
+ }
+
+ private final ShallowBlipRenderer blipPopulator;
+ private final DocRefRenderer docRenderer;
+ private final ProfileManager profileManager;
+ private final ThreadReadStateMonitor readMonitor;
+ private final ViewFactory viewFactory;
+ private final ViewIdMapper viewIdMapper;
+ private final boolean showParticipantsPanel;
+
+ public KuneFullDomRenderer(final ShallowBlipRenderer blipPopulator, final DocRefRenderer docRenderer,
+ final ProfileManager profileManager, final ViewIdMapper viewIdMapper, final ViewFactory viewFactory,
+ final ThreadReadStateMonitor readMonitor, boolean showParticipantsPanel) {
+ this.blipPopulator = blipPopulator;
+ this.docRenderer = docRenderer;
+ this.profileManager = profileManager;
+ this.viewIdMapper = viewIdMapper;
+ this.viewFactory = viewFactory;
+ this.readMonitor = readMonitor;
+ this.showParticipantsPanel = showParticipantsPanel;
+ }
+
+ public UiBuilder getFirstConversation(final IdentityMap<Conversation, UiBuilder> conversations) {
+ return conversations.reduce(null, new Reduce<Conversation, UiBuilder, UiBuilder>() {
+ @Override
+ public UiBuilder apply(final UiBuilder soFar, final Conversation key, final UiBuilder item) {
+ // Pick the first rendering (any will do).
+ return soFar == null ? item : soFar;
+ }
+ });
+ }
+
+ @Override
+ public UiBuilder render(final Conversation conversation, final ParticipantId participant) {
+ final Profile profile = profileManager.getProfile(participant);
+ final String id = viewIdMapper.participantOf(conversation, participant);
+ // Use ParticipantAvatarViewBuilder for avatars.
+ // Kune patch
+ // final ParticipantNameViewBuilder participantUi = ParticipantNameViewBuilder.create(id);
+ final ParticipantAvatarViewBuilder participantUi = ParticipantAvatarViewBuilder.create(id);
+ participantUi.setAvatar(profile.getImageUrl());
+ participantUi.setName(profile.getFullName());
+ return participantUi;
+ }
+
+ @Override
+ public UiBuilder render(final Conversation conversation, final StringMap<UiBuilder> participantUis) {
+ final HtmlClosureCollection participantsUi = new HtmlClosureCollection();
+ for (final ParticipantId participant : conversation.getParticipantIds()) {
+ participantsUi.add(participantUis.get(participant.getAddress()));
+ }
+ final String id = viewIdMapper.participantsOf(conversation);
+ // Kune patch (but not used)
+ return showParticipantsPanel? ParticipantsViewBuilder.create(id, participantsUi): new UiBuilder() {
+ @Override
+ public void outputHtml(SafeHtmlBuilder arg0) {
+ // Don't show nothing
+ }};
+ }
+
+ @Override
+ public UiBuilder render(final Conversation conversation, final UiBuilder participantsUi, final UiBuilder threadUi) {
+ final String id = viewIdMapper.conversationOf(conversation);
+ final boolean isTop = !conversation.hasAnchor();
+ return isTop ? viewFactory.createTopConversationView(id, threadUi, participantsUi)
+ : viewFactory.createInlineConversationView(id, threadUi, participantsUi);
+ }
+
+ /**
+ */
+ @Override
+ public UiBuilder render(
+ final ConversationBlip blip, final IdentityMap<ConversationThread, UiBuilder> replies) {
+ return docRenderer.render(blip, replies);
+ }
+
+ @Override
+ public UiBuilder render(final ConversationBlip blip, final UiBuilder document,
+ final IdentityMap<ConversationThread, UiBuilder> anchorUis,
+ final IdentityMap<Conversation, UiBuilder> nestedConversations) {
+ final UiBuilder threadsUi = new UiBuilder() {
+ @Override
+ public void outputHtml(final SafeHtmlBuilder out) {
+ for (final ConversationThread thread : blip.getReplyThreads()) {
+ anchorUis.get(thread).outputHtml(out);
+ }
+ }
+ };
+
+ final UiBuilder convsUi = new UiBuilder() {
+ @Override
+ public void outputHtml(final SafeHtmlBuilder out) {
+ // Order by conversation id. Ideally, the sort key would be creation
+ // time, but that is not exposed in the conversation API.
+ final List<Conversation> ordered = CollectionUtils.newArrayList();
+ nestedConversations.each(new ProcV<Conversation, UiBuilder>() {
+ @Override
+ public void apply(final Conversation conv, final UiBuilder ui) {
+ ordered.add(conv);
+ }
+ });
+ Collections.sort(ordered, new Comparator<Conversation>() {
+ @Override
+ public int compare(final Conversation o1, final Conversation o2) {
+ return o1.getId().compareTo(o2.getId());
+ }
+ });
+ final List<UiBuilder> orderedUis = CollectionUtils.newArrayList();
+ for (final Conversation conv : ordered) {
+ nestedConversations.get(conv).outputHtml(out);
+ }
+ }
+ };
+
+ final BlipMetaViewBuilder metaUi = BlipMetaViewBuilder.create(viewIdMapper.metaOf(blip), document);
+ blipPopulator.render(blip, metaUi);
+
+ return BlipViewBuilder.create(viewIdMapper.blipOf(blip), metaUi, threadsUi, convsUi);
+ }
+
+ @Override
+ public UiBuilder render(final ConversationThread thread,
+ final IdentityMap<ConversationBlip, UiBuilder> blipUis) {
+ final HtmlClosure blipsUi = new HtmlClosure() {
+ @Override
+ public void outputHtml(final SafeHtmlBuilder out) {
+ for (final ConversationBlip blip : thread.getBlips()) {
+ final UiBuilder blipUi = blipUis.get(blip);
+ // Not all blips are rendered.
+ if (blipUi != null) {
+ blipUi.outputHtml(out);
+ }
+ }
+ }
+ };
+ final String threadId = viewIdMapper.threadOf(thread);
+ final String replyIndicatorId = viewIdMapper.replyIndicatorOf(thread);
+ UiBuilder builder = null;
+ if (thread.getConversation().getRootThread() == thread) {
+ final ReplyBoxViewBuilder replyBoxBuilder =
+ ReplyBoxViewBuilder.create(replyIndicatorId);
+ builder = RootThreadViewBuilder.create(threadId, blipsUi, replyBoxBuilder);
+ } else {
+ final ContinuationIndicatorViewBuilder indicatorBuilder = ContinuationIndicatorViewBuilder.create(
+ replyIndicatorId);
+ final InlineThreadViewBuilder inlineBuilder =
+ InlineThreadViewBuilder.create(threadId, blipsUi, indicatorBuilder);
+ final int read = readMonitor.getReadCount(thread);
+ final int unread = readMonitor.getUnreadCount(thread);
+ inlineBuilder.setTotalBlipCount(read + unread);
+ inlineBuilder.setUnreadBlipCount(unread);
+ builder = inlineBuilder;
+ }
+ return builder;
+ }
+
+ @Override
+ public UiBuilder render(final ConversationThread thread, final UiBuilder threadR) {
+ final String id = EscapeUtils.htmlEscape(viewIdMapper.defaultAnchorOf(thread));
+ return AnchorViewBuilder.create(id, threadR);
+ }
+
+ @Override
+ public UiBuilder render(final ConversationView wave,
+ final IdentityMap<Conversation, UiBuilder> conversations) {
+ // return the first conversation in the view.
+ // TODO(hearnden): select the 'best' conversation.
+ return conversations.isEmpty() ? null : getFirstConversation(conversations);
+ }
+}
Added: trunk/src/main/java/cc/kune/wave/client/KuneFullDomWaveRendererImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneFullDomWaveRendererImpl.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/KuneFullDomWaveRendererImpl.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -0,0 +1,118 @@
+// @formatter:off
+/**
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package cc.kune.wave.client;
+
+import org.waveprotocol.wave.client.account.ProfileManager;
+import org.waveprotocol.wave.client.common.safehtml.SafeHtmlBuilder;
+import org.waveprotocol.wave.client.render.ReductionBasedRenderer;
+import org.waveprotocol.wave.client.render.RenderingRules;
+import org.waveprotocol.wave.client.render.WaveRenderer;
+import org.waveprotocol.wave.client.state.ThreadReadStateMonitor;
+import org.waveprotocol.wave.client.uibuilder.UiBuilder;
+import org.waveprotocol.wave.client.wavepanel.render.ShallowBlipRenderer;
+import org.waveprotocol.wave.client.wavepanel.view.ViewIdMapper;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.BlipQueueRenderer;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.DomRenderer;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.ViewFactory;
+import org.waveprotocol.wave.model.conversation.Conversation;
+import org.waveprotocol.wave.model.conversation.ConversationBlip;
+import org.waveprotocol.wave.model.conversation.ConversationThread;
+import org.waveprotocol.wave.model.conversation.ConversationView;
+import org.waveprotocol.wave.model.util.IdentityMap;
+import org.waveprotocol.wave.model.wave.ParticipantId;
+
+import com.google.gwt.dom.client.Element;
+
+/**
+ * Renders waves into HTML DOM, given a renderer that renders waves as HTML
+ * closures.
+ *
+ */
+public final class KuneFullDomWaveRendererImpl implements DomRenderer {
+
+ public static DomRenderer create(final ConversationView wave, final ProfileManager profileManager,
+ final ShallowBlipRenderer shallowRenderer, final ViewIdMapper idMapper, final BlipQueueRenderer pager,
+ final ThreadReadStateMonitor readMonitor, final ViewFactory views, final boolean showParticipantsPanel) {
+ // Kune patch
+ final KuneFullDomRenderer.DocRefRenderer docRenderer = new KuneFullDomRenderer.DocRefRenderer() {
+
+ @Override
+ public UiBuilder render(
+ final ConversationBlip blip, final IdentityMap<ConversationThread, UiBuilder> replies) {
+ // Documents are rendered blank, and filled in later when they get paged
+ // in.
+ pager.add(blip);
+ return KuneFullDomRenderer.DocRefRenderer.EMPTY.render(blip, replies);
+ }
+ };
+ // Kune patch
+ final RenderingRules<UiBuilder> rules = new KuneFullDomRenderer(
+ shallowRenderer, docRenderer, profileManager, idMapper, views, readMonitor, showParticipantsPanel);
+ return new KuneFullDomWaveRendererImpl(ReductionBasedRenderer.of(rules, wave));
+ }
+
+ private final WaveRenderer<UiBuilder> driver;
+
+ private KuneFullDomWaveRendererImpl(final WaveRenderer<UiBuilder> driver) {
+ this.driver = driver;
+ }
+
+ //
+ // Temporary invokers. Anti-parser API will remove these methods.
+ //
+
+ /** Turns a UiBuilder rendering into a DOM element. */
+ private Element parseHtml(final UiBuilder ui) {
+ if (ui == null) {
+ return null;
+ }
+ final SafeHtmlBuilder html = new SafeHtmlBuilder();
+ ui.outputHtml(html);
+ final Element div = com.google.gwt.dom.client.Document.get().createDivElement();
+ div.setInnerHTML(html.toSafeHtml().asString());
+ final Element ret = div.getFirstChildElement();
+ // Detach, in order that this element looks free-floating (required by some
+ // preconditions).
+ ret.removeFromParent();
+ return ret;
+ }
+
+ @Override
+ public Element render(final Conversation conversation) {
+ return parseHtml(driver.render(conversation));
+ }
+
+ @Override
+ public Element render(final Conversation conversation, final ParticipantId participant) {
+ return parseHtml(driver.render(conversation, participant));
+ }
+
+ @Override
+ public Element render(final ConversationBlip blip) {
+ return parseHtml(driver.render(blip));
+ }
+
+ @Override
+ public Element render(final ConversationThread thread) {
+ return parseHtml(driver.render(thread));
+ }
+
+ @Override
+ public Element render(final ConversationView wave) {
+ return parseHtml(driver.render(wave));
+ }
+}
Added: trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -0,0 +1,253 @@
+// @formatter:off
+/**
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+package cc.kune.wave.client;
+
+import org.waveprotocol.box.webclient.client.RemoteViewServiceMultiplexer;
+import org.waveprotocol.box.webclient.client.StageTwoProvider;
+import org.waveprotocol.box.webclient.search.WaveContext;
+import org.waveprotocol.box.webclient.search.WaveStore;
+import org.waveprotocol.wave.client.StageOne;
+import org.waveprotocol.wave.client.StageThree;
+import org.waveprotocol.wave.client.StageTwo;
+import org.waveprotocol.wave.client.StageZero;
+import org.waveprotocol.wave.client.Stages;
+import org.waveprotocol.wave.client.account.ProfileManager;
+import org.waveprotocol.wave.client.common.util.AsyncHolder;
+import org.waveprotocol.wave.client.common.util.AsyncHolder.Accessor;
+import org.waveprotocol.wave.client.common.util.LogicalPanel;
+import org.waveprotocol.wave.client.wavepanel.view.BlipView;
+import org.waveprotocol.wave.client.wavepanel.view.dom.ModelAsViewProvider;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.BlipQueueRenderer;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.DomRenderer;
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.WavePanelResourceLoader;
+import org.waveprotocol.wave.model.conversation.Conversation;
+import org.waveprotocol.wave.model.conversation.ConversationBlip;
+import org.waveprotocol.wave.model.conversation.ConversationView;
+import org.waveprotocol.wave.model.id.IdGenerator;
+import org.waveprotocol.wave.model.id.ModernIdSerialiser;
+import org.waveprotocol.wave.model.waveref.WaveRef;
+
+import com.google.gwt.dom.client.Element;
+
+/**
+ * Stages for loading the undercurrent Wave Panel
+ *
+ * @author zdwang(a)google.com (David Wang)
+ */
+public class KuneStagesProvider extends Stages {
+
+ private final static AsyncHolder<Object> HALT = new AsyncHolder<Object>() {
+ @Override
+ public void call(final Accessor<Object> accessor) {
+ // Never ready, so never notify the accessor.
+ }
+ };
+
+ private final RemoteViewServiceMultiplexer channel;
+ private boolean closed;
+ private final IdGenerator idGenerator;
+ private final boolean isNewWave;
+ private final String localDomain;
+ private StageOne one;
+ private final ProfileManager profiles;
+ private final LogicalPanel rootPanel;
+
+ private final boolean showParticipantsPanel;
+ private StageThree three;
+ private StageTwo two;
+ private WaveContext wave;
+ private final Element wavePanelElement;
+ private final WaveRef waveRef;
+ private final WaveStore waveStore;
+
+ /**
+ * @param wavePanelElement The dom element to become the wave panel
+ * @param rootPanel A panel that this an ancestor of wavePanelElement. This is
+ * used for adopting to the GWT widget tree.
+ * @param waveRef the id of the wave to open. If null, it means, create a new
+ * wave.
+ * @param channel communication channel.
+ * @param isNewWave true if the wave is a new client-created wave
+ * @param idGenerator
+ */
+ public KuneStagesProvider(final Element wavePanelElement, final LogicalPanel rootPanel, final WaveRef waveRef,
+ final RemoteViewServiceMultiplexer channel, final IdGenerator idGenerator, final ProfileManager profiles,
+ final WaveStore store, final boolean isNewWave, final String localDomain, final boolean showParticipantsPanel) {
+ this.wavePanelElement = wavePanelElement;
+ this.rootPanel = rootPanel;
+ this.waveRef = waveRef;
+ this.channel = channel;
+ this.idGenerator = idGenerator;
+ this.profiles = profiles;
+ this.waveStore = store;
+ this.isNewWave = isNewWave;
+ this.localDomain = localDomain;
+ this.showParticipantsPanel = showParticipantsPanel;
+ }
+
+ @Override
+ protected AsyncHolder<StageOne> createStageOneLoader(final StageZero zero) {
+ return haltIfClosed(new StageOne.DefaultProvider(zero) {
+ @Override
+ protected LogicalPanel createWaveContainer() {
+ return rootPanel;
+ }
+
+ @Override
+ protected Element createWaveHolder() {
+ return wavePanelElement;
+ }
+ });
+ }
+
+ @Override
+ protected AsyncHolder<StageThree> createStageThreeLoader(final StageTwo two) {
+ return haltIfClosed(new StageThree.DefaultProvider(this.two = two) {
+ @Override
+ protected void create(final Accessor<StageThree> whenReady) {
+ // Prepend an init wave flow onto the stage continuation.
+ super.create(new Accessor<StageThree>() {
+ @Override
+ public void use(final StageThree x) {
+ onStageThreeLoaded(x, whenReady);
+ }
+ });
+ }
+
+ @Override
+ protected String getLocalDomain() {
+ return localDomain;
+ }
+ });
+ }
+
+ @Override
+ // Kune patch
+ protected AsyncHolder<StageTwo> createStageTwoLoader(final StageOne one) {
+ return haltIfClosed(new StageTwoProvider(
+ this.one = one, waveRef.getWaveId(), channel, isNewWave, idGenerator, profiles) {
+ @Override
+ protected DomRenderer createRenderer() {
+ return KuneFullDomWaveRendererImpl.create(getConversations(), getProfileManager(),
+ getBlipDetailer(), getViewIdMapper(), getBlipQueue(), getThreadReadStateMonitor(),
+ createViewFactories(), showParticipantsPanel);
+ }
+
+ @Override
+ protected void installFeatures() {
+ WavePanelResourceLoader.loadCss();
+ // KuneWavePanelResourceLoader.loadCss();
+ }
+ });
+ }
+
+ @Override
+ protected AsyncHolder<StageZero> createStageZeroLoader() {
+ return haltIfClosed(super.createStageZeroLoader());
+ }
+
+ public void destroy() {
+ if (wave != null) {
+ waveStore.remove(wave);
+ wave = null;
+ }
+ if (three != null) {
+ three.getEditActions().stopEditing();
+ three = null;
+ }
+ if (two != null) {
+ two.getConnector().close();
+ two = null;
+ }
+ if (one != null) {
+ one.getWavePanel().destroy();
+ one = null;
+ }
+ closed = true;
+ }
+
+ /**
+ * @return a halting provider if this stage is closed. Otherwise, returns the
+ * given provider.
+ */
+ @SuppressWarnings("unchecked") // HALT is safe as a holder for any type
+ private <T> AsyncHolder<T> haltIfClosed(final AsyncHolder<T> provider) {
+ return closed ? (AsyncHolder<T>) HALT : provider;
+ }
+
+ private void handleExistingWave(final StageThree three) {
+ // If there's blip reference then focus on that blip.
+ final String documentId = waveRef.getDocumentId();
+ if (documentId != null) {
+ final ModelAsViewProvider views = two.getModelAsViewProvider();
+ final BlipQueueRenderer blipQueue = two.getBlipQueue();
+ final ConversationView wave = two.getConversations();
+ blipQueue.flush();
+ // Find conversation
+ Conversation conversation;
+ if (waveRef.hasWaveletId()) {
+ final String id = ModernIdSerialiser.INSTANCE.serialiseWaveletId(waveRef.getWaveletId());
+ conversation = wave.getConversation(id);
+ } else {
+ // Unspecified wavelet means root.
+ conversation = wave.getRoot();
+ }
+ if (conversation != null) {
+ // Find selected blip.
+ final ConversationBlip blip = wave.getRoot().getBlip(documentId);
+ if (blip != null) {
+ final BlipView blipUi = views.getBlipView(blip);
+ if (blipUi != null) {
+ two.getStageOne().getFocusFrame().focus(blipUi);
+ }
+ }
+ }
+ }
+ }
+
+ private void initNewWave(final StageThree three) {
+ // Do the new-wave flow.
+ final ModelAsViewProvider views = two.getModelAsViewProvider();
+ final BlipQueueRenderer blipQueue = two.getBlipQueue();
+ final ConversationView wave = two.getConversations();
+
+ // Force rendering to finish.
+ blipQueue.flush();
+ final BlipView blipUi = views.getBlipView(wave.getRoot().getRootThread().getFirstBlip());
+ three.getEditActions().startEditing(blipUi);
+ }
+
+ private void onStageThreeLoaded(final StageThree x, final Accessor<StageThree> whenReady) {
+ if (closed) {
+ // Stop the loading process.
+ return;
+ }
+ three = x;
+ if (isNewWave) {
+ initNewWave(x);
+ } else {
+ handleExistingWave(x);
+ }
+ wave = new WaveContext(
+ two.getWave(), two.getConversations(), two.getSupplement(), two.getReadMonitor());
+ waveStore.add(wave);
+ whenReady.use(x);
+ }
+}
Added: trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -0,0 +1,22 @@
+package cc.kune.wave.client;
+
+import org.waveprotocol.wave.client.wavepanel.view.dom.full.TopConversationViewBuilder;
+
+import com.google.gwt.resources.client.ClientBundle;
+import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.resources.client.ImageResource.ImageOptions;
+import com.google.gwt.resources.client.ImageResource.RepeatStyle;
+
+public class KuneWaveResources {
+ // Not used now
+ public interface Conversation extends ClientBundle {
+ // Note: the CSS file contains a gwt-image reference, so must be defined
+ // after the referenced images in this interface.
+ @Source("KuneConversation.css")
+ TopConversationViewBuilder.Css css();
+
+ @ImageOptions(repeatStyle = RepeatStyle.Horizontal)
+ @Source("toolbar_empty.png")
+ ImageResource emptyToolbar();
+ }
+}
Modified: trunk/src/main/java/cc/kune/wave/client/WebClient.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WebClient.java 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/java/cc/kune/wave/client/WebClient.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -222,7 +222,7 @@
DebugMessagePanel logPanel;
/** The wave panel, if a wave is open. */
- private StagesProvider wave;
+ private KuneStagesProvider wave;
private final WaveStore waveStore = new SimpleWaveStore();
@@ -373,8 +373,8 @@
UIObject.setVisible(waveFrame.getElement(), true);
waveHolder.getElement().appendChild(loading);
final Element holder = waveHolder.getElement().appendChild(Document.get().createDivElement());
- final StagesProvider wave = new StagesProvider(
- holder, waveHolder, waveRef, channel, idGenerator, profiles, waveStore, isNewWave, Session.get().getDomain());
+ final KuneStagesProvider wave = new KuneStagesProvider(
+ holder, waveHolder, waveRef, channel, idGenerator, profiles, waveStore, isNewWave, Session.get().getDomain(), true);
this.wave = wave;
wave.load(new Command() {
@Override
Added: trunk/src/main/java/cc/kune/wave/client/toolbar_empty.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/wave/client/toolbar_empty.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java
===================================================================
--- trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java (rev 0)
+++ trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java 2011-07-28 14:07:43 UTC (rev 1468)
@@ -0,0 +1,104 @@
+// @formatter:off
+/**
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.waveprotocol.wave.client.wavepanel.view.dom.full;
+
+import org.waveprotocol.wave.client.editor.EditorImpl;
+
+import cc.kune.wave.client.KuneWaveResources;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.StyleInjector;
+
+/**
+ * This class is responsible for loading all the Css resources needed by the
+ * wave panel.
+ *
+ */
+public final class KuneWavePanelResourceLoader {
+
+ private final static BlipViewBuilder.Resources blip = GWT.create(BlipViewBuilder.Resources.class);
+ private final static CollapsibleBuilder.Resources collapsible =
+ GWT.create(CollapsibleBuilder.Resources.class);
+ // Kune patch (but not used yet)
+ private final static KuneWaveResources.Conversation conversation =
+ GWT.create(KuneWaveResources.Conversation.class);
+ private final static ContinuationIndicatorViewBuilder.Resources inlineContinuation =
+ GWT.create(ContinuationIndicatorViewBuilder.Resources.class);
+ private final static ParticipantsViewBuilder.Resources participants =
+ GWT.create(ParticipantsViewBuilder.Resources.class);
+ private final static ReplyBoxViewBuilder.Resources replyBox =
+ GWT.create(ReplyBoxViewBuilder.Resources.class);
+ private final static RootThreadViewBuilder.Resources rootThread =
+ GWT.create(RootThreadViewBuilder.Resources.class);
+
+ static {
+ // Inject all CSS synchronously. CSS must be injected synchronously, so that
+ // any layout queries, that may happen to occur in the same event cycle,
+ // operate on the correct state (GWT's default injection mode is
+ // asynchronous). CSS is injected together in one bundle to minimize layout
+ // invalidation, and to leave open the possibility of merging stylesheets
+ // together for efficiency.
+ final boolean isSynchronous = true;
+ StyleInjector.inject(blip.css().getText(), isSynchronous);
+ StyleInjector.inject(collapsible.css().getText(), isSynchronous);
+ StyleInjector.inject(rootThread.css().getText(), isSynchronous);
+ StyleInjector.inject(replyBox.css().getText(), isSynchronous);
+ StyleInjector.inject(inlineContinuation.css().getText(), isSynchronous);
+ StyleInjector.inject(conversation.css().getText(), isSynchronous);
+ StyleInjector.inject(participants.css().getText(), isSynchronous);
+ }
+
+ public static BlipViewBuilder.Resources getBlip() {
+ return blip;
+ }
+
+ public static CollapsibleBuilder.Resources getCollapsible() {
+ return collapsible;
+ }
+
+ public static ContinuationIndicatorViewBuilder.Resources getContinuationIndicator() {
+ return inlineContinuation;
+ }
+
+ public static KuneWaveResources.Conversation getConversation() {
+ return conversation;
+ }
+
+ public static ParticipantsViewBuilder.Resources getParticipants() {
+ return participants;
+ }
+
+ public static ReplyBoxViewBuilder.Resources getReplyBox() {
+ return replyBox;
+ }
+
+ public static RootThreadViewBuilder.Resources getRootThread() {
+ return rootThread;
+ }
+
+ /**
+ * Loads all the CSS required by the wave panel.
+ */
+ public static void loadCss() {
+ // Static initializer loads all the wave panel views.
+ // Need a few more:
+ EditorImpl.init();
+ }
+
+ private KuneWavePanelResourceLoader() {
+ }
+}
Modified: trunk/src/main/resources/wave-server.properties
===================================================================
--- trunk/src/main/resources/wave-server.properties 2011-07-27 14:27:34 UTC (rev 1467)
+++ trunk/src/main/resources/wave-server.properties 2011-07-28 14:07:43 UTC (rev 1468)
@@ -8,7 +8,7 @@
# Each address is a comma separated host:port pair.
http_frontend_public_address = localhost:8888
http_frontend_addresses = ${http_frontend_public_address}
-resource_bases = target/kune-0.0.8/,src/main/webapp/
+resource_bases = target/kune-0.1.0-SNAPSHOT/,src/main/webapp/
### Server-specific variables
###
1
0
Author: vjrj_
Date: 2011-07-27 16:27:34 +0200 (Wed, 27 Jul 2011)
New Revision: 1467
Modified:
trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
Log:
Wave copy fix
Modified: trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-07-27 14:08:41 UTC (rev 1466)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-07-27 14:27:34 UTC (rev 1467)
@@ -110,8 +110,12 @@
// Deep copy annotations
for (final Annotation annotation : fromBlip.getAnnotations()) {
final Range range = annotation.getRange();
- toBlip.range(range.getStart(), range.getEnd()).annotate(annotation.getName(),
- annotation.getValue());
+ try {
+ toBlip.range(range.getStart() + 1, range.getEnd() + 1).annotate(annotation.getName(),
+ annotation.getValue());
+ } catch (final IndexOutOfBoundsException e) {
+ // Don't copy faulty annotations
+ }
}
}
1
0
27 Jul '11
Author: vjrj_
Date: 2011-07-27 16:08:41 +0200 (Wed, 27 Jul 2011)
New Revision: 1466
Modified:
trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
trunk/src/main/resources/kune.properties
Log:
Wave copy fix
Modified: trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-07-27 11:36:00 UTC (rev 1465)
+++ trunk/src/main/java/cc/kune/wave/server/KuneWaveManagerDefault.java 2011-07-27 14:08:41 UTC (rev 1466)
@@ -25,6 +25,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import javax.annotation.Nonnull;
@@ -59,9 +60,13 @@
import com.google.wave.api.BlipData;
import com.google.wave.api.BlipThread;
import com.google.wave.api.Element;
+import com.google.wave.api.ElementType;
+import com.google.wave.api.FormElement;
import com.google.wave.api.Gadget;
+import com.google.wave.api.Image;
import com.google.wave.api.JsonRpcConstant.ParamsProperty;
import com.google.wave.api.JsonRpcResponse;
+import com.google.wave.api.Line;
import com.google.wave.api.OperationQueue;
import com.google.wave.api.OperationRequest;
import com.google.wave.api.OperationRequest.Parameter;
@@ -102,12 +107,36 @@
for (final BlipContent blipContent : fromBlip.all().values()) {
toBlip.append(blipContent);
}
+ // Deep copy annotations
for (final Annotation annotation : fromBlip.getAnnotations()) {
final Range range = annotation.getRange();
- toBlip.range(range.getStart() + 1, range.getEnd() + 1).annotate(annotation.getName(),
+ toBlip.range(range.getStart(), range.getEnd()).annotate(annotation.getName(),
annotation.getValue());
}
}
+
+ public static void copyWaveletElements(final Blip fromBlip, final Blip toBlip) {
+ // Deep copy form elements.
+ // DocumentModifyService don't permit this:
+ // "Can't insert other elements than text and gadgets at the moment");
+ for (final Entry<Integer, Element> entry : fromBlip.getElements().entrySet()) {
+ final ElementType type = entry.getValue().getType();
+ Element result = null;
+ if (FormElement.getFormElementTypes().contains(type)) {
+ result = new FormElement(type, entry.getValue().getProperties());
+ } else if (type == ElementType.GADGET) {
+ result = new Gadget(entry.getValue().getProperties());
+ } else if (type == ElementType.IMAGE) {
+ result = new Image(entry.getValue().getProperties());
+ } else if (type == ElementType.LINE) {
+ result = new Line(entry.getValue().getProperties());
+ } else {
+ result = new Element(type, entry.getValue().getProperties());
+ }
+ toBlip.append(result);
+ }
+ }
+
private final ConversationUtil conversationUtil;
private final EventDataConverterManager converterManager;
private final String domain;
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2011-07-27 11:36:00 UTC (rev 1465)
+++ trunk/src/main/resources/kune.properties 2011-07-27 14:08:41 UTC (rev 1466)
@@ -35,6 +35,7 @@
### Other params
# If defined create a copy of this wave as welcome to new users
+# kune.site.welcomewave = w+rtackLTkDCA
kune.site.welcomewave =
### Workspace enabled themes
1
0
Author: vjrj_
Date: 2011-07-27 13:36:00 +0200 (Wed, 27 Jul 2011)
New Revision: 1465
Modified:
trunk/src/main/webapp/others/kune-client-actions.xml
Log:
Vector gadget
Modified: trunk/src/main/webapp/others/kune-client-actions.xml
===================================================================
--- trunk/src/main/webapp/others/kune-client-actions.xml 2011-07-26 03:03:13 UTC (rev 1464)
+++ trunk/src/main/webapp/others/kune-client-actions.xml 2011-07-27 11:36:00 UTC (rev 1465)
@@ -3,6 +3,7 @@
<kuneClientActions>
<!-- List of Wave extensions to use in Kune ===================== -->
+
<waveExtensions>
<extension>
<name>Image</name>
@@ -181,6 +182,17 @@
<iconCss></iconCss>
</extension>
+ <extension>
+ <name>vectoreditor</name>
+ <installerUrl>none
+ </installerUrl>
+ <gadgetUrl>http://jsvectoreditor.googlecode.com/svn/trunk/wave/vectoreditor.xml
+ </gadgetUrl>
+ <iconUrl>http://upload.wikimedia.org/wikipedia/en/thumb/c/ce/SVG-logo.svg/200px-SVG-…
+ </iconUrl>
+ <iconCss></iconCss>
+ </extension>
+
</waveExtensions>
<!-- Where and how to use the above extensions ================ -->
@@ -635,6 +647,31 @@
<participants>ask</participants>
</guiActionDescriptor>
+ <guiActionDescriptor>
+ <type>wave-gadget</type>
+ <extensionName>vectoreditor</extensionName>
+ <name>New Image Painter</name>
+ <path>New Gadget»Others</path>
+ <description>Make a vector image with others in real-time
+ </description>
+ <new-content-title>New Vector Image</new-content-title>
+ <new-content-textintro>With this gadget you can make a vector image with others in real-time</new-content-textintro>
+ <enabled>true</enabled>
+ <typeIds>
+ <typeId origTypeId="docs.folder" destTypeId="docs.doc"/>
+ <typeId origTypeId="docs.root" destTypeId="docs.doc"/>
+ <typeId origTypeId="blogs.blog" destTypeId="blogs.post"/>
+ </typeIds>
+ <rol>
+ <!-- Administrator, Editor, Viewer -->
+ <rolRequired>Editor</rolRequired>
+ <authNeed>true</authNeed>
+ </rol>
+ <!-- only for new waves: anyone, onlymembers, onlyadmins, ask (not
+ used yet) -->
+ <participants>ask</participants>
+ </guiActionDescriptor>
+
</guiActionDescriptors>
</kuneClientActions>
1
0
26 Jul '11
Author: vjrj_
Date: 2011-07-26 05:03:13 +0200 (Tue, 26 Jul 2011)
New Revision: 1464
Added:
trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java
trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java
trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java
trunk/src/test/java/cc/kune/core/server/manager/LicenseManagerDefaultTest.java
Removed:
trunk/src/test/java/cc/kune/core/server/manager/ContentManagerTest.java
trunk/src/test/java/cc/kune/core/server/manager/GroupManagerTest.java
trunk/src/test/java/cc/kune/core/server/manager/I18nManagerTest.java
trunk/src/test/java/cc/kune/core/server/manager/LicenseManagerTest.java
Modified:
trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java
trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java
trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java
trunk/src/main/java/cc/kune/core/server/KuneContainerListener.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/rpc/ContentRPC.java
trunk/src/main/java/cc/kune/domain/Container.java
trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
trunk/src/test/java/cc/kune/core/server/PersistencePreLoadedDataTest.java
Log:
Drag and drop of contents in folders
Modified: trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -2,6 +2,11 @@
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.client.errors.ErrorHandler;
+import cc.kune.core.client.rpcservices.ContentServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.dto.StateContainerDTO;
import cc.kune.gspace.client.viewers.FolderItemWidget;
import com.allen_sauer.gwt.dnd.client.DragContext;
@@ -9,71 +14,111 @@
import com.allen_sauer.gwt.dnd.client.drop.SimpleDropController;
import com.google.gwt.event.logical.shared.AttachEvent;
import com.google.gwt.event.logical.shared.AttachEvent.Handler;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Widget;
+import com.google.inject.Inject;
-public class FolderViewerDropController extends SimpleDropController {
+public class FolderViewerDropController {
- public FolderViewerDropController(final Widget dropTarget, final KuneDragController dragController) {
- super(dropTarget);
- dropTarget.addStyleName("k-drop-allowed");
- dropTarget.addAttachHandler(new Handler() {
+ private final ContentServiceAsync contentService;
+ private final KuneDragController dragController;
+
+ private SimpleDropController dropController;
+
+ private final ErrorHandler erroHandler;
+ private final Session session;
+ private final StateManager stateManager;
+
+ @Inject
+ public FolderViewerDropController(final KuneDragController dragController,
+ final ContentServiceAsync contentService, final Session session, final StateManager stateManager,
+ final ErrorHandler erroHandler) {
+ this.dragController = dragController;
+ this.contentService = contentService;
+ this.session = session;
+ this.stateManager = stateManager;
+ this.erroHandler = erroHandler;
+
+ }
+
+ public void init(final Widget dropTarget) {
+ dropController = new SimpleDropController(dropTarget) {
+
@Override
- public void onAttachOrDetach(final AttachEvent event) {
- if (!event.isAttached()) {
- dragController.unregisterDropController(FolderViewerDropController.this);
- } else {
- dragController.registerDropController(FolderViewerDropController.this);
+ public void onDrop(final DragContext context) {
+ super.onDrop(context);
+ for (final Widget widget : context.selectedWidgets) {
+ if (widget instanceof FolderItemWidget) {
+ getDropTarget().removeStyleName("k-drop-allowed-hover");
+ if (getDropTarget() instanceof FolderItemWidget) {
+ // NotifyUser.info("" + ((FolderItemWidget)
+ // getDropTarget()).getToken().toString() + " receive: "
+ // + ((FolderItemWidget) widget).getToken().toString());
+ contentService.moveContent(session.getUserHash(), ((FolderItemWidget) widget).getToken(),
+ ((FolderItemWidget) getDropTarget()).getToken(),
+ new AsyncCallback<StateContainerDTO>() {
+ @Override
+ public void onFailure(final Throwable caught) {
+ erroHandler.process(caught);
+ stateManager.reload();
+ }
+
+ @Override
+ public void onSuccess(final StateContainerDTO result) {
+ stateManager.reload();
+ }
+ });
+ } else {
+ NotifyUser.info(TextUtils.IN_DEVELOPMENT);
+ }
+ }
}
}
- });
- }
- @Override
- public void onDrop(final DragContext context) {
- for (final Widget widget : context.selectedWidgets) {
- if (widget instanceof FolderItemWidget) {
- getDropTarget().removeStyleName("k-drop-allowed-hover");
- if (getDropTarget() instanceof FolderItemWidget) {
- // NotifyUser.info("" + ((FolderItemWidget)
- // getDropTarget()).getToken().toString() + " receive: "
- // + ((FolderItemWidget) widget).getToken().toString());
+ @Override
+ public void onEnter(final DragContext context) {
+ super.onEnter(context);
+ for (final Widget widget : context.selectedWidgets) {
+ if (widget instanceof FolderItemWidget) {
+ getDropTarget().addStyleName("k-drop-allowed-hover");
+ }
}
- NotifyUser.info(TextUtils.IN_DEVELOPMENT);
}
- }
- super.onDrop(context);
- }
- @Override
- public void onEnter(final DragContext context) {
- super.onEnter(context);
- for (final Widget widget : context.selectedWidgets) {
- if (widget instanceof FolderItemWidget) {
- getDropTarget().addStyleName("k-drop-allowed-hover");
+ @Override
+ public void onLeave(final DragContext context) {
+ super.onLeave(context);
+ for (final Widget widget : context.selectedWidgets) {
+ if (widget instanceof FolderItemWidget) {
+ getDropTarget().removeStyleName("k-drop-allowed-hover");
+ }
+ }
}
- }
- }
- @Override
- public void onLeave(final DragContext context) {
- super.onLeave(context);
- for (final Widget widget : context.selectedWidgets) {
- if (widget instanceof FolderItemWidget) {
- getDropTarget().removeStyleName("k-drop-allowed-hover");
+ @Override
+ public void onPreviewDrop(final DragContext context) throws VetoDragException {
+ for (final Widget widget : context.selectedWidgets) {
+ if (widget instanceof FolderItemWidget) {
+ getDropTarget().removeStyleName("k-drop-allowed-hover");
+ } else {
+ throw new VetoDragException();
+ }
+ }
+ super.onPreviewDrop(context);
}
- }
- }
+ };
- @Override
- public void onPreviewDrop(final DragContext context) throws VetoDragException {
- for (final Widget widget : context.selectedWidgets) {
- if (widget instanceof FolderItemWidget) {
- getDropTarget().removeStyleName("k-drop-allowed-hover");
- } else {
- throw new VetoDragException();
+ dropTarget.addStyleName("k-drop-allowed");
+ dropTarget.addAttachHandler(new Handler() {
+ @Override
+ public void onAttachOrDetach(final AttachEvent event) {
+ if (!event.isAttached()) {
+ dragController.unregisterDropController(dropController);
+ } else {
+ dragController.registerDropController(dropController);
+ }
}
- }
- super.onPreviewDrop(context);
+ });
}
}
Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -114,6 +114,10 @@
eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error,
i18n.t("Action not permitted in this location")));
goHome();
+ } else if (caught instanceof NameInUseException) {
+ logException(caught);
+ eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error,
+ i18n.t("A content with the same name already exist. Please rename it")));
} else if (caught instanceof LastAdminInGroupException) {
logException(caught);
NotifyUser.showAlertMessage(i18n.t("Warning"),
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/ContentService.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -59,6 +59,9 @@
TagCloudResult getSummaryTags(String userHash, StateToken groupToken) throws DefaultException;
+ StateContainerDTO moveContent(String userHash, StateToken contentToken, StateToken newContainerToken)
+ throws DefaultException;
+
RateResult rateContent(String userHash, StateToken token, Double value) throws DefaultException;
void removeAuthor(String userHash, StateToken token, String authorShortName) throws DefaultException;
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceAsync.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -60,6 +60,9 @@
void getSummaryTags(String userHash, StateToken groupToken, AsyncCallback<TagCloudResult> asyncCallback);
+ void moveContent(String userHash, StateToken contentToken, StateToken newContainerToken,
+ AsyncCallback<StateContainerDTO> asyncCallback);
+
void rateContent(String userHash, StateToken token, Double value,
AsyncCallback<RateResult> asyncCallback);
Modified: trunk/src/main/java/cc/kune/core/server/KuneContainerListener.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/KuneContainerListener.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/core/server/KuneContainerListener.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -36,42 +36,43 @@
import com.google.inject.Inject;
public class KuneContainerListener implements ContainerListener {
- private final Logger logger; // NOPMD by vjrj on 16/07/09 22:38
- private final KunePersistenceService persistenceService;
+ private final Logger logger; // NOPMD by vjrj on 16/07/09 22:38
+ private final KunePersistenceService persistenceService;
- @Inject
- public KuneContainerListener(final KunePersistenceService persistenceService, final Logger logger) {
- this.persistenceService = persistenceService;
- this.logger = logger;
- }
+ @Inject
+ public KuneContainerListener(final KunePersistenceService persistenceService, final Logger logger) {
+ this.persistenceService = persistenceService;
+ this.logger = logger;
+ }
- private void configureLog4j() {
- try {
- final Properties properties = new Properties();
- final InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(
- "log4j.dev.properties");
- properties.load(input);
- PropertyConfigurator.configure(properties);
- } catch (final IOException e) {
- e.printStackTrace();
- }
+ private void configureLog4j() {
+ try {
+ final Properties properties = new Properties();
+ final InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(
+ "log4j.dev.properties");
+ properties.load(input);
+ PropertyConfigurator.configure(properties);
+ } catch (final IOException e) {
+ e.printStackTrace();
}
+ }
- public Logger getLogger() {
- return logger;
- }
+ public Logger getLogger() {
+ return logger;
+ }
- @Override
- public void start() {
- configureLog4j();
- logger.log(Level.INFO, "Starting Kune...");
- persistenceService.start();
- logger.log(Level.INFO, "Kune server started");
- }
+ @Override
+ public void start() {
+ configureLog4j();
+ logger.log(Level.INFO, "Kune persistence starting");
+ persistenceService.start();
+ logger.log(Level.INFO, "Kune persistence started");
+ logger.log(Level.INFO, "Kune server started");
+ }
- @Override
- public void stop() {
- logger.log(Level.INFO, "Stopping Kune...");
- logger.log(Level.INFO, "Kune server stopped");
- }
+ @Override
+ public void stop() {
+ logger.log(Level.INFO, "Stopping Kune...");
+ logger.log(Level.INFO, "Kune server stopped");
+ }
}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContentManager.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/core/server/content/ContentManager.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -62,6 +62,8 @@
Double getRateContent(User user, Content content);
+ Content moveContent(Content content, Container newContainer);
+
RateResult rateContent(User rater, Long contentId, Double value) throws DefaultException;
void removeAuthor(User user, Long contentId, String authorShortName) throws DefaultException;
Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -190,6 +190,18 @@
}
}
+ public Content moveContent(final Content content, final Container newContainer) {
+ final String title = content.getTitle();
+ if (findIfExistsTitle(newContainer, title)) {
+ throw new NameInUseException();
+ }
+ final Container oldContainer = content.getContainer();
+ oldContainer.removeContent(content);
+ newContainer.addContent(content);
+ content.setContainer(newContainer);
+ return persist(content);
+ }
+
@Override
public RateResult rateContent(final User rater, final Long contentId, final Double value)
throws DefaultException {
Modified: trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -316,6 +316,26 @@
@Override
@Authenticated
+ @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor, mustCheckMembership = false)
+ @Transactional
+ public StateContainerDTO moveContent(final String userHash, final StateToken contentToken,
+ final StateToken newContainerToken) throws DefaultException {
+ final User user = getCurrentUser();
+ try {
+ final Content content = accessService.accessToContent(
+ ContentUtils.parseId(contentToken.getDocument()), user, AccessRol.Editor);
+ final Container newContainer = accessService.accessToContainer(
+ ContentUtils.parseId(newContainerToken.getFolder()), user, AccessRol.Editor);
+ final Container oldContainer = content.getContainer();
+ contentManager.moveContent(content, newContainer);
+ return getState(user, oldContainer);
+ } catch (final NoResultException e) {
+ throw new AccessViolationException();
+ }
+ }
+
+ @Override
+ @Authenticated
@Authorizated(accessRolRequired = AccessRol.Viewer)
@Transactional
public RateResult rateContent(final String userHash, final StateToken token, final Double value)
Modified: trunk/src/main/java/cc/kune/domain/Container.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/Container.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/domain/Container.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -238,6 +238,11 @@
return parent == null;
}
+ public void removeContent(final Content content) {
+ contents.size();
+ contents.remove(content);
+ }
+
public void setAbsolutePath(final List<Container> absolutePath) {
this.absolutePath = absolutePath;
}
Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -20,7 +20,6 @@
package cc.kune.gspace.client.tool.selector;
import cc.kune.core.client.dnd.FolderViewerDropController;
-import cc.kune.core.client.dnd.KuneDragController;
import cc.kune.gspace.client.GSpaceArmor;
import cc.kune.gspace.client.tool.selector.ToolSelectorItemPresenter.ToolSelectorItemView;
import cc.kune.gspace.client.tool.selector.ToolSelectorPresenter.ToolSelectorView;
@@ -31,6 +30,7 @@
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
+import com.google.inject.Provider;
import com.gwtplatform.mvp.client.ViewImpl;
public class ToolSelectorPanel extends ViewImpl implements ToolSelectorView {
@@ -40,14 +40,16 @@
private static ToolSelectorPanelUiBinder uiBinder = GWT.create(ToolSelectorPanelUiBinder.class);
- private final KuneDragController dragController;
+ private final Provider<FolderViewerDropController> dropControllerProv;
@UiField
FlowPanel flow;
@Inject
- public ToolSelectorPanel(final GSpaceArmor wsArmor, final KuneDragController dragController) {
- this.dragController = dragController;
+ public ToolSelectorPanel(final GSpaceArmor wsArmor,
+ final Provider<FolderViewerDropController> dropControllerProv) {
+ this.dropControllerProv = dropControllerProv;
+
wsArmor.getEntityToolsCenter().add(uiBinder.createAndBindUi(this));
}
@@ -55,7 +57,7 @@
public void addItem(final ToolSelectorItemView item) {
final Widget widget = item.asWidget();
flow.add(widget);
- new FolderViewerDropController(((ToolSelectorItemPanel) widget).getFlow(), dragController);
+ dropControllerProv.get().init(((ToolSelectorItemPanel) widget).getFlow());
}
@Override
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -23,6 +23,7 @@
import cc.kune.common.client.ui.HasEditHandler;
import cc.kune.common.client.ui.UiUtils;
import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.client.dnd.FolderViewerDropController;
import cc.kune.core.client.dnd.KuneDragController;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.shared.dto.StateContainerDTO;
@@ -35,12 +36,14 @@
import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
import com.google.gwt.user.client.ui.Widget;
+import com.google.inject.Provider;
import com.gwtplatform.mvp.client.ViewImpl;
public abstract class AbstractFolderViewerPanel extends ViewImpl implements FolderViewerView {
protected final ContentCapabilitiesRegistry capabilitiesRegistry;
private final ContentTitleWidget contentTitle;
protected final KuneDragController dragController;
+ protected final Provider<FolderViewerDropController> dropControllerProv;
private final InlineLabel emptyLabel;
private final FlowPanel emptyPanel;
protected final GSpaceArmor gsArmor;
@@ -48,11 +51,13 @@
protected Widget widget;
public AbstractFolderViewerPanel(final GSpaceArmor gsArmor, final I18nTranslationService i18n,
- final ContentCapabilitiesRegistry capabilitiesRegistry, final KuneDragController dragController) {
+ final ContentCapabilitiesRegistry capabilitiesRegistry, final KuneDragController dragController,
+ final Provider<FolderViewerDropController> dropControllerProv) {
this.gsArmor = gsArmor;
this.i18n = i18n;
this.capabilitiesRegistry = capabilitiesRegistry;
this.dragController = dragController;
+ this.dropControllerProv = dropControllerProv;
emptyPanel = new FlowPanel();
emptyLabel = new InlineLabel(i18n.t("This is empty."));
emptyLabel.setStyleName("k-empty-msg");
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -24,6 +24,7 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
import cc.kune.common.client.ui.BasicThumb;
+import cc.kune.core.client.dnd.FolderViewerDropController;
import cc.kune.core.client.dnd.KuneDragController;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.shared.dto.StateContainerDTO;
@@ -40,6 +41,7 @@
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
+import com.google.inject.Provider;
public class FolderViewerAsFlowPanel extends AbstractFolderViewerPanel {
interface FolderViewerAsFlowPanelUiBinder extends UiBinder<Widget, FolderViewerAsFlowPanel> {
@@ -52,8 +54,9 @@
@Inject
public FolderViewerAsFlowPanel(final GSpaceArmor gsArmor, final I18nTranslationService i18n,
- final ContentCapabilitiesRegistry capabilitiesRegistry, final KuneDragController dragController) {
- super(gsArmor, i18n, capabilitiesRegistry, dragController);
+ final ContentCapabilitiesRegistry capabilitiesRegistry, final KuneDragController dragController,
+ final Provider<FolderViewerDropController> dropControllerProv) {
+ super(gsArmor, i18n, capabilitiesRegistry, dragController, dropControllerProv);
widget = uiBinder.createAndBindUi(this);
}
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -49,6 +49,7 @@
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
+import com.google.inject.Provider;
public class FolderViewerAsTablePanel extends AbstractFolderViewerPanel {
@@ -67,8 +68,9 @@
@Inject
public FolderViewerAsTablePanel(final GSpaceArmor gsArmor, final I18nTranslationService i18n,
final GuiProvider guiProvider, final CoreResources res,
- final ContentCapabilitiesRegistry capabilitiesRegistry, final KuneDragController dragController) {
- super(gsArmor, i18n, capabilitiesRegistry, dragController);
+ final ContentCapabilitiesRegistry capabilitiesRegistry, final KuneDragController dragController,
+ final Provider<FolderViewerDropController> dropControllerProv) {
+ super(gsArmor, i18n, capabilitiesRegistry, dragController, dropControllerProv);
this.guiProvider = guiProvider;
this.res = res;
widget = uiBinder.createAndBindUi(this);
@@ -144,7 +146,7 @@
dragController.makeDraggable(itemWidget, itemWidget.getTitleWidget());
}
if (item.isDroppable()) {
- new FolderViewerDropController(itemWidget, dragController);
+ dropControllerProv.get().init(itemWidget);
}
}
Modified: trunk/src/test/java/cc/kune/core/server/PersistencePreLoadedDataTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/PersistencePreLoadedDataTest.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/test/java/cc/kune/core/server/PersistencePreLoadedDataTest.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -47,76 +47,80 @@
import com.google.inject.Inject;
public abstract class PersistencePreLoadedDataTest extends PersistenceTest {
- protected static final String USER_EMAIL = "useremail(a)example.com";
- protected static final String USER_LONG_NAME = "the user long name";
- protected static final String USER_PASSWORD = "userPassword";
- protected static final String USER_SHORT_NAME = "usershortname";
+ protected static final String USER_EMAIL = "useremail(a)example.com";
+ protected static final String USER_LONG_NAME = "the user long name";
+ protected static final String USER_PASSWORD = "userPassword";
+ protected static final String USER_SHORT_NAME = "usershortname";
- protected Container container;
- @Inject
- protected ContainerManager containerManager;
- protected Content content;
- @Inject
- protected ContentManager contentManager;
- @Inject
- protected I18nCountryManager countryManager;
- protected License defLicense;
- protected I18nLanguage english;
- protected I18nCountry gb;
- @Inject
- protected GroupFinder groupFinder;
- @Inject
- protected GroupManager groupManager;
- @Inject
- protected I18nLanguageManager languageManager;
+ protected Container container;
+ @Inject
+ protected ContainerManager containerManager;
+ protected Content content;
+ @Inject
+ protected ContentManager contentManager;
+ @Inject
+ protected I18nCountryManager countryManager;
+ protected License defLicense;
+ protected I18nLanguage english;
+ protected I18nCountry gb;
+ @Inject
+ protected GroupFinder groupFinder;
+ @Inject
+ protected GroupManager groupManager;
+ @Inject
+ protected I18nLanguageManager languageManager;
+ @Inject
+ protected LicenseFinder licenseFinder;
+ @Inject
+ protected LicenseManager licenseManager;
+ protected Container otherContainer;
+ // @Inject
+ // protected PropertyGroupManager propGroupManager;
+ protected User user;
+ @Inject
+ protected UserFinder userFinder;
+ @Inject
+ protected UserManager userManager;
- @Inject
- protected LicenseFinder licenseFinder;
- @Inject
- protected LicenseManager licenseManager;
- // @Inject
- // protected PropertyGroupManager propGroupManager;
- protected User user;
- @Inject
- protected UserFinder userFinder;
- @Inject
- protected UserManager userManager;
+ public PersistencePreLoadedDataTest() {
+ }
- public PersistencePreLoadedDataTest() {
+ @After
+ public void close() {
+ if (getTransaction().isActive()) {
+ getTransaction().rollback();
}
+ }
- @After
- public void close() {
- if (getTransaction().isActive()) {
- getTransaction().rollback();
- }
- }
-
- @Before
- public void preLoadData() throws Exception {
- openTransaction();
- assertEquals(0, userFinder.getAll().size());
- assertEquals(0, groupFinder.getAll().size());
- assertEquals(0, licenseFinder.getAll().size());
- // final PropertyGroup groupProps = new PropertyGroup(Group.PROPS_ID);
- // final PropertyGroup userProps = new PropertyGroup(User.PROPS_ID);
- // propGroupManager.persist(userProps);
- // propGroupManager.persist(groupProps);
- english = new I18nLanguage(Long.valueOf(1819), "English", "English", "en");
- languageManager.persist(english);
- gb = new I18nCountry(Long.valueOf(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom", "western", ",");
- countryManager.persist(gb);
- user = userManager.createUser(USER_SHORT_NAME, USER_LONG_NAME, USER_EMAIL, USER_PASSWORD, "en", "GB",
- TimeZone.getDefault().getID());
- defLicense = new License("by-sa-v3.0", "Creative Commons Attribution-ShareAlike", "",
- "http://creativecommons.org/licenses/by-sa/3.0/", true, true, false, "", "");
- licenseManager.persist(defLicense);
- groupManager.createUserGroup(user, true);
- content = new Content();
- content.setLanguage(english);
- contentManager.persist(content);
- container = new Container();
- container.setTypeId(TYPE_FOLDER);
- containerManager.persist(container);
- }
+ @Before
+ public void preLoadData() throws Exception {
+ openTransaction();
+ assertEquals(0, userFinder.getAll().size());
+ assertEquals(0, groupFinder.getAll().size());
+ assertEquals(0, licenseFinder.getAll().size());
+ // final PropertyGroup groupProps = new PropertyGroup(Group.PROPS_ID);
+ // final PropertyGroup userProps = new PropertyGroup(User.PROPS_ID);
+ // propGroupManager.persist(userProps);
+ // propGroupManager.persist(groupProps);
+ english = new I18nLanguage(Long.valueOf(1819), "English", "English", "en");
+ languageManager.persist(english);
+ gb = new I18nCountry(Long.valueOf(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom",
+ "western", ",");
+ countryManager.persist(gb);
+ user = userManager.createUser(USER_SHORT_NAME, USER_LONG_NAME, USER_EMAIL, USER_PASSWORD, "en",
+ "GB", TimeZone.getDefault().getID());
+ defLicense = new License("by-sa-v3.0", "Creative Commons Attribution-ShareAlike", "",
+ "http://creativecommons.org/licenses/by-sa/3.0/", true, true, false, "", "");
+ licenseManager.persist(defLicense);
+ groupManager.createUserGroup(user, true);
+ content = new Content();
+ content.setLanguage(english);
+ contentManager.persist(content);
+ container = new Container();
+ container.setTypeId(TYPE_FOLDER);
+ containerManager.persist(container);
+ otherContainer = new Container();
+ otherContainer.setTypeId(TYPE_FOLDER);
+ containerManager.persist(otherContainer);
+ }
}
Added: trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -0,0 +1,140 @@
+/*
+ *
+ * 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.core.server.manager;
+
+import static cc.kune.docs.shared.DocsConstants.TYPE_DOCUMENT;
+import static cc.kune.docs.shared.DocsConstants.TYPE_UPLOADEDFILE;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import cc.kune.core.client.errors.NameInUseException;
+import cc.kune.core.server.PersistencePreLoadedDataTest;
+import cc.kune.core.server.manager.impl.SearchResult;
+import cc.kune.domain.BasicMimeType;
+import cc.kune.domain.Content;
+
+public class ContentManagerDefaultTest extends PersistencePreLoadedDataTest {
+
+ private static final String BODY = "body";
+ private static final String MIMETYPE = "image";
+ private static final String TITLE = "title";
+
+ private Content createContent() {
+ assertNotNull(container);
+ final Content cnt = contentManager.createContent(TITLE, BODY, user, container, TYPE_UPLOADEDFILE);
+ persist(cnt);
+ containerManager.persist(container);
+ return cnt;
+ }
+
+ private void createContentWithMimeAndCheck(final String mimetype) {
+ final Content cnt = contentManager.createContent(TITLE, BODY, user, container, TYPE_UPLOADEDFILE);
+ cnt.setMimeType(new BasicMimeType(mimetype));
+ persist(cnt);
+ final Content newCnt = contentManager.find(cnt.getId());
+ assertEquals(mimetype, newCnt.getMimeType().toString());
+ }
+
+ @Ignore
+ @Test
+ public void testBasicBodySearch() {
+ createContent();
+ final SearchResult<Content> search = contentManager.search(BODY);
+ contentManager.reIndex();
+ assertEquals(1, search.getSize());
+ }
+
+ @Test
+ public void testBasicMimePersist() {
+ final String mimetype = "application/pdf";
+ createContentWithMimeAndCheck(mimetype);
+ }
+
+ @Test
+ public void testBasicMimePersistWithoutSubtype() {
+ final String mimetype = "application";
+ createContentWithMimeAndCheck(mimetype);
+ }
+
+ @Test
+ public void testBasicMimeSearchWithQueriesAndFields() {
+ createContentWithMimeAndCheck(MIMETYPE + "/png");
+ contentManager.reIndex();
+ final SearchResult<Content> search = contentManager.search(new String[] { MIMETYPE },
+ new String[] { "mimeType.mimetype" }, 0, 10);
+ assertEquals(1, search.getSize());
+ }
+
+ @Test
+ public void testBasicMove() {
+ final Content content = createContent();
+ final Content newContent = contentManager.moveContent(content, otherContainer);
+ assertEquals(newContent.getContainer(), otherContainer);
+ }
+
+ @Test(expected = NameInUseException.class)
+ public void testBasicMoveWithExistingNameShouldFail() {
+ final Content content = createContent();
+ final Content sameNameCnt = contentManager.createContent(TITLE, BODY, user, otherContainer,
+ TYPE_UPLOADEDFILE);
+ persist(sameNameCnt);
+ contentManager.moveContent(content, otherContainer);
+ }
+
+ @Test
+ public void testBasicSearchWithQueriesAndFields() {
+ createContentWithMimeAndCheck(MIMETYPE);
+ final SearchResult<Content> search = contentManager.search(new String[] { BODY },
+ new String[] { "lastRevision.body" }, 0, 10);
+ contentManager.reIndex();
+ assertEquals(1, search.getSize());
+ }
+
+ @Test
+ public void testBasicTitleSearch() {
+ createContent();
+ final SearchResult<Content> search = contentManager.search(TITLE);
+ contentManager.reIndex();
+ assertEquals(1, search.getSize());
+ }
+
+ @Ignore
+ @Test
+ public void testtMimeSearch() {
+ createContentWithMimeAndCheck(MIMETYPE + "/png");
+ contentManager.reIndex();
+ final SearchResult<Content> search = contentManager.searchMime(BODY, 0, 10, "asb", MIMETYPE);
+ assertEquals(1, search.getSize());
+ }
+
+ /**
+ * This normally fails with mysql (not configured for utf-8), see the INSTALL
+ * mysql section
+ */
+ @Test
+ public void testUTF8Persist() {
+ final Content cnt = contentManager.createContent("汉语/漢語", "汉语/漢語", user, container, TYPE_DOCUMENT);
+ final Content newCnt = contentManager.find(cnt.getId());
+ assertEquals("汉语/漢語", newCnt.getTitle());
+ }
+}
Deleted: trunk/src/test/java/cc/kune/core/server/manager/ContentManagerTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/ContentManagerTest.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/test/java/cc/kune/core/server/manager/ContentManagerTest.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -1,119 +0,0 @@
-/*
- *
- * 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.core.server.manager;
-
-import static cc.kune.docs.shared.DocsConstants.TYPE_DOCUMENT;
-import static cc.kune.docs.shared.DocsConstants.TYPE_UPLOADEDFILE;
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-import cc.kune.core.server.PersistencePreLoadedDataTest;
-import cc.kune.core.server.manager.impl.SearchResult;
-import cc.kune.domain.BasicMimeType;
-import cc.kune.domain.Content;
-
-public class ContentManagerTest extends PersistencePreLoadedDataTest {
-
- private static final String BODY = "body";
- private static final String MIMETYPE = "image";
- private static final String TITLE = "title";
-
- private void createContent() {
- final Content cnt = contentManager.createContent(TITLE, BODY, user, container, TYPE_UPLOADEDFILE);
- persist(cnt);
- }
-
- private void createContentWithMimeAndCheck(final String mimetype) {
- final Content cnt = contentManager.createContent(TITLE, BODY, user, container, TYPE_UPLOADEDFILE);
- cnt.setMimeType(new BasicMimeType(mimetype));
- persist(cnt);
- final Content newCnt = contentManager.find(cnt.getId());
- assertEquals(mimetype, newCnt.getMimeType().toString());
- }
-
- @Ignore
- @Test
- public void testBasicBodySearch() {
- createContent();
- final SearchResult<Content> search = contentManager.search(BODY);
- contentManager.reIndex();
- assertEquals(1, search.getSize());
- }
-
- @Test
- public void testBasicMimePersist() {
- final String mimetype = "application/pdf";
- createContentWithMimeAndCheck(mimetype);
- }
-
- @Test
- public void testBasicMimePersistWithoutSubtype() {
- final String mimetype = "application";
- createContentWithMimeAndCheck(mimetype);
- }
-
- @Test
- public void testBasicMimeSearchWithQueriesAndFields() {
- createContentWithMimeAndCheck(MIMETYPE + "/png");
- contentManager.reIndex();
- final SearchResult<Content> search = contentManager.search(new String[] { MIMETYPE },
- new String[] { "mimeType.mimetype" }, 0, 10);
- assertEquals(1, search.getSize());
- }
-
- @Test
- public void testBasicSearchWithQueriesAndFields() {
- createContentWithMimeAndCheck(MIMETYPE);
- final SearchResult<Content> search = contentManager.search(new String[] { BODY },
- new String[] { "lastRevision.body" }, 0, 10);
- contentManager.reIndex();
- assertEquals(1, search.getSize());
- }
-
- @Test
- public void testBasicTitleSearch() {
- createContent();
- final SearchResult<Content> search = contentManager.search(TITLE);
- contentManager.reIndex();
- assertEquals(1, search.getSize());
- }
-
- @Ignore
- @Test
- public void testtMimeSearch() {
- createContentWithMimeAndCheck(MIMETYPE + "/png");
- contentManager.reIndex();
- final SearchResult<Content> search = contentManager.searchMime(BODY, 0, 10, "asb", MIMETYPE);
- assertEquals(1, search.getSize());
- }
-
- /**
- * This normally fails with mysql (not configured for utf-8), see the INSTALL
- * mysql section
- */
- @Test
- public void testUTF8Persist() {
- final Content cnt = contentManager.createContent("汉语/漢語", "汉语/漢語", user, container, TYPE_DOCUMENT);
- final Content newCnt = contentManager.find(cnt.getId());
- assertEquals("汉语/漢語", newCnt.getTitle());
- }
-}
Added: trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -0,0 +1,203 @@
+/*
+ *
+ * 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.core.server.manager;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.TimeZone;
+
+import org.apache.lucene.queryParser.ParseException;
+import org.hibernate.validator.InvalidStateException;
+import org.junit.Test;
+
+import cc.kune.core.client.errors.EmailAddressInUseException;
+import cc.kune.core.client.errors.GroupNameInUseException;
+import cc.kune.core.client.errors.I18nNotFoundException;
+import cc.kune.core.client.errors.UserRegistrationException;
+import cc.kune.core.server.PersistencePreLoadedDataTest;
+import cc.kune.core.server.manager.impl.SearchResult;
+import cc.kune.core.shared.dto.GroupType;
+import cc.kune.domain.AccessLists;
+import cc.kune.domain.Group;
+import cc.kune.domain.SocialNetwork;
+import cc.kune.domain.User;
+
+public class GroupManagerDefaultTest extends PersistencePreLoadedDataTest {
+
+ private static final String PUBLIC_DESCRIP = "Some public descrip";
+
+ @Test
+ public void createdGroupShoudHaveValidSocialNetwork() throws Exception {
+ final Group group = new Group("short", "longName", defLicense, GroupType.PROJECT);
+ groupManager.createGroup(group, user, PUBLIC_DESCRIP);
+ final SocialNetwork socialNetwork = group.getSocialNetwork();
+ final AccessLists lists = socialNetwork.getAccessLists();
+ assertTrue(lists.getAdmins().includes(user.getUserGroup()));
+ assertTrue(lists.getEditors().isEmpty());
+ assertTrue(lists.getViewers().isEmpty());
+ closeTransaction();
+ }
+
+ @Test
+ public void createGroup() throws Exception {
+ final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense,
+ GroupType.PROJECT);
+ groupManager.createGroup(group, user, PUBLIC_DESCRIP);
+ final Group otherGroup = groupManager.findByShortName("ysei");
+
+ assertEquals(group.getLongName(), otherGroup.getLongName());
+ assertEquals(group.getShortName(), otherGroup.getShortName());
+ closeTransaction();
+ }
+
+ @Test
+ public void createGroupAndSearch() throws Exception, ParseException {
+ final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense,
+ GroupType.PROJECT);
+ groupManager.createGroup(group, user, PUBLIC_DESCRIP);
+ groupManager.reIndex();
+ final SearchResult<Group> result = groupManager.search("ysei");
+ assertEquals(1, result.getSize());
+ assertEquals("ysei", result.getList().get(0).getShortName());
+ rollbackTransaction();
+ }
+
+ @Test(expected = GroupNameInUseException.class)
+ public void createGroupWithExistingLongName() throws Exception {
+ final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense,
+ GroupType.PROJECT);
+ groupManager.createGroup(group, user, PUBLIC_DESCRIP);
+
+ final Group group2 = new Group("ysei2", "Yellow Submarine Environmental Initiative", defLicense,
+ GroupType.PROJECT);
+ group2.setDefaultLicense(defLicense);
+ groupManager.createGroup(group2, user, PUBLIC_DESCRIP);
+
+ rollbackTransaction();
+ }
+
+ @Test(expected = GroupNameInUseException.class)
+ public void createGroupWithExistingShortName() throws Exception {
+ final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense,
+ GroupType.PROJECT);
+ groupManager.createGroup(group, user, PUBLIC_DESCRIP);
+
+ final Group group2 = new Group("ysei", "Yellow Submarine Environmental Initiative 2", defLicense,
+ GroupType.PROJECT);
+ groupManager.createGroup(group2, user, PUBLIC_DESCRIP);
+
+ rollbackTransaction();
+ }
+
+ private void createTestGroup(final int number) throws Exception {
+ final Group g = new Group("ysei" + number, "Yellow Submarine Environmental Initiative " + number, defLicense,
+ GroupType.PROJECT);
+ groupManager.createGroup(g, user, PUBLIC_DESCRIP);
+ }
+
+ @Test(expected = EmailAddressInUseException.class)
+ public void createUserExistingEmail() throws I18nNotFoundException, GroupNameInUseException,
+ EmailAddressInUseException {
+ final User user1 = userManager.createUser("test", "test 1 name", "test1(a)example.com", "some password", "en",
+ "GB", "GMT");
+ groupManager.createUserGroup(user1);
+ final User user2 = userManager.createUser("test2", "test 2 name", "test1(a)example.com", "some password", "en",
+ "GB", "GMT");
+ groupManager.createUserGroup(user2);
+ }
+
+ @Test(expected = GroupNameInUseException.class)
+ public void createUserExistingLongName() throws I18nNotFoundException, GroupNameInUseException,
+ EmailAddressInUseException {
+ final User user1 = userManager.createUser("test", "test 1 name", "test1(a)example.com", "some password", "en",
+ "GB", "GMT");
+ groupManager.createUserGroup(user1);
+ final User user2 = userManager.createUser("test2", "test 1 name", "test2(a)example.com", "some password", "en",
+ "GB", "GMT");
+ groupManager.createUserGroup(user2);
+ }
+
+ @Test(expected = GroupNameInUseException.class)
+ public void createUserExistingShortName() throws I18nNotFoundException, GroupNameInUseException,
+ EmailAddressInUseException {
+ final User user1 = userManager.createUser("test", "test 1 name", "test1(a)example.com", "some password", "en",
+ "GB", "GMT");
+ groupManager.createUserGroup(user1);
+ final User user2 = userManager.createUser("test", "test 2 name", "test2(a)example.com", "some password", "en",
+ "GB", "GMT");
+ groupManager.createUserGroup(user2);
+ }
+
+ @Test(expected = EmailAddressInUseException.class)
+ public void createUserWithExistingEmail() throws Exception {
+ final User user2 = userManager.createUser("username2", "the user name 2", USER_EMAIL, "userPassword", "en",
+ "GB", TimeZone.getDefault().getID());
+ groupManager.createUserGroup(user2);
+ rollbackTransaction();
+ }
+
+ @Test(expected = GroupNameInUseException.class)
+ public void createUserWithExistingLongName() throws Exception {
+ final User user2 = userManager.createUser("username2", USER_LONG_NAME, "email2(a)example.com", "userPassword",
+ "en", "GB", TimeZone.getDefault().getID());
+ groupManager.createUserGroup(user2);
+ rollbackTransaction();
+ }
+
+ @Test(expected = GroupNameInUseException.class)
+ public void createUserWithExistingShortName() throws Exception {
+ final User user2 = userManager.createUser(USER_SHORT_NAME, "the user name 2", "email2(a)example.com",
+ "userPassword", "en", "GB", TimeZone.getDefault().getID());
+ groupManager.createUserGroup(user2);
+ rollbackTransaction();
+ }
+
+ @Test(expected = UserRegistrationException.class)
+ public void createUserWithIncorrectShortName() throws Exception {
+ final User user2 = userManager.createUser("u s", "the user name 2", "email2(a)example.com", "userPassword", "en",
+ "GB", TimeZone.getDefault().getID());
+ groupManager.createUserGroup(user2);
+ rollbackTransaction();
+ }
+
+ @Test(expected = InvalidStateException.class)
+ public void createUserWithVeryShortName() throws Exception {
+ final User user2 = userManager.createUser("us", "the user name 2", "email2(a)example.com", "userPassword", "en",
+ "GB", TimeZone.getDefault().getID());
+ groupManager.createUserGroup(user2);
+ rollbackTransaction();
+ }
+
+ @Test
+ public void groupSearchPagination() throws Exception, ParseException {
+ for (int i = 1; i < 10; i++) {
+ createTestGroup(i);
+ }
+ groupManager.reIndex();
+ final SearchResult<Group> result = groupManager.search("Yellow", 0, 5);
+ assertEquals(9, result.getSize());
+ assertEquals(5, result.getList().size());
+ final SearchResult<Group> result2 = groupManager.search("Yellow", 5, 5);
+ assertEquals(9, result2.getSize());
+ assertEquals(4, result2.getList().size());
+ rollbackTransaction();
+ }
+}
Deleted: trunk/src/test/java/cc/kune/core/server/manager/GroupManagerTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/GroupManagerTest.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/test/java/cc/kune/core/server/manager/GroupManagerTest.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -1,203 +0,0 @@
-/*
- *
- * 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.core.server.manager;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.TimeZone;
-
-import org.apache.lucene.queryParser.ParseException;
-import org.hibernate.validator.InvalidStateException;
-import org.junit.Test;
-
-import cc.kune.core.client.errors.EmailAddressInUseException;
-import cc.kune.core.client.errors.GroupNameInUseException;
-import cc.kune.core.client.errors.I18nNotFoundException;
-import cc.kune.core.client.errors.UserRegistrationException;
-import cc.kune.core.server.PersistencePreLoadedDataTest;
-import cc.kune.core.server.manager.impl.SearchResult;
-import cc.kune.core.shared.dto.GroupType;
-import cc.kune.domain.AccessLists;
-import cc.kune.domain.Group;
-import cc.kune.domain.SocialNetwork;
-import cc.kune.domain.User;
-
-public class GroupManagerTest extends PersistencePreLoadedDataTest {
-
- private static final String PUBLIC_DESCRIP = "Some public descrip";
-
- @Test
- public void createdGroupShoudHaveValidSocialNetwork() throws Exception {
- final Group group = new Group("short", "longName", defLicense, GroupType.PROJECT);
- groupManager.createGroup(group, user, PUBLIC_DESCRIP);
- final SocialNetwork socialNetwork = group.getSocialNetwork();
- final AccessLists lists = socialNetwork.getAccessLists();
- assertTrue(lists.getAdmins().includes(user.getUserGroup()));
- assertTrue(lists.getEditors().isEmpty());
- assertTrue(lists.getViewers().isEmpty());
- closeTransaction();
- }
-
- @Test
- public void createGroup() throws Exception {
- final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense,
- GroupType.PROJECT);
- groupManager.createGroup(group, user, PUBLIC_DESCRIP);
- final Group otherGroup = groupManager.findByShortName("ysei");
-
- assertEquals(group.getLongName(), otherGroup.getLongName());
- assertEquals(group.getShortName(), otherGroup.getShortName());
- closeTransaction();
- }
-
- @Test
- public void createGroupAndSearch() throws Exception, ParseException {
- final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense,
- GroupType.PROJECT);
- groupManager.createGroup(group, user, PUBLIC_DESCRIP);
- groupManager.reIndex();
- final SearchResult<Group> result = groupManager.search("ysei");
- assertEquals(1, result.getSize());
- assertEquals("ysei", result.getList().get(0).getShortName());
- rollbackTransaction();
- }
-
- @Test(expected = GroupNameInUseException.class)
- public void createGroupWithExistingLongName() throws Exception {
- final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense,
- GroupType.PROJECT);
- groupManager.createGroup(group, user, PUBLIC_DESCRIP);
-
- final Group group2 = new Group("ysei2", "Yellow Submarine Environmental Initiative", defLicense,
- GroupType.PROJECT);
- group2.setDefaultLicense(defLicense);
- groupManager.createGroup(group2, user, PUBLIC_DESCRIP);
-
- rollbackTransaction();
- }
-
- @Test(expected = GroupNameInUseException.class)
- public void createGroupWithExistingShortName() throws Exception {
- final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense,
- GroupType.PROJECT);
- groupManager.createGroup(group, user, PUBLIC_DESCRIP);
-
- final Group group2 = new Group("ysei", "Yellow Submarine Environmental Initiative 2", defLicense,
- GroupType.PROJECT);
- groupManager.createGroup(group2, user, PUBLIC_DESCRIP);
-
- rollbackTransaction();
- }
-
- private void createTestGroup(final int number) throws Exception {
- final Group g = new Group("ysei" + number, "Yellow Submarine Environmental Initiative " + number, defLicense,
- GroupType.PROJECT);
- groupManager.createGroup(g, user, PUBLIC_DESCRIP);
- }
-
- @Test(expected = EmailAddressInUseException.class)
- public void createUserExistingEmail() throws I18nNotFoundException, GroupNameInUseException,
- EmailAddressInUseException {
- final User user1 = userManager.createUser("test", "test 1 name", "test1(a)example.com", "some password", "en",
- "GB", "GMT");
- groupManager.createUserGroup(user1);
- final User user2 = userManager.createUser("test2", "test 2 name", "test1(a)example.com", "some password", "en",
- "GB", "GMT");
- groupManager.createUserGroup(user2);
- }
-
- @Test(expected = GroupNameInUseException.class)
- public void createUserExistingLongName() throws I18nNotFoundException, GroupNameInUseException,
- EmailAddressInUseException {
- final User user1 = userManager.createUser("test", "test 1 name", "test1(a)example.com", "some password", "en",
- "GB", "GMT");
- groupManager.createUserGroup(user1);
- final User user2 = userManager.createUser("test2", "test 1 name", "test2(a)example.com", "some password", "en",
- "GB", "GMT");
- groupManager.createUserGroup(user2);
- }
-
- @Test(expected = GroupNameInUseException.class)
- public void createUserExistingShortName() throws I18nNotFoundException, GroupNameInUseException,
- EmailAddressInUseException {
- final User user1 = userManager.createUser("test", "test 1 name", "test1(a)example.com", "some password", "en",
- "GB", "GMT");
- groupManager.createUserGroup(user1);
- final User user2 = userManager.createUser("test", "test 2 name", "test2(a)example.com", "some password", "en",
- "GB", "GMT");
- groupManager.createUserGroup(user2);
- }
-
- @Test(expected = EmailAddressInUseException.class)
- public void createUserWithExistingEmail() throws Exception {
- final User user2 = userManager.createUser("username2", "the user name 2", USER_EMAIL, "userPassword", "en",
- "GB", TimeZone.getDefault().getID());
- groupManager.createUserGroup(user2);
- rollbackTransaction();
- }
-
- @Test(expected = GroupNameInUseException.class)
- public void createUserWithExistingLongName() throws Exception {
- final User user2 = userManager.createUser("username2", USER_LONG_NAME, "email2(a)example.com", "userPassword",
- "en", "GB", TimeZone.getDefault().getID());
- groupManager.createUserGroup(user2);
- rollbackTransaction();
- }
-
- @Test(expected = GroupNameInUseException.class)
- public void createUserWithExistingShortName() throws Exception {
- final User user2 = userManager.createUser(USER_SHORT_NAME, "the user name 2", "email2(a)example.com",
- "userPassword", "en", "GB", TimeZone.getDefault().getID());
- groupManager.createUserGroup(user2);
- rollbackTransaction();
- }
-
- @Test(expected = UserRegistrationException.class)
- public void createUserWithIncorrectShortName() throws Exception {
- final User user2 = userManager.createUser("u s", "the user name 2", "email2(a)example.com", "userPassword", "en",
- "GB", TimeZone.getDefault().getID());
- groupManager.createUserGroup(user2);
- rollbackTransaction();
- }
-
- @Test(expected = InvalidStateException.class)
- public void createUserWithVeryShortName() throws Exception {
- final User user2 = userManager.createUser("us", "the user name 2", "email2(a)example.com", "userPassword", "en",
- "GB", TimeZone.getDefault().getID());
- groupManager.createUserGroup(user2);
- rollbackTransaction();
- }
-
- @Test
- public void groupSearchPagination() throws Exception, ParseException {
- for (int i = 1; i < 10; i++) {
- createTestGroup(i);
- }
- groupManager.reIndex();
- final SearchResult<Group> result = groupManager.search("Yellow", 0, 5);
- assertEquals(9, result.getSize());
- assertEquals(5, result.getList().size());
- final SearchResult<Group> result2 = groupManager.search("Yellow", 5, 5);
- assertEquals(9, result2.getSize());
- assertEquals(4, result2.getList().size());
- rollbackTransaction();
- }
-}
Added: trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -0,0 +1,179 @@
+/*
+ *
+ * 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.core.server.manager;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.HashMap;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import cc.kune.core.server.PersistenceTest;
+import cc.kune.core.server.manager.I18nCountryManager;
+import cc.kune.core.server.manager.I18nLanguageManager;
+import cc.kune.core.server.manager.I18nTranslationManager;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.domain.I18nCountry;
+import cc.kune.domain.I18nLanguage;
+import cc.kune.domain.I18nTranslation;
+
+import com.google.inject.Inject;
+
+public class I18nManagerDefaultTest extends PersistenceTest {
+ @Inject
+ I18nTranslationManager translationManager;
+ @Inject
+ I18nCountryManager countryManager;
+ @Inject
+ I18nLanguageManager languageManager;
+ @Inject
+ I18nTranslationService translationService;
+
+ @Test
+ public void byDefaultUseEnglish() {
+ HashMap<String, String> map = translationManager.getLexicon("en");
+ HashMap<String, String> map2 = translationManager.getLexicon("af");
+ assertEquals(map.size(), map2.size());
+ }
+
+ @After
+ public void close() {
+ if (getTransaction().isActive()) {
+ getTransaction().rollback();
+ }
+ }
+
+ @Test
+ public void getNonExistentTranslationInAnyLangReturnsKey() {
+ HashMap<String, String> map = translationManager.getLexicon("en");
+ HashMap<String, String> map2 = translationManager.getLexicon("aa");
+ int initialSize = map.size();
+ int initialSize2 = map2.size();
+
+ String translation = translationManager.getTranslation("es", "Foo foo foo");
+ String translation2 = translationManager.getTranslation("aa", "Foo foo foo");
+
+ assertEquals(I18nTranslation.UNTRANSLATED_VALUE, translation);
+ assertEquals(I18nTranslation.UNTRANSLATED_VALUE, translation2);
+
+ map = translationManager.getLexicon("en");
+ map2 = translationManager.getLexicon("aa");
+ int newSize = map.size();
+ int newSize2 = map2.size();
+
+ assertEquals(initialSize + 1, newSize);
+ assertEquals(initialSize2 + 1, newSize2);
+ }
+
+ @Test
+ public void getNonExistentTranslationReturnsDefaultLanguage() {
+ String translation = translationManager.getTranslation("af", "January [month]");
+ assertEquals("January", translation);
+ }
+
+ @Test
+ public void getTranslation() {
+ String translation = translationManager.getTranslation("af", "Sunday [weekday]");
+ assertEquals("Sondag", translation);
+ }
+
+ @Test
+ public void getTranslationUTF8() {
+ String translation = translationManager.getTranslation("el", "January [month]");
+ assertEquals("Ιανουάριος", translation);
+ }
+
+ @Test
+ public void getTranslationWithIntArg() {
+ String translation = translationManager.getTranslation("en", "[%d] users", 20);
+ assertEquals("20 users", translation);
+ }
+
+ @Test
+ public void getTranslationWithIntArgFromService() {
+ String translation = translationService.t("[%d] users", 20);
+ assertEquals("20 users", translation);
+ }
+
+ @Test
+ public void getTranslationWithIntArgFromWithNtService() {
+ String translation = translationService.tWithNT("[%d] users", "foo foo", 20);
+ assertEquals("20 users", translation);
+ }
+
+ @Test
+ public void getTranslationWithStringArg() {
+ String translation = translationManager.getTranslation("en", "[%s] users", "Twenty");
+ assertEquals("Twenty users", translation);
+ }
+
+ @Test
+ public void getTranslationWithStringArgFromService() {
+ String translation = translationService.t("[%s] users", "Twenty");
+ assertEquals("Twenty users", translation);
+ }
+
+ @Test
+ public void getTranslationWithStringArgWithNtFromService() {
+ String translation = translationService.tWithNT("[%s] users", "foo foo", "Twenty");
+ assertEquals("Twenty users", translation);
+ }
+
+ @Before
+ public void insertData() {
+ openTransaction();
+ I18nLanguage english = new I18nLanguage(Long.valueOf(1819), "English", "English", "en");
+ I18nLanguage spanish = new I18nLanguage(Long.valueOf(5889), "Spanish", "Español", "es");
+ I18nLanguage afrikaans = new I18nLanguage(Long.valueOf(114), "Afrikaans", "Afrikaans", "af");
+ I18nLanguage greek = new I18nLanguage(Long.valueOf(1793), "Greek", "Ελληνικά", "el");
+ languageManager.persist(english);
+ languageManager.persist(spanish);
+ languageManager.persist(afrikaans);
+ languageManager.persist(greek);
+ translationManager.persist(new I18nTranslation("Sunday [weekday]", english, "Sunday"));
+ translationManager.persist(new I18nTranslation("January [month]", english, "January"));
+ translationManager.persist(new I18nTranslation("Sunday [weekday]", afrikaans, "Sondag"));
+ translationManager.persist(new I18nTranslation("January [month]", greek, "Ιανουάριος"));
+ translationManager.persist(new I18nTranslation(StringEscapeUtils.escapeHtml("[%s] users"), english,
+ StringEscapeUtils.escapeHtml("[%s] users")));
+ translationManager.persist(new I18nTranslation(StringEscapeUtils.escapeHtml("[%d] users"), english,
+ StringEscapeUtils.escapeHtml("[%d] users")));
+ I18nCountry gb = new I18nCountry(Long.valueOf(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom",
+ "western", ",");
+ countryManager.persist(gb);
+ }
+
+ @Test
+ public void setTranslation() {
+ translationManager.setTranslation("en", "Foo foo foo", "Foo foo foo translation");
+ String translation = translationManager.getTranslation("en", "Foo foo foo");
+ assertEquals("Foo foo foo translation", translation);
+ }
+
+ @Test
+ public void testGetLexicon() {
+ HashMap<String, String> map = translationManager.getLexicon("af");
+ assertTrue(map.size() > 0);
+ }
+}
Deleted: trunk/src/test/java/cc/kune/core/server/manager/I18nManagerTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/I18nManagerTest.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/test/java/cc/kune/core/server/manager/I18nManagerTest.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -1,179 +0,0 @@
-/*
- *
- * 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.core.server.manager;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.HashMap;
-
-import org.apache.commons.lang.StringEscapeUtils;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import cc.kune.core.server.PersistenceTest;
-import cc.kune.core.server.manager.I18nCountryManager;
-import cc.kune.core.server.manager.I18nLanguageManager;
-import cc.kune.core.server.manager.I18nTranslationManager;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.domain.I18nCountry;
-import cc.kune.domain.I18nLanguage;
-import cc.kune.domain.I18nTranslation;
-
-import com.google.inject.Inject;
-
-public class I18nManagerTest extends PersistenceTest {
- @Inject
- I18nTranslationManager translationManager;
- @Inject
- I18nCountryManager countryManager;
- @Inject
- I18nLanguageManager languageManager;
- @Inject
- I18nTranslationService translationService;
-
- @Test
- public void byDefaultUseEnglish() {
- HashMap<String, String> map = translationManager.getLexicon("en");
- HashMap<String, String> map2 = translationManager.getLexicon("af");
- assertEquals(map.size(), map2.size());
- }
-
- @After
- public void close() {
- if (getTransaction().isActive()) {
- getTransaction().rollback();
- }
- }
-
- @Test
- public void getNonExistentTranslationInAnyLangReturnsKey() {
- HashMap<String, String> map = translationManager.getLexicon("en");
- HashMap<String, String> map2 = translationManager.getLexicon("aa");
- int initialSize = map.size();
- int initialSize2 = map2.size();
-
- String translation = translationManager.getTranslation("es", "Foo foo foo");
- String translation2 = translationManager.getTranslation("aa", "Foo foo foo");
-
- assertEquals(I18nTranslation.UNTRANSLATED_VALUE, translation);
- assertEquals(I18nTranslation.UNTRANSLATED_VALUE, translation2);
-
- map = translationManager.getLexicon("en");
- map2 = translationManager.getLexicon("aa");
- int newSize = map.size();
- int newSize2 = map2.size();
-
- assertEquals(initialSize + 1, newSize);
- assertEquals(initialSize2 + 1, newSize2);
- }
-
- @Test
- public void getNonExistentTranslationReturnsDefaultLanguage() {
- String translation = translationManager.getTranslation("af", "January [month]");
- assertEquals("January", translation);
- }
-
- @Test
- public void getTranslation() {
- String translation = translationManager.getTranslation("af", "Sunday [weekday]");
- assertEquals("Sondag", translation);
- }
-
- @Test
- public void getTranslationUTF8() {
- String translation = translationManager.getTranslation("el", "January [month]");
- assertEquals("Ιανουάριος", translation);
- }
-
- @Test
- public void getTranslationWithIntArg() {
- String translation = translationManager.getTranslation("en", "[%d] users", 20);
- assertEquals("20 users", translation);
- }
-
- @Test
- public void getTranslationWithIntArgFromService() {
- String translation = translationService.t("[%d] users", 20);
- assertEquals("20 users", translation);
- }
-
- @Test
- public void getTranslationWithIntArgFromWithNtService() {
- String translation = translationService.tWithNT("[%d] users", "foo foo", 20);
- assertEquals("20 users", translation);
- }
-
- @Test
- public void getTranslationWithStringArg() {
- String translation = translationManager.getTranslation("en", "[%s] users", "Twenty");
- assertEquals("Twenty users", translation);
- }
-
- @Test
- public void getTranslationWithStringArgFromService() {
- String translation = translationService.t("[%s] users", "Twenty");
- assertEquals("Twenty users", translation);
- }
-
- @Test
- public void getTranslationWithStringArgWithNtFromService() {
- String translation = translationService.tWithNT("[%s] users", "foo foo", "Twenty");
- assertEquals("Twenty users", translation);
- }
-
- @Before
- public void insertData() {
- openTransaction();
- I18nLanguage english = new I18nLanguage(Long.valueOf(1819), "English", "English", "en");
- I18nLanguage spanish = new I18nLanguage(Long.valueOf(5889), "Spanish", "Español", "es");
- I18nLanguage afrikaans = new I18nLanguage(Long.valueOf(114), "Afrikaans", "Afrikaans", "af");
- I18nLanguage greek = new I18nLanguage(Long.valueOf(1793), "Greek", "Ελληνικά", "el");
- languageManager.persist(english);
- languageManager.persist(spanish);
- languageManager.persist(afrikaans);
- languageManager.persist(greek);
- translationManager.persist(new I18nTranslation("Sunday [weekday]", english, "Sunday"));
- translationManager.persist(new I18nTranslation("January [month]", english, "January"));
- translationManager.persist(new I18nTranslation("Sunday [weekday]", afrikaans, "Sondag"));
- translationManager.persist(new I18nTranslation("January [month]", greek, "Ιανουάριος"));
- translationManager.persist(new I18nTranslation(StringEscapeUtils.escapeHtml("[%s] users"), english,
- StringEscapeUtils.escapeHtml("[%s] users")));
- translationManager.persist(new I18nTranslation(StringEscapeUtils.escapeHtml("[%d] users"), english,
- StringEscapeUtils.escapeHtml("[%d] users")));
- I18nCountry gb = new I18nCountry(Long.valueOf(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom",
- "western", ",");
- countryManager.persist(gb);
- }
-
- @Test
- public void setTranslation() {
- translationManager.setTranslation("en", "Foo foo foo", "Foo foo foo translation");
- String translation = translationManager.getTranslation("en", "Foo foo foo");
- assertEquals("Foo foo foo translation", translation);
- }
-
- @Test
- public void testGetLexicon() {
- HashMap<String, String> map = translationManager.getLexicon("af");
- assertTrue(map.size() > 0);
- }
-}
Added: trunk/src/test/java/cc/kune/core/server/manager/LicenseManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/LicenseManagerDefaultTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/server/manager/LicenseManagerDefaultTest.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -0,0 +1,64 @@
+/*
+ *
+ * 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.core.server.manager;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import cc.kune.core.server.PersistenceTest;
+import cc.kune.core.server.manager.LicenseManager;
+import cc.kune.domain.License;
+import cc.kune.domain.finders.LicenseFinder;
+
+import com.google.inject.Inject;
+
+public class LicenseManagerDefaultTest extends PersistenceTest {
+ private License license;
+ @Inject
+ LicenseFinder licenseFinder;
+ @Inject
+ LicenseManager licenseManager;
+
+ @After
+ public void close() {
+ if (getTransaction().isActive()) {
+ getTransaction().rollback();
+ }
+ }
+
+ @Before
+ public void insertData() {
+ openTransaction();
+ assertEquals(0, licenseFinder.getAll().size());
+ license = new License("by", "Creative Commons Attribution", "", "http://creativecommons.org/licenses/by/3.0/",
+ true, false, false, "", "");
+ licenseManager.persist(license);
+ }
+
+ @Test
+ public void testLicenseCreation() {
+ assertNotNull(license.getId());
+ assertEquals(1, licenseFinder.getAll().size());
+ }
+}
Deleted: trunk/src/test/java/cc/kune/core/server/manager/LicenseManagerTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/LicenseManagerTest.java 2011-07-25 22:00:29 UTC (rev 1463)
+++ trunk/src/test/java/cc/kune/core/server/manager/LicenseManagerTest.java 2011-07-26 03:03:13 UTC (rev 1464)
@@ -1,64 +0,0 @@
-/*
- *
- * 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.core.server.manager;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import cc.kune.core.server.PersistenceTest;
-import cc.kune.core.server.manager.LicenseManager;
-import cc.kune.domain.License;
-import cc.kune.domain.finders.LicenseFinder;
-
-import com.google.inject.Inject;
-
-public class LicenseManagerTest extends PersistenceTest {
- private License license;
- @Inject
- LicenseFinder licenseFinder;
- @Inject
- LicenseManager licenseManager;
-
- @After
- public void close() {
- if (getTransaction().isActive()) {
- getTransaction().rollback();
- }
- }
-
- @Before
- public void insertData() {
- openTransaction();
- assertEquals(0, licenseFinder.getAll().size());
- license = new License("by", "Creative Commons Attribution", "", "http://creativecommons.org/licenses/by/3.0/",
- true, false, false, "", "");
- licenseManager.persist(license);
- }
-
- @Test
- public void testLicenseCreation() {
- assertNotNull(license.getId());
- assertEquals(1, licenseFinder.getAll().size());
- }
-}
1
0
25 Jul '11
Author: vjrj_
Date: 2011-07-26 00:00:29 +0200 (Tue, 26 Jul 2011)
New Revision: 1463
Added:
trunk/src/main/java/cc/kune/core/client/dnd/
trunk/src/main/java/cc/kune/core/client/dnd/DebugDropController.java
trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java
trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java
trunk/src/main/java/cc/kune/core/client/dnd/NotAllowedDropController.java
trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropController.java
trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java
Modified:
trunk/.classpath
trunk/pom.xml
trunk/src/main/java/cc/kune/Kune.gwt.xml
trunk/src/main/java/cc/kune/chat/client/AvatarDecoratorImpl.java
trunk/src/main/java/cc/kune/common/client/ui/BasicThumb.java
trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java
trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java
trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java
trunk/src/main/java/cc/kune/core/public/ws.css
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java
trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.java
trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
Log:
drag & drop added
Modified: trunk/.classpath
===================================================================
--- trunk/.classpath 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/.classpath 2011-07-25 22:00:29 UTC (rev 1463)
@@ -1,155 +1,154 @@
-<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry including="**/*.java" kind="src" output="target/test-classes" path="src/test/java"/>
- <classpathentry including="**/*.java" kind="src" path="src/main/java"/>
- <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
- <classpathentry kind="var" path="M2_REPO/javax/inject/javax.inject/1/javax.inject-1.jar" sourcepath="M2_REPO/javax/inject/javax.inject/1/javax.inject-1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar" sourcepath="M2_REPO/javax/transaction/jta/1.1/jta-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar" sourcepath="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar" sourcepath="M2_REPO/javax/servlet/servlet-api/2.5/servlet-api-2.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar" sourcepath="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/appengine/appengine-api-1.0-sdk/1.3.1/appengine-api-1.0-sdk-1.3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.1-SNAPSHOT/box-0.3.1-SNAPSHOT.jar" sourcepath="/M2_REPO/org/waveprotocol/box-src/0.3.1-SNAPSHOT/box-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.1-SNAPSHOT/box-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
- <classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client/0.3.1-SNAPSHOT/client-0.3.1-SNAPSHOT.jar" sourcepath="/M2_REPO/org/waveprotocol/client-src/0.3.1-SNAPSHOT/client-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common/0.3.1-SNAPSHOT/client-common-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common-src/0.3.1-SNAPSHOT/client-common-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.1-SNAPSHOT/client-scheduler-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-src/0.3.1-SNAPSHOT/client-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/common-src/0.3.1-SNAPSHOT/common-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" sourcepath="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar" sourcepath="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar" sourcepath="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/communication-src/0.3.1-SNAPSHOT/communication-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.1-SNAPSHOT/concurrencycontrol-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/crawl_htmlunit/r5662-gae/crawl_htmlunit-r5662-gae.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5.jar" sourcepath="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0.jar" sourcepath="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite/r1694/emite-r1694.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite-proxy/0.1/emite-proxy-0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar" sourcepath="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/guava/guava-gwt/r09/guava-gwt-r09.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/inject/guice/3.0/guice-3.0.jar" sourcepath="M2_REPO/com/google/inject/guice/3.0/guice-3.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-assisted-inject/2.0/guice-assisted-inject-2.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-persist/3.0/guice-persist-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-persist/3.0/guice-persist-3.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/adamtacy/gwt-fx/r464/gwt-fx-r464.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-gin/1.0-r137/gwt-gin-1.0-r137.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.1-SNAPSHOT/gwt-util-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/2.0.0/gwt-voices-2.0.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtext/gwtext/2.0.5/gwtext-2.0.5.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtextux/gwtextux/0.4.0.924/gwtextux-0.4.0.924.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-crawler/0.5/gwtp-crawler-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-crawler/0.5/gwtp-crawler-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-client/0.5/gwtp-dispatch-client-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-client/0.5/gwtp-dispatch-client-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-server/0.5/gwtp-dispatch-server-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-server/0.5/gwtp-dispatch-server-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-shared/0.5/gwtp-dispatch-shared-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-shared/0.5/gwtp-dispatch-shared-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-mvp-client/0.5/gwtp-mvp-client-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-mvp-client/0.5/gwtp-mvp-client-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-processors/0.5/gwtp-processors-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-processors/0.5/gwtp-processors-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-tester/0.5/gwtp-tester-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-tester/0.5/gwtp-tester-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/googlecode/gwtupload/gwtupload/0.6.3-compat/gwtupload-0.6.3-compat.jar" sourcepath="M2_REPO/com/googlecode/gwtupload/gwtupload/0.6.3-compat/gwtupload-0.6.3-compat-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/extjs/gxt/2.2.1/gxt-2.2.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.20070617/h2-1.0.20070617.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/calclab/emite/hablar/r1697/hablar-r1697.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-c3p0/3.3.1.GA/hibernate-c3p0-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-c3p0/3.3.1.GA/hibernate-c3p0-3.3.1.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-tools/3.2.3.GA/hibernate-tools-3.2.3.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/3.1.0.GA/hibernate-validator-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-validator/3.1.0.GA/hibernate-validator-3.1.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.7/htmlunit-2.7.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.7/htmlunit-2.7-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.7/htmlunit-core-js-2.7.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.7/htmlunit-core-js-2.7-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/beust/jcommander/1.12/jcommander-1.12.jar" sourcepath="M2_REPO/com/beust/jcommander/1.12/jcommander-1.12-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2.jar" sourcepath="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/jmagick/jmagick/6.2.6-0/jmagick-6.2.6-0.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/java/dev/jna/jna/3.2.2/jna-3.2.2.jar" sourcepath="M2_REPO/net/java/dev/jna/jna/3.2.2/jna-3.2.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jruby/jruby-complete/1.2.0/jruby-complete-1.2.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jruby/rack/jruby-rack/0.9.4/jruby-rack-0.9.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/json/json/20080701/json-20080701.jar" sourcepath="M2_REPO/org/json/json/20080701/json-20080701-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15.jar" sourcepath="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jsoup/jsoup/1.2.2/jsoup-1.2.2.jar" sourcepath="M2_REPO/org/jsoup/jsoup/1.2.2/jsoup-1.2.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47.jar" sourcepath="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jukito/jukito/1.0/jukito-1.0.jar" sourcepath="M2_REPO/org/jukito/jukito/1.0/jukito-1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/4.8.2/junit-4.8.2.jar" sourcepath="M2_REPO/junit/junit/4.8.2/junit-4.8.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-core/1.7.0/liquibase-core-1.7.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-plugin/1.7.0.0/liquibase-plugin-1.7.0.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16.jar" sourcepath="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar" sourcepath="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0.jar" sourcepath="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/media-src/0.3.1-SNAPSHOT/media-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar" sourcepath="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.1-SNAPSHOT/model-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16.jar" sourcepath="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.14/nekohtml-1.9.14.jar" sourcepath="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.14/nekohtml-1.9.14-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar" sourcepath="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-msg/0.3.1-SNAPSHOT/proto-msg-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/w3c/css/sac/1.3/sac-1.3.jar" sourcepath="M2_REPO/org/w3c/css/sac/1.3/sac-1.3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium/2.0a4/selenium-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium/2.0a4/selenium-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.0a4/selenium-chrome-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.0a4/selenium-chrome-driver-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-common/2.0a4/selenium-common-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-common/2.0a4/selenium-common-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.0a4/selenium-firefox-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.0a4/selenium-firefox-driver-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.0a4/selenium-htmlunit-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.0a4/selenium-htmlunit-driver-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.0a4/selenium-ie-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.0a4/selenium-ie-driver-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-remote-client/2.0a4/selenium-remote-client-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-remote-client/2.0a4/selenium-remote-client-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-remote-common/2.0a4/selenium-remote-common-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-remote-common/2.0a4/selenium-remote-common-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-support/2.0a4/selenium-support-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-support/2.0a4/selenium-support-2.0a4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/xalan/serializer/2.7.1/serializer-2.7.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/jivesoftware/smack/3.1.0/smack-3.1.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/jivesoftware/smackx/3.1.0/smackx-3.1.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/debugger/smackx-debugger/3.0.4/smackx-debugger-3.0.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/yaml/snakeyaml/1.6/snakeyaml-1.6.jar" sourcepath="M2_REPO/org/yaml/snakeyaml/1.6/snakeyaml-1.6-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/testng/testng/6.0.1/testng-6.0.1.jar" sourcepath="M2_REPO/org/testng/testng/6.0.1/testng-6.0.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5.jar" sourcepath="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.1-SNAPSHOT/util-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-0.3/0.3.1-SNAPSHOT/waveinabox-server-0.3-0.3.1-SNAPSHOT.jar" sourcepath="/M2_REPO/org/waveprotocol/model-src/0.3.1-SNAPSHOT/model-src-0.3.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1.jar" sourcepath="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar" sourcepath="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1.jar" sourcepath="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1-sources.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry including="**/*.java" kind="src" path=".apt_generated"/>
- <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
- <classpathentry kind="output" path="target/kune-0.0.8/WEB-INF/classes"/>
-</classpath>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
+ <classpathentry kind="src" path="src/main/java" including="**/*.java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/kune-0.1.0-SNAPSHOT/WEB-INF/classes"/>
+ <classpathentry kind="var" path="M2_REPO/javax/inject/javax.inject/1/javax.inject-1.jar" sourcepath="M2_REPO/javax/inject/javax.inject/1/javax.inject-1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar" sourcepath="M2_REPO/javax/transaction/jta/1.1/jta-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar" sourcepath="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar" sourcepath="M2_REPO/javax/servlet/servlet-api/2.5/servlet-api-2.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar" sourcepath="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/appengine/appengine-api-1.0-sdk/1.3.1/appengine-api-1.0-sdk-1.3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.1-SNAPSHOT/box-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.1-SNAPSHOT/box-src-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client/0.3.1-SNAPSHOT/client-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common/0.3.1-SNAPSHOT/client-common-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common-src/0.3.1-SNAPSHOT/client-common-src-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.1-SNAPSHOT/client-scheduler-src-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-src/0.3.1-SNAPSHOT/client-src-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/common-src/0.3.1-SNAPSHOT/common-src-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" sourcepath="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar" sourcepath="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar" sourcepath="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/communication-src/0.3.1-SNAPSHOT/communication-src-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.1-SNAPSHOT/concurrencycontrol-src-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/crawl_htmlunit/r5662-gae/crawl_htmlunit-r5662-gae.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5.jar" sourcepath="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0.jar" sourcepath="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite/r1694/emite-r1694.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite-proxy/0.1/emite-proxy-0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar" sourcepath="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/guava/guava-gwt/r09/guava-gwt-r09.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/guice/3.0/guice-3.0.jar" sourcepath="M2_REPO/com/google/inject/guice/3.0/guice-3.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-assisted-inject/2.0/guice-assisted-inject-2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-persist/3.0/guice-persist-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-persist/3.0/guice-persist-3.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/dnd/gwt-dnd/gwt-dnd/3.0.1/gwt-dnd-3.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/adamtacy/gwt-fx/r464/gwt-fx-r464.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-gin/1.0-r137/gwt-gin-1.0-r137.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.1-SNAPSHOT/gwt-util-src-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/2.0.0/gwt-voices-2.0.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtext/gwtext/2.0.5/gwtext-2.0.5.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtextux/gwtextux/0.4.0.924/gwtextux-0.4.0.924.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-crawler/0.5/gwtp-crawler-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-crawler/0.5/gwtp-crawler-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-client/0.5/gwtp-dispatch-client-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-client/0.5/gwtp-dispatch-client-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-server/0.5/gwtp-dispatch-server-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-server/0.5/gwtp-dispatch-server-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-shared/0.5/gwtp-dispatch-shared-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-shared/0.5/gwtp-dispatch-shared-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-mvp-client/0.5/gwtp-mvp-client-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-mvp-client/0.5/gwtp-mvp-client-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-processors/0.5/gwtp-processors-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-processors/0.5/gwtp-processors-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-tester/0.5/gwtp-tester-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-tester/0.5/gwtp-tester-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/googlecode/gwtupload/gwtupload/0.6.3-compat/gwtupload-0.6.3-compat.jar" sourcepath="M2_REPO/com/googlecode/gwtupload/gwtupload/0.6.3-compat/gwtupload-0.6.3-compat-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/extjs/gxt/2.2.1/gxt-2.2.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.20070617/h2-1.0.20070617.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/calclab/emite/hablar/r1697/hablar-r1697.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-c3p0/3.3.1.GA/hibernate-c3p0-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-c3p0/3.3.1.GA/hibernate-c3p0-3.3.1.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-tools/3.2.3.GA/hibernate-tools-3.2.3.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/3.1.0.GA/hibernate-validator-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-validator/3.1.0.GA/hibernate-validator-3.1.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.7/htmlunit-2.7.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.7/htmlunit-2.7-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.7/htmlunit-core-js-2.7.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.7/htmlunit-core-js-2.7-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/beust/jcommander/1.12/jcommander-1.12.jar" sourcepath="M2_REPO/com/beust/jcommander/1.12/jcommander-1.12-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2.jar" sourcepath="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jmagick/jmagick/6.2.6-0/jmagick-6.2.6-0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/java/dev/jna/jna/3.2.2/jna-3.2.2.jar" sourcepath="M2_REPO/net/java/dev/jna/jna/3.2.2/jna-3.2.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jruby/jruby-complete/1.2.0/jruby-complete-1.2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jruby/rack/jruby-rack/0.9.4/jruby-rack-0.9.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/json/json/20080701/json-20080701.jar" sourcepath="M2_REPO/org/json/json/20080701/json-20080701-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15.jar" sourcepath="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jsoup/jsoup/1.2.2/jsoup-1.2.2.jar" sourcepath="M2_REPO/org/jsoup/jsoup/1.2.2/jsoup-1.2.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47.jar" sourcepath="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jukito/jukito/1.0/jukito-1.0.jar" sourcepath="M2_REPO/org/jukito/jukito/1.0/jukito-1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/4.8.2/junit-4.8.2.jar" sourcepath="M2_REPO/junit/junit/4.8.2/junit-4.8.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-core/1.7.0/liquibase-core-1.7.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-plugin/1.7.0.0/liquibase-plugin-1.7.0.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16.jar" sourcepath="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar" sourcepath="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0.jar" sourcepath="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/media-src/0.3.1-SNAPSHOT/media-src-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar" sourcepath="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.1-SNAPSHOT/model-src-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16.jar" sourcepath="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.14/nekohtml-1.9.14.jar" sourcepath="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.14/nekohtml-1.9.14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar" sourcepath="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-msg/0.3.1-SNAPSHOT/proto-msg-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/w3c/css/sac/1.3/sac-1.3.jar" sourcepath="M2_REPO/org/w3c/css/sac/1.3/sac-1.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium/2.0a4/selenium-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium/2.0a4/selenium-2.0a4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.0a4/selenium-chrome-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.0a4/selenium-chrome-driver-2.0a4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-common/2.0a4/selenium-common-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-common/2.0a4/selenium-common-2.0a4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.0a4/selenium-firefox-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.0a4/selenium-firefox-driver-2.0a4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.0a4/selenium-htmlunit-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.0a4/selenium-htmlunit-driver-2.0a4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.0a4/selenium-ie-driver-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.0a4/selenium-ie-driver-2.0a4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-remote-client/2.0a4/selenium-remote-client-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-remote-client/2.0a4/selenium-remote-client-2.0a4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-remote-common/2.0a4/selenium-remote-common-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-remote-common/2.0a4/selenium-remote-common-2.0a4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-support/2.0a4/selenium-support-2.0a4.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-support/2.0a4/selenium-support-2.0a4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xalan/serializer/2.7.1/serializer-2.7.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jivesoftware/smack/3.1.0/smack-3.1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jivesoftware/smackx/3.1.0/smackx-3.1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/debugger/smackx-debugger/3.0.4/smackx-debugger-3.0.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/yaml/snakeyaml/1.6/snakeyaml-1.6.jar" sourcepath="M2_REPO/org/yaml/snakeyaml/1.6/snakeyaml-1.6-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/testng/testng/6.0.1/testng-6.0.1.jar" sourcepath="M2_REPO/org/testng/testng/6.0.1/testng-6.0.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5.jar" sourcepath="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.1-SNAPSHOT/util-src-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-0.3/0.3.1-SNAPSHOT/waveinabox-server-0.3-0.3.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1.jar" sourcepath="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar" sourcepath="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1.jar" sourcepath="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1-sources.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="src" path=".apt_generated" including="**/*.java"/> <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
+</classpath>
\ No newline at end of file
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/pom.xml 2011-07-25 22:00:29 UTC (rev 1463)
@@ -4,9 +4,10 @@
<groupId>cc.kune</groupId>
<artifactId>kune</artifactId>
<packaging>jar</packaging>
- <version>0.0.9</version>
+ <version>0.1.0-SNAPSHOT</version>
<name>kune</name>
- <description> kune free/open/libre collaboration platform </description>
+ <description> kune free/open/libre collaboration platform
+ </description>
<url>http://kune.ourproject.org</url>
<properties>
<!-- Available versions: http://repo1.maven.org/maven2/com/google/gwt/gwt-dev/ -->
@@ -67,7 +68,8 @@
</repository>
<repository>
<id>gwt-repo</id>
- <url>http://google-web-toolkit.googlecode.com/svn/2.1.0/gwt/maven/</url>
+ <url>http://google-web-toolkit.googlecode.com/svn/2.1.0/gwt/maven/
+ </url>
<name>Google Web Toolkit Repository</name>
</repository>
<repository>
@@ -91,7 +93,8 @@
<repository>
<id>gwtplatform.snapshot.repo</id>
<name>Gwtplatform snapshot repository</name>
- <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
+ <url>https://oss.sonatype.org/content/repositories/snapshots/
+ </url>
<layout>default</layout>
</repository>
<repository>
@@ -188,7 +191,8 @@
</pluginRepository>
<pluginRepository>
<id>gwt-plugin-repo</id>
- <url>http://google-web-toolkit.googlecode.com/svn/2.1.0/gwt/maven/</url>
+ <url>http://google-web-toolkit.googlecode.com/svn/2.1.0/gwt/maven/
+ </url>
<name>Google Web Toolkit Plugin Repository</name>
</pluginRepository>
<pluginRepository>
@@ -291,6 +295,11 @@
<artifactId>gwt-voices</artifactId>
<version>2.0.0</version>
</dependency>
+ <dependency>
+ <groupId>com.allen_sauer.gwt.dnd.gwt-dnd</groupId>
+ <artifactId>gwt-dnd</artifactId>
+ <version>3.0.1</version>
+ </dependency>
<!-- utilities -->
<dependency>
<groupId>net.sf.dozer</groupId>
@@ -659,16 +668,16 @@
<type>jar</type>
</dependency>
<!-- splash -->
-<dependency>
- <groupId>org.jsoup</groupId>
- <artifactId>jsoup</artifactId>
- <version>1.2.2</version>
-</dependency>
-<dependency>
- <groupId>org.mvel</groupId>
- <artifactId>mvel2</artifactId>
- <version>2.0.16</version>
-</dependency>
+ <dependency>
+ <groupId>org.jsoup</groupId>
+ <artifactId>jsoup</artifactId>
+ <version>1.2.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mvel</groupId>
+ <artifactId>mvel2</artifactId>
+ <version>2.0.16</version>
+ </dependency>
<!-- gwtupload -->
<dependency>
<groupId>com.googlecode.gwtupload</groupId>
@@ -738,7 +747,8 @@
<distributionManagement>
<repository>
<id>kune.ourproject.org</id>
- <url>scpexe://kune.ourproject.org/home/groups/kune/htdocs/mavenrepo/ </url>
+ <url>scpexe://kune.ourproject.org/home/groups/kune/htdocs/mavenrepo/
+ </url>
</repository>
</distributionManagement>
<issueManagement>
@@ -779,7 +789,8 @@
</executions>
<configuration>
<mainClass>cc.kune.wave.server.WaveMain</mainClass>
- <commandlineArgs>-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001</commandlineArgs>
+ <commandlineArgs>-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001
+ </commandlineArgs>
<systemProperties>
<systemProperty>
<key>kune.config</key>
@@ -791,7 +802,8 @@
<value>src/main/resources/wave-server.properties</value>
</systemProperty>
<systemProperty>
- <key>org.eclipse.jetty.util.resource.FileResource.checkAliases</key>
+ <key>org.eclipse.jetty.util.resource.FileResource.checkAliases
+ </key>
<!-- <key>org.mortbay.util.FileResource.checkAliases</key> -->
<value>False</value>
</systemProperty>
@@ -912,13 +924,16 @@
<wtpversion>2.0</wtpversion>
<additionalBuildcommands>
<buildCommand>
- <name>com.google.gwt.eclipse.core.gwtProjectValidator </name>
+ <name>com.google.gwt.eclipse.core.gwtProjectValidator
+ </name>
</buildCommand>
</additionalBuildcommands>
- <workspaceCodeStylesURL>http://kune.ourproject.org/kune.formatter.eclipse.preferences.xml</workspaceCodeStylesURL>
+ <workspaceCodeStylesURL>http://kune.ourproject.org/kune.formatter.eclipse.preferences.xml
+ </workspaceCodeStylesURL>
<additionalProjectnatures>
<!-- <projectnature>org.eclipse.ajdt.ui.ajnature</projectnature> -->
- <projectnature>com.google.gwt.eclipse.core.gwtNature </projectnature>
+ <projectnature>com.google.gwt.eclipse.core.gwtNature
+ </projectnature>
</additionalProjectnatures>
</configuration>
</plugin>
@@ -958,7 +973,8 @@
<!-- <contextPath>/${project.name}</contextPath> -->
<contextPath>/</contextPath>
</webAppConfig>
- <webAppSourceDirectory>${project.build.directory}/${project.build.finalName}</webAppSourceDirectory>
+ <webAppSourceDirectory>${project.build.directory}/${project.build.finalName}
+ </webAppSourceDirectory>
<!-- <reload>manual</reload> <scanIntervalSeconds>0</scanIntervalSeconds> -->
</configuration>
</plugin>
@@ -985,7 +1001,8 @@
<noServer>true</noServer>
<gwtVersion>${gwt.version}</gwtVersion>
<runTarget>/ws/ws.html?log_level=DEBUG</runTarget>
- <hostedWebapp>${project.build.directory}/${project.build.finalName}</hostedWebapp>
+ <hostedWebapp>${project.build.directory}/${project.build.finalName}
+ </hostedWebapp>
<modules>
<module>${project.groupId}.Kune</module>
</modules>
@@ -1035,7 +1052,8 @@
<phase>process-resources</phase>
<configuration>
<changeLogFile>
- src/main/resources/db/liquibase_changelog.xml </changeLogFile>
+ src/main/resources/db/liquibase_changelog.xml
+ </changeLogFile>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost/kune_dev</url>
<username>kune</username>
@@ -1063,7 +1081,8 @@
<!-- <classpathLayoutType>repository</classpathLayoutType> -->
<!-- NOTE: Deprecated in version 2.4. Use 'classpathLayoutType'
instead. -->
- <classpathMavenRepositoryLayout>true</classpathMavenRepositoryLayout>
+ <classpathMavenRepositoryLayout>true
+ </classpathMavenRepositoryLayout>
<!-- <packageName>cc.kune.wave.server</packageName> -->
</manifest>
<manifestEntries>
@@ -1175,7 +1194,8 @@
</includes> </fileset> </filesets> </configuration> </plugin> -->
</plugins>
<!-- <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory> -->
- <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes
+ </outputDirectory>
<!-- <outputDirectory>war/WEB-INF/classes</outputDirectory> -->
<!-- <testOutputDirectory>war/WEB-INF/test-classes</testOutputDirectory> -->
<!-- <resources> -->
Modified: trunk/src/main/java/cc/kune/Kune.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/Kune.gwt.xml 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/Kune.gwt.xml 2011-07-25 22:00:29 UTC (rev 1463)
@@ -14,6 +14,7 @@
<inherits name="cc.kune.pspace.PSpace" />
<inherits name="com.calclab.suco.Suco" />
<inherits name="org.adamtacy.GWTEffects"></inherits>
+ <inherits name='com.allen_sauer.gwt.dnd.gwt-dnd'/>
<source path='client'
excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java" />
<!-- <source path='shared'/> -->
Modified: trunk/src/main/java/cc/kune/chat/client/AvatarDecoratorImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/AvatarDecoratorImpl.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/chat/client/AvatarDecoratorImpl.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -142,9 +142,9 @@
} else if (show == Show.xa) {
finalStatus = i18n.t("Away");
super.setImage(chatDotXA);
- super.setImage(chatDotAway);
} else if (show == Show.away) {
finalStatus = i18n.t("Away");
+ super.setImage(chatDotAway);
} else if (show == Show.chat) {
finalStatus = i18n.t("Available for chat");
super.setImage(chatDotExtendedAway);
Modified: trunk/src/main/java/cc/kune/common/client/ui/BasicThumb.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/BasicThumb.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/common/client/ui/BasicThumb.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -23,6 +23,7 @@
import cc.kune.common.client.tooltip.Tooltip;
import cc.kune.common.client.utils.TextUtils;
+import com.allen_sauer.gwt.dnd.client.HasDragHandle;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.DoubleClickEvent;
@@ -36,11 +37,12 @@
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
/**
* BasicThumb.java
*/
-public class BasicThumb extends Composite {
+public class BasicThumb extends Composite implements HasDragHandle {
private static final int NOSIZE = -1;
private final Image image;
private Tooltip imageTooltip;
@@ -148,6 +150,11 @@
panel.addDomHandler(clickHandler, DoubleClickEvent.getType());
}
+ @Override
+ public Widget getDragHandle() {
+ return image;
+ }
+
public void hideTooltip() {
if (imageTooltip != null) {
imageTooltip.hide();
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -43,6 +43,8 @@
import cc.kune.core.client.auth.UserPassAutocompleteManagerImpl;
import cc.kune.core.client.cookies.CookiesManager;
import cc.kune.core.client.cookies.CookiesManagerImpl;
+import cc.kune.core.client.dnd.KuneDragController;
+import cc.kune.core.client.dnd.NotImplementedDropManager;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.groups.newgroup.NewGroup;
import cc.kune.core.client.groups.newgroup.NewGroupPanel;
@@ -134,6 +136,10 @@
bind(I18nTranslationService.class).to(I18nUITranslationService.class).in(Singleton.class);
bind(GlobalShortcutRegister.class).to(DefaultGlobalShortcutRegister.class).in(Singleton.class);
+ // DnD
+ s(KuneDragController.class);
+ s(NotImplementedDropManager.class);
+
// Presenters
bindPresenter(CorePresenter.class, CorePresenter.CoreView.class, CoreViewImpl.class,
CorePresenter.CoreProxy.class);
Added: trunk/src/main/java/cc/kune/core/client/dnd/DebugDropController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/DebugDropController.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/dnd/DebugDropController.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -0,0 +1,39 @@
+package cc.kune.core.client.dnd;
+
+import cc.kune.common.client.notify.NotifyUser;
+
+import com.allen_sauer.gwt.dnd.client.DragContext;
+import com.allen_sauer.gwt.dnd.client.VetoDragException;
+import com.allen_sauer.gwt.dnd.client.drop.SimpleDropController;
+import com.google.gwt.user.client.ui.Widget;
+
+public class DebugDropController extends SimpleDropController {
+
+ public DebugDropController(final Widget dropTarget) {
+ super(dropTarget);
+ }
+
+ @Override
+ public void onEnter(final DragContext context) {
+ NotifyUser.info("On enter in drop area");
+ super.onEnter(context);
+ }
+
+ @Override
+ public void onLeave(final DragContext context) {
+ NotifyUser.info("On leave drop area");
+ super.onLeave(context);
+ }
+
+ @Override
+ public void onMove(final DragContext context) {
+ // NotifyUser.info("On move over drop area");
+ super.onMove(context);
+ };
+
+ @Override
+ public void onPreviewDrop(final DragContext context) throws VetoDragException {
+ NotifyUser.info("On preview drop");
+ throw new VetoDragException();
+ }
+}
Added: trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -0,0 +1,79 @@
+package cc.kune.core.client.dnd;
+
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.utils.TextUtils;
+import cc.kune.gspace.client.viewers.FolderItemWidget;
+
+import com.allen_sauer.gwt.dnd.client.DragContext;
+import com.allen_sauer.gwt.dnd.client.VetoDragException;
+import com.allen_sauer.gwt.dnd.client.drop.SimpleDropController;
+import com.google.gwt.event.logical.shared.AttachEvent;
+import com.google.gwt.event.logical.shared.AttachEvent.Handler;
+import com.google.gwt.user.client.ui.Widget;
+
+public class FolderViewerDropController extends SimpleDropController {
+
+ public FolderViewerDropController(final Widget dropTarget, final KuneDragController dragController) {
+ super(dropTarget);
+ dropTarget.addStyleName("k-drop-allowed");
+ dropTarget.addAttachHandler(new Handler() {
+ @Override
+ public void onAttachOrDetach(final AttachEvent event) {
+ if (!event.isAttached()) {
+ dragController.unregisterDropController(FolderViewerDropController.this);
+ } else {
+ dragController.registerDropController(FolderViewerDropController.this);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void onDrop(final DragContext context) {
+ for (final Widget widget : context.selectedWidgets) {
+ if (widget instanceof FolderItemWidget) {
+ getDropTarget().removeStyleName("k-drop-allowed-hover");
+ if (getDropTarget() instanceof FolderItemWidget) {
+ // NotifyUser.info("" + ((FolderItemWidget)
+ // getDropTarget()).getToken().toString() + " receive: "
+ // + ((FolderItemWidget) widget).getToken().toString());
+ }
+ NotifyUser.info(TextUtils.IN_DEVELOPMENT);
+ }
+ }
+ super.onDrop(context);
+ }
+
+ @Override
+ public void onEnter(final DragContext context) {
+ super.onEnter(context);
+ for (final Widget widget : context.selectedWidgets) {
+ if (widget instanceof FolderItemWidget) {
+ getDropTarget().addStyleName("k-drop-allowed-hover");
+ }
+ }
+ }
+
+ @Override
+ public void onLeave(final DragContext context) {
+ super.onLeave(context);
+ for (final Widget widget : context.selectedWidgets) {
+ if (widget instanceof FolderItemWidget) {
+ getDropTarget().removeStyleName("k-drop-allowed-hover");
+ }
+ }
+ }
+
+ @Override
+ public void onPreviewDrop(final DragContext context) throws VetoDragException {
+ for (final Widget widget : context.selectedWidgets) {
+ if (widget instanceof FolderItemWidget) {
+ getDropTarget().removeStyleName("k-drop-allowed-hover");
+ } else {
+ throw new VetoDragException();
+ }
+ }
+ super.onPreviewDrop(context);
+ }
+
+}
Added: trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -0,0 +1,46 @@
+package cc.kune.core.client.dnd;
+
+import com.allen_sauer.gwt.dnd.client.PickupDragController;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+import com.google.gwt.event.logical.shared.ResizeEvent;
+import com.google.gwt.event.logical.shared.ResizeHandler;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.RootPanel;
+
+public class KuneDragController extends PickupDragController {
+
+ public KuneDragController() {
+ super(RootPanel.get(), false);
+ setBehaviorDragProxy(true);
+ setBehaviorMultipleSelection(false);
+ setBehaviorDragStartSensitivity(5);
+ Window.addResizeHandler(new ResizeHandler() {
+
+ @Override
+ public void onResize(final ResizeEvent event) {
+ final int width = event.getWidth();
+ final int height = event.getHeight();
+ setRootPanelSize(width, height);
+ }
+
+ });
+ Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+ @Override
+ public void execute() {
+ setRootPanelSize(Window.getClientWidth(), Window.getClientHeight());
+ }
+ });
+ }
+
+ @Override
+ public void dragEnd() {
+ super.dragEnd();
+ clearSelection();
+ }
+
+ private void setRootPanelSize(final int width, final int height) {
+ RootPanel.get().setPixelSize(width, height);
+ }
+
+}
Added: trunk/src/main/java/cc/kune/core/client/dnd/NotAllowedDropController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/NotAllowedDropController.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/dnd/NotAllowedDropController.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -0,0 +1,25 @@
+package cc.kune.core.client.dnd;
+
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.allen_sauer.gwt.dnd.client.DragContext;
+import com.allen_sauer.gwt.dnd.client.VetoDragException;
+import com.allen_sauer.gwt.dnd.client.drop.SimpleDropController;
+import com.google.gwt.user.client.ui.Widget;
+
+public class NotAllowedDropController extends SimpleDropController {
+
+ private final I18nTranslationService i18n;
+
+ public NotAllowedDropController(final Widget dropTarget, final I18nTranslationService i18n) {
+ super(dropTarget);
+ this.i18n = i18n;
+ }
+
+ @Override
+ public void onPreviewDrop(final DragContext context) throws VetoDragException {
+ // This cancel the drop
+ // NotifyUser.info(i18n.t("You cannot drop this here));
+ throw new VetoDragException();
+ }
+}
Added: trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropController.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropController.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropController.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -0,0 +1,32 @@
+package cc.kune.core.client.dnd;
+
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.allen_sauer.gwt.dnd.client.DragContext;
+import com.allen_sauer.gwt.dnd.client.VetoDragException;
+import com.allen_sauer.gwt.dnd.client.drop.SimpleDropController;
+import com.google.gwt.user.client.ui.Widget;
+
+public class NotImplementedDropController extends SimpleDropController {
+
+ private final I18nTranslationService i18n;
+
+ public NotImplementedDropController(final Widget dropTarget, final I18nTranslationService i18n) {
+ super(dropTarget);
+ this.i18n = i18n;
+ }
+
+ @Override
+ public void onLeave(final DragContext context) {
+ super.onLeave(context);
+ }
+
+ @Override
+ public void onPreviewDrop(final DragContext context) throws VetoDragException {
+ // This cancel the drop
+ NotifyUser.info(i18n.t(TextUtils.IN_DEVELOPMENT));
+ throw new VetoDragException();
+ }
+}
Added: trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -0,0 +1,41 @@
+package cc.kune.core.client.dnd;
+
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.GSpaceArmor;
+
+import com.google.gwt.event.logical.shared.AttachEvent;
+import com.google.gwt.event.logical.shared.AttachEvent.Handler;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.inject.Inject;
+
+public class NotImplementedDropManager {
+
+ private final KuneDragController dragController;
+ private final I18nTranslationService i18n;
+
+ @Inject
+ public NotImplementedDropManager(final I18nTranslationService i18n, final GSpaceArmor gSpaceArmor,
+ final KuneDragController dragController) {
+ this.i18n = i18n;
+ this.dragController = dragController;
+ registerImpl((FlowPanel) gSpaceArmor.getEntityHeader());
+ }
+
+ public void register(final Widget widget) {
+ registerImpl(widget);
+ }
+
+ private void registerImpl(final Widget widget) {
+ final NotImplementedDropController dropController = new NotImplementedDropController(widget, i18n);
+ dragController.registerDropController(dropController);
+ widget.addAttachHandler(new Handler() {
+ @Override
+ public void onAttachOrDetach(final AttachEvent event) {
+ if (!event.isAttached()) {
+ dragController.unregisterDropController(dropController);
+ }
+ }
+ });
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -30,6 +30,8 @@
import cc.kune.common.client.tooltip.Tooltip;
import cc.kune.common.client.ui.BasicThumb;
import cc.kune.core.client.avatar.SmallAvatarDecorator;
+import cc.kune.core.client.dnd.KuneDragController;
+import cc.kune.core.client.dnd.NotImplementedDropManager;
import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.GSpaceArmor;
@@ -66,6 +68,7 @@
FlowPanel categoriesFlow;
@UiField
DeckPanel deck;
+ protected final KuneDragController dragController;
@UiField
Label firstCategoryCount;
@UiField
@@ -105,11 +108,16 @@
protected final Widget widget;
public AbstractSNPanel(final I18nTranslationService i18n, final GuiProvider guiProvider,
- final GSpaceArmor armor, final Provider<SmallAvatarDecorator> avatarDecorator) {
+ final GSpaceArmor armor, final Provider<SmallAvatarDecorator> avatarDecorator,
+ final KuneDragController dragController, final NotImplementedDropManager notDrop) {
this.armor = armor;
this.avatarDecoratorProv = avatarDecorator;
+ this.dragController = dragController;
widget = uiBinder.createAndBindUi(this);
actions = new ActionSimplePanel(guiProvider);
+ notDrop.register(firstCategoryFlow);
+ notDrop.register(sndCategoryFlow);
+ notDrop.register(trdCategoryFlow);
}
@Override
@@ -150,6 +158,7 @@
thumb.addClickHandler(clickHand);
thumb.setTooltip(tooltipTitle, tooltip);
thumb.setLabelVisible(false);
+ dragController.makeDraggable(thumb);
return thumb;
}
Modified: trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -25,6 +25,8 @@
import cc.kune.common.client.tooltip.Tooltip;
import cc.kune.common.client.ui.BasicThumb;
import cc.kune.core.client.avatar.SmallAvatarDecorator;
+import cc.kune.core.client.dnd.KuneDragController;
+import cc.kune.core.client.dnd.NotImplementedDropManager;
import cc.kune.core.client.sn.GroupSNPresenter.GroupSNView;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -38,8 +40,9 @@
@Inject
public GroupSNPanel(final I18nTranslationService i18n, final GuiProvider guiProvider,
- final GSpaceArmor armor, final Provider<SmallAvatarDecorator> avatarDecorator) {
- super(i18n, guiProvider, armor, avatarDecorator);
+ final GSpaceArmor armor, final Provider<SmallAvatarDecorator> avatarDecorator,
+ final KuneDragController dragController, final NotImplementedDropManager notDrop) {
+ super(i18n, guiProvider, armor, avatarDecorator, dragController, notDrop);
setVisibleImpl(false);
mainTitle.setText(i18n.t("Group members"));
Tooltip.to(mainTitle, i18n.t("People and groups collaborating in this group"));
Modified: trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -24,6 +24,8 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.ui.BasicThumb;
import cc.kune.core.client.avatar.SmallAvatarDecorator;
+import cc.kune.core.client.dnd.KuneDragController;
+import cc.kune.core.client.dnd.NotImplementedDropManager;
import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.sn.UserSNPresenter.UserSNView;
import cc.kune.core.shared.dto.GroupDTO;
@@ -42,8 +44,9 @@
@Inject
public UserSNPanel(final I18nTranslationService i18n, final GuiProvider guiProvider,
- final GSpaceArmor armor, final Provider<SmallAvatarDecorator> avatarDecorator) {
- super(i18n, guiProvider, armor, avatarDecorator);
+ final GSpaceArmor armor, final Provider<SmallAvatarDecorator> avatarDecorator,
+ final KuneDragController dragController, final NotImplementedDropManager notDrop) {
+ super(i18n, guiProvider, armor, avatarDecorator, dragController, notDrop);
this.i18n = i18n;
setVisibleImpl(false);
Modified: trunk/src/main/java/cc/kune/core/public/ws.css
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.css 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-07-25 22:00:29 UTC (rev 1463)
@@ -1,4 +1,4 @@
-CHARSET "UTF-8 "; body {
+CHARSET "UTF-8 "; body {
background-color: transparent;
color: black;
font-family: 'Ubuntu', Arial;
@@ -1206,7 +1206,8 @@
-webkit-border-bottom-left-radius: 5px;
-moz-border-radius-bottomleft: 5px;
border-bottom-left-radius: 5px;
- kfilter: alpha(opacity = 90);
+ kfilter: alpha(opacity = 90
+ );
-moz-opacity: 0.90;
-khtml-opacity: 0.90;
opacity: 0.90;
@@ -1416,4 +1417,15 @@
.bullet-type-2 {
list-style-type: square;
+}
+
+.k-drop-allowed {
+ border: solid 2px transparent;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.k-drop-allowed-hover {
+ border: dashed 2px #3a9fd6;
}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -28,33 +28,33 @@
@Deprecated
public class GSpaceArmorEntryPoint implements EntryPoint {
- @Override
- public void onModuleLoad() {
- final GSpaceArmorResources resources = GWT.create(GSpaceArmorResources.class);
- resources.style().ensureInjected();
+ @Override
+ public void onModuleLoad() {
+ final GSpaceArmorResources resources = GWT.create(GSpaceArmorResources.class);
+ resources.style().ensureInjected();
- final RootLayoutPanel rootPanel = RootLayoutPanel.get();
- final GSpaceArmorImpl armor = new GSpaceArmorImpl(null);
- final InlineLabel icons = new InlineLabel("Icons");
- final InlineLabel login = new InlineLabel("Login");
- final InlineLabel logo = new InlineLabel("Logo");
- icons.setStyleName(resources.style().floatLeft());
- login.setStyleName(resources.style().floatRight());
- logo.setStyleName(resources.style().floatRight());
- armor.getSitebar().add(icons);
- armor.getSitebar().add(logo);
- armor.getSitebar().add(login);
- armor.getEntityToolsNorth().add(new InlineLabel("Group members"));
- armor.getEntityToolsCenter().add(new InlineLabel("Documents"));
- armor.getEntityToolsSouth().add(new InlineLabel("Group tags"));
- armor.getEntityHeader().add(new InlineLabel("Name of the Initiative"));
- armor.getDocHeader().add(new InlineLabel("Some doc title"));
- final InlineLabel editors = new InlineLabel("Editors:");
- editors.addStyleName(resources.style().docSubheaderLeft());
- armor.getDocSubheader().add(editors);
- armor.getDocFooter().add(new InlineLabel("Tags:"));
- armor.getEntityFooter().add(new InlineLabel("Rate it:"));
- rootPanel.add(armor);
- }
+ final RootLayoutPanel rootPanel = RootLayoutPanel.get();
+ final GSpaceArmorImpl armor = new GSpaceArmorImpl(null);
+ final InlineLabel icons = new InlineLabel("Icons");
+ final InlineLabel login = new InlineLabel("Login");
+ final InlineLabel logo = new InlineLabel("Logo");
+ icons.setStyleName(resources.style().floatLeft());
+ login.setStyleName(resources.style().floatRight());
+ logo.setStyleName(resources.style().floatRight());
+ armor.getSitebar().add(icons);
+ armor.getSitebar().add(logo);
+ armor.getSitebar().add(login);
+ armor.getEntityToolsNorth().add(new InlineLabel("Group members"));
+ armor.getEntityToolsCenter().add(new InlineLabel("Documents"));
+ armor.getEntityToolsSouth().add(new InlineLabel("Group tags"));
+ armor.getEntityHeader().add(new InlineLabel("Name of the Initiative"));
+ armor.getDocHeader().add(new InlineLabel("Some doc title"));
+ final InlineLabel editors = new InlineLabel("Editors:");
+ editors.addStyleName(resources.style().docSubheaderLeft());
+ armor.getDocSubheader().add(editors);
+ armor.getDocFooter().add(new InlineLabel("Tags:"));
+ armor.getEntityFooter().add(new InlineLabel("Rate it:"));
+ rootPanel.add(armor);
+ }
}
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-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -70,6 +70,10 @@
self.removeStyleDependentName("nofocus");
}
+ public Widget getFlow() {
+ return self;
+ }
+
@Override
public HasClickHandlers getFocus() {
return self;
Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -19,6 +19,8 @@
*/
package cc.kune.gspace.client.tool.selector;
+import cc.kune.core.client.dnd.FolderViewerDropController;
+import cc.kune.core.client.dnd.KuneDragController;
import cc.kune.gspace.client.GSpaceArmor;
import cc.kune.gspace.client.tool.selector.ToolSelectorItemPresenter.ToolSelectorItemView;
import cc.kune.gspace.client.tool.selector.ToolSelectorPresenter.ToolSelectorView;
@@ -33,27 +35,32 @@
public class ToolSelectorPanel extends ViewImpl implements ToolSelectorView {
- interface ToolSelectorPanelUiBinder extends UiBinder<Widget, ToolSelectorPanel> {
- }
+ interface ToolSelectorPanelUiBinder extends UiBinder<Widget, ToolSelectorPanel> {
+ }
- private static ToolSelectorPanelUiBinder uiBinder = GWT.create(ToolSelectorPanelUiBinder.class);
+ private static ToolSelectorPanelUiBinder uiBinder = GWT.create(ToolSelectorPanelUiBinder.class);
- @UiField
- FlowPanel flow;
+ private final KuneDragController dragController;
- @Inject
- public ToolSelectorPanel(final GSpaceArmor wsArmor) {
- wsArmor.getEntityToolsCenter().add(uiBinder.createAndBindUi(this));
- }
+ @UiField
+ FlowPanel flow;
- @Override
- public void addItem(final ToolSelectorItemView item) {
- flow.add(item.asWidget());
- }
+ @Inject
+ public ToolSelectorPanel(final GSpaceArmor wsArmor, final KuneDragController dragController) {
+ this.dragController = dragController;
+ wsArmor.getEntityToolsCenter().add(uiBinder.createAndBindUi(this));
+ }
- @Override
- public Widget asWidget() {
- return flow;
- }
+ @Override
+ public void addItem(final ToolSelectorItemView item) {
+ final Widget widget = item.asWidget();
+ flow.add(widget);
+ new FolderViewerDropController(((ToolSelectorItemPanel) widget).getFlow(), dragController);
+ }
+ @Override
+ public Widget asWidget() {
+ return flow;
+ }
+
}
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -23,6 +23,7 @@
import cc.kune.common.client.ui.HasEditHandler;
import cc.kune.common.client.ui.UiUtils;
import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.client.dnd.KuneDragController;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.shared.dto.StateContainerDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -37,8 +38,9 @@
import com.gwtplatform.mvp.client.ViewImpl;
public abstract class AbstractFolderViewerPanel extends ViewImpl implements FolderViewerView {
- private final ContentCapabilitiesRegistry capabilitiesRegistry;
+ protected final ContentCapabilitiesRegistry capabilitiesRegistry;
private final ContentTitleWidget contentTitle;
+ protected final KuneDragController dragController;
private final InlineLabel emptyLabel;
private final FlowPanel emptyPanel;
protected final GSpaceArmor gsArmor;
@@ -46,10 +48,11 @@
protected Widget widget;
public AbstractFolderViewerPanel(final GSpaceArmor gsArmor, final I18nTranslationService i18n,
- final ContentCapabilitiesRegistry capabilitiesRegistry) {
+ final ContentCapabilitiesRegistry capabilitiesRegistry, final KuneDragController dragController) {
this.gsArmor = gsArmor;
this.i18n = i18n;
this.capabilitiesRegistry = capabilitiesRegistry;
+ this.dragController = dragController;
emptyPanel = new FlowPanel();
emptyLabel = new InlineLabel(i18n.t("This is empty."));
emptyLabel.setStyleName("k-empty-msg");
@@ -70,11 +73,6 @@
}
@Override
- public void highlightTitle() {
- contentTitle.highlightTitle();
- }
-
- @Override
public void clear() {
gsArmor.getSubheaderToolbar().clear();
UiUtils.clear(gsArmor.getDocContainer());
@@ -97,6 +95,11 @@
}
@Override
+ public void highlightTitle() {
+ contentTitle.highlightTitle();
+ }
+
+ @Override
public void setActions(final GuiActionDescCollection actions) {
gsArmor.getSubheaderToolbar().clear();
gsArmor.getSubheaderToolbar().addAll(actions);
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -20,6 +20,7 @@
package cc.kune.gspace.client.viewers;
import cc.kune.common.client.actions.ui.ActionSimplePanel;
+import cc.kune.core.shared.domain.utils.StateToken;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.BlurEvent;
@@ -63,7 +64,10 @@
@UiField
InlineLabel title;
- public FolderItemWidget(final ImageResource iconResource, final String title) {
+ private final StateToken token;
+
+ public FolderItemWidget(final ImageResource iconResource, final String title, final StateToken token) {
+ this.token = token;
initWidget(uiBinder.createAndBindUi(this));
this.title.setText(title);
icon.setResource(iconResource);
@@ -74,6 +78,14 @@
focusPanel.removeStyleDependentName("focused");
}
+ FlowPanel getFlow() {
+ return flow;
+ }
+
+ Widget getIcon() {
+ return icon;
+ }
+
HasClickHandlers getRowClick() {
return focusPanel;
}
@@ -95,6 +107,14 @@
return title.getText();
}
+ Widget getTitleWidget() {
+ return title;
+ }
+
+ public StateToken getToken() {
+ return token;
+ }
+
@UiHandler("focusPanel")
public void onBlur(final BlurEvent event) {
clearFocusStyles();
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -24,6 +24,7 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
import cc.kune.common.client.ui.BasicThumb;
+import cc.kune.core.client.dnd.KuneDragController;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.shared.dto.StateContainerDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -51,8 +52,8 @@
@Inject
public FolderViewerAsFlowPanel(final GSpaceArmor gsArmor, final I18nTranslationService i18n,
- final ContentCapabilitiesRegistry capabilitiesRegistry) {
- super(gsArmor, i18n, capabilitiesRegistry);
+ final ContentCapabilitiesRegistry capabilitiesRegistry, final KuneDragController dragController) {
+ super(gsArmor, i18n, capabilitiesRegistry, dragController);
widget = uiBinder.createAndBindUi(this);
}
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-07-15 09:48:22 UTC (rev 1462)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-07-25 22:00:29 UTC (rev 1463)
@@ -26,6 +26,8 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+import cc.kune.core.client.dnd.FolderViewerDropController;
+import cc.kune.core.client.dnd.KuneDragController;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.shared.dto.StateContainerDTO;
@@ -65,8 +67,8 @@
@Inject
public FolderViewerAsTablePanel(final GSpaceArmor gsArmor, final I18nTranslationService i18n,
final GuiProvider guiProvider, final CoreResources res,
- final ContentCapabilitiesRegistry capabilitiesRegistry) {
- super(gsArmor, i18n, capabilitiesRegistry);
+ final ContentCapabilitiesRegistry capabilitiesRegistry, final KuneDragController dragController) {
+ super(gsArmor, i18n, capabilitiesRegistry, dragController);
this.guiProvider = guiProvider;
this.res = res;
widget = uiBinder.createAndBindUi(this);
@@ -78,7 +80,7 @@
final DoubleClickHandler doubleClickHandler) {
final int rowCount = flex.getRowCount();
final FolderItemWidget itemWidget = new FolderItemWidget((ImageResource) item.getIcon(),
- item.getText());
+ item.getText(), item.getStateToken());
final ActionSimplePanel toolbar = new ActionSimplePanel(guiProvider);
final long modifiedOn = item.getModififiedOn();
if (modifiedOn != FolderViewerView.NO_DATE) {
@@ -138,6 +140,12 @@
}
});
flex.setWidget(rowCount + 1, 0, itemWidget);
+ if (item.isDraggable()) {
+ dragController.makeDraggable(itemWidget, itemWidget.getTitleWidget());
+ }
+ if (item.isDroppable()) {
+ new FolderViewerDropController(itemWidget, dragController);
+ }
}
@Override
1
0
Author: vjrj_
Date: 2011-07-15 11:48:22 +0200 (Fri, 15 Jul 2011)
New Revision: 1462
Modified:
trunk/src/main/java/cc/kune/core/public/about.html
Log:
jp in CREDITS by samer
Modified: trunk/src/main/java/cc/kune/core/public/about.html
===================================================================
--- trunk/src/main/java/cc/kune/core/public/about.html 2011-07-15 09:47:05 UTC (rev 1461)
+++ trunk/src/main/java/cc/kune/core/public/about.html 2011-07-15 09:48:22 UTC (rev 1462)
@@ -24,7 +24,7 @@
</img>
</a>
</span>
-<p>Version 0.0.9 (r1446+c1)</p>
+<p>Version 0.0.9 (r1446+c0)</p>
<h1><a name="section_1">CREDITS</a></h1>
<h2><a name="section_1_1">Authors</a></h2>
@@ -45,8 +45,7 @@
support and infrastructure
</li><li>Javier de la Cueva and Leovigildo García-Bobadilla for the legal support
</li><li>Jonathan Araña Cruz, Roxu and all the <a href="http://xsto.info">http://xsto.info</a> staff for their
- </li><li>JP Zafra for help in the diffusion and the gadgets
-help with the infrastructure
+ </li><li>Juan Pablo Zafra Delgado for his research and support for the integration of additional modules
</li><li>Daniel Jiménez for the initial help and coordination
</li><li>Johnattan Rupire, William Austen Bradbury and Rana Hassan for their web contributions and
translations
1
0