SWT (JFace) Small production Filebrowser file browsing _java programming

Source: Internet
Author: User
The code is as follows:


Copy Code code as follows:



Package Swt_jface.demo6;


Import Java.io.File;


Import Java.util.Date;


Import Org.eclipse.jface.resource.ImageRegistry;


Import Org.eclipse.swt.SWT;


Import Org.eclipse.swt.graphics.Image;


Import Org.eclipse.swt.layout.GridData;


Import Org.eclipse.swt.layout.GridLayout;


Import Org.eclipse.swt.program.Program;


Import Org.eclipse.swt.widgets.Display;


Import Org.eclipse.swt.widgets.Shell;


Import org.eclipse.swt.widgets.Table;


Import Org.eclipse.swt.widgets.TableColumn;


Import Org.eclipse.swt.widgets.TableItem;


public class Filebrowser {





Display display = new display ();


Shell shell = new shell (display);


Table table;


File RootDir;


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


Image iconfile = new Image (Shell.getdisplay (), "c:/icons/file.gif");





Public Filebrowser () {





GridLayout GridLayout = new GridLayout ();


Shell.setlayout (gridLayout);


Table = new Table (Shell, SWT. BORDER | Swt. Full_selection);


Table.setlinesvisible (TRUE);


Table.setheadervisible (TRUE);


TableColumn tcfilename = new TableColumn (table, SWT. left);


Tcfilename.settext ("File name");


Tcfilename.setimage (New Image (Shell.getdisplay (), "icons/folder.gif"));


TableColumn tcfilesize = new TableColumn (table, SWT. right);


Tcfilesize.settext ("Size");





TableColumn tcdatemodified = new TableColumn (table, SWT. right);


Tcdatemodified.settext ("Date Modified");


Tcfilename.setwidth (200);


Tcfilesize.setwidth (80);


Tcdatemodified.setwidth (180);


Tableitem item = new Tableitem (table, SWT. NULL);


Item.settext (New string[]{"Name", "Size"});


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


Table.pack ();





Shell.pack ();


Shell.open ();


Setrootdirectory (New File ("."));





while (!shell.isdisposed ()) {


if (!display.readanddispatch ()) {


Display.sleep ();


}


}


Display.dispose ();


}





private void Setrootdirectory (File dir) {


This.rootdir = dir;


if (! (Dir.exists () && dir.isdirectory ())


throw new IllegalArgumentException ("Invalid directory.");


Table.removeall ();


file[] files = dir.listfiles ();


for (int i=0; files!= null && i < files.length; i++) {


File file = Files[i];


Tableitem item = new Tableitem (table, SWT. NULL);


Item.setbackground (i% 2 = 0 shell.getdisplay (). Getsystemcolor (SWT. Color_white):


Shell.getdisplay (). Getsystemcolor (SWT. Color_gray));


Item.settext (0, File.getname ());


Item.settext (2, New Date (File.lastmodified ()). ToString ());


if (File.isdirectory ()) {


Item.setimage (0, Iconfolder);


}else{


int lastdot = File.getname (). LastIndexOf ('. ');


if (lastdot >= 0 && Lastdot < file.getname (). Length ()) {


Item.setimage (0, GetIcon (file.getname (). substring (lastdot+1)));


}


Long Kbytes = File.length ()/1024;


if (Kbytes = 0)


Kbytes = 1;


Item.settext (1, Kbytes + "KB");


}


}


}





Private Imageregistry imageregistry;





Public Image GetIcon (String extension) {


if (imageregistry = null)


Imageregistry = new Imageregistry ();


Image image = imageregistry.get (extension);


if (image!= null)


return image;


Program program = program.findprogram (extension);


if (program!= null) {


Image = New Image (Shell.getdisplay (), Program.getimagedata ());


Imageregistry.put (extension, image);


}else{


image = IconFile;


}


return image;


}


public static void Main (string[] args) {


New Filebrowser ();


}


}





More examples of table operations:


Copy Code code as follows:



Package Swt_jface.demo6;


Import Org.eclipse.swt.SWT;


Import Org.eclipse.swt.custom.TableEditor;


Import Org.eclipse.swt.graphics.Point;


Import Org.eclipse.swt.graphics.Rectangle;


Import Org.eclipse.swt.layout.FillLayout;


Import Org.eclipse.swt.widgets.Display;


Import org.eclipse.swt.widgets.Event;


Import Org.eclipse.swt.widgets.Listener;


Import Org.eclipse.swt.widgets.Shell;


Import org.eclipse.swt.widgets.Table;


Import Org.eclipse.swt.widgets.TableColumn;


Import Org.eclipse.swt.widgets.TableItem;


Import Org.eclipse.swt.widgets.Text;


public class Main {





public static void Main (string[] args) {





Display display = new display ();


Shell shell = new shell (display);


Shell.setlayout (New Filllayout ());


Final table table = new Table (Shell, SWT. BORDER | Swt. MULTI);


Table.setlinesvisible (TRUE);


for (int i = 0; i < 3; i++) {


TableColumn column = new TableColumn (table, SWT. NONE);


Column.setwidth (100);


}


for (int i = 0; i < 3; i++) {


Tableitem item = new Tableitem (table, SWT. NONE);


Item.settext (new string[] {"" + I, "" + I, "" + i});


}


Final Tableeditor editor = new tableeditor (table);


Editor.horizontalalignment = SWT. Left;


Editor.grabhorizontal = true;


Table.addlistener (SWT. MouseDown, New Listener () {


public void Handleevent (event event) {


Rectangle Clientarea = Table.getclientarea ();


Point pt = new Point (Event.x, EVENT.Y);


int index = Table.gettopindex ();


while (Index < Table.getitemcount ()) {


Boolean visible = false;


Final Tableitem item = table.getitem (index);


for (int i = 0; i < Table.getcolumncount (); i++) {


Rectangle rect = item.getbounds (i);


if (Rect.contains (PT)) {


Final int column = i;


Final text = new text (table, SWT. NONE);


Listener textlistener = new Listener () {


public void Handleevent (final Event e) {


Switch (e.type) {


Case SWT. Focusout:


Item.settext (column, Text.gettext ());


Text.dispose ();


Break


Case SWT. Traverse:


Switch (e.detail) {


Case SWT. Traverse_return:


Item.settext (column, Text.gettext ());


Case SWT. Traverse_escape:


Text.dispose ();


E.doit = false;


}


Break


}


}


};


Text.addlistener (SWT. Focusout, TextListener);


Text.addlistener (SWT. Traverse, TextListener);


Editor.seteditor (text, item, i);


Text.settext (Item.gettext (i));


Text.selectall ();


Text.setfocus ();


Return


}


if (!visible && rect.intersects (Clientarea)) {


Visible = true;


}


}


if (!visible)


Return


index++;


}


}


});


Shell.pack ();


Shell.open ();


while (!shell.isdisposed ()) {


if (!display.readanddispatch ())


Display.sleep ();


}


Display.dispose ();


}


}





The following code is an enhancement to the Filebrowser feature:


Implementation 1:


Filebrowser.java


Copy Code code as follows:



Package Swt_jface.demo7;


Import Java.io.File;


Import org.eclipse.jface.action.Action;


Import Org.eclipse.jface.action.ToolBarManager;


Import Org.eclipse.jface.resource.ImageRegistry;


Import Org.eclipse.swt.SWT;


Import Org.eclipse.swt.custom.TreeEditor;


Import org.eclipse.swt.events.SelectionEvent;


Import Org.eclipse.swt.events.SelectionListener;


Import org.eclipse.swt.events.TreeEvent;


Import Org.eclipse.swt.events.TreeListener;


Import Org.eclipse.swt.graphics.Image;


Import Org.eclipse.swt.graphics.ImageData;


Import Org.eclipse.swt.graphics.Point;


Import Org.eclipse.swt.layout.GridData;


Import Org.eclipse.swt.layout.GridLayout;


Import Org.eclipse.swt.program.Program;


Import Org.eclipse.swt.widgets.DirectoryDialog;


Import Org.eclipse.swt.widgets.Display;


Import org.eclipse.swt.widgets.Event;


Import Org.eclipse.swt.widgets.Listener;


Import Org.eclipse.swt.widgets.Shell;


Import Org.eclipse.swt.widgets.Text;


Import Org.eclipse.swt.widgets.ToolBar;


Import Org.eclipse.swt.widgets.Tree;


Import Org.eclipse.swt.widgets.TreeItem;


public class Filebrowser {





Display display = new display ();


Shell shell = new shell (display);


Tree tree;


File RootDir;


Public Filebrowser () {





Action Actionsetrootdir = new Action ("Set Root Dir") {


public void Run () {


Directorydialog dialog = new Directorydialog (shell);


String path = Dialog.open ();


if (path!= null) {


Setrootdir (new File (path));


}


}


};


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


Toolbarmanager manager = new Toolbarmanager (ToolBar);


Manager.add (Actionsetrootdir);


Manager.update (TRUE);


Shell.setlayout (New GridLayout ());


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


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


Setrootdir (New File ("C:/temp"));


Tree.addtreelistener (New Treelistener () {


public void treecollapsed (Treeevent e) {


}


public void treeexpanded (Treeevent e) {


TreeItem item = (TreeItem) e.item;


Treeitem[] Children = Item.getitems ();


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


if (children[i].getdata () = null)


Children[i].dispose ();


Else


Return


file[] files = ((File) Item.getdata ()). Listfiles ();


for (int i = 0; files!= null && i < files.length; i++)


Addfiletotree (item, files[i]);


}


});


Tree.addselectionlistener (New Selectionlistener () {


public void widgetselected (Selectionevent e) {


}


public void widgetdefaultselected (Selectionevent e) {


TreeItem item = (TreeItem) e.item;


File File = (file) item.getdata ();


if (Program.launch (File.getabsolutepath ())) {


SYSTEM.OUT.PRINTLN ("File has been launched:" + file);


} else {


System.out.println ("Unable to launch file:" + file);


}


}


});


Final Treeeditor editor = new Treeeditor (tree);


Tree.addlistener (SWT. MouseDown, New Listener () {


public void Handleevent (event event) {


Point point = new Point (Event.x, EVENT.Y);


Final TreeItem item = Tree.getitem (point);


if (item = NULL)


Return


Final text = new text (tree, SWT.) NONE);


Text.settext (Item.gettext ());


Text.setbackground (Shell.getdisplay (). Getsystemcolor (SWT. Color_yellow));


Editor.horizontalalignment = SWT. Left;


Editor.grabhorizontal = true;


Editor.seteditor (text, item);


Listener textlistener = new Listener () {


public void Handleevent (final Event e) {


Switch (e.type) {


Case SWT. Focusout:


File renamed =


RenameFile (


(File) Item.getdata (),


Text.gettext ());


if (renamed!= null) {


Item.settext (Text.gettext ());


Item.setdata (renamed);


}


Text.dispose ();


Break


Case SWT. Traverse:


Switch (e.detail) {


Case SWT. Traverse_return:


renamed =


RenameFile (


(File) Item.getdata (),


Text.gettext ());


if (renamed!= null) {


Item.settext (Text.gettext ());


Item.setdata (renamed);


}


Case SWT. Traverse_escape:


Text.dispose ();


E.doit = false;


}


Break


}


}


};


Text.addlistener (SWT. Focusout, TextListener);


Text.addlistener (SWT. Traverse, TextListener);


Text.setfocus ();


}


});





Shell.setsize (400, 260);


Shell.open ();





while (!shell.isdisposed ()) {


if (!display.readanddispatch ()) {


Display.sleep ();


}


}


Display.dispose ();


}


Private file RenameFile (file file, String newName) {


File Dest = new file (File.getparentfile (), newName);


if (File.renameto (dest)) {


return dest;


} else {


return null;


}


}


private void Setrootdir (File root) {


if ((!root.isdirectory ()) | | (!root.exists ()))


throw new IllegalArgumentException ("Invalid root:" + root);


This.rootdir = root;


Shell.settext ("Now browsing:" + Root.getabsolutepath ());


if (Tree.getitemcount () > 0) {


treeitem[] items = Tree.getitems ();


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


Items[i].dispose ();


}


}


file[] files = root.listfiles ();


for (int i=0; files!= null && i < files.length; i++)


Addfiletotree (tree, files[i]);


}


