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

📄 recordviewer.java

📁 用java实现的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		fd.right = new FormAttachment(lblMonthChar, 21, SWT.RIGHT);
		fd.top = new FormAttachment(0, 0);
		fd.bottom = new FormAttachment(0, 10);
		btnMonthUp.setLayoutData(fd);
		btnMonthUp.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					if(month > 1) {
						month--;
						lblMonth.setText(String.valueOf(month));
						if(!chkDisplayAll.getSelection())
							refreshRecord(false);							
					}
				}
			}
		);
		// 调整月的下按钮
		Button btnMonthDown = new Button(this, SWT.ARROW | SWT.DOWN);
		fd = new FormData();
		fd.left = new FormAttachment(lblMonthChar, 1, SWT.RIGHT);
		fd.right = new FormAttachment(lblMonthChar, 21, SWT.RIGHT);
		fd.top = new FormAttachment(btnMonthUp, 0, SWT.BOTTOM);
		fd.bottom = new FormAttachment(btnMonthUp, 10, SWT.BOTTOM);
		btnMonthDown.setLayoutData(fd);
		btnMonthDown.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					if(month < 12) {
						month++;
						lblMonth.setText(String.valueOf(month));
						if(!chkDisplayAll.getSelection())
							refreshRecord(false);							
					}
				}
			}
		);
		// 日标签
		lblDay = new Label(this, SWT.RIGHT);
		lblDay.setText(String.valueOf(day));
		fd = new FormData();
		fd.left = new FormAttachment(btnMonthUp, 5, SWT.RIGHT);
		fd.right = new FormAttachment(btnMonthUp, 25, SWT.RIGHT);
		fd.top = new FormAttachment(0, 0);
		lblDay.setLayoutData(fd);
		Label lblDayChar = new Label(this, SWT.NONE);
		lblDayChar.setText(LumaQQ.getResourceString("record.viewer.label.day"));
		fd = new FormData();
		fd.left = new FormAttachment(lblDay, 0, SWT.RIGHT);
		fd.top = new FormAttachment(0, 0);
		lblDayChar.setLayoutData(fd);
		// 调整日的上按钮
		Button btnDayUp = new Button(this, SWT.ARROW | SWT.UP);
		fd = new FormData();
		fd.left = new FormAttachment(lblDayChar, 1, SWT.RIGHT);
		fd.right = new FormAttachment(lblDayChar, 21, SWT.RIGHT);
		fd.top = new FormAttachment(0, 0);
		fd.bottom = new FormAttachment(0, 10);
		btnDayUp.setLayoutData(fd);
		btnDayUp.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					if(day > 1) {
						day--;
						lblDay.setText(String.valueOf(day));
						if(!chkDisplayAll.getSelection())
							refreshRecord(false);							
					}
				}
			}
		);
		// 调整日的下按钮
		Button btnDayDown = new Button(this, SWT.ARROW | SWT.DOWN);
		fd = new FormData();
		fd.left = new FormAttachment(lblDayChar, 1, SWT.RIGHT);
		fd.right = new FormAttachment(lblDayChar, 21, SWT.RIGHT);
		fd.top = new FormAttachment(btnDayUp, 0, SWT.BOTTOM);
		fd.bottom = new FormAttachment(btnDayUp, 10, SWT.BOTTOM);
		btnDayDown.setLayoutData(fd);
		btnDayDown.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					if(day < 31) {
						day++;
						lblDay.setText(String.valueOf(day));
						if(!chkDisplayAll.getSelection())
							refreshRecord(false);						
					}
				}
			}
		);
		// 的消息标签
		Label lblRecord = new Label(this, SWT.NONE);
		lblRecord.setText(LumaQQ.getResourceString("record.viewer.label.record"));
		fd = new FormData();
		fd.left = new FormAttachment(btnDayUp, 5, SWT.RIGHT);
		fd.top = new FormAttachment(0, 0);
		lblRecord.setLayoutData(fd);
		// 显示所有check box
		chkDisplayAll = new Button(this, SWT.CHECK);
		chkDisplayAll.setText(LumaQQ.getResourceString("record.viewer.button.display.all"));
		fd = new FormData();
		fd.left = new FormAttachment(lblRecord, 5, SWT.RIGHT);
		fd.top = new FormAttachment(0, 0);
		chkDisplayAll.setLayoutData(fd);
		chkDisplayAll.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					refreshRecord(chkDisplayAll.getSelection());
				}
			}
		);
		// 聊天记录表
		recordTable = new Table(this, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.FULL_SELECTION);
		fd = new FormData();
		fd.left = new FormAttachment(0, 0);
		fd.right = fd.bottom = new FormAttachment(100, 0);
		fd.top = new FormAttachment(btnYearDown, 1, SWT.BOTTOM);
		recordTable.setLayoutData(fd);
		// tableitem双击事件监听器
		recordTable.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					fireSelected(e);
				}
				public void widgetDefaultSelected(SelectionEvent e) {
					fireDefaultSelectedEvent(e);
				}
			}
		);
		// 添加表格的鼠标事件
		recordTable.addMouseListener(
			new MouseAdapter() {
				public void mouseDown(MouseEvent e) {
					if(e.button == 3) 
						popupMenu(e);
				}
			}
		);
		// layout, 为了伺候linux
		layout();
	}
	
	/**
	 * 弹出菜单
	 * @param e
	 */
	private void popupMenu(MouseEvent e) {
		recordMenu.setLocation(recordTable.toDisplay(e.x, e.y));
		recordMenu.setVisible(true);
	}
	
	// 触发选择事件
	protected void fireSelected(SelectionEvent e) {
		int size = listeners.size();
		for(int i = 0; i < size; i++)
			((SelectionListener)listeners.get(i)).widgetSelected(e);		
	}

	// 触发缺省选择事件
	protected void fireDefaultSelectedEvent(SelectionEvent e) {
		int size = listeners.size();
		for(int i = 0; i < size; i++)
			((SelectionListener)listeners.get(i)).widgetDefaultSelected(e);
	}

	/**
	 * 设置聊天记录表中的内容,显示的是当前年月日的记录,如果设置了显示
	 * 所有,则显示所有记录
	 * @param displayAll true时表示显示所有
	 */
	public void refreshRecord(boolean displayAll) {
		if(mm == null || formatter == null) return;
		// 清除所有
		recordTable.removeAll();
		List list = null;
		// 得到消息列表
		if(displayAll)
			list = mm.getMessages(qqNum);
		else 
			list = mm.getMessages(qqNum, year, month, day);
		// 设置表中的内容,通过一个接口,接口的实现由用户自定
		Iterator iter = list.iterator();
		while(iter.hasNext()) {
			MessageEntry me = (MessageEntry)iter.next();
			String[] texts = formatter.format(me);
			if(texts != null) {
				TableItem ti = new TableItem(recordTable, SWT.NONE);
				ti.setText(texts);
				ti.setData(me);
			}
		}
	}
	
	/**
	 * @return Returns the mm.
	 */
	public IMessage getMm() {
		return mm;
	}
	
	/**
	 * @param mm The mm to set.
	 */
	public void setMessageManager(IMessage mm) {
		this.mm = mm;
	}
	
	/**
	 * @return Returns the formatter.
	 */
	public IRecordFormatter getFormatter() {
		return formatter;
	}
	
	/**
	 * @param formatter The formatter to set.
	 */
	public void setFormatter(IRecordFormatter formatter) {
		this.formatter = formatter;
	}
	
	/**
	 * 设置记录表的表头
	 * @param columns
	 */
	public void setTableColumn(String[] columns) {
		for(int i = 0; i < columns.length; i++) {
			TableColumn tc = new TableColumn(recordTable, SWT.LEFT);
			tc.setText(columns[i]);
		}
		recordTable.setHeaderVisible(true);
	}
	
	/**
	 * 设置表头的宽度
	 * @param width
	 */
	public void setTableColumnWidth(int[] width) {
		for(int i = 0; i < width.length; i++)
			recordTable.getColumn(i).setWidth(width[i]);
	}
	
	/**
	 * 用更灵活的方式设置表头的宽度
	 * @param width 包含了宽度的字符串数组,宽度的描述有3种形式
	 * 				1. 数字,表示绝对宽度
	 * 				2. 数字后面有一个百分号,表示相对宽度
	 * 				3. 星号,表示改列占据所有未用宽度
	 */
	public void setTableColumnWidth(String[] width) {
	    if(rl == null)
	        rl = new ResizeListener(width);
	    else
	        rl.setWidth(width);
	    recordTable.removeControlListener(rl);
	    recordTable.addControlListener(rl);
	}
	
	/**
	 * @return 当前选择的项的相关的MessageEntry对象,如果当前没有Item被选,返回null
	 */
	public MessageEntry getSelectedMessageEntry() {
		int index = recordTable.getSelectionIndex();
		if(index != -1)
			return (MessageEntry)recordTable.getItem(index).getData();
		else 
			return null;
	}
	
	/**
	 * @return 当前选择的item
	 */
	public TableItem getSelectedItem() {
		int index = recordTable.getSelectionIndex();
		return (index == -1) ? null : recordTable.getItem(index);
	}
	
	/**
	 * 添加TableItem选择事件监听器
	 * @param listener
	 */
	public void addSelectionListener(SelectionListener listener) {
		listeners.add(listener);
	}
	
	/**
	 * 除去TableItem选择事件监听器
	 * @param listener
	 */
	public void removeSelectionListener(SelectionListener listener) {
		listeners.remove(listener);
	}

	/* (non-Javadoc)
	 * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
	 */
	public void widgetDisposed(DisposeEvent e) {
		clipboard.dispose();
	}
	
	/**
	 * 将表格卷滚到最后一个item处
	 */
	public void showLast() {
		recordTable.setSelection(recordTable.getItemCount() - 1);
		recordTable.showSelection();
	}
	
	/**
	 * @return Returns the qqNum.
	 */
	public int getQqNum() {
		return qqNum;
	}
	
	/**
	 * @param qqNum The qqNum to set.
	 */
	public void setQqNum(int qqNum) {
		this.qqNum = qqNum;
	}
	
	/**
	 * @return Returns the exporter.
	 */
	public IRecordExporter getExporter() {
		return exporter;
	}
	
	/**
	 * @param exporter The exporter to set.
	 */
	public void setExporter(IRecordExporter exporter) {
		this.exporter = exporter;
	}
}

⌨️ 快捷键说明

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