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

📄 searchshell.java

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