Java tutorial
//Send questions, comments, bug reports, etc. to the authors: //Rob Warner (rwarner@interspatial.com) //Robert Harris (rbrt_harris@yahoo.com) import java.io.File; import org.eclipse.swt.*; import org.eclipse.swt.events.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; /** * This class demonstrates FileDialog */ public class ShowFileDialog { // These filter names are displayed to the user in the file dialog. Note that // the inclusion of the actual extension in parentheses is optional, and // doesn't have any effect on which files are displayed. private static final String[] FILTER_NAMES = { "OpenOffice.org Spreadsheet Files (*.sxc)", "Microsoft Excel Spreadsheet Files (*.xls)", "Comma Separated Values Files (*.csv)", "All Files (*.*)" }; // These filter extensions are used to filter which files are displayed. private static final String[] FILTER_EXTS = { "*.sxc", "*.xls", "*.csv", "*.*" }; /** * Runs the application */ public void run() { Display display = new Display(); Shell shell = new Shell(display); shell.setText("File Dialog"); createContents(shell); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } /** * Creates the contents for the window * * @param shell the parent shell */ public void createContents(final Shell shell) { shell.setLayout(new GridLayout(5, true)); new Label(shell, SWT.NONE).setText("File Name:"); final Text fileName = new Text(shell, SWT.BORDER); GridData data = new GridData(GridData.FILL_HORIZONTAL); data.horizontalSpan = 4; fileName.setLayoutData(data); Button multi = new Button(shell, SWT.PUSH); multi.setText("Open Multiple..."); multi.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { // User has selected to open multiple files FileDialog dlg = new FileDialog(shell, SWT.MULTI); dlg.setFilterNames(FILTER_NAMES); dlg.setFilterExtensions(FILTER_EXTS); String fn = dlg.open(); if (fn != null) { // Append all the selected files. Since getFileNames() returns only // the names, and not the path, prepend the path, normalizing // if necessary StringBuffer buf = new StringBuffer(); String[] files = dlg.getFileNames(); for (int i = 0, n = files.length; i < n; i++) { buf.append(dlg.getFilterPath()); if (buf.charAt(buf.length() - 1) != File.separatorChar) { buf.append(File.separatorChar); } buf.append(files[i]); buf.append(" "); } fileName.setText(buf.toString()); } } }); Button open = new Button(shell, SWT.PUSH); open.setText("Open..."); open.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { // User has selected to open a single file FileDialog dlg = new FileDialog(shell, SWT.OPEN); dlg.setFilterNames(FILTER_NAMES); dlg.setFilterExtensions(FILTER_EXTS); String fn = dlg.open(); if (fn != null) { fileName.setText(fn); } } }); Button save = new Button(shell, SWT.PUSH); save.setText("Save..."); save.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { // User has selected to save a file FileDialog dlg = new FileDialog(shell, SWT.SAVE); dlg.setFilterNames(FILTER_NAMES); dlg.setFilterExtensions(FILTER_EXTS); String fn = dlg.open(); if (fn != null) { fileName.setText(fn); } } }); } /** * The application entry point * * @param args the command line arguments */ public static void main(String[] args) { new ShowFileDialog().run(); } }