📄 searchshell.java
字号:
fd = new FormData();
fd.left = new FormAttachment(0, 0);
fd.right = new FormAttachment(100, 0);
fd.top = new FormAttachment(group, 5, SWT.BOTTOM);
lblOnline.setLayoutData(fd);
}
// 创建一个面板
private Composite createPanel() {
Composite comp = new Composite(shell, SWT.NONE);
FormData fd = new FormData();
fd.left = new FormAttachment(lblLogo, 15, SWT.RIGHT);
fd.right = new FormAttachment(100, -10);
fd.top = new FormAttachment(0, 10);
fd.bottom = new FormAttachment(lblSeparator, -10, SWT.TOP);
comp.setLayoutData(fd);
comp.setLayout(new FormLayout());
return comp;
}
// 打开shell
public void open() {
// 打开shell
shell.layout();
// set dialog to center of screen
Rectangle dialogRect = shell.getBounds();
Rectangle displayRect = display.getBounds();
shell.setLocation((displayRect.width - dialogRect.width) / 2, (displayRect.height - dialogRect.height) / 2);
main.client.addQQListener(this);
shell.open();
}
/**
* 关闭窗口
*/
public void close() {
shell.close();
}
/* (non-Javadoc)
* @see org.eclipse.swt.events.ShellListener#shellClosed(org.eclipse.swt.events.ShellEvent)
*/
public void shellClosed(ShellEvent e) {
main.searchShell = null;
main.client.removeQQListener(this);
}
/* (non-Javadoc)
* @see edu.tsinghua.lumaqq.qq.events.QQListener#qqEvent(edu.tsinghua.lumaqq.qq.events.QQEvent)
*/
public void qqEvent(QQEvent e) {
switch(e.type) {
case QQEvent.QQ_SEARCH_USER_SUCCESS:
processSearchUserSuccess(e);
break;
case QQEvent.QQ_ADD_FRIEND_NEED_AUTH:
processAddFriendNeedAuth();
break;
case QQEvent.QQ_ADD_FRIEND_AUTH_SEND_SUCCESS:
processAddFriendAuthSendSuccess();
break;
case QQEvent.QQ_SEARCH_USER_END:
processSearchUserEnd();
break;
case QQEvent.QQ_ADD_FRIEND_SUCCESS:
processAddFriendSuccess(e);
break;
case QQEvent.QQ_ADD_FRIEND_FAIL:
processAddFriendFail();
break;
case QQEvent.QQ_ADD_FRIEND_AUTH_SEND_FAIL:
processAddFriendAuthSendFail();
break;
case QQEvent.QQ_SEARCH_CLUSTER_SUCCESS:
processSearchClusterSuccess(e);
break;
case QQEvent.QQ_SEARCH_CLUSTER_FAIL:
processSearchClusterFail(e);
break;
case QQEvent.QQ_JOIN_CLUSTER_NEED_AUTH:
processJoinClusterNeedAuth();
break;
case QQEvent.QQ_JOIN_CLUSTER_AUTH_SEND_SUCCESS:
processJoinClusterAuthSendSuccess();
break;
case QQEvent.QQ_JOIN_CLUSTER_AUTH_SEND_FAIL:
processJoinClusterAuthSendFail();
break;
case QQEvent.QQ_JOIN_CLUSTER_SUCCESS:
processJoinClusterSuccess(e);
break;
case QQEvent.QQ_JOIN_CLUSTER_FAIL:
processJoinClusterFail();
break;
case QQEvent.QQ_OPERATION_TIMEOUT:
if(e.operation == QQ.QQ_CMD_ADD_FRIEND)
processAddFriendFail();
else if(e.operation == QQ.QQ_CMD_ADD_FRIEND_AUTH)
processAddFriendAuthSendFail();
else if(e.operation == QQ.QQ_CMD_CLUSTER_CMD)
processClusterCommandTimeout(e);
break;
}
}
// 初始加入群失败事件
private void processJoinClusterFail() {
main.display.syncExec(
new Runnable() {
public void run() {
waitGroup.setText(LumaQQ.getResourceString("search.group.timeout"));
lblHint.setText(LumaQQ.getResourceString("search.label.timeout"));
btnNext.setEnabled(false);
btnPrevious.setEnabled(true);
}
}
);
}
// 处理加入群成功事件
private void processJoinClusterSuccess(QQEvent e) {
ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
if(clusterId == packet.clusterId) {
main.display.asyncExec(
new Runnable() {
public void run() {
// 停止动画
btnFace.stopAnimate();
// 设置步数
step = 6;
btnNext.setEnabled(true);
btnPrevious.setEnabled(true);
btnNext.setText(LumaQQ.getResourceString("search.button.finished"));
lblHint.setText(LumaQQ.getResourceString("search.label.added"));
waitGroup.setText(LumaQQ.getResourceString("search.group.added"));
main.addCluster(clusterId, false);
}
}
);
}
}
// 处理认证消息发送失败事件
private void processJoinClusterAuthSendFail() {
main.display.syncExec(
new Runnable() {
public void run() {
waitGroup.setText(LumaQQ.getResourceString("search.group.timeout"));
lblHint.setText(LumaQQ.getResourceString("search.label.auth.timeout"));
btnSend.setEnabled(true);
btnNext.setEnabled(false);
btnPrevious.setEnabled(true);
}
}
);
}
// 处理认证消息发送成功事件
private void processJoinClusterAuthSendSuccess() {
main.display.syncExec(
new Runnable() {
public void run() {
// 停止动画
btnFace.stopAnimate();
// 设置步数
step = 6;
// 设置控件状态
lblHint.setText(LumaQQ.getResourceString("search.label.submited"));
waitGroup.setText(LumaQQ.getResourceString("search.group.sent"));
textAuth.setVisible(false);
btnSend.setVisible(false);
btnPrevious.setEnabled(true);
btnNext.setEnabled(true);
btnNext.setText(LumaQQ.getResourceString("search.button.finished"));
}
}
);
}
// 处理加入群需要认证事件
private void processJoinClusterNeedAuth() {
main.display.syncExec(
new Runnable() {
public void run() {
// 停止动画
btnFace.stopAnimate();
// 设置步数
step = 5;
// 显示出文本框和按钮,设置标签文字
lblHint.setText(LumaQQ.getResourceString("search.label.need.auth"));
waitGroup.setText(LumaQQ.getResourceString("search.group.auth"));
textAuth.setVisible(true);
btnSend.setVisible(true);
btnPrevious.setEnabled(true);
}
}
);
}
// 处理群命令超时事件
private void processClusterCommandTimeout(QQEvent e) {
final ClusterCommandPacket packet = (ClusterCommandPacket)e.getSource();
switch(packet.getSubCommand()) {
case QQ.QQ_CLUSTER_CMD_SEARCH_CLUSTER:
processSearchClusterTimeout(e);
break;
case QQ.QQ_CLUSTER_CMD_JOIN_CLUSTER_AUTH:
processJoinClusterAuthSendFail();
break;
case QQ.QQ_CLUSTER_CMD_JOIN_CLUSTER:
processJoinClusterFail();
break;
}
}
// 处理搜索群命令超时事件
private void processSearchClusterTimeout(QQEvent e) {
main.display.asyncExec(
new Runnable() {
public void run() {
lblClusterHint.setText(LumaQQ.getResourceString("search.label.retry"));
btnNext.setEnabled(false);
btnPrevious.setEnabled(true);
MessageBox box = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
box.setText(LumaQQ.getResourceString("message.box.common.fail.title"));
box.setMessage(LumaQQ.getResourceString("message.box.common.timeout"));
box.open();
}
}
);
}
// 处理搜索群失败事件
private void processSearchClusterFail(QQEvent e) {
final ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
main.display.asyncExec(
new Runnable() {
public void run() {
lblClusterHint.setText(LumaQQ.getResourceString("search.label.retry"));
btnNext.setEnabled(false);
btnPrevious.setEnabled(true);
MessageBox box = new MessageBox(shell, SWT.ICON_ERROR | SWT.OK);
box.setText(LumaQQ.getResourceString("message.box.common.fail.title"));
box.setMessage(LumaQQ.getResourceString("message.box.search.cluster.fail"));
box.open();
}
}
);
}
// 处理搜索群成功事件
private void processSearchClusterSuccess(QQEvent e) {
final ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
main.display.syncExec(
new Runnable() {
public void run() {
lblClusterHint.setText(LumaQQ.getResourceString("search.label.select.cluster"));
parseClusterList(packet.clusters);
btnNext.setEnabled(true);
btnPrevious.setEnabled(true);
}
}
);
}
// 处理认证信息发送失败事件
private void processAddFriendAuthSendFail() {
main.display.syncExec(
new Runnable() {
public void run() {
waitGroup.setText(LumaQQ.getResourceString("search.group.timeout"));
lblHint.setText(LumaQQ.getResourceString("search.label.auth.timeout"));
btnSend.setEnabled(true);
btnNext.setEnabled(false);
btnPrevious.setEnabled(true);
}
}
);
}
// 处理添加好友失败事件
private void processAddFriendFail() {
main.display.syncExec(
new Runnable() {
public void run() {
waitGroup.setText(LumaQQ.getResourceString("search.group.timeout"));
lblHint.setText(LumaQQ.getResourceString("search.label.timeout"));
btnNext.setEnabled(false);
btnPrevious.setEnabled(true);
}
}
);
}
// 处理添加好友成功事件
private void processAddFriendSuccess(QQEvent e) {
AddFriendPacket packet = (AddFriendPacket)e.getSource();
if(qqNum == packet.getTo()) {
main.display.asyncExec(
new Runnable() {
public void run() {
// 停止动画
btnFace.stopAnimate();
// 设置步数
if(mode == ALL)
step = 5;
else if(mode == CUSTOM)
step = 6;
btnNext.setEnabled(true);
btnPrevious.setEnabled(true);
btnNext.setText(LumaQQ.getResourceString("search.button.finished"));
lblHint.setText(LumaQQ.getResourceString("search.label.added"));
waitGroup.setText(LumaQQ.getResourceString("search.group.added"));
main.addFriendViewPart(qqNum);
}
}
);
}
}
// 处理搜索用户结束事件
private void processSearchUserEnd() {
main.display.syncExec(
new Runnable() {
public void run() {
setControlState();
lblPage.setText(LumaQQ.getResourceString("search.label.last.page"));
parseUserList((List)pages.get(new Integer(page)));
}
}
);
}
// 处理验证发送成功事件
private void processAddFriendAuthSendSuccess() {
main.display.syncExec(
new Runnable() {
public void run() {
// 停止动画
btnFace.stopAnimate();
// 设置步数
if(mode == ALL)
step = 5;
else if(mode == CUSTOM)
step = 6;
// 设置控件状态
lblHint.setText(LumaQQ.getResourceString("search.label.submited"));
waitGroup.setText(LumaQQ.getResourceString("search.group.sent"));
textAuth.setVisible(false);
btnSend.setVisible(false);
btnPrevious.setEnabled(true);
btnNext.setEnabled(true);
btnNext.setText(LumaQQ.getResourceString("search.button.finished"));
}
}
);
}
// 处理添加好友需要验证事件
private void processAddFriendNeedAuth() {
main.display.syncExec(
new Runnable() {
public void run() {
// 停止动画
btnFace.stopAnimate();
// 设置步数
if(mode == ALL)
step = 4;
else if(mode == CUSTOM)
step = 5;
// 显示出文本框和按钮,设置标签文字
lblHint.setText(LumaQQ.getResourceString("search.label.need.auth"));
waitGroup.setText(LumaQQ.getResourceString("search.group.auth"));
textAuth.setVisible(true);
btnSend.setVisible(true);
btnPrevious.setEnabled(true);
}
}
);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -