|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
/** |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
package com.fr.design.mainframe.bbs; |
|
|
|
|
|
|
|
|
@ -18,6 +18,7 @@ import com.fr.general.Inter;
|
|
|
|
|
import com.fr.general.SiteCenter; |
|
|
|
|
import com.fr.general.http.HttpClient; |
|
|
|
|
import com.fr.stable.EncodeConstants; |
|
|
|
|
import com.fr.stable.OperatingSystem; |
|
|
|
|
import com.fr.stable.StableUtils; |
|
|
|
|
import com.fr.stable.StringUtils; |
|
|
|
|
|
|
|
|
@ -34,62 +35,61 @@ import java.util.HashMap;
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @author neil |
|
|
|
|
* |
|
|
|
|
* @date: 2015-3-4-上午9:05:52 |
|
|
|
|
*/ |
|
|
|
|
public class UserInfoLabel extends UILabel{ |
|
|
|
|
|
|
|
|
|
//默认查询消息时间, 30s
|
|
|
|
|
private static final long CHECK_MESSAGE_TIME = 30 * 1000L; |
|
|
|
|
public class UserInfoLabel extends UILabel { |
|
|
|
|
|
|
|
|
|
//默认查询消息时间, 30s
|
|
|
|
|
private static final long CHECK_MESSAGE_TIME = 30 * 1000L; |
|
|
|
|
//默认论坛检测到更新后的弹出延迟时间
|
|
|
|
|
private static final long DELAY_TIME = 2 * 1000L; |
|
|
|
|
private static final String MESSAGE_KEY = "messageCount"; |
|
|
|
|
|
|
|
|
|
private static final int MIN_MESSAGE_COUNT = 1; |
|
|
|
|
private static final int MENU_HEIGHT = 20; |
|
|
|
|
|
|
|
|
|
private static final int DEFAULT_BBS_UID = 0; |
|
|
|
|
|
|
|
|
|
//用户名
|
|
|
|
|
private String userName; |
|
|
|
|
//消息条数
|
|
|
|
|
private int messageCount; |
|
|
|
|
|
|
|
|
|
private UserInfoPane userInfoPane; |
|
|
|
|
private BBSLoginDialog bbsLoginDialog; |
|
|
|
|
|
|
|
|
|
public UserInfoPane getUserInfoPane() { |
|
|
|
|
return userInfoPane; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setUserInfoPane(UserInfoPane userInfoPane) { |
|
|
|
|
this.userInfoPane = userInfoPane; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public BBSLoginDialog getBbsLoginDialog() { |
|
|
|
|
return bbsLoginDialog; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setBbsLoginDialog(BBSLoginDialog bbsLoginDialog) { |
|
|
|
|
this.bbsLoginDialog = bbsLoginDialog; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public UserInfoLabel(UserInfoPane userInfoPane) { |
|
|
|
|
this.userInfoPane = userInfoPane; |
|
|
|
|
|
|
|
|
|
String userName = DesignerEnvManager.getEnvManager().getBBSName(); |
|
|
|
|
this.addMouseListener(userInfoAdapter); |
|
|
|
|
this.setHorizontalAlignment(SwingConstants.CENTER); |
|
|
|
|
this.setText(userName); |
|
|
|
|
|
|
|
|
|
LoginWebBridge loginWebBridge = new LoginWebBridge(); |
|
|
|
|
loginWebBridge.setUserName(userName, UserInfoLabel.this); |
|
|
|
|
|
|
|
|
|
LoginCheckContext.addLoginCheckListener(new LoginCheckListener() { |
|
|
|
|
@Override |
|
|
|
|
public void loginChecked() { |
|
|
|
|
/* |
|
|
|
|
if (bbsLoginDialog == null) { |
|
|
|
|
private static final long DELAY_TIME = 2 * 1000L; |
|
|
|
|
private static final String MESSAGE_KEY = "messageCount"; |
|
|
|
|
|
|
|
|
|
private static final int MIN_MESSAGE_COUNT = 1; |
|
|
|
|
private static final int MENU_HEIGHT = 20; |
|
|
|
|
|
|
|
|
|
private static final int DEFAULT_BBS_UID = 0; |
|
|
|
|
|
|
|
|
|
//用户名
|
|
|
|
|
private String userName; |
|
|
|
|
//消息条数
|
|
|
|
|
private int messageCount; |
|
|
|
|
|
|
|
|
|
private UserInfoPane userInfoPane; |
|
|
|
|
private BBSLoginDialog bbsLoginDialog; |
|
|
|
|
|
|
|
|
|
public UserInfoPane getUserInfoPane() { |
|
|
|
|
return userInfoPane; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setUserInfoPane(UserInfoPane userInfoPane) { |
|
|
|
|
this.userInfoPane = userInfoPane; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public BBSLoginDialog getBbsLoginDialog() { |
|
|
|
|
return bbsLoginDialog; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setBbsLoginDialog(BBSLoginDialog bbsLoginDialog) { |
|
|
|
|
this.bbsLoginDialog = bbsLoginDialog; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public UserInfoLabel(UserInfoPane userInfoPane) { |
|
|
|
|
this.userInfoPane = userInfoPane; |
|
|
|
|
|
|
|
|
|
String userName = DesignerEnvManager.getEnvManager().getBBSName(); |
|
|
|
|
this.addMouseListener(userInfoAdapter); |
|
|
|
|
this.setHorizontalAlignment(SwingConstants.CENTER); |
|
|
|
|
this.setText(userName); |
|
|
|
|
|
|
|
|
|
LoginWebBridge loginWebBridge = new LoginWebBridge(); |
|
|
|
|
loginWebBridge.setUserName(userName, UserInfoLabel.this); |
|
|
|
|
|
|
|
|
|
LoginCheckContext.addLoginCheckListener(new LoginCheckListener() { |
|
|
|
|
@Override |
|
|
|
|
public void loginChecked() { |
|
|
|
|
/* |
|
|
|
|
if (bbsLoginDialog == null) { |
|
|
|
|
bbsLoginDialog = new BBSLoginDialog(DesignerContext.getDesignerFrame(), UserInfoLabel.this); |
|
|
|
|
} |
|
|
|
|
bbsLoginDialog.clearLoginInformation(); |
|
|
|
@ -97,144 +97,144 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
bbsLoginDialog.setModal(true); |
|
|
|
|
bbsLoginDialog.showWindow(); |
|
|
|
|
*/ |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
if (StableUtils.getMajorJavaVersion() == 8) { |
|
|
|
|
PluginWebBridge.getHelper().setUILabel(UserInfoLabel.this); |
|
|
|
|
} |
|
|
|
|
QQLoginWebBridge.getHelper().setUILabelInPlugin(UserInfoLabel.this); |
|
|
|
|
|
|
|
|
|
UserLoginContext.addLoginContextListener(new LoginContextListener() { |
|
|
|
|
@Override |
|
|
|
|
public void showLoginContext() { |
|
|
|
|
LoginPane managerPane = new LoginPane(); |
|
|
|
|
UIDialog qqdlg = new LoginDialog(DesignerContext.getDesignerFrame(),managerPane); |
|
|
|
|
LoginWebBridge.getHelper().setDialogHandle(qqdlg); |
|
|
|
|
LoginWebBridge.getHelper().setUILabel(UserInfoLabel.this); |
|
|
|
|
QQLoginWebBridge.getHelper().setLoginlabel(); |
|
|
|
|
qqdlg.setVisible(true); |
|
|
|
|
clearLoginInformation(); |
|
|
|
|
updateInfoPane(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void clearLoginInformation(){ |
|
|
|
|
DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); |
|
|
|
|
DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); |
|
|
|
|
DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY); |
|
|
|
|
DesignerEnvManager.getEnvManager().setBbsUid(DEFAULT_BBS_UID); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void updateInfoPane(){ |
|
|
|
|
userInfoPane.markUnSignIn(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* showBBSDialog 弹出BBS资讯框 |
|
|
|
|
*/ |
|
|
|
|
public static void showBBSDialog(){ |
|
|
|
|
Thread showBBSThread = new Thread(new Runnable() { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
if(!FRContext.isChineseEnv()){ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
String lastBBSNewsTime = DesignerEnvManager.getEnvManager().getLastShowBBSNewsTime(); |
|
|
|
|
try { |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
if (StableUtils.getMajorJavaVersion() == 8) { |
|
|
|
|
PluginWebBridge.getHelper().setUILabel(UserInfoLabel.this); |
|
|
|
|
} |
|
|
|
|
QQLoginWebBridge.getHelper().setUILabelInPlugin(UserInfoLabel.this); |
|
|
|
|
|
|
|
|
|
UserLoginContext.addLoginContextListener(new LoginContextListener() { |
|
|
|
|
@Override |
|
|
|
|
public void showLoginContext() { |
|
|
|
|
LoginPane managerPane = new LoginPane(); |
|
|
|
|
UIDialog qqdlg = new LoginDialog(DesignerContext.getDesignerFrame(), managerPane); |
|
|
|
|
LoginWebBridge.getHelper().setDialogHandle(qqdlg); |
|
|
|
|
LoginWebBridge.getHelper().setUILabel(UserInfoLabel.this); |
|
|
|
|
QQLoginWebBridge.getHelper().setLoginlabel(); |
|
|
|
|
qqdlg.setVisible(true); |
|
|
|
|
clearLoginInformation(); |
|
|
|
|
updateInfoPane(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void clearLoginInformation() { |
|
|
|
|
DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); |
|
|
|
|
DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); |
|
|
|
|
DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY); |
|
|
|
|
DesignerEnvManager.getEnvManager().setBbsUid(DEFAULT_BBS_UID); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void updateInfoPane() { |
|
|
|
|
userInfoPane.markUnSignIn(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* showBBSDialog 弹出BBS资讯框 |
|
|
|
|
*/ |
|
|
|
|
public static void showBBSDialog() { |
|
|
|
|
Thread showBBSThread = new Thread(new Runnable() { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
// vito:最新mac10.12和javafx弹出框初始化时会有大几率卡死在native方法,这里先屏蔽一下。
|
|
|
|
|
if (!FRContext.isChineseEnv() || OperatingSystem.isMacOS()) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
String lastBBSNewsTime = DesignerEnvManager.getEnvManager().getLastShowBBSNewsTime(); |
|
|
|
|
try { |
|
|
|
|
String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); |
|
|
|
|
if (ComparatorUtils.equals(lastBBSNewsTime, today)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
Thread.sleep(DELAY_TIME); |
|
|
|
|
} catch (InterruptedException e) { |
|
|
|
|
FRContext.getLogger().error(e.getMessage()); |
|
|
|
|
} |
|
|
|
|
Thread.sleep(DELAY_TIME); |
|
|
|
|
} catch (InterruptedException e) { |
|
|
|
|
FRContext.getLogger().error(e.getMessage()); |
|
|
|
|
} |
|
|
|
|
HttpClient hc = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.popup")); |
|
|
|
|
if (!hc.isServerAlive()){ |
|
|
|
|
if (!hc.isServerAlive()) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
String res = hc.getResponseText(); |
|
|
|
|
if (res.indexOf(BBSConstants.UPDATE_KEY) == -1){ |
|
|
|
|
if (res.indexOf(BBSConstants.UPDATE_KEY) == -1) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
try { |
|
|
|
|
BBSDialog bbsLabel = new BBSDialog(DesignerContext.getDesignerFrame()); |
|
|
|
|
bbsLabel.showWindow(SiteCenter.getInstance().acquireUrlByKind("bbs.popup")); |
|
|
|
|
DesignerEnvManager.getEnvManager().setLastShowBBSNewsTime(DateUtils.DATEFORMAT2.format(new Date())); |
|
|
|
|
} catch (Throwable e) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
showBBSThread.start(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void sleep(long millis){ |
|
|
|
|
try { |
|
|
|
|
Thread.sleep(millis); |
|
|
|
|
} catch (InterruptedException e) { |
|
|
|
|
FRContext.getLogger().error(e.getMessage()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public String getUserName() { |
|
|
|
|
return userName; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 重置当前用户名 |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
public void resetUserName(){ |
|
|
|
|
this.userName = StringUtils.EMPTY; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setUserName(String userName) { |
|
|
|
|
if(StringUtils.isEmpty(userName)){ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(StringUtils.isEmpty(this.userName)){ |
|
|
|
|
updateMessageCount(); |
|
|
|
|
} |
|
|
|
|
//往designerenvmanger里写一下
|
|
|
|
|
DesignerEnvManager.getEnvManager().setBBSName(userName); |
|
|
|
|
this.userName = userName; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void updateMessageCount(){ |
|
|
|
|
//启动获取消息更新的线程
|
|
|
|
|
//登陆状态, 根据存起来的用户名密码, 每1分钟发起一次请求, 更新消息条数.
|
|
|
|
|
Thread updateMessageThread = new Thread(new Runnable() { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
try { |
|
|
|
|
BBSDialog bbsLabel = new BBSDialog(DesignerContext.getDesignerFrame()); |
|
|
|
|
bbsLabel.showWindow(SiteCenter.getInstance().acquireUrlByKind("bbs.popup")); |
|
|
|
|
DesignerEnvManager.getEnvManager().setLastShowBBSNewsTime(DateUtils.DATEFORMAT2.format(new Date())); |
|
|
|
|
} catch (Throwable e) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
showBBSThread.start(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void sleep(long millis) { |
|
|
|
|
try { |
|
|
|
|
Thread.sleep(millis); |
|
|
|
|
} catch (InterruptedException e) { |
|
|
|
|
FRContext.getLogger().error(e.getMessage()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public String getUserName() { |
|
|
|
|
return userName; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 重置当前用户名 |
|
|
|
|
*/ |
|
|
|
|
public void resetUserName() { |
|
|
|
|
this.userName = StringUtils.EMPTY; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setUserName(String userName) { |
|
|
|
|
if (StringUtils.isEmpty(userName)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(this.userName)) { |
|
|
|
|
updateMessageCount(); |
|
|
|
|
} |
|
|
|
|
//往designerenvmanger里写一下
|
|
|
|
|
DesignerEnvManager.getEnvManager().setBBSName(userName); |
|
|
|
|
this.userName = userName; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void updateMessageCount() { |
|
|
|
|
//启动获取消息更新的线程
|
|
|
|
|
//登陆状态, 根据存起来的用户名密码, 每1分钟发起一次请求, 更新消息条数.
|
|
|
|
|
Thread updateMessageThread = new Thread(new Runnable() { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
sleep(CHECK_MESSAGE_TIME); |
|
|
|
|
//从env中获取username, 因为如果注销的话, env的里username会被清空.
|
|
|
|
|
while(StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())){ |
|
|
|
|
HashMap<String, String> para = new HashMap<String, String>(); |
|
|
|
|
para.put("username", encode(encode(userName))); |
|
|
|
|
HttpClient getMessage = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.message"), para); |
|
|
|
|
getMessage.asGet(); |
|
|
|
|
if(getMessage.isServerAlive()){ |
|
|
|
|
try { |
|
|
|
|
//从env中获取username, 因为如果注销的话, env的里username会被清空.
|
|
|
|
|
while (StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())) { |
|
|
|
|
HashMap<String, String> para = new HashMap<String, String>(); |
|
|
|
|
para.put("username", encode(encode(userName))); |
|
|
|
|
HttpClient getMessage = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("bbs.message"), para); |
|
|
|
|
getMessage.asGet(); |
|
|
|
|
if (getMessage.isServerAlive()) { |
|
|
|
|
try { |
|
|
|
|
String res = getMessage.getResponseText(); |
|
|
|
|
if (StringUtils.isNotEmpty(res)) { |
|
|
|
|
setMessageCount(Integer.parseInt(res)); |
|
|
|
|
} |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
sleep(CHECK_MESSAGE_TIME); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
updateMessageThread.start(); |
|
|
|
|
} |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
sleep(CHECK_MESSAGE_TIME); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
updateMessageThread.start(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private String encode(String str){ |
|
|
|
|
private String encode(String str) { |
|
|
|
|
try { |
|
|
|
|
return URLEncoder.encode(str, EncodeConstants.ENCODING_UTF_8); |
|
|
|
|
} catch (UnsupportedEncodingException e) { |
|
|
|
@ -242,75 +242,75 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public int getMessageCount() { |
|
|
|
|
return messageCount; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setMessageCount(int messageCount) { |
|
|
|
|
// 当只有一条消息时,阅读之后,消息面板重置为只含用户名的状态
|
|
|
|
|
if(this.messageCount == MIN_MESSAGE_COUNT && messageCount < MIN_MESSAGE_COUNT){ |
|
|
|
|
this.setText(this.userName); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if(this.messageCount == messageCount || messageCount < MIN_MESSAGE_COUNT){ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this.messageCount = messageCount; |
|
|
|
|
StringBuilder sb = new StringBuilder(); |
|
|
|
|
//内容eg: aaa(11)
|
|
|
|
|
sb.append(StringUtils.BLANK).append(this.userName) |
|
|
|
|
.append("(").append(this.messageCount) |
|
|
|
|
.append(")").append(StringUtils.BLANK); |
|
|
|
|
|
|
|
|
|
//更新面板Text
|
|
|
|
|
this.setText(sb.toString()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private MouseAdapter userInfoAdapter = new MouseAdapter() { |
|
|
|
|
|
|
|
|
|
public void mouseEntered(MouseEvent e) { |
|
|
|
|
UserInfoLabel.this.setCursor(new Cursor(Cursor.HAND_CURSOR)); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void mouseClicked(MouseEvent e) { |
|
|
|
|
userName = DesignerEnvManager.getEnvManager().getBBSName(); |
|
|
|
|
if(StringUtils.isNotEmpty(userName)) { |
|
|
|
|
UIPopupMenu menu = new UIPopupMenu(); |
|
|
|
|
menu.setOnlyText(true); |
|
|
|
|
menu.setPopupSize(userInfoPane.getWidth(),userInfoPane.getHeight()*3); |
|
|
|
|
|
|
|
|
|
//私人消息
|
|
|
|
|
UIMenuItem priviteMessage = new UIMenuItem(Inter.getLocText("FR-Designer-BBSLogin_Privite-Message")); |
|
|
|
|
priviteMessage.addMouseListener(new MouseAdapter() { |
|
|
|
|
public void mousePressed(MouseEvent e) { |
|
|
|
|
if(StringUtils.isNotEmpty(userName)){ |
|
|
|
|
try { |
|
|
|
|
String loginUrl = SiteCenter.getInstance().acquireUrlByKind("bbs.default"); |
|
|
|
|
Desktop.getDesktop().browse(new URI(loginUrl)); |
|
|
|
|
} catch (Exception exp) { |
|
|
|
|
FRContext.getLogger().info(exp.getMessage()); |
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
//切换账号
|
|
|
|
|
UIMenuItem closeOther = new UIMenuItem(Inter.getLocText("FR-Designer-BBSLogin_Switch-Account")); |
|
|
|
|
closeOther.addMouseListener(new MouseAdapter() { |
|
|
|
|
public void mousePressed(MouseEvent e) { |
|
|
|
|
UserLoginContext.fireLoginContextListener(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
menu.add(priviteMessage); |
|
|
|
|
menu.add(closeOther); |
|
|
|
|
GUICoreUtils.showPopupMenu(menu, UserInfoLabel.this, 0, MENU_HEIGHT); |
|
|
|
|
} else { |
|
|
|
|
UserLoginContext.fireLoginContextListener(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
public int getMessageCount() { |
|
|
|
|
return messageCount; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setMessageCount(int messageCount) { |
|
|
|
|
// 当只有一条消息时,阅读之后,消息面板重置为只含用户名的状态
|
|
|
|
|
if (this.messageCount == MIN_MESSAGE_COUNT && messageCount < MIN_MESSAGE_COUNT) { |
|
|
|
|
this.setText(this.userName); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (this.messageCount == messageCount || messageCount < MIN_MESSAGE_COUNT) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this.messageCount = messageCount; |
|
|
|
|
StringBuilder sb = new StringBuilder(); |
|
|
|
|
//内容eg: aaa(11)
|
|
|
|
|
sb.append(StringUtils.BLANK).append(this.userName) |
|
|
|
|
.append("(").append(this.messageCount) |
|
|
|
|
.append(")").append(StringUtils.BLANK); |
|
|
|
|
|
|
|
|
|
//更新面板Text
|
|
|
|
|
this.setText(sb.toString()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private MouseAdapter userInfoAdapter = new MouseAdapter() { |
|
|
|
|
|
|
|
|
|
public void mouseEntered(MouseEvent e) { |
|
|
|
|
UserInfoLabel.this.setCursor(new Cursor(Cursor.HAND_CURSOR)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void mouseClicked(MouseEvent e) { |
|
|
|
|
userName = DesignerEnvManager.getEnvManager().getBBSName(); |
|
|
|
|
if (StringUtils.isNotEmpty(userName)) { |
|
|
|
|
UIPopupMenu menu = new UIPopupMenu(); |
|
|
|
|
menu.setOnlyText(true); |
|
|
|
|
menu.setPopupSize(userInfoPane.getWidth(), userInfoPane.getHeight() * 3); |
|
|
|
|
|
|
|
|
|
//私人消息
|
|
|
|
|
UIMenuItem priviteMessage = new UIMenuItem(Inter.getLocText("FR-Designer-BBSLogin_Privite-Message")); |
|
|
|
|
priviteMessage.addMouseListener(new MouseAdapter() { |
|
|
|
|
public void mousePressed(MouseEvent e) { |
|
|
|
|
if (StringUtils.isNotEmpty(userName)) { |
|
|
|
|
try { |
|
|
|
|
String loginUrl = SiteCenter.getInstance().acquireUrlByKind("bbs.default"); |
|
|
|
|
Desktop.getDesktop().browse(new URI(loginUrl)); |
|
|
|
|
} catch (Exception exp) { |
|
|
|
|
FRContext.getLogger().info(exp.getMessage()); |
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
//切换账号
|
|
|
|
|
UIMenuItem closeOther = new UIMenuItem(Inter.getLocText("FR-Designer-BBSLogin_Switch-Account")); |
|
|
|
|
closeOther.addMouseListener(new MouseAdapter() { |
|
|
|
|
public void mousePressed(MouseEvent e) { |
|
|
|
|
UserLoginContext.fireLoginContextListener(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
menu.add(priviteMessage); |
|
|
|
|
menu.add(closeOther); |
|
|
|
|
GUICoreUtils.showPopupMenu(menu, UserInfoLabel.this, 0, MENU_HEIGHT); |
|
|
|
|
} else { |
|
|
|
|
UserLoginContext.fireLoginContextListener(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|