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

📄 infomanagerwindow.java

📁 lumaQQ的源文件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		tiDelete = new ToolItem(tb, SWT.PUSH);
		tiDelete.setImage(res.getImage(Resources.icoDelete));
		tiDelete.setText(button_delete);
		tiDelete.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				onDelete();
			}
		});
		// separator
		new ToolItem(tb, SWT.SEPARATOR);
		// 其他控件的容器
		ToolItem tiControls = new ToolItem(tb, SWT.SEPARATOR);
		Composite controlContainer = new Composite(tb, SWT.NONE);
		GridLayout layout = new GridLayout(7, false);
		layout.marginHeight = layout.marginWidth = 1;
		controlContainer.setLayout(layout);		
		tiControls.setControl(controlContainer);		
		controlContainer.addPaintListener(new AroundBorderPaintListener(new Class[] { CCombo.class, Text.class }, Colors.PAGE_CONTROL_BORDER));
		// 查找
		Label lblSearch = new Label(controlContainer, SWT.LEFT);
		lblSearch.setText(info_search);
		final CCombo comboSearch = new CCombo(controlContainer, SWT.READ_ONLY | SWT.FLAT);
		GridData gd = new GridData(GridData.VERTICAL_ALIGN_CENTER);
		gd.widthHint = 100;
		comboSearch.setLayoutData(gd);
		comboSearch.setBackground(Colors.WHITE);
		comboSearch.add(info_record);
		comboSearch.select(0);
		comboSearch.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				searchMode = comboSearch.getSelectionIndex();
			}
		});
		// 范围
		Label lblScope = new Label(controlContainer, SWT.LEFT);
		lblScope.setText(info_scope);
		comboScope = new CCombo(controlContainer, SWT.READ_ONLY | SWT.FLAT);
		gd = new GridData(GridData.VERTICAL_ALIGN_CENTER);
		gd.widthHint = 150;
		comboScope.setLayoutData(gd);
		comboScope.setBackground(Colors.WHITE);
		comboScope.add(info_all);
		comboScope.select(0);
		comboScope.setVisibleItemCount(20);
		comboScope.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				if(comboScope.getSelectionIndex() == 0)
					scope = 0;
				else {
					Object obj = scopes.get(comboScope.getSelectionIndex() - 1);
					if(obj instanceof User)
						scope = ((User)obj).qq;
					else
						scope = ((Cluster)obj).clusterId;
				}
			}
		});
		// 关键字
		Label lblKeyword = new Label(controlContainer, SWT.LEFT);
		lblKeyword.setText(info_key);
		gd = new GridData();
		gd.horizontalIndent = 15;
		lblKeyword.setLayoutData(gd);
		Text textKeyword = new Text(controlContainer, SWT.SINGLE);
		gd = new GridData();
		gd.widthHint = 150;
		gd.heightHint = 18;
		textKeyword.setLayoutData(gd);
		textKeyword.addModifyListener(new ModifyListener() {
			public void modifyText(ModifyEvent e) {
				Text t = (Text)e.getSource();
				keyword = t.getText().trim();
				if(keyword.equals(""))
					tiSearch.setEnabled(false);
				else
					tiSearch.setEnabled(true);
			}
		});
		textKeyword.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				if(e.character == SWT.CR && !keyword.equals(""))
					onSearch();
			}
		});
		tiSearch = new ToolItem(tb, SWT.PUSH);
		tiSearch.setImage(res.getImage(Resources.icoSearch));
		tiSearch.setText(button_search);
		tiSearch.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				onSearch();
			}
		});
		
		// 下部分的容器
		Composite bottomContainer = new Composite(control, SWT.NONE);
		layout = new GridLayout(3, false);
		layout.marginHeight = layout.marginWidth = 1;
		layout.horizontalSpacing = layout.verticalSpacing = 1;
		bottomContainer.setLayout(layout);
		bottomContainer.setLayoutData(new GridData(GridData.FILL_BOTH));
		bottomContainer.addPaintListener(new AroundBorderPaintListener(new Class[] { ViewForm.class }, Colors.PAGE_CONTROL_BORDER));
		
		// 树型图
		final ViewForm vfTree = new ViewForm(bottomContainer, SWT.FLAT);
		gd = new GridData(GridData.FILL_VERTICAL);
		gd.verticalSpan = 3;
		gd.widthHint = 200;
		vfTree.setLayoutData(gd);
		Composite topLeft = new Composite(vfTree, SWT.NONE);
		topLeft.setLayout(new GridLayout());
		Label lblName = new Label(topLeft, SWT.CENTER);
		lblName.setText(main.getMyModel().nick + '(' + main.getMyModel().qq + ')');
		vfTree.setTopLeft(topLeft);
		treeViewer = new TreeViewer(vfTree, SWT.SINGLE);
		treeViewer.setContentProvider(new TreeContentProvider());
		treeViewer.setLabelProvider(new TreeLabelProvider());
		treeViewer.setSorter(new TreeSorter());
		treeViewer.getTree().setLinesVisible(true);
		vfTree.setContent(treeViewer.getTree());
		treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
			public void selectionChanged(SelectionChangedEvent event) {
				Object obj = getSelectedObject();
				if(obj != null) {
					onSelection(obj);
				}
			}
		});
		
		// sash
		Sash vSash = new Sash(bottomContainer, SWT.VERTICAL);
		gd = new GridData(GridData.FILL_VERTICAL);
		gd.verticalSpan = 3;
		vSash.setLayoutData(gd);
		vSash.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				GridData gd = (GridData)vfTree.getLayoutData();
				gd.widthHint = e.x;
				vfTree.getParent().layout();
				vfTree.getParent().redraw();
			}
		});
		
		// tab folder
		CTabFolder folder = new CTabFolder(bottomContainer, SWT.TOP | SWT.FLAT | SWT.BORDER);
		folder.setLayoutData(new GridData(GridData.FILL_BOTH));
		// 聊天记录tab
		CTabItem tiRecord = new CTabItem(folder, SWT.NONE);
		tiRecord.setText(info_record);
		tiRecord.setImage(res.getImage(Resources.icoMessage));
		// 聊天记录tab容器
		Composite recordContainer = new Composite(folder, SWT.NONE);
		layout = new GridLayout();
		layout.marginHeight = layout.marginWidth = layout.verticalSpacing = layout.horizontalSpacing = 0;
		recordContainer.setLayout(layout);
		recordViewer = new TableViewer(recordContainer, SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
		TableColumn tc = new TableColumn(recordViewer.getTable(), SWT.LEFT);
		tc.setText(info_sender);
		tc.setWidth(100);
		tc = new TableColumn(recordViewer.getTable(), SWT.LEFT);
		tc.setText(info_date);
		tc.setWidth(100);
		tc = new TableColumn(recordViewer.getTable(), SWT.LEFT);
		tc.setText(info_time);
		tc.setWidth(100);
		tc = new TableColumn(recordViewer.getTable(), SWT.LEFT);
		tc.setText(info_content);
		tc.setWidth(310);
		recordViewer.getTable().setHeaderVisible(true);
		recordViewer.getTable().setLinesVisible(true);
		recordViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
		recordViewer.setContentProvider(new RecordContentProvider());
		recordViewer.setLabelProvider(new RecordLabelProvider());
		recordViewer.addSelectionChangedListener(new ISelectionChangedListener() {
			public void selectionChanged(SelectionChangedEvent event) {
				onRecordSelection(event);
			}
		});
		recordViewer.addDoubleClickListener(new IDoubleClickListener() {
			public void doubleClick(DoubleClickEvent event) {
				onRecordDoubleClick(event);
			}
		});
		// 记录导航按钮条
		Composite navContainer = new Composite(recordContainer, SWT.NONE);
		layout = new GridLayout(2, false);
		layout.marginHeight = layout.marginWidth = 0;
		navContainer.setLayout(layout);
		navContainer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
		lblPage = new Label(navContainer, SWT.LEFT);
		gd = new GridData(GridData.FILL_HORIZONTAL);
		gd.horizontalIndent = 5;
		lblPage.setLayoutData(gd);
		// 导航工具条
		ToolBar tbNav = new ToolBar(navContainer, SWT.FLAT | SWT.RIGHT);
		tiFirst = new ToolItem(tbNav, SWT.PUSH);
		tiFirst.setImage(res.getImage(Resources.icoFirst));
		tiFirst.setText(button_first);
		tiFirst.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				pageNum = 0;
				navigateTo(pageNum);
			}
		});
		tiPrev = new ToolItem(tbNav, SWT.PUSH);
		tiPrev.setImage(res.getImage(Resources.icoPrevious));
		tiPrev.setText(button_previous);
		tiPrev.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				navigateTo(--pageNum);
			}
		});
		tiNext = new ToolItem(tbNav, SWT.PUSH);
		tiNext.setImage(res.getImage(Resources.icoNext));
		tiNext.setText(button_next);
		tiNext.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				navigateTo(++pageNum);
			}
		});
		tiLast = new ToolItem(tbNav, SWT.PUSH);
		tiLast.setImage(res.getImage(Resources.icoLast));
		tiLast.setText(button_last);
		tiLast.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				pageNum = pageCount - 1;
				navigateTo(pageNum);
			}
		});
		tiRecord.setControl(recordContainer);
		
		// horizontal sash
		Sash hSash = new Sash(bottomContainer, SWT.HORIZONTAL);
		hSash.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
		hSash.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				GridData gd = (GridData)vfRecord.getLayoutData();
				gd.heightHint = vfRecord.getParent().getClientArea().height - e.y;
				vfRecord.getParent().layout();
				vfRecord.getParent().redraw();
			}
		});
		
		vfRecord = new ViewForm(bottomContainer, SWT.FLAT);
		gd = new GridData(GridData.FILL_HORIZONTAL);
		gd.heightHint = 100;
		vfRecord.setLayoutData(gd);
		topLeft = new Composite(vfRecord, SWT.NONE);
		layout = new GridLayout(4, true);
		topLeft.setLayout(layout);
		lblDate = new Label(topLeft, SWT.LEFT);
		lblDate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER));
		lblDate.setText(info_date + ":");
		lblTime = new Label(topLeft, SWT.LEFT);
		lblTime.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER));
		lblTime.setText(info_time + ":");
		lblSender = new Label(topLeft, SWT.LEFT);
		lblSender.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER));
		lblSender.setText(info_sender + ":");
		lblReceiver = new Label(topLeft, SWT.LEFT);
		lblReceiver.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER));
		lblReceiver.setText(info_receiver + ":");
		vfRecord.setTopLeft(topLeft);
		box = new RichBox(vfRecord);
		box.setReadonly(true);
		box.setBackground(Colors.WHITE);
		vfRecord.setContent(box);
		
		controlContainer.setSize(controlContainer.computeSize(SWT.DEFAULT, SWT.DEFAULT));
		tiControls.setWidth(controlContainer.getSize().x);
		folder.setSelection(0);		
		initializeControls();
		initializeViewers();
		return control;		
	}

	/**
	 * 处理记录双击事件
	 * 
	 * @param event
	 */
	protected void onRecordDoubleClick(DoubleClickEvent event) {
		IStructuredSelection s = (IStructuredSelection)event.getSelection();
		RecordEntry entry = (RecordEntry)s.getFirstElement();
		if(entry == null)
			return;
		main.getShellLauncher().openReceiveSystemMessageShell(entry);
	}
	
	/**
	 * 点击export按钮时调用此方法
	 */
	protected void onExport() {
		boolean onTree = treeViewer.getTree().isFocusControl();
		if(onTree) {
			Object obj = getSelectedObject();
			if(obj instanceof User) {
				User f = (User)obj;
				main.getExportHelper().exportMessage(f);
			} else if(obj instanceof Cluster) {
				Cluster c = (Cluster)obj;
				main.getExportHelper().exportMessage(c);
			} else if(obj instanceof Integer) {
				Integer i = (Integer)obj;
				if(i == 3)
					main.getExportHelper().exportSystemMessage();
			}
		} else {
			List<RecordEntry> entries = new ArrayList<RecordEntry>();
			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();
				entries.add(entry);
			}
			Object obj = getSelectedObject();
			if(obj instanceof User) {
				User f = (User)obj;
				main.getExportHelper().exportMessage(f, entries);
			} else if(obj instanceof Cluster) {
				Cluster c = (Cluster)obj;
				main.getExportHelper().exportMessage(c, entries);
			} else if(obj instanceof Integer) {
				Integer i = (Integer)obj;
				if(i == 3)
					main.getExportHelper().exportSystemMessage(entries);
			}
		}
	}

	protected void onDelete() {
		boolean onTree = treeViewer.getTree().isFocusControl();
		if(MessageDialog.openQuestion(getShell(), message_box_common_question_title, message_box_confirm_delete_message)) {
			if(onTree) {
				RecordManager rm = main.getRecordManager();
				Object obj = getSelectedObject();
				int owner = 0;
				if(obj instanceof User)
					owner = ((User)obj).qq;
				else if(obj instanceof Cluster) 
					owner = ((Cluster)obj).clusterId;

⌨️ 快捷键说明

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