private void Addfiletotree (Object parent, file file) {


TreeItem item = NULL;


if (parent instanceof Tree)


item = new TreeItem (tree) parent, SWT. NULL);


else if (parent instanceof TreeItem)


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


Else


throw New IllegalArgumentException (


"Parent should is a tree or a tree item:" + parent);


Item.settext (File.getname ());


Item.setimage (GetIcon (file));


Item.setdata (file);


if (File.isdirectory ()) {


Recursively adds the children of this file.


file[] files = file.listfiles ();


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


Buildtree (item, files[i]);


if (file.list ()!= null && file.list (). length > 0)


New TreeItem (item, SWT. NULL);


}


}


Private Imageregistry imageregistry;


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


Image iconfile = new Image (Shell.getdisplay (), "c:/icons/file.gif");


Private Image GetIcon (file file) {


if (File.isdirectory ())


return iconfolder;


int lastdotpos = File.getname (). IndexOf ('. ');


if (Lastdotpos = = 1)


return iconfile;


Image image = GetIcon (File.getname (). substring (Lastdotpos + 1));


return image = = null? Iconfile:image;


}


Private Image GetIcon (String extension) {


if (imageregistry = null)


Imageregistry = new Imageregistry ();


Image image = imageregistry.get (extension);


if (image!= null)


return image;


Program program = program.findprogram (extension);


ImageData ImageData = (program = = null null:program.getImageData ());


if (ImageData!= null) {


Image = New Image (Shell.getdisplay (), imagedata);


Imageregistry.put (extension, image);


} else {


image = IconFile;


}


return image;


}


public static void Main (string[] args) {


New Filebrowser ();


}


}





Implementation 2:


Filebrowserjface.java


Copy Code code as follows:



Package Swt_jface.demo7;


Import Java.io.File;


Import org.eclipse.jface.action.Action;


Import Org.eclipse.jface.action.ToolBarManager;


Import Org.eclipse.jface.resource.ImageRegistry;


Import org.eclipse.jface.viewers.IStructuredSelection;


Import Org.eclipse.jface.viewers.ITreeContentProvider;


Import Org.eclipse.jface.viewers.LabelProvider;


Import Org.eclipse.jface.viewers.TreeViewer;


Import Org.eclipse.jface.viewers.Viewer;


Import Org.eclipse.jface.viewers.ViewerFilter;


Import Org.eclipse.jface.viewers.ViewerSorter;


Import Org.eclipse.swt.SWT;


Import Org.eclipse.swt.graphics.Image;


Import Org.eclipse.swt.graphics.ImageData;


Import Org.eclipse.swt.layout.GridData;


Import Org.eclipse.swt.layout.GridLayout;


Import Org.eclipse.swt.program.Program;


Import Org.eclipse.swt.widgets.DirectoryDialog;


Import Org.eclipse.swt.widgets.Display;


Import Org.eclipse.swt.widgets.MessageBox;


Import Org.eclipse.swt.widgets.Shell;


Import Org.eclipse.swt.widgets.ToolBar;


public class Filebrowserjface {





Display display = new display ();


Shell shell = new shell (display);





File RootDir;


Treeviewer Treeviewer;


Public Filebrowserjface () {


Action Actionsetrootdir = new Action ("Set Root Dir") {


public void Run () {


Directorydialog dialog = new Directorydialog (shell);


String path = Dialog.open ();


if (path!= null) {


Treeviewer.setinput (new File (path));


}


}


};


Final Viewerfilter directoryfilter = new Viewerfilter () {


public Boolean Select (


Viewer Viewer,


Object parentelement,


Object Element) {


Return ((File) Element). Isdirectory ();


}


};


Action actionshowdirectoriesonly = new Action ("Show Directories only") {


public void Run () {


if (! ischecked ())


Treeviewer.removefilter (Directoryfilter);


Else


Treeviewer.addfilter (Directoryfilter);


}


};


Actionshowdirectoriesonly.setchecked (FALSE);


Action Actiondeletefile = new Action ("Delete the selected file") {


public void Run () {


Istructuredselection selection = (istructuredselection) treeviewer.getselection ();


File File = (file) selection.getfirstelement ();


if (file = = null) {


SYSTEM.OUT.PRINTLN ("Please select a file a");


Return


}


MessageBox MessageBox = new MessageBox (Shell, SWT. YES | swt.no);


Messagebox.setmessage ("Are you sure to delete file:" + file.getname () + "?");


if (messagebox.open () = SWT. YES) {


File parentfile = File.getparentfile ();


if (File.delete ()) {


System.out.println ("File has been deleted.");


Notifies the viewer for update.


Treeviewer.refresh (Parentfile, false);


}else{


System.out.println ("Unable to delete file.");


}


}


}


};


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


Toolbarmanager manager = new Toolbarmanager (ToolBar);


Manager.add (Actionsetrootdir);


Manager.add (actionshowdirectoriesonly);


Manager.add (Actiondeletefile);


Manager.update (TRUE);





Shell.setlayout (New GridLayout ());


Treeviewer = new Treeviewer (Shell, SWT. BORDER);


Treeviewer.gettree (). Setlayoutdata (New Griddata (Griddata.fill_both));


Treeviewer.setcontentprovider (New Itreecontentprovider () {


Public object[] GetChildren (Object parentelement) {


file[] files = ((File) parentelement). Listfiles ();


if (Files = null)


return new object[0];


return files;


}


public object GetParent (object element) {


Return ((File) Element). Getparentfile ();


}


public boolean HasChildren (Object element) {


File File = (file) element;


file[] files = file.listfiles ();


if (Files = null | | files.length = 0)


return false;


return true;


}


Public object[] GetElements (Object inputelement) {


file[] files = ((File) inputelement). Listfiles ();


if (Files = null)


return new object[0];


return files;


}


public void Dispose () {


}


public void inputchanged (


Viewer Viewer,


Object Oldinput,


Object newinput) {


Shell.settext ("Now browsing:" + newinput);


}


});





Treeviewer.setlabelprovider (New Labelprovider () {


Public Image GetImage (Object Element) {


Return GetIcon ((File) element);


}


Public String GetText (Object Element) {


Return ((File) Element). GetName ();


}


});


Treeviewer.setsorter (New Viewersorter () {


public int category (Object element) {


File File = (file) element;


if (File.isdirectory ())


return 0;


Else


return 1;


}


});








Treeviewer.setinput (New File ("C:/temp"));


Shell.setsize (400, 260);


Shell.open ();





while (!shell.isdisposed ()) {


if (!display.readanddispatch ()) {


Display.sleep ();


}


}


Display.dispose ();


}


Private file RenameFile (file file, String newName) {


File Dest = new file (File.getparentfile (), newName);


if (File.renameto (dest)) {


return dest;


} else {


return null;


// }


// }


Private Imageregistry imageregistry;


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


Image iconfile = new Image (Shell.getdisplay (), "c:/icons/file.gif");


Private Image GetIcon (file file) {


if (File.isdirectory ())


return iconfolder;


int lastdotpos = File.getname (). IndexOf ('. ');


if (Lastdotpos = = 1)


return iconfile;


Image image = GetIcon (File.getname (). substring (Lastdotpos + 1));


return image = = null? Iconfile:image;


}


Private Image GetIcon (String extension) {


if (imageregistry = null)


Imageregistry = new Imageregistry ();


Image image = imageregistry.get (extension);


if (image!= null)


return image;


Program program = program.findprogram (extension);


ImageData ImageData = (program = = null null:program.getImageData ());


if (ImageData!= null) {


Image = New Image (Shell.getdisplay (), imagedata);


Imageregistry.put (extension, image);


} else {


image = IconFile;


}


return image;


}





public static void Main (string[] args) {


New Filebrowserjface ();


}


}


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.