SWTJFaceBookmark制作
制作
2023-06-13 09:14:10 时间
代码如下:
BookmarkOrganizer.java
复制代码代码如下:
BookmarkOrganizer.java
packageswt_jface.demo11;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
importorg.eclipse.swt.SWT;
importorg.eclipse.swt.dnd.DND;
importorg.eclipse.swt.dnd.DragSource;
importorg.eclipse.swt.dnd.DragSourceAdapter;
importorg.eclipse.swt.dnd.DragSourceEvent;
importorg.eclipse.swt.dnd.DropTarget;
importorg.eclipse.swt.dnd.DropTargetAdapter;
importorg.eclipse.swt.dnd.DropTargetEvent;
importorg.eclipse.swt.dnd.Transfer;
importorg.eclipse.swt.events.SelectionAdapter;
importorg.eclipse.swt.events.SelectionEvent;
importorg.eclipse.swt.graphics.Image;
importorg.eclipse.swt.layout.GridData;
importorg.eclipse.swt.layout.GridLayout;
importorg.eclipse.swt.widgets.Display;
importorg.eclipse.swt.widgets.Event;
importorg.eclipse.swt.widgets.FileDialog;
importorg.eclipse.swt.widgets.Label;
importorg.eclipse.swt.widgets.Listener;
importorg.eclipse.swt.widgets.Shell;
importorg.eclipse.swt.widgets.ToolBar;
importorg.eclipse.swt.widgets.ToolItem;
importorg.eclipse.swt.widgets.Tree;
importorg.eclipse.swt.widgets.TreeItem;
classBookmark{
publicStringname;
publicStringhref;
publicStringaddDate;
publicStringlastVisited;
publicStringlastModified;
}
publicclassBookmarkOrganizer{
privatestaticStringfolderLinePrefix="<DT><H3FOLDED";
privatestaticStringurlLinePrefix="<DT><AHREF";
privatestaticPatternfolderPattern=Pattern.compile("\"(\\d+)\">(.*)<");
privatestaticPatternurlPattern=Pattern.compile("\"(.*)\".*\"(.*)\".*\"(.*)\".*\"(.*)\">(.*)<");
privatestaticStringKEY_ADD_DATE="ADD_DATE";
//privatestaticStringKEY_HREF="HREF";
//privatestaticStringKEY_LAST_VISITED="LAST_VISITED";
//privatestaticStringKEY_LAST_MODIFIED="LAST_MODIFIED";
Displaydisplay=newDisplay();
Shellshell=newShell(display);
Treetree;
Labellabel;
TreeItemrootItem;
ImageiconRoot=newImage(display,"C:/icons/icon.gif");
ImageiconFolder=newImage(display,"C:/icons/folder.gif");
ImageiconURL=newImage(display,"C:/icons/file.gif");
TreeItemdragSourceItem;
publicBookmarkOrganizer(){
shell.setText("Bookmarkorganizer");
shell.setLayout(newGridLayout(1,true));
ToolBartoolBar=newToolBar(shell,SWT.FLAT);
ToolItemitemOpen=newToolItem(toolBar,SWT.PUSH);
itemOpen.setText("Load");
itemOpen.addListener(SWT.Selection,newListener(){
publicvoidhandleEvent(Eventevent){
FileDialogdialog=newFileDialog(shell,SWT.OPEN);
Stringfile=dialog.open();
if(file!=null){
TreeItem[]items=rootItem.getItems();
for(inti=0;i<items.length;i++)
items[i].dispose();
loadBookmark(newFile(file),rootItem);
setStatus("Bookmarksloadedsuccessfully");
}
}
});
ToolItemitemSave=newToolItem(toolBar,SWT.PUSH);
itemSave.setText("Saveas");
itemSave.addListener(SWT.Selection,newListener(){
publicvoidhandleEvent(Eventevent){
FileDialogdialog=newFileDialog(shell,SWT.SAVE);
Stringfile=dialog.open();
if(file!=null){
try{
BufferedWriterwriter=
newBufferedWriter(newFileWriter(file));
saveBookmark(writer,rootItem);
writer.close();
setStatus(
"Bookmarkssavedsuccessfullytofile:"+file);
}catch(IOExceptione){
e.printStackTrace();
}
}
}
});
tree=newTree(shell,SWT.BORDER);
tree.setLayoutData(newGridData(GridData.FILL_BOTH));
rootItem=newTreeItem(tree,SWT.NULL);
rootItem.setText("BOOKMARKS");
rootItem.setImage(iconRoot);
label=newLabel(shell,SWT.BORDER);
label.setLayoutData(newGridData(GridData.FILL_HORIZONTAL));
finalDragSourcedragSource=
newDragSource(tree,DND.DROP_MOVE|DND.DROP_COPY|DND.DROP_LINK);
dragSource.setTransfer(
newTransfer[]{BookmarkTransfer.getInstance()});
dragSource.addDragListener(newDragSourceAdapter(){
publicvoiddragStart(DragSourceEventevent){
TreeItem[]selection=tree.getSelection();
if(selection.length>0&&selection[0].getData()!=null){
event.doit=true;
dragSourceItem=selection[0];
}else{
event.doit=false;
}
};
publicvoiddragSetData(DragSourceEventevent){
if(BookmarkTransfer
.getInstance()
.isSupportedType(event.dataType))
event.data=dragSourceItem.getData();
}
publicvoiddragFinished(DragSourceEventevent){
if(event.detail==DND.DROP_MOVE)
dragSourceItem.dispose();
dragSourceItem=null;
}
});
finalDropTargetdropTarget=
newDropTarget(tree,DND.DROP_MOVE|DND.DROP_COPY|DND.DROP_LINK);
dropTarget.setTransfer(
newTransfer[]{BookmarkTransfer.getInstance()});
dropTarget.addDropListener(newDropTargetAdapter(){
publicvoiddragOver(DropTargetEventevent){
event.feedback=
DND.FEEDBACK_EXPAND
|DND.FEEDBACK_SCROLL
|DND.FEEDBACK_SELECT;
}
publicvoiddropAccept(DropTargetEventevent){
if(event.item==null
||((TreeItem)event.item).getData()!=null)
event.detail=DND.DROP_NONE;
}
publicvoiddrop(DropTargetEventevent){
try{
if(event.data==null){
event.detail=DND.DROP_NONE;
return;
}
TreeItemitem=newTreeItem((TreeItem)event.item,SWT.NULL);
Bookmarkbookmark=(Bookmark)event.data;
item.setText(bookmark.name);
item.setImage(iconURL);
item.setData(bookmark);
}catch(RuntimeExceptione){
e.printStackTrace();
}
}
});
tree.addSelectionListener(newSelectionAdapter(){
publicvoidwidgetSelected(SelectionEvente){
TreeItemitem=(TreeItem)e.item;
Bookmarkbookmark=(Bookmark)item.getData();
if(bookmark!=null){
setStatus(bookmark.href);
}elseif(item.getData(KEY_ADD_DATE)!=null){
setStatus("Folder:"+item.getText());
}
}
});
shell.setSize(400,300);
shell.open();
loadBookmark(newFile("C:/icons/mybookmark.htm"),rootItem);
while(!shell.isDisposed()){
if(!display.readAndDispatch()){
display.sleep();
}
}
display.dispose();
}
privatevoidsaveBookmark(BufferedWriterwriter,TreeItemitem)
throwsIOException{
if(item.getData()==null
&&item.getData(KEY_ADD_DATE)==null){
writer.write(
"<!DOCTYPENETSCAPE-Bookmark-file-1>\n"
+"<!--Thisisanautomaticallygeneratedfile.\n"
+"Itwillbereadandoverwritten.\n"
+"DoNotEdit!-->\n"
+"<TITLE>Bookmarks</TITLE>\n"
+"<H1>Bookmarks</H1>\n"
+"<DL><p>\n");
TreeItem[]items=item.getItems();
for(inti=0;i<items.length;i++)
saveBookmark(writer,items[i]);
writer.write("</DL><p>\n");
}elseif(item.getData()==null){
writer.write(
"\t<DT><H3FOLDEDADD_DATE=\""
+item.getData(KEY_ADD_DATE)
+"\">"
+item.getText()
+"</H3>\n");
writer.write("\t<DL><p>\n");
TreeItem[]items=item.getItems();
for(inti=0;i<items.length;i++)
saveBookmark(writer,items[i]);
writer.write("\t</DL><p>\n");
}else{
Bookmarkbookmark=(Bookmark)item.getData();
writer.write(
"\t\t<DT><AHREF="\"HREF="\"""
+bookmark.href
+"\"ADD_DATE=\""
+bookmark.addDate
+"\"LAST_VISIT=\""
+bookmark.lastVisited
+"\"LAST_MODIFIED=\"+"
+bookmark.lastModified
+"\">"
+bookmark.name
+"</A>\n");
}
}
privatevoidloadBookmark(Filefile,TreeItemrootItem){
TreeItemparent=rootItem;
try{
BufferedReaderreader=newBufferedReader(newFileReader(file));
Stringline=null;
while((line=reader.readLine())!=null){
line=line.trim();
if(line.startsWith(folderLinePrefix)){
Matchermatcher=folderPattern.matcher(line);
if(matcher.find()){
StringaddDate=matcher.group(1);
Stringname=matcher.group(2);
TreeItemitem=newTreeItem(parent,SWT.NULL);
item.setText(name);
item.setData(KEY_ADD_DATE,addDate);
item.setImage(iconFolder);
parent=item;
}
}elseif(line.startsWith(urlLinePrefix)){
Matchermatcher=urlPattern.matcher(line);
if(matcher.find()){
Bookmarkbookmark=newBookmark();
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);
TreeItemitem=newTreeItem(parent,SWT.NULL);
item.setText(bookmark.name);
item.setData(bookmark);
item.setImage(iconURL);
}
}elseif(line.equals("</DL><p>")){//folderboundry.
parent=parent.getParentItem();
}
}
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
privatevoidsetStatus(Stringmessage){
label.setText(message);
}
publicstaticvoidmain(String[]args){
newBookmarkOrganizer();
}
}
BookmarkTransfer.java
packageswt_jface.demo11;
importjava.io.ByteArrayInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.IOException;
importorg.eclipse.swt.dnd.ByteArrayTransfer;
importorg.eclipse.swt.dnd.TransferData;
publicclassBookmarkTransferextendsByteArrayTransfer{
privatestaticfinalStringBOOKMARK_TRANSFER_NAME="BOOKMARK";
privatestaticfinalintBOOKMARK_TRANSFER_ID=
registerType(BOOKMARK_TRANSFER_NAME);
privatestaticfinalBookmarkTransferinstance=newBookmarkTransfer();
publicstaticBookmarkTransfergetInstance(){
returninstance;
}
protectedint[]getTypeIds(){
returnnewint[]{BOOKMARK_TRANSFER_ID};
}
protectedString[]getTypeNames(){
returnnewString[]{BOOKMARK_TRANSFER_NAME};
}
protectedvoidjavaToNative(Objectobject,TransferDatatransferData){
if(object==null||!(objectinstanceofBookmark))return;
Bookmarkbookmark=(Bookmark)object;
if(isSupportedType(transferData)){
try{
ByteArrayOutputStreamstream=newByteArrayOutputStream();
DataOutputStreamout=newDataOutputStream(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(IOExceptione){
e.printStackTrace();
}
}
}
protectedObjectnativeToJava(TransferDatatransferData){
if(isSupportedType(transferData)){
byte[]raw=(byte[])super.nativeToJava(transferData);
if(raw==null)returnnull;
Bookmarkbookmark=newBookmark();
try{
ByteArrayInputStreamstream=newByteArrayInputStream(raw);
DataInputStreamin=newDataInputStream(stream);
bookmark.name=in.readUTF();
bookmark.href=in.readUTF();
bookmark.addDate=in.readUTF();
bookmark.lastVisited=in.readUTF();
bookmark.lastModified=in.readUTF();
in.close();
}catch(IOExceptione){
e.printStackTrace();
returnnull;
}
returnbookmark;
}else{
returnnull;
}
}
}
mybookmark.htm
相关文章
- html里制作简单导航栏
- 网页游戏制作_怎么制作app软件
- html静态网页制作教程_简单html静态网页代码 首页
- 【Techo Day腾讯技术开放日】:云游万里,只为特别的你制作一份邀请函
- Audition2020:专业音频编辑软件中的制作大师+全版本安装包
- Family Tree Maker 2019 for Mac(族谱家谱制作软件)
- Linux系统镜像实现快速部署(linux系统镜像制作)
- 三星与《寄生虫》发行公司CJ ENM建立首个虚拟制作工作室
- Linux幻灯片制作指南: 让您的演讲更专业(linux幻灯片)
- 制作高效优质补丁:Linux补丁制作全解析(linux补丁制作)
- 如何快速搭建便捷的Redis集群(如何制作redis集群)