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
September 2011
- 2 participants
- 57 discussions
07 Sep '11
#124: New group creation sometime don't go to group's home
--------------------------+------------------
Reporter: vjrj | Owner: vjrj
Type: defect | Status: new
Priority: critical | Milestone:
Component: Group space | Version:
Resolution: | Keywords:
Blocked By: | Blocking:
--------------------------+------------------
--
Ticket URL: <http://kune.ourproject.org/issues/ticket/124>
kune issues <http://kune.ourproject.org/issues/>
1
1
Re: [kune-commits] [kune issues] #39: Dialogs height must be some percent of Client height to prevent overflows
by kune issues 07 Sep '11
by kune issues 07 Sep '11
07 Sep '11
#39: Dialogs height must be some percent of Client height to prevent overflows
---------------------+--------------------
Reporter: vjrj | Owner: vjrj
Type: defect | Status: closed
Priority: major | Milestone:
Component: Common | Version:
Resolution: fixed | Keywords:
Blocked By: | Blocking:
---------------------+--------------------
Changes (by vjrj):
* status: new => closed
* resolution: => fixed
--
Ticket URL: <http://kune.ourproject.org/issues/ticket/39#comment:1>
kune issues <http://kune.ourproject.org/issues/>
1
0
Author: vjrj_
Date: 2011-09-07 10:45:51 +0200 (Wed, 07 Sep 2011)
New Revision: 1511
Modified:
trunk/INSTALL
Log:
INSTALL fix by Roberto Arag?\195?\179n robarago aT gmail DoT com, thanks indeed
Modified: trunk/INSTALL
===================================================================
--- trunk/INSTALL 2011-09-05 22:45:28 UTC (rev 1510)
+++ trunk/INSTALL 2011-09-07 08:45:51 UTC (rev 1511)
@@ -130,7 +130,7 @@
===Connecting to the server===
-Open your browser and connect to http://yourIP:8080/kune
+Open your browser and connect to http://localhost:8888/ws/
==Production environment instructions==
1
0
#108: Send Feedback button
--------------------------+------------------
Reporter: vjrj | Owner: vjrj
Type: enhancement | Status: new
Priority: major | Milestone:
Component: Common | Version:
Resolution: | Keywords:
Blocked By: | Blocking:
--------------------------+------------------
The button, creates a Wave with the admins, and there you can write your
problems/ideas/issues/feedback. Should be something general for every kune
site.
--
Ticket URL: <http://kune.ourproject.org/issues/ticket/108>
kune issues <http://kune.ourproject.org/issues/>
1
1
Author: vjrj_
Date: 2011-09-06 00:45:28 +0200 (Tue, 06 Sep 2011)
New Revision: 1510
Added:
trunk/img/screenshots/i18n-new.png
Modified:
trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java
trunk/src/main/java/cc/kune/core/server/InitData.java
trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java
trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java
trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java
trunk/src/main/java/cc/kune/core/server/tool/ServerToolTarget.java
trunk/src/main/java/cc/kune/core/server/tool/ToolSimple.java
trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPanel.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslateRecomendPanel.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslationProvider.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java
trunk/src/main/java/cc/kune/gspace/client/i18n/ShowMorePagerPanel.java
trunk/src/main/resources/kune.properties
trunk/src/test/java/cc/kune/core/server/integration/DatabaseInitializerTest.java
trunk/src/test/java/cc/kune/core/server/integration/site/InitDataTest.java
Log:
NEW - # 79: I18n refactorization
http://kune.ourproject.org/issues/ticket/79
And added the possibility to enable/disable by default or site wide tools in kune.properties.
Added: trunk/img/screenshots/i18n-new.png
===================================================================
(Binary files differ)
Property changes on: trunk/img/screenshots/i18n-new.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -42,7 +42,7 @@
import com.google.gwt.user.client.ui.Widget;
public abstract class AbstractTabbedDialogPanel implements AbstractTabbedDialogView {
- private final boolean authohide;
+ private final boolean autohide;
private BasicTopDialog dialog;
private final String dialogId;
private final String errorLabelId;
@@ -62,7 +62,7 @@
private int width;
public AbstractTabbedDialogPanel(final String dialogId, final String title, final boolean modal,
- final boolean authoHide, final NotifyLevelImages images, final String errorLabelId,
+ final boolean autoHide, final NotifyLevelImages images, final String errorLabelId,
final String firstBtnTitle, final String firstBtnId, final String sndBtnTitle,
final String sndBtnId, final ProvidersCollection provCollection) {
this.dialogId = dialogId;
@@ -75,7 +75,7 @@
this.sndBtnTitle = sndBtnTitle;
this.sndBtnId = sndBtnId;
this.provCollection = provCollection;
- this.authohide = authoHide;
+ this.autohide = autoHide;
}
public AbstractTabbedDialogPanel(final String dialogId, final String title, final boolean modal,
@@ -124,7 +124,7 @@
}
private void createDialog() {
- dialog = new BasicTopDialog.Builder(dialogId, authohide, modal).autoscroll(true).width(
+ dialog = new BasicTopDialog.Builder(dialogId, autohide, modal).autoscroll(true).width(
String.valueOf(width + 20)).height(String.valueOf(height + 20)).icon(iconCls).firstButtonId(
firstBtnId).firstButtonTitle(firstBtnTitle).sndButtonId(dialogId).sndButtonTitle(sndBtnTitle).sndButtonId(
sndBtnId).title(title).build();
Modified: trunk/src/main/java/cc/kune/core/server/InitData.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/InitData.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/core/server/InitData.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -19,7 +19,6 @@
*/
package cc.kune.core.server;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -45,7 +44,7 @@
private List<ExtMediaDescrip> extMediaDescrips;
private String flvEmbedObject;
private String galleryPermittedExtensions;
- private ArrayList<ToolSimple> groupTools;
+ private List<ToolSimple> groupTools;
private HashMap<String, GSpaceTheme> gSpaceThemes;
private int imgCropsize;
private int imgIconsize;
@@ -62,7 +61,7 @@
private String siteUrl;
private String[] timezones;
private UserInfo userInfo;
- private ArrayList<ToolSimple> userTools;
+ private List<ToolSimple> userTools;
public String getAviEmbedObject() {
return aviEmbedObject;
@@ -108,7 +107,7 @@
return galleryPermittedExtensions;
}
- public ArrayList<ToolSimple> getGroupTools() {
+ public List<ToolSimple> getGroupTools() {
return groupTools;
}
@@ -177,7 +176,7 @@
return userInfo;
}
- public ArrayList<ToolSimple> getUserTools() {
+ public List<ToolSimple> getUserTools() {
return userTools;
}
@@ -225,7 +224,7 @@
this.galleryPermittedExtensions = galleryPermittedExtensions;
}
- public void setGroupTools(final ArrayList<ToolSimple> groupTools) {
+ public void setGroupTools(final List<ToolSimple> groupTools) {
this.groupTools = groupTools;
}
@@ -294,7 +293,7 @@
this.userInfo = currentUserInfo;
}
- public void setUserTools(final ArrayList<ToolSimple> userTools) {
+ public void setUserTools(final List<ToolSimple> userTools) {
this.userTools = userTools;
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -19,7 +19,6 @@
*/
package cc.kune.core.server.manager.impl;
-import java.util.Collection;
import java.util.List;
import java.util.Set;
@@ -171,7 +170,7 @@
group.setWorkspaceTheme(defaultSiteWorkspaceTheme);
initSocialNetwork(group, user.getUserGroup(), publicVisibility, snVisibility);
final String title = i18n.t("About [%s]", group.getLongName());
- initGroup(user, group, serverToolRegistry.getToolsForGroupsKeys(), title, publicDescrip);
+ initGroup(user, group, serverToolRegistry.getToolsRegisEnabledForGroups(), title, publicDescrip);
return group;
} else {
throw new UserMustBeLoggedException();
@@ -209,8 +208,9 @@
final String title = i18n.t("[%s] Bio", user.getName());
final String body = i18n.t("This user has not written its biography yet");
try {
- initGroup(user, userGroup, wantPersonalHomepage ? serverToolRegistry.getToolsForUserKeys()
- : ServerToolRegistry.emptyToolList, title, body);
+ initGroup(user, userGroup,
+ wantPersonalHomepage ? serverToolRegistry.getToolsRegisEnabledForUsers()
+ : ServerToolRegistry.emptyToolList, title, body);
super.persist(user, User.class);
} catch (final PersistenceException e) {
if (e.getCause() instanceof ConstraintViolationException) {
@@ -252,7 +252,7 @@
return findByShortName(shortName);
}
- private void initGroup(final User user, final Group group, final Collection<String> toolsToEnable,
+ private void initGroup(final User user, final Group group, final List<String> toolsToEnable,
final Object... vars) throws GroupShortNameInUseException {
try {
persist(group);
Modified: trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/core/server/properties/KuneProperties.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -42,10 +42,14 @@
String SITE_ADMIN_SHORTNAME = "kune.admin.shortName";
String SITE_DEF_LICENSE = "kune.default.license";
String SITE_DOMAIN = "kune.site.domain";
+ String SITE_GROUP_AVAILABLE_TOOLS = "kune.tools.groupSiteAvailableTools";
+ String SITE_GROUP_REGIST_ENABLED_TOOLS = "kune.tools.groupRegisEnabledTools";
String SITE_LOGO_URL = "kune.sitelogourl";
String SITE_NAME = "kune.default.site.name";
String SITE_SHORTNAME = "kune.default.site.shortName";
String SITE_URL = "kune.siteurl";
+ String SITE_USER_AVAILABLE_TOOLS = "kune.tools.userSiteAvailableTools";
+ String SITE_USER_REGIST_ENABLED_TOOLS = "kune.tools.userRegisEnabledTools";
String UPLOAD_DELAY_FOR_TEST = "kune.upload.delayfortest";
String UPLOAD_GALLERY_PERMITTED_EXTS = "kune.upload.gallerypermittedextensions";
String UPLOAD_LOCATION = "kune.upload.location";
Modified: trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -141,8 +141,8 @@
data.setSiteLogoUrl(kuneProperties.get(KuneProperties.SITE_LOGO_URL));
data.setGalleryPermittedExtensions(kuneProperties.get(KuneProperties.UPLOAD_GALLERY_PERMITTED_EXTS));
data.setMaxFileSizeInMb(kuneProperties.get(KuneProperties.UPLOAD_MAX_FILE_SIZE));
- data.setUserTools(serverToolRegistry.getToolsForUsers());
- data.setGroupTools(serverToolRegistry.getToolsForGroups());
+ data.setUserTools(serverToolRegistry.getToolsAvailableForUsers());
+ data.setGroupTools(serverToolRegistry.getToolsAvailableForGroups());
data.setImgResizewidth(kuneProperties.getInteger(KuneProperties.IMAGES_RESIZEWIDTH));
data.setImgThumbsize(kuneProperties.getInteger(KuneProperties.IMAGES_THUMBSIZE));
data.setImgCropsize(kuneProperties.getInteger(KuneProperties.IMAGES_CROPSIZE));
Modified: trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -22,67 +22,102 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import cc.kune.core.server.properties.KuneProperties;
+
+import com.google.inject.Inject;
import com.google.inject.Singleton;
@Singleton
public class ServerToolRegistry {
- static Log log = LogFactory.getLog(ServerToolRegistry.class);
+ public static List<String> emptyToolList = new ArrayList<String>();
- public static Collection<String> emptyToolList = new ArrayList<String>();
+ static Log log = LogFactory.getLog(ServerToolRegistry.class);
- private final HashMap<String, ServerTool> tools;
- private final HashMap<String, ToolSimple> toolsForUsersMap;
- private final HashMap<String, ToolSimple> toolsForGroupsMap;
+ private final List<String> groupsAvailableToolsInProp;
+ private final List<String> groupsRegisEnabledTools;
+ private final List<String> groupsRegisEnabledToolsInProp;
+ private final HashMap<String, ServerTool> tools;
+ private final List<ToolSimple> toolsAvailableForGroups;
+ private final List<ToolSimple> toolsAvailableForUsers;
+ private final List<String> usersAvailableToolsInProp;
+ private final List<String> usersRegisEnabledTools;
+ private final List<String> usersRegisEnabledToolsInProp;
- public ServerToolRegistry() {
- tools = new HashMap<String, ServerTool>();
- toolsForUsersMap = new HashMap<String, ToolSimple>();
- toolsForGroupsMap = new HashMap<String, ToolSimple>();
- }
+ @Inject
+ public ServerToolRegistry(final KuneProperties kuneProperties) {
+ tools = new HashMap<String, ServerTool>();
+ toolsAvailableForUsers = new ArrayList<ToolSimple>();
+ toolsAvailableForGroups = new ArrayList<ToolSimple>();
+ usersRegisEnabledTools = new ArrayList<String>();
+ groupsRegisEnabledTools = new ArrayList<String>();
+ usersAvailableToolsInProp = kuneProperties.getList(KuneProperties.SITE_USER_AVAILABLE_TOOLS);
+ groupsAvailableToolsInProp = kuneProperties.getList(KuneProperties.SITE_GROUP_AVAILABLE_TOOLS);
+ usersRegisEnabledToolsInProp = kuneProperties.getList(KuneProperties.SITE_USER_REGIST_ENABLED_TOOLS);
+ groupsRegisEnabledToolsInProp = kuneProperties.getList(KuneProperties.SITE_GROUP_REGIST_ENABLED_TOOLS);
+ }
- public Collection<ServerTool> all() {
- return tools.values();
- }
+ public Collection<ServerTool> all() {
+ return tools.values();
+ }
- public ServerTool get(final String toolName) {
- return tools.get(toolName);
- }
+ public ServerTool get(final String toolName) {
+ return tools.get(toolName);
+ }
- public ArrayList<ToolSimple> getToolsForGroups() {
- return new ArrayList<ToolSimple>(toolsForGroupsMap.values());
- }
+ public List<ToolSimple> getToolsAvailableForGroups() {
+ return toolsAvailableForGroups;
+ }
- public Collection<String> getToolsForGroupsKeys() {
- return toolsForGroupsMap.keySet();
- }
+ public List<ToolSimple> getToolsAvailableForUsers() {
+ return toolsAvailableForUsers;
+ }
- public Collection<String> getToolsForUserKeys() {
- return toolsForUsersMap.keySet();
- }
+ public List<String> getToolsRegisEnabledForGroups() {
+ return groupsRegisEnabledTools;
+ }
- public ArrayList<ToolSimple> getToolsForUsers() {
- return new ArrayList<ToolSimple>(toolsForUsersMap.values());
+ public List<String> getToolsRegisEnabledForUsers() {
+ return usersRegisEnabledTools;
+ }
+
+ public void register(final ServerTool tool) {
+ final String name = tool.getName();
+ final String rootName = tool.getRootName();
+ final boolean userAvailable = usersAvailableToolsInProp.contains(name);
+ final boolean groupAvailable = groupsAvailableToolsInProp.contains(name);
+ if (userAvailable && usersRegisEnabledToolsInProp.contains(name)) {
+ usersRegisEnabledTools.add(name);
}
-
- public void register(final ServerTool tool) {
- String name = tool.getName();
- String rootName = tool.getRootName();
- tools.put(name, tool);
- switch (tool.getTarget()) {
- case forGroups:
- toolsForGroupsMap.put(name, new ToolSimple(name, rootName));
- break;
- case forUsers:
- toolsForUsersMap.put(name, new ToolSimple(name, rootName));
- break;
- case forBoth:
- toolsForGroupsMap.put(name, new ToolSimple(name, rootName));
- toolsForUsersMap.put(name, new ToolSimple(name, rootName));
- break;
+ if (groupAvailable && groupsRegisEnabledToolsInProp.contains(name)) {
+ groupsRegisEnabledTools.add(name);
+ }
+ if (userAvailable || groupAvailable) {
+ tools.put(name, tool);
+ switch (tool.getTarget()) {
+ case forGroups:
+ if (groupAvailable) {
+ toolsAvailableForGroups.add(new ToolSimple(name, rootName));
}
+ break;
+ case forUsers:
+ if (userAvailable) {
+ toolsAvailableForUsers.add(new ToolSimple(name, rootName));
+ }
+ break;
+ case forBoth:
+ if (groupAvailable) {
+ toolsAvailableForGroups.add(new ToolSimple(name, rootName));
+ }
+ if (userAvailable) {
+ toolsAvailableForUsers.add(new ToolSimple(name, rootName));
+ }
+ break;
+ }
}
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/tool/ServerToolTarget.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/tool/ServerToolTarget.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/core/server/tool/ServerToolTarget.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -20,5 +20,16 @@
package cc.kune.core.server.tool;
public enum ServerToolTarget {
- forUsers, forGroups, forBoth
+ /**
+ * This is a tool developed both for users and groups
+ */
+ forBoth,
+ /**
+ * A tools developed only for groups
+ */
+ forGroups,
+ /**
+ * A tool developed only for users
+ */
+ forUsers
}
Modified: trunk/src/main/java/cc/kune/core/server/tool/ToolSimple.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/tool/ToolSimple.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/core/server/tool/ToolSimple.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -21,58 +21,57 @@
public class ToolSimple {
- private final String name;
- private final String rootName;
+ private final String name;
+ private final String rootName;
- public ToolSimple(String name, String rootName) {
- this.name = name;
- this.rootName = rootName;
- }
+ public ToolSimple(final String name, final String rootName) {
+ this.name = name;
+ this.rootName = rootName;
+ }
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- ToolSimple other = (ToolSimple) obj;
- if (name == null) {
- if (other.name != null) {
- return false;
- }
- } else if (!name.equals(other.name)) {
- return false;
- }
- if (rootName == null) {
- if (other.rootName != null) {
- return false;
- }
- } else if (!rootName.equals(other.rootName)) {
- return false;
- }
- return true;
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
}
-
- public String getName() {
- return name;
+ if (obj == null) {
+ return false;
}
-
- public String getRootName() {
- return rootName;
+ if (getClass() != obj.getClass()) {
+ return false;
}
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((rootName == null) ? 0 : rootName.hashCode());
- return result;
+ final ToolSimple other = (ToolSimple) obj;
+ if (name == null) {
+ if (other.name != null) {
+ return false;
+ }
+ } else if (!name.equals(other.name)) {
+ return false;
}
+ if (rootName == null) {
+ if (other.rootName != null) {
+ return false;
+ }
+ } else if (!rootName.equals(other.rootName)) {
+ return false;
+ }
+ return true;
+ }
+ public String getName() {
+ return name;
+ }
+
+ public String getRootName() {
+ return rootName;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ result = prime * result + ((rootName == null) ? 0 : rootName.hashCode());
+ return result;
+ }
}
Modified: trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -19,11 +19,9 @@
*/
package cc.kune.core.shared.dto;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-
import com.google.gwt.user.client.rpc.IsSerializable;
public class InitDataDTO implements IsSerializable {
@@ -32,21 +30,21 @@
private String chatDomain;
private String chatHttpBase;
private String chatRoomHost;
- private ArrayList<I18nCountryDTO> countries;
+ private List<I18nCountryDTO> countries;
private String currentCCversion;
private LicenseDTO defaultLicense;
private String defaultWsTheme;
private List<ExtMediaDescripDTO> extMediaDescrips;
private String flvEmbedObject;
private String galleryPermittedExtensions;
- private ArrayList<ToolSimpleDTO> groupTools;
+ private List<ToolSimpleDTO> groupTools;
private HashMap<String, GSpaceTheme> gSpaceThemes = new HashMap<String, GSpaceTheme>();
private int imgCropsize;
private int imgIconsize;
private int imgResizewidth;
private int imgThumbsize;
- private ArrayList<I18nLanguageSimpleDTO> languages;
- private ArrayList<LicenseDTO> licenses;
+ private List<I18nLanguageSimpleDTO> languages;
+ private List<LicenseDTO> licenses;
private String maxFileSizeInMb;
private String mp3EmbedObject;
private String oggEmbedObject;
@@ -56,7 +54,7 @@
private String siteUrl;
private String[] timezones;
private UserInfoDTO userInfo;
- private ArrayList<ToolSimpleDTO> userTools;
+ private List<ToolSimpleDTO> userTools;
public InitDataDTO() {
}
@@ -77,7 +75,7 @@
return chatRoomHost;
}
- public ArrayList<I18nCountryDTO> getCountries() {
+ public List<I18nCountryDTO> getCountries() {
return countries;
}
@@ -105,7 +103,7 @@
return galleryPermittedExtensions;
}
- public ArrayList<ToolSimpleDTO> getGroupTools() {
+ public List<ToolSimpleDTO> getGroupTools() {
return groupTools;
}
@@ -129,11 +127,11 @@
return imgThumbsize;
}
- public ArrayList<I18nLanguageSimpleDTO> getLanguages() {
+ public List<I18nLanguageSimpleDTO> getLanguages() {
return languages;
}
- public ArrayList<LicenseDTO> getLicenses() {
+ public List<LicenseDTO> getLicenses() {
return licenses;
}
@@ -174,7 +172,7 @@
return userInfo;
}
- public ArrayList<ToolSimpleDTO> getUserTools() {
+ public List<ToolSimpleDTO> getUserTools() {
return userTools;
}
@@ -198,7 +196,7 @@
this.chatRoomHost = chatRoomHost;
}
- public void setCountries(final ArrayList<I18nCountryDTO> countries) {
+ public void setCountries(final List<I18nCountryDTO> countries) {
this.countries = countries;
}
@@ -226,7 +224,7 @@
this.galleryPermittedExtensions = galleryPermittedExtensions;
}
- public void setGroupTools(final ArrayList<ToolSimpleDTO> groupTools) {
+ public void setGroupTools(final List<ToolSimpleDTO> groupTools) {
this.groupTools = groupTools;
}
@@ -250,11 +248,11 @@
this.imgThumbsize = imgThumbsize;
}
- public void setLanguages(final ArrayList<I18nLanguageSimpleDTO> languages) {
+ public void setLanguages(final List<I18nLanguageSimpleDTO> languages) {
this.languages = languages;
}
- public void setLicenses(final ArrayList<LicenseDTO> licenses) {
+ public void setLicenses(final List<LicenseDTO> licenses) {
this.licenses = licenses;
}
@@ -295,7 +293,7 @@
this.userInfo = currentUser;
}
- public void setUserTools(final ArrayList<ToolSimpleDTO> userTools) {
+ public void setUserTools(final List<ToolSimpleDTO> userTools) {
this.userTools = userTools;
}
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -17,6 +17,7 @@
*/
package cc.kune.gspace.client.i18n;
+import cc.kune.common.client.utils.SimpleCallback;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.dto.I18nTranslationDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -26,8 +27,6 @@
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
-import com.google.gwt.event.dom.client.KeyPressEvent;
-import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.uibinder.client.UiBinder;
@@ -134,17 +133,10 @@
cellList.setEmptyListMessage(SafeHtmlUtils.fromTrustedString("<span style='padding: 10px; font-style: italic;'>Loading</span>"));
cellList.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
cellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION);
- cellList.addHandler(new KeyPressHandler() {
- @Override
- public void onKeyPress(final KeyPressEvent event) {
- if (event.getNativeEvent().getKeyCode() == com.google.gwt.event.dom.client.KeyCodes.KEY_UP) {
- } else if (event.getNativeEvent().getKeyCode() == com.google.gwt.event.dom.client.KeyCodes.KEY_DOWN) {
- }
- }
- }, KeyPressEvent.getType());
- // Add a selection model so we can select cells.
final SingleSelectionModel<I18nTranslationDTO> selectionModel = new SingleSelectionModel<I18nTranslationDTO>(
I18nTranslationDTO.KEY_PROVIDER);
+ // Add a selection model so we can select cells.
+
cellList.setSelectionModel(selectionModel);
cellList.setValueUpdater(new ValueUpdater<I18nTranslationDTO>() {
@Override
@@ -156,14 +148,24 @@
@Override
public void onSelectionChange(final SelectionChangeEvent event) {
translatorForm.setInfo(selectionModel.getSelectedObject());
+ translatorForm.focusToTranslate();
+ // cellList.get
+ // pagerPanel.ensureVisible((UIObject) event.getSource());
}
});
cellList.sinkEvents(com.google.gwt.user.client.Event.KEYEVENTS);
// Create the UiBinder.
final Binder uiBinder = GWT.create(Binder.class);
initWidget(uiBinder.createAndBindUi(this));
- translatorForm.init(data, i18n, cellList);
+ translatorForm.init(data, i18n);
data.addDataDisplay(cellList);
+ data.setSelectionMode(selectionModel);
+ data.setLoadCallback(new SimpleCallback() {
+ @Override
+ public void onCallback() {
+ translatorForm.focusToTranslate();
+ }
+ });
// Set the cellList as the display of the pagers.
// pagerPanel is a scrollable pager that extends the range when the
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPanel.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPanel.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -13,7 +13,7 @@
public class I18nNewTranslatorPanel extends AbstractTabbedDialogPanel implements I18nNewTranslatorView {
- private static final int HEIGHT = 200;
+ private static final int HEIGHT = 280;
private static final String TRANSLATOR_ERROR_ID = "i18n-trans-panel-error";
private static final String TRANSLATOR_PANEL_ID = "i18n-trans-panel";
private static final int WIDTH = 570;
@@ -27,12 +27,11 @@
final TranslatorTabsCollection transGroup, final LanguageSelectorPanel lanSelectorPanel,
final I18nToTranslateGridPanel toTranslateGrid, final I18nTranslatedGridPanel translatedGrid,
final I18nTranslateRecomendPanel transRecommend, final CoreResources res) {
- super(TRANSLATOR_PANEL_ID, "", WIDTH, HEIGHT + 80, false, false, images, TRANSLATOR_ERROR_ID,
+ super(TRANSLATOR_PANEL_ID, "", WIDTH, HEIGHT, false, false, images, TRANSLATOR_ERROR_ID,
i18n.t("Close"), null, null, null, transGroup);
setIcon(res.language());
this.lanSelectorPanel = lanSelectorPanel;
lanSelectorPanel.addChangeListener(new SimpleCallback() {
-
@Override
public void onCallback() {
setLanguage(lanSelectorPanel.getLanguage());
@@ -41,7 +40,7 @@
this.toTranslateGrid = toTranslateGrid;
this.translatedGrid = translatedGrid;
this.transRecommend = transRecommend;
- transRecommend.setSize(String.valueOf(WIDTH), String.valueOf(HEIGHT));
+ transRecommend.setSize(WIDTH, HEIGHT);
super.setIconCls("k-options-icon");
super.setTitle(i18n.t("Help to translate kune"));
super.getInnerPanel().insert(lanSelectorPanel, 0);
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslateRecomendPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslateRecomendPanel.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslateRecomendPanel.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -17,7 +17,7 @@
public I18nTranslateRecomendPanel(final I18nTranslationService i18n) {
tabTitle = new Label(i18n.t("Recommendations"));
recommFrame = new Frame("i18n-recom.html");
- recommFrame.setHeight("auto");
+ // recommFrame.setHeight("auto");
recommFrame.setStyleName("k-i18n-recommend");
initWidget(recommFrame);
}
@@ -26,9 +26,11 @@
return tabTitle;
}
- @Override
- public void setSize(final String width, final String height) {
- recommFrame.setWidth(width + "px");
- recommFrame.setHeight(height + "px");
+ public void setSize(final int width, final int height) {
+ final String widthS = width + "px";
+ final String heightS = height + "px";
+ recommFrame.setWidth(widthS);
+ recommFrame.setHeight(heightS);
+ // super.setSize(widthS, heightS);
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslationProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslationProvider.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslationProvider.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -17,6 +17,7 @@
import java.util.List;
+import cc.kune.common.client.utils.SimpleCallback;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.I18nServiceAsync;
import cc.kune.core.client.state.Session;
@@ -25,12 +26,15 @@
import com.google.gwt.user.cellview.client.CellList;
import com.google.gwt.view.client.ListDataProvider;
+import com.google.gwt.view.client.SingleSelectionModel;
import com.google.inject.Inject;
public class I18nTranslationProvider {
private final ListDataProvider<I18nTranslationDTO> dataProvider = new ListDataProvider<I18nTranslationDTO>();
private final I18nServiceAsync i18n;
+ private SimpleCallback loadCallback;
+ private SingleSelectionModel<I18nTranslationDTO> selectionModel;
private final Session session;
@Inject
@@ -43,10 +47,28 @@
dataProvider.addDataDisplay(displayList);
}
+ private void avance(final int increment) {
+ final I18nTranslationDTO selected = selectionModel.getSelectedObject();
+ final List<I18nTranslationDTO> list = dataProvider.getList();
+ final int pos = list.indexOf(selected);
+ final int next = pos + increment;
+ if (next >= 0 && next < list.size()) {
+ selectionModel.setSelected(list.get(next), true);
+ }
+ }
+
public void refreshDisplays() {
dataProvider.refresh();
}
+ public void selectNext() {
+ avance(1);
+ }
+
+ public void selectPrevious() {
+ avance(-1);
+ }
+
public void setLanguage(final I18nLanguageSimpleDTO language, final boolean toTranslate) {
dataProvider.getList().clear();
dataProvider.refresh();
@@ -56,8 +78,20 @@
public void onSuccess(final List<I18nTranslationDTO> result) {
dataProvider.setList(result);
dataProvider.refresh();
+ if (result.size() > 0) {
+ selectionModel.setSelected(result.get(0), true);
+ }
+ loadCallback.onCallback();
}
});
}
+ public void setLoadCallback(final SimpleCallback loadCallback) {
+ this.loadCallback = loadCallback;
+ }
+
+ public void setSelectionMode(final SingleSelectionModel<I18nTranslationDTO> selectionModel) {
+ this.selectionModel = selectionModel;
+ }
+
}
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -28,7 +28,6 @@
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
-import com.google.gwt.user.cellview.client.CellList;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
@@ -45,8 +44,6 @@
}
private static Binder uiBinder = GWT.create(Binder.class);
-
- private CellList<I18nTranslationDTO> cellList;
@UiField
PushButton copyIcon;
private I18nTranslationProvider dataProvider;
@@ -86,6 +83,10 @@
translation.setText(toTranslate.getText());
}
+ public void focusToTranslate() {
+ translation.setFocus(true);
+ }
+
@UiHandler("translation")
void handleBlur(final BlurEvent event) {
update();
@@ -105,31 +106,29 @@
@UiHandler("translation")
void handleKeyPress(final KeyPressEvent event) {
- if (event.isControlKeyDown() && event.isAltKeyDown()
- && event.getNativeEvent().getKeyCode() == com.google.gwt.event.dom.client.KeyCodes.KEY_UP) {
- cellList.fireEvent(event);
- }
- if (event.isControlKeyDown() && event.isAltKeyDown()
- && event.getNativeEvent().getKeyCode() == com.google.gwt.event.dom.client.KeyCodes.KEY_DOWN) {
- cellList.fireEvent(event);
- }
- if (event.isAltKeyDown() && event.getCharCode() == 'v') {
+ if (event.isAltKeyDown()
+ && event.getNativeEvent().getKeyCode() == com.google.gwt.event.dom.client.KeyCodes.KEY_PAGEUP) {
+ // cellList.fireEvent(event);
+ dataProvider.selectPrevious();
+ } else if (event.isAltKeyDown()
+ && event.getNativeEvent().getKeyCode() == com.google.gwt.event.dom.client.KeyCodes.KEY_PAGEDOWN) {
+ // cellList.fireEvent(event);
+ dataProvider.selectNext();
+ } else if (event.isAltKeyDown() && event.getCharCode() == 'v') {
copyTranslation();
event.stopPropagation();
+ updateWithTimer();
}
- updateWithTimer();
}
- public void init(final I18nTranslationProvider dataProvider, final I18nTranslationService i18n,
- final CellList<I18nTranslationDTO> cellList) {
+ public void init(final I18nTranslationProvider dataProvider, final I18nTranslationService i18n) {
this.dataProvider = dataProvider;
this.i18n = i18n;
- this.cellList = cellList;
Tooltip.to(copyIcon, i18n.t("Copy the text to translate"));
toTranslateTitle.setText(i18n.t("translate this:"));
noteForTranslatorsTittle.setText(i18n.t("Notes:"));
keyboardRecomendationTitle.setText(i18n.t("Tip:"));
- keyboardRecomendation.setText(i18n.t("Pulse TAB/Shift-TAB to move from the list to the translation area, and use the cursor to move bettween list elements. Alt-V to copy the original text. The translations are autosaved"));
+ keyboardRecomendation.setText(i18n.t("Pulse Alt+PageUp or Alt+PageDown to move up/down in the list while translating, and Alt-V to copy the original text. The translations are autosaved"));
}
public void setInfo(final I18nTranslationDTO item) {
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/ShowMorePagerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/ShowMorePagerPanel.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/ShowMorePagerPanel.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -19,6 +19,7 @@
import com.google.gwt.event.dom.client.ScrollHandler;
import com.google.gwt.user.cellview.client.AbstractPager;
import com.google.gwt.user.client.ui.ScrollPanel;
+import com.google.gwt.user.client.ui.UIObject;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.HasRows;
@@ -59,24 +60,23 @@
// Handle scroll events.
scrollable.addScrollHandler(new ScrollHandler() {
- public void onScroll(ScrollEvent event) {
+ @Override
+ public void onScroll(final ScrollEvent event) {
// If scrolling up, ignore the event.
- int oldScrollPos = lastScrollPos;
+ final int oldScrollPos = lastScrollPos;
lastScrollPos = scrollable.getScrollPosition();
if (oldScrollPos >= lastScrollPos) {
return;
}
- HasRows display = getDisplay();
+ final HasRows display = getDisplay();
if (display == null) {
return;
}
- int maxScrollTop = scrollable.getWidget().getOffsetHeight()
- - scrollable.getOffsetHeight();
+ final int maxScrollTop = scrollable.getWidget().getOffsetHeight() - scrollable.getOffsetHeight();
if (lastScrollPos >= maxScrollTop) {
// We are near the end, so increase the page size.
- int newPageSize = Math.min(
- display.getVisibleRange().getLength() + incrementSize,
+ final int newPageSize = Math.min(display.getVisibleRange().getLength() + incrementSize,
display.getRowCount());
display.setVisibleRange(0, newPageSize);
}
@@ -84,10 +84,14 @@
});
}
+ public void ensureVisible(final UIObject object) {
+ scrollable.ensureVisible(object);
+ }
+
/**
* Get the number of rows by which the range is increased when the scrollbar
* reaches the bottom.
- *
+ *
* @return the increment size
*/
public int getIncrementSize() {
@@ -95,7 +99,11 @@
}
@Override
- public void setDisplay(HasRows display) {
+ protected void onRangeOrRowCountChanged() {
+ }
+
+ @Override
+ public void setDisplay(final HasRows display) {
assert display instanceof Widget : "display must extend Widget";
scrollable.setWidget((Widget) display);
super.setDisplay(display);
@@ -104,14 +112,11 @@
/**
* Set the number of rows by which the range is increased when the scrollbar
* reaches the bottom.
- *
- * @param incrementSize the incremental number of rows
+ *
+ * @param incrementSize
+ * the incremental number of rows
*/
- public void setIncrementSize(int incrementSize) {
+ public void setIncrementSize(final int incrementSize) {
this.incrementSize = incrementSize;
}
-
- @Override
- protected void onRangeOrRowCountChanged() {
- }
}
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/main/resources/kune.properties 2011-09-05 22:45:28 UTC (rev 1510)
@@ -41,6 +41,22 @@
# kune.site.welcomewave = w+rtackLTkDCA
kune.site.welcomewave =
+# which tools are available in this site by users
+kune.tools.userSiteAvailableTools = docs,blogs,wiki,tasks,barters
+# From these which tools are enabled for users after registration
+# Possible values:
+# kune.tools.userRegisEnabledTools = docs,blogs,wiki,tasks,barters
+kune.tools.userRegisEnabledTools = docs,blogs,wiki,tasks
+# WARNING: be sure that all tools in userRegisEnabledTools are included in userSiteAvailableTools
+
+# which tools are available in this site by groups
+kune.tools.groupSiteAvailableTools = docs,blogs,wiki,tasks,events,lists,chats
+# From these which tools are enabled for groups after registration
+# Possible values (don't enable chats on initialization/install, do later)
+# kune.tools.groupRegisEnabledTools = docs,blogs,wiki,tasks,events,chats
+kune.tools.groupRegisEnabledTools = docs,blogs,wiki,tasks,events,lists
+# WARNING: be sure that all tools in groupRegisEnabledTools are included in groupSiteAvailableTools
+
### Workspace enabled themes
# This names are also the name of the items in the theme menu and there are translated
Modified: trunk/src/test/java/cc/kune/core/server/integration/DatabaseInitializerTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/integration/DatabaseInitializerTest.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/test/java/cc/kune/core/server/integration/DatabaseInitializerTest.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -30,7 +30,6 @@
import org.junit.Before;
import org.junit.Test;
-import cc.kune.chat.shared.ChatConstants;
import cc.kune.core.server.content.ContainerManager;
import cc.kune.core.server.content.ContentManager;
import cc.kune.core.server.manager.GroupManager;
@@ -99,9 +98,10 @@
final ToolConfiguration docToolConfig = defaultGroup.getToolConfiguration(NAME);
assertNotNull(docToolConfig);
assertTrue(docToolConfig.isEnabled());
- final ToolConfiguration chatToolConfig = defaultGroup.getToolConfiguration(ChatConstants.NAME);
- assertNotNull(chatToolConfig);
- assertTrue(chatToolConfig.isEnabled());
+ // final ToolConfiguration chatToolConfig =
+ // defaultGroup.getToolConfiguration(ChatConstants.NAME);
+ // assertNotNull(chatToolConfig);
+ // assertTrue(chatToolConfig.isEnabled());
final List<String> enabledTools = groupManager.findEnabledTools(defaultGroup.getId());
assertNotNull(enabledTools);
assertTrue(enabledTools.size() > 0);
Modified: trunk/src/test/java/cc/kune/core/server/integration/site/InitDataTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/integration/site/InitDataTest.java 2011-09-05 16:05:15 UTC (rev 1509)
+++ trunk/src/test/java/cc/kune/core/server/integration/site/InitDataTest.java 2011-09-05 22:45:28 UTC (rev 1510)
@@ -23,7 +23,7 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import java.util.ArrayList;
+import java.util.List;
import org.junit.Before;
import org.junit.Test;
@@ -50,7 +50,7 @@
@Inject
UserSession session;
- private void assertValidLicenseDTOList(final ArrayList<LicenseDTO> licenseList) {
+ private void assertValidLicenseDTOList(final List<LicenseDTO> licenseList) {
assertTrue(licenseList.size() > 0);
for (final Object o : licenseList) {
assertNotNull(o);
1
0
Author: vjrj_
Date: 2011-09-05 18:05:15 +0200 (Mon, 05 Sep 2011)
New Revision: 1509
Added:
trunk/img/kune-logo.svg
trunk/install-devguide.patch
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.ui.xml
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslationProvider.java
Removed:
trunk/src/main/java/cc/kune/gspace/client/i18n/CwCellList.java.txt
trunk/src/main/java/cc/kune/gspace/client/i18n/CwCellList.ui.xml
Modified:
trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java
trunk/src/main/java/cc/kune/common/public/kune-common.css
trunk/src/main/java/cc/kune/core/client/rpcservices/I18nService.java
trunk/src/main/java/cc/kune/core/client/rpcservices/I18nServiceAsync.java
trunk/src/main/java/cc/kune/core/public/ws.css
trunk/src/main/java/cc/kune/core/server/manager/I18nTranslationManager.java
trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java
trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java
trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageSimpleDTO.java
trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java
trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPanel.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPresenter.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nToTranslateGridPanel.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslateRecomendPanel.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatedGridPanel.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.ui.xml
trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java
trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java
Log:
NEW - # 79: I18n refactorization
http://kune.ourproject.org/issues/ticket/79
Added: trunk/img/kune-logo.svg
===================================================================
--- trunk/img/kune-logo.svg (rev 0)
+++ trunk/img/kune-logo.svg 2011-09-05 16:05:15 UTC (rev 1509)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="520.08398"
+ height="112.44892"
+ id="svg3882"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="kune-logo.svg">
+ <defs
+ id="defs3884" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="341.15509"
+ inkscape:cy="-72.310399"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="10"
+ fit-margin-left="10"
+ fit-margin-right="10"
+ fit-margin-bottom="10"
+ showborder="true"
+ inkscape:showpageshadow="false"
+ inkscape:window-width="1078"
+ inkscape:window-height="897"
+ inkscape:window-x="0"
+ inkscape:window-y="947"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata3887">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Capa 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-8.844905,30.761194)">
+ <g
+ transform="matrix(1.8469703,0,0,1.8469703,-76.785219,-1664.6844)"
+ id="g2737">
+ <path
+ inkscape:connector-curvature="0"
+ inkscape:export-ydpi="399.59854"
+ inkscape:export-xdpi="399.59854"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-logo-1200.png"
+ id="path2689"
+ d="m 298.07933,890.09763 c -0.74303,0 -1.45723,0.003 -2.17391,0.0494 -0.0669,0.0136 -0.13033,0.0368 -0.19763,0.0494 -0.66715,0.12461 -1.32536,0.23087 -2.02569,0.24704 -0.097,0.0136 -0.19995,-0.0145 -0.29644,0 -5.71605,0.86055 -10.54554,3.34248 -14.42688,7.46047 -4.53271,4.78706 -6.81817,10.52182 -6.81818,17.19368 0,6.74672 2.28548,12.52044 6.81818,17.29249 4.90667,5.14604 11.2818,7.70749 19.12055,7.70751 4.15869,-2e-5 8.15681,-1.03328 11.95652,-3.11265 3.79965,-2.01951 7.10345,-4.87783 9.93083,-8.49802 l -8.54743,-4.74308 c -3.68005,4.90668 -8.20158,7.36166 -13.58695,7.36166 -3.73988,0 -7.0931,-1.21319 -9.98024,-3.60672 -2.93207,-2.39351 -4.39727,-5.30891 -4.39723,-8.79447 l 39.08102,0 0,-1.97629 c -4e-5,-8.45204 -2.86291,-15.22007 -8.54743,-20.30632 -4.78705,-4.23347 -10.0899,-6.32405 -15.90909,-6.32411 z m -181.71937,0.34585 0,18.92292 -6.62055,0 0,9.6838 6.62055,0 0,19.76285 10.07905,0 0,-19.76285 6.07708,0 12.40119,19.76285 11.95652,0 -16.6502,-25.09882 15.90909,-22.33202 -12.20356,0 -12.30237,17.98419 -5.18775,0 0,-18.92292 -10.07905,0 z m 123.66601,0 c -1.73503,0.30966 -3.35171,0.81366 -4.8419,1.58103 -2.5132,1.34638 -4.49729,3.12201 -5.97826,5.33597 l 0,-5.97827 -10.12846,0 0,47.43084 10.12846,0 0,-26.58103 c -1e-5,-3.79965 1.07224,-6.71507 3.21147,-8.79447 2.15413,-2.07932 4.88507,-3.11262 8.25098,-3.11265 3.56032,3e-5 6.34065,0.95537 8.3004,2.91502 1.95964,1.95972 2.91496,5.03102 2.91502,9.18973 l 0,26.3834 10.12846,0 0,-28.60672 c -5e-5,-5.8192 -1.77567,-10.62715 -5.33597,-14.42688 -2.67029,-2.84973 -5.76,-4.62351 -9.28854,-5.33597 l -7.36166,0 z m -76.77865,0.93873 0,27.47036 c -2e-5,6.43257 2.16853,11.63344 6.52173,15.61265 4.03904,3.73986 9.04189,5.63239 14.92095,5.63241 5.93886,-2e-5 10.91633,-1.89255 14.97036,-5.63241 4.35315,-3.97921 6.52169,-9.18008 6.52174,-15.61265 l 0,-27.47036 -10.12846,0 0,26.58103 c -5e-5,3.50052 -1.0723,6.34841 -3.21146,8.54743 -2.21404,2.27385 -4.906,3.40909 -8.15218,3.40909 -3.12654,2e-5 -5.83938,-1.15019 -8.05336,-3.40909 -2.19905,-2.27381 -3.2609,-5.10673 -3.26087,-8.54743 l 0,-26.58103 -10.12845,0 z m 133.54743,7.80633 c 3.306,5e-5 6.19285,0.92683 8.64624,2.7668 2.37851,1.88491 4.13014,4.63084 5.23716,8.25099 l -27.22332,0 c 0.79283,-3.48552 2.43792,-6.19246 4.8913,-8.15218 2.37853,-1.89981 5.18745,-2.86556 8.44862,-2.86561 z"
+ style="font-size:58.13353348px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#a56941;fill-opacity:1;stroke:none;font-family:Emblem" />
+ <g
+ inkscape:export-ydpi="399.59854"
+ inkscape:export-xdpi="399.59854"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/kune-logo-1200.png"
+ transform="matrix(0.347343,0,0,0.346901,34.203754,588.03773)"
+ id="g2691">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)"
+ id="path2693"
+ d="m 60.321717,411.99998 377.014613,0"
+ style="fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23953247;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block" />
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)"
+ id="path2695"
+ d="m 252.61203,788.60332 0,-377.01178"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffdb6b;stroke-width:109.23950958;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block" />
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)"
+ id="path2697"
+ d="m 252.86937,597.15755 377.0124,0"
+ style="fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#69312f;stroke-width:109.23951721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block" />
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)"
+ id="path2699"
+ d="m 437.45588,596.97447 0,-377.01491"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#cc6633;stroke-width:109.23950195;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block" />
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(0.240856,0.12287,-0.12287,0.240856,101.5762,778.871)"
+ id="path2701"
+ d="m 372.87905,411.27704 64.93441,0"
+ style="fill:#69312f;fill-opacity:1;fill-rule:nonzero;stroke:#dd8a3d;stroke-width:109.23947906;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:block" />
+ </g>
+ </g>
+ </g>
+</svg>
Added: trunk/install-devguide.patch
===================================================================
--- trunk/install-devguide.patch (rev 0)
+++ trunk/install-devguide.patch 2011-09-05 16:05:15 UTC (rev 1509)
@@ -0,0 +1,78 @@
+Index: INSTALL
+===================================================================
+--- INSTALL (revisión: 1502)
++++ INSTALL (copia de trabajo)
+@@ -32,19 +32,26 @@
+ Make two databases in your mysql:
+
+ CREATE DATABASE kune_dev;
+-GRANT ALL PRIVILEGES ON kune_dev.* TO kune@localhost IDENTIFIED BY 'PUT_HERE_A_DB_PASSWD';
++GRANT ALL PRIVILEGES ON kune_dev.* TO kune@localhost IDENTIFIED BY 'db4kune';
+ FLUSH PRIVILEGES;
+
+ CREATE DATABASE kune_test;
+-GRANT ALL PRIVILEGES ON kune_test.* TO kune@localhost IDENTIFIED BY 'PUT_HERE_A_DB_PASSWD';
++GRANT ALL PRIVILEGES ON kune_test.* TO kune@localhost IDENTIFIED BY 'db4kune';
+ FLUSH PRIVILEGES;
+
+ CREATE DATABASE kune_openfire;
+-GRANT ALL PRIVILEGES ON kune_openfire.* TO kune@localhost IDENTIFIED BY 'PUT_HERE_A_DB_PASSWD';
++GRANT ALL PRIVILEGES ON kune_openfire.* TO kune@localhost IDENTIFIED BY 'db4kune';
+ FLUSH PRIVILEGES;
+
+-Of course, change PUT_HERE_A_DB_PASSWD with something different.
++Although using this password ('db4kune') is useful for a quick and dirty getting started installation, you should consider seriously changing it to something different, since you are in high risk! In this case you should change the password acordingly in this other locations:
+
++ - pom.xml
++ - script/liquibase-migrate.sh
++ - script/liquibase-rollback.sh
++ - src/main/resources/db/liquibase.properties
++ - src/main/resources/META-INF/persistence.xml
++ - src/main/webapp/WEB-INF/publicspace/config/database.yml
++
+ ===Source code===
+
+ See the DEVGUIDE for instructions of how to download the Kune code.
+@@ -173,8 +180,10 @@
+ JDBC Driver Class: com.myrootsql.jdbc.Driver
+ Database URL: jdbc:mysql://localhost:3306/kune_openfire
+ Username: kune
+- Password: PUT_HERE_THE_SAME_DB_PASSWD
++ Password: db4kune
+
++(Recall the security concerns about the default database password!)
++
+ Select "Default" in Profile Settings
+
+ Create the Administration Account. Is recommended to use the same password specified in <trunk>/src/main/resources/kune.properties
+@@ -200,7 +209,7 @@
+ ...
+ <jdbcProvider>
+ <driver>com.mysql.jdbc.Driver</driver>
+- <connectionString>jdbc:mysql://localhost/kune_dev?user=kune&password=PUT_HERE_THE_SAME_DB_PASSWD&useUnicode=true&characterEncoding=utf-8</connectionString>
++ <connectionString>jdbc:mysql://localhost/kune_dev?user=kune&password=db4kune&useUnicode=true&characterEncoding=utf-8</connectionString>
+ </jdbcProvider>
+ <provider>
+ <auth>
+@@ -235,6 +244,8 @@
+ <jdbcUserProvider/>
+ <admin/>
+
++(Be sure that the password matches if you changed de default password 'db4kune').
++
+ For more details:
+ http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/db-…
+
+Index: DEV-GUIDE
+===================================================================
+--- DEV-GUIDE (revisión: 1502)
++++ DEV-GUIDE (copia de trabajo)
+@@ -60,7 +60,7 @@
+
+ ===Eclipse configuration===
+
+-Running (in the trunk directory):
++Check out if Kune's code includes Eclipse project definition files (i.e. '.project' & '.classpath') in the trunk directory. If these files do not exist, run (again in the trunk directory):
+
+ mvn eclipse:eclipse
+
Modified: trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -31,6 +31,8 @@
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.logical.shared.HasCloseHandlers;
+import com.google.gwt.event.logical.shared.SelectionEvent;
+import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
@@ -47,6 +49,7 @@
private final String firstBtnId;
private final String firstBtnTitle;
private int height;
+ private ImageResource icon;
private String iconCls;
private final NotifyLevelImages images;
private MessageToolbar messageErrorBar;
@@ -108,9 +111,9 @@
}
@Override
- public void addTab(final IsWidget view, final IsWidget tabWidget) {
+ public void addTab(final IsWidget view, final IsWidget tabTitle) {
createDialogIfNecessary();
- tabPanel.add(view, tabWidget);
+ tabPanel.add(view, tabTitle);
setPositions();
}
@@ -121,13 +124,23 @@
}
private void createDialog() {
- dialog = new BasicTopDialog.Builder(dialogId, authohide, modal).autoscroll(true).width(width).height(
- height).icon(iconCls).firstButtonId(firstBtnId).firstButtonTitle(firstBtnTitle).sndButtonId(
- dialogId).sndButtonTitle(sndBtnTitle).sndButtonId(sndBtnId).title(title).build();
+ dialog = new BasicTopDialog.Builder(dialogId, authohide, modal).autoscroll(true).width(
+ String.valueOf(width + 20)).height(String.valueOf(height + 20)).icon(iconCls).firstButtonId(
+ firstBtnId).firstButtonTitle(firstBtnTitle).sndButtonId(dialogId).sndButtonTitle(sndBtnTitle).sndButtonId(
+ sndBtnId).title(title).build();
+ if (icon != null) {
+ dialog.setTitleIcon(icon);
+ }
messageErrorBar = new MessageToolbar(images, errorLabelId);
tabPanel = new TabLayoutPanel(25, Unit.PX);
+ tabPanel.addSelectionHandler(new SelectionHandler<Integer>() {
+ @Override
+ public void onSelection(final SelectionEvent<Integer> event) {
+ dialog.showCentered();
+ }
+ });
provCollection.createAll();
- tabPanel.setSize(String.valueOf(width), String.valueOf(height));
+ tabPanel.setSize(String.valueOf(width) + "px", String.valueOf(height) + "px");
dialog.getInnerPanel().add(tabPanel);
tabPanel.addStyleName("k-tabpanel-aditionalpadding");
tabPanel.addStyleName("k-tabs");
@@ -211,7 +224,7 @@
}
public void setIcon(final ImageResource icon) {
- dialog.setTitleIcon(icon);
+ this.icon = icon;
}
public void setIconCls(final String iconCls) {
Modified: trunk/src/main/java/cc/kune/common/public/kune-common.css
===================================================================
--- trunk/src/main/java/cc/kune/common/public/kune-common.css 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/common/public/kune-common.css 2011-09-05 16:05:15 UTC (rev 1509)
@@ -21,24 +21,24 @@
}
.k-opacity80 {
- kfilter: alpha(opacity = 80
- );
+ kfilter: alpha(opacity =
+ 80);
-moz-opacity: 0.80;
-khtml-opacity: 0.80;
opacity: 0.80;
}
.k-opacity90 {
- kfilter: alpha(opacity = 90
- );
+ kfilter: alpha(opacity =
+ 90);
-moz-opacity: 0.90;
-khtml-opacity: 0.90;
opacity: 0.90;
}
.k-opacity95 {
- kfilter: alpha(opacity = 95
- );
+ kfilter: alpha(opacity =
+ 95);
-moz-opacity: 0.95;
-khtml-opacity: 0.95;
opacity: 0.95;
@@ -46,8 +46,8 @@
.gwt-PopupPanelGlass {
background-color: #f7ebe3 !important;
- kfilter: alpha(opacity = 68
- ) !important;
+ kfilter: alpha(opacity =
+ 68) !important;
-moz-opacity: 0.68 !important;
-khtml-opacity: 0.68 !important;
opacity: 0.68 !important;
@@ -308,7 +308,7 @@
-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;
@@ -551,7 +551,7 @@
_border-left-color: pink;
_border-bottom-color: pink;
_border-right-color: pink;
- _filter: chroma(color = pink);
+ _filter: chroma(color = pink);
}
/* end tooltip */
@@ -701,3 +701,10 @@
color: gray;
}
+.gwt-TextArea {
+ border: 1px solid #BBBBBB;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ padding: 3px;
+}
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/I18nService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/I18nService.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/I18nService.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -20,9 +20,11 @@
package cc.kune.core.client.rpcservices;
import java.util.HashMap;
+import java.util.List;
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.shared.dto.I18nLanguageDTO;
+import cc.kune.core.shared.dto.I18nTranslationDTO;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@@ -30,12 +32,15 @@
@RemoteServiceRelativePath("I18nService")
public interface I18nService extends RemoteService {
- I18nLanguageDTO getInitialLanguage(String localeParam);
+ I18nLanguageDTO getInitialLanguage(String localeParam);
- HashMap<String, String> getLexicon(String language);
+ HashMap<String, String> getLexicon(String language);
- String getTranslation(String userHash, String language, String text);
+ List<I18nTranslationDTO> getTranslatedLexicon(String userHash, final String language,
+ boolean toTranslate);
- String setTranslation(String userHash, String id, String translation) throws DefaultException;
+ String getTranslation(String userHash, String language, String text);
+ String setTranslation(String userHash, String id, String translation) throws DefaultException;
+
}
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/I18nServiceAsync.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/I18nServiceAsync.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/I18nServiceAsync.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -20,19 +20,24 @@
package cc.kune.core.client.rpcservices;
import java.util.HashMap;
+import java.util.List;
import cc.kune.core.shared.dto.I18nLanguageDTO;
+import cc.kune.core.shared.dto.I18nTranslationDTO;
import com.google.gwt.user.client.rpc.AsyncCallback;
public interface I18nServiceAsync {
- void getLexicon(String language, AsyncCallback<HashMap<String, String>> callback);
+ void getInitialLanguage(String localeParam, AsyncCallback<I18nLanguageDTO> callback);
- void getTranslation(String userHash, String language, String text, AsyncCallback<String> callback);
+ void getLexicon(String language, AsyncCallback<HashMap<String, String>> callback);
- void setTranslation(String userHash, String id, String translation, AsyncCallback<String> asyncCallback);
+ void getTranslatedLexicon(String userHash, String language, boolean toTranslate,
+ AsyncCallback<List<I18nTranslationDTO>> callback);
- void getInitialLanguage(String localeParam, AsyncCallback<I18nLanguageDTO> callback);
+ void getTranslation(String userHash, String language, String text, AsyncCallback<String> callback);
+ void setTranslation(String userHash, String id, String translation, AsyncCallback<String> asyncCallback);
+
}
Modified: trunk/src/main/java/cc/kune/core/public/ws.css
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.css 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-09-05 16:05:15 UTC (rev 1509)
@@ -852,7 +852,7 @@
*/
.k-sn-mainpanel .x-btn button,.k-sn-mainpanel button,button.k-button,.gwt-FileUpload,button.gwt-Button
{
- font: 13px 'Ubuntu', arial;
+ font: 14px 'Ubuntu', arial;
border: 2px solid #CCCCCC;
cursor: pointer;
margin: 0;
Modified: trunk/src/main/java/cc/kune/core/server/manager/I18nTranslationManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/I18nTranslationManager.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/core/server/manager/I18nTranslationManager.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -22,31 +22,32 @@
import java.util.HashMap;
import java.util.List;
-
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.domain.I18nTranslation;
public interface I18nTranslationManager extends Manager<I18nTranslation, Long> {
- HashMap<String, String> getLexicon(String language);
+ HashMap<String, String> getLexicon(String language);
- List<I18nTranslation> getTranslatedLexicon(String language);
+ List<I18nTranslation> getTranslatedLexicon(String language);
- SearchResult<I18nTranslation> getTranslatedLexicon(String language, Integer firstResult, Integer maxResults);
+ SearchResult<I18nTranslation> getTranslatedLexicon(String language, Integer firstResult,
+ Integer maxResults);
- String getTranslation(String language, String text);
+ String getTranslation(String language, String text);
- String getTranslation(String language, String text, Integer arg);
+ String getTranslation(String language, String text, Integer arg);
- String getTranslation(String language, String text, String arg);
+ String getTranslation(String language, String text, String arg);
- List<I18nTranslation> getUntranslatedLexicon(String language);
+ List<I18nTranslation> getUntranslatedLexicon(String language);
- SearchResult<I18nTranslation> getUntranslatedLexicon(String language, Integer firstResult, Integer maxResults);
+ SearchResult<I18nTranslation> getUntranslatedLexicon(String language, Integer firstResult,
+ Integer maxResults);
- String setTranslation(String id, String translation) throws DefaultException;
+ String setTranslation(String id, String translation) throws DefaultException;
- void setTranslation(String language, String text, String translation);
+ void setTranslation(String language, String text, String translation);
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -25,7 +25,6 @@
import javax.persistence.EntityManager;
-
import cc.kune.common.client.utils.TextUtils;
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.server.manager.I18nLanguageManager;
@@ -40,149 +39,151 @@
@Singleton
public class I18nTranslationManagerDefault extends DefaultManager<I18nTranslation, Long> implements
- I18nTranslationManager {
+ I18nTranslationManager {
- private final I18nTranslationFinder finder;
- private final ConcurrentHashMap<String, HashMap<String, String>> langCache;
- private final I18nLanguageManager languageManager;
+ private final I18nTranslationFinder finder;
+ private final ConcurrentHashMap<String, HashMap<String, String>> langCache;
+ private final I18nLanguageManager languageManager;
- @Inject
- public I18nTranslationManagerDefault(final Provider<EntityManager> provider, final I18nTranslationFinder finder,
- final I18nLanguageManager languageManager) {
- super(provider, I18nTranslation.class);
- this.finder = finder;
- this.languageManager = languageManager;
- langCache = new ConcurrentHashMap<String, HashMap<String, String>>();
- }
+ @Inject
+ public I18nTranslationManagerDefault(final Provider<EntityManager> provider,
+ final I18nTranslationFinder finder, final I18nLanguageManager languageManager) {
+ super(provider, I18nTranslation.class);
+ this.finder = finder;
+ this.languageManager = languageManager;
+ langCache = new ConcurrentHashMap<String, HashMap<String, String>>();
+ }
- @Override
- public HashMap<String, String> getLexicon(final String language) {
- HashMap<String, String> map = langCache.get(language);
- if (map == null) {
- map = getLexiconFromDb(language);
- }
- return map;
- }
+ private I18nLanguage getLanguage(final String languageId) {
+ return languageManager.findByCode(languageId);
+ }
- @SuppressWarnings("unchecked")
- private HashMap<String, String> getLexiconFromDb(final String language) {
- HashMap<String, String> map = new HashMap<String, String>();
- final List<I18nTranslation> set = finder.findByLanguage(language);
- if (!language.equals(I18nTranslation.DEFAULT_LANG)) {
- map = (HashMap<String, String>) getLexicon(I18nTranslation.DEFAULT_LANG).clone();
- }
- for (final I18nTranslation trans : set) {
- map.put(trans.getTrKey(), trans.getText());
- }
- langCache.put(language, map);
- return map;
+ @Override
+ public HashMap<String, String> getLexicon(final String language) {
+ HashMap<String, String> map = langCache.get(language);
+ if (map == null) {
+ map = getLexiconFromDb(language);
}
+ return map;
+ }
- @Override
- public List<I18nTranslation> getTranslatedLexicon(final String languageCode) {
- final I18nLanguage language = languageManager.findByCode(languageCode);
- return finder.getTranslatedLexicon(language);
+ @SuppressWarnings("unchecked")
+ private HashMap<String, String> getLexiconFromDb(final String language) {
+ HashMap<String, String> map = new HashMap<String, String>();
+ final List<I18nTranslation> set = finder.findByLanguage(language);
+ if (!language.equals(I18nTranslation.DEFAULT_LANG)) {
+ map = (HashMap<String, String>) getLexicon(I18nTranslation.DEFAULT_LANG).clone();
}
-
- @Override
- public SearchResult<I18nTranslation> getTranslatedLexicon(final String languageCode, final Integer firstResult,
- final Integer maxResults) {
- final I18nLanguage language = languageManager.findByCode(languageCode);
- final List<I18nTranslation> list = finder.getTranslatedLexicon(language, firstResult, maxResults);
- final Long count = finder.getTranslatedLexiconCount(language);
- return new SearchResult<I18nTranslation>(count.intValue(), list);
+ for (final I18nTranslation trans : set) {
+ map.put(trans.getTrKey(), trans.getText());
}
+ langCache.put(language, map);
+ return map;
+ }
- @Override
- public String getTranslation(final String language, final String text) {
- final HashMap<String, String> lexicon = getLexicon(language);
- final String escapedText = TextUtils.escapeHtmlLight(text);
- if (lexicon.containsKey(escapedText)) {
- final String translation = lexicon.get(escapedText);
- return translation;
- } else {
- // new key, add to language and default language and let
- // untranslated
- if (!getLexicon(I18nTranslation.DEFAULT_LANG).containsKey(text)) {
- final I18nTranslation newTranslation = new I18nTranslation("", null, I18nTranslation.DEF_PLUR_INDEX,
- "", I18nTranslation.UNTRANSLATED_VALUE, escapedText, I18nTranslation.DEF_NAMESPACE,
- languageManager.findByCode(I18nTranslation.DEFAULT_LANG));
- persist(newTranslation);
- langCache.clear();
- }
- return I18nTranslation.UNTRANSLATED_VALUE;
- }
- }
+ @Override
+ public List<I18nTranslation> getTranslatedLexicon(final String languageCode) {
+ return finder.getTranslatedLexicon(getLanguage(languageCode));
+ }
- @Override
- public String getTranslation(final String language, final String text, final Integer arg) {
- String translation = getTranslation(language, text);
- translation = translation.replaceFirst("\\[%d\\]", arg.toString());
- return translation;
- }
+ @Override
+ public SearchResult<I18nTranslation> getTranslatedLexicon(final String languageCode,
+ final Integer firstResult, final Integer maxResults) {
+ final I18nLanguage language = getLanguage(languageCode);
+ final List<I18nTranslation> list = finder.getTranslatedLexicon(language, firstResult, maxResults);
+ final Long count = finder.getTranslatedLexiconCount(language);
+ return new SearchResult<I18nTranslation>(count.intValue(), list);
+ }
- @Override
- public String getTranslation(final String language, final String text, final String arg) {
- String translation = getTranslation(language, text);
- translation = translation.replaceFirst("\\[%s\\]", arg);
- return translation;
+ @Override
+ public String getTranslation(final String language, final String text) {
+ final HashMap<String, String> lexicon = getLexicon(language);
+ final String escapedText = TextUtils.escapeHtmlLight(text);
+ if (lexicon.containsKey(escapedText)) {
+ final String translation = lexicon.get(escapedText);
+ return translation;
+ } else {
+ // new key, add to language and default language and let
+ // untranslated
+ if (!getLexicon(I18nTranslation.DEFAULT_LANG).containsKey(text)) {
+ final I18nTranslation newTranslation = new I18nTranslation("", null,
+ I18nTranslation.DEF_PLUR_INDEX, "", I18nTranslation.UNTRANSLATED_VALUE, escapedText,
+ I18nTranslation.DEF_NAMESPACE, languageManager.findByCode(I18nTranslation.DEFAULT_LANG));
+ persist(newTranslation);
+ langCache.clear();
+ }
+ return I18nTranslation.UNTRANSLATED_VALUE;
}
+ }
- @Override
- public List<I18nTranslation> getUntranslatedLexicon(final String languageCode) {
- final I18nLanguage language = initUnstranlated(languageCode);
- return finder.getUnstranslatedLexicon(language);
- }
+ @Override
+ public String getTranslation(final String language, final String text, final Integer arg) {
+ String translation = getTranslation(language, text);
+ translation = translation.replaceFirst("\\[%d\\]", arg.toString());
+ return translation;
+ }
- @Override
- public SearchResult<I18nTranslation> getUntranslatedLexicon(final String languageCode, final Integer firstResult,
- final Integer maxResults) {
- final I18nLanguage language = initUnstranlated(languageCode);
- final Long count = finder.getUnstranslatedLexiconCount(language);
- final List<I18nTranslation> list = finder.getUnstranslatedLexicon(language, firstResult, maxResults);
- return new SearchResult<I18nTranslation>(count.intValue(), list);
- }
+ @Override
+ public String getTranslation(final String language, final String text, final String arg) {
+ String translation = getTranslation(language, text);
+ translation = translation.replaceFirst("\\[%s\\]", arg);
+ return translation;
+ }
- private I18nLanguage initUnstranlated(final String languageCode) {
- final I18nLanguage defLanguage = languageManager.findByCode(I18nTranslation.DEFAULT_LANG);
- I18nLanguage language;
- if (languageCode.equals(I18nTranslation.DEFAULT_LANG)) {
- language = defLanguage;
- } else {
- language = languageManager.findByCode(languageCode);
- final List<I18nTranslation> list = finder.getNonExistentFromDefault(defLanguage, language);
- for (final I18nTranslation defTrans : list) {
- final I18nTranslation newTrans = defTrans.cloneForNewLanguage();
- newTrans.setLanguage(language);
- persist(newTrans);
- }
- }
- return language;
+ @Override
+ public List<I18nTranslation> getUntranslatedLexicon(final String languageCode) {
+ return finder.getUntranslatedLexicon(initUnstranlated(languageCode));
+ }
+
+ @Override
+ public SearchResult<I18nTranslation> getUntranslatedLexicon(final String languageCode,
+ final Integer firstResult, final Integer maxResults) {
+ final I18nLanguage language = initUnstranlated(languageCode);
+ final Long count = finder.getUnstranslatedLexiconCount(language);
+ final List<I18nTranslation> list = finder.getUnstranslatedLexicon(language, firstResult, maxResults);
+ return new SearchResult<I18nTranslation>(count.intValue(), list);
+ }
+
+ private I18nLanguage initUnstranlated(final String languageCode) {
+ final I18nLanguage defLanguage = languageManager.findByCode(I18nTranslation.DEFAULT_LANG);
+ I18nLanguage language;
+ if (languageCode.equals(I18nTranslation.DEFAULT_LANG)) {
+ language = defLanguage;
+ } else {
+ language = getLanguage(languageCode);
+ final List<I18nTranslation> list = finder.getNonExistentFromDefault(defLanguage, language);
+ for (final I18nTranslation defTrans : list) {
+ final I18nTranslation newTrans = defTrans.cloneForNewLanguage();
+ newTrans.setLanguage(language);
+ persist(newTrans);
+ }
}
+ return language;
+ }
- @Override
- public String setTranslation(final String id, final String translation) throws DefaultException {
- final I18nTranslation trans = super.find(Long.valueOf(id));
- if (trans != null) {
- final String escapedTranslation = TextUtils.escapeHtmlLight(translation);
- trans.setText(escapedTranslation);
- persist(trans);
- return escapedTranslation;
- } else {
- throw new DefaultException("Trying to translate a unknown item");
- }
+ @Override
+ public String setTranslation(final String id, final String translation) throws DefaultException {
+ final I18nTranslation trans = super.find(Long.valueOf(id));
+ if (trans != null) {
+ final String escapedTranslation = TextUtils.escapeHtmlLight(translation);
+ trans.setText(escapedTranslation);
+ persist(trans);
+ return escapedTranslation;
+ } else {
+ throw new DefaultException("Trying to translate a unknown item");
}
+ }
- @Override
- public void setTranslation(final String languageId, final String text, final String translation) {
- final I18nLanguage language = languageManager.findByCode(languageId);
- final I18nTranslation newTranslation = new I18nTranslation(text, language, translation);
- persist(newTranslation);
- if (languageId.equals(I18nTranslation.DEFAULT_LANG)) {
- langCache.clear();
- } else {
- langCache.remove(languageId);
- }
+ @Override
+ public void setTranslation(final String languageId, final String text, final String translation) {
+ final I18nLanguage language = getLanguage(languageId);
+ final I18nTranslation newTranslation = new I18nTranslation(text, language, translation);
+ persist(newTranslation);
+ if (languageId.equals(I18nTranslation.DEFAULT_LANG)) {
+ langCache.clear();
+ } else {
+ langCache.remove(languageId);
}
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -20,6 +20,7 @@
package cc.kune.core.server.rpc;
import java.util.HashMap;
+import java.util.List;
import javax.persistence.NoResultException;
import javax.servlet.http.HttpServletRequest;
@@ -33,6 +34,7 @@
import cc.kune.core.server.manager.I18nTranslationManager;
import cc.kune.core.server.mapper.Mapper;
import cc.kune.core.shared.dto.I18nLanguageDTO;
+import cc.kune.core.shared.dto.I18nTranslationDTO;
import cc.kune.domain.I18nLanguage;
import cc.kune.domain.I18nTranslation;
@@ -101,7 +103,21 @@
}
@Override
+ @Authenticated
@Transactional
+ public List<I18nTranslationDTO> getTranslatedLexicon(final String userHash, final String language,
+ final boolean toTranslate) {
+ if (toTranslate) {
+ return mapper.mapList(i18nTranslationManager.getUntranslatedLexicon(language),
+ I18nTranslationDTO.class);
+ } else {
+ return mapper.mapList(i18nTranslationManager.getTranslatedLexicon(language),
+ I18nTranslationDTO.class);
+ }
+ }
+
+ @Override
+ @Transactional
public String getTranslation(final String userHash, final String language, final String text) {
String translation = null;
try {
Modified: trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageSimpleDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageSimpleDTO.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageSimpleDTO.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -23,23 +23,31 @@
public class I18nLanguageSimpleDTO implements IsSerializable {
- private String code;
- private String englishName;
+ private String code;
+ private String englishName;
- public String getCode() {
- return code;
- }
+ public I18nLanguageSimpleDTO() {
+ }
- public String getEnglishName() {
- return englishName;
- }
+ public I18nLanguageSimpleDTO(final String code, final String englishName) {
+ this.code = code;
+ this.englishName = englishName;
+ }
- public void setCode(final String code) {
- this.code = code;
- }
+ public String getCode() {
+ return code;
+ }
- public void setEnglishName(final String englishName) {
- this.englishName = englishName;
- }
+ public String getEnglishName() {
+ return englishName;
+ }
+ public void setCode(final String code) {
+ this.code = code;
+ }
+
+ public void setEnglishName(final String englishName) {
+ this.englishName = englishName;
+ }
+
}
Modified: trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/core/shared/dto/I18nTranslationDTO.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -20,45 +20,70 @@
package cc.kune.core.shared.dto;
import com.google.gwt.user.client.rpc.IsSerializable;
+import com.google.gwt.view.client.ProvidesKey;
-public class I18nTranslationDTO implements IsSerializable {
+public class I18nTranslationDTO implements IsSerializable, Comparable<I18nTranslationDTO> {
- private Long id;
- private String trKey;
- private String text;
-
- public I18nTranslationDTO() {
- this(null, null, null);
+ /**
+ * The key provider that provides the unique ID
+ */
+ public static final ProvidesKey<I18nTranslationDTO> KEY_PROVIDER = new ProvidesKey<I18nTranslationDTO>() {
+ @Override
+ public Object getKey(final I18nTranslationDTO item) {
+ return item == null ? null : item.getId();
}
+ };
+ private boolean dirty;
+ private Long id;
+ private String text;
+ private String trKey;
- public I18nTranslationDTO(final Long id, final String trKey, final String text) {
- this.id = id;
- this.trKey = trKey;
- this.text = text;
- }
+ public I18nTranslationDTO() {
+ this(null, null, null);
+ }
- public Long getId() {
- return id;
- }
+ public I18nTranslationDTO(final Long id, final String trKey, final String text) {
+ this.id = id;
+ this.trKey = trKey;
+ this.text = text;
+ setDirty(false);
+ }
- public void setId(final Long id) {
- this.id = id;
- }
+ @Override
+ public int compareTo(final I18nTranslationDTO o) {
+ return (o == null || o.trKey == null) ? -1 : -o.trKey.compareTo(trKey);
+ }
- public String getTrKey() {
- return trKey;
- }
+ public Long getId() {
+ return id;
+ }
- public void setTrKey(final String trKey) {
- this.trKey = trKey;
- }
+ public String getText() {
+ return text;
+ }
- public String getText() {
- return text;
- }
+ public String getTrKey() {
+ return trKey;
+ }
- public void setText(final String text) {
- this.text = text;
- }
+ public boolean isDirty() {
+ return dirty;
+ }
+ public void setDirty(final boolean dirty) {
+ this.dirty = dirty;
+ }
+
+ public void setId(final Long id) {
+ this.id = id;
+ }
+
+ public void setText(final String text) {
+ this.text = text;
+ }
+
+ public void setTrKey(final String trKey) {
+ this.trKey = trKey;
+ }
+
}
Modified: trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/domain/finders/I18nTranslationFinder.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -22,9 +22,6 @@
import java.util.ArrayList;
import java.util.List;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-
import cc.kune.domain.I18nLanguage;
import cc.kune.domain.I18nTranslation;
@@ -33,42 +30,38 @@
import com.google.inject.persist.finder.FirstResult;
import com.google.inject.persist.finder.MaxResults;
-@NamedQueries({
- @NamedQuery(name = "untranslated", query = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :language and text=null"),
- @NamedQuery(name = "translated", query = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :language and text!=null"),
- @NamedQuery(name = "untranslatedcount", query = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text=null"),
- @NamedQuery(name = "translatedcount", query = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text!=null") })
public interface I18nTranslationFinder {
- String TRANSLATED_COUNT_QUERY = "translatedcount";
- String TRANSLATED_QUERY = "translated";
- String UNTRANSLATED_COUNT_QUERY = "untranslatedcount";
- String UNTRANSLATED_QUERY = "untranslated";
+ String TRANSLATED_COUNT_QUERY = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text!=null";
+ String TRANSLATED_QUERY = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :language and text!=null";
+ String UNTRANSLATED_COUNT_QUERY = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text=null";
+ String UNTRANSLATED_QUERY = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :language and text=null";
- @Finder(query = "SELECT gt FROM I18nTranslation gt JOIN gt.language gl WHERE gl.code = :language", returnAs = ArrayList.class)
- public List<I18nTranslation> findByLanguage(@Named("language") final String language);
+ @Finder(query = "SELECT gt FROM I18nTranslation gt JOIN gt.language gl WHERE gl.code = :language", returnAs = ArrayList.class)
+ public List<I18nTranslation> findByLanguage(@Named("language") final String language);
- @Finder(query = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :deflanguage AND gt.trKey NOT IN (SELECT gt.trKey FROM I18nTranslation gt WHERE gt.language = :language)", returnAs = ArrayList.class)
- public List<I18nTranslation> getNonExistentFromDefault(@Named("deflanguage") final I18nLanguage deflanguage,
- @Named("language") final I18nLanguage language);
+ @Finder(query = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :deflanguage AND gt.trKey NOT IN (SELECT gt.trKey FROM I18nTranslation gt WHERE gt.language = :language)", returnAs = ArrayList.class)
+ public List<I18nTranslation> getNonExistentFromDefault(
+ @Named("deflanguage") final I18nLanguage deflanguage,
+ @Named("language") final I18nLanguage language);
- @Finder(namedQuery = TRANSLATED_QUERY, returnAs = ArrayList.class)
- public List<I18nTranslation> getTranslatedLexicon(@Named("language") final I18nLanguage language);
+ @Finder(query = TRANSLATED_QUERY, returnAs = ArrayList.class)
+ public List<I18nTranslation> getTranslatedLexicon(@Named("language") final I18nLanguage language);
- @Finder(namedQuery = TRANSLATED_QUERY, returnAs = ArrayList.class)
- public List<I18nTranslation> getTranslatedLexicon(@Named("language") final I18nLanguage language,
- @FirstResult final int first, @MaxResults final int max);
+ @Finder(query = TRANSLATED_QUERY, returnAs = ArrayList.class)
+ public List<I18nTranslation> getTranslatedLexicon(@Named("language") final I18nLanguage language,
+ @FirstResult final int first, @MaxResults final int max);
- @Finder(namedQuery = TRANSLATED_COUNT_QUERY)
- public Long getTranslatedLexiconCount(@Named("language") final I18nLanguage language);
+ @Finder(query = TRANSLATED_COUNT_QUERY)
+ public Long getTranslatedLexiconCount(@Named("language") final I18nLanguage language);
- @Finder(namedQuery = UNTRANSLATED_QUERY, returnAs = ArrayList.class)
- public List<I18nTranslation> getUnstranslatedLexicon(@Named("language") final I18nLanguage language);
+ @Finder(query = UNTRANSLATED_QUERY, returnAs = ArrayList.class)
+ public List<I18nTranslation> getUnstranslatedLexicon(@Named("language") final I18nLanguage language,
+ @FirstResult final int first, @MaxResults final int max);
- @Finder(namedQuery = UNTRANSLATED_QUERY, returnAs = ArrayList.class)
- public List<I18nTranslation> getUnstranslatedLexicon(@Named("language") final I18nLanguage language,
- @FirstResult final int first, @MaxResults final int max);
+ @Finder(query = UNTRANSLATED_COUNT_QUERY)
+ public Long getUnstranslatedLexiconCount(@Named("language") final I18nLanguage language);
- @Finder(namedQuery = UNTRANSLATED_COUNT_QUERY)
- public Long getUnstranslatedLexiconCount(@Named("language") final I18nLanguage language);
+ @Finder(query = UNTRANSLATED_QUERY, returnAs = ArrayList.class)
+ public List<I18nTranslation> getUntranslatedLexicon(@Named("language") final I18nLanguage language);
}
Deleted: trunk/src/main/java/cc/kune/gspace/client/i18n/CwCellList.java.txt
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/CwCellList.java.txt 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/CwCellList.java.txt 2011-09-05 16:05:15 UTC (rev 1509)
@@ -1,193 +0,0 @@
-/*
- * 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 com.google.gwt.sample.showcase.client.content.cell;
-
-import com.google.gwt.cell.client.AbstractCell;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.RunAsyncCallback;
-import com.google.gwt.i18n.client.Constants;
-import com.google.gwt.resources.client.ClientBundle;
-import com.google.gwt.resources.client.ImageResource;
-import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.user.cellview.client.CellList;
-import com.google.gwt.user.cellview.client.HasKeyboardPagingPolicy.KeyboardPagingPolicy;
-import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.google.gwt.user.client.ui.AbstractImagePrototype;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.view.client.SelectionChangeEvent;
-import com.google.gwt.view.client.SingleSelectionModel;
-import com.sun.corba.se.pept.transport.ContactInfo;
-
-public class CwCellList extends ContentWidget {
-
- /**
- * The UiBinder interface used by this example.
- */
- interface Binder extends UiBinder<Widget, CwCellList> {
- }
-
- /**
- * The Cell used to render a {@link ContactInfo}.
- */
- static class ContactCell extends AbstractCell<ContactInfo> {
-
- /**
- * The html of the image used for contacts.
- */
- private final String imageHtml;
-
- public ContactCell(final ImageResource image) {
- this.imageHtml = AbstractImagePrototype.create(image).getHTML();
- }
-
- @Override
- public void render(final Context context, final ContactInfo value, final SafeHtmlBuilder sb) {
- // Value can be null, so do a null check..
- if (value == null) {
- return;
- }
-
- sb.appendHtmlConstant("<table>");
-
- // Add the contact image.
- sb.appendHtmlConstant("<tr><td rowspan='3'>");
- sb.appendHtmlConstant(imageHtml);
- sb.appendHtmlConstant("</td>");
-
- // Add the name and address.
- sb.appendHtmlConstant("<td style='font-size:95%;'>");
- sb.appendEscaped(value.getFullName());
- sb.appendHtmlConstant("</td></tr><tr><td>");
- sb.appendEscaped(value.getAddress());
- sb.appendHtmlConstant("</td></tr></table>");
- }
- }
-
- /**
- * The constants used in this Content Widget.
- */
- public static interface CwConstants extends Constants {
- String cwCellListDescription();
-
- String cwCellListName();
- }
-
- /**
- * The images used for this example.
- */
- static interface Images extends ClientBundle {
- ImageResource contact();
- }
-
- /**
- * The CellList.
- */
- private CellList<ContactInfo> cellList;
-
- /**
- * The contact form used to update contacts.
- */
- @UiField
- I18nTranslatorForm contactForm;
-
- /**
- * The pager used to change the range of data.
- */
- @UiField
- ShowMorePagerPanel pagerPanel;
-
- /**
- * The pager used to display the current range.
- */
- @UiField
- RangeLabelPager rangeLabelPager;
-
- /**
- * Constructor.
- *
- * @param constants
- * the constants
- */
- public CwCellList(final CwConstants constants) {
- super(constants.cwCellListName(), constants.cwCellListDescription(), false, "ContactDatabase.java",
- "CwCellList.ui.xml", "ContactInfoForm.java", "ShowMorePagerPanel.java", "RangeLabelPager.java");
- }
-
- @Override
- protected void asyncOnInitialize(final AsyncCallback<Widget> callback) {
- GWT.runAsync(CwCellList.class, new RunAsyncCallback() {
-
- @Override
- public void onFailure(final Throwable caught) {
- callback.onFailure(caught);
- }
-
- @Override
- public void onSuccess() {
- callback.onSuccess(onInitialize());
- }
- });
- }
-
- /**
- * Initialize this example.
- */
- @Override
- public Widget onInitialize() {
- final Images images = GWT.create(Images.class);
-
- // Create a CellList.
- final ContactCell contactCell = new ContactCell(images.contact());
-
- // Set a key provider that provides a unique key for each contact. If key is
- // used to identify contacts when fields (such as the name and address)
- // change.
- cellList = new CellList<ContactInfo>(contactCell, ContactDatabase.ContactInfo.KEY_PROVIDER);
- cellList.setPageSize(30);
- cellList.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
- cellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION);
-
- // Add a selection model so we can select cells.
- final SingleSelectionModel<ContactInfo> selectionModel = new SingleSelectionModel<ContactInfo>(
- ContactDatabase.ContactInfo.KEY_PROVIDER);
- cellList.setSelectionModel(selectionModel);
- selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
- @Override
- public void onSelectionChange(final SelectionChangeEvent event) {
- contactForm.setContact(selectionModel.getSelectedObject());
- }
- });
-
- // Create the UiBinder.
- final Binder uiBinder = GWT.create(Binder.class);
- final Widget widget = uiBinder.createAndBindUi(this);
-
- // Add the CellList to the data provider in the database.
- ContactDatabase.get().addDataDisplay(cellList);
-
- // Set the cellList as the display of the pagers. This example has two
- // pagers. pagerPanel is a scrollable pager that extends the range when the
- // user scrolls to the bottom. rangeLabelPager is a pager that displays the
- // current range, but does not have any controls to change the range.
- pagerPanel.setDisplay(cellList);
- rangeLabelPager.setDisplay(cellList);
-
- return widget;
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/i18n/CwCellList.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/CwCellList.ui.xml 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/CwCellList.ui.xml 2011-09-05 16:05:15 UTC (rev 1509)
@@ -1,51 +0,0 @@
-<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
-<ui:UiBinder
- xmlns:ui="urn:ui:com.google.gwt.uibinder"
- xmlns:g="urn:import:com.google.gwt.user.client.ui"
- xmlns:c='urn:import:com.google.gwt.user.cellview.client'
- xmlns:s="urn:import:cc.kune.gspace.client.i18n">
-
- <ui:style>
- .scrollable {
- height: 400px;
- width: 250px;
- border: 1px solid #ccc;
- text-align: left;
- }
-
- .contactFormCell {
- padding-left: 20px;
- }
- </ui:style>
-
- <g:HTMLPanel>
- <table>
- <tr>
- <td
- valign='top'
- align='center'>
- <s:ShowMorePagerPanel
- addStyleNames='{style.scrollable}'
- ui:field='pagerPanel' />
- <s:RangeLabelPager
- ui:field='rangeLabelPager' />
- </td>
- <td
- class='{style.contactFormCell}'
- valign='top'
- align='center'>
- <s:I18nTranslatorForm
- ui:field='contactForm' />
- <br />
- </td>
- </tr>
- <tr>
- <td
- align='center'>
- <s:ShowMorePagerPanel
- ui:field='pager' />
- </td>
- </tr>
- </table>
- </g:HTMLPanel>
-</ui:UiBinder>
Copied: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java (from rev 1501, trunk/src/main/java/cc/kune/gspace/client/i18n/CwCellList.java.txt)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -0,0 +1,181 @@
+/*
+ * 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.
+ *
+ * Adapter by Kune Dev Team
+ */
+package cc.kune.gspace.client.i18n;
+
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
+import cc.kune.core.shared.dto.I18nTranslationDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.gwt.cell.client.AbstractCell;
+import com.google.gwt.cell.client.ValueUpdater;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.event.dom.client.KeyPressEvent;
+import com.google.gwt.event.dom.client.KeyPressHandler;
+import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.cellview.client.CellList;
+import com.google.gwt.user.cellview.client.HasKeyboardPagingPolicy.KeyboardPagingPolicy;
+import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.view.client.SelectionChangeEvent;
+import com.google.gwt.view.client.SingleSelectionModel;
+import com.google.inject.Inject;
+
+public class I18nCellList extends Composite {
+
+ /**
+ * The UiBinder interface used by this example.
+ */
+ interface Binder extends UiBinder<Widget, I18nCellList> {
+ }
+
+ /**
+ * The Cell used to render a {@link I18nTranslationDTO}.
+ */
+ static class TranslationCell extends AbstractCell<I18nTranslationDTO> {
+ private static String DIRTY_STYLE = "font-style: italic;";
+ private static String ODD_STYLE = "";
+
+ // private static String ODD_STYLE = "background-color: #F3F7FB;";
+
+ public TranslationCell() {
+ }
+
+ @Override
+ public boolean dependsOnSelection() {
+ return super.dependsOnSelection();
+ }
+
+ @Override
+ public void onBrowserEvent(final com.google.gwt.cell.client.Cell.Context context,
+ final Element parent, final I18nTranslationDTO value, final NativeEvent event,
+ final ValueUpdater<I18nTranslationDTO> valueUpdater) {
+ super.onBrowserEvent(context, parent, value, event, valueUpdater);
+ }
+
+ @Override
+ protected void onEnterKeyDown(final com.google.gwt.cell.client.Cell.Context context,
+ final Element parent, final I18nTranslationDTO value, final NativeEvent event,
+ final ValueUpdater<I18nTranslationDTO> valueUpdater) {
+
+ }
+
+ @Override
+ public void render(final Context context, final I18nTranslationDTO value, final SafeHtmlBuilder sb) {
+ // Value can be null, so do a null check..
+ if (value == null) {
+ return;
+ }
+ final int index = context.getIndex();
+ final boolean odd = index % 2 == 0;
+ sb.appendHtmlConstant("<div style='display: table-row; border-bottom: 1px dashed #CCC; "
+ + (odd ? ODD_STYLE : "") + "'>");
+ sb.appendHtmlConstant("<div style='display: table-cell; width: 100%; padding: 1px 5px;"
+ + (value.isDirty() ? DIRTY_STYLE : "") + "'>");
+ sb.appendEscaped(value.getTrKey());
+ sb.appendHtmlConstant("</div></div>");
+ }
+ }
+
+ /**
+ * The CellList.
+ */
+ private final CellList<I18nTranslationDTO> cellList;
+
+ private final I18nTranslationProvider data;
+
+ /**
+ * The pager used to change the range of data.
+ */
+ @UiField
+ ShowMorePagerPanel pagerPanel;
+
+ /**
+ * The pager used to display the current range.
+ */
+ @UiField
+ RangeLabelPager rangeLabelPager;
+
+ /**
+ * The form used to update translations
+ */
+ @UiField
+ I18nTranslatorForm translatorForm;
+
+ @Inject
+ public I18nCellList(final I18nTranslationProvider data, final I18nTranslationService i18n) {
+ this.data = data;
+ final TranslationCell cell = new TranslationCell();
+
+ // Set a key provider that provides a unique key for each contact. If key is
+ // used to identify translations when fields change.
+ cellList = new CellList<I18nTranslationDTO>(cell, I18nTranslationDTO.KEY_PROVIDER);
+ cellList.setPageSize(30);
+ cellList.setEmptyListMessage(SafeHtmlUtils.fromTrustedString("<span style='padding: 10px; font-style: italic;'>Loading</span>"));
+ cellList.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
+ cellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION);
+ cellList.addHandler(new KeyPressHandler() {
+ @Override
+ public void onKeyPress(final KeyPressEvent event) {
+ if (event.getNativeEvent().getKeyCode() == com.google.gwt.event.dom.client.KeyCodes.KEY_UP) {
+ } else if (event.getNativeEvent().getKeyCode() == com.google.gwt.event.dom.client.KeyCodes.KEY_DOWN) {
+ }
+ }
+ }, KeyPressEvent.getType());
+ // Add a selection model so we can select cells.
+ final SingleSelectionModel<I18nTranslationDTO> selectionModel = new SingleSelectionModel<I18nTranslationDTO>(
+ I18nTranslationDTO.KEY_PROVIDER);
+ cellList.setSelectionModel(selectionModel);
+ cellList.setValueUpdater(new ValueUpdater<I18nTranslationDTO>() {
+ @Override
+ public void update(final I18nTranslationDTO value) {
+ // TODO Auto-generated method stub
+ }
+ });
+ selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
+ @Override
+ public void onSelectionChange(final SelectionChangeEvent event) {
+ translatorForm.setInfo(selectionModel.getSelectedObject());
+ }
+ });
+ cellList.sinkEvents(com.google.gwt.user.client.Event.KEYEVENTS);
+ // Create the UiBinder.
+ final Binder uiBinder = GWT.create(Binder.class);
+ initWidget(uiBinder.createAndBindUi(this));
+ translatorForm.init(data, i18n, cellList);
+ data.addDataDisplay(cellList);
+
+ // Set the cellList as the display of the pagers.
+ // pagerPanel is a scrollable pager that extends the range when the
+ // user scrolls to the bottom. rangeLabelPager is a pager that displays the
+ // current range, but does not have any controls to change the range.
+ pagerPanel.setDisplay(cellList);
+ // pagerPanel.setStyleName("k-i18n-trans-list");
+ rangeLabelPager.setDisplay(cellList);
+ }
+
+ public void setLanguage(final I18nLanguageSimpleDTO language, final boolean toTranslate) {
+ data.setLanguage(language, toTranslate);
+ translatorForm.setToLanguage(language);
+ }
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.ui.xml (from rev 1501, trunk/src/main/java/cc/kune/gspace/client/i18n/CwCellList.ui.xml)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.ui.xml (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nCellList.ui.xml 2011-09-05 16:05:15 UTC (rev 1509)
@@ -0,0 +1,46 @@
+<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
+ xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:c='urn:import:com.google.gwt.user.cellview.client'
+ xmlns:s="urn:import:cc.kune.gspace.client.i18n">
+
+ <ui:style>
+ .table {
+ border: 1px solid #ccc;
+ padding: 20px;
+ height: 180px;
+ }
+
+ .scrollable {
+ height: 240px;
+ width: 260px;
+ border: 1px solid #ccc;
+ text-align: left;
+ margin: 5px;
+ }
+
+ .formCell {
+ padding-left: 10px;
+ }
+ </ui:style>
+
+ <g:HTMLPanel>
+ <table class="{style.table}">
+ <tr>
+ <td valign='top' align='center'>
+ <s:ShowMorePagerPanel addStyleNames='{style.scrollable}'
+ ui:field='pagerPanel'/>
+ <s:RangeLabelPager ui:field='rangeLabelPager'/>
+ </td>
+ <td class='{style.formCell}' valign='top' align='center'>
+ <s:I18nTranslatorForm ui:field='translatorForm'/>
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td align='center'>
+ <s:ShowMorePagerPanel ui:field='pager'/>
+ </td>
+ </tr>
+ </table>
+ </g:HTMLPanel>
+</ui:UiBinder>
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPanel.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPanel.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -2,18 +2,21 @@
import cc.kune.common.client.notify.NotifyLevelImages;
import cc.kune.common.client.ui.dialogs.tabbed.AbstractTabbedDialogPanel;
-import cc.kune.core.shared.dto.I18nLanguageDTO;
+import cc.kune.common.client.utils.SimpleCallback;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.i18n.I18nNewTranslatorPresenter.I18nNewTranslatorView;
+import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
import com.google.inject.Inject;
public class I18nNewTranslatorPanel extends AbstractTabbedDialogPanel implements I18nNewTranslatorView {
- private static final int HEIGHT = 400;
+ private static final int HEIGHT = 200;
private static final String TRANSLATOR_ERROR_ID = "i18n-trans-panel-error";
private static final String TRANSLATOR_PANEL_ID = "i18n-trans-panel";
- private static final int WIDTH = 400;
+ private static final int WIDTH = 570;
private final LanguageSelectorPanel lanSelectorPanel;
private final I18nToTranslateGridPanel toTranslateGrid;
private final I18nTranslatedGridPanel translatedGrid;
@@ -23,18 +26,28 @@
public I18nNewTranslatorPanel(final I18nTranslationService i18n, final NotifyLevelImages images,
final TranslatorTabsCollection transGroup, final LanguageSelectorPanel lanSelectorPanel,
final I18nToTranslateGridPanel toTranslateGrid, final I18nTranslatedGridPanel translatedGrid,
- final I18nTranslateRecomendPanel transRecommend) {
+ final I18nTranslateRecomendPanel transRecommend, final CoreResources res) {
super(TRANSLATOR_PANEL_ID, "", WIDTH, HEIGHT + 80, false, false, images, TRANSLATOR_ERROR_ID,
i18n.t("Close"), null, null, null, transGroup);
+ setIcon(res.language());
this.lanSelectorPanel = lanSelectorPanel;
+ lanSelectorPanel.addChangeListener(new SimpleCallback() {
+
+ @Override
+ public void onCallback() {
+ setLanguage(lanSelectorPanel.getLanguage());
+ }
+ });
this.toTranslateGrid = toTranslateGrid;
this.translatedGrid = translatedGrid;
this.transRecommend = transRecommend;
+ transRecommend.setSize(String.valueOf(WIDTH), String.valueOf(HEIGHT));
super.setIconCls("k-options-icon");
super.setTitle(i18n.t("Help to translate kune"));
super.getInnerPanel().insert(lanSelectorPanel, 0);
- lanSelectorPanel.setLangTitle(i18n.t(""));
- lanSelectorPanel.setLangSeparator("");
+ lanSelectorPanel.setLangTitle(i18n.t("to"));
+ lanSelectorPanel.setLabelAlign(LabelAlign.RIGHT);
+ lanSelectorPanel.setLangSeparator(":");
}
@Override
@@ -45,8 +58,10 @@
}
@Override
- public void setLanguage(final I18nLanguageDTO currentLanguage) {
- lanSelectorPanel.setLanguage(currentLanguage.getCode());
+ public void setLanguage(final I18nLanguageSimpleDTO language) {
+ lanSelectorPanel.setLanguage(language);
+ toTranslateGrid.setLanguage(language);
+ translatedGrid.setLanguage(language);
}
@Override
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPresenter.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nNewTranslatorPresenter.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -7,6 +7,7 @@
import cc.kune.core.client.rpcservices.I18nServiceAsync;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.dto.I18nLanguageDTO;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.IsWidget;
@@ -23,7 +24,7 @@
void init();
- void setLanguage(I18nLanguageDTO currentLanguage);
+ void setLanguage(I18nLanguageSimpleDTO currentLanguage);
@Override
void show();
@@ -84,12 +85,12 @@
public void show() {
NotifyUser.showProgressLoading();
if (session.isLogged()) {
- view.setLanguage(session.getCurrentLanguage());
+ final I18nLanguageDTO userLang = session.getCurrentLanguage();
+ view.setLanguage(new I18nLanguageSimpleDTO(userLang.getCode(), userLang.getEnglishName()));
view.show();
} else {
NotifyUser.info(i18n.t("Sign in or register to help with the translation"));
}
NotifyUser.hideProgress();
}
-
}
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nToTranslateGridPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nToTranslateGridPanel.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nToTranslateGridPanel.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -1,6 +1,6 @@
package cc.kune.gspace.client.i18n;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.user.client.ui.Composite;
@@ -10,16 +10,21 @@
public class I18nToTranslateGridPanel extends Composite {
+ private final I18nCellList list;
private final Label tabTitle;
@Inject
- public I18nToTranslateGridPanel(final I18nTranslationService i18n) {
+ public I18nToTranslateGridPanel(final I18nTranslationService i18n, final I18nCellList list) {
+ this.list = list;
tabTitle = new Label(i18n.t("Untranslated"));
- initWidget(new Label(TextUtils.IN_DEVELOPMENT));
-
+ initWidget(list);
}
public IsWidget getTabTitle() {
return tabTitle;
}
+
+ public void setLanguage(final I18nLanguageSimpleDTO language) {
+ list.setLanguage(language, true);
+ }
}
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslateRecomendPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslateRecomendPanel.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslateRecomendPanel.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -10,12 +10,13 @@
public class I18nTranslateRecomendPanel extends Composite {
+ private final Frame recommFrame;
private final Label tabTitle;
@Inject
public I18nTranslateRecomendPanel(final I18nTranslationService i18n) {
tabTitle = new Label(i18n.t("Recommendations"));
- final Frame recommFrame = new Frame("i18n-recom.html");
+ recommFrame = new Frame("i18n-recom.html");
recommFrame.setHeight("auto");
recommFrame.setStyleName("k-i18n-recommend");
initWidget(recommFrame);
@@ -24,4 +25,10 @@
public IsWidget getTabTitle() {
return tabTitle;
}
+
+ @Override
+ public void setSize(final String width, final String height) {
+ recommFrame.setWidth(width + "px");
+ recommFrame.setHeight(height + "px");
+ }
}
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatedGridPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatedGridPanel.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatedGridPanel.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -1,6 +1,6 @@
package cc.kune.gspace.client.i18n;
-import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.user.client.ui.Composite;
@@ -10,16 +10,21 @@
public class I18nTranslatedGridPanel extends Composite {
+ private final I18nCellList list;
private final Label tabTitle;
@Inject
- public I18nTranslatedGridPanel(final I18nTranslationService i18n) {
+ public I18nTranslatedGridPanel(final I18nTranslationService i18n, final I18nCellList list) {
+ this.list = list;
tabTitle = new Label(i18n.t("Translated"));
- initWidget(new Label(TextUtils.IN_DEVELOPMENT));
-
+ initWidget(list);
}
public IsWidget getTabTitle() {
return tabTitle;
}
+
+ public void setLanguage(final I18nLanguageSimpleDTO language) {
+ list.setLanguage(language, false);
+ }
}
Added: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslationProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslationProvider.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslationProvider.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -0,0 +1,63 @@
+/*
+ * 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.gspace.client.i18n;
+
+import java.util.List;
+
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.rpcservices.I18nServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
+import cc.kune.core.shared.dto.I18nTranslationDTO;
+
+import com.google.gwt.user.cellview.client.CellList;
+import com.google.gwt.view.client.ListDataProvider;
+import com.google.inject.Inject;
+
+public class I18nTranslationProvider {
+
+ private final ListDataProvider<I18nTranslationDTO> dataProvider = new ListDataProvider<I18nTranslationDTO>();
+ private final I18nServiceAsync i18n;
+ private final Session session;
+
+ @Inject
+ private I18nTranslationProvider(final Session session, final I18nServiceAsync i18n) {
+ this.session = session;
+ this.i18n = i18n;
+ }
+
+ public void addDataDisplay(final CellList<I18nTranslationDTO> displayList) {
+ dataProvider.addDataDisplay(displayList);
+ }
+
+ public void refreshDisplays() {
+ dataProvider.refresh();
+ }
+
+ public void setLanguage(final I18nLanguageSimpleDTO language, final boolean toTranslate) {
+ dataProvider.getList().clear();
+ dataProvider.refresh();
+ i18n.getTranslatedLexicon(session.getUserHash(), language.getCode(), toTranslate,
+ new AsyncCallbackSimple<List<I18nTranslationDTO>>() {
+ @Override
+ public void onSuccess(final List<I18nTranslationDTO> result) {
+ dataProvider.setList(result);
+ dataProvider.refresh();
+ }
+ });
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -16,17 +16,23 @@
package cc.kune.gspace.client.i18n;
import cc.kune.common.client.tooltip.Tooltip;
+import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
+import cc.kune.core.shared.dto.I18nTranslationDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.BlurEvent;
+import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.HasBlurHandlers;
-import com.google.gwt.event.dom.client.HasKeyPressHandlers;
+import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
+import com.google.gwt.user.cellview.client.CellList;
+import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.Widget;
@@ -40,36 +46,130 @@
private static Binder uiBinder = GWT.create(Binder.class);
+ private CellList<I18nTranslationDTO> cellList;
@UiField
- Image copyIcon;
+ PushButton copyIcon;
+ private I18nTranslationProvider dataProvider;
+ private I18nTranslationService i18n;
+ private I18nTranslationDTO item;
@UiField
+ Label keyboardRecomendation;
+ @UiField
+ Label keyboardRecomendationTitle;
+ private final Timer keyboardTimer;
+ @UiField
Label noteForTranslators;
@UiField
+ Label noteForTranslatorsTittle;
+ @UiField
+ Label toLanguageTitle;
+ @UiField
Label toTranslate;
+
@UiField
+ Label toTranslateTitle;
+
+ @UiField
TextArea translation;
public I18nTranslatorForm() {
initWidget(uiBinder.createAndBindUi(this));
- Tooltip.to(copyIcon, "FIXME");
+ keyboardTimer = new Timer() {
+ @Override
+ public void run() {
+ update();
+ }
+ };
}
- public HasBlurHandlers getBlurTraslation() {
- return translation;
+ private void copyTranslation() {
+ translation.setText(toTranslate.getText());
}
- public HasKeyPressHandlers getKeysTraslation() {
- return translation;
+ @UiHandler("translation")
+ void handleBlur(final BlurEvent event) {
+ update();
}
@UiHandler("copyIcon")
void handleClickOnCopyIcon(final ClickEvent e) {
- translation.setText(toTranslate.getText());
+ copyTranslation();
+ translation.setFocus(true);
+ updateWithTimer();
}
- public void setInfo(final String toTranslate, final String noteForTranslators, final String translation) {
- this.toTranslate.setText(toTranslate);
- this.noteForTranslators.setText(noteForTranslators);
- this.translation.setText(translation);
+ @UiHandler("translation")
+ void handleKeyPress(final ChangeEvent event) {
+ updateWithTimer();
}
+
+ @UiHandler("translation")
+ void handleKeyPress(final KeyPressEvent event) {
+ if (event.isControlKeyDown() && event.isAltKeyDown()
+ && event.getNativeEvent().getKeyCode() == com.google.gwt.event.dom.client.KeyCodes.KEY_UP) {
+ cellList.fireEvent(event);
+ }
+ if (event.isControlKeyDown() && event.isAltKeyDown()
+ && event.getNativeEvent().getKeyCode() == com.google.gwt.event.dom.client.KeyCodes.KEY_DOWN) {
+ cellList.fireEvent(event);
+ }
+ if (event.isAltKeyDown() && event.getCharCode() == 'v') {
+ copyTranslation();
+ event.stopPropagation();
+ }
+ updateWithTimer();
+ }
+
+ public void init(final I18nTranslationProvider dataProvider, final I18nTranslationService i18n,
+ final CellList<I18nTranslationDTO> cellList) {
+ this.dataProvider = dataProvider;
+ this.i18n = i18n;
+ this.cellList = cellList;
+ Tooltip.to(copyIcon, i18n.t("Copy the text to translate"));
+ toTranslateTitle.setText(i18n.t("translate this:"));
+ noteForTranslatorsTittle.setText(i18n.t("Notes:"));
+ keyboardRecomendationTitle.setText(i18n.t("Tip:"));
+ keyboardRecomendation.setText(i18n.t("Pulse TAB/Shift-TAB to move from the list to the translation area, and use the cursor to move bettween list elements. Alt-V to copy the original text. The translations are autosaved"));
+ }
+
+ public void setInfo(final I18nTranslationDTO item) {
+ this.item = item;
+ final String[] splitted = splitNT(item.getTrKey());
+ toTranslate.setText(splitted[0]);
+ final boolean hasNT = splitted.length > 1;
+ noteForTranslators.setVisible(hasNT);
+ noteForTranslatorsTittle.setVisible(hasNT);
+ if (hasNT) {
+ noteForTranslators.setText(splitted[1]);
+ }
+ translation.setText(item.getText());
+ }
+
+ public void setToLanguage(final I18nLanguageSimpleDTO language) {
+ toLanguageTitle.setText(i18n.tWithNT("to [%s]:", "For example, 'to Spanish':",
+ language.getEnglishName()));
+ }
+
+ private String[] splitNT(final String textWithNT) {
+ String[] nt;
+ final String[] splitted = textWithNT.split(" \\[%NT ");
+ if (splitted.length > 1) {
+ nt = splitted[1].split("\\]$");
+ splitted[1] = nt[0];
+ }
+ return splitted;
+ }
+
+ private void update() {
+ if (item != null) {
+ item.setText(translation.getText());
+ item.setDirty(true);
+ dataProvider.refreshDisplays();
+ }
+ }
+
+ private void updateWithTimer() {
+ keyboardTimer.cancel();
+ keyboardTimer.schedule(3000);
+ }
}
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.ui.xml 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorForm.ui.xml 2011-09-05 16:05:15 UTC (rev 1509)
@@ -4,7 +4,7 @@
ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateLocales='default'>
- <ui:with field='res' type='cc.kune.core.client.resources.CoreResources' />
+ <ui:with field='res' type='cc.kune.core.client.resources.CoreResources'/>
<ui:style>
.titles {
@@ -20,6 +20,13 @@
.copyicon {
vertical-align: top;
+ height: 10px !important;
+ -webkit-border-bottom-right-radius: 5px;
+ -moz-border-radius-bottomright: 5px;
+ border-bottom-right-radius: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ border-bottom-left-radius: 5px;
}
.row {
@@ -29,26 +36,59 @@
.cell {
display: table-cell;
- margin: 5px;
+ padding: 5px;
}
+
+ .tip {
+ width: 180px;
+ padding: 5px;
+ font-size: 9px;
+ vertical-align: top;
+ }
+
+ .toTranslate {
+ width: 180px;
+ height: 95px;
+ border: 1px dashed #BBBBBB;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ padding: 3px;
+ }
</ui:style>
<g:FlowPanel addStyleNames="{style.table}">
<g:FlowPanel addStyleNames="{style.row}">
- <g:Label ui:field="toTranslateTitle" addStyleNames="{style.titles} {style.cell}"
- text="translate this:" />
- <g:Label ui:field="toTranslate" addStyleNames="{style.cell}" />
+ <g:Label ui:field="toTranslateTitle" addStyleNames="{style.titles} {style.cell}"/>
+ <g:FlowPanel addStyleNames="{style.cell}" styleName="{style.toTranslate}">
+ <g:Label ui:field="toTranslate"/>
+ </g:FlowPanel>
+ <g:Label addStyleNames="{style.row}"/>
</g:FlowPanel>
<g:FlowPanel addStyleNames="{style.row}">
- <g:Label ui:field="toLanguageTitle" addStyleNames="{style.titles} {style.cell}"
- text="to Spanish:" />
- <g:TextArea ui:field='translation' addStyleNames="{style.cell}" />
- <g:Image ui:field="copyIcon" addStyleNames="{style.cell} {style.copyicon}"
- resource='{res.arrowUndo}' />
+ <g:Label ui:field="toLanguageTitle" addStyleNames="{style.titles} {style.cell}"/>
+ <g:TextArea ui:field='translation' addStyleNames="{style.cell}"
+ visibleLines="5"/>
+ <g:FlowPanel styleName="k-button"
+ addStyleNames="{style.cell} {style.copyicon} k-button k-btn k-5corners">
+ <g:PushButton ui:field='copyIcon' enabled='true'>
+ <g:upFace image='{res.arrowUndo}'/>
+ <g:upHoveringFace/>
+ <g:downFace/>
+ <g:downHoveringFace/>
+ </g:PushButton>
+ </g:FlowPanel>
</g:FlowPanel>
<g:FlowPanel addStyleNames="{style.row}">
- <g:Label ui:field="noteForTranslatorsTittle" text="Note:"
- addStyleNames="{style.titles} {style.cell}" />
- <g:Label ui:field="noteForTranslators" addStyleNames="{style.cell}" />
+ <g:Label ui:field="noteForTranslatorsTittle" visible="false"
+ addStyleNames="{style.titles} {style.cell}"/>
+ <g:Label ui:field="noteForTranslators" addStyleNames="{style.cell}"/>
+ <g:Label addStyleNames="{style.row}"/>
</g:FlowPanel>
+ <g:FlowPanel addStyleNames="{style.row}">
+ <g:Label ui:field="keyboardRecomendationTitle"
+ addStyleNames="{style.titles} {style.cell}"/>
+ <g:Label ui:field="keyboardRecomendation" addStyleNames="{style.cell} {style.tip}"/>
+ <g:Label addStyleNames="{style.row}"/>
+ </g:FlowPanel>
</g:FlowPanel>
</ui:UiBinder>
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorPanel.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/LanguageSelectorPanel.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -19,6 +19,7 @@
*/
package cc.kune.gspace.client.i18n;
+import cc.kune.common.client.errors.UIException;
import cc.kune.common.client.utils.SimpleCallback;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
@@ -115,6 +116,16 @@
return list;
}
+ public I18nLanguageSimpleDTO getLanguage() {
+ final String langCode = langCombo.getValue().getCode();
+ for (final I18nLanguageSimpleDTO lang : session.getLanguages()) {
+ if (lang.getCode().equals(langCode)) {
+ return lang;
+ }
+ }
+ throw new UIException("Languege not found");
+ }
+
public String getLanguageCode() {
return langCombo.getValue().getCode();
}
@@ -142,7 +153,7 @@
}
}
- public void setLanguage(final String languageCode) {
- langCombo.setRawValue(languageCode);
+ public void setLanguage(final I18nLanguageSimpleDTO language) {
+ langCombo.setRawValue(language.getEnglishName());
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -292,7 +292,7 @@
}
private void setLanguage(final I18nLanguageDTO language) {
- languageSelectorPanel.setLanguage(language.getCode());
+ // languageSelectorPanel.setLanguage(language.getCode());
setLanguage(language.getCode());
}
Modified: trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java 2011-09-02 12:57:22 UTC (rev 1508)
+++ trunk/src/test/java/cc/kune/core/server/manager/I18nManagerDefaultTest.java 2011-09-05 16:05:15 UTC (rev 1509)
@@ -30,9 +30,6 @@
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;
@@ -41,139 +38,145 @@
import com.google.inject.Inject;
public class I18nManagerDefaultTest extends PersistenceTest {
- @Inject
- I18nTranslationManager translationManager;
- @Inject
- I18nCountryManager countryManager;
- @Inject
- I18nLanguageManager languageManager;
- @Inject
- I18nTranslationService translationService;
+ @Inject
+ I18nCountryManager countryManager;
+ @Inject
+ I18nLanguageManager languageManager;
+ @Inject
+ I18nTranslationManager translationManager;
+ @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());
- }
+ @Test
+ public void byDefaultUseEnglish() {
+ final HashMap<String, String> map = translationManager.getLexicon("en");
+ final HashMap<String, String> map2 = translationManager.getLexicon("af");
+ assertEquals(map.size(), map2.size());
+ }
- @After
- public void close() {
- if (getTransaction().isActive()) {
- getTransaction().rollback();
- }
+ @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();
+ @Test
+ public void getLexiconList() {
+ assertTrue(translationManager.getTranslatedLexicon("en").size() > 0);
+ assertTrue(translationManager.getUntranslatedLexicon("en").size() == 0);
+ }
- String translation = translationManager.getTranslation("es", "Foo foo foo");
- String translation2 = translationManager.getTranslation("aa", "Foo foo foo");
+ @Test
+ public void getNonExistentTranslationInAnyLangReturnsKey() {
+ HashMap<String, String> map = translationManager.getLexicon("en");
+ HashMap<String, String> map2 = translationManager.getLexicon("aa");
+ final int initialSize = map.size();
+ final int initialSize2 = map2.size();
- assertEquals(I18nTranslation.UNTRANSLATED_VALUE, translation);
- assertEquals(I18nTranslation.UNTRANSLATED_VALUE, translation2);
+ final String translation = translationManager.getTranslation("es", "Foo foo foo");
+ final String translation2 = translationManager.getTranslation("aa", "Foo foo foo");
- map = translationManager.getLexicon("en");
- map2 = translationManager.getLexicon("aa");
- int newSize = map.size();
- int newSize2 = map2.size();
+ assertEquals(I18nTranslation.UNTRANSLATED_VALUE, translation);
+ assertEquals(I18nTranslation.UNTRANSLATED_VALUE, translation2);
- assertEquals(initialSize + 1, newSize);
- assertEquals(initialSize2 + 1, newSize2);
- }
+ map = translationManager.getLexicon("en");
+ map2 = translationManager.getLexicon("aa");
+ final int newSize = map.size();
+ final int newSize2 = map2.size();
- @Test
- public void getNonExistentTranslationReturnsDefaultLanguage() {
- String translation = translationManager.getTranslation("af", "January [month]");
- assertEquals("January", translation);
- }
+ assertEquals(initialSize + 1, newSize);
+ assertEquals(initialSize2 + 1, newSize2);
+ }
- @Test
- public void getTranslation() {
- String translation = translationManager.getTranslation("af", "Sunday [weekday]");
- assertEquals("Sondag", translation);
- }
+ @Test
+ public void getNonExistentTranslationReturnsDefaultLanguage() {
+ final String translation = translationManager.getTranslation("af", "January [month]");
+ assertEquals("January", translation);
+ }
- @Test
- public void getTranslationUTF8() {
- String translation = translationManager.getTranslation("el", "January [month]");
- assertEquals("Ιανουάριος", translation);
- }
+ @Test
+ public void getTranslation() {
+ final String translation = translationManager.getTranslation("af", "Sunday [weekday]");
+ assertEquals("Sondag", translation);
+ }
- @Test
- public void getTranslationWithIntArg() {
- String translation = translationManager.getTranslation("en", "[%d] users", 20);
- assertEquals("20 users", translation);
- }
+ @Test
+ public void getTranslationUTF8() {
+ final String translation = translationManager.getTranslation("el", "January [month]");
+ assertEquals("Ιανουάριος", translation);
+ }
- @Test
- public void getTranslationWithIntArgFromService() {
- String translation = translationService.t("[%d] users", 20);
- assertEquals("20 users", translation);
- }
+ @Test
+ public void getTranslationWithIntArg() {
+ final String translation = translationManager.getTranslation("en", "[%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 getTranslationWithIntArgFromService() {
+ final String translation = translationService.t("[%d] users", 20);
+ assertEquals("20 users", translation);
+ }
- @Test
- public void getTranslationWithStringArg() {
- String translation = translationManager.getTranslation("en", "[%s] users", "Twenty");
- assertEquals("Twenty users", translation);
- }
+ @Test
+ public void getTranslationWithIntArgFromWithNtService() {
+ final String translation = translationService.tWithNT("[%d] users", "foo foo", 20);
+ assertEquals("20 users", translation);
+ }
- @Test
- public void getTranslationWithStringArgFromService() {
- String translation = translationService.t("[%s] users", "Twenty");
- assertEquals("Twenty users", translation);
- }
+ @Test
+ public void getTranslationWithStringArg() {
+ final String translation = translationManager.getTranslation("en", "[%s] users", "Twenty");
+ assertEquals("Twenty users", translation);
+ }
- @Test
- public void getTranslationWithStringArgWithNtFromService() {
- String translation = translationService.tWithNT("[%s] users", "foo foo", "Twenty");
- assertEquals("Twenty users", translation);
- }
+ @Test
+ public void getTranslationWithStringArgFromService() {
+ final String translation = translationService.t("[%s] users", "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 getTranslationWithStringArgWithNtFromService() {
+ final String translation = translationService.tWithNT("[%s] users", "foo foo", "Twenty");
+ assertEquals("Twenty users", translation);
+ }
- @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);
- }
+ @Before
+ public void insertData() {
+ openTransaction();
+ final I18nLanguage english = new I18nLanguage(Long.valueOf(1819), "English", "English", "en");
+ final I18nLanguage spanish = new I18nLanguage(Long.valueOf(5889), "Spanish", "Español", "es");
+ final I18nLanguage afrikaans = new I18nLanguage(Long.valueOf(114), "Afrikaans", "Afrikaans", "af");
+ final 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")));
+ final I18nCountry gb = new I18nCountry(Long.valueOf(75), "GB", "GBP", ".", "£%n", "", ".",
+ "United Kingdom", "western", ",");
+ countryManager.persist(gb);
+ }
- @Test
- public void testGetLexicon() {
- HashMap<String, String> map = translationManager.getLexicon("af");
- assertTrue(map.size() > 0);
- }
+ @Test
+ public void setTranslation() {
+ translationManager.setTranslation("en", "Foo foo foo", "Foo foo foo translation");
+ final String translation = translationManager.getTranslation("en", "Foo foo foo");
+ assertEquals("Foo foo foo translation", translation);
+ }
+
+ @Test
+ public void testGetLexicon() {
+ final HashMap<String, String> map = translationManager.getLexicon("af");
+ assertTrue(map.size() > 0);
+ }
}
1
0
05 Sep '11
#123: To think about other possible tools to integrate
--------------------------+------------------
Reporter: vjrj | Owner: vjrj
Type: enhancement | Status: new
Priority: minor | Milestone:
Component: Common | Version:
Resolution: | Keywords:
Blocked By: | Blocking:
--------------------------+------------------
For instance:
- Q&Answer
- FAQ
(fill with more)
--
Ticket URL: <http://kune.ourproject.org/issues/ticket/123>
kune issues <http://kune.ourproject.org/issues/>
1
0
#122: To revise our UI English
-----------------------------------+------------------
Reporter: vjrj | Owner: vjrj
Type: enhancement | Status: new
Priority: major | Milestone:
Component: Internationalization | Version:
Resolution: | Keywords:
Blocked By: | Blocking:
-----------------------------------+------------------
The task consist in test our demo in deep, and when something is not
correct (in English) and/or understandable (by humans) to find the message
string in our code trunk, for instance, via command line:
$ grep "Some string" -ri src/main/java
and to replace it with an appropriate string message.
--
Ticket URL: <http://kune.ourproject.org/issues/ticket/122>
kune issues <http://kune.ourproject.org/issues/>
1
0
[kune issues] #121: Permit the publishing of waves from your Inbox to your groups
by kune issues 04 Sep '11
by kune issues 04 Sep '11
04 Sep '11
#121: Permit the publishing of waves from your Inbox to your groups
--------------------------+------------------
Reporter: vjrj | Owner: vjrj
Type: enhancement | Status: new
Priority: major | Milestone:
Component: User space | Version:
Resolution: | Keywords:
Blocked By: | Blocking:
--------------------------+------------------
With a button, add the possibility to publish contents of your inbox into
your groups.
--
Ticket URL: <http://kune.ourproject.org/issues/ticket/121>
kune issues <http://kune.ourproject.org/issues/>
1
0
Author: vjrj_
Date: 2011-09-02 14:57:22 +0200 (Fri, 02 Sep 2011)
New Revision: 1508
Modified:
trunk/DEV-GUIDE
trunk/INSTALL
Log:
DEV-GUIDE and INSTALL improved by Roberto Arag?\195?\179n robarago aT gmail DoT com, thanks indeed
Modified: trunk/DEV-GUIDE
===================================================================
--- trunk/DEV-GUIDE 2011-09-02 01:01:24 UTC (rev 1507)
+++ trunk/DEV-GUIDE 2011-09-02 12:57:22 UTC (rev 1508)
@@ -60,7 +60,7 @@
===Eclipse configuration===
-Running (in the trunk directory):
+Check out if Kune's code includes Eclipse project definition files (i.e. '.project' & '.classpath') in the trunk directory. If these files do not exist, run (again in the trunk directory):
mvn eclipse:eclipse
Modified: trunk/INSTALL
===================================================================
--- trunk/INSTALL 2011-09-02 01:01:24 UTC (rev 1507)
+++ trunk/INSTALL 2011-09-02 12:57:22 UTC (rev 1508)
@@ -32,19 +32,26 @@
Make two databases in your mysql:
CREATE DATABASE kune_dev;
-GRANT ALL PRIVILEGES ON kune_dev.* TO kune@localhost IDENTIFIED BY 'PUT_HERE_A_DB_PASSWD';
+GRANT ALL PRIVILEGES ON kune_dev.* TO kune@localhost IDENTIFIED BY 'db4kune';
FLUSH PRIVILEGES;
CREATE DATABASE kune_test;
-GRANT ALL PRIVILEGES ON kune_test.* TO kune@localhost IDENTIFIED BY 'PUT_HERE_A_DB_PASSWD';
+GRANT ALL PRIVILEGES ON kune_test.* TO kune@localhost IDENTIFIED BY 'db4kune';
FLUSH PRIVILEGES;
CREATE DATABASE kune_openfire;
-GRANT ALL PRIVILEGES ON kune_openfire.* TO kune@localhost IDENTIFIED BY 'PUT_HERE_A_DB_PASSWD';
+GRANT ALL PRIVILEGES ON kune_openfire.* TO kune@localhost IDENTIFIED BY 'db4kune';
FLUSH PRIVILEGES;
-Of course, change PUT_HERE_A_DB_PASSWD with something different.
+Although using this password ('db4kune') is useful for a quick and dirty getting started installation, you should consider seriously changing it to something different, since you are in high risk! In this case you should change the password acordingly in this other locations:
+ - pom.xml
+ - script/liquibase-migrate.sh
+ - script/liquibase-rollback.sh
+ - src/main/resources/db/liquibase.properties
+ - src/main/resources/META-INF/persistence.xml
+ - src/main/webapp/WEB-INF/publicspace/config/database.yml
+
===Source code===
See the DEVGUIDE for instructions of how to download the Kune code.
@@ -173,8 +180,10 @@
JDBC Driver Class: com.myrootsql.jdbc.Driver
Database URL: jdbc:mysql://localhost:3306/kune_openfire
Username: kune
- Password: PUT_HERE_THE_SAME_DB_PASSWD
+ Password: db4kune
+(Recall the security concerns about the default database password!)
+
Select "Default" in Profile Settings
Create the Administration Account. Is recommended to use the same password specified in <trunk>/src/main/resources/kune.properties
@@ -200,7 +209,7 @@
...
<jdbcProvider>
<driver>com.mysql.jdbc.Driver</driver>
- <connectionString>jdbc:mysql://localhost/kune_dev?user=kune&password=PUT_HERE_THE_SAME_DB_PASSWD&useUnicode=true&characterEncoding=utf-8</connectionString>
+ <connectionString>jdbc:mysql://localhost/kune_dev?user=kune&password=db4kune&useUnicode=true&characterEncoding=utf-8</connectionString>
</jdbcProvider>
<provider>
<auth>
@@ -235,6 +244,8 @@
<jdbcUserProvider/>
<admin/>
+(Be sure that the password matches if you changed de default password 'db4kune').
+
For more details:
http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/db-…
1
0