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

📄 mainshell.java

📁 类似于MSN
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
				}
			}
		);
	}	

	/**
     * @param url
     * @param errorString
     */
    protected void openBrowserShell(String url, String title, String errorString) {
        // 查看是否设置了外部浏览器,如果设置了,就不使用缺省的浏览器
        String browser = options.getBrowser();
        try {
	        if(browser != null && browser.indexOf("[URL]") != -1) {
	            Runtime.getRuntime().exec(browser.replaceAll("\\[URL\\]", url));
	        } else {
	            BrowserShell bs = new BrowserShell(this);
	            bs.setUrl(url);
	            bs.setTitle(title);
	            bs.open();	            
	        }
        } catch (Throwable t) {
            MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK);
            box.setText(LumaQQ.getResourceString("message.box.common.warning.title"));
            box.setMessage(errorString);
            box.open();
        } 
    }

    /**
     * 浏览搜索和创建校友录页面
     */
    protected void goAlumni() {
        openBrowserShell("http://school.qq.com", "Search/Create Alumni", LumaQQ.getResourceString("message.box.manual.alumni"));
    }

    /**
	 * 打开群组创建向导
	 */
	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());
						}
					}
				}				
			}
		}
	}

	// 添加一个组
	private void addGroup() {
		int index = shutter.getCurrentTab() + 1;
		model.insertTab(index, new GroupModel(""));
		shutter.getTabControl(index).editText();
		shutter.addItemMouseListener(itemMouseListener, index);
		shutter.addItemMouseTrackListener(itemMouseTrackListener, index);
		shutter.addContentMouseListener(groupMouseListener, index);
	}
	
	// 显示大头像还是小头像
	private void showSmallFace(boolean b) {
		if(b) {
			shutter.setShowSmallImage(true);
			shutter.setTextOrientation(SWT.RIGHT);
			shutter.setContentAlignment(SWT.LEFT);
		} else {
			shutter.setShowSmallImage(false);
			shutter.setTextOrientation(SWT.BOTTOM);
			shutter.setContentAlignment(SWT.CENTER);
		}
		options.setSmallFace(b);
	}

	/**
	 * 初始化在好友上点右键出现的菜单
	 */
	private void initFriendMenu() {
		friendMenu = new Menu(shell, SWT.POP_UP);
		// 收发消息
		MenuItem mi = new MenuItem(friendMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.friend.sendreceive"));
		mi.setImage(icons.getResource(IconHolder.icoSendReceiveMessage));
		mi.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				// 得到当前选择用户的view part,打开消息窗口
				openNormalMessageShell((ShutterLabel)friendMenu.getData());
			}
		});
		// 发送文件
		mi = new MenuItem(friendMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.friend.sendfile"));
		mi.setImage(icons.getResource(IconHolder.icoSendFile));
		mi.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                Object obj = openNormalMessageShell((ShutterLabel)friendMenu.getData());
                while(obj instanceof ReceiveMessageShell)
                    obj = openNormalMessageShell((ShutterLabel)friendMenu.getData());
                SendMessageShell sms = (SendMessageShell)obj;
                sms.requestSendFile();
            }
		});
		// separator
		mi = new MenuItem(friendMenu, SWT.SEPARATOR);
		// 查看资料
		mi = new MenuItem(friendMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.friend.viewinfo"));
		mi.setImage(icons.getResource(IconHolder.icoPersonInfo));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					// 得到当前选择用户的view part,打开资料窗口
					openUserInfoShell((ShutterLabel)friendMenu.getData(), false);
				}
			}
		);
		// 消息管理菜单
		mi = new MenuItem(friendMenu, SWT.CASCADE);
		mi.setText(LumaQQ.getResourceString("menu.friend.message.manage"));
		mi.setImage(icons.getResource(IconHolder.icoMessageManage));
		Menu msgMenu = new Menu(mi);
		mi.setMenu(msgMenu);
		// 导出为文本文件菜单
		mi = new MenuItem(msgMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.friend.message.export"));
		mi.setImage(icons.getResource(IconHolder.icoTxtFile));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					// 得到好友的model
					ShutterLabel viewPart = (ShutterLabel)friendMenu.getData();
					FriendModel f = (FriendModel)viewPart.getData();
					// 导出
					exportMessage(f.getQQ(), new FriendMessageExporter(myModel, f));
				}
			}
		);
		// separator
		mi = new MenuItem(friendMenu, SWT.SEPARATOR);
		// 显示小头像
		mi = new MenuItem(friendMenu, 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(friendMenu, 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(friendMenu, 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(friendMenu, SWT.SEPARATOR);
		// 只显示在线好友
		mi = new MenuItem(friendMenu, 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(friendMenu, SWT.SEPARATOR);
		// 从该组删除
		mi = new MenuItem(friendMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.friend.delfriend"));
		mi.setImage(icons.getResource(IconHolder.icoDelFriend));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					GroupModel g = (GroupModel)model.getTab(shutter.getCurrentTab());
					ShutterLabel viewPart = (ShutterLabel)friendMenu.getData();
					FriendModel f = (FriendModel)viewPart.getData();
					// 检查要删除的这个好友是否在一个好友组中,如果是,需要从服务器删除,如果不是
					//     直接删除即可
					if(!g.isFriendly())
						deleteFriend(viewPart, true, false);
					else {
						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.confirm.delete.friend", new Object[] { f.getProperty("name") }));
						if(box.open() == SWT.YES) {
							ReceiveSystemMessageShell rsms = new ReceiveSystemMessageShell(getThis());
							rsms.setFriendModel(f);
							rsms.open(ReceiveSystemMessageShell.DELETE_MODE);
							deleteFriend(viewPart, false, false);
						}
					}
				}
			}
		);
		// 改名
		mi = new MenuItem(friendMenu, SWT.PUSH);
		mi.setText(LumaQQ.getResourceString("menu.friend.rename"));
		mi.setImage(icons.getResource(IconHolder.icoRename));
		mi.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					ShutterLabel viewPart = (ShutterLabel)friendMenu.getData();
					viewPart.editText();
					viewPart.addShutterLabelListener(fsll);
				}
			}
		);
		// 添加事件监听器,因为需要判断当前显示的是小头像还是大头像,从而使相应的菜单disable
		friendMenu.addMenuListener(
			new MenuAdapter() {
				public void menuShown(MenuEvent e) {
					// 显示什么头像的菜单使能状态
					if(shutter.isShowSmallImage()) {
						friendMenu.getItem(6).setEnabled(false);
						friendMenu.getItem(7).setEnabled(true);
					} else {
						friendMenu.getItem(6).setEnabled(true);
						friendMenu.getItem(7).setEnabled(false);						
					}
					// 显示在线用户还是全部用户的选项
					if(options.isShowOnlineOnly())
						friendMenu.getItem(10).setText(LumaQQ.getResourceString("menu.friend.showall"));
					else
						friendMenu.getItem(10).setText(LumaQQ.getResourceString("menu.friend.showonlineonly"));
				}
			}
		);
	}

	/**
	 * 显示所有好友
	 */
	protected void showAllFriend() {
		// 显示所有用户
		int tabSize = model.getTabCount();
		for(int i = 0; i < tabSize; i++) {
			// 对于群组,我们不响应这个菜单事件
			GroupModel g = (GroupModel)model.getTab(i);
			if(g.isCluster()) continue;
			// 不是群组就显示所有的用户
			int itemSize = model.getItemCount(i);
			if(itemSize > 0) {
				// 为了提高刷新速度,这里用false,然后再统一刷新
				for(int j = 0; j < itemSize; j++) {
					shutter.showItem(i, j, false);
				}
				shutter.refreshTabView(i);	
			}
		}
		options.setShowOnlineOnly(false);
	}

	/**
	 * 隐藏不在线的好友
	 */
	protected void showOnlineFriendOnly() {
		// 显示在线用户
		int tabSize = model.getTabCount();
		for(int i = 0; i < tabSize; i++) {
			// 对于群组,我们不响应这个菜单事件
			GroupModel g = (GroupModel)model.getTab(i);
			if(g.isCluster()) continue;
			// 不是群组就隐藏不在线的用户
			int itemSize = model.getItemCount(i);
			if(itemSize > 0) {
				// 为了提高刷新速度,这里用false,然后再统一刷新
				for(int j = 0; j < itemSize; j++) {
					Object status = model.getItem(i, j).getProperty("status");
					if(!("online".equals(status) || "away".equals(status)))
						shutter.hideItem(i, j, false);
				}
				shutter.refreshTabView(i);		
			}
		}
		options.setShowOnlineOnly(true);
	}

	/**
	 * 初始化系统菜单
	 */
	private void initSysMenu() {
		// 系统弹出菜单
		sysMenu = new Menu(btnSysMenu);
		// 分组管理菜单
		MenuItem mi = new MenuItem(sysMenu, SWT.CASCADE);
		mi.setText(LumaQQ.getResourceString("menu.sys.group"));
		mi.setImage(icons.getResource(IconHolder.icoGroup));
		Menu groupMenu = new Menu(mi);
		mi.setMenu(groupMenu);
		// 上传分组
		MenuItem sub = new MenuItem(groupMenu, SWT.PUSH);
		sub.setText(LumaQQ.getResourceString("menu.sys.group.upload"));
		sub.setImage(icons.getResource(IconHolder.icoUploadGroup));
		sub.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					// 检查是否已经登陆,没有则返回
					if(!client.getUser().isLoggedIn()) return;
					// 检查当前是否有其他长时间操作在进行,是则返回
					if(working) return;
					else working = true;
					// 打开提示框
					opDialog = new OperationShell(getThis());
					opDialog.setTitle(LumaQQ.getResourceString("op.upload.title"));
					opDialog.setHint(LumaQQ.getResourceString("op.upload.hint"));
					opDialog.setSuccessString(LumaQQ.getResourceString("message.box.op.upload.success"));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -