linkfilefigure.java
来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 78 行
JAVA
78 行
package net.sf.freenote.figure;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import net.sf.util.TousleUtil;
import org.eclipse.draw2d.ActionEvent;
import org.eclipse.draw2d.ActionListener;
import org.eclipse.draw2d.Button;
import org.eclipse.draw2d.Label;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.program.Program;
import org.eclipse.swt.widgets.Display;
import sun.misc.BASE64Decoder;
/**
* 将文件显示为可点击的链接
* @author levin
* @since 2008-1-20 下午03:58:40
*/
public class LinkFileFigure extends Button implements FileFigure {
private String[] fileEmbed;
public LinkFileFigure() {
super();
this.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent event) {
if(fileEmbed.length !=2 || fileEmbed[0] == null) return;
//开一个线程看文件
Runnable run=new Runnable(){
@Override
public void run() {
try {
File f = File.createTempFile("freenote", "."+getTail(fileEmbed[0],'.'));
TousleUtil.copyIntput2Output(new ByteArrayInputStream(new BASE64Decoder().decodeBuffer(fileEmbed[1])), new FileOutputStream(f));
Program.launch(f.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
}
}
};
new Thread(run).start();
}
});
}
public void setFileEmbed(String[] fileEmbed) {
if(fileEmbed.length !=2 || fileEmbed[0] == null) return;
this.fileEmbed = fileEmbed;
this.setContents(new Label(fileEmbed[0],getImage(fileEmbed[0])));
this.setToolTip(new Label(fileEmbed[0]));
}
//取某类文件的图标
public static Image getImage(String fileName){
String fileType=getTail(fileName,'.');
Image image = null;
Program p = Program.findProgram ("."+fileType);
if (p != null) {
ImageData data = p.getImageData ();
if (data != null) {
image = new Image (Display.getDefault(), data);
}
}
return image;
}
//取某个字串的后半截,如文件扩展名等
public static String getTail(String full,char delim){
if(full.lastIndexOf(delim) == -1)
return null;
return full.substring(full.lastIndexOf(delim)+1);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?