/* * This file is part of VLCJ. * * VLCJ is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * VLCJ is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with VLCJ. If not, see <http://www.gnu.org/licenses/>. * * Copyright 2009-2016 Caprica Software Limited. */ package uk.co.caprica.vlcj.filter.swing; import javax.swing.filechooser.FileFilter; import uk.co.caprica.vlcj.filter.AudioFileFilter; import uk.co.caprica.vlcj.filter.MediaFileFilter; import uk.co.caprica.vlcj.filter.PlayListFileFilter; import uk.co.caprica.vlcj.filter.SubTitleFileFilter; import uk.co.caprica.vlcj.filter.VideoFileFilter; /** * A factory that creates new instances of a {@link javax.swing.filechooser.FileFilter FileFilter} * configured with the recognised vlc file-types. * <p> * Use this factory to help initialise a {@link javax.swing.JFileChooser}, for example: * * <pre> * fileChooser = new JFileChooser(); * fileChooser.setApproveButtonText("Play"); * fileChooser.addChoosableFileFilter(SwingFileFilterFactory.newVideoFileFilter()); * fileChooser.addChoosableFileFilter(SwingFileFilterFactory.newAudioFileFilter()); * fileChooser.addChoosableFileFilter(SwingFileFilterFactory.newPlayListFileFilter()); * fileChooser.addChoosableFileFilter(SwingFileFilterFactory.newMediaFileFilter()); * fileChooser.addChoosableFileFilter(SwingFileFilterFactory.newSubTitleFileFilter()); * </pre> * * @see javax.swing.filechooser.FileNameExtensionFilter * @see javax.swing.JFileChooser */ public final class SwingFileFilterFactory { /** * Description for the video file filter. */ private static final String VIDEO_FILTER_DESCRIPTION = "Video Files"; /** * Description for the audio file filter. */ private static final String AUDIO_FILTER_DESCRIPTION = "Audio Files"; /** * Description for the play-list file filter. */ private static final String PLAYLIST_FILTER_DESCRIPTION = "Playlist Files"; /** * Description for the media file filter. */ private static final String MEDIA_FILTER_DESCRIPTION = "Media Files"; /** * Description for the sub-title file filter. */ private static final String SUBTITLE_FILTER_DESCRIPTION = "Subtitle Files"; /** * Prevent direct instantiation by others. */ private SwingFileFilterFactory() { } /** * Create a new file name extension filter that accepts video files. * * @return filter */ public static FileFilter newVideoFileFilter() { return new SwingFileFilter(VIDEO_FILTER_DESCRIPTION, new VideoFileFilter()); } /** * Create a new file name extension filter that accepts audio files. * * @return filter */ public static FileFilter newAudioFileFilter() { return new SwingFileFilter(AUDIO_FILTER_DESCRIPTION, new AudioFileFilter()); } /** * Create a new file name extension filter that accepts play-list files. * * @return filter */ public static FileFilter newPlayListFileFilter() { return new SwingFileFilter(PLAYLIST_FILTER_DESCRIPTION, new PlayListFileFilter()); } /** * Create a new file name extension filter that accepts all recognised media files. * <p> * A media file is one of: * <ul> * <li>Video</li> * <li>Audio</li> * <li>Play-list</li> * </ul> * * @return filter */ public static FileFilter newMediaFileFilter() { return new SwingFileFilter(MEDIA_FILTER_DESCRIPTION, new MediaFileFilter()); } /** * Create a new file name extension filter that accepts sub-title files. * * @return filter */ public static FileFilter newSubtitleFileFilter() { return new SwingFileFilter(SUBTITLE_FILTER_DESCRIPTION, new SubTitleFileFilter()); } }