/* * Copyright (C) 2007 Clam <clamisgood@gmail.com> * * This file is part of LateralGM. * LateralGM is free software and comes with ABSOLUTELY NO WARRANTY. * See LICENSE for details. */ package org.lateralgm.components; import java.io.File; import java.util.ArrayList; import java.util.prefs.Preferences; import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; import org.lateralgm.components.impl.CustomFileFilter; import org.lateralgm.messages.Messages; public class CustomFileChooser extends JFileChooser { private static final long serialVersionUID = 1L; private Preferences prefs; private String propertyName; public CustomFileChooser(String node, String propertyName) { this.propertyName = propertyName; prefs = Preferences.userRoot().node(node); setCurrentDirectory(new File(prefs.get(propertyName,getCurrentDirectory().getAbsolutePath()))); } public void approveSelection() { super.approveSelection(); saveDir(); } public void cancelSelection() { super.cancelSelection(); saveDir(); } private void saveDir() { prefs.put(propertyName,getCurrentDirectory().getAbsolutePath()); } /** * Sets the given <code>FilterSet</code> to be the current set * of chooseable file filters. The first item in the list will be set as * the currently selected filter. * @param filters The list of filters to use */ public void setFilterSet(FilterSet fs) { if (fs == null) throw new IllegalArgumentException("null FilterSet"); resetChoosableFileFilters(); for (FileFilter filt : fs) addChoosableFileFilter(filt); if (fs.size() > 0) setFileFilter(fs.get(0)); } public static class FilterSet extends ArrayList<FileFilter> { private static final long serialVersionUID = 1L; public void addFilter(String descKey, String...exts) { add(new CustomFileFilter(Messages.getString(descKey),exts)); } } }