KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > language > LanguageWatcher


1 /*
2  * Created on Jan 5, 2005
3  * by alex
4  *
5  */

6 package com.nightlabs.ipanema.language;
7
8 import java.util.HashMap JavaDoc;
9 import java.util.Locale JavaDoc;
10 import java.util.Map JavaDoc;
11
12 import org.apache.log4j.Logger;
13 import org.eclipse.jface.action.IAction;
14
15 import com.nightlabs.config.Config;
16 import com.nightlabs.config.ConfigException;
17 import com.nightlabs.ipanema.base.login.Login;
18 import com.nightlabs.ipanema.base.login.LoginStateListener;
19 import com.nightlabs.ipanema.language.LanguageManager;
20 import com.nightlabs.ipanema.language.LanguageManagerUtil;
21 import com.nightlabs.l10n.GlobalL10nSettings;
22
23 /**
24  * A shared instance of LanguageWatcher is used to create
25  * the clients language on the server if not existent
26  * and to ask the user to restart the client if it was
27  * not started with his lanugage.
28  *
29  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
30  */

31 public class LanguageWatcher implements LoginStateListener {
32     
33     public static final Logger LOGGER = Logger.getLogger(LanguageWatcher.class);
34     
35     private Map JavaDoc languageChecks = new HashMap JavaDoc();
36     private static LanguageWatcher sharedInstance;
37     
38     private boolean isLanguageChecked(String JavaDoc userName) {
39         if (!languageChecks.containsKey(userName))
40             return false;
41         Boolean JavaDoc checked = (Boolean JavaDoc) languageChecks.get(userName);
42         return checked.booleanValue();
43     }
44     
45     private void setLanguageChecked(String JavaDoc userName, boolean checked) {
46         languageChecks.put(userName,new Boolean JavaDoc(checked));
47     }
48
49     /**
50      * @see com.nightlabs.ipanema.base.login.LoginStateListener#loginStateChanged(int, org.eclipse.jface.action.IAction)
51      */

52     public void loginStateChanged(int loginState, IAction action) {
53         switch (loginState) {
54             case Login.LOGINSTATE_LOGGED_IN:
55                 LOGGER.debug("loginStateChanged(..): registering language");
56                 String JavaDoc userName = Login.sharedInstance().getLoginContext().getUsername();
57                 if (!isLanguageChecked(userName)) {
58                     createLanguage();
59                     checkUserLanguage();
60                     setLanguageChecked(userName,true);
61                 }
62                 break;
63             default:
64                 break;
65         }
66     }
67     
68     /**
69      * Create the client language on the server.
70      */

71     protected void createLanguage() {
72         LanguageManager languageManager = null;
73         try {
74             languageManager = LanguageManagerUtil.getHome(
75                     Login.getLogin().getInitialContextProperties()
76             ).create();
77             languageManager.createLanguage(Locale.getDefault().getLanguage(),Locale.getDefault().getDisplayLanguage());
78         } catch (Exception JavaDoc e) {
79             LOGGER.error("Failed creating client language: ",e);
80         }
81     }
82     
83     /**
84      * Checks if Locale has the users prefered language and
85      * asks to restart if not
86      */

87     protected void checkUserLanguage() {
88         // TODO: implement language check and restart dialog
89
}
90     
91     
92     public static void showRestartDialog() {
93         
94     }
95     
96     public static LanguageWatcher getSharedInstance() {
97         if (sharedInstance == null) {
98             sharedInstance = new LanguageWatcher();
99         }
100         return sharedInstance;
101     }
102     
103 // /**
104
// * Registeres the shared intance as LoginStateListener
105
// */
106
// public static void registerAsLoginStateListener() {
107
// try {
108
// Login.getLogin(false).addLoginStateListener(getSharedInstance());
109
// } catch (LoginException e) {
110
// throw
111
// }
112
// }
113

114     static {
115         try {
116             Config.sharedInstance().createConfigModule(GlobalL10nSettings.class);
117         } catch (ConfigException e) {
118             LOGGER.error("Error creating GlobalL10nSettings Cf-Mod.",e);
119         }
120     }
121
122 }
123
Popular Tags