package jdepend.client.ui.remote;
import jdepend.client.core.command.CommandAdapterMgr;
import jdepend.client.core.config.CommandConfMgr;
import jdepend.client.core.remote.score.ScoreUpload;
import jdepend.client.core.remote.serviceproxy.JDependServiceRemoteProxyFactory;
import jdepend.client.core.remote.userproxy.UserActionGather;
import jdepend.client.core.remote.userproxy.UserCredits;
import jdepend.client.ui.JDependCooper;
import jdepend.client.ui.action.ServiceSettingAction;
import jdepend.client.ui.framework.ExceptionUtil;
import jdepend.client.ui.framework.PanelMgr;
import jdepend.client.ui.remote.action.ClientExitAction;
import jdepend.client.ui.remote.action.LoginAction;
import jdepend.client.ui.remote.action.LogoutAction;
import jdepend.client.ui.remote.analyzer.ClientAnalyzerPanel;
import jdepend.client.ui.start.WorkspaceSetting;
import jdepend.client.ui.start.WorkspaceSettingDialog;
import jdepend.core.serviceproxy.framework.JDependServiceProxyFactoryMgr;
import jdepend.framework.exception.JDependException;
import jdepend.framework.log.BusiLogUtil;
import jdepend.framework.log.DBBusinessLogWriter;
import jdepend.framework.ui.dialog.WelcomeDialog;
import jdepend.framework.ui.panel.StatusField;
import jdepend.framework.util.BundleUtil;
import jdepend.framework.util.JDependUtil;
public class ClientCooper extends JDependCooper {
public ClientCooper(String name) {
super(name);
resourceStrings.put(
"menubar",
BundleUtil.getString(BundleUtil.ClientWin_Menu_File) + "/"
+ BundleUtil.getString(BundleUtil.ClientWin_Menu_Setting) + "/"
+ BundleUtil.getString(BundleUtil.ClientWin_Menu_Service) + "/"
+ BundleUtil.getString(BundleUtil.ClientWin_Menu_Data) + "/"
+ BundleUtil.getString(BundleUtil.ClientWin_Menu_Help));
resourceStrings.put(
BundleUtil.getString(BundleUtil.ClientWin_Menu_Service),
BundleUtil.getString(BundleUtil.ClientWin_Menu_ServiceParamSetting) + "/"
+ BundleUtil.getString(BundleUtil.ClientWin_Menu_Login) + "/"
+ BundleUtil.getString(BundleUtil.ClientWin_Menu_Logout));
accelerators.put(BundleUtil.getString(BundleUtil.ClientWin_Menu_Service), "V");
accelerators.put(BundleUtil.getString(BundleUtil.ClientWin_Menu_ServiceParamSetting), "R");
accelerators.put(BundleUtil.getString(BundleUtil.ClientWin_Menu_Login), "L");
accelerators.put(BundleUtil.getString(BundleUtil.ClientWin_Menu_Logout), "O");
actions.put(BundleUtil.getString(BundleUtil.ClientWin_Menu_Exit), new ClientExitAction(this));
actions.put(BundleUtil.getString(BundleUtil.ClientWin_Menu_ServiceParamSetting), new ServiceSettingAction(this));
actions.put(BundleUtil.getString(BundleUtil.ClientWin_Menu_Login), new LoginAction(this));
actions.put(BundleUtil.getString(BundleUtil.ClientWin_Menu_Logout), new LogoutAction(this));
}
@Override
protected void init(String[] args) {
// 设置业务日志Writer
BusiLogUtil.getInstance().setBusiWriter(new DBBusinessLogWriter());
// 设置ServiceProxyFactory
JDependServiceProxyFactoryMgr.getInstance().setFactory(new JDependServiceRemoteProxyFactory());
// 向命令组配置组件增加监听器
try {
CommandConfMgr.getInstance().addGroupListener(CommandAdapterMgr.getInstance());
} catch (JDependException e) {
e.printStackTrace();
this.showStatusError(e.getMessage());
}
// 设置AnalyzerPanel
PanelMgr.getInstance().setAnalyzerPanel(new ClientAnalyzerPanel(this));
// 向日志组件注册用户积分监听器
BusiLogUtil.getInstance().addLogListener(new UserCredits());
// 向日志组件注册用户行为收集监听器
BusiLogUtil.getInstance().addLogListener(UserActionGather.getInstance());
// 启动分数收集器
String startUploadScore = JDependUtil.getArg(args, "-startUploadScore");
if (Boolean.parseBoolean(startUploadScore)) {
ScoreUpload.getInstance().start();
}
// 设置状态条信息
this.getStatusField().setText(LoginDialog.Logout, StatusField.Right);
}
/**
*
* @param args
* -startUploadScore(true:启动自动上传分数服务;false:不启动)
*/
public static void main(String[] args) {
System.setProperty("sun.zip.encoding", "default");
ClientCooper frame = new ClientCooper(BundleUtil.getString(BundleUtil.ClientWin_Title));
WelcomeDialog welcomeDialog = new WelcomeDialog();
welcomeDialog.setVisible(true);
WorkspaceSetting setting = new WorkspaceSetting();
if (!setting.Inited()) {
WorkspaceSettingDialog d = new WorkspaceSettingDialog(frame, welcomeDialog, setting, args);
d.setModal(true);
d.setVisible(true);
} else {
try {
frame.start(args, setting);
welcomeDialog.dispose();
} catch (Exception e) {
welcomeDialog.showError(ExceptionUtil.getMessage(e));
}
}
}
}