⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainshell.java

📁 用java实现的
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
					// 得到群的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 + -