]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/ThreadNLS.java
Internationalization support
[lgpl/argeo-commons.git] / base / runtime / org.argeo.eclipse.ui.rap / src / main / java / org / argeo / eclipse / ui / specific / ThreadNLS.java
diff --git a/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/ThreadNLS.java b/base/runtime/org.argeo.eclipse.ui.rap/src/main/java/org/argeo/eclipse/ui/specific/ThreadNLS.java
new file mode 100644 (file)
index 0000000..3bab4d9
--- /dev/null
@@ -0,0 +1,33 @@
+package org.argeo.eclipse.ui.specific;
+
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.rwt.RWT;
+
+/** NLS attached to a given thread */
+public class ThreadNLS<T extends NLS> extends InheritableThreadLocal<T> {
+       public final static String DEFAULT_BUNDLE_LOCATION = "/properties/plugin";
+
+       private final String bundleLocation;
+
+       private Class<T> type;
+       private Boolean utf8 = false;
+
+       public ThreadNLS(String bundleLocation, Class<T> type, Boolean utf8) {
+               this.bundleLocation = bundleLocation;
+               this.type = type;
+               this.utf8 = utf8;
+       }
+
+       public ThreadNLS(Class<T> type) {
+               this(DEFAULT_BUNDLE_LOCATION, type, false);
+       }
+
+       @SuppressWarnings("unchecked")
+       @Override
+       protected T initialValue() {
+               if (utf8)
+                       return (T) RWT.NLS.getUTF8Encoded(bundleLocation, type);
+               else
+                       return (T) RWT.NLS.getISO8859_1Encoded(bundleLocation, type);
+       }
+}