📄 simplefiletransfer.java
字号:
package net.sf.component.simplenote;import org.eclipse.swt.dnd.ByteArrayTransfer;import org.eclipse.swt.dnd.FileTransfer;import org.eclipse.swt.dnd.Transfer;import org.eclipse.swt.dnd.TransferData;/** * 实现支持gtk和win32的文件拷贝 * @author levin */public class SimpleFileTransfer extends ByteArrayTransfer { private static SimpleFileTransfer _instance = new SimpleFileTransfer(); private static final String GNOME_LIST = "x-special/gnome-copied-files"; //$NON-NLS-1$ private static final int GNOME_LIST_ID = registerType(GNOME_LIST); private static final String CF_HDROP = "CF_HDROP "; //$NON-NLS-1$ private static final int CF_HDROPID = 15; //COM.CF_HDROP 跨平台,直接用常量 private SimpleFileTransfer() {} public static Transfer getInstance() { return _instance; } @Override protected int[] getTypeIds() { return new int[]{CF_HDROPID,GNOME_LIST_ID}; } @Override protected String[] getTypeNames() { return new String[]{CF_HDROP,GNOME_LIST}; } @Override protected Object nativeToJava(TransferData transferData) { if (!isSupportedType(transferData)) return null; //直接处理gtk-gnome下的文件拷贝,是用copy file:///file1 file://file2这样的格式 if(transferData.type == GNOME_LIST_ID){ byte[] data=(byte[]) super.nativeToJava(transferData); if(data == null) return null; String fnames=new String(data); if(fnames == null || fnames.length() < 5) return null; fnames=fnames.substring(5); String[] fs=fnames.split("\n"); for(int i=0;i<fs.length;i++){ if(fs[i] != null && fs[i].length() >8) fs[i]=fs[i].substring(7); } return fs; }else if(transferData.type == CF_HDROPID){ //win32下是正常的,直接调度一下 return FileTransfer.getInstance().nativeToJava(transferData); } //不会到这 return null; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -