/* * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package net.java.sip.communicator.util.swing; import java.awt.*; import java.io.*; import javax.swing.*; /** * Implements SipCommFileChooser for Swing's JFileChooser. * * @author Valentin Martinet */ public class SipCommFileChooserImpl extends JFileChooser implements SipCommFileChooser { /** * Parent component of this dialog (JFrame, Frame, etc) */ private Component parent; /** * Constructor * * @param title title for this dialog * @param operation 'Save file' or 'Load file' operation */ public SipCommFileChooserImpl(String title, int operation) { super(); this.setDialogTitle(title); this.setDialogType(operation); } /** * Initializes a new SipCommFileChooserImpl instance. * * @param parent * @param path * @param title * @param operation */ public SipCommFileChooserImpl( Component parent, String path, String title, int operation) { this(title, operation); this.parent = parent; this.setStartPath(path); } /** * Returns the selected file by the user from the dialog. * * @return File the selected file from the dialog */ public File getApprovedFile() { return this.getSelectedFile(); } /** * Sets the default path to be considered for browsing among files. * * @param path the default start path for this dialog */ public void setStartPath(String path) { // Passing null makes JFileChooser points to user's default dir. File file = (path == null) ? null : new File(path); setCurrentDirectory(file); /* * If the path doesn't exist, the intention of the caller may have been * to also set a default file name. */ if ((file != null) && !file.isDirectory()) setSelectedFile(file); } /** * Shows the dialog and returns the selected file. * * @return File the selected file in this dialog */ public File getFileFromDialog() { int choice = -1; if(this.getDialogType() == JFileChooser.OPEN_DIALOG) choice = this.showOpenDialog(this.getParentComponent()); else choice = this.showSaveDialog(this.getParentComponent()); return (choice == JFileChooser.APPROVE_OPTION) ? getSelectedFile() : null; } /** * Returns the parent component of this dialog * * @return Component dialog's parent component */ public Component getParentComponent() { return this.parent; } /** * Adds a file filter to this dialog. * * @param filter the filter to add */ public void addFilter(SipCommFileFilter filter) { this.addChoosableFileFilter(filter); } /** * Returns the filter the user has chosen for saving a file. * * @return SipCommFileFilter the used filter when saving a file */ public SipCommFileFilter getUsedFilter() { return (SipCommFileFilter)this.getFileFilter(); } }