Workbench: added language support

git-svn-id: https://svn.apache.org/repos/asf/chemistry/opencmis/trunk@1758765 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/SessionParameterMap.java b/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/SessionParameterMap.java
index 1defe76..5da53a9 100644
--- a/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/SessionParameterMap.java
+++ b/chemistry-opencmis-client/chemistry-opencmis-client-api/src/main/java/org/apache/chemistry/opencmis/client/SessionParameterMap.java
@@ -600,6 +600,13 @@
     }
 
     /**
+     * Sets the JVM default locale of the session.
+     */
+    public void setDefaultLocale() {
+        setLocale(Locale.getDefault());
+    }
+
+    /**
      * Sets whether cookies should be managed or not.
      * 
      * @param cookies
diff --git a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/AbstractSpringLoginTab.java b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/AbstractSpringLoginTab.java
index 80d8415..ebf9dc4 100644
--- a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/AbstractSpringLoginTab.java
+++ b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/AbstractSpringLoginTab.java
@@ -18,7 +18,6 @@
  */
 package org.apache.chemistry.opencmis.workbench;
 
-import java.awt.Color;
 import java.awt.Component;
 import java.awt.Container;
 import java.awt.Dimension;
diff --git a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/BasicLoginTab.java b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/BasicLoginTab.java
index 4999809..5c0d777 100644
--- a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/BasicLoginTab.java
+++ b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/BasicLoginTab.java
@@ -53,6 +53,7 @@
     public static final String SYSPROP_USER = ClientSession.WORKBENCH_PREFIX + "user";
     public static final String SYSPROP_PASSWORD = ClientSession.WORKBENCH_PREFIX + "password";
     public static final String SYSPROP_CSRF_HEADER = ClientSession.WORKBENCH_PREFIX + "csrfheader";
+    public static final String SYSPROP_LANGUAGE = ClientSession.WORKBENCH_PREFIX + "language";
 
     private JTextField urlField;
     private JRadioButton bindingAtomButton;
@@ -71,6 +72,7 @@
     private JRadioButton cookiesOnButton;
     private JRadioButton cookiesOffButton;
     private JTextField csrfHeaderField;
+    private JTextField languageField;
     private JFormattedTextField connectTimeoutField;
     private JFormattedTextField readTimeoutField;
 
@@ -106,6 +108,10 @@
                 + "If the server needs a CSRF header, enter the name of the header, otherwise leave this field blank.");
         csrfHeaderField.setText(System.getProperty(SYSPROP_CSRF_HEADER, ""));
 
+        languageField = createTextField(this, "Language:", "<html>Enter a <b>ISO 639 language</b> code.<br>"
+                + "The language code is sent to the server but it may not be used by the server.");
+        languageField.setText(System.getProperty(SYSPROP_LANGUAGE, Locale.getDefault().getLanguage()));
+
         connectTimeoutField = createIntegerField(this, "Connect timeout (secs):",
                 "<html>Enter the <b>connect timeout</b> in seconds.<br>This is the time the client waits to connect to the server.");
         try {
@@ -122,7 +128,7 @@
             readTimeoutField.setValue(600);
         }
 
-        makeCompactGrid(11);
+        makeCompactGrid(12);
     }
 
     private void createBindingButtons(Container pane) {
@@ -277,6 +283,21 @@
             authentication = ClientSession.Authentication.OAUTH_BEARER;
         }
 
+        Locale locale = null;
+        String language = languageField.getText().trim();
+        if (language.length() > 1 && language.charAt(0) != '-' && language.charAt(0) != '_') {
+            int sep1 = language.indexOf('-');
+            int sep2 = language.indexOf('_');
+
+            if (sep1 > 0) {
+                locale = new Locale(language.substring(0, sep1), language.substring(sep1 + 1));
+            } else if (sep2 > 0) {
+                locale = new Locale(language.substring(0, sep2), language.substring(sep2 + 1));
+            } else {
+                locale = new Locale(language);
+            }
+        }
+
         long connectTimeout = 0;
         if (connectTimeoutField.getValue() instanceof Number) {
             connectTimeout = ((Number) connectTimeoutField.getValue()).longValue() * 1000;
@@ -297,7 +318,7 @@
 
         return ClientSession.createSessionParameters(url, binding, username, password, authentication,
                 compressionOnButton.isSelected(), clientCompressionOnButton.isSelected(), cookiesOnButton.isSelected(),
-                csrfHeaderField.getText(), connectTimeout, readTimeout);
+                csrfHeaderField.getText(), locale, connectTimeout, readTimeout);
     }
 
     @Override
diff --git a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java
index fb5617a..3d89add 100644
--- a/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java
+++ b/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/model/ClientSession.java
@@ -126,7 +126,7 @@
 
     public static SessionParameterMap createSessionParameters(String url, BindingType binding, String username,
             String password, Authentication authentication, boolean compression, boolean clientCompression,
-            boolean cookies, String csrfHeader, long connectionTimeout, long readTimeout) {
+            boolean cookies, String csrfHeader, Locale locale, long connectionTimeout, long readTimeout) {
         SessionParameterMap parameters = new SessionParameterMap();
 
         switch (binding) {
@@ -171,6 +171,10 @@
             }
         }
 
+        if (locale != null) {
+            parameters.setLocale(locale);
+        }
+
         if (connectionTimeout > 0) {
             parameters.setConnectionTimeout(connectionTimeout);
         } else {