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

📄 infomanagerwindow.java

📁 lumaQQ的源文件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
				else if(obj instanceof Integer) {
					Integer i = (Integer)obj;
					if(i == 3)
						owner = 10000;
					else						
						return;
				}
				
				rm.delete(owner, IKeyConstants.ALL, IKeyConstants.SUB_ALL);
				records.clear();
				pageCount = 0;
				pageNum = 0;
				recordViewer.refresh();
				resetNavigator();
				refreshRichBox(null);
			} else {
				// 删除
				RecordManager rm = main.getRecordManager();
				int base = pageNum * rm.getPageSize();
				int[] indices = recordViewer.getTable().getSelectionIndices();
				for(int i = indices.length - 1; i >= 0; i--) {
					TableItem ti = recordViewer.getTable().getItem(indices[i]);
					RecordEntry entry = (RecordEntry)ti.getData();
					rm.delete(entry);
					records.remove(base + indices[i]);
				}
				// 重新计算页数
				if(records.isEmpty())
					pageCount = 0;
				else
					pageCount = (records.size() + rm.getPageSize() - 1) / rm.getPageSize();
				if(pageNum >= pageCount)
					pageNum = Math.max(0, pageCount - 1);
				if(pageCount > 0)
					lblPage.setText(NLS.bind(info_page, String.valueOf(pageNum + 1), String.valueOf(pageCount)));
				else
					lblPage.setText("");
				// 刷新,同步
				recordViewer.refresh();
				resetNavigator();
				rm.sync();
			}
		}
	}

	protected void navigateTo(int page) {
		recordViewer.refresh();
		lblPage.setText(NLS.bind(info_page, String.valueOf(page + 1), String.valueOf(pageCount)));
		resetNavigator();
	}

	protected void onSearch() {
		records.clear();
		if(scope == 0) {
			// 搜索
			try {
				ProgressMonitorDialog dialog = new ProgressMonitorDialog(getShell());
				dialog.run(true, true, new IRunnableWithProgress() {
					public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
						RecordManager rm = main.getRecordManager();
						monitor.beginTask("Searching...", scopes.size());
						
						for(Object obj : scopes) {
							int scope;
							if(obj instanceof User)
								scope = ((User)obj).qq;
							else
								scope = ((Cluster)obj).clusterId;
							records.addAll(rm.search(scope, IKeyConstants.ALL, IKeyConstants.SUB_ALL, keyword, false, 0));
							monitor.worked(1);
							
							if(monitor.isCanceled())
								break;
						}
						
						monitor.done();
					}
				});
			} catch(InvocationTargetException e) {
			} catch(InterruptedException e) {
			}
		} else {
			records.clear();
			records.addAll(searchOne(scope));		
		}
		RecordManager rm = main.getRecordManager();
		if(records.isEmpty())
			pageCount = 0;
		else
			pageCount = (records.size() + rm.getPageSize() - 1) / rm.getPageSize();
		pageNum = 0;
		if(pageCount > 0)
			lblPage.setText(NLS.bind(info_page, String.valueOf(pageNum + 1), String.valueOf(pageCount)));
		else
			lblPage.setText("");
		recordViewer.refresh();
		refreshRichBox(null);
		resetNavigator();
	}
	
	protected List<RecordEntry> searchOne(int scope) {
		RecordManager rm = main.getRecordManager();
		boolean isCluster = ModelRegistry.getCluster(scope) != null;
		int type = isCluster ? IKeyConstants.CLUSTER : IKeyConstants.NORMAL;
		return rm.search(scope, type, IKeyConstants.SUB_ALL, keyword, false, 0);
	}

	protected void onRecordSelection(SelectionChangedEvent event) {
		IStructuredSelection s = (IStructuredSelection)event.getSelection();
		if(s.isEmpty()) {
			tiExport.setEnabled(false);
			tiDelete.setEnabled(false);
			refreshRichBox(null);
		} else {
			tiExport.setEnabled(true);
			tiDelete.setEnabled(true);
			
			RecordEntry first = (RecordEntry)s.getFirstElement();
			refreshRichBox(first);
		}
	}

	private void refreshRichBox(RecordEntry first) {
		if(first == null) {
			lblDate.setText(info_date + ':');
			lblTime.setText(info_time + ':');
			lblSender.setText(info_sender + ':');
			lblReceiver.setText(info_receiver + ':');
			box.clear();
		} else {
			box.setText(first.message);
			date.setTime(first.time);
			lblDate.setText(info_date + ": " + dateFormat.format(date));
			lblTime.setText(info_time + ": " + timeFormat.format(date));
			
			User sender = ModelRegistry.getUser(first.sender);
			if(sender == null)
				lblSender.setText(info_sender + ": " + first.sender);
			else
				lblSender.setText(info_sender + ": " + sender.displayName);
			
			if(first.type == IKeyConstants.NORMAL) {
				User receiver = ModelRegistry.getUser(first.receiver);
				if(receiver == null)
					lblReceiver.setText(info_receiver + ": " + first.receiver);
				else
					lblReceiver.setText(info_receiver + ": " + receiver.displayName);				
			} else
				lblReceiver.setText(info_receiver + ':');			
		}
	}

	protected void onSelection(Object obj) {
		if(obj instanceof Integer) {
			Integer i = (Integer)obj;
			if(i == 3) {
				/*
				 * 选择了系统消息
				 */
				reloadRecord(10000, IKeyConstants.SYSTEM, IKeyConstants.SUB_ALL);
			} else 
				resetAll();
		} else if(obj instanceof Group) {
			resetAll();
		} else if(obj instanceof User) {
			// 设置搜索范围
			User u = (User)obj;
			scope = u.qq;
			int index = scopes.indexOf(u);
			if(index != -1)
				comboScope.select(index + 1);
			
			// 刷新记录表
			reloadRecord(u.qq, IKeyConstants.NORMAL, IKeyConstants.SUB_ALL);
		} else if(obj instanceof Cluster) {
			Cluster c = (Cluster)obj;
			scope = c.clusterId;
			pageNum = 0;
			pageCount = 0;
			int index = scopes.indexOf(c);
			if(index != -1)
				comboScope.select(index + 1);
			
			// 刷新记录
			reloadRecord(c.clusterId, IKeyConstants.CLUSTER, IKeyConstants.SUB_ALL);
		}
	}

	private void reloadRecord(int owner, int type, int subType) {
		RecordManager rm = main.getRecordManager();
		records.clear();
		records.addAll(rm.getRecord(owner, type, subType));
		if(records.isEmpty())
			pageCount = 0;
		else
			pageCount = (records.size() + rm.getPageSize() - 1) / rm.getPageSize();
		pageNum = Math.max(0, pageCount - 1);
		if(pageCount > 0)
			lblPage.setText(NLS.bind(info_page, String.valueOf(pageNum + 1), String.valueOf(pageCount)));
		else 
			lblPage.setText("");
		recordViewer.refresh();
		tiExport.setEnabled(true);
		tiDelete.setEnabled(true);
		refreshRichBox(null);
		resetNavigator();
	}

	private void resetAll() {
		scope = 0;
		pageNum = 0;
		pageCount = 0;
		comboScope.select(0);
		lblPage.setText("");
		tiExport.setEnabled(false);
		tiDelete.setEnabled(false);
		records.clear();
		recordViewer.refresh();
		resetNavigator();
		refreshRichBox(null);
	}

	private void resetNavigator() {
		if(pageCount <= 1) {
			tiFirst.setEnabled(false);
			tiPrev.setEnabled(false);
			tiNext.setEnabled(false);
			tiLast.setEnabled(false);
		} else if(pageNum >= pageCount - 1) {
			tiFirst.setEnabled(true);
			tiPrev.setEnabled(true);
			tiNext.setEnabled(false);
			tiLast.setEnabled(false);
		} else if(pageNum <= 0) {
			tiFirst.setEnabled(false);
			tiPrev.setEnabled(false);
			tiNext.setEnabled(true);
			tiLast.setEnabled(true);
		} else {
			tiFirst.setEnabled(true);
			tiPrev.setEnabled(true);
			tiNext.setEnabled(true);
			tiLast.setEnabled(true);
		}
	}

	protected Object getSelectedObject() {
		IStructuredSelection s = (IStructuredSelection)treeViewer.getSelection();
		return s.getFirstElement();
	}

	private void initializeViewers() {
		recordViewer.setInput(this);
		treeViewer.setInput(this);
	}

	@SuppressWarnings("unchecked")
	private void initializeControls() {
		tiExport.setEnabled(false);
		tiDelete.setEnabled(false);
		tiSearch.setEnabled(false);
		resetNavigator();
		List<User> users = ModelRegistry.getSortedUserList();
		for(User u : users) 
			comboScope.add("" + u.qq + '(' + u.displayName + ')');
		scopes.addAll(users);
		for(Cluster c : clusters) 
			comboScope.add("" + c.externalId + '(' + c.name + ')');
		scopes.addAll(clusters);
	}

	private void initializeVariables() {
		active = false;
		searchMode = SEARCH_RECORD;
		scope = SCOPE_ALL;
		pageNum = 0;
		pageCount = 0;
		keyword = "";
		scopes = new ArrayList();
		records = new ArrayList<RecordEntry>();
		clusters = new ArrayList<Cluster>(main.getBlindHelper().getClusterGroup().clusters);
		otherGroups = main.getBlindHelper().getUserGroupList();
		for(Iterator<Cluster> i = clusters.iterator(); i.hasNext(); ) {
			if(i.next().clusterType != ClusterType.NORMAL) {
				i.remove();
			}
		}
	}
	
	@Override
	protected ShellListener getShellListener() {
		return this;
	}
	
	@Override
	protected Shell getParentShell() {
		return null;
	}
	
	@Override
	protected Point getInitialSize() {
		return new Point(800, 600);
	}
	
    /**
     * 设置最小化状态
     * 
     * @param b
     */
    public void setMinimized(boolean b) {
        getShell().setMinimized(b);
    }
    
    /**
     * 设置焦点
     */
    public void setFocus() {
        getShell().setFocus();
    }
    
	/**
     * 设置窗口激活
     */
    public void setActive() {
        getShell().setActive();
    }
    
    public boolean isActive() {
    	return active;
    }

	public void shellActivated(ShellEvent e) {
		active = true;
	}

	public void shellClosed(ShellEvent e) {
		main.getShellRegistry().deregisterInfoManagerWindow();
	}

	public void shellDeactivated(ShellEvent e) {
		active = false;
	}

	public void shellDeiconified(ShellEvent e) {
	}

	public void shellIconified(ShellEvent e) {
	}
}

⌨️ 快捷键说明

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