Mega Code Archive

 
Categories / Java / SWT Jface Eclipse
 

File Browser Demo

/******************************************************************************  * All Right Reserved.   * Copyright (c) 1998, 2004 Jackwind Li Guojie  *   * Created on Mar 3, 2004 2:09:15 PM by JACK  * $Id$  *   *****************************************************************************/ 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 FileBrowserDemo {   Display display = new Display();   Shell shell = new Shell(display);   Table table;      File rootDir;      Image iconFolder = new Image(shell.getDisplay(), "rntsoft.gif");   Image iconFile = new Image(shell.getDisplay(), "rntsoft.gif");      public FileBrowserDemo() {     GridLayout gridLayout = new GridLayout();     shell.setLayout(gridLayout);          // Tool bar.           // Table.      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(), "rntsoft.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("."));     //textUser.forceFocus();     // Set up the event loop.     while (!shell.isDisposed()) {       if (!display.readAndDispatch()) {         // If no more entries in event queue         display.sleep();       }     }     display.dispose();   }      private void setRootDirectory(File dir) {     this.rootDir = dir;     if(! (dir.exists() && dir.isDirectory()))       throw new IllegalArgumentException("Invalid directory. ");          // Remove all existing items.      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;      /**    * Returns the icon for the file type with the specified extension.     * @param extension    * @return    */   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 FileBrowserDemo();   } }