package org.eclipse.swt.widgets; /* * Copyright (c) 2000, 2002 IBM Corp. All rights reserved. * This file is made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html */ import org.eclipse.swt.*; /** * Instances of this class allow the user to navigate * the file system and select or enter a file name. *
*
Styles:
*
SAVE, OPEN, MULTI
*
Events:
*
(none)
*
*

* IMPORTANT: This class is intended to be subclassed only * within the SWT implementation. *

*/ public class FileDialog extends GtkFileDialog { String fullPath, fileName, filterPath; String[] filterNames, filterExtensions; /** * Constructs a new instance of this class given only its * parent. *

* Note: Currently, null can be passed in for the parent. * This has the effect of creating the dialog on the currently active * display if there is one. If there is no current display, the * dialog is created on a "default" display. Passing in null as * the parent is not considered to be good coding style, * and may not be supported in a future release of SWT. *

* * @param parent a shell which will be the parent of the new instance * * @exception IllegalArgumentException * @exception SWTException */ public FileDialog (Shell parent) { this (parent, SWT.PRIMARY_MODAL); } /** * Constructs a new instance of this class given its parent * and a style value describing its behavior and appearance. *

* The style value is either one of the style constants defined in * class SWT which is applicable to instances of this * class, or must be built by bitwise OR'ing together * (that is, using the int "|" operator) two or more * of those SWT style constants. The class description * for all SWT dialog classes should include a comment which * describes the style constants which are applicable to the class. *

* Note: Currently, null can be passed in for the parent. * This has the effect of creating the dialog on the currently active * display if there is one. If there is no current display, the * dialog is created on a "default" display. Passing in null as * the parent is not considered to be good coding style, * and may not be supported in a future release of SWT. *

* * @param parent a shell which will be the parent of the new instance * * @exception IllegalArgumentException * @exception SWTException */ public FileDialog (Shell parent, int style) { super (parent, style); checkSubclass (); } /** * Returns the path of the first file that was * selected in the dialog relative to the filter path, * or null if none is available. * * @return the relative path of the file */ public String getFileName () { return fileName; } /** * Returns the paths of all files that were selected * in the dialog relative to the filter path, or null * if none are available. * * @return the relative paths of the files */ public String [] getFileNames () { return new String[] {fileName}; } /** * Returns the file extensions which the dialog will * use to filter the files it shows. * * @return the file extensions filter */ public String [] getFilterExtensions () { return filterExtensions; } /** * Returns the file names which the dialog will * use to filter the files it shows. * * @return the file name filter */ public String [] getFilterNames () { return filterNames; } /** * Returns the path which the dialog will use to filter * the files it shows. * * @return the filter path */ public String getFilterPath () { return filterPath; } /** * Set the initial filename which the dialog will * select by default when opened to the argument, * which may be null. The name will be prefixed with * the filter path when one is supplied. * * @param string the file name */ public void setFileName (String string) { fileName = string; } /** * Set the file extensions which the dialog will * use to filter the files it shows to the argument, * which may be null. * * @param extensions the file extension filter */ public void setFilterExtensions (String [] extensions) { filterExtensions = extensions; } /** * Sets the file names which the dialog will * use to filter the files it shows to the argument, * which may be null. * * @param names the file name filter */ public void setFilterNames (String [] names) { filterNames = names; } /** * Sets the path which the dialog will use to filter * the files it shows to the argument, which may be * null. * * @param string the filter path */ public void setFilterPath (String string) { filterPath = string; } boolean getAnswer() { String fileNameFromOS = getFileNameFromOS(); int separatorIndex = calculateLastSeparatorIndex(fileNameFromOS); if (separatorIndex+1 == fileNameFromOS.length()) return false; // the user selected a directory fullPath = answer = fileNameFromOS; fileName = fullPath.substring (separatorIndex + 1, fullPath.length ()); filterPath = fullPath.substring (0, separatorIndex); return true; } }