📄 mainshell.java
字号:
// 得到群的model
ShutterLabel viewPart = (ShutterLabel)clusterMenu.getData();
ClusterModel c = (ClusterModel)viewPart.getData();
// 导出
exportMessage(c.getClusterId(), new ClusterMessageExporter(c));
}
}
);
// separator
mi = new MenuItem(clusterMenu, SWT.SEPARATOR);
// 退出该群
mi = new MenuItem(clusterMenu, SWT.PUSH);
mi.setText(LumaQQ.getResourceString("menu.cluster.exit"));
mi.setImage(icons.getResource(IconHolder.icoExit));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
MessageBox box = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES | SWT.NO);
box.setText(LumaQQ.getResourceString("message.box.common.question.title"));
box.setMessage(LumaQQ.getResourceString("message.box.exit.cluster.confirm"));
if(box.open() == SWT.YES) {
ShutterLabel viewPart = (ShutterLabel)clusterMenu.getData();
if(!viewPart.isDisposed()) {
ClusterModel c = (ClusterModel)viewPart.getData();
client.exitCluster(c.getClusterId());
}
}
}
}
);
}
// 打开群组资料窗口
public ClusterInfoShell openClusterInfoShell(ShutterLabel viewPart) {
ClusterModel c = (ClusterModel)viewPart.getData();
return openClusterInfoShell(c);
}
// 打开群组资料窗口
public ClusterInfoShell openClusterInfoShell(ClusterModel c) {
if(cisMap.containsKey(c)) {
ClusterInfoShell cis = (ClusterInfoShell)cisMap.get(c);
cis.setMinimized(false);
cis.setActive();
return cis;
} else {
ClusterInfoShell cis = new ClusterInfoShell(this);
cisMap.put(c, cis);
cis.setClusterModel(c);
cis.setCanModified(c.getCreator() == myModel.getQQ());
cis.open();
return cis;
}
}
// 初始化组菜单
private void initGroupMenu() {
groupMenu = new Menu(shell, SWT.POP_UP);
// 显示小头像
MenuItem mi = new MenuItem(groupMenu, SWT.PUSH);
mi.setText(LumaQQ.getResourceString("menu.friend.showsmall"));
mi.setImage(icons.getResource(IconHolder.icoSmallFace));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
showSmallFace(true);
}
}
);
// 显示大头像
mi = new MenuItem(groupMenu, SWT.PUSH);
mi.setText(LumaQQ.getResourceString("menu.friend.showlarge"));
mi.setImage(icons.getResource(IconHolder.icoLargeFace));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
showSmallFace(false);
}
}
);
// 群操作菜单
mi = new MenuItem(groupMenu, SWT.CASCADE);
mi.setText(LumaQQ.getResourceString("menu.group.cluster"));
mi.setImage(icons.getResource(IconHolder.icoCluster));
Menu subMenu = new Menu(mi);
mi.setMenu(subMenu);
// 查找一个群
mi = new MenuItem(subMenu, SWT.PUSH);
mi.setText(LumaQQ.getResourceString("menu.group.cluster.search"));
mi.setImage(icons.getResource(IconHolder.icoSearchCluster));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
openSearchShell();
}
}
);
// 创建一个群
mi = new MenuItem(subMenu, SWT.PUSH);
mi.setText(LumaQQ.getResourceString("menu.group.cluster.create"));
mi.setImage(icons.getResource(IconHolder.icoAddCluster));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
openCreateClusterShell();
}
}
);
// 名称显示
mi = new MenuItem(groupMenu, SWT.CASCADE);
mi.setText(LumaQQ.getResourceString("menu.group.displayname"));
mi.setImage(icons.getResource(IconHolder.icoDisplayName));
// 显示昵称
displayMenu = new Menu(mi);
mi.setMenu(displayMenu);
MenuItem sub = new MenuItem(displayMenu, SWT.RADIO);
sub.setText(LumaQQ.getResourceString("menu.group.displayname.nick"));
sub.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
displayName("nick");
options.setShowNick(true);
}
}
);
// 显示备注名称
sub = new MenuItem(displayMenu, SWT.RADIO);
sub.setText(LumaQQ.getResourceString("menu.group.displayname.remark"));
sub.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
displayName("realName");
options.setShowNick(false);
}
}
);
// 添加组
mi = new MenuItem(groupMenu, SWT.PUSH);
mi.setText(LumaQQ.getResourceString("menu.friend.addgroup"));
mi.setImage(icons.getResource(IconHolder.icoAddGroup));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
addGroup();
}
}
);
// separator
mi = new MenuItem(groupMenu, SWT.SEPARATOR);
// 添加用户
mi = new MenuItem(groupMenu, SWT.PUSH);
mi.setText(LumaQQ.getResourceString("menu.group.addfriend"));
mi.setImage(icons.getResource(IconHolder.icoAddFriend));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
openSearchShell();
}
}
);
// 只显示在线好友
mi = new MenuItem(groupMenu, SWT.PUSH);
mi.setImage(icons.getResource(IconHolder.icoShowOnlineOnly));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if(options.isShowOnlineOnly())
showAllFriend();
else
showOnlineFriendOnly();
}
}
);
// 组操作区域,包括重命名,删除该组等等
// separator
mi = new MenuItem(groupMenu, SWT.SEPARATOR);
// 重命名
mi = new MenuItem(groupMenu, SWT.PUSH);
mi.setText(LumaQQ.getResourceString("menu.group.rename"));
mi.setImage(icons.getResource(IconHolder.icoRename));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
shutter.editTabName(shutter.getCurrentTab());
}
}
);
// 删除该组
mi = new MenuItem(groupMenu, SWT.PUSH);
mi.setText(LumaQQ.getResourceString("menu.group.delete"));
mi.setImage(icons.getResource(IconHolder.icoDelGroup));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if(model.getItemCount(shutter.getCurrentTab()) > 0) {
MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
box.setText(LumaQQ.getResourceString("message.box.common.warning.title"));
box.setMessage(LumaQQ.getResourceString("hint.please.clear.friend"));
box.open();
} else
model.removeTab(shutter.getCurrentTab());
}
}
);
// 黑名单组特定操作项,包括添加坏人名单,隐藏显示黑名单等等
// separator
mi = new MenuItem(groupMenu, SWT.SEPARATOR);
// 添加坏人名单
mi = new MenuItem(groupMenu, SWT.PUSH);
mi.setText(LumaQQ.getResourceString("menu.group.addbadguy"));
mi.setImage(icons.getResource(IconHolder.icoAddFriend));
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
FriendModel f = new FriendModel(0);
f.addProperty("image", icons.getFace(0));
f.addProperty("face", new Integer(0));
f.addProperty("status", "offline");
f.addProperty("name", "xxxxxxxxx");
f.addProperty("nick", "xxxxxxxxx");
int bIndex = shutter.getCurrentTab();
model.addItem(bIndex, f);
ShutterLabel viewPart = shutter.getItemControl(bIndex, model.getItemCount(bIndex) - 1);
viewPart.editText();
viewPart.addShutterLabelListener(blsll);
}
}
);
// 隐藏显示黑名单
mi = new MenuItem(groupMenu, SWT.PUSH);
mi.addSelectionListener(
new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
int[] indices = model.findTabIndex(blacklistMatcher);
if (indices != null) {
GroupModel blacklistGroup = (GroupModel)model.getTab(indices[0]);
blacklistGroup.addProperty("visible", blacklistVisible?"false":"true");
blacklistVisible = !blacklistVisible;
}
}
}
);
// 添加菜单显示事件监听器
groupMenu.addMenuListener(
new MenuAdapter() {
public void menuShown(MenuEvent e) {
// 显示什么头像的菜单使能状态
if(shutter.isShowSmallImage()) {
groupMenu.getItem(0).setEnabled(false);
groupMenu.getItem(1).setEnabled(true);
} else {
groupMenu.getItem(0).setEnabled(true);
groupMenu.getItem(1).setEnabled(false);
}
// 得到当前组的model
GroupModel g = (GroupModel)model.getTab(shutter.getCurrentTab());
// 设置名称显示子菜单的使能状态和选择状态
// 显示昵称还是显示备注的选择状态
if(g.isCluster())
groupMenu.getItem(3).setEnabled(false);
else {
groupMenu.getItem(3).setEnabled(true);
if(options.isShowNick()) {
displayMenu.getItem(0).setSelection(true);
displayMenu.getItem(1).setSelection(false);
} else {
displayMenu.getItem(0).setSelection(false);
displayMenu.getItem(1).setSelection(true);
}
}
// 设置群操作菜单的使能性
groupMenu.getItem(2).setEnabled(g.isCluster());
// 设置添加用户菜单的使能状态
if ("true".equals(g.getProperty("friendly")) && !g.isCluster())
groupMenu.getItem(6).setEnabled(true);
else
groupMenu.getItem(6).setEnabled(false);
// 设置只显示在线用户还是显示所有用户菜单的文字标签
if(options.isShowOnlineOnly())
groupMenu.getItem(7).setText(LumaQQ.getResourceString("menu.group.showall"));
else
groupMenu.getItem(7).setText(LumaQQ.getResourceString("menu.group.showonlineonly"));
// 设置组改名组删除菜单的使能性
String name = (String)g.getProperty("name");
if(!name.equals(LumaQQ.getResourceString("group.default.friend")) &&
!name.equals(LumaQQ.getResourceString("group.default.stranger")) &&
!name.equals(LumaQQ.getResourceString("group.default.blacklist")) &&
!name.equals(LumaQQ.getResourceString("group.default.cluster"))) {
groupMenu.getItem(8).setEnabled(true);
groupMenu.getItem(9).setEnabled(true);
groupMenu.getItem(10).setEnabled(true);
} else {
groupMenu.getItem(8).setEnabled(false);
groupMenu.getItem(9).setEnabled(false);
groupMenu.getItem(10).setEnabled(false);
}
// 设置黑名单操作项的使能性
if("true".equals(g.getProperty("blacklist"))) {
groupMenu.getItem(11).setEnabled(true);
groupMenu.getItem(12).setEnabled(true);
} else {
groupMenu.getItem(11).setEnabled(false);
groupMenu.getItem(12).setEnabled(false);
}
// 设置隐藏显示黑名单的图标和文字
if(blacklistVisible) {
groupMenu.getItem(13).setText(LumaQQ.getResourceString("menu.group.hideblacklist"));
groupMenu.getItem(13).setImage(icons.getResource(IconHolder.icoHideBlackList));
} else {
groupMenu.getItem(13).setText(LumaQQ.getResourceString("menu.group.showblacklist"));
groupMenu.getItem(13).setImage(icons.getResource(IconHolder.icoShowBlackList));
}
}
}
);
}
/**
* 打开群组创建向导
*/
protected void openCreateClusterShell() {
if(createClusterShell == null) {
createClusterShell = new CreateClusterShell(this);
createClusterShell.open();
} else {
createClusterShell.setMinimized(false);
createClusterShell.setActive();
}
}
/**
* 设置好友显示的名称
* @param pName model中的属性名,这个名称代表了将要做为名称显示的属性
*/
protected void displayName(String pName) {
int tabSize = model.getTabCount();
for(int i = 0; i < tabSize; i++) {
GroupModel g = (GroupModel)model.getTab(i);
if(!g.isCluster()) {
int itemSize = model.getItemCount(i);
for(int j = 0; j < itemSize; j++) {
FriendModel f = (FriendModel)model.getItem(i, j);
if(f.hasProperty(pName)) // 首先检查model中是否有这个属性
f.addProperty("name", f.getProperty(pName));
else if(pName.equals("realName")) {
/* 如果f中没有这个属性,且属性名是realName,那么检查一下这个好友是否有备注信息 */
Remark r = remarks.getRemark((Integer)f.getProperty("qq"));
if(r != null) {
f.addProperty("name", r.getName());
f.addProperty("realName", r.getName());
}
}
}
}
}
}
// 添加一个组
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -