📄 createclustershell.java
字号:
*/
protected void navigatePrevious() {
/*
* 创建群的基本流程
* 1. 选择群类型
* 2. 填写群基本信息
* 3. 选择群成员
* 4. 提交请求,等待服务器回应
* 5. 完成
*/
if(step == 2) {
step--;
prevPanel.setVisible(false);
first.setVisible(true);
prevPanel = first;
btnPrevious.setEnabled(false);
} else if(step == 3) {
step--;
prevPanel.setVisible(false);
basic.setVisible(true);
prevPanel = basic;
fss.setVisible(false);
} else if(step == 4) {
step--;
prevPanel.setVisible(false);
member.setVisible(true);
prevPanel = member;
fss.setVisible(true);
btnNext.setEnabled(true);
}
}
/**
* 当用户按了下一步按钮时调用此方法
*/
protected void navigateNext() {
/*
* 创建群的基本流程
* 1. 选择群类型
* 2. 填写群基本信息
* 3. 选择群成员
* 4. 提交请求,等待服务器回应
* 5. 完成
*/
if(step == 1) {
step++;
prevPanel.setVisible(false);
basic.setVisible(true);
prevPanel = basic;
btnPrevious.setEnabled(true);
textName.setFocus();
if(type == QQ.QQ_CLUSTER_TYPE_TEMPORARY) {
authGroup.setEnabled(false);
radioNoAuth.setEnabled(false);
radioNeedAuth.setEnabled(false);
radioNoAdd.setEnabled(false);
} else {
authGroup.setEnabled(true);
radioNoAuth.setEnabled(true);
radioNeedAuth.setEnabled(true);
radioNoAdd.setEnabled(true);
}
} else if(step == 2) {
// 检查前提条件,即必须要有群的名称
if("".equals(textName.getText())) {
MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
box.setText(LumaQQ.getResourceString("message.box.common.warning.title"));
box.setMessage(LumaQQ.getResourceString("message.box.please.input.cluster.name"));
box.open();
return;
}
// 前提满足才执行动作
step++;
prevPanel.setVisible(false);
member.setVisible(true);
prevPanel = member;
fss.setVisible(true);
} else if(step == 3) {
// 检查前提条件是否成立,即必须要选择一个成员
if(table.getItemCount() == 0) {
MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
box.setText(LumaQQ.getResourceString("message.box.common.warning.title"));
box.setMessage(LumaQQ.getResourceString("message.box.please.select.cluster.member"));
box.open();
return;
}
// 前提满足才执行动作
step++;
prevPanel.setVisible(false);
create.setVisible(true);
prevPanel = create;
fss.setVisible(false);
btnNext.setEnabled(false);
btnPrevious.setEnabled(false);
lblName.setText(textName.getText());
lblHint.setText(LumaQQ.getResourceString("create.cluster.create.processing"));
btnFace.startAnimate(frames);
createCluster();
} else if(step == 5) {
close();
}
}
/**
* 发送创建群的请求
*/
private void createCluster() {
// 得到成员列表
int count = table.getItemCount();
int[] members = new int[count];
for(int i = 0; i < count; i++) {
FriendModel f = (FriendModel)table.getItem(i).getData();
members[i] = f.getQQ();
}
// 判断群类型,调用不同的方法
if(type == QQ.QQ_CLUSTER_TYPE_TEMPORARY)
main.client.createTemporaryCluster(textName.getText(), textNotice.getText(), textDescription.getText(), members, comboCategory.getSelectionIndex());
else
main.client.createPermanentCluster(textName.getText(), textNotice.getText(), textDescription.getText(), members, comboCategory.getSelectionIndex(), authType);
}
/**
* 关闭窗口
*/
protected void close() {
shell.close();
}
// 打开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();
}
/* (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_CREATE_CLUSTER_SUCCESS:
processClusterCreateSuccess(e);
break;
case QQEvent.QQ_CREATE_CLUSTER_FAIL:
processClusterCreateFail(e);
break;
case QQEvent.QQ_OPERATION_TIMEOUT:
if(e.operation == QQ.QQ_CMD_CLUSTER_CMD)
processClusterCommandTimeout(e);
break;
}
}
// 处理群操作超时事件
private void processClusterCommandTimeout(QQEvent e) {
ClusterCommandPacket packet = (ClusterCommandPacket)e.getSource();
if(packet.getSubCommand() == QQ.QQ_CLUSTER_CMD_CREATE_CLUSTER) {
main.display.syncExec(
new Runnable() {
public void run() {
btnFace.stopAnimate();
lblHint.setText(LumaQQ.getResourceString("create.cluster.create.timeout"));
btnPrevious.setEnabled(true);
}
}
);
}
}
// 处理创建群失败事件
private void processClusterCreateFail(QQEvent e) {
final ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
main.display.syncExec(
new Runnable() {
public void run() {
btnFace.stopAnimate();
lblHint.setText(LumaQQ.getResourceString("create.cluster.create.fail", new Object[] { packet.errorMessage }));
btnPrevious.setEnabled(true);
}
}
);
}
// 处理创建群成功事件
private void processClusterCreateSuccess(QQEvent e) {
final ClusterCommandReplyPacket packet = (ClusterCommandReplyPacket)e.getSource();
main.display.syncExec(
new Runnable() {
public void run() {
btnFace.stopAnimate();
lblHint.setText(LumaQQ.getResourceString("create.cluster.create.success", new Object[] { String.valueOf(packet.externalId) }));
btnNext.setText(LumaQQ.getResourceString("create.cluster.button.finished"));
btnNext.setEnabled(true);
step = 5;
}
}
);
}
/* (non-Javadoc)
* @see org.eclipse.swt.events.ShellListener#shellClosed(org.eclipse.swt.events.ShellEvent)
*/
public void shellClosed(ShellEvent e) {
main.createClusterShell = null;
main.client.removeQQListener(this);
}
/**
* 在表中添加一个成员
* @param f
*/
private void addMember(FriendModel f) {
if(f == null) return;
TableItem ti = new TableItem(table, SWT.NONE);
ti.setText(0, ((Integer)f.getProperty("qq")).toString());
ti.setText(1, (String)f.getProperty("name"));
if(f.hasProperty("contact")) {
ContactInfo info = (ContactInfo)f.getProperty("contact");
ti.setText(2, info.infos[info.province]);
}
ti.setImage(icons.getSmallFace(f.getFaceId()));
// 把这个model也做为TableItem的data保存
ti.setData(f);
}
/**
* 删除一个member
* @param f
*/
private void removeMember(FriendModel f) {
if(f == null) return;
int size = table.getItemCount();
for(int i = 0; i < size; i++) {
TableItem ti = table.getItem(i);
if(ti.getData() == f) {
table.remove(i);
break;
}
}
}
/* (non-Javadoc)
* @see edu.tsinghua.lumaqq.events.FriendSelectionListener#friendSelected(edu.tsinghua.lumaqq.events.FriendSelectionEvent)
*/
public void friendSelected(FriendSelectionEvent e) {
List list = (List)e.getSource();
Iterator iter = list.iterator();
while(iter.hasNext())
addMember((FriendModel)iter.next());
}
/* (non-Javadoc)
* @see edu.tsinghua.lumaqq.events.FriendSelectionListener#friendDeselected(edu.tsinghua.lumaqq.events.FriendSelectionEvent)
*/
public void friendDeselected(FriendSelectionEvent e) {
List list = (List)e.getSource();
Iterator iter = list.iterator();
while(iter.hasNext())
removeMember((FriendModel)iter.next());
}
/**
* @param b
*/
public void setMinimized(boolean b) {
shell.setMinimized(b);
}
/**
* 激活窗口
*/
public void setActive() {
shell.setActive();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -