📄 chatnote.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 + -