|
|
|
@ -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,10 +35,9 @@ import java.util.HashMap;
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @author neil |
|
|
|
|
* |
|
|
|
|
* @date: 2015-3-4-上午9:05:52 |
|
|
|
|
*/ |
|
|
|
|
public class UserInfoLabel extends UILabel{ |
|
|
|
|
public class UserInfoLabel extends UILabel { |
|
|
|
|
|
|
|
|
|
//默认查询消息时间, 30s
|
|
|
|
|
private static final long CHECK_MESSAGE_TIME = 30 * 1000L; |
|
|
|
@ -109,7 +109,7 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
@Override |
|
|
|
|
public void showLoginContext() { |
|
|
|
|
LoginPane managerPane = new LoginPane(); |
|
|
|
|
UIDialog qqdlg = new LoginDialog(DesignerContext.getDesignerFrame(),managerPane); |
|
|
|
|
UIDialog qqdlg = new LoginDialog(DesignerContext.getDesignerFrame(), managerPane); |
|
|
|
|
LoginWebBridge.getHelper().setDialogHandle(qqdlg); |
|
|
|
|
LoginWebBridge.getHelper().setUILabel(UserInfoLabel.this); |
|
|
|
|
QQLoginWebBridge.getHelper().setLoginlabel(); |
|
|
|
@ -120,26 +120,27 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void clearLoginInformation(){ |
|
|
|
|
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(){ |
|
|
|
|
private void updateInfoPane() { |
|
|
|
|
userInfoPane.markUnSignIn(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* showBBSDialog 弹出BBS资讯框 |
|
|
|
|
*/ |
|
|
|
|
public static void showBBSDialog(){ |
|
|
|
|
public static void showBBSDialog() { |
|
|
|
|
Thread showBBSThread = new Thread(new Runnable() { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
if(!FRContext.isChineseEnv()){ |
|
|
|
|
// vito:最新mac10.12和javafx弹出框初始化时会有大几率卡死在native方法,这里先屏蔽一下。
|
|
|
|
|
if (!FRContext.isChineseEnv() || OperatingSystem.isMacOS()) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
String lastBBSNewsTime = DesignerEnvManager.getEnvManager().getLastShowBBSNewsTime(); |
|
|
|
@ -153,11 +154,11 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
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 { |
|
|
|
@ -171,7 +172,7 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
showBBSThread.start(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void sleep(long millis){ |
|
|
|
|
private void sleep(long millis) { |
|
|
|
|
try { |
|
|
|
|
Thread.sleep(millis); |
|
|
|
|
} catch (InterruptedException e) { |
|
|
|
@ -185,18 +186,17 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 重置当前用户名 |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
public void resetUserName(){ |
|
|
|
|
public void resetUserName() { |
|
|
|
|
this.userName = StringUtils.EMPTY; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void setUserName(String userName) { |
|
|
|
|
if(StringUtils.isEmpty(userName)){ |
|
|
|
|
if (StringUtils.isEmpty(userName)) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(StringUtils.isEmpty(this.userName)){ |
|
|
|
|
if (StringUtils.isEmpty(this.userName)) { |
|
|
|
|
updateMessageCount(); |
|
|
|
|
} |
|
|
|
|
//往designerenvmanger里写一下
|
|
|
|
@ -204,7 +204,7 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
this.userName = userName; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void updateMessageCount(){ |
|
|
|
|
private void updateMessageCount() { |
|
|
|
|
//启动获取消息更新的线程
|
|
|
|
|
//登陆状态, 根据存起来的用户名密码, 每1分钟发起一次请求, 更新消息条数.
|
|
|
|
|
Thread updateMessageThread = new Thread(new Runnable() { |
|
|
|
@ -213,12 +213,12 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
public void run() { |
|
|
|
|
sleep(CHECK_MESSAGE_TIME); |
|
|
|
|
//从env中获取username, 因为如果注销的话, env的里username会被清空.
|
|
|
|
|
while(StringUtils.isNotEmpty(DesignerEnvManager.getEnvManager().getBBSName())){ |
|
|
|
|
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()){ |
|
|
|
|
if (getMessage.isServerAlive()) { |
|
|
|
|
try { |
|
|
|
|
String res = getMessage.getResponseText(); |
|
|
|
|
if (StringUtils.isNotEmpty(res)) { |
|
|
|
@ -234,7 +234,7 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
updateMessageThread.start(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private String encode(String str){ |
|
|
|
|
private String encode(String str) { |
|
|
|
|
try { |
|
|
|
|
return URLEncoder.encode(str, EncodeConstants.ENCODING_UTF_8); |
|
|
|
|
} catch (UnsupportedEncodingException e) { |
|
|
|
@ -248,11 +248,11 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
|
|
|
|
|
public void setMessageCount(int messageCount) { |
|
|
|
|
// 当只有一条消息时,阅读之后,消息面板重置为只含用户名的状态
|
|
|
|
|
if(this.messageCount == MIN_MESSAGE_COUNT && messageCount < MIN_MESSAGE_COUNT){ |
|
|
|
|
if (this.messageCount == MIN_MESSAGE_COUNT && messageCount < MIN_MESSAGE_COUNT) { |
|
|
|
|
this.setText(this.userName); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if(this.messageCount == messageCount || messageCount < MIN_MESSAGE_COUNT){ |
|
|
|
|
if (this.messageCount == messageCount || messageCount < MIN_MESSAGE_COUNT) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -271,21 +271,21 @@ public class UserInfoLabel extends UILabel{
|
|
|
|
|
|
|
|
|
|
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)) { |
|
|
|
|
if (StringUtils.isNotEmpty(userName)) { |
|
|
|
|
UIPopupMenu menu = new UIPopupMenu(); |
|
|
|
|
menu.setOnlyText(true); |
|
|
|
|
menu.setPopupSize(userInfoPane.getWidth(),userInfoPane.getHeight()*3); |
|
|
|
|
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)){ |
|
|
|
|
if (StringUtils.isNotEmpty(userName)) { |
|
|
|
|
try { |
|
|
|
|
String loginUrl = SiteCenter.getInstance().acquireUrlByKind("bbs.default"); |
|
|
|
|
Desktop.getDesktop().browse(new URI(loginUrl)); |
|
|
|
|