代码如下:
BookmarkOrganizer.java
[url=\] + bookmark.href
+ "\" ADD_DATE=\""
+ bookmark.addDate
+ "\" LAST_VISIT=\""
+ bookmark.lastVisited
+ "\" LAST_MODIFIED=\" +"
+ bookmark.lastModified
+ "\">"
+ bookmark.name
+ "</A>\n");
}
}
private void loadBookmark(File file, TreeItem rootItem) {
TreeItem parent = rootItem;
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while ((line = reader.readLine()) != null) {
line = line.trim();
if (line.startsWith(folderLinePrefix)) {
Matcher matcher = folderPattern.matcher(line);
if (matcher.find()) {
String addDate = matcher.group(1);
String name = matcher.group(2);
TreeItem item = new TreeItem(parent, SWT.NULL);
item.setText(name);
item.setData(KEY_ADD_DATE, addDate);
item.setImage(iconFolder);
parent = item;
}
} else if (line.startsWith(urlLinePrefix)) {
Matcher matcher = urlPattern.matcher(line);
if (matcher.find()) {
Bookmark bookmark = new Bookmark();
bookmark.href = matcher.group(1);
bookmark.addDate = matcher.group(2);
bookmark.lastVisited = matcher.group(3);
bookmark.lastModified = matcher.group(4);
bookmark.name = matcher.group(5);
TreeItem item = new TreeItem(parent, SWT.NULL);
item.setText(bookmark.name);
item.setData(bookmark);
item.setImage(iconURL);
}
} else if (line.equals("</DL><p>")) { // folder boundry.
parent = parent.getParentItem();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void setStatus(String message) {
label.setText(message);
}
public static void main(String[] args) {
new BookmarkOrganizer();
}
}
BookmarkTransfer.java
package swt_jface.demo11;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import org.eclipse.swt.dnd.ByteArrayTransfer;
import org.eclipse.swt.dnd.TransferData;
public class BookmarkTransfer extends ByteArrayTransfer {
private static final String BOOKMARK_TRANSFER_NAME = "BOOKMARK";
private static final int BOOKMARK_TRANSFER_ID =
registerType(BOOKMARK_TRANSFER_NAME);
private static final BookmarkTransfer instance = new BookmarkTransfer();
public static BookmarkTransfer getInstance() {
return instance;
}
protected int[] getTypeIds() {
return new int[] { BOOKMARK_TRANSFER_ID };
}
protected String[] getTypeNames() {
return new String[] { BOOKMARK_TRANSFER_NAME };
}
protected void javaToNative(Object object, TransferData transferData) {
if (object == null || !(object instanceof Bookmark)) return;
Bookmark bookmark = (Bookmark) object;
if (isSupportedType(transferData)) {
try {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(stream);
out.writeUTF(bookmark.name);
out.writeUTF(bookmark.href);
out.writeUTF(bookmark.addDate);
out.writeUTF(bookmark.lastVisited);
out.writeUTF(bookmark.lastModified);
out.close();
super.javaToNative(stream.toByteArray(), transferData);
} catch (IOException e) {
e.printStackTrace();
}
}
}
protected Object nativeToJava(TransferData transferData) {
if (isSupportedType(transferData)) {
byte[] raw = (byte[]) super.nativeToJava(transferData);
if (raw == null) return null;
Bookmark bookmark = new Bookmark();
try {
ByteArrayInputStream stream = new ByteArrayInputStream(raw);
DataInputStream in = new DataInputStream(stream);
bookmark.name = in.readUTF();
bookmark.href = in.readUTF();
bookmark.addDate = in.readUTF();
bookmark.lastVisited = in.readUTF();
bookmark.lastModified = in.readUTF();
in.close();
} catch (IOException e) {
e.printStackTrace();
return null;
}
return bookmark;
} else {
return null;
}
}
}
mybookmark.htm