/******************************************************************************
* All Right Reserved.
* Copyright (c) 1998, 2004 Jackwind Li Guojie
*
* Created on Mar 16, 2004 10:18:50 PM by JACK
* $Id$
*
*****************************************************************************/
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.DirectoryDialog;
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;
public class DirFileSelection {
Display display = new Display();
Shell shell = new Shell(display);
// the label used to display selected dir/file.
Label label;
Button buttonSelectDir;
Button buttonSelectFile;
String selectedDir;
String fileFilterPath = "F:/jdk1.5";
public DirFileSelection() {
label = new Label(shell, SWT.BORDER | SWT.WRAP);
label.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
label.setText("Select a dir/file by clicking the buttons below.");
buttonSelectDir = new Button(shell, SWT.PUSH);
buttonSelectDir.setText("Select a directory");
buttonSelectDir.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
DirectoryDialog directoryDialog = new DirectoryDialog(shell);
directoryDialog.setFilterPath(selectedDir);
directoryDialog.setMessage("Please select a directory and click OK");
String dir = directoryDialog.open();
if(dir != null) {
label.setText("Selected dir: " + dir);
selectedDir = dir;
}
}
});
buttonSelectFile = new Button(shell, SWT.PUSH);
buttonSelectFile.setText("Select a file/multiple files");
buttonSelectFile.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
FileDialog fileDialog = new FileDialog(shell, SWT.MULTI);
fileDialog.setFilterPath(fileFilterPath);
fileDialog.setFilterExtensions(new String[]{"*.rtf", "*.html", "*.*"});
fileDialog.setFilterNames(new String[]{ "Rich Text Format", "HTML Document", "Any"});
String firstFile = fileDialog.open();
if(firstFile != null) {
fileFilterPath = fileDialog.getFilterPath();
String[] selectedFiles = fileDialog.getFileNames();
StringBuffer sb = new StringBuffer("Selected files under dir " + fileDialog.getFilterPath() + ": \n");
for(int i=0; i<selectedFiles.length; i++) {
sb.append(selectedFiles[i] + "\n");
}
label.setText(sb.toString());
}
}
});
label.setBounds(0, 0, 400, 60);
buttonSelectDir.setBounds(0, 65, 200, 30);
buttonSelectFile.setBounds(200, 65, 200, 30);
shell.pack();
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();
}
public static void main(String[] args) {
new DirFileSelection();
}
}
|