SWT JFace Bookmark Making _java programming

Source: Internet
Author: User
Tags gettext object object
The code is as follows:


Bookmarkorganizer.java


Copy Code code as follows:



Package swt_jface.demo11;


Import Java.io.BufferedReader;


Import Java.io.BufferedWriter;


Import Java.io.File;


Import java.io.FileNotFoundException;


Import Java.io.FileReader;


Import Java.io.FileWriter;


Import java.io.IOException;


Import Java.util.regex.Matcher;


Import Java.util.regex.Pattern;


Import Org.eclipse.swt.SWT;


Import Org.eclipse.swt.dnd.DND;


Import Org.eclipse.swt.dnd.DragSource;


Import Org.eclipse.swt.dnd.DragSourceAdapter;


Import org.eclipse.swt.dnd.DragSourceEvent;


Import Org.eclipse.swt.dnd.DropTarget;


Import Org.eclipse.swt.dnd.DropTargetAdapter;


Import org.eclipse.swt.dnd.DropTargetEvent;


Import Org.eclipse.swt.dnd.Transfer;


Import Org.eclipse.swt.events.SelectionAdapter;


Import org.eclipse.swt.events.SelectionEvent;


Import Org.eclipse.swt.graphics.Image;


Import Org.eclipse.swt.layout.GridData;


Import Org.eclipse.swt.layout.GridLayout;


Import Org.eclipse.swt.widgets.Display;


Import org.eclipse.swt.widgets.Event;


Import Org.eclipse.swt.widgets.FileDialog;


Import Org.eclipse.swt.widgets.Label;


Import Org.eclipse.swt.widgets.Listener;


Import Org.eclipse.swt.widgets.Shell;


Import Org.eclipse.swt.widgets.ToolBar;


Import Org.eclipse.swt.widgets.ToolItem;


Import Org.eclipse.swt.widgets.Tree;


Import Org.eclipse.swt.widgets.TreeItem;


Class Bookmark {


public String name;


public String href;


Public String adddate;


Public String lastvisited;


Public String lastmodified;


}


