Mercurial > projects > dbus-d
view dbus-d-javatests/jsrc/testapp/FileBrowserSample.java @ 0:a5576806d36d
recreate repository without any libs for lightweight repository
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 20 Oct 2007 18:07:18 +0200 |
parents | |
children | 65fb7ef02c50 |
line wrap: on
line source
/******************************************************************************* * All Right Reserved. Copyright (c) 1998, 2004 Jackwind Li Guojie * * Created on Mar 9, 2004 7:07:16 PM by JACK $Id$ * ******************************************************************************/ package testapp; 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 FileBrowserSample { Display display = new Display(); Shell shell = new Shell(display); Tree tree; File rootDir; public FileBrowserSample() { 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:/")); 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 // Child files already added to the tree. 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) { } // Gets called when a tree item is double-clicked. 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); } } }); shell.setSize(400, 260); shell.open(); //textUser.forceFocus(); // Set up the event loop. while (!shell.isDisposed()) { if (!display.readAndDispatch()) { // If no more entries in event queue display.sleep(); } } display.dispose(); } /** * Sets the root directory to browse from. * * @param root */ private void setRootDir(File root) { // validates the root first. if( (!root.isDirectory()) || (!root.exists())) throw new IllegalArgumentException("Invalid root: " + root); this.rootDir = root; shell.setText("Now browsing: " + root.getAbsolutePath()); // Remove all the items in the tree. if (tree.getItemCount() > 0) { TreeItem[] items = tree.getItems(); for (int i = 0; i < items.length; i++) { items[i].dispose(); // Dispose itself and all of its descendants. } } // Adds files under the root to the tree. File[] files = root.listFiles(); for(int i=0; files != null && i < files.length; i++) addFileToTree(tree, files[i]); } /** * Adds the given file to the tree. * * @param parent * @param file */ 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 be a tree or a tree item: " + parent); item.setText(file.getName()); item.setImage(getIcon(file)); item.setData(file); if (file.isDirectory()) { // // recursively adds all 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(), "icons/java2s.gif"); Image iconFile = new Image(shell.getDisplay(), "icons/java2s.gif"); /** * Returns an icon representing the specified file. * * @param file * @return */ 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; } /** * Returns the icon for the file type with the specified extension. * * @param extension * @return */ 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 FileBrowserSample(); } }