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

📄 chatnote.java

📁 mywork是rcp开发的很好的例子
💻 JAVA
字号:
package net.sf.p2pim;

import java.io.File;

import net.sf.component.config.ConfigHelper;
import net.sf.component.simplenote.FileProxy;
import net.sf.component.simplenote.ImageProxy;
import net.sf.component.simplenote.SimpleNote;
import net.sf.util.StringUtil;

import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
/**
 * @author levin
 * @since 2007-11-2
 */
public class ChatNote extends Composite implements MouseListener {
	private SimpleNote simpleNote;
	private Button sendButton;
	public ChatNote(Composite parent, int style) {
		super(parent, style);
		init();
	}

	private void init() {
		GridLayout layout = new GridLayout();
		layout.numColumns = 1;
		layout.marginHeight = 0;
		layout.marginWidth = 0;
		layout.verticalSpacing =0;
		this.setLayout(layout);
		GridDataFactory.fillDefaults().grab(true, true).applyTo(this);

		Composite faces=new Composite(this,SWT.NULL);
		{
			faces.setLayout(new RowLayout(SWT.HORIZONTAL));
//			createAttachmentLabel(faces);
			//显示图片集
			for(int i=1;i<15;i++){
				Label picLabel=new Label(faces,SWT.NULL);
				String picName = (i<10?"0"+i:""+i)+".jpg";
				picLabel.setImage(P2PActivator.getImageDescriptor("icons/faces/" + picName).createImage());
				picLabel.setData("picName", picName);
				picLabel.addMouseListener(this);
			}
		}
		Composite note=new Composite(this,SWT.NULL);
		GridDataFactory.fillDefaults().grab(true, true).applyTo(note);
		GridLayout noteLayout = new GridLayout();
		noteLayout.numColumns = 2;
		layout.marginHeight = 0;
		layout.marginWidth = 0;
		layout.verticalSpacing =0;
		note.setLayout(noteLayout);
		simpleNote = new SimpleNote(note,SWT.WRAP | SWT.V_SCROLL);
		simpleNote.setBasePath(ConfigHelper.getDataHome());
		GridDataFactory.fillDefaults().grab(true, true).applyTo(simpleNote);
		
		//CTRL+ENTER 发送
		simpleNote.addKeyListener(new KeyAdapter(){
			@Override
			public void keyPressed(KeyEvent e) {
				if(e.keyCode == 13 && e.stateMask == SWT.CTRL && StringUtil.isNotNull(sendButton.getData("ACTION"))){
					((SelectionListener)sendButton.getData("ACTION")).widgetSelected(null);
				}
				super.keyPressed(e);
			}
		});
		
		sendButton = new Button(note,SWT.PUSH);
		sendButton.setText("发送");
	}

	private void createAttachmentLabel(Composite faces) {
		Label att=new Label(faces,SWT.NULL);
		att.setImage(P2PActivator.getImageDescriptor("icons/faces/99.jpg").createImage());
		att.addMouseListener(new MouseListener(){
			
			public void mouseDoubleClick(MouseEvent e) {
			}

			public void mouseDown(MouseEvent e) {
			}

			public void mouseUp(MouseEvent e) {
				FileDialog dialog = new FileDialog(ChatNote.this.getShell());
				String filename = dialog.open();
				if (filename != null) {
					try {
						if(SimpleNote.maybeImageFile(filename))
							simpleNote.addElement(new ImageProxy(new ImageData(filename)));
						else
							simpleNote.addElement(new FileProxy(new File(filename)));
					} catch (Exception ex) {
						ex.printStackTrace();
					}
				}				
			}
		});
	}

	public SimpleNote getSimpleNote() {
		return simpleNote;
	}

	public void mouseDoubleClick(MouseEvent e) {
	}

	public void mouseDown(MouseEvent e) {
	}

	public void mouseUp(MouseEvent e) {
		Label widget = (Label)e.widget;
		//对图释的位置和大小进行约定
		String imgPath="data/embed/faces/"+(String) widget.getData("picName");
		simpleNote.addElement(new ImageProxy(imgPath,22,22));
	}
	
	public void addSendListender(SelectionListener listener){
		sendButton.addSelectionListener(listener);
		sendButton.setData("ACTION", listener);
	}
	
	public void setChatEnabled(boolean chatEnable){
		sendButton.setEnabled(chatEnable);
		simpleNote.setEnabled(chatEnable);
	}
}

⌨️ 快捷键说明

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