public class Bookmarkorganizer {





private static String Folderlineprefix = "<dt><h3 FOLDED";


private static String Urllineprefix = "<dt><a HREF";


private static Pattern Folderpattern = Pattern.compile ("\" (\\d+) \ > (. *) <);


private static Pattern Urlpattern = Pattern.compile (. *) \. *\ (. *) \ ". *\" (. *) \ ". *\" (. *) \ > (. *) <);


private static String key_add_date = "Add_date";


private static String Key_href = "HREF";


private static String key_last_visited = "last_visited";


private static String key_last_modified = "last_modified";


Display display = new display ();


Shell shell = new shell (display);


Tree tree;


Label label;


TreeItem Rootitem;


Image iconroot = new Image (Display, "c:/icons/icon.gif");


Image iconfolder = new Image (Display, "c:/icons/folder.gif");


Image iconurl = new Image (Display, "c:/icons/file.gif");


TreeItem Dragsourceitem;


Public Bookmarkorganizer () {





Shell.settext ("Bookmark organizer");


Shell.setlayout (New GridLayout (1, true));


ToolBar ToolBar = new ToolBar (Shell, SWT. FLAT);


Toolitem Itemopen = new Toolitem (ToolBar, SWT. PUSH);


Itemopen.settext ("Load");


Itemopen.addlistener (SWT. Selection, New Listener () {


public void Handleevent (event event) {


FileDialog dialog = new FileDialog (Shell, SWT. OPEN);


String file = Dialog.open ();


if (file!= null) {


treeitem[] items = Rootitem.getitems ();


for (int i = 0; i < items.length; i++)


Items[i].dispose ();


Loadbookmark (new file (file), Rootitem);


SetStatus ("Bookmarks loaded successfully");


}


}


});


Toolitem itemsave = new Toolitem (ToolBar, SWT. PUSH);


Itemsave.settext ("Save as");


Itemsave.addlistener (SWT. Selection, New Listener () {


public void Handleevent (event event) {


FileDialog dialog = new FileDialog (Shell, SWT. SAVE);


String file = Dialog.open ();


if (file!= null) {


try {


BufferedWriter writer =


New BufferedWriter (new FileWriter (file));


Savebookmark (writer, rootitem);


Writer.close ();


SetStatus (


"Bookmarks saved successfully to file:" + file);


catch (IOException e) {


E.printstacktrace ();


}


}


}


});


Tree = new Tree (shell, SWT. BORDER);


Tree.setlayoutdata (New Griddata (Griddata.fill_both));


Rootitem = new TreeItem (tree, SWT. NULL);


Rootitem.settext ("BOOKMARKS");


Rootitem.setimage (Iconroot);


Label = new label (Shell, SWT. BORDER);


Label.setlayoutdata (New Griddata (griddata.fill_horizontal));


Final DragSource DragSource =


New DragSource (tree, DND. Drop_move | Dnd. drop_copy | Dnd. Drop_link);


Dragsource.settransfer (


New transfer[] {bookmarktransfer.getinstance ()});


Dragsource.adddraglistener (New Dragsourceadapter () {


public void DragStart (Dragsourceevent event) {


treeitem[] selection = Tree.getselection ();


if (selection.length > 0 && selection[0].getdata ()!= null) {


Event.doit = true;


Dragsourceitem = selection[0];


} else {


Event.doit = false;


}


};


public void Dragsetdata (Dragsourceevent event) {


if (bookmarktransfer


. getinstance ()


. Issupportedtype (Event.datatype))


Event.data = Dragsourceitem.getdata ();


}


public void dragfinished (Dragsourceevent event) {


if (Event.detail = = DND. Drop_move)


Dragsourceitem.dispose ();


Dragsourceitem = null;


}


});


Final DropTarget DropTarget =


New DropTarget (tree, DND. Drop_move | Dnd. drop_copy | Dnd. Drop_link);


Droptarget.settransfer (


New transfer[] {bookmarktransfer.getinstance ()});


Droptarget.adddroplistener (New Droptargetadapter () {


public void DragOver (Droptargetevent event) {


Event.feedback =


Dnd. Feedback_expand


| Dnd. Feedback_scroll


| Dnd. Feedback_select;


}


public void Dropaccept (Droptargetevent event) {


if (Event.item = null


|| ((TreeItem) event.item). GetData ()!= null)


Event.detail = DND. Drop_none;


}


public void Drop (Droptargetevent event) {


try {


if (Event.data = = null) {


Event.detail = DND. Drop_none;


Return


}


TreeItem item = new TreeItem (TreeItem) Event.item, SWT. NULL);


Bookmark bookmark = (bookmark) event.data;


Item.settext (Bookmark.name);


Item.setimage (Iconurl);


Item.setdata (bookmark);


catch (RuntimeException e) {


E.printstacktrace ();


}


}


});


Tree.addselectionlistener (New Selectionadapter () {


public void widgetselected (Selectionevent e) {


TreeItem item = (TreeItem) e.item;


Bookmark bookmark = (bookmark) item.getdata ();


if (bookmark!= null) {


SetStatus (BOOKMARK.HREF);


else if (Item.getdata (key_add_date)!= null) {


SetStatus ("folder:" + Item.gettext ());


}


}


});


Shell.setsize (400, 300);


Shell.open ();


Loadbookmark (New File ("c:/icons/mybookmark.htm"), Rootitem);


while (!shell.isdisposed ()) {


if (!display.readanddispatch ()) {


Display.sleep ();


}


}


Display.dispose ();


}


private void Savebookmark (bufferedwriter writer, TreeItem item)


Throws IOException {


if (item.getdata () = null


&& item.getdata (key_add_date) = = null) {


Writer.write (


"<! DOCTYPE netscape-bookmark-file-1>\n "


+ "<!--this are an automatically generated file.\n"


+ "It'll be read and overwritten.\n"


+ ' Do not edit! -->\n "


+ "<title>bookmarks</title>\n"


+ "<h1>bookmarks</h1>\n"


+ "<dl><p>\n");


treeitem[] items = Item.getitems ();


for (int i = 0; i < items.length; i++)


Savebookmark (writer, items[i]);


Writer.write ("</dl><p>\n");


else if (item.getdata () = null) {


Writer.write (


"\t<dt><h3 FOLDED add_date=\" "


+ Item.getdata (key_add_date)


+ ">"


+ Item.gettext ()


+ "</h3>\n");


Writer.write ("\t<dl><p>\n");


treeitem[] items = Item.getitems ();


for (int i = 0; i < items.length; i++)


Savebookmark (writer, items[i]);


Writer.write ("\t</dl><p>\n");


} else {


Bookmark bookmark = (bookmark) item.getdata ();


Writer.write (


"\t\t<dt><a href=" \ "href=" \ "" "


+ 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


Copy Code code as follows:



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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.